En este tutorial, exploramos cómo ajustar Modelo NV-Embed-V1 de NVIDIA en el Conjunto de datos de polaridad de Amazon Usando Lora (adaptación de bajo rango) con PEFT (ajuste fino de los parámetros) de la cara abrazada. Al aprovechar Lora, adaptamos eficientemente el modelo sin modificar todos sus parámetros, haciendo que el ajuste fino sea factible en las GPU de bajo VRAM.
Los pasos para la implementación en este tutorial se pueden dividir en los siguientes pasos:
- Autenticando con la cara abrazada para acceder a NV-Embed-V1
- Cargar y configurar el modelo de manera eficiente
- Aplicando Lora ajustado con PEFT
- Preprocesando el conjunto de datos de polaridad de Amazon para la capacitación
- Optimización del uso de la memoria de GPU con `dispositivo_map =” automático “`
- Capacitación y evaluación del modelo sobre clasificación de sentimientos
Al final de esta guía, tendrá un modelo NV-Embed-V1 ajustado optimizado para la clasificación de sentimientos binarios, lo que demuestra cómo aplicar técnicas eficientes de ajuste fino a las tareas de PNL del mundo real.
from huggingface_hub import login
login() # Enter your Hugging Face token when prompted
import os
HF_TOKEN = "...." # Replace with your actual token
os.environ["HF_TOKEN"] = HF_TOKEN
import torch
import torch.distributed as dist
from transformers import AutoModel, AutoTokenizer, TrainingArguments, Trainer
from datasets import load_dataset
from peft import LoraConfig, get_peft_model
Primero, iniciamos sesión en el Hub Face de abrazos utilizando su token API, establecemos el token como una variable de entorno e importe varias bibliotecas necesarias para la capacitación distribuida y los modelos de transformadores de ajuste fino con técnicas como Lora.
MODEL_NAME = "nvidia/NV-Embed-v1"
HF_TOKEN = "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" # Replace with your actual token
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, token=HF_TOKEN)
model = AutoModel.from_pretrained(
MODEL_NAME,
device_map="auto", # Enable efficient GPU placement
torch_dtype=torch.float16, # Use FP16 for efficiency
token=HF_TOKEN
)
Este fragmento establece un nombre de modelo específico y un token de autenticación, luego carga el tokenizador y el modelo previamente practicados correspondientes de abrazar el centro de modelos de Face. También configura el modelo para usar la asignación automática de GPU y la precisión FP16 para mejorar la eficiencia.
lora_config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["self_attn.q_proj", "self_attn.v_proj"],
lora_dropout=0.1,
bias="none",
task_type="FEATURE_EXTRACTION",
)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
Con el código anterior, configuramos una configuración de Lora con parámetros especificados (como R = 16, Lora_alpha = 32 y una deserción de 0.1) dirigida a las capas de proyección de consulta y valor del mecanismo de autoatimiento. Luego integra esta configuración en el modelo usando PEFT para que solo estas capas de Lora sean entrenables para la extracción de características, y finalmente, los parámetros capacitables se imprimen.
dataset = load_dataset("amazon_polarity")
def tokenize_function(examples):
return tokenizer(examples["content"], padding="max_length", truncation=True)
tokenized_datasets = dataset.map(tokenize_function, batched=True)
Aquí, cargamos el conjunto de datos de polaridad de Amazon, definimos una función para tokenizar su campo de “contenido” con relleno y truncamiento, y aplica esta función para convertir el conjunto de datos en un formato tokenizado para el entrenamiento de modelos.
training_args = TrainingArguments(
output_dir="./results",
evaluation_strategy="epoch",
per_device_train_batch_size=4,
per_device_eval_batch_size=4,
num_train_epochs=1,
save_strategy="epoch",
save_total_limit=1,
logging_dir="./logs",
logging_steps=10,
fp16=True, # Mixed precision
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_datasets["train"],
eval_dataset=tokenized_datasets["test"],
)
trainer.train()
Con el código anterior, configuramos los parámetros de entrenamiento, como los directorios de salida, los tamaños de lotes, el registro y la precisión mixta FP16, utilizando los capacitaciones, creamos un entrenador con el modelo y los conjuntos de datos de trenes/pruebas tokenizados, y finalmente inician el proceso de capacitación.
model.save_pretrained("./fine_tuned_nv_embed")
tokenizer.save_pretrained("./fine_tuned_nv_embed")
print("✅ Training Complete! Model Saved.")
Finalmente, guardamos el modelo ajustado y su tokenizer en el directorio especificado y luego imprimimos un mensaje de confirmación que indica que la capacitación está completa y el modelo se guarda.
Al final de este tutorial, nos ajustamos con éxito NV-Embed-V1 en el conjunto de datos de polaridad de Amazon utilizando Lora y Peft, asegurando un uso eficiente de la memoria y una adaptación escalable. Este tutorial destaca el poder del ajuste fino eficiente de los parámetros, lo que permite la adaptación del dominio de modelos grandes sin requerir recursos computacionales masivos. Este enfoque se puede extender a otros modelos basados en transformadores, lo que lo hace valioso para incrustaciones personalizadas, análisis de sentimientos y aplicaciones basadas en PNL. Ya sea que esté trabajando en la clasificación de revisión del producto, sistemas de recomendación impulsados por la IA o motores de búsqueda específicos de dominio, este método le permite ajustar modelos a gran escala con un presupuesto de manera eficiente.
Aquí está el Cuaderno de colab para el proyecto anterior. 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.
🚨 Lectura de lectura recomendada Liberaciones de investigación de IA: un sistema avanzado que integra el sistema de IA del agente y los estándares de cumplimiento de datos para abordar las preocupaciones legales en los conjuntos de datos de IA
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.