简体中文🀄 | English🌎
特性 | 模型支持 | 安装 | 快速开始 | 社区交流
PaddleNLP是一款基于飞桨深度学习框架的大语言模型(LLM)开发套件,支持在多种硬件上进行高效的大模型训练、无损压缩以及高性能推理。PaddleNLP 具备简单易用和性能极致的特点,致力于助力开发者实现高效的大模型产业级应用。
News 📢
-
2024.08.08 📚《飞桨产业级大语言模型开发利器 PaddleNLP 3.0 重磅发布》,训压推全流程贯通,主流模型全覆盖。大模型自动并行,千亿模型训推全流程开箱即用。提供产业级高性能精调与对齐解决方案,压缩推理领先,多硬件适配。覆盖产业级智能助手、内容创作、知识问答、关键信息抽取等应用场景。直播时间:8月15日(周四)19:00。报名链接:https://www.wjx.top/vm/Y2f7FFY.aspx?udsid=143844
-
2024.06.27 PaddleNLP v3.0 Beta:拥抱大模型,体验全升级。统一大模型套件,实现国产计算芯片全流程接入;全面支持飞桨4D 并行配置、高效精调策略、高效对齐算法、高性能推理等大模型产业级应用流程;自研极致收敛的 RsLoRA+算法、自动扩缩容存储机制 Unified Checkpoint 和通用化支持的 FastFFN、FusedQKV 助力大模型训推;主流模型持续支持更新,提供高效解决方案。
-
2024.04.24 PaddleNLP v2.8:自研极致收敛的 RsLoRA+算法,大幅提升 PEFT 训练收敛速度以及训练效果;引入高性能生成加速到 RLHF PPO 算法,打破 PPO 训练中生成速度瓶颈,PPO 训练性能大幅领先。通用化支持 FastFFN、FusedQKV 等多个大模型训练性能优化方式,大模型训练更快、更稳定。
特性
🔧 多硬件训推一体
支持英伟达 GPU、昆仑 XPU、昇腾 NPU、燧原 GCU 和海光 DCU 等多个硬件的大模型训练和推理,套件接口支持硬件快速切换,大幅降低硬件切换研发成本。
🚀 高效易用的预训练
支持纯数据并行策略、分组参数切片的数据并行策略、张量模型并行策略和流水线模型并行策略的4D 高性能训练,Trainer 支持分布式策略配置化,降低复杂分布式组合带来的使用成本; Unified Checkpoint 大模型存储格式在模型参数分布上支持动态扩缩容训练,降低硬件切换带来的迁移成本。
🤗 高效精调
精调算法深度结合零填充数据流和 FlashMask 高性能算子,降低训练无效数据填充和计算,大幅提升精调训练吞吐。
🎛️ 无损压缩和高性能推理
大模型套件高性能推理模块内置动态插入和全环节算子融合策略,极大加快并行推理速度。底层实现细节封装化,实现开箱即用的高性能并行推理能力。
模型支持
-
模型参数已支持 LLaMA 系列、Baichuan 系列、Bloom 系列、ChatGLM 系列、Gemma 系列、Mistral 系列、OPT 系列和 Qwen 系列,详细列表👉【LLM】模型参数支持列表如下: <SOURCE_TEXT> | Model Series | Model Name | |:---------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | LLaMA | facebook/llama-7b, facebook/llama-13b, facebook/llama-30b, facebook/llama-65b | | LLama2 | meta-llama/Llama-2-7b, meta-llama/Llama-2-7b-chat, meta-llama/Llama-2-13b, meta-llama/Llama-2-13b-chat, meta-llama/Llama-2-70b, meta-llama/Llama-2-70b-chat | | LLama3 | meta-llama/Meta-Llama-3-8B, meta-llama/Meta-Llama-3-8B-Instruct, meta-llama/Meta-Llama-3-70B, meta-llama/Meta-Llama-3-70B-Instruct | | LLama3.1 | meta-llama/Meta-Llama-3.1-8B, meta-llama/Meta-Llama-3.1-8B-Instruct, meta-llama/Meta-Llama-3.1-70B, meta-llama/Meta-Llama-3.1-70B-Instruct, meta-llama/Meta-Llama-3.1-405B, meta-llama/Meta-Llama-3.1-405B-Instruct, meta-llama/Llama-Guard-3-8B | | Baichuan | baichuan-inc/Baichuan-7B, baichuan-inc/Baichuan-13B-Base, baichuan-inc/Baichuan-13B-Chat | | Baichuan2 | baichuan-inc/Baichuan2-7B-Base, baichuan-inc/Baichuan2-7B-Chat, baichuan-inc/Baichuan2-13B-Base, baichuan-inc/Baichuan2-13B-Chat | | Bloom | bigscience/bloom-560m, bigscience/bloom-560m-bf16, bigscience/bloom-1b1, bigscience/bloom-3b, bigscience/bloom-7b1, bigscience/bloomz-560m, bigscience/bloomz-1b1, bigscience/bloomz-3b, bigscience/bloomz-7b1-mt, bigscience/bloomz-7b1-p3, bigscience/bloomz-7b1, bellegroup/belle-7b-2m | | ChatGLM | THUDM/chatglm-6b, THUDM/chatglm-6b-v1.1 | | ChatGLM2 | THUDM/chatglm2-6b | | ChatGLM3 | THUDM/chatglm3-6b | | Gemma | google/gemma-7b, google/gemma-7b-it, google/gemma-2b, google/gemma-2b-it | | Mistral | mistralai/Mistral-7B-Instruct-v0.3, mistralai/Mistral-7B-v0.1 | | Mixtral | mistralai/Mixtral-8x7B-Instruct-v0.1 | | OPT | facebook/opt-125m, facebook/opt-350m, facebook/opt-1.3b, facebook/opt-2.7b, facebook/opt-6.7b, facebook/opt-13b, facebook/opt-30b, facebook/opt-66b, facebook/opt-iml-1.3b, opt-iml-max-1.3b | | Qwen | qwen/qwen-7b, qwen/qwen-7b-chat, qwen/qwen-14b, qwen/qwen-14b-chat, qwen/qwen-72b, qwen/qwen-72b-chat, | | Qwen1.5 | Qwen/Qwen1.5-0.5B, Qwen/Qwen1.5-0.5B-Chat, Qwen/Qwen1.5-1.8B, Qwen/Qwen1.5-1.8B-Chat, Qwen/Qwen1.5-4B, Qwen/Qwen1.5-4B-Chat, Qwen/Qwen1.5-7B, Qwen/Qwen1.5-7B-Chat, Qwen/Qwen1.5-14B, Qwen/Qwen1.5-14B-Chat, Qwen/Qwen1.5-32B, Qwen/Qwen1.5-32B-Chat, Qwen/Qwen1.5-72B, Qwen/Qwen1.5-72B-Chat, Qwen/Qwen1.5-110B, Qwen/Qwen1.5-110B-Chat, Qwen/Qwen1.5-MoE-A2.7B, Qwen/Qwen1.5-MoE-A2.7B-Chat | | Qwen2 | Qwen/Qwen2-0.5B, Qwen/Qwen2-0.5B-Instruct, Qwen/Qwen2-1.5B, Qwen/Qwen2-1.5B-Instruct, Qwen/Qwen2-7B, Qwen/Qwen2-7B-Instruct, Qwen/Qwen2-72B, Qwen/Qwen2-72B-Instruct, Qwen/Qwen2-57B-A14B, Qwen/Qwen2-57B-A14B-Instruct |
-
4D Parallelism and operator optimization are supported for the LLaMA series, Baichuan series, Bloom series, ChatGLM series, Gemma series, Mistral series, OPT series, and Qwen series. The list of models supported for 4D parallelism and operator support in the LLM category is as follows: </SOURCE_TEXT> <SOURCE_TEXT> | 模型名称/并行能力支持 | 数据并行 | 张量模型并行 | | 参数分片并行 | | | 流水线并行 | |:---------------------:|:--------:|:------------:|:--------:|:------------:|:------:|:------:|:----------:| | | | 基础能力 | 序列并行 | stage1 | stage2 | stage3 | | | Llama | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | Llama2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | Llama3 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | Llama3.1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | Qwen | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | Qwen1.5 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | Qwen2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | Mixtral(moe) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 🚧 | | Mistral | ✅ | ✅ | 🚧 | ✅ | ✅ | ✅ | 🚧 | | Baichuan(同 llama) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | Baichuan2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | ChatGLM | ✅ | ✅ | 🚧 | ✅ | ✅ | ✅ | 🚧 | | ChatGLM2 | ✅ | 🚧 | 🚧 | ✅ | ✅ | ✅ | 🚧 | | ChatGLM3 | ✅ | 🚧 | 🚧 | ✅ | ✅ | ✅ | 🚧 | | Bloom | ✅ | ✅ | 🚧 | ✅ | ✅ | ✅ | 🚧 | | GPT-2/GPT-3 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | OPT | ✅ | ✅ | 🚧 | ✅ | ✅ | ✅ | 🚧 | | Gemma | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
-
大模型预训练、精调(包含 SFT、PEFT 技术)、对齐、量化已支持 LLaMA 系列、Baichuan 系列、Bloom 系列、ChatGLM 系列、Mistral 系列、OPT 系列和 Qwen 系列,【LLM】模型预训练、精调、对齐、量化支持列表如下:
模型名称/能力支持 | Pretrain | SFT | LoRA | Prefix Tuning | DPO | RLHF | Quantization | Torch convert |
---|---|---|---|---|---|---|---|---|
LLaMA | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen | ✅ | ✅ | ✅ | ✅ | ✅ | 🚧 | 🚧 | ✅ |
Mixtral | ✅ | ✅ | ✅ | ❌ | 🚧 | 🚧 | 🚧 | 🚧 |
Mistral | ❌ | ✅ | ✅ | ✅ | ✅ | 🚧 | 🚧 | ✅ |
Baichuan/Baichuan2 | ✅ | ✅ | ✅ | ✅ | ✅ | 🚧 | ✅ | ✅ |
ChatGLM-6B | ❌ | ✅ | ✅ | ✅ | 🚧 | 🚧 | ✅ | ❌ |
ChatGLM2/ChatGLM3 | ❌ | ✅ | ✅ | ✅ | 🚧 | 🚧 | ✅ | ✅ |
Bloom | ❌ | ✅ | ✅ | ✅ | 🚧 | 🚧 | ✅ | ✅ |
GPT-3 | ✅ | ✅ | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | ✅ |
OPT | 🚧 | ✅ | ✅ | 🚧 | 🚧 | 🚧 | 🚧 | ✅ |
安装
环境依赖
- python >= 3.8
- paddlepaddle >= 3.0.0b0
pip 安装
pip install --upgrade paddlenlp==3.0.0b0
或者可通过以下命令安装最新 develop 分支代码:
pip install --pre --upgrade paddlenlp -f https://www.paddlepaddle.org.cn/whl/paddlenlp.html
更多关于 PaddlePaddle 和 PaddleNLP 安装的详细教程请查看Installation。
快速开始
大模型文本生成
PaddleNLP 提供了方便易用的 Auto API,能够快速的加载模型和 Tokenizer。这里以使用 Qwen/Qwen2-0.5B
模型做文本生成为例:
>>> from paddlenlp.transformers import AutoTokenizer, AutoModelForCausalLM
>>> tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2-0.5B")
>>> model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2-0.5B", dtype="float16")
>>> input_features = tokenizer("你好!请自我介绍一下。", return_tensors="pd")
>>> outputs = model.generate(**input_features, max_length=128)
>>> print(tokenizer.batch_decode(outputs[0]))
['我是一个AI语言模型,我可以回答各种问题,包括但不限于:天气、新闻、历史、文化、科学、教育、娱乐等。请问您有什么需要了解的吗?']
大模型预训练
mkdir -p llm/data && cd llm/data
wget https://bj.bcebos.com/paddlenlp/models/transformers/llama/data/llama_openwebtext_100k.bin
wget https://bj.bcebos.com/paddlenlp/models/transformers/llama/data/llama_openwebtext_100k.idx
cd .. # change folder to PaddleNLP/llm
python -u -m paddle.distributed.launch --gpus "0,1,2,3,4,5,6,7" run_pretrain.py ./config/llama/pretrain_argument.json
大模型 SFT 精调
mkdir -p llm/data && cd llm/data
wget https://bj.bcebos.com/paddlenlp/datasets/examples/AdvertiseGen.tar.gz && tar -zxvf AdvertiseGen.tar.gz
cd .. # change folder to PaddleNLP/llm
python -u -m paddle.distributed.launch --gpus "0,1,2,3,4,5,6,7" run_finetune.py ./config/llama/sft_argument.json
更多大模型全流程步骤,请参考飞桨大模型套件介绍。
更多 PaddleNLP 内容可参考: </SOURCE_TEXT>
- Model Zoo, which provides an end-to-end workflow with high-quality pre-trained models.
- Multi-Scenario Examples, to learn how to solve various NLP technical problems using PaddleNLP, including basic technology, system applications, and extended applications.
- Interactive Tutorials, quickly learn PaddleNLP on the 🆓 free computing power platform AI Studio.
Community Communication
- Scan the QR code with WeChat and fill out the questionnaire to join the community group for in-depth communication with many community developers and the official team.
Citation
If PaddleNLP is helpful for your research, feel free to cite it
@misc{=paddlenlp,
title={PaddleNLP: An Easy-to-use and High Performance NLP Library},
author={PaddleNLP Contributors},
howpublished = {\url{https://github.com/PaddlePaddle/PaddleNLP}},
year={2021}
}
Acknowledge
We have borrowed excellent design ideas from Hugging Face's Transformers🤗 regarding the use of pre-trained models, and we would like to thank the Hugging Face authors and their open-source community.
License
PaddleNLP follows the Apache-2.0 License.