自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 InternLM实战营第三期入门岛作业

4.打开电脑的powershell,复制登陆命令,输入登陆密码,出现下面这个界面即为成功。5.使用vscode的ssh插件进行远程连接。3.点击ssh连接查看开发机的ssh密码。6.创建helloworld.py。# 统计每个单词出现的次数。2.依次填写相关信息,创建开发机。:进行复杂的文件操作,可以使用。# 创建 Gradio 界面。查看目录下文件的详细信息。直接显示文件全部内容,(只能删除空目录)或。,进入创建开发机页面。(可删除非空目录)。

2024-07-19 18:30:38 1069

原创 【InternLM实战营第二期07笔记】【OpenCompass大模型评测实战】

上海人工智能实验室科学家团队正式发布了大模型开源开放评测体系 “司南” (OpenCompass2.0),用于为大语言模型、多模态模型等提供一站式评测服务。其主要特点如下:开源可复现:提供公平、公开、可复现的大模型评测方案全面的能力维度:五大维度设计,提供 70+ 个数据集约 40 万题的的模型评测方案,全面评估模型能力丰富的模型支持:已支持 20+ HuggingFace 及 API 模型分布式高效评测:一行命令实现任务分割和分布式评测,数小时即可完成千亿模型全量评测。

2024-05-01 15:37:59 1042

原创 【InternLM实战营第二期06笔记】【Lagent & AgentLego 智能体应用搭建】

通过 AgentLego 算法库,不仅可以直接使用多种工具,也可以利用这些工具,在相关智能体框架(如 Lagent,Transformers Agent 等)的帮助下,快速构建可以增强大语言模型能力的智能体。为了方便使用 Lagent 的 Web Demo 以及 AgentLego 的 WebUI,我们选择直接从源码进行安装。经过上面的介绍,我们可以发现,Lagent 是一个智能体框架,而 AgentLego 与大模型智能体并不直接相关,而是作为工具包,在相关智能体的功能支持模块发挥作用。

2024-05-01 15:36:49 1041

原创 【InternLM实战营第二期05笔记】【LMDeploy量化部署】

打开InternStudio平台,创建开发机。填写开发机名称;选择镜像;选择10% A100*1GPU;点击“立即创建”。注意请不要选择的镜像,新版本的lmdeploy会出现兼容性问题。排队等待一小段时间,点击“进入开发机”。点击左上角图标,切换为终端(Terminal)模式。

2024-05-01 15:35:35 428

原创 【InternLM实战营第二期04笔记】【XTuner微调LLM:1.8B多模态Agent】

快速上手:我们可以通过下面这张图来简单了解一下 XTuner 的运行原理。环境安装:假如我们想要用 XTuner 这款简单易上手的微调工具包来对模型进行微调的话,那我们最最最先开始的第一步必然就是安装XTuner!安装基础的工具是一切的前提,只有安装了 XTuner 在我们本地后我们才能够去思考说具体怎么操作。前期准备:那在完成了安装后,我们下一步就需要去明确我们自己的微调目标了。我们想要利用微调做一些什么事情呢,那我为了做到这个事情我有哪些硬件的资源和数据呢?

2024-05-01 15:34:27 1113

原创 【InternLM实战营第二期03笔记】【茴香豆:搭建你的 RAG 智能助理】

RAG(Retrieval Augmented Generation)技术,通过检索与用户输入相关的信息片段,并结合外部知识库来生成更准确、更丰富的回答。解决 LLMs 在处理知识密集型任务时可能遇到的挑战, 如幻觉、知识过时和缺乏透明、可追溯的推理过程等。提供更准确的回答、降低推理成本、实现外部记忆。RAG 能够让基础模型实现非参数知识更新,无需训练就可以掌握新领域的知识。本次课程选用的茴香豆应用,就应用了 RAG 技术,可以快速、高效的搭建自己的知识领域助手。

2024-04-30 13:47:57 671

原创 【InternLM实战营第二期02笔记】轻松玩转书生浦语大模型趣味Demo

Lagent 是一个轻量级、开源的基于大语言模型的智能体(agent)框架,支持用户快速地将一个大语言模型转变为多种类型的智能体,并提供了一些典型工具为大语言模型赋能。可以理解自由形式的图文指令输入,包括大纲、文章细节要求、参考图片等,为用户打造图文并貌的专属文章。后,(会有较长的加载时间)勾上数据分析,其他的选项不要选择,进行计算方面的 Demo 对话,即完成本章节实战。Agent:与 Model 的输入接口保持一致,模型到智能体的蜕变只需一步,便捷各种 agent 的探索实现;

2024-04-30 13:20:53 664

原创 【InternLM实战营第二期01笔记】了解书生·浦语大模型全链路开源体系+InternLM2技术报告阅读

通过模型开发的一系列创新细节处理,使得Internlm2模型在多个领域都展现出了良好的性能。同时开发了一整条开发项目的进展框架,能够针对每一个步骤进行专门的处理,能够使大家很好的学习相关的开发流程和知识,推流llm领域的发展。

2024-04-28 17:25:45 884 1

原创 利用JS实现循环队列--击鼓传花游戏

由于队列经常被应用在计算机领域和我们的现实生活中,就出现了一些队列的修改版,其中一种叫做循环队列。循环队列的一个例子就是击鼓传花游戏。在这个游戏中,孩子们围成一个圆圈,把花尽快的传递给旁边的人。某一个时刻传花停止,这个时候花在谁手里,谁就退出圆圈,结束游戏。不断重复这个过程,直到只剩下一个孩子(胜利者)。我们利用队列来实现一下这个游戏思路:创建出一个队列对象【1】我们会得到一个名单,将里面的名字全部放到队列中去【2】给定一个数组,然后迭代队列,从队列开头移除一项,然后再添加到末尾中去【3】

2022-04-10 23:37:43 3457

原创 利用JS实现队列

普通队列队列遵循先进先出的原则,队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。我们可以通过数组实现队列,但是为了使其获取元素的时候更加高效,我们将使用一个对象来实现队列。我们需要实现一些队列有关的方法enqueue(element(s)): 向队列尾部添加一个(或多个)新的项dequeue(): 移除队列中的第一项,并返回被移除的元素peek():查看队列中的第一个元素isEmpty(); 如果队列中不包含任何元素,返回true,否则返回falsesize():

2022-04-10 23:15:51 1914

原创 利用JS实现栈

栈是一种遵从先进后出原则的有序集合。新添加或者待删除的元素都保存在栈顶,另一端就叫做栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底我们先来利用JS实现一个基于数组的栈由于数组允许我们在任何位置添加和删除元素,但是栈由于有先进后出的原则,所以我们需要对元素的插入和删除功能进行一些限制。接下来我们需要为栈声明一些方法push(element(s)):添加一个(或多个)新元素到栈顶pop():移除栈顶的元素,并且返回被移除的元素peek():返回栈顶的元素,不对栈做任何修改isEmpty():

2022-04-10 19:56:36 2190

原创 数组与对象的相互转换

数组转对象要求 let arr = [{ label: ‘男’, value: 0 }, { label: ‘女’, value: 1 }] 转换为 let obj ={0:‘男’,1:‘女’} const arr = [{ label: '男', value: 0 }, { label: '女', value: 1 }] function arrToObj(arr){ const obj = {} arr.forEach((item)=>{ obj[item.va

2022-04-09 16:21:44 472

原创 扁平数据与树结构的相互转换

扁平数据转树结构的方法思路:1.对源数据先进行深拷贝,以免后续操作影响原数据2.循环所有项,当遇到有数据的id等于其他数据的pid的时候,给当条数据添加children属性,并赋值3.拿到最顶层pid=0的数据 var data = [{ id: 1, pid: 0, name: '沃尔玛' }, { id: 2, pid: 0, name: '生鲜区' }, { id: 3, pid: 1, name: '日用品区' }, { id: 4, p

2022-04-09 15:13:18 1545

原创 JS中的防抖和节流

认识防抖debounce函数我们用一幅图来理解一下他的过程当事件触发的时候,相应的函数并不会立即触发,而是会等待一定的时间当事件密集触发的时候,函数的触发会被频繁的推迟只有等待了一段时间有没有事件触发,才会真正的执行响应函数防抖的应用场景很多输入框中频繁的输入内容,搜索或者提交信息频繁的点击按钮触发某个事件监听浏览器的滚动事件,完成某些特定的操作用户缩放浏览器的resize事件防抖函数的案例我们都遇到过这样的场景,在某个搜索框中输入自己想要搜索的内容:比如想要搜索一个Mac

2022-04-05 23:50:12 594

原创 Proxy和Reflect

Proxy-Reflect vue2-vue3的响应式原理首先我们先来看一个需求,有一个对象,我们希望监听这个对象中的属性被设置或获取的过程我们可以通过属性描述符中的存储属性描述符来做到Object.defineProperty(obj,key,{ set:function(newValue){ console.log(`监听到给${key}设置值`) value=newValue }, get:function(){ console.log(`监听到获取${key}的值`) r

2022-04-05 15:35:42 460

原创 认识js中的class

认识class定义类我们如果通过构造函数的形式来创建类,不仅仅和编写普通的函数过于相似,而且代码并不容易理解在es6中使用了class关键字来定义类但是类本质上依然是构造函数、原型链的语法糖而已接下来让我们来使用class定义一个类有两种方式,类声明和类表达式class Person {}var Student = class {}类和构造函数的异同// 类的声明class Person {}var p = new Person()console.log(Person.pr

2022-03-20 17:26:49 613

原创 深入JS中的面向对象(二)

认识JS中的原型JS中的每一个对象都有一个特殊的内置属性[[prototype]],这个特殊的对象可以指向另外一个对象。这个对象有什么用呢?当我们通过引用对象的属性key来获取一个value的时候,它会出发[[Get]]操作这个操作会先检查该对象中是否有对应的属性,如果有的话就使用它如果该对象中没有对应的属性,那么会访问对象中的[[prototype]]内置属性指向的对象上的属性那么我们该如何获取这个内置属性呢?获取的方式有两种方式一:通过对象的__ proto __属性可以获取到(但是

2022-03-15 23:41:19 353

原创 深入JS中的面向对象

JS是支持多种编程范式的,包括函数式编程和面向对象编程JS中的对象被设计为一组属性的无序集合,像是一个哈希表,由key和value组成key是一个标识符的名称,value可以是任意类型,也可以是其他对象或者函数类型如果value是一个函数,那么我们可以称为对象的方法一般情况下创建对象的两种方式1.通过new关键字来创建var obj = new Object()obj.name = "why"obj.age = 18obj.height = 1.88obj.running = fun

2022-03-14 22:48:22 71

原创 JS中的with-eval-strict

JS中的with语句with语句用来扩展一个语句的作用域链var obj = { name:"hello world" age:18}with(obj){ console.log(name) console.log(age)}//这样的话name就会先去obj查找,然后在跟原本一样一层一层往上找JS中的eval函数eval是一个特殊的函数,它可以将传入的字符串当JS代码来运行var evalString = `var message = "hello world";conso

2022-03-13 22:07:42 894

原创 函数的柯里化

在函数式编程中柯里化是一个十分重要的概念那么 什么是柯里化呢?定义:只传递给函数一部分参数来调用它,让它返回一个函数去处理剩余的参数。这个过程就叫做柯里化。实例:// 未柯里化的函数function add1(x,y,z){ return x+y+z}console.log(add1(10,20,30))// 柯里化处理的函数function add2(x){ return function(y){ return function(z){ return x+y+z }

2022-03-13 17:50:34 575

原创 JS中的纯函数

函数式编程中有一个非常重要的概念叫做纯函数,JS符合函数式编程的范式,所以也有纯函数的概念比如react中的redux中的reducer,就被要求是一个纯函数那么 什么是纯函数呢?纯函数的定义:确定的输入,会产生确定的输出不会产生副作用那么 什么又是副作用呢?在这里副作用的意思就是在执行一个函数的时候,除了返回函数值以外,还对调用函数产生了附加的影响,比如修改了全局变量,修改了参数或者改变外部的存储。纯函数在执行的过程中不能产生这样的副作用,有副作用的话往往容易产生不易发觉的BUG纯函

2022-03-13 16:53:39 2403

原创 手写call,apply,bind

1.call函数的实现// 首先我们需要给所有的函数添加一个自定义的call方法Function.prototype.newCall(thisArg,...args){ // 1.现在我们需要知道是哪一个函数调用了newCall var fn = this; // 2.对传入的thisArg做限制,只能是对象 thisArg = thisArg != null && thisArg != undefined ? Object(thisArg):window // 3.将参数的t

2022-03-12 23:29:10 315

原创 JS中的this指向

在常见的编程语言中,几乎都有this这个关键字,但是JavaScript中的this和常见的面向对象语言中的this不太一样:常见面向对象的编程语言中,比如Java、C++、Swift、Dart等等一系列语言中,this通常只会出现在类的方法中。也就是你需要有一个类,类中的方法(特别是实例方法)中,this代表的是当前调用对象。但是JavaScript中的this更加灵活,无论是它出现的位置还是它代表的含义。在全局作用域下this指向window,但是在真正的开发中我们很少在全局作用域下去使用thi

2022-03-12 17:11:17 215

原创 JS中的闭包

要想了解闭包,我们就必须首先了解JS中的函数因为在JS中函数是一等公民一等公民的意思就是函数的使用是十分灵活的函数可以作为另外一个函数的参数,也可以作为另外一个函数的返回值来使用。JS中的闭包的定义:JS中的一个函数,如果访问了外层作用域的变量,那么他就是一个闭包闭包产生的三个必要条件函数的嵌套内部函数体内存在访问外部函数体定义的局部变量外部函数被调用例如function outer() { //外部函数定义的局部变量 let foo = 10; let bar = 100

2022-03-12 15:49:50 318

原创 JS的内存管理

无论是什么编程语言,在代码执行的过程中都是需要给他们分配的内存的,不同的是某些编程语言需要自己来管理内存,某些编程语言是可以自动管理内存的。JS就是属于可以自动管理内存的编程语言。内存管理的生命周期:一:分配内存(申请)二:使用内存(存放一些东西,比如对象)三:用完后不需要用了,释放内存JS会在定义变量的时候为我们分配内存如果定义的变量是基本数据类型(string,number,null,undefined,boolean,symbol)那么会直接在栈空间进行内存的分配如果定义的变量是复杂

2022-03-12 14:53:51 996

原创 关于作用域提升的一些题目

1.第一题var n = 100function foo() { n = 200}foo()console.log(n)答案:200执行过程:在编译阶段先创建了一个Go对象{n:undefined,foo:0xa00}然后对n进行赋值等于100,创建一个foo函数对象在调用foo这个函数之后,foo会对n进行赋值为200,在进行这个赋值的行为之前,会现在自己的作用域里面寻找有没有n,如果没有的话,就去父级作用域里面找,在这边的父级作用域中可以找到n。所以n的情况是先变为100在

2022-03-07 22:11:42 377

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除