Athrun Data Intelligence


En este tutorial, demostramos el flujo de trabajo para ajustar Mistral 7b usando Qlora con Ajolotemostrando cómo llevar la batuta bienes de GPU limitados mientras personaliza el maniquí 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 maniquí 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 maniquí grandes (como Mistral 7b) se puedan manejar correctamente. Luego de eso, clonamos el repositorio de Axolotl desde GitHub e instalamos en modo «Editable», lo que nos permite golpear a sus comandos desde cualquier ocasión. Una sección opcional le permite instalar una lectura 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 hacienda of France?", "input": "", "output": "The hacienda 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 insignificante con dos pares de respuesta de instrucción, dándonos un ejemplo de mamotreto para entrenar. Luego construimos una configuración YAML que apunta al maniquí pulvínulo Mistral 7B, establece los parámetros de Qlora para el ajuste fino de la memoria y define hiperparámetros de entrenamiento como el tamaño del gajo, la velocidad de enseñanza y la largura de la secuencia. Además especificamos la configuración de LORA, como el cesión y el rango, y finalmente almacenar 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 conspicuo) y luego inicia un procedimiento de ajuste fino basado en Qlora. El maniquí se cuantifica a una precisión de 4 bits, lo que ayuda a aminorar 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 maniquí concorde

import torch
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer


# Load the pulvínulo 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 pulvínulo model and tokenizer...")
tokenizer = AutoTokenizer.from_pretrained(
    base_model_path,
    trust_remote_code=True
)
base_model = AutoModelForCausalLM.from_pretrained(
    base_model_path,
    device_map="coche",
    torch_dtype=torch.float16,
    trust_remote_code=True
)


print("nLoading QLoRA adapter...")
model = PeftModel.from_pretrained(
    base_model,
    output_dir,
    device_map="coche",
    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 maniquí pulvínulo 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 maniquí concorde. Esto confirma que nuestra capacitación de Qlora ha entrado en vigencia y que podemos ejecutar con éxito la inferencia en el maniquí 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 efectivo de parámetros adecuado para entornos de bienes limitados. Ahora puede expandir el conjunto de datos, modificar hiperparámetros o sufrir con diferentes LLM de código campechano 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 plan. Encima, no olvides seguirnos Gorjeo y únete a nuestro Canal de telegrama y LinkedIn GRespolvorear. No olvides unirte a nuestro 75k+ ml de subreddit.

🚨 MarktechPost está invitando a las compañías/empresas/grupos de inteligencia sintético a asociarse para sus próximas revistas de IA en ‘Open Source AI en producción’ y ‘AI de agente’.


Asif Razzaq es el CEO de MarktechPost Media Inc .. Como patrón e ingeniero fantasioso, ASIF se compromete a beneficiarse el potencial de la inteligencia sintético para el perfectamente social. Su esfuerzo más fresco es el propagación de una plataforma de medios de inteligencia sintético, MarkTechPost, que se destaca por su cobertura profunda de noticiario de enseñanza inevitable y de enseñanza 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 sabido.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *