En este tutorial, demostramos el flujo de trabajo para ajustar Mistral 7b usando Qlora con Ajolotemostrando cómo administrar recursos de GPU limitados mientras personaliza el modelo para nuevas tareas. Instalaremos Axolotl, crearemos un pequeño conjunto de datos de ejemplo, configuraremos los hiperparámetros específicos de Lora, ejecutaremos el proceso de ajuste fino y probará el rendimiento del modelo resultante.
Paso 1: Prepare el entorno e instale Axolotl
# 1. Check GPU availability
!nvidia-smi
# 2. Install git-lfs (for handling large model files)
!sudo apt-get -y install git-lfs
!git lfs install
# 3. Clone Axolotl and install from source
!git clone https://github.com/OpenAccess-AI-Collective/axolotl.git
%cd axolotl
!pip install -e .
# (Optional) If you need a specific PyTorch version, install it BEFORE Axolotl:
# !pip install torch==2.0.1+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
# Return to /content directory
%cd /content
Primero, verificamos qué GPU hay y cuánta memoria hay. Luego instalamos GIT LFS para que los archivos de modelo grandes (como Mistral 7b) se puedan manejar correctamente. Después de eso, clonamos el repositorio de Axolotl desde GitHub e instalamos en modo “Editable”, lo que nos permite llamar a sus comandos desde cualquier lugar. Una sección opcional le permite instalar una versión de Pytorch específica si es necesario. Finalmente, volvemos a navegar al directorio /contenido para organizar archivos y rutas posteriores.
Paso 2: cree un conjunto de datos de muestra pequeño y una configuración de Qora para Mistral 7b
import os
# Create a small JSONL dataset
os.makedirs("data", exist_ok=True)
with open("data/sample_instructions.jsonl", "w") as f:
f.write('{"instruction": "Explain quantum computing in simple terms.", "input": "", "output": "Quantum computing uses qubits..."}\n')
f.write('{"instruction": "What is the capital of France?", "input": "", "output": "The capital of France is Paris."}\n')
# Write a QLoRA config for Mistral 7B
config_text = """\
base_model: mistralai/mistral-7b-v0.1
tokenizer: mistralai/mistral-7b-v0.1
# We'll use QLoRA to minimize memory usage
train_type: qlora
bits: 4
double_quant: true
quant_type: nf4
lora_r: 8
lora_alpha: 16
lora_dropout: 0.05
target_modules:
- q_proj
- k_proj
- v_proj
data:
datasets:
- path: /content/data/sample_instructions.jsonl
val_set_size: 0
max_seq_length: 512
cutoff_len: 512
training_arguments:
output_dir: /content/mistral-7b-qlora-output
num_train_epochs: 1
per_device_train_batch_size: 1
gradient_accumulation_steps: 4
learning_rate: 0.0002
fp16: true
logging_steps: 10
save_strategy: "epoch"
evaluation_strategy: "no"
wandb:
enabled: false
"""
with open("qlora_mistral_7b.yml", "w") as f:
f.write(config_text)
print("Dataset and QLoRA config created.")
Aquí, construimos un conjunto de datos JSONL mínimo con dos pares de respuesta de instrucción, dándonos un ejemplo de juguete para entrenar. Luego construimos una configuración YAML que apunta al modelo base Mistral 7B, establece los parámetros de Qora para el ajuste fino de la memoria y define hiperparámetros de entrenamiento como el tamaño del lote, la velocidad de aprendizaje y la longitud de la secuencia. También especificamos la configuración de LORA, como el abandono y el rango, y finalmente guardar esta configuración como Qlora_Mistral_7B.yml.
Paso 3: Tane fino con axolotl
# This will download Mistral 7B (~13 GB) and start fine-tuning with QLoRA.
# If you encounter OOM (Out Of Memory) errors, reduce max_seq_length or LoRA rank.
!axolotl --config /content/qlora_mistral_7b.yml
Aquí, Axolotl obtiene automáticamente y descarga los pesos Mistral 7B (un archivo grande) y luego inicia un procedimiento de ajuste fino basado en Qlora. El modelo se cuantifica a una precisión de 4 bits, lo que ayuda a reducir el uso de la memoria de GPU. Verá registros de entrenamiento que muestran el progreso, incluida la pérdida de entrenamiento, paso a paso.
Paso 4: Pruebe el modelo ajustado
import torch
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
# Load the base Mistral 7B model
base_model_path = "mistralai/mistral-7b-v0.1" #First establish access using your user account on HF then run this part
output_dir = "/content/mistral-7b-qlora-output"
print("\nLoading base model and tokenizer...")
tokenizer = AutoTokenizer.from_pretrained(
base_model_path,
trust_remote_code=True
)
base_model = AutoModelForCausalLM.from_pretrained(
base_model_path,
device_map="auto",
torch_dtype=torch.float16,
trust_remote_code=True
)
print("\nLoading QLoRA adapter...")
model = PeftModel.from_pretrained(
base_model,
output_dir,
device_map="auto",
torch_dtype=torch.float16
)
model.eval()
# Example prompt
prompt = "What are the main differences between classical and quantum computing?"
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
print("\nGenerating response...")
with torch.no_grad():
outputs = model.generate(**inputs, max_new_tokens=128)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print("\n=== Model Output ===")
print(response)
Finalmente, cargamos el modelo base Mistral 7B nuevamente y luego aplicamos los pesos Lora recién entrenados. Elaboramos un indicador rápido sobre las diferencias entre la computación clásica y cuántica, lo convertimos en tokens y generamos una respuesta utilizando el modelo ajustado. Esto confirma que nuestra capacitación de Qlora ha entrado en vigencia y que podemos ejecutar con éxito la inferencia en el modelo actualizado.
Instantánea de modelos compatibles con axolotl
En conclusión, los pasos anteriores le han mostrado cómo preparar el entorno, configurar un pequeño conjunto de datos, configurar hiperparámetros específicos de LORA y ejecutar una sesión de ajuste fino de Qlora en Mistral 7B con Axolotl. Este enfoque muestra un proceso de capacitación eficiente de parámetros adecuado para entornos de recursos limitados. Ahora puede expandir el conjunto de datos, modificar hiperparámetros o experimentar con diferentes LLM de código abierto para refinar aún más y optimizar su tubería ajustada.
Descargue el cuaderno Colab aquí. Todo el crédito por esta investigación va a los investigadores de este proyecto. Además, no olvides seguirnos Gorjeo y únete a nuestro Canal de telegrama y LinkedIn GRsalpicar. No olvides unirte a nuestro 75k+ ml de subreddit.
Asif Razzaq es el CEO de MarktechPost Media Inc .. Como empresario e ingeniero visionario, ASIF se compromete a aprovechar el potencial de la inteligencia artificial para el bien social. Su esfuerzo más reciente es el lanzamiento de una plataforma de medios de inteligencia artificial, MarktechPost, que se destaca por su cobertura profunda de noticias de aprendizaje automático y de aprendizaje profundo que es técnicamente sólido y fácilmente comprensible por una audiencia amplia. La plataforma cuenta con más de 2 millones de vistas mensuales, ilustrando su popularidad entre el público.