【LLM必读】大模型实践总结-最新版

哈喽大家好我是站长,美区火箭apple ID 土耳其apple ID 其他apple ID 账号资源,可加微信:yuke36 咨询 公众号:云创磊哥Ai

作者: AINLP  来源: [AINLP](https://mp.weixin.qq.com/s/7Kka6Ktds4kgL9_ZYipntg)

随着ChatGPT的快速火爆,大模型时代的变革加速到来。对于以Transformer、MOE结构为代表的大模型,传统的单机单卡训练模式当然无法满足千亿级参数的模型训练。这时候就需要解决内存墙、通信墙等一系列问题,在单机多卡或者多机多卡上进行模型训练。

最近也在摸索一些大模型相关的技术,这里简单总结一下,以后会尽量每个季度更新,最新更新是2023.07.03。本文主要涉及AI集群、AI集群通信、大模型训练(高效参数微调)、大模型推理加速、大模型评估、大模型生态相关技术等相关内容。同时也总结了之前写过的一些大模型相关的文章,文章太长,建议先保存再看。

人工智能集群

由于目前 A800 GPU 服务器只有三台(共计 24 张卡),基于一些现有的 AI 框架和大模型,三台服务器无法充分发挥其作用,例如 OPT-66B 一共有 64 层 Transformer。使用 Alpa 进行流水线并行时,通过流水线并行拆分模型,要么使用 16 张卡,要么使用 8 张卡,24 张卡无法直接使用。因此最好购买偶数台 GPU 服务器(例如 2、4、8 台)。

具体硬件配置如下:

图片.png

目前使用 Huggingface Transformers 和 DeepSpeed 进行数据并行训练(pretrain),单卡可以跑 300 亿参数(开启 ZeRO-2 或者 ZeRO-3 的情况下),比如 OPT-30B,具体训练教程可以参考官方 examples。

在使用Alpa进行流水线并行和数据并行进行训练(fine tuning)时,使用了3台机器共24张卡(PP: 12, DP: 2)来训练OPT-30B。具体的训练教程可以参考官方的sample。不过在进行模型训练之前需要进行模型格式转换,将HF格式转换为Alpa格式的模型文件,具体可以参考官方的代码。如果不想转换的话,官网也提供了转换好的模型格式,具体可以参考文档:Serving OPT-175B, BLOOM-176B and CodeGen-16B using Alpa。

图片.png

20230703:前几天对H800进行了性能测试,整体来看模型训练(Huggingface Transformers)和模型推理(FasterTransformer)的速度提升了30%左右。不过H800支持的新数据类型FP8,很多开源框架都不支持,虽然Nvidia自己的一些开源框架支持这个数据类型,但是目前还不是很稳定。

图片.png

AI处理器(加速卡)-新品(2023.06.30)

目前主流的AI处理器无疑是NVIDIA的GPU。NVIDIA的GPU产品主要包括GeForce、Tesla和Quadro三个系列。虽然从硬件角度来看,它们都采用相同的架构设计,支持通用计算(GPGPU),但由于目标市场和产品定位不同,这三个系列的GPU在软硬件设计和支持上存在很多差异。其中,GeForce是消费级显卡,而Tesla和Quadro则归类为专业级显卡。GeForce主要应用于游戏娱乐领域,而Quadro主要用于专业的可视化设计创作,Tesla则更侧重于深度学习、人工智能和高性能计算。

其中A800/H800为中国专用版本(低端版),与A100/H100相比,主要区别有:

其他一些国外AI处理器(加速卡):

国产AI处理器(加速卡):

大型模型算法

模型结构:

目前主流的大模型都是基于Transformer和MOE结构构建的,如果说Transformer结构使得模型参数量突破到上亿级别的话,那么MoE稀疏混合专家结构则使得模型参数量进一步突破,达到万亿级别。

大模型算法:

下图详细展示了AI大模型的发展过程:

可以说Transformer开创了继MLP、CNN、RNN之后的第四类模型。基于Transformer结构的模型又可以分为三类:Encoder-only、Decoder-only、Encoder-Decoder。

大型语言模型

业界可供下载的一些大型语言模型包括:

20230325(当时官方的训练代码还没开源,所以直接使用官方的训练代码即可):

前两天测试了一下BELLE,对于中文效果很好。具体模型训练(预训练)方法请参考Hugingface Transformers示例,SFT(指令微调)方法请参考Alpaca训练代码。

从上面可以看出,开源大语言模型主要有三类:基于GLM衍生的大模型(wenda、ChatSQL等),基于LLaMA衍生的大模型(Alpaca、Vicuna、BELLE、Phoenix、Chimera等),基于Bloom衍生的大模型(Bloomz、BELLE、Phoenix等)。

模型训练数据量 模型参数 训练数据范围 词汇量

LLaMA1T~1.4T tokens (7B/13B使用1T, 33B/65B使用1.4T)7B~65B 以英语为主的拉丁语系 32000

ChatGLM-6B 关于1T代币6B 中文, 英文 130528

Bloom1.6TB 预处理文本,转换为 350B 个唯一标记300M~176B46 种自然语言,13 种编程语言250680

从表格中我们可以看出,对于ChatGLM-6B,LLaMA,Bloom这样的大模型,要保证基础模型有比较好的效果,至少需要数千亿或者数万亿个token。

目前来看,LLaMA无疑是其中最耀眼的明星,但国内对LLaMA的一大争议是,LLaMA是在以英语为主的拉丁语上训练的,LLaMA词汇表中中文token相对较少(只有几百个),是否需要扩充词汇量?如果不扩充,中文效果会不会更差?

以下是BELLE从是否扩充词表、数据质量、数据语言分布、数据规模四个角度对模型性能影响的比较:

图片.png

其中,BELLE-0.5M-CLEAN是从230万条指令数据中清洗出来的0.5M数据(包括单轮和多轮对话数据);LLaMA-7B-EXT是针对LLaMA的扩充中文词汇量的预训练模型。

以下为Chinese-LLaMA-Alpaca与Chinese Alpaca-13B、Chinese Alpaca-Plus-7B、Chinese Alpaca-Plus-13B的效果对比:

图片[1]-【LLM必读】大模型实践总结-最新版-网络副业创业项目大全资源整合

图片.png

其中,Alpaca Plus系列在原有LLaMA基础上扩充了中文词汇,并使用120G的中文通用纯文本数据进行二次预训练。

所以如果想要中文词汇量但是又没有太多计算能力的话,建议直接使用ChatGLM-6B或者使用BELLE和Chinese-LLaMA-Alpaca来扩充中文词汇量然后作为base模型来训练模型。

多模态大模型

业界可以下载的一些大型多模态模型:

领域大模型-新增(2023.06.30) 金融领域大模型 法律领域大模型 医疗领域大模型 教育领域大模型 数学领域大模型 RLHF(人工反馈强化学习)-新增(2023.07.03)

根据OpenAI之前的一些实验,我们可以看到使用PPO(Proximal Policy Optimization)算法的RLHF模型总体上表现更好。当将结果提供给人类时,人类通常更喜欢来自RLHF模型的token,而不是SFT模型和使用提示作为助手的基础模型。

图片.png

为什么RLHF会让模型变得更好?目前AI研究界还没有找到一个被大家认可的理论。一种可能和比较和生成的计算难度不对称有关。

让我们用一个例子来说明:假设我们想让一个模型写一首关于回形针的俳句。假设你是一名承包商,正在创建训练数据,为 SFT 模型收集数据。那么你如何写一首关于回形针的好俳句呢?而且你可能不是一位优秀的俳句诗人。但是,如果给你几首俳句,你就有能力分辨出哪一首更好。换句话说,判断哪个例子更好要比创建一个好的例子简单得多。因此,这种不对称性可能使比较成为一种更好的方式,可以更好地利用人类的判断力来创建更好的模型。

但到目前为止,RLHF 并不总是能改善基础模型。在某些情况下,RLHF 模型会损失一些熵,这意味着它们会产生更单调、变化更少的结果,而基础模型则具有更高的熵,可以产生更加多样化的结果。

RLHF 开源工具

以下是目前开源的一些 RLHF 工具:

分布式并行及显存优化技术

并行技术:

显存优化技术:

分布式训练框架

如何选择分布式训练框架?

常见的分布式训练框架:

目前训练超大规模语言模型的技术路线主要有两种:

TPU+XLA+TensorFlow/JAX:以Google为主,因为TPU和自己的云平台GCP深度绑定。

GPU+PyTorch+Megatron-LM+DeepSpeed:得到NVIDIA、Meta、Microsoft等大厂支持,社区氛围活跃,较受大家欢迎。

在国内,华为Ascend正在打造全栈AI软硬件平台(Ascend NPU+CANN+MindSpore+MindFormers),但整个生态与前两家相比还存在很大差距。

参数高效微调 (PEFT) 技术

当面向特定的下游任务时,进行Full Fine Tuning(即对预训练模型中的所有参数进行微调)的效率太低;而固定预训练模型的某些层,只对靠近下游任务的层的参数进行微调,很难取得很好的效果。

PEFT 技术旨在通过最小化微调参数数量和计算复杂度来提高预训练模型在新任务上的表现,从而减轻大型预训练模型的训练成本。这样,即使计算资源有限,也可以利用预训练模型的知识快速适应新任务,实现高效的迁移学习。因此,PEFT 技术可以在提高模型效果的同时,大大缩短模型训练时间和计算成本,让更多人参与到深度学习研究中来。此外,FEFT 还可以缓解全微调带来的灾难性遗忘问题。

典型应用:

ChatGLM-Tuning:一种经济实惠的 chatgpt 实现,基于清华的 ChatGLM-6B + LoRA 进行了微调。

Alpaca-Lora:利用低秩自适应(LoRA)复现了 Stanford Alpaca 的结果。Stanford Alpaca 对整个 LLaMA 模型进行微调,而 Alpaca-Lora 利用 Lora 技术冻结原始模型 LLaMA 参数,为模型添加额外的网络层,只训练这些新增网络层的参数。由于这些新增参数数量较少,这不仅显著降低了微调成本,而且达到了与微调整个模型类似的效果。

BLOOM-LORA:由于LLaMA的局限性,我们尝试使用Alpaca-Lora重新实现BLOOM-LoRA。

PEFT 实施:

PEFT:Huggingface 的 PEFT 库。

unify-parameter-efficient-tuning:参数高效迁移学习的统一框架。

高效微调技术目前存在两个问题:

与全参数微调相比,目前大部分有效的微调技术都存在两个问题:

推理速度会比较慢

模型准确率将会下降

影响大型模型性能的主要因素

OpenAI 的论文《神经语言模型的缩放定律》(Scaling Laws for Neural Language Models)列出了对模型性能影响最大的三个因素:计算负载、数据集大小和模型参数数量。也就是说,在其他因素不成为瓶颈的情况下,当计算负载、数据集大小和模型参数数量三个因素中任何一个因素呈指数级增长时,loss 都会呈线性下降。

除了以上因素,另一个重大影响因素是数据质量。在微软的论文《Instruction Tuning with GPT-4》中指出,基于LLaMA模型,使用GPT3和GPT4生成的数据,该模型为Instruction Turing。可以看出,用GPT4数据微调的模型比用GPT3数据微调的模型效果好很多,可见数据质量的影响。同样,在Vicuna (7B/13B)的Instruction Turing中,shareGPT数据也经过了非常仔细的清洗。

测量大型模型的水平

评价一个大语言模型的水平,可以从以下几个维度提出有代表性的问题。

大模型评估方法:

图片[1]-【LLM必读】大模型实践总结-最新版-网络副业创业项目大全资源整合

人工评估:LIMA、菲尼克斯

使用 GPT-4 的反馈进行自动评估:Vicuna、Phoenix、Chimera、BELLE

指标评估(BLEU-4、ROUGE 分数):ChatGLM-6B;对于 ROUGE-L 分数这样的指标,有些地方称之为非自然指令评估。

Chatbot Arena:目前衡量模型好坏的方法基本都是基于一些学术基准,比如在某个 NLP 任务上构建测试数据集,然后看在测试数据集上的准确率。然而这些学术基准(比如 HELM)对于大型模型和聊天机器人来说用处不大。原因如下:

因此Chatbot Arena的做法是抛弃benchmark,通过对抗、实时聊天、两两比较等方式进行人工评分,并使用elo分数进行评估。

大型模型评估工具:

大模型推理加速

模型推理是模型生产的最后一公里,需要在追求极致推理性能的同时保证模型精度,相比传统模型,大模型面临的挑战更大。

优化模型的主要技术手段可以概括为以下三个层次:

推理加速框架:

TurboTransformers:腾讯的 TurboTransformers 由计算运行时和服务框架组成。加速推理框架适用于 CPU 和 GPU,最重要的是它可以处理可变长度的输入序列而无需预处理。具体来说,它包括以下内容:

AI集群网络通信-新品(2023.06.30) 通信硬件

机器内通信:

机器对机器通信:

通讯软件

下面介绍一些常见的网络通信库:

通信网络监测大模型生态系统相关技术-新增(2023.06.30)

大模型是基础,要把它变成产品,还需要一些其他的相关技术:

LLM应用开发工具矢量数据库

总体来说,如果想要快速验证,Pinecone 是不错的选择;如果想要更灵活的查询方式,可以考虑 Vespa 或者 Weaviate;如果需要更好的扩展性和可靠性,经过大客户验证的 Vespa 或者 Milvus 或许是不错的选择。

得到教训

经验:

课:

大型模型实践文章

下面是最近一些大模型实践的文章,文档和支撑代码放在GitHub上:llm-action。

法学硕士培训:

LLM预训练/微调/RLHF…参数教程代码

Alpacafull fine-turning7B 复刻 Stanford Alpaca 7B 从 0 到 1 N/A

Alpacalora7B

已经够神奇了,用Alpaca-Lora 20分钟微调LLaMA(7B)模型,效果堪比斯坦福Alpaca,用LoRA技术微调LLaMA 65B大模型及推理支撑代码

BELLE (LLaMA-7B/Bloomz-7B1-mt) 全精车7B

基于LLaMA-7B/Bloomz-7B1-mt复刻开源中文对话模型BELLE,并采用GPTQ量化。对BELLE(LLaMA-7B/Bloomz-7B1-mt)模型进行GPTQ量化,然后测试推理性能。N/A

ChatGLMlora6B 从 0 到 1 基于 ChatGLM-6B,使用 LoRA 进行高效参数微调 N/A

ChatGLMfull 微调/P-Tuning v26B 使用 DeepSpeed/P-Tuning v2N/A 对 ChatGLM-6B 进行微调

Vicunafull精车7B大模型也渐开线,Vicuna训练推理指导,效果碾压斯坦福羊驼N/A

奥普特尔HFN/A

一键 RLHF 训练 DeepSpeed Chat(一):理论 一键 RLHF 训练 DeepSpeed Chat(二):实践 N/A

MiniGPT-4全精调7B杀手级、多模态大模型MiniGPT-4入门指南N/A

Chinese-LLaMA-Alpacalora(预训练+微调)7B利用LoRA技术对LLaMA 65B大模型及推理支持代码进行微调

LLM 推理:

LLM微调技术:

对于普通大众来说,对大模型进行预训练或者完全微调是遥不可及的,因此各种高效的参数微调技术应运而生,让研究人员或者普通开发者有机会尝试微调大模型。

因此这项技术值得我们深入剖析其背后的机制,本系列大致分为七篇文章来阐述它。

结论

熟能生巧,以上就是这段时间我对大模型实践的一些小总结,部分内容比较主观和片面,我会继续更新自己在研究大模型过程中的一些认知和实践经验,希望对大家有所帮助,欢迎大家点赞收藏关注。

**进技术交流群请添加AINLP小助手微信(id: ainlp2)**   
**请备注具体方向+所用到的相关技术点** 
![](https://aibard123.top/showpic.php?url=https://mmbiz.qpic.cn/mmbiz_jpg/nW2ZPfuYqSJADkmZ2IX6Z23znAibuEevotDMq9iaMxiapK7jfMibiauGFkycicAJEs6x5U9SGyDJZ0S1tRed9TPNUUDQ/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1)
**关于AINLP** 
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括LLM、预训练模型、自动生成、文本摘要、智能问答、聊天机器人、机器翻译、知识图谱、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP小助手微信(id:ainlp2),备注工作/研究方向+加群目的。
  
  
![](https://aibard123.top/showpic.php?url=https://mmbiz.qpic.cn/mmbiz_jpg/nW2ZPfuYqSKABHCqVVQkVYPrM4XY1vsd0iaeuXzyJnoFc8cibd5mYb4wdA3WMQtiaPVmr0XLZHMuVibqWncibpnTSnQ/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1)
**阅读至此了,分享、点赞、在看三选一吧** 

哈喽大家好我是站长,美区火箭apple ID 土耳其apple ID 其他apple ID 账号资源,可加微信:yuke36 咨询 可扫码下方关注公众号获取账号教程资源

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容