موارد تحسين LLM
مجموعة مختارة من الدفاتر، والمجموعات البيانية، والأوراق، والأدوات، والمجتمعات لتحسين LLM.
📓 دفاتر الدورة الرسمية
دفاتر خاصة بالوحدات
| الوحدة | الدفتر | الوصف |
|---|---|---|
| الوحدة 4 | تدريب LoRA | تحسين LoRA الأساسي باستخدام PEFT |
| الوحدة 5 | تدريب QLoRA | تدريب 4 بت مكمي |
| الوحدة 6 | إعداد البيانات | خطوط تنسيق المجموعات البيانية |
| الوحدة 7 | SFTTrainer | سير عمل التدريب الكامل |
| الوحدة 8 | تدريب DPO | تحسين التفضيلات |
| الوحدة 10 | النشر | تصدير النموذج وتقديمه |
🤗 موارد Hugging Face
المكتبات الأساسية
| المكتبة | الغرض | التثبيت |
|---|---|---|
| transformers | تحميل النماذج والاستدلال | pip install transformers |
| peft | تحسين المعلمات بكفاءة | pip install peft |
| trl | التدريب باستخدام RL و SFT | pip install trl |
| datasets | تحميل ومعالجة المجموعات البيانية | pip install datasets |
| accelerate | التدريب الموزع | pip install accelerate |
| bitsandbytes | التكميم | pip install bitsandbytes |
النماذج الأساسية الموصى بها
| النموذج | المعلمات | حالة الاستخدام | رابط HF |
|---|---|---|---|
| Llama-3.1 | 8B/70B | للأغراض العامة | meta-llama/Llama-3.1-8B |
| Mistral | 7B | أداء فعال | mistralai/Mistral-7B-v0.3 |
| Qwen2.5 | 0.5B-72B | متعدد اللغات | Qwen/Qwen2.5-7B |
| Phi-3 | 3.8B | صغير ولكنه قادر | microsoft/Phi-3-mini-4k-instruct |
| Gemma 2 | 2B/9B/27B | نموذج مفتوح من جوجل | google/gemma-2-9b |
📊 مجموعات التدريب
مجموعات ضبط التعليمات
| المجموعة | الحجم | التنسيق | حالة الاستخدام |
|---|---|---|---|
| databricks/dolly-15k | 15K | Alpaca | تعليمات عامة |
| OpenAssistant/oasst1 | 161K | محادثات | نماذج الدردشة |
| teknium/OpenHermes-2.5 | 1M+ | ShareGPT | جودة عالية |
| HuggingFaceH4/ultrachat_200k | 200K | محادثات | دردشة |
| meta-math/MetaMathQA | 395K | رياضيات | استدلال رياضي |
مجموعات التفضيلات/DPO
| المجموعة | الأزواج | حالة الاستخدام |
|---|---|---|
| Anthropic/hh-rlhf | 170K | المساعدة وعدم الإيذاء |
| argilla/ultrafeedback-binarized | 60K | تفضيلات عامة |
| Intel/orca_dpo_pairs | 12K | تدريب DPO |
مجموعات الشيفرة
| المجموعة | الحجم | اللغات |
|---|---|---|
| codeparrot/github-code | كبير | متعددة |
| sahil2801/CodeAlpaca-20k | 20K | متعددة |
| iamtarun/python_code_instructions_18k | 18K | بايثون |
📚 أوراق البحث
الأوراق الأساسية
| الورقة | السنة | المساهمة الرئيسية |
|---|---|---|
| LoRA: Low-Rank Adaptation | 2021 | قدمت طريقة LoRA |
| QLoRA: Efficient Finetuning | 2023 | LoRA مكمي 4 بت |
| Prefix-Tuning | 2021 | مطالبات مستمرة |
| P-Tuning v2 | 2021 | ضبط المطالبات العميق |
| AdaLoRA | 2023 | تخصيص الرتبة التكيفي |
أوراق المحاذاة
| الورقة | السنة | المساهمة الرئيسية |
|---|---|---|
| DPO: Direct Preference Optimization | 2023 | تبسيط RLHF |
| ORPO: Monolithic Preference Optimization | 2024 | دمج SFT+المحاذاة |
| Constitutional AI | 2022 | المحاذاة القائمة على المبادئ |
| RLHF Training at Scale | 2022 | ورقة InstructGPT |
أوراق دمج النماذج
| الورقة | السنة | الطريقة |
|---|---|---|
| TIES-Merging | 2023 | حل النزاعات |
| DARE | 2023 | الإسقاط وإعادة التدرج |
| Model Soups | 2022 | متوسط الأوزان |
🛠️ الأدوات والأطر
أدوات التدريب
| الأداة | الغرض | الرابط |
|---|---|---|
| Axolotl | CLI لتحسين سهل | OpenAccess-AI-Collective/axolotl |
| LLaMA-Factory | إطار تحسين موحد | hiyouga/LLaMA-Factory |
| Unsloth | تحسين أسرع مرتين | unslothai/unsloth |
| MLX | تدريب على Apple Silicon | ml-explore/mlx |
الاستدلال والنشر
| الأداة | الغرض | الرابط |
|---|---|---|
| vLLM | تقديم عالي الإنتاجية | vllm-project/vllm |
| Text Generation Inference | تقديم HuggingFace | huggingface/text-generation-inference |
| llama.cpp | استدلال CPU | ggerganov/llama.cpp |
| Ollama | تشغيل النموذج المحلي | ollama/ollama |
دمج النماذج
| الأداة | الغرض |
|---|---|
| mergekit | أدوات دمج النماذج |
| LazyMergeKit | دفتر Colab للدمج |
تتبع التجارب
| الأداة | الغرض |
|---|---|
| Weights & Biases | تتبع التجارب |
| MLflow | دورة حياة ML |
| TensorBoard | تصور التدريب |
☁️ موارد الحوسبة
مزودو GPU السحابية
| المزود | الأفضل لـ | نموذج التسعير |
|---|---|---|
| Google Colab | التعلم، التجارب الصغيرة | طبقة مجانية + Pro |
| Lambda Labs | الوصول إلى A100/H100 | لكل ساعة |
| RunPod | تأجير GPU مرن | لكل ساعة |
| Vast.ai | الوصول إلى GPU بميزانية | سوق |
| AWS SageMaker | الشركات | لكل مثيل |
متطلبات ذاكرة GPU
| حجم النموذج | FT كامل | QLoRA | LoRA |
|---|---|---|---|
| 7B | ~28GB | ~6GB | ~14GB |
| 13B | ~52GB | ~10GB | ~26GB |
| 70B | ~280GB | ~48GB | ~140GB |
🌐 المجتمعات
خوادم Discord
- Hugging Face - مجتمع HF الرسمي
- EleutherAI - بحث AI مفتوح المصدر
- Unsloth - مناقشات تحسين سريعة
المنتديات والمناقشات
- منتديات Hugging Face - مناقشات تقنية
- r/LocalLLaMA - تشغيل النموذج المحلي
- r/MachineLearning - بحث ML
المدونات والنشرات الإخبارية
- مدونة Hugging Face - دروس رسمية
- نشرة Sebastian Raschka - رؤى التعلم العميق
- The Batch - أخبار AI بواسطة Andrew Ng
📖 الكتب والدورات
الكتب الموصى بها
| الكتاب | المؤلف | التركيز |
|---|---|---|
| معالجة اللغة الطبيعية باستخدام Transformers | Tunstall, von Werra, Wolf | NLP عملي مع HF |
| بناء نموذج لغة كبير (من الصفر) | Sebastian Raschka | أساسيات LLM |
الدورات عبر الإنترنت
| الدورة | المنصة | التركيز |
|---|---|---|
| دورة NLP من Hugging Face | HF | Transformers و NLP |
| معسكر تدريب LLM الكامل | FSDL | LLMs الإنتاجية |
| Fast.ai | Fast.ai | التعلم العميق |
🧪 المعايير والتقييم
لوحات الصدارة LLM
- لوحة الصدارة LLM المفتوحة - مقارنة النماذج
- ساحة دردشة LMSYS - تقييم بشري
- AlpacaEval - اتباع التعليمات
أدوات التقييم
| الأداة | الغرض |
|---|---|
| lm-evaluation-harness | معايير شاملة |
| HELM | تقييم شامل |
| MT-Bench | محادثات متعددة الأدوار |
💡 قوالب البدء السريع
تدريب QLoRA الأساسي
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training
from trl import SFTTrainer
# 4-bit quantization config
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
)
# Load model
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3.1-8B",
quantization_config=bnb_config,
)
# LoRA config
lora_config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.05,
task_type="CAUSAL_LM",
)
# Prepare and train
model = prepare_model_for_kbit_training(model)
model = get_peft_model(model, lora_config)
trainer = SFTTrainer(
model=model,
train_dataset=dataset,
# ... training args
)
trainer.train()