
تدريب محول تقسيم الإجراءات (Action Chunking Transformer) من الصفر على SO-100 باستخدام lerobot: إعدادات act، وchunk_size، وn_action_steps، وجدول 100000 خطوة، واستدلال 20 مللي ثانية.
ACT هو الاستثناء بين سياسات SO-100. GR00T N1.7 و N1.5 يبدآن من nvidia/GR00T-N1.7-3B و nvidia/GR00T-N1.5-3B، و Pi0.5 من lerobot/pi05_base. ACT يبدأ من الصفر: لا توجد نقطة تحقق أساسية، لأنه ليس نموذجًا تأسيسيًا. إنه محول بحدود 80 مليون معلمة تقوم بتدريبه من الصفر على مهمة واحدة، على ذراعك، تحت إضاءتك.
هذا هو السبب أيضًا في أنه ينفذ خطوة تحكم في 20 مللي ثانية بينما يحتاج VLA ذو 3 مليارات معلمة إلى 152 إلى 485 مللي ثانية، ويكلف 1 إلى 3 دولار أمريكي لكل تشغيل بدلاً من 4 إلى 12. يشرح هذا الدليل المسار اليدوي مع lerobot على SO-100: التسجيل، إعدادات act، ما الذي تتحكم فيه chunk_size و n_action_steps، جدول الـ 100000 خطوة، والتنفيذ. ثم نفس المهمة على AY-Robots، بما في ذلك الجوانب التي لا تساعد فيها المنصة.
ما تحتاج لمعرفته
- •ACT يتدرب من الصفر: لا يوجد نموذج أساسي، لا تدريب مسبق، لا إدخال لغوي. نقطة تحقق واحدة، مهمة واحدة.
- •الورقة البحثية: حوالي 80 مليون معلمة، حوالي 5 ساعات على بطاقة RTX 2080 Ti بسعة 11 جيجابايت، استدلال في 0.01 ثانية.
- •إعدادات lerobot الافتراضية: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 steps, seed 1000.
- •على AY-Robots: 20 مللي ثانية لكل خطوة، الأسرع بين الخمسة. 50 حلقة كحد أدنى، LeRobot v3.0، بطاقة 24 جيجابايت، 1 إلى 3 دولار أمريكي لكل تشغيل.
- •يفوز في مهمة رآها، ويخسر في اللحظة التي تريد فيها تكييفًا لغويًا.
تم التحقق في 23 أغسطس 2026 مقابل lerobot 0.6.x: pyproject.toml on main reads version = "0.6.2", newest tag v0.6.1, 3 August 2026. دليل تعليمي يبدأ بـ python lerobot/scripts/train.py يسبق نقاط إدخال وحدة التحكم lerobot-train, lerobot-record and lerobot-rollout.
ما هو ACT في الواقع
تأتي تقنية Action Chunking with Transformers من ورقة ALOHA البحثية، تعلم التلاعب الثنائي الدقيق باستخدام أجهزة منخفضة التكلفة، بقلم Zhao, Kumar, Levine و Finn, arXiv, 23 أبريل 2023. يسجل الجهاز بمعدل 50 Hz باستخدام أربع كاميرات ويب تبث بدقة 480x640 بمعدل 30 fps: اثنتان على القابضات، واحدة علوية، وواحدة أمامية. يدعي الملخص تحقيق ست مهارات بنسبة نجاح تتراوح من 80 إلى 90 percent، من بينها فتح كوب توابل شفاف وإدخال بطارية، وذلك من 10 minutes من العروض التوضيحية.
يكون النص الأساسي أكثر فائدة عند التخطيط لجلسة تسجيل: 50 demonstrations لكل مهمة، باستثناء Thread Velcro عند 100، وهو ما يمثل من 10 إلى 20 minutes من البيانات ومن 30 إلى 60 minutes من الوقت الفعلي بمجرد احتساب عمليات إعادة الضبط. النجاح ليس موحدًا أيضًا: Thread Velcro ينتهي عند 20 percent، Put On Shoe عند 92، Cup Open 84، Prep Tape 64.
| المعلمة الفائقة | ورقة ALOHA، الجدول III | lerobot على الفرع الرئيسي |
|---|---|---|
| معدل التعلم | 1e-5 | optimizer_lr = 1e-5 |
| حجم الدفعة | 8 | batch_size = 8, in TrainPipelineConfig not ACTConfig |
| طبقات المشفر / فك التشفير | 4 / 7 | n_encoder_layers = 4 / n_decoder_layers = 1 |
| حجم الكتلة k | 100 | chunk_size = 100 |
| البعد الكامن لـ z | غائب؛ يظهر Fig. 11 إسقاطًا من 32 إلى 512 | latent_dim = 32 |
| التجميع الزمني | غائب؛ --temporal_agg في الكود المرجعي | temporal_ensemble_coeff = None |
تذكر الورقة 7 طبقات لفك التشفير، بينما lerobot يشحن طبقة واحدة، عن قصد. يشير التعليق في `configuration_act.py` إلى أن التنفيذ الأصلي يحتوي على خطأ يعني أن الطبقة الأولى فقط هي المستخدمة، مستشهدًا بـ المشكلة 25 في tonyzhaozh/act: يقرأ رأس الإجراء `hs[0]`، لذا تعمل جميع الطبقات السبع ولكن الإخراج الأول فقط يصل إلى التنبؤ. هذه المشكلة مفتوحة وبدون إجابة منذ 23 April 2024. يتطابق lerobot مع السلوك الذي أنتج النتائج المنشورة، وليس الرقم المطبوع. ارفع `--policy.n_decoder_layers` وستقوم بتدريب نموذج لم تقم الورقة بتقييمه أبدًا.
تجزئة الإجراءات هي الفكرة الأساسية
يُعيّن الاستنساخ السلوكي العادي ملاحظة واحدة لإجراء واحد، وتتراكم الأخطاء: يؤدي الانحراف إلى خروج الذراع عن التوزيع، مما ينتج عنه إجراء أسوأ، وبعد ثلاثين خطوة يكون القابض بعيدًا عن الكائن. تجزئة الإجراءات يتنبأ بـ k إجراءات في وقت واحد وينفذها، مما يقلل الأفق الفعال بمعامل k. كما يتعامل مع إزعاج خاص بالبيانات البشرية: يتوقف المشغلون عن بعد، والسياسة أحادية الخطوة لا يمكنها نمذجة توقف يعتمد على ما سبق.
تُجري الورقة دراسة استقصائية لـ k بدلاً من تأكيده. مع إيقاف التجميع الزمني، وبمتوسط أربع إعدادات، يرتفع النجاح من 1 percent عند k = 1 إلى 44 percent عند k = 100، ثم يتناقص عند 200 و 400 مع اقتراب السياسة من التحكم في الحلقة المفتوحة. هذا المنحنى هو السبب في أن القيمة الافتراضية هي 100.
- chunk_size: عدد الإجراءات المستقبلية التي يتنبأ بها المفسّر لكل تمريرة أمامية. الافتراضي 100.
- n_action_steps: عدد الإجراءات التي تنفذها قبل الاستعلام مرة أخرى. الافتراضي 100، لذا يقوم lerobot بتشغيل الكتلة بأكملها في حلقة مفتوحة.
- يتحقق lerobot من أن
n_action_steps <= chunk_sizeويرفعValueErrorإذا قمت بتعيينها بشكل معكوس.
ما يهم تشغيليًا هو حجم الكتلة (chunk_size) مقسومًا على معدل الإطارات. عند 30 إطارًا في الثانية التي تستخدمها أمثلة SO-100 الخاصة بـ lerobot، تلتزم كتلة من 100 إجراء بحوالي 3.3 ثانية من ملاحظة واحدة. إذا كانت المهمة تتطلب تصحيحًا داخل تلك النافذة، فقم بتخفيض n_action_steps، وليس chunk_size: فأنت تحتفظ بالتنبؤ الطويل وتعيد الملاحظة بشكل متكرر.
# predict 100 actions, re-query after 25 of them (about 0.8 s at 30 fps)
lerobot-train \
--dataset.repo_id=${HF_USER}/so100_cube \
--policy.type=act \
--policy.chunk_size=100 \
--policy.n_action_steps=25 \
--policy.device=cudaعند تعيين --policy.temporal_ensemble_coeff، يتطلب lerobot أن يكون n_action_steps = 1، ويرفع NotImplementedError بخلاف ذلك. يقوم التجميع بالاستعلام عن السياسة في كل خطوة زمنية ويمزج التنبؤات المتداخلة لتلك الخطوة الزمنية بأوزان w_i = exp(-m * i)، حيث يحصل الأقدم على w_0. تشير الورقة إلى أنه يبلغ 3.3 بالمائة لـ ACT: وهو تأثير حقيقي ولكنه متواضع، ويضاعف عدد الاستدلالات بطول الكتلة. يمكن تحمله عند 20 مللي ثانية لكل خطوة، وليس عند 485 مللي ثانية. انظر زمن استجابة الاستدلال.
عندما يتفوق ACT على نموذج أساسي
السياسات الخمس القابلة للتدريب جنبًا إلى جنب، مع الأرقام التي تقيسها AY-Robots وتستخدمها لتحديد حجم وحدة معالجة الرسوميات (GPU) التي تستأجرها.
| السياسة | العائلة | المعلمات | لكل خطوة | فئة وحدة معالجة الرسوميات | الحد الأدنى للحلقات | مجموعة البيانات |
|---|---|---|---|---|---|---|
| ACT | محول التقطيع، من الصفر | ~80 M | 20 ms | RTX 4090 / 24 GB | 50 | LeRobot v3.0 |
| SmolVLA | VLA مدمج | ~450 M | 245 ms | RTX 4090 / 24 GB | 30 | LeRobot v3.0 |
| GR00T N1.7 | أساس VLA، رأس الانتشار | ~3 B (~40 M trained) | 152 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| GR00T N1.5 | أساس VLA، سلف | ~3 B | 165 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| Pi0.5 | VLA لمطابقة التدفق، انظر مطابقة التدفق | ~3 B, PaliGemma backbone | 485 ms | A100 / H100 80 GB | 50 | LeRobot v3.0 |

- 20 ms لكل خطوة عمل، الأسرع من بين الخمسة، على بطاقة 24 GB وليست A100.
- 1 إلى 3 USD لكل تشغيل مقابل 4 إلى 12 دولارًا للفئة 3 B.
- دقيق في الأعمال التي تتطلب احتكاكًا والتي رآها: 88 و 96 بالمائة على Slide Ziploc و Slot Battery، حيث لم تتجاوز الطرق السابقة المرحلة الأولى.
- لا يوجد تكييف لغوي: يتم تجاهل سلسلة المهام، لذا فإن نقطة تحقق واحدة هي مهمة واحدة.
- لا توجد أولويات دلالية: كل ما يعرفه جاء من 50 حلقة تدريبية.
- تعميم ضيق: حرك الكاميرا وستحتاج إلى إعادة التدريب.
- يفشل بصمت: ينخفض الخسارة، لا يفعل الذراع شيئًا، السجلات لا تقول شيئًا.
- ميزة السرعة تساعد فقط إذا كان الاستدلال يتم بجانب المحركات المؤازرة.
اختر ACT عندما تكون المهمة والمشهد ثابتين ويجب أن تكون الحركة سريعة ودقيقة. اختر عندما يجب أن تغطي نقطة تحقق واحدة عدة تعليمات. صفحتان تقارنان القرار وجهاً لوجه: و . بالنسبة للمعايير المنشورة، يربط كل رقم بمصدره.
ما تحتاجه قبل أن تبدأ
ذراع تابع واحد، ذراع قائد واحد لـ ، كاميرا واحدة على الأقل، وحدة معالجة رسوميات (GPU) بسعة 24 GB. يقرأ ACT الصور ومواضع المفاصل فقط. الكاميرتان هما الحل الأمثل: عرض أمامي ثابت لمكان الأشياء، وكاميرا معصم لما هو على وشك أن يلمسه ، كما هو الحال في ALOHA.
| الذراع | المحركات المؤازرة | الجهد | تكلفة الأجزاء | الحالة |
|---|---|---|---|---|
| SO-100 | Feetech STS3215 | 7.4 V | ~110 to 150 EUR | دعم كامل، ذراع مرجعي |
| SO-101 | Feetech STS3215 | 7.4 V | ~130 to 170 EUR | دعم كامل |
| Koch v1.1 | Dynamixel XL330 / XL430 | 5 V and 12 V rails | ~250 to 350 EUR | متوافق |
| LeKiwi | Feetech STS3215 (arm) | ذراع 7.4 V، قاعدة 12 V | ~400 to 500 EUR | متوافق |
يعمل SO-100 و SO-101 بمحركات Feetech STS3215 المؤازرة على مسار 7.4 V. تغذيتها بـ 12 V يدمرها، بهدوء كافٍ يجعل الناس يلومون البرمجيات أولاً، ومصدر طاقة Koch 12 V يتناسب مادياً مع لوحة SO-100. تحقق من الملصق. الأعراض: المحرك المؤازر لا يستجيب، الذراع يرتعش ثم يترهل. أيضاً SO-100 مقابل SO-101.
من الذراع المجرد إلى مجموعة البيانات المسجلة
التدفق أدناه هو lerobot 0.6.x. تخطاه إذا كان لديك ذراع معاير ومجموعة بيانات. وإلا فإن دليل البدء لـ SO-100، يغطي التجميع، و شرح التسجيل يغطي الالتقاط و وثائق مجموعة البيانات التنسيق.
- 1تثبيت lerobot مع الإضافات الصحيحة
يتطلب التسجيل
core_scripts، والتدريبtraining، ومحركات Feetech المؤازرةfeetech. بايثون 3.12+.bashconda create -y -n lerobot python=3.12 conda activate lerobot conda install ffmpeg -c conda-forge pip install 'lerobot[core_scripts,training,feetech]' lerobot-info - 2العثور على منفذ USB لكل ذراع
شغّله مع توصيل الذراعين، وافصل أحدهما عند المطالبة. على نظام لينكس قد تحتاج إلى فتح أذونات العقدة.
bashlerobot-find-port # on Linux, if the port exists but is unreadable: sudo chmod 666 /dev/ttyACM0 - 3تعيين معرفات المحرك ومعدل الباود
في SO-100، يحدث هذا قبل التجميع: على عكس SO-101، لا يمكن الوصول إلى الموصلات بمجرد بنائها. يقوم السكريبت بالمرور عبر الناقل محركًا واحدًا في كل مرة بدءًا من القابض، ويكتب المعرفات إلى EEPROM.
bashlerobot-setup-motors \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 lerobot-setup-motors \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 - 4معايرة الذراعين
اضبط كل مفصل على منتصف نطاقه، اضغط Enter، ثم حرك كل مفصل عبر نطاقه الكامل. المعايرة تسمح لسياسة مدربة على ذراع واحدة بالعمل على ذراع أخرى. أعد استخدام نفس
id.bashlerobot-calibrate \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 \ --robot.id=my_follower lerobot-calibrate \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 \ --teleop.id=my_leader - 5التحكم عن بعد مرة واحدة مع تشغيل الكاميرات
قاعدة lerobot الأساسية: يجب أن تكون قادرًا على أداء المهمة بالنظر فقط إلى صور الكاميرا. إذا لم تتمكن من ذلك، فلن يتمكن ACT أيضًا. هذا يكتشف المزيد من مجموعات البيانات السيئة أكثر من التصحيح اللاحق.
bashlerobot-teleoperate \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 \ --robot.id=my_follower \ --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 \ --teleop.id=my_leader \ --display_data=true - 6تسجيل 50 حلقة
50 هو الحد الأدنى لـ AY-Robots وما استخدمه ALOHA لكل مهمة. تنصح lerobot بـ 10 لكل موقع كائن، مع تثبيت الكاميرات، وقبضة متسقة.
nينهي حلقة،rيعيد التسجيل،qيوقف ويشفر.bashHF_USER=$(NO_COLOR=1 hf auth whoami | awk -F': *' 'NR==1 {print $2}') lerobot-record \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 \ --robot.id=my_follower \ --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 \ --teleop.id=my_leader \ --dataset.repo_id=${HF_USER}/so100_cube \ --dataset.num_episodes=50 \ --dataset.single_task="Grab the black cube and put it in the bin" \ --display_data=true

ليس لدى ACT أي معلومات مسبقة يمكن الاعتماد عليها، لذا فإن كل عدم اتساق يصبح دائمًا. الأخطاء الثلاثة الأكثر تكلفة: كاميرا تم تحريكها بين الحلقة 20 و 21، إضاءة تغيرت لأنك سجلت نصف المجموعة بعد الظهر، قبضة تم تنفيذها بطريقتين. كل منها يعطي منحنى خسارة يبدو مثاليًا وذراعًا تذهب إلى المكان الخطأ. انظر الخسارة تنخفض، والسياسة لا تفعل شيئًا، السياسة تعمل فقط في إعداد واحد و جمع بيانات تدريب عالية الجودة.
قبل التدريب، أعد تشغيل خمس حلقات على الأقل. ، يخزن تدفقات الكاميرا وحالات المفاصل والإجراءات لكل ، وإعادة التشغيل تدفع تلك الإجراءات مرة أخرى إلى الذراع. إذا لم تقم إعادة التشغيل بالمهمة، فإن البيانات لا تحتوي عليها ولن يخترعها التدريب.
lerobot-replay \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower \
--dataset.repo_id=${HF_USER}/so100_cube \
--dataset.episode=0تدريب سياسة ACT
هذا هو الأمر بالكامل. كل ما هو خاص بـ ACT هو بالفعل إعداد افتراضي، ولهذا السبب توصي صفحة lerobot ACT بالبدء بها.
lerobot-train \
--dataset.repo_id=${HF_USER}/so100_cube \
--policy.type=act \
--output_dir=outputs/train/act_so100_cube \
--job_name=act_so100_cube \
--policy.device=cuda \
--wandb.enable=true \
--policy.repo_id=${HF_USER}/act_so100_cube--policy.type=act يحمّل ACTConfig، الذي يتكيف مع عدد المحركات والكاميرات التي سجلتها مجموعة بياناتك، لذلك لا تحتاج أبدًا إلى تعريف شكل الملاحظة. --wandb.enable=true اختياري ويستحق العناء: منحنى الخسارة هو الإشارة الرخيصة الوحيدة في تشغيل يستغرق 100000 خطوة. يأتي الجدول الزمني من إعداد تدريب lerobot، وليس ACTConfig: 100000 خطوة، دفعة 8، بذرة 1000، نقطة تفتيش كل 20000 خطوة، وتسجيل كل 200.
يترك التشغيل الكامل خمسة أدلة لنقاط التفتيش، من 020000 إلى 100000، بالإضافة إلى رابط رمزي last. احتفظ بها جميعًا: غالبًا ما لا تكون أفضل سياسة هي الأخيرة.
| الإعداد | افتراضي lerobot | نموذج AY-Robots ACT | ملاحظة |
|---|---|---|---|
| حجم الدفعة | 8 | 8 | اخفضه أولاً إذا واجهت حدود VRAM. |
| معدل التعلم | 1e-5 | 1e-5 | نفس ما ورد في ورقة ALOHA. |
| الحد الأقصى للخطوات | 100000 | 100000 | تقريبًا حيث تتوقف مجموعة من 50 حلقة عن التحسن. |
| تراكم التدرج | 1 | 1, does not apply | غيّر حجم الدفعة بدلاً من ذلك. |
| البذرة | 1000 | exposed | نقطة دخول tyro في GR00T لا تحتوي على بذرة؛ تشغيلات ACT هي القابلة للتكرار. |
| حجم الكتلة / عدد خطوات الإجراء | 100 / 100 | 100 / 100, editable | أفق التنبؤ والتنفيذ. اخفض الثاني، وليس الأول. |
| تكرار نقطة التفتيش | 20000 | not exposed | saveSteps هو مقبض GR00T هنا. |
يتناسب ACT بحجم دفعة 8 مع كاميرتين بدقة 640x480 بشكل مريح على 24 جيجابايت. يتوقف عن التناسب عندما يرفع الأشخاص حجم الدفعة لزيادة السرعة، أو يغذونه بإطارات 1920x1080 التي يظهرها مثال تسجيل lerobot واحد. اثنين من هياكل ResNet-18 الأساسية بدقة 1080p يمثلان ملف ذاكرة مختلفًا تمامًا. اخفض --batch_size إلى 4 قبل استئجار بطاقة أكبر. انظر نقص الذاكرة أثناء التدريب.
المدة: حوالي 5 ساعات على بطاقة RTX 2080 Ti بسعة 11 جيجابايت في الورقة البحثية، بضع ساعات لـ 100 ألف خطوة لكل صفحة ACT الخاصة بـ lerobot، من 2 إلى 5 ساعات على فئة 24 جيجابايت من AY-Robots. لا تختصرها. يذكر ملف README الخاص بالمستودع المرجعي أن السياسة المتشنجة أو المتوقفة مؤقتًا تحتاج عادةً إلى المزيد من التدريب، لأن النجاح والسلاسة يستمران في التحسن بعد استقرار الخسارة: بالنسبة للبيانات الواقعية، يتطلب الأمر 5000 حقبة على الأقل، أو 3 إلى 4 أضعاف المدة مرة أخرى بعد الاستقرار.
lerobot-train \
--config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
--resume=trueتشغيل السياسة المدربة على الذراع
يستخدم النشر lerobot-rollout. يجب أن تتطابق مفاتيح الكاميرا مع المفاتيح المسجلة: سياسة مدربة على front و wrist لن تقبل cam0 و cam1، و rename_map لا يساعد، لأنه يحتاج إلى نقطة تحقق مدربة مسبقًا. يمكن حذف سلسلة المهام؛ مثال lerobot الخاص يشير إلى أنها قابلة للتخطي لـ ACT.
lerobot-rollout \
--strategy.type=base \
--policy.path=${HF_USER}/act_so100_cube \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower \
--robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
--display_data=true \
--duration=60كان التقييم يُجرى باستخدام lerobot-record --policy.path=.... في الإصدار 0.6.x، أصبح lerobot-rollout مع محدد --strategy.type: base، sentry (تسجيل مع تحميل تلقائي)، highlight (مخزن مؤقت حلقي يتم حفظه بضغطة مفتاح)، dagger (بشري في الحلقة) و episodic. اعتبارًا من 23 أغسطس 2026، لا تزال صفحة وثائق ACT تقول "باستخدام الأمر lerobot-record" مباشرة فوق كتلة تشغل lerobot-rollout. اتبع الأمر، وليس الجملة.
لتثبيت نقطة تحقق بدلاً من النموذج النهائي، أضف --policy.pretrained_revision. يتطلب ذلك أن يكون التشغيل قد بدأ بـ --save_checkpoint_to_hub=true، وهو غير مفعل افتراضيًا: بدونه، يقوم lerobot بدفع النموذج النهائي ولا شيء آخر. معه، يتم وسم كل نقطة تحقق بخطوتها المبطنة بالأصفار، لذا --policy.pretrained_revision=060000 يستعيد نقطة التحقق ذات الخطوة 60000. مقارنتها بـ 100000 على الذراع الحقيقية هي أرخص تجربة متاحة.
مساران لنفس نقطة التحقق
كل ما سبق هو المسار اليدوي وهو يعمل. مسار المنصة يضحي بالتحكم مقابل عدم امتلاك وحدة معالجة رسوميات (GPU) أو بيئة بايثون.
- ثبّت lerobot 0.6.x مع
core_scripts،training،feetech، ffmpeg. - ابحث عن المنافذ، اضبط معرفات المحركات، عاير كلا الذراعين، سجل 50 حلقة.
- أعد تشغيل بضع حلقات للتأكد من أن البيانات تحتوي على المهمة.
- استأجر أو امتلك وحدة معالجة رسوميات (GPU) بسعة 24 جيجابايت، طابق CUDA و PyTorch، ثم شغّل
lerobot-train --policy.type=act. - انتظر بضع ساعات، ثم شغّل
lerobot-rolloutعلى الجهاز المتصل بالذراع.
# the two commands that matter, end to end
lerobot-record --robot.type=so100_follower --robot.port=/dev/ttyACM0 \
--teleop.type=so100_leader --teleop.port=/dev/ttyACM1 \
--dataset.repo_id=${HF_USER}/so100_cube --dataset.num_episodes=50 \
--dataset.single_task="Grab the black cube"
lerobot-train --dataset.repo_id=${HF_USER}/so100_cube --policy.type=act \
--output_dir=outputs/train/act_so100_cube --policy.device=cudaتحكم كامل: عدّل configuration_act.py، أضف كاميرا، انسخ المدرب. للبحث بدلاً من تسليم مهمة، المنصة تشتيت.
- سجل باستخدام عميل سطح المكتب، أو أحضر معرف مستودع Hugging Face أو مجموعة بيانات محلية.
- افتح دليل ACT على SO-100 واختر النموذج ومجموعة البيانات. الإعدادات الافتراضية هي إعدادات lerobot؛ chunkSize، nActionSteps، seed و logFreq قابلة للتعديل.
- الواجهة الخلفية تستأجر وحدة معالجة رسوميات (GPU) بحجم VRAM وتكتب نقاط التحقق إلى تخزين الكائنات.
- ثم يقوم
/api/inference/podبتقديم السياسة لعميل الروبوت المحلي. يقوم مراقب الخمول بتدمير الـ pod، لذلك لا توجد فواتير صامتة. - توجد نفس العمليات في واجهة سطر الأوامر (CLI)، وخادم MCP، ووثائق التدريب.
لا يقوم بإصلاح بياناتك: مجموعة بيانات بكاميرا متحركة تتدرب بنفس السوء هنا، ولا يمكن للنموذج اكتشاف ذلك. كما أنه لا يزيل مشكلة الكمون. حلقة التحكم تتراوح من 20 إلى 485 مللي ثانية لكل خطوة عمل، مع رحلات ذهاب وعودة عبر الإنترنت العام بالإضافة إلى ذلك، ويتأثر ACT أكثر لأن خطوته هي الأقصر: 60 مللي ثانية تمثل تباطؤًا بنسبة 12 بالمائة على 485 مللي ثانية لـ Pi0.5 ولكنها أربعة أضعاف الخطوة على 20 مللي ثانية لـ ACT. الاستدلال عن بعد يناسب عمليات الالتقاط والوضع البطيئة، وليس الحركة التفاعلية السريعة.

ما الذي يحدث خطأ بالفعل
تقريباً لا يوجد أي صعوبة في أمر التدريب. بل تكمن الصعوبة في الأمور المحيطة به، مرتبة حسب تكرار حدوثها لأول مرة.
| العرض | السبب المعتاد | الصفحة |
|---|---|---|
| lerobot-find-port لا يعرض شيئًا | تعريف المشغل، الكابل أو أذونات العقدة | الذراع غير مكتشف |
| الكاميرا مفقودة وقت التسجيل | تغير الفهرس عند إعادة التشغيل، أو وجود كاميرتين على وحدة تحكم USB واحدة | الكاميرا غير مكتشفة |
| التدريب يرفض مجموعة البيانات | ACT يتطلب v3.0، GR00T يحتاج v2.1 | مجموعة البيانات مرفوضة كـ v3 |
| نفاد ذاكرة CUDA | حجم الدفعة مرتفع، أو إطارات 1080p بدلاً من 480p | نفاد الذاكرة في التدريب |
| الخسارة تبدو جيدة، الذراع لا يفعل شيئًا | البيانات تفتقر إلى المهمة، أو تحركت الكاميرا | الخسارة تنخفض، السياسة لا تفعل شيئًا |
| حركة متقطعة أو توقف مؤقت في منتصف الحلقة | تدريب غير كافٍ، توقف عند حدود الكتلة، أو استدعاء استدلال انتهت مدته | السياسة تتجمد في منتصف الحركة |
يستحق صفان التركيز. ACT يتدرب على LeRobot v3.0 بينما يتعطل محمل GR00T عليه ويحتاج إلى v2.1، لذا فإن مجموعة بيانات تدرب ACT يمكن أن تفشل تشغيل GR00T. والصف الأخير يحتوي على إصلاحين: مؤلفو ACT يجيبون على الحركة المتقطعة بمزيد من التدريب، بينما مع n_action_steps عند 100، يحدث توقف حقيقي عند حدود الكتلة، وهو توقف مرئي كل 3.3 ثوانٍ عند 30 إطارًا في الثانية. هناك اثنان آخران يجب معرفتهما: المفصل الميت الواحد عادة ما يكون معرف سيرفو لم يتم كتابته مطلقًا، و قابض يقترب ولكنه لا يغلق أبدًا يعني نطاق قابض قليل جدًا في العروض التوضيحية. الفهرس الكامل: صفحات أوضاع الفشل.
تكلفة التشغيل
| الفئة | النماذج | مدة التشغيل | السعر لكل ساعة | التكلفة لكل تشغيل |
|---|---|---|---|---|
| RTX 4090 / 24 GB | ACT, SmolVLA | 2 إلى 5 ساعات | 0.30 إلى 0.60 USD | حوالي 1 إلى 3 USD |
| A100 80 GB / H100 | GR00T N1.7, GR00T N1.5, Pi0.5 | 3 إلى 6 ساعات | 1.20 إلى 2.00 USD | حوالي 4 إلى 12 USD |
هذه هي الحجة للبدء بـ ACT حتى لو كنت تريد VLA لاحقًا. يكلف تشغيل ACT الفاشل سعر فنجان قهوة ويخبرك في غضون ساعات ما إذا كانت مجموعة بياناتك تحتوي على المهمة. يكلف تشغيل GR00T الفاشل أربعة أضعاف ذلك لنفس الدرس. الانتقال إلى GR00T N1.7 أو SmolVLA بعد ذلك هو تغيير في الشكل، وليس إعادة بناء. خلفية: نماذج الرؤية واللغة والحركة، الـ الدليل الكامل لـ SO-100، تدريب سياستك الأولى و التعلم بالمحاكاة. لا يوجد ذراع؟ صفحة البث المباشر تبث SO-100 حقيقية للتحكم بها دون الحاجة للتسجيل.
تدريب ACT على SO-100 الخاص بك
الدليل الخاص بهذا المزيج المحدد: الإعدادات الافتراضية، فئة وحدة معالجة الرسوميات (GPU) وتكلفة التشغيل. اختر مجموعة البيانات، ويقوم الواجهة الخلفية (backend) باستئجار البطاقة وكتابة نقاط الحفظ.
افتح دليل التدريبهل يوجد نموذج ACT مدرب مسبقًا يمكنني ضبطه بدلاً من ذلك؟▾
لا. ACT ليس لديه نموذج أساسي؛ إنه موجود فقط بعد تدريبه. هذه ليست فجوة في الأدوات، بل هي طبيعة ACT: الورقة تدرب سياسة من الصفر لكل مهمة. للحصول على نقطة حفظ من بائع، استخدم GR00T N1.7 أو Pi0.5.
كم عدد الحلقات التي أحتاجها حقًا؟▾
50: ما سجله ALOHA لكل مهمة (100 لـ Thread Velcro، وهي الأصعب) والحد الأدنى لـ AY-Robots. ينصح lerobot بحوالي 10 لكل موقع كائن، مع كاميرات ثابتة، وقبضة متسقة. خمسون حلقة نظيفة تتفوق على مائة حلقة تحركت فيها الكاميرا.
هل يجب أن أغير chunk_size من 100؟▾
عادة لا. يتصاعد الاستئصال من 1 بالمائة عند k = 1 إلى 44 بالمائة عند k = 100 ويتناقص بعد ذلك، لذا فإن 100 تقترب من القمة. إذا استغرقت الذراع وقتًا طويلاً، قم بتقليل n_action_steps بدلاً من ذلك: عند 30 fps، 25 إعادة استعلام كل 0.8 ثانية.
كم يستغرق تشغيل التدريب، وهل يمكنني إيقافه مبكرًا؟▾
من ساعتين إلى خمس ساعات على بطاقة 24 GB لـ 100000 خطوة. تهبط نقاط الحفظ كل 20000 خطوة و --resume=true تستأنف التشغيل، لذا فإن التوقف المبكر آمن. فقط ليس عند الجزء المسطح الأول: تتحسن السلاسة بعد استقرار الخسارة.
انخفضت الخسارة وما زالت الذراع تفشل. ماذا الآن؟▾
دائمًا تقريبًا مجموعة البيانات. أعد تشغيل الحلقات المسجلة على الذراع: إذا لم يؤدِ الإعادة المهمة، فإن البيانات لا تحتوي عليها. ثم تحقق مما إذا كان أي شيء قد تحرك، خاصة الكاميرا. ACT ليس لديه أي معرفة مسبقة، لذا فإن دفعة بسيطة في الحلقة 21 تكون دائمة.
Sources
- Zhao, Kumar, Levine, Finn: Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware (ACT), arXiv 2304.13705
- ALOHA / ACT project page
- tonyzhaozh/act, the reference implementation and its training-length advice
- tonyzhaozh/act issue 25: the action head reads only the first decoder layer
- huggingface/lerobot
- lerobot ACTConfig: chunk_size, n_action_steps, n_decoder_layers and the rest of the defaults
- lerobot TrainPipelineConfig: steps, batch_size, seed, save_freq, log_freq, save_checkpoint_to_hub
- lerobot train_utils: zero-padded checkpoint dirs, the last symlink and checkpoint push tagging
- lerobot v0.6.1 release, 3 August 2026
- LeRobot docs: ACT
- LeRobot docs: imitation learning on real robots (record, replay, train, rollout)
- LeRobot docs: SO-100 setup, motor ids and calibration
- LeRobot docs: installation and the optional extras
- Hugging Face blog: LeRobot Community Datasets, the ImageNet of Robotics, When and How?
- TheRobotStudio/SO-ARM100: Standard Open Arm 100
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started