Chinois simplifié | Anglais ?
PaddleNLP est un kit de développement de grands modèles de langage (LLM) basé sur le cadre d'apprentissage en profondeur Paddle, qui prend en charge une formation efficace de grands modèles, une compression sans perte et une inférence hautes performances sur une variété de matériels. PaddleNLP est facile à utiliser et offre des performances ultimes , et s'engage à aider les développeurs à mettre en œuvre des applications efficaces de grands modèles au niveau industriel.
2024.08.08 "PaddleNLP 3.0, un outil puissant pour le développement de grands modèles de langage au niveau industriel, est publié" , avec l'ensemble du processus de formation, de pression et de poussée, et une couverture complète des modèles grand public. Les grands modèles sont automatiquement parallélisés et l'ensemble du processus de formation et de diffusion de centaines de milliards de modèles est disponible immédiatement. Fournit des solutions de réglage fin et d’alignement hautes performances de qualité industrielle, une inférence de compression de pointe et une adaptation multi-matériel. Couvrant des scénarios d'application tels que les assistants intelligents de niveau industriel, la création de contenu, les questions et réponses sur les connaissances et l'extraction d'informations clés. Heure de diffusion en direct : 22 août (jeudi) 19h00. Lien d'inscription : https://www.wjx.top/vm/Y2f7FFY.aspx?udsid=143844
2024.06.27 PaddleNLP v3.0 Beta : Adoptez de grands modèles et vivez une expérience entièrement améliorée. Unifier la grande suite de modèles pour obtenir un accès complet aux puces informatiques nationales ; prendre entièrement en charge les processus d'application de grands modèles au niveau industriel tels que la configuration parallèle 4D à palette volante, des stratégies de réglage fin efficaces, des algorithmes d'alignement efficaces et un raisonnement automatique haute performance ; -algorithme RsLoRA+ extrêmement convergent développé, le mécanisme de stockage automatique d'expansion et de contraction Unified Checkpoint et FastFFN et FusedQKV universellement pris en charge aident la formation et la promotion de grands modèles à continuer de prendre en charge les mises à jour et de fournir des solutions efficaces ;
2024.04.24 PaddleNLP v2.8 : L'algorithme RsLoRA+ auto-développé avec une convergence extrême améliore considérablement la vitesse de convergence et l'effet d'entraînement de l'entraînement PEFT ; Les performances de la formation PPO sont nettement en avance. Prend en charge universellement plusieurs méthodes d'optimisation des performances de formation de grands modèles telles que FastFFN et FusedQKV, rendant la formation de grands modèles plus rapide et plus stable.
Il prend en charge la formation et l'inférence de modèles de compréhension du langage naturel et des grands modèles pour les GPU NVIDIA, Kunlun XPU, Shengteng NPU, Suiyuan GCU, Haiguang DCU et d'autres matériels. L'interface de la suite prend en charge une commutation matérielle rapide, réduisant considérablement les coûts de R&D de commutation matérielle. Modèles de compréhension du langage naturel actuellement pris en charge : liste des modèles de compréhension du langage naturel multi-matériel
Prend en charge la formation 4D hautes performances des stratégies parallèles de données pures, des stratégies parallèles de données de découpage des paramètres de groupe, des stratégies parallèles de modèles tenseurs et des stratégies parallèles de modèles de pipeline. Trainer prend en charge la configuration de stratégies distribuées pour réduire les coûts d'utilisation causés par les combinaisons distribuées complexes du stockage de modèles volumineux d'Unified Checkpoint ; Le format prend en charge l'entraînement dynamique à l'expansion et à la contraction dans la distribution des paramètres du modèle, réduisant ainsi les coûts de migration causés par le changement de matériel.
L'algorithme de réglage fin combine profondément le flux de données sans remplissage et l'opérateur haute performance FlashMask pour réduire le remplissage et le calcul des données d'entraînement invalides et améliorer considérablement le débit de l'entraînement de réglage fin.
Le module de raisonnement hautes performances de la suite de grands modèles intègre des stratégies d'insertion dynamique et de fusion d'opérateurs de lien complet, ce qui accélère considérablement le raisonnement parallèle. Les détails d'implémentation sous-jacents sont encapsulés pour obtenir des capacités de raisonnement parallèle hautes performances prêtes à l'emploi.
Les paramètres du modèle prennent en charge les séries LLaMA, Baichuan, Bloom, ChatGLM, Gemma, Mistral, OPT et Qwen. La liste détaillée des paramètres de modèle [LLM] est la suivante :
Série de modèles | Nom du modèle |
---|---|
LAMA | facebook/llama-7b, facebook/llama-13b, facebook/llama-30b, facebook/llama-65b |
Llama2 | méta-llama/Llama-2-7b, méta-llama/Llama-2-7b-chat, méta-llama/Llama-2-13b, méta-llama/Llama-2-13b-chat, méta-llama/Llama- 2-70b, méta-llama/Llama-2-70b-chat |
LMa3 | méta-llama/Meta-Llama-3-8B, méta-llama/Meta-Llama-3-8B-Instruct, méta-llama/Meta-Llama-3-70B, méta-llama/Meta-Llama-3-70B- Instruire |
Lama3.1 | méta-llama/Meta-Llama-3.1-8B, méta-llama/Meta-Llama-3.1-8B-Instruct, méta-llama/Meta-Llama-3.1-70B, méta-llama/Meta-Llama-3.1-70B- Instruire, méta-llama/Meta-Llama-3.1-405B, méta-llama/Meta-Llama-3.1-405B-Instruct, méta-llama/Llama-Guard-3-8B |
Lama3.2 | méta-llama/Llama-3.2-1B, méta-llama/Llama-3.2-1B-Instruct, méta-llama/Llama-3.2-3B, méta-llama/Llama-3.2-3B-Instruct, méta-llama/Llama- Garde-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 |
Floraison | 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 |
Gemme | 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 |
OPTER | 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ématiques | 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-Instruire |
Qwen2.5-Mathématiques | 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-Codeur | 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 |
Le parallélisme 4D et l'optimisation des opérateurs ont pris en charge les séries LLaMA, les séries Baichuan, les séries Bloom, les séries ChatGLM, les séries Gemma, les séries Mistral, les séries OPT et les séries Qwen. La liste de parallélisme 4D du modèle [LLM] et de prise en charge des opérateurs est la suivante :
Prise en charge du nom du modèle/capacité parallèle | parallélisme des données | Parallélisme du modèle tensoriel | Parallélisme de partage de paramètres | Parallélisme des pipelines | |||
---|---|---|---|---|---|---|---|
Capacités de base | parallélisme de séquence | étape1 | étape2 | étape3 | |||
Lama | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen1.5 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Mixtral(moe) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ? |
Mistral | ✅ | ✅ | ? | ✅ | ✅ | ✅ | ? |
Baichuan | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Baichuan2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ChatGLM | ✅ | ✅ | ? | ✅ | ✅ | ✅ | ? |
ChatGLM2 | ✅ | ? | ? | ✅ | ✅ | ✅ | ? |
ChatGLM3 | ✅ | ? | ? | ✅ | ✅ | ✅ | ? |
Floraison | ✅ | ✅ | ? | ✅ | ✅ | ✅ | ? |
GPT-2/GPT-3 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
OPTER | ✅ | ✅ | ? | ✅ | ✅ | ✅ | ? |
Gemme | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Yuan2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ? |
La pré-formation, le réglage fin (y compris les technologies SFT et PEFT), l'alignement et la quantification des grands modèles ont pris en charge les séries LLaMA, Baichuan, Bloom, ChatGLM, Mistral, OPT et Qwen, ainsi que le pré-modèle [LLM] La liste des supports de formation, de réglage fin, d’alignement et de quantification est la suivante :
Modèle | Pré-entraînement | SFT | LoRA | Masque Flash | Réglage du préfixe | DPO/SimPO/ORPO | RLHF | Quantification |
---|---|---|---|---|---|---|---|---|
Lama | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ? | ? |
Mixtral | ✅ | ✅ | ✅ | ? | ? | ✅ | ? | ? |
Mistral | ✅ | ✅ | ✅ | ? | ✅ | ✅ | ? | ? |
Baichuan/Baichuan2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ? | ✅ |
ChatGLM-6B | ✅ | ✅ | ✅ | ? | ✅ | ? | ? | ✅ |
ChatGLM2/ChatGLM3 | ✅ | ✅ | ✅ | ? | ✅ | ✅ | ? | ✅ |
Floraison | ✅ | ✅ | ✅ | ? | ✅ | ? | ? | ✅ |
GPT-3 | ✅ | ✅ | ? | ? | ? | ? | ? | ? |
OPTER | ✅ | ✅ | ✅ | ? | ? | ? | ? | ? |
Gemme | ✅ | ✅ | ✅ | ? | ? | ✅ | ? | ? |
Yuan | ✅ | ✅ | ✅ | ? | ? | ✅ | ? | ? |
Le raisonnement sur grand modèle prend déjà en charge les séries LLaMA, Qwen, Mistral, ChatGLM, Bloom et Baichuan, prend en charge le raisonnement Weight Only INT8 et INT4 et prend en charge WAC (poids, activation, Cache KV) pour le raisonnement quantifié INT8 et FP8, [ LLM] La liste de prise en charge de l'inférence de modèle est la suivante :
Prise en charge du nom de modèle/type de quantification | FP16/BF16 | HIVER8 | HIVER4 | INT8-A8W8 | FP8-A8W8 | INT8-A8W8C8 |
---|---|---|---|---|---|---|
LAMA | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen Moe | ✅ | ✅ | ✅ | ? | ? | ? |
Mixtral | ✅ | ✅ | ✅ | ? | ? | ? |
ChatGLM | ✅ | ✅ | ✅ | ? | ? | ? |
Floraison | ✅ | ✅ | ✅ | ? | ? | ? |
Bai Chuan | ✅ | ✅ | ✅ | ✅ | ✅ | ? |
python >= 3,8
pagaiepaddle >= 3.0.0b0
Si vous n'avez pas installé PaddlePaddle, veuillez vous référer au site officiel de PaddlePaddle pour l'installer.
pip install --upgrade paddlenlp==3.0.0b2
Ou vous pouvez installer le dernier code de branche de développement via la commande suivante :
pip install --pre --upgrade paddlenlp -f https://www.paddlepaddle.org.cn/whl/paddlenlp.html
Pour des didacticiels plus détaillés sur l’installation de PaddlePaddle et PaddleNLP, veuillez consulter Installation.
PaddleNLP fournit une API automatique pratique et facile à utiliser qui peut charger rapidement des modèles et des tokenizers. Voici un exemple de génération de texte utilisant le modèle Qwen/Qwen2-0.5B
:
>>> depuis 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("Bonjour ! Veuillez vous présenter.", return_tensors="pd")>>> sorties = model.generate(**input_features, max_length=128)>>> print(tokenizer.batch_decode(outputs[0], skip_special_tokens=True)) ['Je suis un modèle de langage d'IA. Je peux répondre à diverses questions, notamment : la météo, l'actualité, l'histoire, la culture, la science, l'éducation, le divertissement, etc. Y a-t-il quelque chose que vous devez savoir ? ']
git clone https://github.com/PaddlePaddle/PaddleNLP.git && cd PaddleNLP # Si vous avez cloné ou téléchargé PaddleNLP, vous pouvez ignorer 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/padaddlernlp/models/transformers/llama/data/llama_openwebtext_100k.idxcd .. # changer le dossier en 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 # Si vous avez cloné ou téléchargé PaddleNLP, vous pouvez ignorer mkdir -p llm/data && cd llm/data wget https://bj.bcebos.com/padaddlenlp/datasets/examples/AdvertiseGen.tar.gz && tar -zxvf AdvertiseGen.tar.gzcd .. # changer le dossier en PaddleNLP/llmpython -u -m paddle.distributed.launch - -gpus "0,1,2,3,4,5,6,7" run_finetune.py ./config/llama/sft_argument.json
Pour des étapes plus complètes du processus de grand modèle, veuillez vous référer à l'introduction du kit Flying Paddle Large Model.
Pour plus de contenu PaddleNLP, veuillez vous référer à :
Bibliothèque de modèles sélectionnés, comprenant l'utilisation complète du processus de bout en bout de modèles pré-entraînés de haute qualité.
Plusieurs exemples de scénarios pour apprendre à utiliser PaddleNLP pour résoudre divers problèmes techniques de NLP, y compris la technologie de base, les applications système et les applications étendues.
Tutoriel interactif pour apprendre rapidement PaddleNLP sur la plateforme informatique gratuite AI Studio.
Scannez le code QR sur WeChat et remplissez le questionnaire pour rejoindre le groupe de communication et avoir des discussions approfondies avec de nombreux développeurs de la communauté et équipes officielles.
Si PaddleNLP est utile à votre recherche, n'hésitez pas à le citer
@misc{=paddlenlp,title={PaddleNLP : une bibliothèque PNL facile à utiliser et hautes performances},author={Contributeurs PaddleNLP},howpublished = {url{https://github.com/PaddlePaddle/PaddleNLP}}, année={2021}}
Nous avons appris de l'excellente conception de Transformers? de Hugging Face sur l'utilisation de modèles pré-entraînés et souhaitons exprimer notre gratitude aux auteurs de Hugging Face et à leur communauté open source.
PaddleNLP suit la licence open source Apache-2.0.