انقلابی در فرآیند Fine-Tune مدلهای هوش مصنوعی با Unsloth

در دنیای همیشه در حال تحول هوش مصنوعی و دیپلرنینگ، توانایی fine-tune مؤثر و کارآمد مدلهای زبانی بزرگ (LLMها) اهمیت بالایی دارد. در این میان، Unsloth وارد میشود؛ پلتفرمی پیشرفته که با هدف افزایش چشمگیر سرعت فرآیند fine-tune برای مدلهای محبوبی مانند Llama، Mistral و … طراحی شده است. در ادامه این پست موارد زیر را بررسی خواهیم کرد:
Unsloth.ai چیست؟
Unsloth یک استارتاپ نوآورانه در حوزه هوش مصنوعی است که بهینهسازی آموزش و fine-tune مدلهای زبانی بزرگ (LLMها) را انجام میدهد. این پلتفرم با بهبودهای قابل توجهی در سرعت و مصرف حافظه، ابزاری ارزشمند برای پژوهشگران و توسعهدهندگان هوش مصنوعی محسوب میشود. Unsloth.ai این پیشرفتها را از طریق مشتقات ریاضی پیشرفته و کرنلهای GPU دست نویس شده با استفاده از زبان Triton متعلق به OpenAI به دست میآورد.
ویژگیها و مزایا
-
سرعت بازتعریفشده: Unsloth افتخار میکند که سرعت آموزش را تا ۳۰ برابر افزایش داده است. به عنوان مثال، انجام کار benchmark معروف Alpaca اکنون تنها ۳ ساعت طول میکشد، در حالی که روشهای معمولی ۸۵ ساعت زمان میبردند. این تسریع نشاندهنده تعهد Unsloth به کارایی و بهرهوری است.
-
کارایی حافظه: Unsloth در زمینه مصرف حافظه تحولی ایجاد کرده و وعده کاهش ۶۰٪ مصرف حافظه را میدهد. این امکان نه تنها پردازش batchهای بزرگتر را فراهم میکند، بلکه روند fine-tune را بدون افت عملکرد به شکل روانی تضمین میکند.
-
افزایش دقت: نویسندگان با افتخار اعلام میکنند که هیچ کاهش دقتی (۰٪) وجود ندارد و همچنین گزینهای برای افزایش ۲۰٪ دقت با استفاده از قابلیت MAX ارائه شده است. این تعهد به حفظ و ارتقای سطح دقت، Unsloth را در میان رقبا متمایز میکند.
-
سازگاری سختافزاری: Unsloth دامنه پشتیبانی خود را گسترش داده و از GPUهای NVIDIA، Intel و AMD پشتیبانی میکند. این جامعیت، دسترسی به مجموعه گستردهای از پیکربندیهای سختافزاری را ممکن ساخته و آن را به انتخابی چندمنظوره برای توسعهدهندگان در پلتفرمهای مختلف تبدیل کرده است.
مزایای Fine-Tune با Unsloth و QLora:
-
-
رهایی از محدودیتها در کارایی: کاهش عملیات افزایش وزنها (weights upscaling) در QLoRA به معنای کاهش تعداد وزنها است که منجر به مصرف حافظه بهینهتر میشود. این کارایی، همراه با استفاده مستقیم از bfloat16، به توسعهدهندگان اجازه میدهد تا اهداف fine-tune را سریعتر و با منابع کمتری به دست آورند.
-
مکانیزمهای نوآورانه توجه (Attention): Unsloth با استفاده از Flash Attention از طریق xformers و پیادهسازی Tri Dao، مدلهای ترنسفورمر را بهینه میکند. این رویکرد نوآورانه در مکانیزمهای توجه، fine-tune را فراتر از یک وظیفه فنی ساده کرده و آن را به یک کار خلاقانه تبدیل میکند.
-
ماسک علّی برای افزایش سرعت: به جای استفاده از ماسک توجه جداگانه، Unsloth از ماسک علّی (causal mask) برای تسریع آموزش استفاده میکند. این روش نشاندهنده تعهد Unsloth به بازنگری روشهای سنتی است و راه را برای fine-tune کارآمدتر و سریعتر هموار میکند.
-
بهینهسازی تابع خطای Cross Entropy: Unsloth فقط fine-tune نمیکند، بلکه این کار را با دقت انجام میدهد. بهینهسازی محاسبه Cross Entropy loss مصرف حافظه را به طور قابل توجهی کاهش داده و تضمین میکند که فرآیند بدون افت دقت، منابع کمتری مصرف کند.
-
Unsloth چگونه کار میکند
Unsloth.ai فرآیند fine-tune را با مشتقگیری دستی تفاضلهای ماتریسی و انجام ضربهای زنجیرهای ماتریسها بهینه میکند. این روش باعث میشود عملیات با حداقل بار محاسباتی انجام شود که منجر به افزایش قابل توجهی در عملکرد میگردد. علاوه بر این، کرنلهای Unsloth به گونهای طراحی شدهاند که تمیز، قابلخواندن و بسیار بهینه باشند که سرعت و مصرف حافظه پلتفرم را بهبود میبخشد.(Unsloth)
برای استفاده از Unsloth، کاربران میتوانند مدل خود را با تابع FastLanguageModel.from_pretrained
بارگذاری کرده، پیکربندیهای مورد نظر را تعیین کنند و فرآیند fine-tune را آغاز نمایند. این پلتفرم از معماریهای مختلف مدل پشتیبانی میکند و مدلهای پیشکوانتیزه شده ۴-بیتی را ارائه میدهد که دانلود سریعتر و کاهش پراکندگی حافظه را ممکن میسازد.
کد نمونه
بارگذاری یک مدل از پیش آموزشدیده:
from unsloth import FastLanguageModel model, tokenizer = FastLanguageModel.from_pretrained( model_name="unsloth/mistral-7b-bnb-4bit", # Replace with your desired model max_seq_length=2048, # Supports RoPE Scaling internally load_in_4bit=True, )
اتصال آداپتورها برای fine-tune با QLoRA
# Apply model patching and add fast LoRA weights model = FastLanguageModel.get_peft_model( model, r=16, target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"], lora_alpha=16, lora_dropout=0, # Set dropout to 0 for optimization bias="none", # Set bias to "none" for optimization use_gradient_checkpointing=True, )
Fine-Tuning با استفاده از SFTTrainer کتابخانه TRL
from transformers import TrainingArguments from trl import SFTTrainer import wandb # Initialize Weights & Biases logging wandb.init(project="tiny-llama", name="tiny-llama-unsloth-sft") # Define training arguments args = TrainingArguments( per_device_train_batch_size=2, per_device_eval_batch_size=2, gradient_accumulation_steps=4, evaluation_strategy="steps", warmup_ratio=0.1, num_train_epochs=1, learning_rate=2e-5, fp16=True, output_dir="outputs", report_to="wandb", logging_steps=1, save_total_limit=2, ) # Initialize the trainer trainer = SFTTrainer( model=model, tokenizer=tokenizer, train_dataset=dataset_dict["train"], eval_dataset=dataset_dict["test"], dataset_text_field="text", max_seq_length=2048, args=args, ) # Start training trainer.train() wandb.finish()
نتیجهگیری
Unsloth آماده است تا نحوه fine-tune مدلهای هوش مصنوعی را متحول کرده و سرعت و کارایی بینظیری ارائه دهد. چه شما یک پژوهشگر هوش مصنوعی باشید که به دنبال تسریع آزمایشهایتان هستید و چه توسعهدهندهای که میخواهد مدلهای قدرتمند زبانی را به کار بگیرد، Unsloth ابزارها و منابع لازم برای رسیدن به اهدافتان را فراهم میکند. با بهرهگیری از بهینهسازیهای پیشرفته و حمایت جامعه کاربری Unsloth، میتوانید در میدان رو به رشد هوش مصنوعی همیشه یک قدم جلوتر باشید.
برای شروع کار با Unsloth، به وبسایت رسمی آنها مراجعه کرده و مخزن GitHub آنها را بررسی کنید.
منابع:
- https://huggingface.co/blog/Andyrasika/finetune-unsloth-qlora
- https://medium.com/aimonks/unsloth-ai-revolutionizing-ai-model-fine-tuning-579c0afbddce
دیدگاهتان را بنویسید