Framework ligero para el entrenamiento de GPT, entrena un modelo de lenguaje pequeño de 26M parámetros completamente desde cero en 2 horas.
MiniMind - Framework de Entrenamiento GPT Ultraligero
Resumen del Proyecto
MiniMind es un framework de entrenamiento de modelos de lenguaje grandes extremadamente ligero, con una versión mínima de solo 1/7000 del tamaño de GPT-3, que se puede entrenar rápidamente en una GPU personal común. Este proyecto permite entrenar completamente un modelo GPT de parámetros pequeños de 26M desde cero en 2 horas.
Características Principales
🚀 Diseño Ultraligero
- Cantidad de Parámetros Mínima: El modelo más pequeño solo necesita 26M (0.02B) parámetros para lograr una capacidad de conversación fluida.
- Entrenamiento Eficiente: Soporta el entrenamiento completo en 2 horas en una sola tarjeta gráfica 3090.
- Amigable con los Recursos: Se puede ejecutar en una GPU personal común, lo que reduce en gran medida la barrera de entrada al entrenamiento.
🧠 Ecosistema de Entrenamiento Completo
El proyecto abre el código de la estructura minimalista de los modelos grandes, que incluye las siguientes funciones principales:
- Preentrenamiento (Pretraining) - Entrenar un modelo de lenguaje básico desde cero.
- Ajuste Fino Supervisado (SFT) - Ajuste fino supervisado con instrucciones.
- Ajuste Fino LoRA - Técnica de ajuste fino de adaptación de bajo rango.
- Algoritmo DPO - Algoritmo de optimización de preferencias directas.
- Destilación de Modelos - Algoritmo de destilación de conocimiento.
- Extensión MoE - Soporte para modelos de mezcla de expertos.
🎯 Arquitectura Técnica
Soporte del Framework
- PyTorch Nativo: Construido sobre el framework nativo de PyTorch, soporta la aceleración multi-GPU.
- Alta Compatibilidad: Compatible con los frameworks principales como transformers, accelerate, trl, peft.
- Implementación Flexible: Soporta configuraciones de entrenamiento de una sola GPU y multi-GPU (DDP, DeepSpeed).
Características de Entrenamiento
- Reanudación del Entrenamiento: El proceso de entrenamiento soporta la detención y reanudación en cualquier momento.
- Entrenamiento Multi-Tarjeta: Soporta el entrenamiento distribuido DDP, escalable a clústeres multi-máquina y multi-tarjeta.
- Integración de Monitoreo: Soporta el registro y la visualización del proceso de entrenamiento con wandb.
🌟 Expansión Multimodal
MiniMind-V Versión Multimodal Visual
- Comprensión Visual: Extensión a VLM multimodal visual: MiniMind-V.
- Arquitectura Unificada: Basado en el modelo de lenguaje MiniMind como base, agregando capacidad de codificación visual.
📊 Capacidad del Modelo
MiniMind puede realizar diversas tareas, incluyendo la generación de texto, la interacción conversacional y la recuperación de conocimiento. Puede generar texto basado en indicaciones o contexto dados, realizar interacciones conversacionales y recuperar conocimiento sobre diversos temas.
Funciones Principales
- Generación de Texto: Generar contenido de texto coherente basado en indicaciones.
- Interacción Conversacional: Soporta conversaciones de múltiples rondas y preguntas y respuestas.
- Recuperación de Conocimiento: Posee cierta capacidad de preguntas y respuestas sobre conocimiento.
- Comprensión de Código: Soporta la generación y comprensión básica de código.
🎓 Valor Educativo
El objetivo de este proyecto es reducir la barrera de entrada al aprendizaje de LLM, permitiendo que todos puedan entrenar un modelo de lenguaje muy pequeño comenzando por comprender cada línea de código. El proyecto adopta el concepto de "construir un avión con bloques", permitiendo a los usuarios comprender profundamente la implementación subyacente de LLM, en lugar de estar aislados por la encapsulación de alto nivel.
💻 Modo de Uso
Requisitos del Entorno
- PyTorch 2.1.2+
- CUDA 12.2+
- Flash Attention 2
- RTX 3090 o GPU de mayor rendimiento (recomendado)
Inicio Rápido
# Clonar el proyecto
git clone https://github.com/jingyaogong/minimind.git
cd minimind
# Instalar dependencias
pip install -r requirements.txt
# Entrenamiento con una sola GPU
python train.py
# Entrenamiento multi-GPU (N>1)
torchrun --nproc_per_node N train.py
Configuración del Entrenamiento
# Habilitar el monitoreo de wandb
wandb login
python train.py --use_wandb
# Especificar el nombre del proyecto
python train.py --wandb_project "my_minimind" --wandb_run_name "experiment_1"
🔄 Proceso de Entrenamiento
- Preparación de Datos: Limpieza y preprocesamiento del conjunto de datos.
- Preentrenamiento: Realizar entrenamiento no supervisado en datos de texto a gran escala.
- Ajuste Fino de Instrucciones: Utilizar datos de instrucciones para realizar el ajuste fino supervisado.
- Optimización de Preferencias: Optimizar las preferencias de salida del modelo a través del algoritmo DPO.
- Evaluación del Modelo: Probar el rendimiento en conjuntos de datos de referencia como Ceval.
📈 Rendimiento
- Velocidad de Entrenamiento: Probado en una GPU RTX 3090, utilizando Torch 2.1.2, CUDA 12.2 y Flash Attention 2.
- Calidad de la Conversación: 26M de parámetros son suficientes para lograr una conversación fluida.
- Consumo de Recursos: Baja ocupación de memoria de video, adecuado para desarrolladores individuales.
🌍 Ecosistema Comunitario
- Código Abierto y Gratuito: Completamente de código abierto, todo el código del algoritmo central es público.
- Documentación Completa: Proporciona documentación detallada en chino e inglés.
- Actualización Continua: Comunidad de desarrollo activa, iteración continua de funciones.
- Amigable para la Educación: Adecuado para el aprendizaje y la enseñanza.
🔗 Proyectos Relacionados
- Proyecto Principal: minimind
- Versión Multimodal: minimind-v
- Versión MoE: minimind-v1-moe
Resumen
MiniMind es un framework de entrenamiento LLM ligero e innovador que demuestra que es posible entrenar modelos de lenguaje con capacidad de conversación práctica con recursos computacionales limitados. El proyecto no solo proporciona una cadena de herramientas de entrenamiento completa, sino que, lo que es más importante, proporciona una excelente plataforma para que los estudiantes e investigadores de IA comprendan los mecanismos internos de LLM. A través del concepto de "comenzar desde cero y comprender cada línea de código", MiniMind está democratizando la tecnología de inteligencia artificial, permitiendo que más personas participen en el desarrollo e investigación de modelos grandes.