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

预训练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妹:我们公司估计也一样,不过依然挡不住我打工人的热…

Oracle触发器

触发器 满足特定事件时系统自动执行的命名块。主要用于实现一些比较复杂的完整性需求。 分类 DML触发器,DDL触发器,替代触发器,从数据库事件触发器。 DML触发器:在表上执行DML操作时自动触发。 创建DML触发器。 考虑四个方面&a…

【工具类】vscode ssh 远程免密登录开发

存放代码的机器运行 sshd,使用 vscode 的机器保证可以通过 ssh 登录服务器vscode 机器通过 ssh-keygen 生成 ssh 公私钥对将客户端的 id_rsa.pub 加入到服务器的鉴权队列 cat id_rsa.pub >> authorized_keysvscode 配置即可.ctrlp, remote-ssh: open ssh configuration f…

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 操作的封装。 了解面向对象编程的一般特征掌握基于构造函数原型对象的逻辑封装掌握基于原型对象实现的继承理解何为原型链及其作用能够处理…

Hive使用双重GroupBy解决数据倾斜问题

文章目录 1.数据准备2.双重group by实现 解决数据倾斜2.1 第一层加盐group by2.2 第二层去盐group by 1.数据准备 create table wordcount(a string) row format delimited fields terminated by ‘,’; load data local inpath ‘opt/2.txt’ into table wordcount; hive (…

spring boot rabbitmq常用配置

直接上代码 package com.example.demo;import org.aopalliance.aop.Advice; import org.springframework.amqp.rabbit.annotation.RabbitListenerConfigurer; import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory; import org.springframewo…

TP-LINK路由器的IPTV功能测试验证

路由器设置 路由器设置页面的说明: 此功能需配合TP-LINK面板式AP使用,可在路由器与AP之间建立IPTV数据透传通道,改善IPTV机顶盒与光猫距离较远不易连接的问题。 注意:开启IPTV功能会导致LLDP功能无法正常使用。 直接按设置向导…

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); %…

深入理解C++ 虚函数

C 中的虚函数(virtual function)是面向对象编程中的一个重要概念,它允许子类重新定义从父类继承的方法。当子类对象被当作父类对象使用时,可以通过子类的方法实现来调用子类的方法,而不是父类的方法。这就是多态&#…

Java 播放音频

Java 播放音频 1 依赖2 接口3 实现4 测试 1 依赖 <dependency><groupId>com.googlecode.soundlibs</groupId><artifactId>mp3spi</artifactId><version>1.9.5.4</version> </dependency><!-- 如果需要解码播放flac文件则引…

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

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

杨氏矩阵和杨辉三角

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

spring工具类

/*** spring工具类 方便在非spring管理环境中获取bean* */ Component public final class SpringUtils implements BeanFactoryPostProcessor, ApplicationContextAware {/** Spring应用上下文环境 */private static ConfigurableListableBeanFactory beanFactory;private sta…

macad.common解析properties,evaluator

1.properties using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices;// 将 ComVisible 设置为 false 使得此程序集中的类型对 COM 组件不可见。 // 如果需要从 COM 访问此程序集中的类型&#xff0c;请将 ComVisible 属性设…

算法:带权重随机算法

算法思想&#xff1a;对象权重 / 所有对象权重总和即每个对象相对应的概率 public static void main(String[] args) throws IOException {//初始化每个人的权重//1.从文件中导入数据到集合BufferedReader br new BufferedReader(new FileReader("D:\\zzz.txt"));//…

TCP流量控制+拥塞控制

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