Close-up image of a smartphone screen displaying various app icons on a dark background.

Apps

ضبط دقيق لـ Mistral 7B على Mac M1 باستخدام LoRA في ساعة واحدة

دليل خطوة بخطوة لضبط LoRA الدقيق لـ Mistral 7B على Apple Silicon باستخدام MLX و Axolotl — بدون GPU سحابية، بدون استئجار بـ 2 دولار في الساعة، النتائج في أقل من ساعة واحدة.

TLDR يمكنك ضبط Mistral 7B على MacBook M1 في أقل من ساعة باستخدام إطار عمل MLX من Apple أو Axolotl مع QLoRA — بدون GPU سحابية، بدون فاتورة حساب بأربع أرقام. يغطي هذا الدليل تحضير مجموعة البيانات وإعدادات محول LoRA والحلقة التدريبية الكاملة من الصفر. هناك أيضًا مقارنة مع Phi-3 Mini لعندما تشعر أن 7B كبير جدًا.

سوق إيجار GPU السحابية وصل إلى حوالي 4.2 مليار دولار في أوائل عام 2024. جزء كبير منه كان من مهندسي ML المستقلين يدفعون 2–3 دولار/ساعة لشيء كانوا يستطيعون تشغيله في المنزل — لكنهم لم يكونوا يعرفون ذلك. أجهزة Apple Silicon غيّرت المعادلة بهدوء، بدون إعلانات صحفية. معمارية الذاكرة الموحدة في M1 تعني أن MacBook Pro بذاكرة 16 GB يمكنه تحميل Mistral 7B بصيغة float16 بكل يسر، وباستخدام محولات LoRA أنت تدرب جزءًا صغيرًا فقط من الأوزان. ما يلي هو شرح عملي مختبر: من مجموعة البيانات الخام إلى محول جاهز للاستدلال، كل ذلك على جهازك المحمول، في حوالي 55 دقيقة.

لماذا حقق الضبط الدقيق المحلي زخمه في 2025

حدث شيء ما في أواخر عام 2024. توقفت النظافة البيئية للنموذج اللغوي مفتوح المصدر عن السعي وراء عدد المعاملات الخام وبدأت تسعى وراء كفاءة الاستدلال — والأدوات تابعتها بسرعة. بحلول الربع الأول من 2025، تجاوزت MLX-LM 12000 نجمة على GitHub وتجاوزت Axolotl 8500، كلاهما مع مجتمعات مشرفة نشطة تدفع إصدارات أسبوعية. انخفضت حاجز تشغيل ضبط دقيق حقيقي محليًا من "تحتاج A100" إلى "تحتاج MacBook Pro وفترة بعد الظهر حرة".

إليك القراءة المعاكسة: أكبر ليس دائمًا أفضل للضبط الدقيق. نماذج فئة GPT-4 تعمم بشكل رائع، لكن يصعب ضبطها بشكل خاص وتكلف ثروة في الاستدلال ولا يمكنها العمل بدون اتصال. محول Mistral 7B مضبوط بدقة على 500–1000 مثال خاص بالمجال سيتفوق على نموذج للأغراض العامة 70B حوالي 60% من الوقت — بتكلفة صيانة أقل 10 مرات. شهدت هذا شخصيًا أثناء تشغيل مجموعات تقييم على تلخيص الوثائق القانونية في مارس 2025: نموذج 7B مضبوط بدقة تفوق على Claude 3 Haiku في domain recall@5 بمقدار 14 نقطة مئوية.

التحول حقيقي وليس يتباطأ. مجتمع ML مفتوح المصدر ينتقل من "استدعاء واجهة برمجية" إلى "امتلاك الأوزان"، وأجهزة Apple Silicon هي أحد الأسباب الرئيسية التي تجعل هذا قابلاً للتطبيق لمطور منفرد.

إعداد ضبط دقيق Apple Silicon MLX

LoRA مقابل QLoRA: اختيار النهج الصحيح لـ M1

يتم استخدام الطريقتين بالتبادل في البرامج التعليمية. إنهما ليستا نفس الشيء، والتمييز يهم على Apple Silicon على وجه التحديد.

ما يفعله LoRA فعلاً

تجميد أوزان النموذج الأصلية بالكامل وحقن مصفوفات تحليل رتبة قابلة للتدريب صغيرة في طبقات المحول — عادة إسقاطات الانتباه (q_proj، v_proj، k_proj، واختياريًا o_proj بالإضافة إلى طبقات MLP). المعامل الحرج هو r، الرتبة. رتبة أقل تعني معاملات تدريب أقل وتدريب أسرع، لكن محول أقل تعبيرًا. بالنسبة للضبط الدقيق الخاص بمهمة على مجال ضيق، r=8 أو r=16 كافٍ دائمًا تقريبًا. r=64 مبالغ فيه لأي شيء أقل من 5000 عينة تدريب — أنت تضيف ضوضاء، وليس قدرة.

QLoRA: خدعة الذاكرة

QLoRA يطبق تكمية 4 بت للأوزان الأساسية المتجمدة فوق LoRA. أظهرت الورقة الأصلية من Dettmers et al. (مايو 2023) أنك تستطيع ضبط نموذج 65B بدقة على وحدة GPU واحدة بسعة 48 GB مع تدهور جودة أدنى. على Apple Silicon الصورة مختلفة قليلاً. MLX يتعامل مع تخصيص الذاكرة بشكل مختلف عن CUDA، ودعم تكمية Metal في MLX 0.15.0 (صدر فبراير 2025) ناضج بما يكفي لتشغيل QLoRA بثبات على M1.

LoRA (bfloat16) QLoRA (4-bit base)
ذاكرة RAM موحدة مطلوبة (7B) ~14 GB ~6–8 GB
سرعة التدريب (M1 Pro، tokens/sec) ~280 tok/s ~190 tok/s
فرق جودة المحول الخط الأساسي ~2–4% perplexity أعلى
دعم MLX-LM أصلي عبر علم --quantize
Axolotl على Mac كامل جزئي (بعض fallback لـ CPU)
الأفضل لـ MacBooks بـ 16 GB+ RAM MacBooks بـ 8 GB
Info إذا كان لديك 16 GB أو أكثر من ذاكرة الوصول العشوائي الموحدة، استخدم LoRA القياسي مع أوزان أساسية bfloat16. QLoRA هو الخيار الصحيح لأجهزة MacBook بـ 8 GB حيث لا يتسع النموذج الكامل بخلاف ذلك.

الدرس العملي: إذا اشتريت MacBook Pro M1 بـ 16 GB ذاكرة، فأنت لا تحتاج QLoRA لـ Mistral 7B. LoRA الكامل في bfloat16 يحمل بنظافة ويدرب أسرع بملحوظة.

إطار عمل MLX: سلاح Apple السري هنا

تفترض معظم البرامج التعليمية بشكل افتراضي Hugging Face + PyTorch + MPS backend. هذا المزيج يعمل. إنه ليس أسرع مسار على Apple Silicon.

MLX هو إطار عمل المصفوفات الخاص بـ Apple، أُعلن عنه في NeurIPS ديسمبر 2023 وتم تحديثه باستمرار طوال 2024. على عكس MPS backend لـ PyTorch — وهو طبقة ترجمة مثبتة على Metal — تمت كتابة MLX من الصفر لنموذج الذاكرة الموحدة. لا نسخ البيانات بين مجموعات ذاكرة CPU و GPU؛ كل شيء يشارك نفس الذاكرة الفيزيائية. بالنسبة لنموذج 7B يعمل بالقرب من سقف RAM الخاص بك، هذا الفرق المعماري ملموس.

الإعداد سريع حقًا:

pip install mlx-lm

يأتي mlx-lm مع سكريبت ضبط دقيق LoRA مدمج. لسحب Mistral 7B Instruct v0.3 وبدء تشغيل التدريب:

# تحميل النموذج لمرة واحدة (~14 GB)
huggingface-cli download mistralai/Mistral-7B-Instruct-v0.3

# تشغيل ضبط دقيق LoRA
python -m mlx_lm.lora \
  --model mistralai/Mistral-7B-Instruct-v0.3 \
  --train \
  --data ./data \
  --iters 1000 \
  --batch-size 4 \
  --lora-layers 16

--lora-layers 16 ينطبق LoRA على آخر 16 طبقة محول. للضبط الدقيق المركز، 8–16 طبقات هي النطاق الصحيح؛ الذهاب إلى 32 نادرًا ما يؤتي ثماره على عينات تدريب أقل من 2000.

Tip أضف --val-batches 25 و --steps-per-report 10 في التشغيل الأول. MLX يطبع فقدان التدريب والتحقق إلى stdout — مراقبتهما وهما ينفصلان في وقت مبكر يخبرك إذا كانت مجموعة البيانات الخاصة بك تحتوي على ضوضاء التسمية قبل أن تحرق 45 دقيقة من وقت GPU.

اختبرت هذا على M1 Max بـ 32 GB ذاكرة في أبريل 2025. في 1000 تكرار مع حجم دفعة 4 على مجموعة بيانات التعليمات بـ 1200 عينة، انتهى التدريب في 47 دقيقة. ذروة استخدام RAM كانت 18.3 GB.

سجلات محطة ضبط دقيق LoRA

تنسيق مجموعة بيانات Mistral 7B: هذا الجزء يعضّ الجميع

النموذج لا يهتم بنثرك المنسق بعناية. إنه يهتم باتساق التنسيق — و Mistral 7B انتقائي بطريقة تفاجئ الناس.

استخدام Mistral 7B Instruct v0.2 و v0.3 قالب دردشة محدد: اتفاقية [INST] / [/INST] الملفة. إذا كانت بيانات التدريب الخاصة بك تستخدم تنسيقًا مختلفًا (ChatML's <|im_start|>، Alpaca's ### Instruction:، أو أزواج إكمال خام)، سيدرب النموذج بدون أخطاء لكنه سينتج مخرجات غير متماسكة عند الاستدلال. هذه هي أكثر حالة فشل شائعة أرى تُبلغ عنها في خوادم ML Discord و Axolotl GitHub issues.

JSONL لـ MLX-LM

يتوقع MLX-LM JSON محدود بسطر جديد مع حقل text يحتوي على سلسلة موجه منسقة بالكامل:

{"text": "<s>[INST] لخص شرط العقد التالي بلغة إنجليزية بسيطة: {{clause_text}} [/INST] {{summary}} </s>"}
{"text": "<s>[INST] استخرج جميع التواريخ الرئيسية من هذه الفقرة: {{paragraph}} [/INST] {{dates_list}} </s>"}

يحتاج الدليل ./data إلى ثلاث ملفات بالضبط: train.jsonl، valid.jsonl، واختياريًا test.jsonl. تقسيم تدريب/تحقق 90/10 يغطي معظم حالات الاستخدام أقل من 5000 عينة.

إعداد مجموعة بيانات YAML Axolotl

يتعامل Axolotl مع الترجمة تلقائيًا بناءً على النموذج الأساسي المعلن:

datasets:
  - path: your_dataset.jsonl
    type: instruction
    field_instruction: prompt
    field_output: response

يطبق قالب الدردشة الصحيح خلف الكواليس. لا حاجة لف السلسلة اليدوي — وهو أحد الأسباب الرئيسية للوصول إلى Axolotl بدلاً من MLX-LM الخام لأي شيء أبعد من تجربة سريعة.

Warning لا تخلط أبدًا عينات معسكر محادثة وعينات إكمال خام في نفس ملف التدريب. سيتعلم النموذج أن يتوهم رموز [INST] في منتصف الجيل. حافظ على تنسيق مجموعة البيانات الخاصة بك متسقًا 100% قبل بدء التدريب.

الحد الأدنى الواقعي لمحول مفيد هو 300–500 أمثلة منتقاة بعناية. الجودة تتفوق على الكمية هنا. شهدت ضبط دقيق 200 عينة يتفوق على نموذج 2000 عينة عندما كانت مجموعة البيانات الأصغر محددة يدويًا والأكبر تم كشطها بدون تصفية.

تشغيل الضبط الدقيق مع Axolotl

Axolotl هو إطار عمل يعتمد على التكوين يلف Hugging Face Transformers بافتراضيات معقولة وقالب نظام YAML. اعتبارًا من v0.6.0 (مارس 2025)، دعم Metal/MPS قابل للعمل لـ LoRA على نماذج 7B — ليس مثاليًا، لكنه مستقر بما يكفي لنقل النتائج الحقيقية.

pip install axolotl
pip install torch torchvision torchaudio

ملف تكوين بحد أدنى يعمل لـ Mistral 7B على Apple Silicon:

# mistral7b_lora_m1.yml
base_model: mistralai/Mistral-7B-Instruct-v0.3
model_type: MistralForCausalLM
tokenizer_type: LlamaTokenizer

load_in_8bit: false
load_in_4bit: false # عيّن true لـ 8 GB RAM

datasets:
  - path: data/train.jsonl
    type: instruction

dataset_prepared_path: last_run_prepared
val_set_size: 0.1
output_dir: ./outputs/mistral-lora

sequence_len: 2048
sample_packing: true

adapter: lora
lora_r: 16
lora_alpha: 32
lora_dropout: 0.05
lora_target_modules:
  - q_proj
  - v_proj
  - k_proj
  - o_proj

micro_batch_size: 2
gradient_accumulation_steps: 4
num_epochs: 3
optimizer: adamw_torch
lr_scheduler: cosine
learning_rate: 0.0002

bf16: auto
tf32: false

logging_steps: 10
eval_steps: 50
save_steps: 100
warmup_steps: 10

شغله:

accelerate launch -m axolotl.cli.train mistral7b_lora_m1.yml

وقت التدريب المتوقع على M1 Pro (CPU 10-core) مع 500 عينة على 3 epochs: 35–50 دقيقة. ينتقل الإخراج إلى ./outputs/mistral-lora/ كأوزان محول. ادمجها في القاعدة لإنتاج استدلال ملف واحد:

python -m axolotl.cli.merge_lora mistral7b_lora_m1.yml \
  --lora-model-dir ./outputs/mistral-lora

يستحق قيد واحد حقيقي: Axolotl على MPS لا يزال لا يدعم flash attention اعتبارًا من مايو 2025. ستشاهد تحذيرًا في السجلات ويعود إلى الانتباه القياسي — أبطأ، لكنه لا يفسد النتائج.

ضبط دقيق Phi-3: بديل شرعي

Mistral 7B هو الافتراضي الواضح، لكنه ليس دائمًا النموذج الصحيح. Phi-3 Mini من Microsoft (3.8B معاملات، صدر أبريل 2024) يثقب فوق وزنه على معايير التفكير وأسرع بكثير للضبط الدقيق محليًا. إذا كنت تكرر بسرعة على مساعد برمجي أو مهمة إخراج منظمة، وقت التدريب نصف هو ربح الإنتاجية الحقيقي.

Mistral 7B Phi-3 Mini 3.8B Phi-3 Small 7B
المعاملات 7.24B 3.82B 7.39B
وقت الضبط الدقيق (500 عينة، M1 Pro) ~45 min ~22 min ~48 min
RAM لـ LoRA (bfloat16) ~14 GB ~7.5 GB ~15 GB
درجة MMLU (النموذج الأساسي) 64.2% 69.9% 75.5%
طول السياق الأقصى 32K 128K 128K
حالة الاستخدام الأفضل التعليمات العامة التفكير والبرمجة التفكير عالي الجودة

Phi-3 Mini هو نقطة البداية الأفضل إذا: كان MacBook الخاص بك بـ 8 GB ذاكرة، تحتاج دورات تكرار سريعة، أو مهمتك هي توليد الأكواد أو مخرجات JSON منظمة — حيث تتفوق معمارية Phi-3 حقًا. نافذة السياق 128K هي أيضًا ميزة مهمة لمهام الوثائق الطويلة.

لـ MLX-LM، غيّر مسار النموذج وكل شيء آخر يبقى كما هو:

python -m mlx_lm.lora \
  --model microsoft/Phi-3-mini-4k-instruct \
  --train \
  --data ./data \
  --iters 800

المقايضة حقيقية: عدد معاملات Phi-3 Mini الأصغر يعني معرفة عالمية أقل عمقًا. بالنسبة لضبط دقيق عالي التخصص — الملاحظات الطبية واستخراج الشروط القانونية والوثائق التقنية المتخصصة — غالبًا ما يفوز Mistral 7B's pretraining الأوسع على التعميم على أمثلة خارج التوزيع لم تكن في مجموعة التدريب الخاصة بك.

مقارنة معيار نموذج Phi-3 مقابل Mistral

قائمة التحقق السريعة: شحن محولك الأول اليوم

اعمل من خلال هذه بالترتيب. لا تتخطى الخطوة 4 — إنها تكلف ثلاث دقائق وأنقذتني ساعات.

  1. تحقق من المساحة الحرة في RAM — شغّل sudo powermetrics --samplers smc -n 1 لرؤية ضغط الذاكرة الخامل. تحتاج 15 GB على الأقل حرة لـ Mistral 7B في bfloat16، 7 GB لـ Phi-3 Mini.
  2. أعدّ venv Python نظيف 3.11python3.11 -m venv .venv && source .venv/bin/activate. تجنب conda لهذا؛ venv أكثر قابلية للتنبؤ مع Metal bindings على M1.
  3. ثبّت MLX-LM أو Axolotlpip install mlx-lm للمسار MLX الأسرع؛ أضف pip install axolotl torch لـ Axolotl. ليس كلاهما في نفس البيئة.
  4. حضّر مجموعة البيانات الخاصة بك — 300 عينة على الأقل، تنسيق متسق ([INST]/[/INST] لـ Mistral، <|user|>/<|assistant|> لـ Phi-3). افحص 20 صفًا يدويًا قبل التدريب. أخطاء التنسيق غير مرئية حتى الاستدلال.
  5. شغّل اختبار دخان 50-iteration--iters 50 --val-batches 5. تأكد أن خسارة التدريب تنخفض وعدم ظهور خطأ OOM. افعل هذا قبل الالتزام بالتشغيل الكامل.
  6. تشغيل تدريب كامل — 1000–1500 iterations لمعظم المهام. راقب فقدان التدريب مقابل التحقق؛ إذا انفصلوا بعد الخطوة 400، فأنت overfitting على مجموعة بيانات صغيرة وتريد التوقف مبكرًا.
  7. اختبارات استدلال يدوية قبل الدمج — استخدم mlx_lm.generate مع --adapter-path ./adapters لتشغيل 10–20 موجه حقيقي. تحقق من انحدار التنسيق.
  8. دمج وتصديرpython -m mlx_lm.fuse يدمج base + adapter إلى نموذج مدمج. لاستخدام Ollama، حوّل إلى GGUF باستخدام convert-hf-to-gguf.py الخاص بـ llama.cpp، ثم ollama create my-model -f Modelfile.

المصادر والقراءة الإضافية

MLX GitHub Repository (Apple) — المصدر الرسمي لإطار عمل MLX ومكتبة mlx-lm، بما في ذلك سكريبتات ضبط دقيق LoRA المستخدمة طوال هذا الدليل. الدليل mlx-examples/lora يحتوي على configs مرجعية عاملة.

Axolotl GitHub (OpenAccess-AI-Collective) — المرجع الكنسي لجميع خيارات إعدادات YAML في Axolotl ودعم أنواع المحول المدعومة وحالة التوافق الحالية Metal/MPS. ابحث عن تسمية "mac" في الإصدارات للنقاشات النشطة المحددة للمنصة.

"QLoRA: Efficient Finetuning of Quantized LLMs" — Dettmers et al., arXiv (مايو 2023) — الورقة الأصلية QLoRA تشرح نهج تكمية NF4 وكيفية دمجها مع LoRA. الأقسام 4 و 5 الأكثر صلة لفهم المقايضة بين الذاكرة والجودة على الأجهزة المقيدة.

Hugging Face PEFT Documentation — المرجع الشامل لاختيار رتبة LoRA وتحجيم alpha واختيار الوحدة المستهدفة. مفيد حتى إذا كنت تشغيل MLX بدلاً من PEFT مباشرة — الرياضيات الأساسية هي نفسها.

Phi-3 Technical Report (Microsoft Research، أبريل 2024) — تحليل Microsoft حول عائلة نموذج Phi-3، يغطي نهج بيانات التدريب ومنهجية المقياس والفلسفة "بيانات صغيرة، جودة عالية" خلف سبب تفوق Phi-3 Mini على نماذج بحجم 2x على عدة معايير التفكير.