¿Chino simplificado | Inglés?
PaddleNLP es un kit de desarrollo de modelos de lenguaje grande (LLM) basado en el marco de aprendizaje profundo Paddle, que admite entrenamiento eficiente de modelos grandes, compresión sin pérdidas e inferencia de alto rendimiento en una variedad de hardware. PaddleNLP es fácil de usar y tiene el máximo rendimiento , y está comprometido a ayudar a los desarrolladores a implementar aplicaciones eficientes a nivel industrial de modelos grandes.
2024.08.08 "Se lanza PaddleNLP 3.0, una poderosa herramienta para el desarrollo de modelos de lenguajes grandes a nivel industrial" , con todo el proceso de capacitación, presión y empuje, y una cobertura completa de los modelos convencionales. Los modelos grandes se paralelizan automáticamente y todo el proceso de entrenamiento y desarrollo de cientos de miles de millones de modelos está disponible de inmediato. Proporciona soluciones de alineación y ajuste fino de alto rendimiento de nivel industrial, inferencia de compresión líder y adaptación de hardware múltiple. Cubriendo escenarios de aplicaciones como asistentes inteligentes de nivel industrial, creación de contenido, preguntas y respuestas sobre conocimientos y extracción de información clave. Hora de transmisión en vivo: 22 de agosto (jueves) 19:00 horas. Enlace de registro: https://www.wjx.top/vm/Y2f7FFY.aspx?udsid=143844
2024.06.27 PaddleNLP v3.0 Beta : adopte modelos grandes y experimente una experiencia completamente mejorada. Unifique el conjunto de modelos grandes para lograr acceso completo a los chips informáticos domésticos; admita completamente procesos de aplicaciones de nivel industrial de modelos grandes, como la configuración paralela 4D de paletas voladoras, estrategias eficientes de ajuste fino, algoritmos de alineación eficientes y razonamiento automático de alto rendimiento; -Algoritmo RsLoRA+ desarrollado extremadamente convergente, el mecanismo de almacenamiento de expansión y contracción automática Unified Checkpoint y FastFFN y FusedQKV con soporte universal ayudan a la capacitación y promoción de modelos grandes y continúan admitiendo actualizaciones y brindando soluciones eficientes;
2024.04.24 PaddleNLP v2.8 : El algoritmo RsLoRA + de desarrollo propio con convergencia extrema mejora en gran medida la velocidad de convergencia del entrenamiento PEFT y el efecto del entrenamiento, introduce aceleración de generación de alto rendimiento en el algoritmo RLHF PPO, rompiendo el cuello de botella de la velocidad de generación en el entrenamiento PPO; El rendimiento de la formación PPO está significativamente por delante. Admite universalmente múltiples métodos de optimización del rendimiento del entrenamiento de modelos grandes, como FastFFN y FusedQKV, lo que hace que el entrenamiento de modelos grandes sea más rápido y estable.
Admite entrenamiento e inferencia de modelos grandes y de comprensión del lenguaje natural para NVIDIA GPU, Kunlun XPU, Shengteng NPU, Suiyuan GCU, Haiguang DCU y otro hardware. La interfaz de la suite admite una rápida conmutación de hardware, lo que reduce significativamente los costos de I+D de conmutación de hardware. Modelos de comprensión del lenguaje natural actualmente admitidos: Lista de modelos de comprensión del lenguaje natural multihardware
Admite el entrenamiento de alto rendimiento 4D de estrategias paralelas de datos puros, estrategias paralelas de datos de división de parámetros de grupo, estrategias paralelas de modelos tensoriales y estrategias paralelas de modelos de canalización. Admite la configuración de estrategias distribuidas para reducir los costos de uso causados por las combinaciones complejas distribuidas de Unified Checkpoint. El formato admite el entrenamiento dinámico de expansión y contracción en la distribución de parámetros del modelo, lo que reduce los costos de migración causados por el cambio de hardware.
El algoritmo de ajuste fino combina en profundidad el flujo de datos de relleno cero y el operador de alto rendimiento FlashMask para reducir el llenado y el cálculo de datos de entrenamiento no válidos y mejorar en gran medida el rendimiento del entrenamiento de ajuste fino.
El módulo de razonamiento de alto rendimiento del conjunto de modelos grandes tiene estrategias integradas de inserción dinámica y fusión de operadores de enlace completo, lo que acelera enormemente el razonamiento paralelo. Los detalles de implementación subyacentes están encapsulados para lograr capacidades de razonamiento paralelo de alto rendimiento listas para usar.
Los parámetros del modelo han admitido la serie LLaMA, la serie Baichuan, la serie Bloom, la serie ChatGLM, la serie Gemma, la serie Mistral, la serie OPT y la serie Qwen. La lista detallada de compatibilidad de parámetros del modelo [LLM] es la siguiente:
Serie de modelos | Nombre del modelo |
---|---|
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- Instruir |
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- Instruye, meta-llama/Meta-Llama-3.1-405B, meta-llama/Meta-Llama-3.1-405B-Instruir, meta-llama/Llama-Guard-3-8B |
llama3.2 | meta-llama/Llama-3.2-1B, meta-llama/Llama-3.2-1B-Instruir, meta-llama/Llama-3.2-3B, meta-llama/Llama-3.2-3B-Instruir, meta-llama/Llama- Guardia-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 |
Floración | 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, ciencia grande/bloomz-7b1-mt, ciencia grande/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 |
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-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-Instrucción, Qwen/Qwen2-1.5B, Qwen/Qwen2-1.5B-Instrucción, Qwen/Qwen2-7B, Qwen/Qwen2-7B-Instrucción, Qwen/Qwen2- 72B, Qwen/Qwen2-72B-Instrucción, Qwen/Qwen2-57B-A14B, Qwen/Qwen2-57B-A14B-Instrucción |
Qwen2-Matemáticas | 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-Instrucción, Qwen/Qwen2.5-1.5B, Qwen/Qwen2.5-1.5B-Instrucción, Qwen/Qwen2.5-3B, Qwen/ Qwen2.5-3B-Instrucción, Qwen/Qwen2.5-7B, Qwen/Qwen2.5-7B-Instrucción, Qwen/Qwen2.5-14B, Qwen/Qwen2.5-14B-Instrucción, Qwen/Qwen2.5-32B, Qwen/Qwen2.5-32B-Instrucción, Qwen/Qwen2.5-72B, Qwen/Qwen2.5- 72B-Instruir |
Qwen2.5-Matemáticas | 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-Instrucción, Qwen/Qwen2.5-Matemáticas-RM-72B |
Codificador Qwen2.5 | Qwen/Qwen2.5-Coder-1.5B, Qwen/Qwen2.5-Coder-1.5B-Instrucción, Qwen/Qwen2.5-Coder-7B, Qwen/Qwen2.5-Coder-7B-Instrucción |
Yuan2 | IEITYuan/Yuan2-2B, IEITYuan/Yuan2-51B, IEITYuan/Yuan2-102B |
El paralelismo 4D y la optimización del operador han admitido la serie LLaMA, la serie Baichuan, la serie Bloom, la serie ChatGLM, la serie Gemma, la serie Mistral, la serie OPT y la serie Qwen. La lista de soporte de operador y paralelismo 4D del modelo [LLM] es la siguiente:
Nombre del modelo/soporte de capacidad paralela | paralelismo de datos | Paralelismo del modelo tensorial | Paralelismo de fragmentación de parámetros | Paralelismo de tuberías | |||
---|---|---|---|---|---|---|---|
Habilidades básicas | paralelismo de secuencia | etapa1 | etapa2 | etapa 3 | |||
Llama | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen1.5 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Mixtral(moe) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ? |
Mistral | ✅ | ✅ | ? | ✅ | ✅ | ✅ | ? |
Baichuan | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Baichuan2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ChatGLM | ✅ | ✅ | ? | ✅ | ✅ | ✅ | ? |
ChatGLM2 | ✅ | ? | ? | ✅ | ✅ | ✅ | ? |
ChatGLM3 | ✅ | ? | ? | ✅ | ✅ | ✅ | ? |
Floración | ✅ | ✅ | ? | ✅ | ✅ | ✅ | ? |
GPT-2/GPT-3 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
OPTAR | ✅ | ✅ | ? | ✅ | ✅ | ✅ | ? |
Gema | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Yuan2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ? |
El preentrenamiento, el ajuste fino (incluida la tecnología SFT, PEFT), la alineación y la cuantificación de modelos grandes han admitido las series LLaMA, Baichuan, Bloom, ChatGLM, Mistral, OPT y Qwen, y el pre-modelo [LLM]. La lista de soporte de entrenamiento, ajuste, alineación y cuantificación es la siguiente:
Modelo | Preentrenamiento | OFV | lora | Máscara Destello | Ajuste de prefijo | DPO/SimPO/ORPO | RLHF | Cuantización |
---|---|---|---|---|---|---|---|---|
Llama | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ? | ? |
Mixtral | ✅ | ✅ | ✅ | ? | ? | ✅ | ? | ? |
Mistral | ✅ | ✅ | ✅ | ? | ✅ | ✅ | ? | ? |
Baichuan/Baichuan2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ? | ✅ |
ChatGLM-6B | ✅ | ✅ | ✅ | ? | ✅ | ? | ? | ✅ |
ChatGLM2/ChatGLM3 | ✅ | ✅ | ✅ | ? | ✅ | ✅ | ? | ✅ |
Floración | ✅ | ✅ | ✅ | ? | ✅ | ? | ? | ✅ |
GPT-3 | ✅ | ✅ | ? | ? | ? | ? | ? | ? |
OPTAR | ✅ | ✅ | ✅ | ? | ? | ? | ? | ? |
Gema | ✅ | ✅ | ✅ | ? | ? | ✅ | ? | ? |
Yuan | ✅ | ✅ | ✅ | ? | ? | ✅ | ? | ? |
El razonamiento de modelos grandes ya admite las series LLaMA, Qwen, Mistral, ChatGLM, Bloom y Baichuan, admite el razonamiento Weight Only INT8 e INT4 y admite WAC (peso, activación, Cache KV) para el razonamiento cuantificado INT8 y FP8. LLM] La lista de soporte de inferencia de modelos es la siguiente:
Soporte de nombre de modelo/tipo de cuantificación | FP16/BF16 | WINT8 | WINT4 | INT8-A8W8 | FP8-A8W8 | INT8-A8W8C8 |
---|---|---|---|---|---|---|
LLAMA | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Qwen-Moe | ✅ | ✅ | ✅ | ? | ? | ? |
Mixtral | ✅ | ✅ | ✅ | ? | ? | ? |
ChatGLM | ✅ | ✅ | ✅ | ? | ? | ? |
Floración | ✅ | ✅ | ✅ | ? | ? | ? |
Bai Chuan | ✅ | ✅ | ✅ | ✅ | ✅ | ? |
pitón >= 3.8
remopadel >= 3.0.0b0
Si no ha instalado PaddlePaddle, consulte el sitio web oficial de PaddlePaddle para instalarlo.
instalación de pip --actualizar paddlenlp==3.0.0b2
O puede instalar el último código de rama de desarrollo mediante el siguiente comando:
instalación de pip --pre --upgrade paddlenlp -f https://www.paddlepaddle.org.cn/whl/paddlenlp.html
Para obtener tutoriales más detallados sobre la instalación de PaddlePaddle y PaddleNLP, consulte Instalación.
PaddleNLP proporciona una API automática conveniente y fácil de usar que puede cargar rápidamente modelos y tokenizadores. A continuación se muestra un ejemplo de generación de texto utilizando el modelo Qwen/Qwen2-0.5B
:
>>> de paddlenlp.transformers importa AutoTokenizer, AutoModelForCausalLM>>> tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2-0.5B")>>> modelo = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2-0.5B", dtype=" float16")>>> input_features = tokenizer("¡Hola! Preséntate.", return_tensors="pd")>>> salidas = model.generate(**input_features, max_length=128)>>> print(tokenizer.batch_decode(salidas[0], skip_special_tokens=True)) ['Soy un modelo de lenguaje de IA. Puedo responder varias preguntas, que incluyen, entre otras: clima, noticias, historia, cultura, ciencia, educación, entretenimiento, etc. ¿Hay algo que necesites saber? ']
git clone https://github.com/PaddlePaddle/PaddleNLP.git && cd PaddleNLP # Si ha clonado o descargado PaddleNLP, puede omitir 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 .. # cambiar carpeta a 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 ha clonado o descargado PaddleNLP, puede omitir mkdir -p llm/data && cd llm/data wget https://bj.bcebos.com/padaddlenlp/datasets/examples/AdvertiseGen.tar.gz && tar -zxvf AdvertiseGen.tar.gzcd .. # cambiar carpeta a PaddleNLP/llmpython -u -m paddle.distributed.launch - -gpus "0,1,2,3,4,5,6,7" ejecutar_finetune.py ./config/llama/sft_argument.json
Para conocer pasos más completos del proceso del modelo grande, consulte la introducción del kit de modelo grande Flying Paddle.
Para obtener más contenido de PaddleNLP, consulte:
Biblioteca de modelos seleccionada, que incluye el uso de procesos completos de un extremo a otro de modelos previamente entrenados de alta calidad.
Múltiples ejemplos de escenarios para aprender cómo usar PaddleNLP para resolver diversos problemas técnicos de PNL, incluida la tecnología básica, las aplicaciones del sistema y las aplicaciones ampliadas.
Tutorial interactivo para aprender rápidamente PaddleNLP en la plataforma informática gratuita AI Studio.
Escanee el código QR en WeChat y complete el cuestionario para unirse al grupo de comunicación y tener conversaciones en profundidad con muchos desarrolladores de la comunidad y equipos oficiales.
Si PaddleNLP es útil para su investigación, no dude en citarlo.
@misc{=paddlenlp,title={PaddleNLP: una biblioteca de PNL fácil de usar y de alto rendimiento},author={Colaboradores de PaddleNLP},howpublished = {url{https://github.com/PaddlePaddle/PaddleNLP}}, año={2021}}
Hemos aprendido del excelente diseño de Transformers de Hugging Face sobre el uso de modelos previamente entrenados y nos gustaría expresar nuestra gratitud a los autores de Hugging Face y su comunidad de código abierto.
PaddleNLP sigue la licencia de código abierto Apache-2.0.