El ajuste fino de un modelo de gran escala (LLM) es una tarea compleja que requiere una comprensión técnica profunda. Este tutorial proporciona un flujo de trabajo práctico paso a paso para realizar un ajuste fino básico, centrándose en el proceso más que en los detalles teóricos subyacentes. Utilizaremos el marco de código abierto LLaMA-Factory para simplificar la operación.
1. Preparación del entorno
Para evitar problemas de configuración local de hardware, utilizaremos una plataforma en la nube con recursos GPU preconfigurados, como ModelScope Studio. Esto elimina la neceisdad de configurar manualmente CUDA o bibliotecas de GPU.
Una vez dentro de un entorno Notebook (JupyterLab), el primer paso es instalar las dependencias necesarias. Ejecute los siguientes comandos en una celda de código:
# Actualizar el gestor de paquetes e instalar bibliotecas esenciales
pip install --upgrade pip
pip install torch transformers datasets accelerate peft bitsandbytes
A continuación, clone el repositorio principal del framework que utilizaremos:
# Clonar el framework LLaMA-Factory
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
# Entrar al directorio e instalar el paquete en modo editable
cd LLaMA-Factory
pip install -e ".[torch,metrics]"
Este proceso puede tardar varios minutos, ya que instala numerosas dependencias de aprendizaje automático.
2. Obtención del modelo base
Seleccionaremos un modelo base ligero para fines de demostración. En este caso, usaremos el modelo Qwen2-1.5B-Chat de Alibaba Cloud. Puede descargar los pesos del modelo directamente desde el hub de Hugging Face:
# Clonar el modelo base desde Hugging Face Hub (alternativa a git clone)
python -c "from transformers import AutoModelForCausalLM, AutoTokenizer; model = AutoModelForCausalLM.from_pretrained('Qwen/Qwen2-1.5B-Chat'); tokenizer = AutoTokenizer.from_pretrained('Qwen/Qwen2-1.5B-Chat')"
La descarga dependerá de la velocidad de su conexión y del tamaño del modelo (aproximadamente 3 GB para este ejemplo).
3. Configuración del ajuste fino
LLaMA-Factory utiliza archivos de configuración YAML para definir los parámetros del entrenamiento. Crearemos un archivo de configuración específico para un ajuste fino con LoRA (Ajuste de Bajo Rango Adaptativo) y cuantización de 4 bits para reducir el uso de memoria.
Dentro del directorio del proyecto, cree un archivo llamado config_qwen_lora.yaml con el siguiente contenido. Los campos más importantes son la ruta al modelo, el tipo de ajuste fino y los hiperparámetros de entrenamiento.
### Parámetros del modelo
model_name_or_path: ./qwen2-1.5b-chat # Ruta al modelo base descargado
quantization_bit: 4 # Cuantización para reducir el uso de VRAM
### Método de entrenamiento
stage: sft # Ajuste fino supervisado (Supervised Fine-Tuning)
do_train: true
finetuning_type: lora # Tipo de ajuste fino eficiente
lora_target: all # Aplicar LoRA a todas las capas lineales
lora_rank: 8 # Rango de la matriz LoRA
### Configuración del dataset
dataset: alpaca_zh_demo # Usar un dataset de demostración incluido en LLaMA-Factory
template: qwen # Plantilla de chat correspondiente al modelo base
cutoff_len: 1024 # Longitud máxima de la secuencia
max_samples: 500 # Número máximo de muestras para el entrenamiento
preprocessing_num_workers: 4
### Ruta de salida y registro
output_dir: saves/qwen-1.5b/lora/sft
logging_steps: 10
save_steps: 200
overwrite_output_dir: true
### Hiperparámetros de entrenamiento
per_device_train_batch_size: 2
gradient_accumulation_steps: 4
learning_rate: 2.0e-4
num_train_epochs: 3.0
lr_scheduler_type: cosine
warmup_ratio: 0.1
bf16: true # Usar precisión mixta para eficiencia
### Validación
val_size: 0.1
per_device_eval_batch_size: 2
eval_strategy: steps
eval_steps: 200
Este archivo define un proceso de entrenamiento que utiliza un dataset pequeño de demostración. Para un caso de uso real, usted proporcionaría su propio dataset en el formato requerido.
4. Ejecución del entrenamiento
Una vez configurado el archivo YAML, inicie el proceso de entrenamiento ejecutando el siguiente comando desde el directorio raíz de LLaMA-Factory:
llamafactory-cli train config_qwen_lora.yaml
El framework mostrará una barra de progrseo. La duración del entrenamiento varía según el dataset, los hiperparámetros y los recursos GPU. Al finalizar, los adaptadores LoRA entrenados se guardarán en el directorio de salida especificado.
5. Evaluación y uso del modelo ajustado
Para probar el modelo después del ajuste fino, puede cargar el modelo base junto con los adaptadores LoRA entrenados. LLaMA-Factory proporciona un comando de chat interactivo para esta tarea.
Cree un archivo de configuración de inferencia inference_qwen_lora.yaml:
model_name_or_path: ./qwen2-1.5b-chat
adapter_name_or_path: saves/qwen-1.5b/lora/sft
template: qwen
finetuning_type: lora
Luego, inicie la interfaz de chat:
llamafactory-cli chat inference_qwen_lora.yaml
El modelo cargado ahora incorporará el conocimiento específico del dataset de entrenamiento, lo que se reflejará en sus respuestas, manteniendo al mismo tiempo sus capacidades generales de lenguaje. Este flujo de trabajo demuestra el proceso fundamental para personalizar un LLM mediente ajuste fino eficiente.