在本教程中,我們探討瞭如何使用LORA(低級別的適應性)在Amazon Polarity數據集上微調NVIDIA的NVEMBED-V1模型,並通過擁抱面孔(參數效率高得分)。通過利用Lora,我們在不修改其所有參數的情況下有效地適應了模型,從而使低調的低調在低VRAM GPU上可行。
在本教程中實現的步驟可以分解為以下步驟:
- 通過擁抱面孔進行身份驗證以訪問NV-Embed-V1
- 有效地加載和配置模型
- 使用PEFT應用Lora微調
- 預處理亞馬遜極性數據集進行培訓
- 用`device_map =“ auto”優化GPU內存使用量
- 培訓和評估情感分類模型
在本指南的最後,您將擁有針對二進制情感分類優化的微調NV Embed-V1模型,以演示如何將有效的微調技術應用於現實世界的NLP任務。
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
首先,我們使用您的API代幣登錄擁抱的麵線,將令牌設置為環境變量,並用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
)
該片段設置了一個特定的模型名稱和身份驗證令牌,然後從擁抱Face的型號集線器中加載相應的已驗證令牌和模型。它還配置了模型以使用自動GPU分配和FP16精度以提高效率。
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()
使用上述代碼,我們將具有指定參數的LORA設置(例如R = 16,Lora_alpha = 32和0.1的輟學)配置,以自我注意機制的查詢和價值投影層為目標。然後,它使用PEFT將此配置集成到模型中,以便僅這些LORA層才能訓練特徵提取,最後,打印了可訓練的參數。
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)
在這裡,我們加載Amazon Polarity數據集,定義一個功能,以用填充和截斷為代幣化其“內容”字段,並應用此功能將數據集轉換為標記格式進行模型培訓。
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()
借助上述代碼,我們設置了培訓參數,例如輸出目錄,批次大小,日誌記錄和FP16混合精度 – 使用培訓量,使用模型和標記的火車/測試數據集創建培訓師,並最終啟動培訓過程。
model.save_pretrained("./fine_tuned_nv_embed")
tokenizer.save_pretrained("./fine_tuned_nv_embed")
print("✅ Training Complete! Model Saved.")
最後,我們將微調模型及其令牌保存到指定的目錄中,然後打印一條確認消息,表明培訓已完成並保存模型。
到本教程結束時,我們使用LORA和PEFT成功地在Amazon Polarity數據集上成功地微調了NVEMBED-V1,從而確保了有效的內存使用情況和可擴展的適應性。該教程突出了參數有效的微調的力量,從而使大型模型的域適應不需要大量的計算資源。該方法可以擴展到其他基於變壓器的模型,使其對於自定義嵌入,情感分析和NLP驅動的應用程序很有價值。無論您是從事產品審查分類,AI驅動的推薦系統還是特定領域的搜索引擎,此方法都可以使您有效地對預算進行大規模調整大規模模型。
這是 COLAB筆記本 對於上述項目。另外,別忘了跟隨我們 嘰嘰喳喳 並加入我們 電報頻道 和 LinkedIn GrOUP。別忘了加入我們的 75K+ ml子雷迪特。
🚨 推薦的讀取LG AI研究釋放Nexus:高級系統集成代理AI系統和數據合規性標準,以解決AI數據集中的法律問題
Asif Razzaq是Marktechpost Media Inc.的首席執行官。作為一位有遠見的企業家和工程師,ASIF致力於利用人工智能的潛力來實現社會利益。他最近的努力是推出了人工智能媒體平台Marktechpost,該平台的深入覆蓋了機器學習和深度學習新聞,既在技術上都可以聽起來,既可以通過技術上的聲音,又可以被廣泛的受眾理解。該平台每月有超過200萬個觀點,說明了其在受眾中的受歡迎程度。
