LeRobot documentation

دليل حسابات الأجهزة لتدريب LeRobot

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.6.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

دليل حسابات الأجهزة لتدريب 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–14GBRTX 4070+ / L4 / A10G
VLA صغيرsmolvla~10–16GBRTX 4080+ / L4 / A10G
VLA كبيرpi0, pi0_fast, pi05, xvla, wall_x~24–40GBA100 40 GB+ (24 GB ضيّق عند BS 1)
متعدد الوسائطgroot, eo1~24–40GBA100 40 GB+
RLsacconfig-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 جيجابايت)act8~30–60 دقيقة
RTX 4090 / RTX 3090 واحدة (24 جيجابايت)diffusion8~2–4h
وحدة L4 / A10G واحدة (24 جيجابايت)act8~1–2h
وحدة L4 / A10G واحدة (24 جيجابايت)smolvla4~3–6h
وحدة A100 واحدة بسعة 40 جيجابايتsmolvla16~1–2h
وحدة A100 واحدة بسعة 40 جيجابايتpi0 / pi054~4–8h
عقدة 4× H100 80 GB (accelerate)diffusion32~30–60 دقيقة
عقدة 4× H100 80 GB (accelerate)smolvla32~1–2h
Apple Silicon M1/M2/M3 Max (MPS)act4~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_sdataloading_sاستخدام وحدة المعالجة الرسوميةأعلام بارزة
diffusion16m 17s0.1670.015~90%القيم الافتراضية (التدريب من الصفر)
smolvla27m 49s0.3120.011~80%--policy.path=lerobot/smolvla_base, freeze_vision_encoder=false, train_expert_only=false
pi053h 41m2.5480.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 GB40 جيجابايت$$$أي سياسة عند أحجام دفعات معقولة.
A100 80 GB / H100 80 GB80 جيجابايت$$$$عناقيد متعددة المعالجات الرسومية؛ دفعات كبيرة لنماذج 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 (أو أي سلسلة مدة صالحة أخرى) لتقصير المهلة أو إطالتها. يتوقف العمل تلقائياً عند اكتمال الأمر.
  • للاطلاع على الشرح الكامل — رفع مجموعة البيانات، بث نقاط التفتيش، استئناف التشغيل على مهمة — راجع دليل تدريب التعلم بالتقليد.
Update on GitHub