52_图解分布式训练_八_ZeRO_学习

图解分布式训练(八)—— ZeRO 学习

来自: AiGC面试宝典

扫码 查看更

一、什么是 3D 并行?

3D 并行可以让大型模型以非常有效的方式进行训练

二、3D 并行 策略有哪些?

• DataParallel (DP) • TensorParallel (TP) • PipelineParallel (PP)

2.1 DataParallel (DP)

• 介绍:假设有N张卡,每张卡都保存一个模型,每一次迭代(iteration/step)都将batch数据分割成N个等大小的micro-batch,每张卡根据拿到的micro-batch数据独立计算梯度,然后调用AllReduce计算梯度均值,每张卡再独立进行参数更新。

53_大模型分布式训练故障恢复篇

扫码 查看更

一、为什么 大模型分布式训练 需要 故障恢复?

大规模分布式训练场景由于集群规模过大,芯片设备、主机、网络等均会不定期出现故障,如果此时想要继续训练,那么就需要从上次存储的ckpt进行恢复,然后resume training。这个过程中产生的时间间隔就是集群故障带来的开销,虽然不可避免,但是我们可以尽可能的减少故障带来的影响。

54_pytorch_分布式计算_坑_bug_梳理篇

pytorch 分布式计算 坑/bug 梳理篇

来自: AiGC面试宝典

扫码 查看更

• pytorch 分布式计算 坑/bug 梳理篇

• 动机

一、使用 DistributedDataParallel(分布式并行)时,显存分布不均衡问题二、如果是用pytorch实现同步梯度更新,自研 数据接口,出现 第一个epoch结尾处程序卡死问题• 三、在微调大模型的时候,单机2卡的时候正常训练,但是采用4卡及其以上,就会卡住,卡在读完数据和开始训练之间?

55_大模型_LLMs_agent_面

• 大模型(LLMs)agent 面

• 一、什么是 大模型(LLMs)agent?

• 二、大模型(LLMs)agent 有哪些部分组成?• 2.1 介绍一下 规划(planning)?

56_LLMs_位置编码篇

• LLMs 位置编码篇

• 动机• 一、什么是位置编码?• 二、为什么需要位置编码?• 三、什么是绝对位置编码?

• 3.1 训练式位置编码篇

• 3.1.1 什么是 训练式位置编码?
• 3.1.2 如何为每个位置的词向量注入位置信息呢?
• 3.1.3 训练式位置编码篇 应用场景?
• 3.1.4 训练式位置编码篇 存在哪些问题?

57_LLMs_Tokenizer_篇

LLMs Tokenizer 篇

来自: AiGC面试宝典

Byte-Pair Encoding(BPE)篇

1 Byte-Pair Encoding(BPE) 如何构建词典?

  1. 准备足够的训练语料;以及期望的词表大小;
  2. 将单词拆分为字符粒度(字粒度),并在末尾添加后缀“”,统计单词频率
  3. 合并方式:统计每一个连续/相邻字节对的出现频率,将最高频的连续字节对合并为新的子词;
  4. 重复第3步,直到词表达到设定的词表大小;或下一个最高频字节对出现频率为1。

注:GPT2、BART和LLaMA就采用了BPE。

58_怎么让英文大语言模型支持中文_一_构建中文tokenization

怎么让英文大语言模型支持中文?(一) —— 构建中文tokenization来自: AiGC面试宝典

扫码 查看更

一、为什么需要 构建中文tokenization?

大语言模型 百家争鸣趋势,但是 从 根本来看,主要 以 基于llama家族的模型 和 基于glm家族的模型为主。不过目前大多数 LLMs 还是以 基于llama家族的模型 为主,然而 原始基于llama家族的模型 主要训练语料为 英文语料,中文语料占比较少,直接导致,基于llama家族的模型 对于 中文的支持不太友好。那么有什么办法 能够 解决 基于llama家族的模型 对于 中文的支持不太友好 问题呢?本文利用 《斗破苍穹》作为语料,介绍 从 扩充vocab里面的词以对中文进行token化。

59_怎么让英文大语言模型支持中文_二_继续预训练篇

怎么让英文大语言模型支持中文?(二) —— 继续预训练篇

来自: AiGC面试宝典

扫码 查看更

一、为什么需要进行继续预训练?

前面我们已经讲过怎么构建中文领域的tokenization:
接下来我们将介绍继续预训练。
我们新增加了一些中文词汇到词表中,这些词汇是没有得到训练的,因此在进行指令微调之前我们要进行预训练。预训练的方式一般都是相同的,简单来说,就是根据上一个字预测下一个字是什么。为了方便起见,我们这里直接使用IDEA-CCNL/Wenzhong2.0-GPT2-110M-BertTokenizer-chinese模型,并且tokenizer也是其自带的。

6_LLMs_损失函数篇

LLMs 损失函数篇

来自: AiGC面试宝典

• LLMs 损失函数篇

一、介绍一下 KL 散度?
二、交叉熵损失函数写一下,物理意义是什么?
• 三、KL 散度与交叉熵的区别?
• 四、多任务学习各loss差异过大怎样处理?
• 五、分类问题为什么用交叉熵损失函数不用均方误差(MSE)?
• 六、什么是信息增益?
• 七、多分类的分类损失函数(Softmax)?
• 八、softmax和交叉熵损失怎么计算,二值交叉熵呢?
• 九、如果softmax的e次方超过float的值了怎么办?

60_怎么让英文大语言模型支持中文_三_对预训练模型进行指令微调

怎么让英文大语言模型支持中文?(三) —— 对预训练模型进行指令微调来自: AiGC面试宝典

扫码 查看更

一、为什么需要对预训练模型进行指令微调?

在之前讲过的继续预训练之后,我们应该对数据处理到训练、预测的整个流程有所了解,其实,基本上过程是差不多的。我们在选择好一个大语言模型之后。比如chatglm、llama、bloom等,要想使用它,得了解三个方面:输入数据的格式、tokenization、模型的使用方式。