LeRobot documentation
دليل حسابات الأجهزة لتدريب LeRobot
دليل حسابات الأجهزة لتدريب LeRobot
تقدير تقريبي لتدريب سياسة LeRobot: مقدار ذاكرة VRAM التي تحتاجها كل سياسة، ومدة التدريب المتوقعة، وأين يجب التنفيذ عندما لا تكون الأجهزة المحلية كافية.
الأرقام أدناه توضيحية — وهي أرقام تقريبية من حيث الرتبة لاختيار العتاد، وليست تنبؤات دقيقة. يعتمد معدل الإنتاجية بشكل كبير على مدخلات ومخرجات مجموعة البيانات، ودقة الصورة، وحجم الدفعة، وعدد وحدات معالجة الرسومات.
الذاكرة حسب مجموعة السياسة
تتجمع السياسات حسب حجم العمود الفقري؛ وتوفر التقسيمات أدناه سقفًا ذاكرةً واحدة لكل مجموعة بدلاً من تكرار الأرقام لكل سياسة. تتوسع الذاكرة بشكل خطي تقريبًا مع حجم الدفعة؛ ويحمل AdamW (الافتراضي في LeRobot) حالة المُحسِّن التي تضيف ما يقارب 30–100% فوق مسار الأمامي والخلفي وحده.
| مجموعة | سياسات | ذروة ذاكرة VRAM (حجم الدفعة 8، AdamW) | بطاقات الرسوميات المناسبة للمبتدئين |
|---|---|---|---|
| BC خفيف | act, vqbet, tdmpc | ~2–6GB | بطاقة الرسوميات في الحاسوب المحمول (RTX 3060)، L4، A10G |
| الانتشار | diffusion, multi_task_dit | ~8–14GB | RTX 4070+ / L4 / A10G |
| VLA صغير | smolvla | ~10–16GB | RTX 4080+ / L4 / A10G |
| VLA كبير | pi0, pi0_fast, pi05, xvla, wall_x | ~24–40GB | A100 40 GB+ (24 GB ضيّق عند BS 1) |
| متعدد الوسائط | groot, eo1 | ~24–40GB | A100 40 GB+ |
| RL | sac | config-dep. | راجع دليل HIL-SERL |
هل المشكلة مرتبطة بالذاكرة؟ قلّل حجم الدفعة (بشكل خطي تقريبًا)، واستخدم تراكم التدرجات لاستعادة حجم الدفعة الفعّال، أو في حالة SmolVLA اترك freeze_vision_encoder=True.
وقت التدريب
عادةً ما يتقارب تعلّم التقليد في الروبوتات خلال 5–10 فترات تدريب على مجموعة البيانات، وليس مئات الآلاف من الخطوات الخام. بمجرد معرفتك لعدد الفترات، يكون الوقت الفعلي بشكل أساسي:
total_frames = sum of frames over all episodes # 50 ep × 30 fps × 30 s ≈ 45,000 steps_per_epoch = ceil(total_frames / (num_gpus × batch_size)) total_steps = epochs × steps_per_epoch wall_clock ≈ total_steps × per_step_time
يعتمد زمن كل خطوة على السياسة وبطاقة الرسوميات. الأرقام الواردة في الجدول أدناه هي نقاط مرجعية — اختر الصف الأقرب إلى إعداداتك وقم بالتعديل خطيًا باستخدام total_steps إذا كنت تدرب لفترة أطول أو أقصر.
السيناريوهات الشائعة
زمن التنفيذ التقريبي لـ 5 فترات على مجموعة بيانات من ~50 حلقة (~45 ألف إطار بمعدل 30 إطارًا في الثانية × 30 ثانية)، مع المُحسِّن الافتراضي (AdamW) وصور بدقة 640×480:
| الإعداد | سياسة | دفعة | الوقت الفعلي |
|---|---|---|---|
| RTX 4090 / RTX 3090 واحدة (24 جيجابايت) | act | 8 | ~30–60 دقيقة |
| RTX 4090 / RTX 3090 واحدة (24 جيجابايت) | diffusion | 8 | ~2–4h |
| وحدة L4 / A10G واحدة (24 جيجابايت) | act | 8 | ~1–2h |
| وحدة L4 / A10G واحدة (24 جيجابايت) | smolvla | 4 | ~3–6h |
| وحدة A100 واحدة بسعة 40 جيجابايت | smolvla | 16 | ~1–2h |
| وحدة A100 واحدة بسعة 40 جيجابايت | pi0 / pi05 | 4 | ~4–8h |
عقدة 4× H100 80 GB (accelerate) | diffusion | 32 | ~30–60 دقيقة |
عقدة 4× H100 80 GB (accelerate) | smolvla | 32 | ~1–2h |
| Apple Silicon M1/M2/M3 Max (MPS) | act | 4 | ~6–14h |
هذه أرقام تقريبية من حيث الرتبة. تتباعد النتائج الفعلية بنسبة ±50% اعتمادًا على دقة الصورة، ومدخلات ومخرجات مجموعة البيانات، وخيوط محمّل البيانات، ونوع بطاقة GPU المحدد. وهي مفيدة كحدس للإجابة عن سؤال «هل ستستغرق هذه العملية ساعة أم يومًا؟»، وليست التزامات بمستوى الخدمة (SLAs).
تعدّ بطاقة GPU متعددة أمراً بالغ الأهمية
accelerate launch --num_processes=N هو الأسهل لتقليل وقت التدريب. يعالج كل خطوة مُحسِّن N × batch_size عينة في وقت حقيقي تقريبي مماثل لخطوة بطاقة GPU واحدة، لذا فإن 4 بطاقات GPU تعني تسريعًا يقارب 4 أضعاف للتشغيلات المحددة بالحساب. راجع دليل التدريب متعدد بطاقات GPU للإعداد الكامل.
نقاط بيانات مرجعية على عناقيد 4×H100 80 GB (accelerate launch --num_processes=4)، 5000 خطوة، حجم دفعة 32، AdamW، مجموعة بيانات imstevenpmwork/super_poulain_draft (حوالي 50 حلقة، صور بحجم 640×480 تقريبًا):
| سياسة | الوقت الفعلي | update_s | dataloading_s | استخدام وحدة المعالجة الرسومية | أعلام بارزة |
|---|---|---|---|---|---|
diffusion | 16m 17s | 0.167 | 0.015 | ~90% | القيم الافتراضية (التدريب من الصفر) |
smolvla | 27m 49s | 0.312 | 0.011 | ~80% | --policy.path=lerobot/smolvla_base, freeze_vision_encoder=false, train_expert_only=false |
pi05 | 3h 41m | 2.548 | 0.014 | ~95% | --policy.pretrained_path=lerobot/pi05_base، gradient_checkpointing=true، dtype=bfloat16، مُرمِّز الرؤية + الخبير مُدرَّب |
تفصل سجلات التدريب التكرار الكامل إلى dataloading_s (next(dl_iter))، وpreprocessing_s (تحويل الصور وخط أنابيب السياسة)، وupdate_s (تحديث المُحسِّن). يغطي step_s جميع
الجزءات الثلاث ويقود samples_per_s. يسبق المعيار أعلاه هذا التقسيم، لذا فإن dataloading_s الخاص به يتضمن
المعالجة المسبقة.
الجدولة ونقاط التفتيش
إذا قمت بتقصير التدريب (مثل 5k–10k خطوة على مجموعة بيانات صغيرة)، فقصّر جدول معدل التعلم أيضًا باستخدام --policy.scheduler_decay_steps≈--steps. وإلا فإن معدل التعلم سيبقى قريبًا من ذروته ولن يتناقص أبدًا. الأمر نفسه ينطبق على --save_freq.
أين يتم التشغيل
ذاكرة VRAM هي المعيار الأول. ضمن الفئة الواحدة، اختر بناءً على الميزانية والتوفر — الأعمدة $–$$$$ نسبية؛ تحقق من الأسعار الحالية لدى المزود الذي تستخدمه فعليًا.
| فئة | VRAM | الدرجة | مريح لـ |
|---|---|---|---|
| RTX 3090 / 4090 (استهلاكية) | 24 جيجابايت | $ | BC الخفيف، الانتشار، SmolVLA. ضيق عند حجم الدفعة 1 لـ VLAs. |
| L4 / A10G (سحابي) | 24 جيجابايت | $–$$ | نفس الغلاف؛ شائع في Google Cloud وRunPod وAWS g5/g6. |
| A100 40 GB | 40 جيجابايت | $$$ | أي سياسة عند أحجام دفعات معقولة. |
| A100 80 GB / H100 80 GB | 80 جيجابايت | $$$$ | عناقيد متعددة المعالجات الرسومية؛ دفعات كبيرة لنماذج VLA. |
| التشغيل على المعالج فقط | — | — | لا تدرب. استخدم Colab أو استأجر وحدة معالجة رسومية (GPU). |
وظائف Hugging Face
يتيح لك Hugging Face Jobs تنفيذ التدريب على بنية HF التحتية المُدارة، مع احتساب الفاتورة بالثانية، دون الحاجة إلى امتلاك وحدة معالجة رسومية. يقوم lerobot-train بإرسال المهمة وبثها نيابةً عنك — ما عليك سوى إضافة --job.target=<flavor> إلى أمر تدريب عادي:
lerobot-train \ --policy.type=act --dataset.repo_id=<USER>/<DATASET> \ --policy.repo_id=<USER>/act_<task> \ --job.target=a10g-large
ملاحظات:
- شغّل
hf auth loginمرة واحدة قبل الإرسال، حيث يعمل المهمة تحت رمزك. - يتوافق
--job.targetمع الجدول أعلاه:t4-small/t4-medium(T4، ACT فقط)،l4x1/l4x4(L4 24 GB)،a10g-small/large/largex2/largex4(A10G 24 GB مع التوسع الأفقي)،a100-large(A100). لعرض الكتالوج الحالي مع الأسعار، استخدمhf jobs hardware، أو راجع https://huggingface.co/docs/hub/jobs. - يتم تعيين مهلة افتراضية للعمل على
2d(48 ساعة). يمكنك تجاوزها باستخدام--job.timeout=4h(أو أي سلسلة مدة صالحة أخرى) لتقصير المهلة أو إطالتها. يتوقف العمل تلقائياً عند اكتمال الأمر. - للاطلاع على الشرح الكامل — رفع مجموعة البيانات، بث نقاط التفتيش، استئناف التشغيل على مهمة — راجع دليل تدريب التعلم بالتقليد.