XTuner - Un Kit de Herramientas Eficiente para el Ajuste Fino de Modelos de Lenguaje Grandes
Resumen del Proyecto
XTuner es un kit de herramientas eficiente, flexible y con todas las funciones para el ajuste fino de modelos de lenguaje grandes, desarrollado por el equipo de InternLM. Este proyecto tiene como objetivo proporcionar a los usuarios una herramienta fácil de usar y potente para ajustar finamente varios modelos de lenguaje grandes, incluidos los modelos principales como InternLM, Llama, Qwen, ChatGLM, Baichuan, etc.
Características Principales
1. Eficiencia (Efficient)
- Bajos Requisitos de Recursos: Admite el ajuste fino de modelos de lenguaje grandes de 7B parámetros en una sola GPU de 8GB.
- Escalado Multi-Nodo: Admite el ajuste fino multi-nodo de más de 70B parámetros.
- Optimización del Rendimiento: Programa automáticamente operadores de alto rendimiento, como FlashAttention y kernels de Triton, para mejorar el rendimiento del entrenamiento.
- Integración de DeepSpeed: Compatible con el framework DeepSpeed, lo que facilita el uso de varias técnicas de optimización ZeRO.
2. Flexibilidad (Flexible)
- Soporte Multi-Modelo: Admite varios modelos de lenguaje grandes.
- Serie InternLM (InternLM, InternLM2, InternLM2.5, InternLM3)
- Serie Meta Llama (Llama 2, Llama 3)
- Otros modelos principales: Mixtral-8x7B, ChatGLM, Qwen, Baichuan, Gemma, DeepSeek, etc.
- Soporte Multi-Modal: Admite modelos de lenguaje visual (VLM), especialmente modelos basados en la arquitectura LLaVA.
- Pipeline de Datos: Pipeline de datos cuidadosamente diseñado que admite conjuntos de datos en varios formatos.
- Múltiples Algoritmos de Entrenamiento: Admite múltiples estrategias de entrenamiento como QLoRA, LoRA, ajuste fino de parámetros completos, etc.
3. Funcionalidad Completa (Full-featured)
- Múltiples Modos de Entrenamiento:
- Pre-entrenamiento Continuo
- Ajuste Fino de Instrucciones
- Ajuste Fino de Agentes
- Funcionalidad de Diálogo: Admite el diálogo con modelos grandes utilizando plantillas predefinidas.
- Integración Perfecta: Los modelos de salida se pueden integrar sin problemas con el kit de herramientas de implementación y servicio (LMDeploy) y el kit de herramientas de evaluación a gran escala (OpenCompass, VLMEvalKit).
Modelos Soportados
XTuner admite una amplia gama de familias de modelos, incluyendo, pero no limitado a:
Serie de Modelos |
Modelo Específico |
Características |
InternLM |
InternLM, InternLM2, InternLM2.5, InternLM3 |
Optimizado para chino, excelente rendimiento |
Llama |
Llama 2, Llama 3 |
Modelo de código abierto de Meta |
Qwen |
Qwen 1.5, etc. |
Modelo de código abierto de Alibaba |
ChatGLM |
ChatGLM3-6B, etc. |
Modelo de código abierto de la Universidad Tsinghua |
Baichuan |
Baichuan2, etc. |
Modelo de código abierto de Baichuan Intelligence |
Mixtral |
Mixtral 8x7B |
Modelo de expertos mixtos de Mistral AI |
Otros |
Gemma, DeepSeek, MiniCPM, etc. |
Modelos de código abierto de varias empresas |
Capacidades Multi-Modales
XTuner se destaca en el campo multi-modal, especialmente en modelos de lenguaje visual:
- Soporte de Arquitectura LLaVA: Soporte completo para el pre-entrenamiento y ajuste fino de la arquitectura LLaVA-v1.5.
- Excelente Rendimiento: El modelo LLaVA-InternLM2-20B tiene un rendimiento sobresaliente.
- Múltiples Combinaciones: Admite múltiples combinaciones de codificadores visuales y modelos de lenguaje.
- Últimos Lanzamientos:
- LLaVA-Llama-3-8B
- LLaVA-Llama-3-8B-v1.1
- LLaVA-Phi-3-mini
Instalación y Uso
Preparación del Entorno
# Crear un entorno virtual Python 3.10
conda create --name xtuner-env python=3.10 -y
conda activate xtuner-env
Métodos de Instalación
Método 1: Instalar a través de pip
pip install -U xtuner
Método 2: Integrar DeepSpeed
pip install -U 'xtuner[deepspeed]'
Método 3: Instalar desde el código fuente
git clone https://github.com/InternLM/xtuner.git
cd xtuner
pip install -e '.[all]'
Inicio Rápido
1. Preparar el Archivo de Configuración
# Ver todas las configuraciones disponibles
xtuner list-cfg
# Copiar el archivo de configuración para personalizarlo
xtuner copy-cfg ${CONFIG_NAME} ${SAVE_PATH}
2. Comenzar el Ajuste Fino
# Ajuste fino en una sola GPU
xtuner train internlm2_5_chat_7b_qlora_oasst1_e3 --deepspeed deepspeed_zero2
# Ajuste fino en múltiples GPU
NPROC_PER_NODE=${GPU_NUM} xtuner train internlm2_5_chat_7b_qlora_oasst1_e3 --deepspeed deepspeed_zero2
3. Conversión de Modelos
# Convertir el modelo PTH al formato Hugging Face
xtuner convert pth_to_hf ${CONFIG_NAME_OR_PATH} ${PTH} ${SAVE_PATH}
4. Prueba de Diálogo
# Dialogar con el modelo ajustado finamente
xtuner chat ${NAME_OR_PATH_TO_LLM} --adapter ${NAME_OR_PATH_TO_ADAPTER}
Funciones Avanzadas
1. Paralelismo de Secuencia
- Admite el entrenamiento de secuencias extremadamente largas.
- Método de entrenamiento eficiente y escalable.
- Adecuado para escenarios que requieren el procesamiento de texto largo.
2. Entrenamiento DPO/ORPO
- Admite la Optimización Directa de Preferencias (DPO).
- Admite la Optimización de Preferencias de Odds Ratio (ORPO).
- Admite el entrenamiento del Modelo de Recompensa.
- Admite datos empaquetados y paralelismo de secuencia.
3. Optimización del Razonamiento Matemático
- Admite OREAL (un nuevo método de aprendizaje por refuerzo).
- Optimizado específicamente para tareas de razonamiento matemático.
Rendimiento
Velocidad de Entrenamiento
- Llama2 7B: Tiene una excelente velocidad de entrenamiento en una sola GPU.
- Llama2 70B: Admite el entrenamiento paralelo en múltiples GPU, con un excelente rendimiento de velocidad.
- DeepSeek V2: Aumenta la velocidad de entrenamiento en 2 veces en comparación con la versión anterior.
Eficiencia de Memoria
- Bajos Requisitos de Memoria: 20GB de memoria GPU son suficientes para el ajuste fino de QLoRA.
- Ajuste Fino de Parámetros Completos: 4x80GB GPU pueden realizar el ajuste fino de parámetros completos.
- Optimización de Memoria: Reduce significativamente el uso de memoria a través de varias técnicas de optimización.
Integración del Ecosistema
XTuner, como una parte importante del ecosistema InternLM, está estrechamente integrado con otras herramientas:
- LMDeploy: Kit de herramientas de implementación y servicio de modelos.
- OpenCompass: Kit de herramientas de evaluación a gran escala.
- VLMEvalKit: Kit de herramientas de evaluación de modelos de lenguaje visual.
- Lagent: Framework de agentes.
- AgentLego: Biblioteca de API de herramientas multifuncionales.
Escenarios de Aplicación
1. Investigación Académica
- Investigación sobre el ajuste fino de modelos de lenguaje grandes.
- Desarrollo de modelos multi-modales.
- Verificación de nuevos algoritmos.
2. Aplicaciones Industriales
- Chatbots personalizados.
- Desarrollo de modelos específicos de dominio.
- Asistentes de IA de nivel empresarial.
3. Educación y Formación
- Enseñanza de cursos de IA.
- Configuración de entornos experimentales.
- Formación de habilidades.
Conclusión
XTuner es un kit de herramientas de ajuste fino de modelos de lenguaje grandes con todas las funciones y un rendimiento excelente. No solo admite una amplia gama de modelos y algoritmos de entrenamiento, sino que también proporciona una cadena de herramientas completa, desde la preparación de datos hasta la implementación del modelo, brindando a los usuarios una solución integral. Ya sea para investigación académica o aplicaciones industriales, XTuner puede satisfacer las necesidades en diferentes escenarios y es la opción ideal para realizar el ajuste fino de modelos de lenguaje grandes.