簡體中文| English?
PaddleNLP是基於飛槳深度學習框架的大語言模型(LLM)開發套件,支援在多種硬體上進行高效的大模型訓練、無損壓縮以及高性能推理。 PaddleNLP 具有簡單易用且效能極致的特點,致力於協助開發者實現高效率的大模式產業級應用。
2024.08.08 《飛槳產業級大語言模型開發利器PaddleNLP 3.0 重磅發布》 ,訓壓推全流程貫通,主流模型全覆蓋。大模型自動並行,千億模型訓推全流程開箱即用。提供產業級高性能精調與對齊解決方案,壓縮推理領先,多硬體適配。涵蓋產業級智慧助理、內容創作、知識問答、關鍵資訊抽取等應用場景。直播時間:8月22日(週四)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】模型參數支援清單如下:
模型系列 | 模型名稱 |
---|---|
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 |
LLama3.2 | meta-llama/Llama-3.2-1B, meta-llama/Llama-3.2-1B-Instruct, meta-llama/Llama-3.2-3B, meta-llama/Llama-3.2-3B-Instruct, meta-llama/Llama- Guard-3-1B |
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-560m, bigscience/bloomz-1b1, 31-1boom 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 |
Qwen2-Math | Qwen/Qwen2-Math-1.5B, Qwen/Qwen2-Math-1.5B-Instruct, Qwen/Qwen2-Math-7B, Qwen/Qwen2-Math-7B-Instruct, Qwen/Qwen2-Math-72B, Qwen/Qwen2- Math-72B-Instruct, Qwen/Qwen2-Math-RM-72B |
Qwen2.5 | Qwen/Qwen2.5-0.5B, Qwen/Qwen2.5-0.5B-Instruct, Qwen/Qwen2.5-1.5B, Qwen/Qwen2.5-1.5B-Instruct, Qwen/Qwen2.5-3B, Qwen/ Qwen2.5-3B-Instruct, Qwen/Qwen2.5-7B, Qwen/Qwen2.5-7B-Instruct, Qwen/Qwen2.5-14B, Qwen/Qwen2.5-14B-Instruct, Qwen/Qwen2.5-32B, Qwen/Qwen2.5-32B-Instruct, Qwen/Qwen2.5-72B, Qwen/Qwen2.5- 72B-Instruct |
Qwen2.5-Math | Qwen/Qwen2.5-Math-1.5B, Qwen/Qwen2.5-Math-1.5B-Instruct, Qwen/Qwen2.5-Math-7B, Qwen/Qwen2.5-Math-7B-Instruct, Qwen/Qwen2. 5-Math-72B, Qwen/Qwen2.5-Math-72B-Instruct, Qwen/Qwen2.5-Math-RM-72B |
Qwen2.5-Coder | Qwen/Qwen2.5-Coder-1.5B, Qwen/Qwen2.5-Coder-1.5B-Instruct, Qwen/Qwen2.5-Coder-7B, Qwen/Qwen2.5-Coder-7B-Instruct |
Yuan2 | IEITYuan/Yuan2-2B, IEITYuan/Yuan2-51B, IEITYuan/Yuan2-102B |
4D 並行和算子優化已支援LLaMA 系列、Baichuan 系列、Bloom 系列、ChatGLM 系列、Gemma 系列、Mistral 系列、OPT 系列和Qwen 系列,【LLM】模型4D 並行和運算子支援清單如下:
模型名稱/並行能力支持 | 數據並行 | 張量模型平行 | 參數分片平行 | 管線並行 | |||
---|---|---|---|---|---|---|---|
基礎能力 | 序列平行 | stage1 | stage2 | stage3 | |||
Llama | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen1.5 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Mixtral(moe) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ? |
Mistral | ✅ | ✅ | ? | ✅ | ✅ | ✅ | ? |
Baichuan | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Baichuan2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ChatGLM | ✅ | ✅ | ? | ✅ | ✅ | ✅ | ? |
ChatGLM2 | ✅ | ? | ? | ✅ | ✅ | ✅ | ? |
ChatGLM3 | ✅ | ? | ? | ✅ | ✅ | ✅ | ? |
Bloom | ✅ | ✅ | ? | ✅ | ✅ | ✅ | ? |
GPT-2/GPT-3 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
OPT | ✅ | ✅ | ? | ✅ | ✅ | ✅ | ? |
Gemma | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Yuan2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ? |
大模型預訓練、精調(包含SFT、PEFT 技術)、對齊、量化已支援LLaMA 系列、Baichuan 系列、Bloom 系列、ChatGLM 系列、Mistral 系列、OPT 系列和Qwen 系列,【LLM】模型預訓練、精調、對齊、量化支持列表如下:
Model | Pretrain | SFT | LoRA | FlashMask | Prefix Tuning | DPO/SimPO/ORPO | RLHF | Quantization |
---|---|---|---|---|---|---|---|---|
Llama | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ? | ? |
Mixtral | ✅ | ✅ | ✅ | ? | ? | ✅ | ? | ? |
Mistral | ✅ | ✅ | ✅ | ? | ✅ | ✅ | ? | ? |
Baichuan/Baichuan2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ? | ✅ |
ChatGLM-6B | ✅ | ✅ | ✅ | ? | ✅ | ? | ? | ✅ |
ChatGLM2/ChatGLM3 | ✅ | ✅ | ✅ | ? | ✅ | ✅ | ? | ✅ |
Bloom | ✅ | ✅ | ✅ | ? | ✅ | ? | ? | ✅ |
GPT-3 | ✅ | ✅ | ? | ? | ? | ? | ? | ? |
OPT | ✅ | ✅ | ✅ | ? | ? | ? | ? | ? |
Gemma | ✅ | ✅ | ✅ | ? | ? | ✅ | ? | ? |
Yuan | ✅ | ✅ | ✅ | ? | ? | ✅ | ? | ? |
大模型推理已支援LLaMA 系列、Qwen 系列、Mistral 系列、ChatGLM 系列、Bloom 系列和Baichuan 系列,支援Weight Only INT8及INT4推理,支援WAC(權重、活化、Cache KV)進行INT8、FP8量化的推理,【 LLM】模型推理支持列表如下:
模型名稱/量化類型支持 | FP16/BF16 | WINT8 | WINT4 | INT8-A8W8 | FP8-A8W8 | INT8-A8W8C8 |
---|---|---|---|---|---|---|
LLaMA | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen-Moe | ✅ | ✅ | ✅ | ? | ? | ? |
Mixtral | ✅ | ✅ | ✅ | ? | ? | ? |
ChatGLM | ✅ | ✅ | ✅ | ? | ? | ? |
Bloom | ✅ | ✅ | ✅ | ? | ? | ? |
BaiChuan | ✅ | ✅ | ✅ | ✅ | ✅ | ? |
python >= 3.8
paddlepaddle >= 3.0.0b0
如果您尚未安裝PaddlePaddle,請參考飛槳官網進行安裝。
pip install --upgrade paddlenlp==3.0.0b2
或可透過以下命令安裝最新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
模型做文本生成為例:
>>> 從 paddlenlp.transformers import AutoTokenizer, AutoModelForCausalLM>>> tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2-0.5B")>>> model = AutoModelForCausalLM.from_pretrainewend("Qwen/Qwend" float16")>>> input_features = tokenizer("你好!請自我介紹一下。", return_tensors="pd")>>> outputs = model.generate(**input_features, max_length=128)>>> print(tokenizer.batch_decode(outputs[0 ], skip_special_tokens=True)) ['我是一個AI語言模型,我可以回答各種問題,包括但不限於:天氣、新聞、歷史、文化、科學、教育、娛樂等。請問您有什麼需要了解的嗎? ']
git clone https://github.com/PaddlePaddle/PaddleNLP.git && cd PaddleNLP # 如已clone或下載PaddleNLP可跳過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.idxcd .. # change folder to PaddleNLP/llmpython -u -m paddle.distributed.launch --gpus "0,1, 2,3,4,5,6,7" run_pretrain.py ./config/llama/pretrain_argument.json
git clone https://github.com/PaddlePaddle/PaddleNLP.git && cd PaddleNLP # 如已clone或下載PaddleNLP可跳過mkdir -p llm/data && cd llm/data wget https://bj.bcebos.com/paddlenlp/datasets/examples/AdvertiseGen.tar.gz && tar -zxvf AdvertiseGen.tar.gzcd .. # change folder to PaddleNLP/llmpytddle -u -m pa.distributed.la -distributed.la - -gpus "0,1,2,3,4,5,6,7" run_finetune.py ./config/llama/sft_argument.json
更多大模型全流程步驟,請參考飛槳大模型套件介紹。
更多PaddleNLP 內容可參考:
精選模型庫,包含優質預訓練模型的端到端全流程使用。
多場景範例,了解如何使用PaddleNLP 解決NLP 多種技術問題,包含基礎技術、系統應用與拓展應用。
互動式教程,在?免費算力平台AI Studio 上快速學習PaddleNLP。
微信掃描二維碼並填寫問卷,即可加入交流群與眾多社區開發者以及官方團隊深度交流.
如果PaddleNLP 對您的研究有幫助,歡迎引用
@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}}
我們借鏡了Hugging Face 的Transformers?關於預訓練模式使用的優秀設計,在此對Hugging Face 作者及其開源社群表示感謝。
PaddleNLP 遵循Apache-2.0開源協定。