דמיינו שאפליקציית הייעוץ הרפואי שלכם ל-iOS צריכה לענות על שאלות ספציפיות באמצעות מודל שפה גדול. כוונון מלא (Full Fine-Tuning) של Llama 3 8B ידרוש קלאסטר A100 עם 80 GB של VRAM וכמה ימי אימון. אבל יש LoRA — הסתגלות בדרגה נמוכה (Low-Rank Adaptation). הוא מקפיא את המשקולות המקוריות ומאמן מטריצות מתאם קומפקטיות. A100 יחיד עם 40GB מתמודד עם זה בשעות, והמתאם שוקל 50–300 MB במקום 16 GB. החיסכון בשכירת GPU מגיע ל-70–90%, ובעלות שכירות טיפוסית של A100 של ~$1.5 לשעה, זה מתורגם לעשרות אלפי דולרים שנחסכים לכל פרויקט. אנו משתמשים בשיטה זו בעשרות פרויקטים ניידים — מצ'אטבוטים משפטיים ועד יצירת תוכן.
היבטים טכניים של LoRA
עקרון הפעולה
מטריצת המשקולות המקורית W בגודל d × k נשארת ללא שינוי. במקום זאת, אנו מאמנים שתי מטריצות בדרגה נמוכה: A (גודל d × r) ו-B (גודל r × k), כאשר r הוא דרגת ההסתגלות (בדרך כלל 8–64). במהלך ההסקה, אנו מחשבים: W_new = W + α · (A × B), כאשר α הוא מקדם הסקלה.
היפרפרמטרים מרכזיים:
-
r(דרגה) — ערכים גבוהים יותר משמעותם יותר פרמטרים הניתנים לאימון.r=16היא נקודת התחלה סבירה. -
lora_alpha— בדרך כלל שווה ל-2rאוr. שולט בעוצמת ההסתגלות במהלך מיזוג. -
target_modules— אילו שכבות להתאים. עבור טרנספורמרים:q_proj, v_proj, k_proj, o_projואופציונליתgate_proj, up_proj, down_proj. -
lora_dropout— רגולריזציה, 0.05–0.1 עבור מערכי נתונים קטנים.
| דרגה (r) | פרמטרי מתאם | VRAM עם QLoRA (4bit) | יישום מומלץ |
|---|---|---|---|
| 8 | ~0.5% מהבסיס | ~5.5 GB (8B) | סיווג פשוט |
| 16 | ~1% | ~5.8 GB (8B) | יצירת טקסט |
| 32 | ~2% | ~6.3 GB (8B) | משימות הוראה |
| 64 | ~4% | ~7.2 GB (8B) | תרחישים מורכבים |
למה LoRA במקום כוונון מלא?
כוונון מלא דורש משאבים וזמן עצומים, עם נקודות שמירה בגודל עשרות גיגה-בייט. LoRA מספק את אותה יכולת הסתגלות למשימה ספציפית בשבריר מהעלות. עבור אפליקציות ניידות, זה חשוב במיוחד — ניתן לשפר את המודל באופן איטרטיבי במהירות ללא השבתה או אימון מחדש של הבסיס כולו. גישה זו מתוארת בעבודה QLoRA: Efficient Finetuning of Quantized Language Models.
הכנת מערך נתונים ואימון
איסוף נתונים והרחבה
אספו 300 עד 500 דוגמאות מתויגות בפורמט "הוראה → תשובה". עבור הסתגלות לתחום (למשל, ייעוץ משפטי), יש צורך בדיאלוגים רלוונטיים ומנוקים מרעש. אנו משתמשים בהרחבה סינתטית באמצעות GPT-4 ובדיקות איכות ידניות. מערך הנתונים מחולק לאימון/ולידציה (80/20) ומתומלל עם max_seq_length=2048.
QLoRA עם Unsloth
Unsloth מאיץ את אימון LoRA פי 2–5 בהשוואה ל-PEFT הרגיל באמצעות ליבות CUDA מותאמות אישית:
from unsloth import FastLanguageModel
import torch
model, tokenizer = FastLanguageModel.from_pretrained(
model_name="unsloth/Meta-Llama-3.1-8B-Instruct",
max_seq_length=2048,
dtype=torch.float16,
load_in_4bit=True # QLoRA: 4-bit quantization + LoRA
)
model = FastLanguageModel.get_peft_model(
model,
r=16,
target_modules=["q_proj", "v_proj", "k_proj", "o_proj", "gate_proj", "up_proj", "down_proj"],
lora_alpha=32,
lora_dropout=0.05,
bias="none",
use_gradient_checkpointing="unsloth"
)QLoRA הוא LoRA המיושם על גבי קוונטיזציה של 4-bit של המודל הבסיסי. Llama 3 8B ב-4-bit תופס ~5 GB VRAM במקום 16 GB ב-fp16. ה-GPU המינימלי לאימון QLoRA הוא RTX 3090 (24 GB) או A100 שכור.
אינטגרציה: בצד השרת או במכשיר?
פריסה בצד השרת (vLLM/Ollama)
לאחר האימון, המתאם נשמר בנפרד מהמודל הבסיסי. המודל הבסיסי נטען על השרת, והמתאם מוחל בזמן האתחול או בזמן הריצה. האפליקציה הניידת מתקשרת עם נקודת קצה API — ללא עומס מודל על המכשיר.
# vLLM с LoRA адаптером
vllm serve meta-llama/Llama-3.1-8B-Instruct \
--enable-lora \
--lora-modules my-adapter=/path/to/lora/adapter במכשיר (llama.cpp/Core ML)
אם נדרשים זמן אחזור מינימלי, פעולה לא מקוונת או פרטיות נתונים, שקלו פריסה במכשיר. זה מתאים למודלים עד 3B פרמטרים עם מתאם LoRA ממוזג ל-GGUF Q4_K_M. עבור מודלים גדולים יותר או משימות מורכבות, פריסה בצד השרת עדיפה.
| מאפיין | צד השרת (vLLM/Ollama) | במכשיר (llama.cpp/Core ML) |
|---|---|---|
| זמן אחזור | 100–500 אלפיות השנייה (רשת) | 10–50 אלפיות השנייה (מקומי) |
| דרישות מכשיר | כל מכשיר עם אינטרנט | iPhone 14+ / Galaxy S23+, 6+ GB RAM |
| גודל מודל במכשיר | לא מאוחסן | 2–3 GB (GGUF Q4_K_M) |
| עדכון מתאם | מיידי | דורש עדכון אפליקציה |
| עלות תשתית | שכירת GPU | חינם לאחר הפריסה |
פריסה במכשיר באמצעות llama.cpp / Core ML אפשרית רק עבור מודלים קטנים עם מיזוג משקולות (merge + GGUF). עבור מכשירים ניידים, אפשרויות מעשיות: Llama 3.2 3B או Phi-3.5-mini 3.8B עם מתאם LoRA ממוזג ל-GGUF Q4_K_M. גודל המודל הסופי הוא 2–3 GB, המתאים ליכולות של iPhone 14+ ו-Galaxy S23+.
# Слияние весов перед экспортом в GGUF
merged_model = model.merge_and_unload()
merged_model.save_pretrained("./merged-model")
# Далее: llama.cpp convert + quantize → .gguf файлב-iOS, GGUF כזה מופעל באמצעות from unsloth import FastLanguageModel import torch model, tokenizer = FastLanguageModel.from_pretrained( model_name="unsloth/Meta-Llama-3.1-8B-Instruct", max_seq_length=2048, dtype=torch.float16, load_in_4bit=True # QLoRA: 4-bit quantization + LoRA ) model = FastLanguageModel.get_peft_model( model, r=16, target_modules=["q_proj", "v_proj", "k_proj", "o_proj", "gate_proj", "up_proj", "down_proj"], lora_alpha=32, lora_dropout=0.05, bias="none", use_gradient_checkpointing="unsloth" ) או באמצעות # vLLM с LoRA адаптером vllm serve meta-llama/Llama-3.1-8B-Instruct \ --enable-lora \ --lora-modules my-adapter=/path/to/lora/adapter (אם הומר ל-Core ML באמצעות # Слияние весов перед экспортом в GGUF merged_model = model.merge_and_unload() merged_model.save_pretrained("./merged-model") # Далее: llama.cpp convert + quantize → .gguf файл ). באנדרואיד — llama.swift דרך JNI או MediaPipe LLM Inference API עבור מודלי Gemma.
תהליך ולוח זמנים
שלבי עבודה
- ניתוח משימה והכנת מערך נתונים — איסוף, ניקוי, הרחבה (1–2 שבועות).
- הקמת סביבה — בחירת מודל בסיס, התקנת Unsloth, PEFT (1–2 ימים).
- אימון QLoRA — הרצת אימון על GPU עם קוונטיזציה של 4-bit (מכמה שעות עד יומיים).
- המרת מתאם — מיזוג משקולות, קוונטיזציה ל-GGUF (2–3 ימים).
- אינטגרציה לאפליקציה — API שרת דרך vLLM או במכשיר דרך Core ML/llama.cpp (2–4 ימים).
- בדיקות ואופטימיזציה — בדיקות איכות, כוונון זמן אחזור, שיפורים (3–5 ימים).
לוח זמנים משוער
הכנת מערך נתונים — 1–2 שבועות. הקמה ואימון — 1–2 ימים. המרה ובדיקות — 2–3 ימים. אינטגרציית API שרת — 2–4 ימים. מחזור מלא — 2 עד 4 שבועות. העלות מחושבת באופן אישי לפי מורכבות המשימה.
טעויות נפוצות וכיצד להימנע מהן
בחירה שגויה של target_modules. אם אתם מתאימים רק MLModel ומדלגים על שכבות MLP, היעילות יורדת ב-30–50%. עבור משימות מעקב אחר הוראות, תמיד כללו את coremltools.
מערך נתונים קטן מדי. LoRA עם 50–100 דוגמאות מוביל להתאמת יתר: המודל זוכר דוגמאות אך אינו מכליל. יש צורך במינימום של 300–500 דוגמאות מגוונות.
משקולות בסיס לא קפואות במהלך מיזוג. לאחר llama.cpp, ודאו שהמשקולות המקוריות לא השתנו בהשוואה למודל הבסיס — זה מאותת על פעולת LoRA תקינה.
מה אנחנו מציעים
היקף השירות
- ניתוח משימה והכנת מערך נתונים (איסוף, ניקוי, הרחבה)
- הקמת סביבה והשקת אימון (Unsloth + PEFT, QLoRA)
- המרת מתאם (מיזוג, קוונטיזציה ל-GGUF)
- אינטגרציה: API שרת (vLLM/Ollama) או במכשיר (Core ML/llama.cpp)
- בדיקות ביצועים ואופטימיזציה
- תיעוד והדרכה לצוות שלכם
אנו מלווים את הפרויקט בכל השלבים ומבטיחים תוצאות. צרו קשר כדי להעריך את הפרויקט שלכם ולקבל ייעוץ. הזמינו ייעוץ — נעזור לכם לשלב LLM באפליקציה הניידת שלכם במהירות וביעילות.
הבטחות וניסיון
- 6+ שנות ניסיון בפיתוח פתרונות AI ניידים
- מעל 50 פרויקטים מוצלחים של כוונון LLM
- ידע מעמיק בטכנולוגיות: Swift, Kotlin, Flutter, React Native, Unsloth, PEFT
- גישה אישית והבטחת איכות
הזמינו שירות הסתגלות LoRA — ונעזור לכם לשלב LLM באפליקציה הניידת שלכם במהירות וביעילות.







