大模型训练流程(一)预训练

预训练GPU内存分析:

GPU占用内存 = 模型权重 + 梯度 + 优化器内存(动量估计和梯度方差) + 中间激活值*batchsize + GPU初始化内存

训练流程

(选基座 —> 扩词表 —> 采样&切分数据 —> 设置学习参数 —> 训练 —> 能力测评)
https://zhuanlan.zhihu.com/p/636270877

1.选择一个预训练的模型基座

大部分优秀的语言模型都没有进行充分的中文预训练,因此,许多工作都尝试将在英语上表现比较优秀的模型用中文语料进行二次预训练。比如:[Chinese-LLaMA-Alpaca]。

2.Tokenizer Training

2.1 tokenizer 是将一句话进行切词并转化成模型可以学习的数字格式

tokenizer 有 2 种常用形式:WordPiece 和 BPE。

  • WordPiece:将所有的「常用字」和「常用词」都存到词表中,当需要切词的时候就从词表里面查找即可。BERT 就使用的这种切词法。
    当遇到词表中不存在的字词时,tokenizer 会将其标记为特殊的字符 [UNK]

  • Byte-level BPE(BBPE):按照 unicode 编码作为最小粒度。对于中文来讲,一个汉字是由 3 个 unicode 编码组成的(LLaMA 的 tokenizer 对中文就是如此
    能用unicode表示的汉字都可以训练,但模型需要通过充分学习来知道合法的 unicode 序列。当训练不充分则会出现乱码(不合法的 unicode 序列)

2.2 词表扩充

为了降低模型的训练难度,将一些常见的汉字 token 手动添加到原来的 tokenizer 中。

  • Chinese LLaMA 在原始 tokenizer 上新增了17953 个 tokens,且加入 token 的大部分为汉字。
  • BELLE 在 120w 行中文文本上训练出一个 5w 规模的 token 集合,并将这部分 token 集合与原来的 LLaMA
    词表做合并,最后再在 3.2B 的中文语料上对这部分新扩展的 token embedding 做二次预训练。

3.预训练

输入语料让大模型进行Next Token Prediction 任务

3.1数据处理

  • 开源数据集可以用于实验,如果想突破性能,则需要我们自己进行数据集构建。
  • 在 Finetune 任务中,我们通常会直接使用 truncation 将超过阈值(2048)的文本给截断,但在 Pretrain 任务中为了让模型充分提高语言的连贯能力,是将长文章按照 seq_len(2048)作分割,将切割后的向量喂给模型做训练。
  • 对不同的数据源会选择不同采样比,相对较大的数据集会使用相对较大的采样比例,使得模型不会太偏向于规模较大的数据集,从而失去对规模小但作用大的数据集上的学习信息。

3.2 Warmup & Learning Ratio 设置

在继续预训练中,我们通常会使用 warmup 策略,此时我们按照 2 种不同情况划分:

  1. 当训练资源充足时,应尽可能选择较大的学习率以更好的适配下游任务;
  2. 当资源不充足时,更小的学习率和更长的预热步数或许是个更好的选择。

4. 模型效果测评

  • 采用[PPL],[BPC] 评估模型对于生成结果和目标文本的拟合程度,测评生成流畅和通顺语句能力
  • 测评模型知识蕴含能力,中文知识能力测试数据集是 [C-Eval],涵盖1.4w 道选择题,共 52 个学科。将题目写进 prompt 中,并让模型续写 1 个 token,判断这个续写 token 的答案是不是正确答案。使用 Five-shot 的方式给模型提供五个问答样例来让模型知道如何输出答案。

Five-shot评分:
Five-shot评分

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

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

相关文章

什么是美颜SDK?美颜SDK在短视频平台中的作用探究

在这个以视频为主导的平台上,美颜技术在其中扮演了不可或缺的角色。本文将探讨美颜SDK的本质,以及它在短视频平台中所发挥的作用。 一、什么是美颜SDK? 美颜SDK是一种软件开发工具包,其主要功能是通过算法对图像进行美化处理。…

【教3妹学编程-算法题】人员站位的方案数 II

2哥 : 3妹,今天第一天上班啊,开工大吉~ 3妹:2哥,开工大吉鸭,有没有开工红包? 2哥 : 我们公司比较扣,估计不会发的。 3妹:我们公司估计也一样,不过依然挡不住我打工人的热…

HarmonyOS router页面跳转

默认启动页面index.ets import router from ohos.router import {BusinessError} from ohos.baseEntry Component struct Index {State message: string Hello World;build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)//添加按钮&am…

【 JS 进阶 】原型对象、面向对象

目标 了解构造函数原型对象的语法特征,掌握 JavaScript 中面向对象编程的实现方式,基于面向对象编程思想实现 DOM 操作的封装。 了解面向对象编程的一般特征掌握基于构造函数原型对象的逻辑封装掌握基于原型对象实现的继承理解何为原型链及其作用能够处理…

C++Qt:noteBookPro_01

一、创建项目 选择Qt Widgets 常用的是QWidgets和MainWindow。两者的区别: QWidgets用于简单的窗口,没有内置的菜单栏、工具栏和状态栏。适用于简单专用的应用程序,不需要复杂的界面组件。 MainWindow是包含完整的菜单栏、工具栏和状态栏的主…

Linux 主机数据拷贝与 Linux 服务器之间拷贝文件的方法

Linux 主机数据拷贝与 Linux 服务器之间拷贝文件的方法 1. 使用 scp 命令2. 使用 rsync 命令3. 使用 scp 和 rsync 的图形界面工具4. 使用 FTP/SFTP 协议总结与比较 在 Linux 系统中,数据拷贝是日常操作中的常见需求,尤其是在不同主机或服务器之间进行文…

近场2D beamforming Heatmap图

文章目录 想法代码目前啥样想法 参考论文Beam Focusing for Near-Field Multiuser MIMO Communications,可视化beam focusing效应 代码 clc; clear;% 网格范围 D = 1; % 整个均匀平面阵列的孔径 lambda = 1e-2; % 波长0.01m,单位:米 30GhzN_d = floor(2 * D / lambda); %…

PS自由变换的小技巧--墙面广告牌

墙面广告牌,如何用PS做出看上去特别真实的一个效果 1.首先,我们会有墙面跟广告栏2个图层 2.然后将广告牌复制一层 3.接着用钢笔工具画出墙面的透视,也就是两条线,这两条线的交叉点就是墙面的透视点 4.接着选中广告牌复制图层&…

杨氏矩阵和杨辉三角

杨氏矩阵 有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。 要求:时间复杂度小于O(N); 分析 若要满足要求时间复杂度小于O(N),就不能每一行一个个…

TCP流量控制+拥塞控制

流量控制: 目标:流量控制主要解决的是发送方和接收方之间处理能力的不匹配问题。它的目的是确保发送方不会发送数据过快,以至于接收方无法及时接收并处理这些数据,从而避免数据包在网络中堆积和丢失。实现方式:在TCP协…

【.NET Core】深入理解async 和 await 理解

【.NET Core】深入理解async 和 await 理解 文章目录 【.NET Core】深入理解async 和 await 理解一、概述二、async异步执行机制理解三、async与await应用3.1 async与await简单应用3.2 带有返回值async与await应用 四、async和await中常见问题总结4.1 当方法用async标识时&…

7条策略,提升可视化大屏的科技感,值得收藏。

以下是从设计角度上提升科技感的几条建议: 使用现代化的字体: 选择现代化的字体能够让大屏幕看起来更加科技感。比如,Sans-serif字体、Roboto字体、Lato字体等都是现代化的字体。 设计简洁、清晰的图表: 图表是可视化大屏设计中…

端口号被占用怎么解决

1、快捷键"winR"打开运行,在其中输入"cmd"命令,回车键打开命令提示符。 2、进入窗口后,输入"netstat -ano"命令,可以用来查看所有窗口被占用的情况。 比如端口号为7680的端口被占用了&#xff0c…

一次失败的面试经历:我只想找个工作,你却用面试题羞辱我

金三银四就要来了,即将又是一波求职月,面对跳槽的高峰期,很多软件测试人员都希望能拿一个满意的高薪offer,但是随着招聘职位的不断增多,面试的难度也随之加大,而面试官更是会择优录取 小王最近为面试已经焦…

循环测试之旅 —— 深度解析Pytest插件 pytest-repeat!

在软件开发中,测试的重要性不言而喻。而为了提高测试的鲁棒性和可靠性,Pytest插件 pytest-repeat 应运而生。这个插件可以帮助你轻松实现测试用例的循环运行,以更全面地评估代码的稳定性。本文将深入介绍 pytest-repeat 插件的基本用法和实际…

msvcp140.dll丢失要怎么处理的一些解决方法,分享一些解决办法

在Windows操作系统中,有时候我们会遇到一些dll文件丢失或损坏的问题。其中一个常见的错误是"找不到msvcp140.dll"。这个错误会导致一些应用程序无法正常运行,给我们的电脑使用带来了很大的困扰。不用担心,今天我们就来说说由于找不…

OpenAI视频生成模型Sora的全面解析:从ViViT、扩散Transformer到NaViT、VideoPoet

前言 真没想到,距离视频生成上一轮的集中爆发(详见《视频生成发展史:从Gen2、Emu Video到PixelDance、SVD、Pika 1.0、W.A.L.T》)才过去三个月,没想OpenAI一出手,该领域又直接变天了 自打2.16日OpenAI发布sora以来(其开发团队包…

《剑指Offer》笔记题解思路技巧优化 Java版本——新版leetcode_Part_4

《剑指Offer》笔记&题解&思路&技巧&优化_Part_4 😍😍😍 相知🙌🙌🙌 相识😢😢😢 开始刷题1. LCR 148. 验证图书取出顺序——栈的压入、弹出序列2. LCR 14…

简单贪吃蛇模拟(C语言版本·)

简单贪吃蛇模拟(C语言版本) 一、所需win32 API知识二、游戏逻辑实现 一、所需win32 API知识 1.在这儿,直接弱化概念,把在贪吃蛇中用到的API知识说一下!  1.1用cmd命令来设置控制台窗口的长宽   1.2.用title 指令…

如何使用Pycharm中的image模块以及导入打开图片(属性)

在学习pytorch深度学习的过程中,通常会使用到大量的数据集,包括训练集和测试集。 以下是pytorch加载数据集的流程: 在notebook中使用help方法查看Dataset类的功能以及操作: 使用dataset需要继承Dataset父类 重写__getitem__方法和…