大模型笔记 【1】 大模型初探

以下是Andrej Karpathy一小时讲解chatgpt的笔记。

Andrej Karpathy做自动驾驶的人应该比较熟悉,他是李飞飞的学生。在openAI做了一年半的科学家之后,去了特斯拉。在Tesla AI day讲解tesla自动驾驶方案的就是他。

这里我的主要收获是两个

  1. 大模型是一个有损压缩文件
  2. 大模型可以看成新型操作系统

下面我把比较有关键的PPT笔记总结一下,比较有趣的将其看成操作系统的我会在第二部分介绍。

一 有损压缩

  1. 大模型运行起来只需要两个文件,140GB的参数文件和500行的C代码,参见llama.cpp.

  1. 大模型可以理解为对互联网上文本所有内容的有损压缩。

  1. 大模型存储了海量的信息,但是并不一定支持从不同的角度问相同的问题。这张幻灯片里,提问汤姆克鲁斯的妈妈是谁,大模型回答了Mary Lee Pfeifeer。但是我们再问大模型,Mary Lee Pfeifeer的儿子是谁,大模型就不知道了。

  1. 大模型分为pre-training和fine tuning两个阶段。
    1. Pre-training 预训练主要是获取知识
    2. Fine-tuning 主要是alignment,拉通对齐。
  2. 两者的计算量和工作流程相差很多
    1. Pre-training 训练时间以年为单位
    2. Finetuning调优时间以星期为单位,此外fine-tuning也会有大量人工的工作。

  1. Pre-training训练的结果,如果你问pre-training 之后模型一个问题,因为这个模型只是对互联问文本的压缩,你问它一个问题,它可能继续问你其他的问题,因为互联网上有海量的垃圾文本。

Finetuning阶段会让人类针对问题的标准答案,输入给模型,进行fine-tuning,此外也会训练reward-model,建立评判模型,对模型输出结果打分,结合强化学习训练模型。

  1. 大模型的效果是可以预测的,由参数数量和文本数量决定。

  1. 人脑的思维方式有两种,快速响应和需要思考的两种问题。但是目前LLM只会第一种。也就是现在的LLM只能像刚才所说的,拿到有损压缩文件后,计算下一个token的概率,并没有理解。

(译者注:就像那个经典笑话:

A: 我会速算。

B:1234*4321等于多少?

A:788156。

B:  这对吗?

A:你就说快不快吧。

  1. 现在研究人员也在尝试如何让大模型“think”。

  1. 完全让模型自我提升是比较困难的,不同于围棋比赛alpha go,有明确的输赢机制。大模型输出的结果进行打分,是比较困难的。毕竟是生成文本类的开放答案。

二.新型操作系统

LLM 可以看成是一种新型的操作系统,它会文件,浏览网页,也可以说话和生成视频,也可以自我提升。

在你向大模型提问,要求它计算或者画图时,他可以调用对应的python或者计算接口。

此外,类似于RAM的概念,大模型有上下文context window的概念。此外类似的概念,还有多线程,多进程和推测执行(但是这里他没有展开讲,我搜索了一下,要是不对,欢迎私信)。

  1. 多线程:正常情况下每次只能产生一个token,如果多个decoder同时工作,那么可以产生多个token。
  2. 多进程:一个问题,多个model同时响应,对各个model的结果进行择优。
  3. 推测执行:transformer处理下一个token,需要等待上一个token一直计算完毕最后一个layer,强依赖。在上一个token还在计算过程中,就推测它的结果,推测计算下一个token。

三 transformer

在这个讲解大模型的视频以外,他也有一个一小时讲解transformer的视频。

介绍一下transformer视频的收获

  1. Transformer根据之前的单词token,产生新的token,最简单的就是将前面所有的token取均值,但是显然过于简单。因此transformer通过对之前的单词赋以不同的权重,各自的weight*各自的value得到下一个单词的预测

  1. Weight是通过当前单词的query和当前单词之前的所有token的各个key的相似度求dot product之后进行softmax得到的。

  1. Self-attention层的意义主要在于将当前token和其他token进行交流communication,在feedforward层的意义则进行计算computation。在self-attention层的操作更多的是线性的,在feedforward层引入了非线性。
  2. 如果只是线性的矩阵乘法计算,那么当前token对其他token的位置是无感的,因此增加positional encoding,用来将各个token的位置信息也进行编码。

译者另注:

此外我们可以看到每次新的token计算时,新的token的query都需要和之前的token的key做dot product,然后结果取softmax之后和之前的token的value进行权重相乘。

之前token的key和value都是不变的,因此我们可以将其缓存起来,也就是KV Cache的作用。

加上这个cache之后,更像操作系统了。

引自:

[1][2] Andrej Karpathy 视频讲解

[3] Transformers KV Caching Explained https://medium.com/@joaolages/kv-caching-explained-276520203249

[4] Decoding the Magic of Self-Attention: A Deep Dive into its Intuition and Mechanisms https://medium.com/@farzad.karami/decoding-the-magic-of-self-attention-a-deep-dive-into-its-intuition-and-mechanisms-394aa98f34c5

[5] Self-Attention: A step-by-step guide to calculating the context vector https://medium.com/@lovelyndavid/self-attention-a-step-by-step-guide-to-calculating-the-context-vector-3d4622600aac

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/593323.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

王道考研计算机组成原理——数据的表示和运算

数制转换 任意进制》十进制:位权*位数即可 整数部分补0是补在头部,小数部分补0是补在尾部 一般都是先把十进制》二进制;然后二进制再转换成8/16进制这样子 一种更快的方法->拼凑法:小数部分整数部分都可以这样求 一般都是先…

挑战Python100题(9)

100+ Python challenging programming exercises 9 Question 81 Please write a program to randomly print a integer number between 7 and 15 inclusive. Hints: Use random.randrange() to a random integer in a given range. 请编写一个程序,随机打印一个介于7和15之间…

Single-Image Crowd Counting via Multi-Column Convolutional Neural Network

Single-Image Crowd Counting via Multi-Column Convolutional Neural Network 论文背景人群密度方法过去的发展历史早期方法基于轨迹聚类的方法基于特征回归的方法基于图像的方法 Multi-column CNN用于人群计数基于密度图的人群计数通过几何自适应核生成密度图密度图估计的多列…

Rhel8安装Postgres

前提 实际上安装数据库的过程大同小异,只要linux的代差和数据库代差不是大的离谱的话都是同样的操作流程 本次工作环境是RHEL8.8,类推RHEL7,8,9没有问题 使用postgre是13版本,话说中文社区只更新到12版本 安装步骤…

ChatGPT在金融财务领域的10种应用方法

1.生成报告 在金融领域中,最耗时的任务之一是报告生成。通过ChatGPT,您可以在一定程度上自动化这个过程。这款人工智能工具可以获取关于公司财务表现的结构化数据,并生成一份书面摘要,详细说明关键点、趋势和观察结果。这个功能在…

【论文+在线运行】AnyText:能准确写汉字的AI绘图工具

源码:https://github.com/tyxsspa/AnyText 阿里在线运行: https://modelscope.cn/studios/damo/studio_anytext/summary 论文:2311.AnyText: Multilingual Visual Text Generation And Editing 一、AnyTexT是什么? 是一个基于扩散模型的&am…

ATE自动测试设备是什么?如何帮助测试电源反复短路?

什么是电源反复短路测试? 反复短路测试是电源极限测试项目之一,是在各种输入和输出状态下将电源输出短路,反复多次短路测试,检测电源是否可以实现保护或回缩,测试结束后之后,电源是否可以自动恢复正常运行。反复短路测…

python初试终章

之前在单机上实现了一个Django服务器,现在我们可以把这个服务器推上一个云平台。这里我选择使用阿里云。 阿里云准备 在阿里云官网(aliyun.com)页面注册阿里云账号。登录后选择云服务器ECS,并选择“创建实例”: 选择操作系统Ubuntu 14.04 …

Java原生启动Tomcat

文章目录 引入依赖启动Tomcat代码示例将嵌入式 Tomcat 服务器用于已有的 WAR 文件为现有的 Java Web 应用程序嵌入 Tomcat 服务器 相关APITomcat APIContonxt API 启动错误springboot底层Tomcat的实现学习博客 引入依赖 maven: <dependency><groupId>org.apache.…

python 深度学习 记录遇到的报错问题10

本篇继python 深度学习 解决遇到的报错问题9_module d2l.torch has no attribute train_ch3-CSDN博客 一、CUDA error: no kernel image is available for execution on the device CUDA kernel errors might be asynchronously reported at some other API call,so the stackt…

数据结构【图篇】

数据结构【图篇】 文章目录 数据结构【图篇】前言为什么突然想学算法了&#xff1f;为什么选择码蹄集作为刷题软件&#xff1f; 目录一、图(一)、图的存储(二)、图的基本操作(三)、最短路径问题 二、拓扑排序三、结语 前言 为什么突然想学算法了&#xff1f; > 用较为“官方…

【PHP】判断字符串是否是json类型,并判断是否是有效数组

要在 PHP 中判断给定的字符串是否是 JSON&#xff0c;可以使用 json_decode() 函数和检查返回值的类型。以下是一个示例&#xff0c;展示了如何判断给定的字符串是否是 JSON&#xff0c;以及如何判断它是数组还是字符串&#xff1a; <?phpfunction isJson($string) {json_…

金融追梦者,向着春天出发——社科院与美国杜兰大学金融管理硕士

随着时代的进步和社会的变迁&#xff0c;教育已经不再是单纯的学生时代的事情&#xff0c;而是贯穿人的一生。特别是在金融行业&#xff0c;由于其变幻莫测的特性&#xff0c;在职继续攻读硕士学位的人越来越多。他们希望通过进一步的学习和研究&#xff0c;提升自己的专业素养…

transformers Trainer自定义optimizer和scheduler

1.需求 我自定义了一个evaluate方法&#xff0c;想在每一轮训练过后都执行一次。如果只是在TrainingArguments里设置warmup_steps100&#xff0c;那么每轮都会重置学习率&#xff0c;也就是每一轮开始的时候都会按照warmup刚开始的学习率进行训练&#xff0c;这就很头疼。 2.…

【双指针算法】-- 左右指针

左右指针 前言一、双指针算法二、左右指针1.用于在已排序数组中找到两个数使其和为特定值2.在字符串中判断是否为回文 总结 前言 今天在刷Leetcode的时候觉得自己双指针掌握的还是不错的记录一下,写个学习笔记,也方便以后翻阅,如果也帮助到你了,那真是太好啦! 本篇介绍的是左右…

js创建服务器,以及对接口的理解和创建

// 创建服务 const app http.createServer((req, res)>{ // 设置给前端返回信息的字符编码 res.setHeader(content-type, text/html; charsetutf-8) let address req.url.split(?)[0] //首先创建一个数组&#xff0c;后面把它的数据放在JSON文件 let…

医院配电能效监管方案

摘要:本文以医院能源监管系统为研究对象,采用智能化技术组建数据库、构建智能化的能耗信息管理系统,实现对医院的能源利用状况进行实时、准确的动态监管。具体而言,该系统建设的主要功能是对医院的能源消耗进行采集、上报、汇总与分析,并生成动态的数据和报表曲线,以及利用分析…

js实现将一张红色透明图改成黑色

获取到像素点&#xff0c;遇到255红色rgb的改为黑色0 ps:红色的rgb为255 0 0 function test(base64) {// 创建一个Canvas元素var canvas document.createElement("canvas");var context canvas.getContext("2d");var redStamp new Image();redStamp.src…

如何在Windows Redis中设置密码?

https://www.python100.com/html/3NQ9A968M2JX.html springboot 工程配置文件 application.yml 中配置如下 redis: timeout: 50000 port: 6379 host: 127.0.0.1 password: 123456 注意 password: 123456 冒号后有空格

SAP ABAP ZPL打印

前言 本文用于简单介绍在SAP中使用ZPL语言进行打印的开发步骤&#xff0c;由于对ZPL语言并不是很熟悉&#xff0c;所以ZPL相关的部分并不会很深入&#xff0c;主要介绍在SAP端如何动态填充ZPL内容及预览、打印。 什么是ZPL ZPL是斑马条码打印机工业型号用的编程语言。利用这些…