【转帖】训练中文LLaMA大规模语言模型

训练,中文,llama,大规模,语言,模型 · 浏览次数 : 0

小编点评

**大型语言模型 LLaMA 的开源训练** 此文章介绍了 FacebookResearch 的大型语言模型 LLaMA 的开源训练,包括模型权重下载、预训练框架使用和训练过程概述。 **模型权重下载** LLaMA 的模型权重可从 FacebookResearch 申请模型或从 Huggingface 社区获取。 **预训练框架** LLaMA 使用 TencentPretrain 多模态预训练框架进行训练。该框架支持多种模型,包括 BERT、GPT、T5、ViT、Dall-E、Speech2Text 等。 **训练过程** 训练过程包括以下步骤: 1. 克隆 TencentPretrain 项目。 2. 安装依赖项。 3. 下载模型权重。 4. 将模型权重转换为 TencentPretrain 格式。 5. 配置配置文件。 6. 启动训练。 7. 监控模型的 loss 和准确率。 **开源代码** 开源代码提供 LLaMA 的文本生成示例,可以用于各种 Zero/Few-Shot Learning 任务。 **使用中文语料** LLaMA 在预训练阶段主要基于英语训练,但由于它没有将中文语料加入预训练,在中文上的效果很弱。 **其他** * 本文介绍了如何基于 TencentPretrain 预训练框架训练 LLaMA 模型。 * LLaMA 模型支持所有规模的 LLaMA 模型训练/微调。

正文

https://zhuanlan.zhihu.com/p/612752963?utm_id=0

 

 


最近,FacebookResearch 开源了他们最新的大规模语言模型 LLaMA,包含从 7B 到 65B 的参数范围,训练使用多达 14,000 亿 tokens 语料。其中,LLaMA-13B 在大部分基准测评上超过了 GPT3(175B),与目前最强的语言模型 Chinchilla-70B 和 PaLM-540B 相比,LLaMA-65B 也具有竞争力。因此,LLaMA 可能是目前公开模型权重中效果最好的语言模型。

论文:

代码:

在论文中,作者针对常识推理、问答、数学推理、代码生成、语言理解等能力对 LLaMA 进行了评测。结果显示,LLaMA 以相对少量的参数获得了媲美超大模型的效果,这对 NLP 社区的研究者们更加友好,因为它可以在单个 GPU 上运行。开源代码提供 LLaMA 的文本生成示例,可以直接用于一些 Zero/Few-Shot Learning 任务。也有许多用户关心如何使用自己的数据微调或增量训练LLaMA模型,然而Facebook目前还没有提供对应的训练代码。在本文中,我们介绍如何基于 TencentPretrain 预训练框架训练 LLaMA 模型。

TencentPretrain 是 UER-py 预训练框架的多模态版本,支持 BERT、GPT、T5、ViT、Dall-E、Speech2Text 等模型,支持文本、图像和语音模态预训练及下游任务。TencentPretrain 基于模块化设计,用户可以通过模块组合的方式构成各种模型,也可以通过复用已有的模块进行少量修改来实现新的模型。例如,LLaMA 的模型架构基于 Transformer 有三项改动:

  1. 前置 normalization [GPT3]: 在每个 transformer 层输入之前进行标准化,以提高训练稳定性。标准化层使用RMSNorm。
  2. SwiGLU 激活函数[PaLM]:在 Feedforward 层使用 Gated Linear Units [T5] 以及 SwiGLU 激活函数。
  3. 旋转位置编码[GPTNeo]:移除了 Embedding 层的绝对位置编码,并在每个 transformer 层增加旋转位置编码(RoPE)。

得益于模块化特性,我们在 TencentPretrain 中基于 GPT2 模型的已有模块,仅添加约 100 行代码就能实现以上三个改动从而训练 LLaMA 模型。具体的使用步骤为:

  1. 克隆 TencentPretrain 项目,并安装依赖:PyTorch、DeepSpeedSentencePiece
git clone https://github.com/Tencent/TencentPretrain.git

2. 下载 LLaMA 模型权重(7B),可以向 FacebookResearch 申请模型,或者从 Huggingface 社区获取;将模型权重转换为 TencentPretrain 格式

cd TencentPretrain
python3 scripts/convert_llama_to_tencentpretrain.py --input_model_path $LLaMA_7B_FOLDER/consolidated.00.pth --output_model_path models/llama-7b.bin --layers_num 32

3. 调整配置文件

将 tencentpretrain/utils/constants.py 文件中 L4: special_tokens_map.json 修改为 llama_special_tokens_map.json

4. 语料预处理:使用项目自带的语料作为演示,也可以使用相同格式的语料进行替换

预训练语料下载

python3 preprocess.py --corpus_path corpora/book_review.txt --spm_model_path $LLaMA_7B_FOLDER/tokenizer.model \
                      --dataset_path dataset.pt --processes_num 8 --data_processor lm

5. 启动训练,以8卡为例

deepspeed pretrain.py --deepspeed --deepspeed_config models/deepspeed_config.json \
                      --pretrained_model_path models/llama-7b.bin \
                      --dataset_path dataset.pt --spm_model_path $LLaMA_7B_FOLDER/tokenizer.model \
                      --config_path models/llama/7b_config.json \
                      --output_model_path models/output_model.bin \
                      --world_size 8 --learning_rate 1e-4  \
                      --data_processor lm --total_steps 10000 --save_checkpoint_steps 2000 --batch_size 24

启动训练后,可以看到模型的 loss 和准确率:


模型推理

类似 facebookresearch/llama ,TencentPretrain 也提供语言模型推理代码。例如,使用单卡进行 LLaMA-7B 推理,prompt 在文件beginning.txt 中:

python3 scripts/generate_lm.py --load_model_path models/llama-7b.bin --spm_model_path $LLaMA_7B_FOLDER/tokenizer.model \
                               --test_path beginning.txt --prediction_path generated_sentence.txt \
                               --config_path models/llama/7b_config.json 

 

开源的 LLaMA 模型在预训练阶段主要基于英语训练,也具有一定的多语言能力,然而由于它没有将中文语料加入预训练,LLaMA在中文上的效果很弱。利用 TencentPretrain 框架,用户可以使用中文语料增强 LLaMA 的中文能力,也可以将它微调成垂直领域模型。

目前,TencentPretrain 只支持 LLaMA-7B 训练,我们将会持续改进以支持所有规模的 LLaMA 模型训练/微调并分享更多实验结果。欢迎大家分享使用 TencentPretrain 训练的模型权重或提交 Pull Request 贡献代码。

其他预训练模型权重例如中文 BERT、GPT、T5 等可以在我们的 Model Zoo 或者 Huggingface 仓库下载。

 


更新:LLaMA中文权重以及对话模型

与【转帖】训练中文LLaMA大规模语言模型相似的内容:

【转帖】训练中文LLaMA大规模语言模型

https://zhuanlan.zhihu.com/p/612752963?utm_id=0 https://github.com/CVI-SZU/Linly​github.com/CVI-SZU/Linly 最近,FacebookResearch 开源了他们最新的大规模语言模型 LLaMA,包含

[转帖]自动驾驶网络优化

https://cloud.tencent.com/developer/article/2003355 在自动驾驶中,需要大量的sensor信息上传到服务器进行训练。即使在车辆的行驶过程中也需要相关的sensor信息进行融合,感知。而sensor的信息可能来自不同的域,这样就需要高速稳定的网络来提供

【转帖】ChatGPT的前身:InstructGPT

https://www.jianshu.com/p/6daf35cbc46a ChatGPT的论文目前还没有发布,在其官方博客(https://openai.com/blog/chatgpt/)中对方法有这样的简述: 我们使用来自人类反馈的强化学习(RLHF)来训练这个模型,使用与Instructi

[转帖]大模型训练,英伟达Turing、Ampere和Hopper算力分析

https://www.eet-china.com/mp/a219195.html 大 GPU 优势在于通过并行计算实现大量重复性计算。GPGPU即通用GPU,能够帮助 CPU 进行非图形相关程序的运算。在类似的价格和功率范围内,GPU 能提供比CPU 高得多的指令吞吐量和内存带宽。GPGPU 架构

[转帖]GPT4All 一个开源 ChatGPT

https://zhuanlan.zhihu.com/p/618947904 通用预训练语言模型. ChatGPT 正在迅速发展与传播,新的大型语言模型 (LLM) 正在以越来越快的速度开发。就在过去几个月,有了颠覆性的 ChatGPT 和现在的 GPT-4。明确定义,GPT 代表(Generati

【转帖】千亿参数大模型首次被撬开!Meta复刻GPT-3“背刺”OpenAI,完整模型权重及训练代码全公布

https://cloud.tencent.com/developer/article/1991011 千亿级参数AI大模型,竟然真的能获取代码了?! 一觉醒来,AI圈发生了一件轰动的事情—— Meta AI开放了一个“重达”1750亿参数的大语言模型OPT-175B,不仅参数比GPT-3的3750

【转帖】GPT4All开源的聊天机器人

GPT4All是一个开源的聊天机器人,它基于LLaMA的大型语言模型训练而成,使用了大量的干净的助手数据,包括代码、故事和对话。它可以在本地运行,不需要云服务或登录,也可以通过Python或Typescript的绑定来使用。它的目标是提供一个类似于GPT-3或GPT-4的语言模型,但是更轻量化和易于

[转帖]英伟达H100市面价格飙升!Elon Musk:每个人都在买GPU

https://cj.sina.com.cn/articles/view/5115326071/130e5ae7702001w8oz?sudaref=www.baidu.com&display=0&retcode=0 据外媒CNBC报道,随着对训练和部署人工智能软件所需芯片需求的飙升,英伟达的最先进

【转帖】什么是RLHF

什么是RLHF? **字面翻译:**RLHF (Reinforcement Learning from Human Feedback) ,即以强化学习方式依据人类反馈优化语言模型。 强化学习从人类反馈(RLHF)是一种先进的AI系统训练方法,它将强化学习与人类反馈相结合。它是一种通过将人类训练师的智

[转帖]Linux超能力BPF技术介绍及学习分享(技术创作101训练营)

https://cloud.tencent.com/developer/inventory/600/article/1698426 背景介绍 近两年BPF技术跃然成为了一项热门技术,在刚刚结束的KubeCon 2020 Europe会议上有7个关于BPF的技术分享, 而在KubeCon 2020 C