Chinês simplificado | Inglês?
PaddleNLP é um kit de desenvolvimento de modelo de linguagem grande (LLM) baseado na estrutura de aprendizado profundo Paddle, que suporta treinamento eficiente de modelos grandes, compactação sem perdas e inferência de alto desempenho em uma variedade de hardware. PaddleNLP é fácil de usar e tem o melhor desempenho , e está comprometido em ajudar os desenvolvedores a implementar aplicações eficientes de nível industrial de grandes modelos.
2024.08.08 "PaddleNLP 3.0, uma ferramenta poderosa para o desenvolvimento de modelos de linguagem grande em nível industrial, é lançada" , com todo o processo de treinamento, pressão e push, e cobertura completa dos modelos convencionais. Modelos grandes são automaticamente paralelizados, e todo o processo de treinamento e envio de centenas de bilhões de modelos está disponível imediatamente. Fornece soluções de ajuste fino e alinhamento de alto desempenho e nível industrial, inferência de compactação líder e adaptação de vários hardwares. Abrangendo cenários de aplicação como assistentes inteligentes de nível industrial, criação de conteúdo, perguntas e respostas de conhecimento e extração de informações importantes. Horário de transmissão ao vivo: 22 de agosto (quinta-feira) às 19h. Link de inscrição: https://www.wjx.top/vm/Y2f7FFY.aspx?udsid=143844
2024.06.27 PaddleNLP v3.0 Beta : adote modelos grandes e experimente uma experiência totalmente atualizada. Unificar o grande conjunto de modelos para obter acesso completo ao processo de chips de computação domésticos; oferecer suporte total a processos de aplicativos de nível industrial de grandes modelos, como configuração paralela 4D de remo voador, estratégias eficientes de ajuste fino, algoritmos de alinhamento eficientes e raciocínio próprio de alto desempenho; -desenvolveu algoritmo RsLoRA + extremamente convergente, o mecanismo de armazenamento automático de expansão e contração Unified Checkpoint e o FastFFN e FusedQKV com suporte universal ajudam o treinamento e promoção de grandes modelos a continuarem a suportar atualizações e fornecer soluções eficientes;
2024.04.24 PaddleNLP v2.8 : O algoritmo RsLoRA + autodesenvolvido com convergência extrema melhora muito a velocidade de convergência do treinamento PEFT e o efeito de treinamento introduz aceleração de geração de alto desempenho para o algoritmo RLHF PPO, quebrando o gargalo de velocidade de geração no treinamento PPO; O desempenho do treinamento PPO está significativamente à frente. Suporta universalmente vários métodos de otimização de desempenho de treinamento de modelos grandes, como FastFFN e FusedQKV, tornando o treinamento de modelos grandes mais rápido e estável.
Ele suporta treinamento e inferência de modelo de compreensão de linguagem natural e modelo grande para GPU NVIDIA, Kunlun XPU, Shengteng NPU, Suiyuan GCU, Haiguang DCU e outros hardwares. A interface do conjunto suporta troca rápida de hardware, reduzindo significativamente os custos de P&D de troca de hardware. Modelos de compreensão de linguagem natural atualmente suportados: Lista de modelos de compreensão de linguagem natural multi-hardware
Suporta treinamento 4D de alto desempenho de estratégias paralelas de dados puros, estratégias paralelas de dados de fatiamento de parâmetros de grupo, estratégias paralelas de modelo de tensor e estratégias paralelas de modelo de pipeline. O formato suporta expansão dinâmica e treinamento de contração na distribuição de parâmetros do modelo, reduzindo os custos de migração causados pela troca de hardware.
O algoritmo de ajuste fino combina profundamente o fluxo de dados de preenchimento zero e o operador de alto desempenho FlashMask para reduzir o preenchimento e cálculo de dados de treinamento inválidos e melhorar significativamente o rendimento do treinamento de ajuste fino.
O módulo de raciocínio de alto desempenho do grande conjunto de modelos possui inserção dinâmica integrada e estratégias de fusão de operadores de link completo, o que acelera bastante o raciocínio paralelo. Os detalhes de implementação subjacentes são encapsulados para obter recursos de raciocínio paralelo de alto desempenho prontos para uso.
Os parâmetros do modelo têm suporte para as séries LLaMA, série Baichuan, série Bloom, série ChatGLM, série Gemma, série Mistral, série OPT e série Qwen. A lista detalhada de suporte de parâmetros do modelo [LLM] é a seguinte:
Série de modelos | Nome do modelo |
---|---|
LAMA | facebook/lhama-7b, facebook/lhama-13b, facebook/lhama-30b, facebook/lhama-65b |
Lhama2 | meta-lhama/Lhama-2-7b, meta-lhama/Lhama-2-7b-chat, meta-lhama/Lhama-2-13b, meta-lhama/Lhama-2-13b-chat, metal-lhama/Lhama- 2-70b, metal-lhama/Llama-2-70b-chat |
LLama3 | meta-lhama/Meta-Llama-3-8B, meta-lhama/Meta-Llama-3-8B-Instruir, meta-lhama/Meta-Llama-3-70B, meta-lhama/Meta-Llama-3-70B- Instruir |
Lhama3.1 | meta-lhama/Meta-Llama-3.1-8B, meta-lhama/Meta-Llama-3.1-8B-Instruir, meta-lhama/Meta-Llama-3.1-70B, meta-lhama/Meta-Llama-3.1-70B- Instruir, meta-lhama/Meta-Llama-3.1-405B, meta-lhama/Meta-Llama-3.1-405B-Instruir, meta-lhama/Llama-Guard-3-8B |
Lhama3.2 | meta-lhama/Lhama-3.2-1B, meta-lhama/Lhama-3.2-1B-Instruir, meta-lhama/Lhama-3.2-3B, meta-lhama/Lhama-3.2-3B-Instruir, meta-lhama/Lhama- Guarda-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 |
Florescer | 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 |
Bate-papoGLM | THUDM/chatglm-6b, THUDM/chatglm-6b-v1.1 |
Bate-papoGLM2 | THUDM/chatglm2-6b |
Bate-papoGLM3 | THUDM/chatglm3-6b |
Gema | 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 |
OPTAR | 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-Bate-papo, Qwen/Qwen1.5-1.8B, Qwen/Qwen1.5-1.8B-Bate-papo, Qwen/Qwen1.5-4B, Qwen/ Qwen1.5-4B-Bate-papo, Qwen/Qwen1.5-7B, Qwen/Qwen1.5-7B-Bate-papo, Qwen/Qwen1.5-14B, Qwen/Qwen1.5-14B-Bate-papo, Qwen/Qwen1.5-32B, Qwen/Qwen1.5-32B-Bate-papo, Qwen/Qwen1.5-72B, Qwen/Qwen1.5- 72B-Bate-papo, Qwen/Qwen1.5-110B, Qwen/Qwen1.5-110B-Bate-papo, Qwen/Qwen1.5-MoE-A2.7B, Qwen/Qwen1.5-MoE-A2.7B-Chat |
Qwen2 | Qwen/Qwen2-0.5B, Qwen/Qwen2-0.5B-Instruir, Qwen/Qwen2-1.5B, Qwen/Qwen2-1.5B-Instruir, Qwen/Qwen2-7B, Qwen/Qwen2-7B-Instruir, Qwen/Qwen2- 72B, Qwen/Qwen2-72B-Instruir, Qwen/Qwen2-57B-A14B, Qwen/Qwen2-57B-A14B-Instruir |
Qwen2-Matemática | 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-Instrução, Qwen/Qwen2-Math-RM-72B |
Qwen2.5 | Qwen/Qwen2.5-0.5B, Qwen/Qwen2.5-0.5B-Instruir, Qwen/Qwen2.5-1.5B, Qwen/Qwen2.5-1.5B-Instruir, Qwen/Qwen2.5-3B, Qwen/ Qwen2.5-3B-Instruir, Qwen/Qwen2.5-7B, Qwen/Qwen2.5-7B-Instruir, Qwen/Qwen2.5-14B, Qwen/Qwen2.5-14B-Instruir, Qwen/Qwen2.5-32B, Qwen/Qwen2.5-32B-Instruir, Qwen/Qwen2.5-72B, Qwen/Qwen2.5- 72B-Instrução |
Qwen2.5-Matemática | Qwen/Qwen2.5-Matemática-1.5B, Qwen/Qwen2.5-Matemática-1.5B-Instruir, Qwen/Qwen2.5-Matemática-7B, Qwen/Qwen2.5-Matemática-7B-Instruir, Qwen/Qwen2. 5-Matemática-72B, Qwen/Qwen2.5-Math-72B-Instruir, Qwen/Qwen2.5-Matemática-RM-72B |
Codificador Qwen2.5 | Qwen/Qwen2.5-Coder-1.5B, Qwen/Qwen2.5-Coder-1.5B-Instruir, Qwen/Qwen2.5-Coder-7B, Qwen/Qwen2.5-Coder-7B-Instruir |
Yuan2 | IEITYuan/Yuan2-2B, IEITYuan/Yuan2-51B, IEITYuan/Yuan2-102B |
O paralelismo 4D e a otimização do operador têm suporte para as séries LLaMA, série Baichuan, série Bloom, série ChatGLM, série Gemma, série Mistral, série OPT e série Qwen. O paralelismo 4D do modelo [LLM] e a lista de suporte de operador são os seguintes:
Suporte para nome de modelo/capacidade paralela | paralelismo de dados | Paralelismo do modelo tensor | Paralelismo de fragmentação de parâmetros | Paralelismo de pipeline | |||
---|---|---|---|---|---|---|---|
Habilidades básicas | paralelismo de sequência | estágio1 | estágio2 | estágio3 | |||
Lhama | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen1.5 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Mixtral (moe) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ? |
Mistral | ✅ | ✅ | ? | ✅ | ✅ | ✅ | ? |
Baichuan | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Baichuan2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Bate-papoGLM | ✅ | ✅ | ? | ✅ | ✅ | ✅ | ? |
Bate-papoGLM2 | ✅ | ? | ? | ✅ | ✅ | ✅ | ? |
Bate-papoGLM3 | ✅ | ? | ? | ✅ | ✅ | ✅ | ? |
Florescer | ✅ | ✅ | ? | ✅ | ✅ | ✅ | ? |
GPT-2/GPT-3 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
OPTAR | ✅ | ✅ | ? | ✅ | ✅ | ✅ | ? |
Gema | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Yuan2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ? |
Pré-treinamento de modelos grandes, ajuste fino (incluindo tecnologia SFT, PEFT), alinhamento e quantificação têm suportado séries LLaMA, série Baichuan, série Bloom, série ChatGLM, série Mistral, série OPT e série Qwen, modelo [LLM] pré- a lista de suporte de treinamento, ajuste fino, alinhamento e quantização é a seguinte:
Modelo | Pré-treino | OFVM | LoRA | Máscara Flash | Ajuste de prefixo | DPO/SimPO/ORPO | RLHF | Quantização |
---|---|---|---|---|---|---|---|---|
Lhama | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ? | ? |
Mixtral | ✅ | ✅ | ✅ | ? | ? | ✅ | ? | ? |
Mistral | ✅ | ✅ | ✅ | ? | ✅ | ✅ | ? | ? |
Baichuan/Baichuan2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ? | ✅ |
Bate-papoGLM-6B | ✅ | ✅ | ✅ | ? | ✅ | ? | ? | ✅ |
Bate-papoGLM2/ChatGLM3 | ✅ | ✅ | ✅ | ? | ✅ | ✅ | ? | ✅ |
Florescer | ✅ | ✅ | ✅ | ? | ✅ | ? | ? | ✅ |
GPT-3 | ✅ | ✅ | ? | ? | ? | ? | ? | ? |
OPTAR | ✅ | ✅ | ✅ | ? | ? | ? | ? | ? |
Gema | ✅ | ✅ | ✅ | ? | ? | ✅ | ? | ? |
Yuan | ✅ | ✅ | ✅ | ? | ? | ✅ | ? | ? |
O raciocínio de modelo grande já suporta série LLaMA, série Qwen, série Mistral, série ChatGLM, série Bloom e série Baichuan, suporta raciocínio de peso somente INT8 e INT4 e suporta WAC (peso, ativação, Cache KV) para raciocínio quantificado INT8 e FP8, [ LLM] A lista de suporte de inferência de modelo é a seguinte:
Suporte para nome de modelo/tipo de quantização | FP16/BF16 | WINT8 | WINT4 | INT8-A8W8 | FP8-A8W8 | INT8-A8W8C8 |
---|---|---|---|---|---|---|
LAMA | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen-Moe | ✅ | ✅ | ✅ | ? | ? | ? |
Mixtral | ✅ | ✅ | ✅ | ? | ? | ? |
Bate-papoGLM | ✅ | ✅ | ✅ | ? | ? | ? |
Florescer | ✅ | ✅ | ✅ | ? | ? | ? |
Bai Chuan | ✅ | ✅ | ✅ | ✅ | ✅ | ? |
píton >= 3.8
remo >= 3.0.0b0
Se você não instalou o PaddlePaddle, consulte o site oficial do PaddlePaddle para instalá-lo.
instalação do pip --upgrade paddlenlp==3.0.0b2
Ou você pode instalar o código de ramificação de desenvolvimento mais recente por meio do seguinte comando:
pip install --pre --upgrade paddlenlp -f https://www.paddlepaddle.org.cn/whl/paddlenlp.html
Para tutoriais mais detalhados sobre a instalação do PaddlePaddle e do PaddleNLP, consulte Instalação.
PaddleNLP fornece uma API automática conveniente e fácil de usar que pode carregar modelos e tokenizadores rapidamente. Aqui está um exemplo de geração de texto usando o modelo Qwen/Qwen2-0.5B
:
>>> de paddlenlp.transformers importar AutoTokenizer, AutoModelForCausalLM >>> tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2-0.5B")>>> model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2-0.5B", dtype=" float16")>>> input_features = tokenizer("Olá! Por favor, apresente-se.", return_tensors="pd")>>> saídas = model.generate(**input_features, max_length=128)>>> print(tokenizer.batch_decode(outputs[0], skip_special_tokens=True)) ['Sou um modelo de linguagem de IA. Posso responder a várias perguntas, incluindo, mas não se limitando a: clima, notícias, história, cultura, ciência, educação, entretenimento, etc. Há algo que você precisa saber? ']
git clone https://github.com/PaddlePaddle/PaddleNLP.git && cd PaddleNLP # Se você clonou ou baixou o PaddleNLP, pode pular 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/padaddlenlp/models/transformers/llama/data/llama_openwebtext_100k.idxcd .. # mude a pasta para 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 # Se você clonou ou baixou o PaddleNLP, pode pular mkdir -p llm/data && cd llm/data wget https://bj.bcebos.com/padaddlenlp/datasets/examples/AdvertiseGen.tar.gz && tar -zxvf AdvertiseGen.tar.gzcd .. # mude a pasta para PaddleNLP/llmpython -u -m paddle.distributed.launch - -gpus "0,1,2,3,4,5,6,7" run_finetune.py ./config/llama/sft_argument.json
Para etapas mais completas do processo de modelo grande, consulte a introdução do kit de modelo grande Flying Paddle.
Para obter mais conteúdo PaddleNLP, consulte:
Biblioteca de modelos selecionados, incluindo uso completo do processo de modelos pré-treinados de alta qualidade.
Vários exemplos de cenários para aprender como usar o PaddleNLP para resolver vários problemas técnicos de PNL, incluindo tecnologia básica, aplicativos de sistema e aplicativos expandidos.
Tutorial interativo para aprender PaddleNLP rapidamente na plataforma de computação gratuita AI Studio.
Digitalize o código QR no WeChat e preencha o questionário para ingressar no grupo de comunicação e ter discussões aprofundadas com muitos desenvolvedores da comunidade e equipes oficiais.
Se PaddleNLP for útil para sua pesquisa, sinta-se à vontade para citá-lo
@misc{=paddlenlp,title={PaddleNLP: uma biblioteca de PNL fácil de usar e de alto desempenho},author={PaddleNLP Contributors},howpublished = {url{https://github.com/PaddlePaddle/PaddleNLP}}, ano={2021}}
Aprendemos com o excelente design do Hugging Face Transformers? sobre o uso de modelos pré-treinados e gostaríamos de expressar nossa gratidão aos autores de Hugging Face e sua comunidade de código aberto.
PaddleNLP segue a licença de código aberto Apache-2.0.