تصور کنید یک برنامهنویس رباتیک است که ساعتها منتظر میماند تا گیگابایتها دادههای ویدئویی از سختافزار به GPU منتقل شود تا بتواند یک خطای کوچک را اصلاح کند. این گلوگاه اصلی در هوش مصنوعی فیزیکی است: زمان و هزینه هنگفت جابجایی حجم عظیم دادههای ویدئویی بین سختافزار و پردازندههای گرافیکی. حالا یک عامل Strands Robots میتواند این مانع را دور بزند. این عامل با ضبط یک نمایش فیزیکی، همگامسازی آن با ابر و استریم کردن مستقیم دادهها برای آموزش، نیاز به دانلود حتی یک مجموعهداده کامل را بهطور کلی حذف میکند. این گردشکار در یک راهنمای فنی که در ۱۳ اوت ۲۰۲۶ منتشر شد، با جزئیات تشریح شده است.
سالهاست که چرخه «هوش مصنوعی فیزیکی» به دلیل پدیدهای به نام «گرانش دادهها» (Data Gravity) دچار اختلال بوده است. برای بهبود سیاست (Policy) یک ربات، توسعهدهندگان معمولاً اپیزودها را ضبط، آنها را به یک سرور آپلود و سپس کل مجموعهداده در حال رشد را روی یک خوشه GPU دانلود میکردند تا مدل را آموزش دهند و در نهایت نقطه بازرسی (Checkpoint) را به بازوی ربات بازگردانند. با رشد حجم مجموعهدادهها، هزینه این انتقال بایتها بهصورت خطی افزایش مییافت و اغلب منجر به این میشد که GPUهای گرانقیمت در انتظار اتمام دانلودها بیکار بمانند.
این معماری جدید که بر پایه کارهای قبلی در زمینه اتصال Hugging Face Hub به سختافزارهای رباتیک بنا شده است، یک لایه کاری تغییرپذیر (Mutable Working Layer) را معرفی میکند. این سیستم از Hugging Face Storage Buckets استفاده میکند؛ یک سیستم ذخیرهسازی شیء غیرنسخهبندی شده که در مارس ۲۰۲۶ معرفی شد تا به عنوان یک بافر پرسرعت بین جلسه ضبط ربات و خوشه آموزشی عمل کند. این باکتها در کنار مخازن مجموعهداده در همان فضای نام hf:// قرار دارند و از رابط خط فرمان (CLI) موجود hf بهره میبرند.
اکوسیستم Strands Robots
Strands Robots یک SDK متنباز از شرکت AWS (تحت لایسنس Apache 2.0) است که انتزاعهای رباتیک، شبیهسازی و پشته LeRobot را به عنوان ابزارهای عامل (AgentTools) ارائه میدهد. این ابزارها در قالب یک عامل واحد Strands ترکیب میشوند. هسته مرکزی این سیستم تابع Robot() است که نامها را در یک رجیستری از بازوها، انساننماها، پایههای متحرک و دستها شناسایی و حل میکند. اگرچه مدل SO-100 به عنوان مثال اصلی استفاده شده است، اما کاتالوگ رباتها از تجسمهای (Embodiments) بسیار متنوعی پشتیبانی میکند.
این سیستم بر فرمت دادههای LeRobot متکی است که در حال حاضر توسط بیش از ۹۰ هزار مجموعهداده و مدل در Hub از سوی بیش از ۸ هزار ناشر استفاده میشود (طبق گزارش LeRobot Project Pulse). به دلیل اینکه ضبطهای Strands Robots از همین فرمت استفاده میکنند، هر ابزاری که برای خواندن دادههای LeRobot ساخته شده باشد، میتواند بدون نیاز به هیچگونه تبدیل داده، با این سیستم کار کند.
پیشنیازهای فنی
برای اجرای این حلقه استریمینگ، محیط سیستم به پایتون ۳.۱۲ به بالا روی لینوکس یا مک نیاز دارد (در مک، پشتیبانی از Apple Silicon برای بکاِند MuJoCo فراهم است). استدلال عامل توسط یک ارائهدهنده مدل سازگار تامین میشود؛ گزینههایی مانند Amazon Bedrock (از طریق اعتبارنامههای AWS)، Anthropic API، OpenAI یا یک نمونه محلی Ollama.
نصب سیستم از طریق دستور uv pip install -U "strands-robots[sim-mujoco,lerobot]>=0.5.1" انجام میشود. بسته اضافی lerobot بهطور خاص نسخههای LeRobot (>=0.6.1)، datasets ،av و torchcodec را فراخوانی میکند تا اطمینان حاصل شود که رمزگشایی و ضبط ویدئو بدون نیاز به تنظیمات اضافی کار میکنند.
برای مسیرهای سختافزاری پیشرفته، یک جفت دنبالکننده (Follower) و پیشرو (Leader) از مدل SO-101 مورد نیاز است که فایلهای کالیبراسیون آنها در مسیر ~/.cache/huggingface/lerobot/calibration/ ذخیره میشود. همچنین آموزش در مقیاس بزرگ مستلزم یک خوشه GPU و نصب lerobot[training] است؛ در غیر این صورت، فراخوانی trainer.train() منجر به بروز خطا خواهد شد.
مکانیزم حذف تکرار در سطح بایت
بهینگی اصلی این سیستم از ذخیرهسازی مبتنی بر Xet میآید که از تکهبندی تعریفشده توسط محتوا (Content-Defined Chunking) برای حذف تکرار دادهها در سطح بایت استفاده میکند. در مخازن نسخهبندیشده سنتی، تغییر حتی یک فریم در یک تکه ویدئویی چند گیگابایتی، اغلب مستلزم آپلود مجدد کل فایل است زیرا باید نسخه قبلی حفظ شود.
اما با Storage Buckets، سیستم دقیقاً شناسایی میکند کدام تکههای (Chunks) خاص از دادهها تغییر کردهاند. مرزهای تکهها بر اساس محتوا تعیین میشوند؛ بنابراین درج چند بایت جدید تنها تکهای را که در آن قرار میگیرد تغییر میدهد، نه اینکه تمام مرزهای بعدی را جابجا کند. طبق اندازهگیریهای داخلی Hugging Face، این رویکرد حجم دادههای منتقل شده در هر آپلود را در سطح Hub تقریباً ۴ برابر کاهش میدهد. برای طرحهای سازمانی (Enterprise)، صورتحساب بر اساس این ردپای حذفشده (Deduplicated Footprint) محاسبه میشود.

در یک تست عملی، Hugging Face دریافت که تغییر ۱٪ از بایتها در یک آپلود ۵۰۰ مگابایتی، تنها به انتقال ۵.۵ مگابایت داده نیاز دارد. تغییر ۵٪ منجر به انتقال ۲۷.۵ مگابایت و تغییر ۱۰٪ منجر به انتقال ۵۵ مگابایت شد. این موضوع برای دادههای رباتیک حیاتی است، زیرا هزاران اپیزود اغلب دارای پسزمینه و نورپردازی یکسان هستند، به این معنی که اکثر پیکسلها در کل مجموعهداده تکراری و زائد هستند.
چیدمان دادهها و همگامسازی
برای به حداکثر رساندن این صرفهجویی، ضبطکننده Strands Robots از ساختار فایلهای خاص LeRobot پیروی میکند:
- تلهمتری: اپیزودها در تکههای Parquet ذخیره میشوند (
data/chunk-000/file-000.parquet) و هر ۱۰۰ مگابایت یک فایل جدید ایجاد میشود. - ویدئو: تکههای MP4 برای هر دوربین (
videos/observation.images.front/chunk-000/file-000.mp4) هر ۲۰۰ مگابایت رول میشوند.
عامل هنگام ضبط یک نمایش، میتواند از sync_dataset_to_bucket() برای انتقال مجموعهداده روی دیسک به یک باکت استفاده کند. این همگامسازی از چرخه ضبط جداست. متناوباً، میتوان از DatasetRecorder.sync_to_bucket() یا stop_recording(bucket=...) برای همگامسازی در لحظه پایان جلسه استفاده کرد. نتیجه در مسیر hf://buckets/{bucket}/{run_id} ذخیره میشود.
برای سختافزارهای فیزیکی، CLI مربوط به lerobot-record راهاندازی جفت پیشرو-دنبالکننده را مدیریت میکند. پس از قرارگیری دادهها روی دیسک، همان فراخوانی sync_dataset_to_bucket (یا CLI پیچیده شده hf sync) دادهها را به باکت منتقل میکند. این امر اجازه میدهد تا دادههای جمعآوری شده در یک مکان تجمیع شوند، در حالی که مخازن منتشرشده نهایی فقط شامل نسخههای منتخب باشند.
استریمینگ بدون کپی محلی
پس از قرارگیری دادهها در باکت، متد stream_dataset() در Strands Robots به GPUها اجازه میدهد دستهها (Batches) را مستقیماً از Hub بخوانند. این کار زمان انتظار «دانلود-سپس-آموزش» را حذف میکند، زیرا GPU میتواند آموزش را از اولین دسته شروع کند.
- رمزگشایی در لحظه: فریمهای دوربین در حین تکرارهای مدل از تکههای MP4 راه دور رمزگشایی میشوند. هیچ دادهای جز یک پوشه کوچک
meta/حاوی طرحواره (Schema)، آمار و شاخص اپیزود روی دیسک محلی ذخیره نمیشود. - چیدمان تکهها: سیستم از فرمت LeRobot استفاده میکند که خواندن محدودههای بایت (Byte-range reads) را روی شبکه بهینه میکند. یک دسته به جای هزاران درخواست کوچک، به چند خواندن محدوده روی تکههای بزرگ تبدیل میشود.
- عملکرد: روی یک نمونه m5dn.24xlarge در منطقه us-east-1، سرعت خواندن از CDN گرم برای محمولههای ۱۰۰ گیگابایتی حدود ۱,۱۲۴ مگابایت بر ثانیه بود، در حالی که برای خواندن سرد ۷۸۰ مگابایت بر ثانیه ثبت شد. برای یک محموله ۱۰ گیگابایتی، سرعت گرم ۱,۰۸۶ مگابایت بر ثانیه در مقابل ۷۸۰ مگابایت بر ثانیه سرد بود.
- سازگاری با لبه: برای استریمینگ صرفاً حسپذیری (Proprioceptive)، آرگومان
drop_videos=Trueرمزگشایی ویدئو را بهطور کامل حذف میکند تا حلقه روی دستگاههای لبه بدون نیاز به چرخ (Wheel)torchcodecاجرا شود. این حالت نیازمند یک نقشهdelta_timestampsاست.
حلقه کامل عامل
کل این فرآیند توسط یک عامل با استفاده از SDK Strands Agents مدیریت میشود. میتوان به زبان طبیعی به عامل دستور داد تا صحنهای را آماده کند، یک نمایش را با استفاده از یک سیاست شبیهسازیشده (Mock Policy) — که اکشنهای مفصلی را بدون نیاز به مدل آموزشدیده تولید میکند — ضبط کرده و نتیجه را به باکت بفرستد.
برای آموزش، سیستم از ارائهدهندگان مختلف از طریق create_trainer() پشتیبانی میکند. در یک تست روی یک GPU NVIDIA L4 (نمونه g6.4xlarge)، ۵۰۰ گام بهینهساز برای یک سیاست ACT (با ۵۱.۶ میلیون پارامتر) روی یک اپیزود ۱۲۰ فریم، در ۱۳۳ ثانیه تکمیل شد.
توسعهدهندگان میتوانند با استفاده از TrainSpec و چرخه حیات Trainer مدلهای بزرگتری را هدف قرار دهند:
- GR00T: نیازمند یک
base_modelو یک تگ تجسم (Embodiment tag) است. - Cosmos 3: نیازمند یک
base_modelو یک دستورالعمل SFT است.
کاربران میتوانند قبل از آموزش، trainer.validate(spec) را فراخوانی کنند تا لیستی از فیلدهای مورد نیاز مفقود برای یک بکاِند خاص را دریافت کنند. پس از آماده شدن نقطه بازرسی، مدل با تغییر یک آرگومان کلیدی به mode="real" در کارخانه Robot()، تعیین پورت (مثلاً /dev/ttyACM0) و شاخصهای دوربین (مثلاً /dev/video0) روی سختافزار مستقر میشود.
امنیت و یکپارچگی دادهها
به دلیل قدرت این عاملها در تحریک سختافزار فیزیکی و تغییر ذخیرهساز ابری، چندین مرز امنیتی حیاتی تعریف شده است:
- تزریق پرامپت: ورودیهای غیرقابل اعتماد میتواند منجر به این شود که عامل محتوای باکت را بازنویسی کند یا اقدامات فیزیکی خطرناک انجام دهد. کاربران باید در صورت عدم اطمینان به ورودی، ابزارهای در دسترس را محدود کنند.
- مرزهای اعتماد: دادههای آموزشی یک مرز اعتماد هستند. توصیه میشود اعتبارنامههای مورد استفاده برای ضبط از اعتبارنامههای آموزش جدا باشند تا از مسمومسازی سیاستها توسط دادههای فاسد جلوگیری شود. هر اجرا باید برای قابلیت ردیابی از یک
run_idمنحصربهفرد استفاده کند. - ردپای حسابرسی: چون باکتها دادهها را در جای خود بازنویسی میکنند و هیچ نسخهای را نگه نمیدارند، تیم پیشنهاد میکند برای مصنوعات نهایی و نسخهبندی شده که نیاز به ردپای حسابرسی دائمی دارند، از
push_to_hub()استفاده شود. - اجرای کد: استنتاج محلی اغلب به
trust_remote_code=True(از طریقSTRANDS_TRUST_REMOTE_CODE=1) نیاز دارد. کاربران باید فقط نقاط بازرسی سازمانهای مورد اعتماد را بارگذاری کرده و فرمتsafetensorsرا برای اجتناب از خطرات مرتبط با نقاط بازرسی مبتنی بر pickle ترجیح دهند.
پیادهسازی و پاکسازی
توسعهدهندگان میتوانند به نمونه کامل برنامه در گیتهاب strands-labs/robots دسترسی پیدا کنند که شامل یک نوتبوک Jupyter (examples/notebooks/05_streaming_data_loop.ipynb) برای اجرای چرخه ضبط-همگام-استریم-آموزش در شبیهساز است. نسخه مدیریتشده توسط عامل این حلقه در مسیر examples/06_agent_collect_and_stream.py در دسترس است.
به دلیل اینکه محتوای باکتها در حجم ذخیرهسازی محاسبه میشوند، پاکسازی ضروری است. کاربران میتوانند از hf buckets rm با پرچم --recursive برای حذف اجراهای خاص یا hf buckets delete برای حذف کل یک باکت استفاده کنند. فایلهای موقت محلی در مسیر /tmp نیز باید بهصورت دستی پاک شوند.
این تغییر در مدیریت دادهها، تمرین بنیادی یادگیری رباتیک را دگرگون میکند. با تبدیل ابر به یک افزونه استریمینگ برای حافظه ربات به جای یک آرشیو دوردست، زمان بین «ضبط یک اشتباه» و «آموزش یک اصلاح» از چندین ساعت به چند دقیقه کاهش مییابد.
گام بعدی شما
- اگر روی رباتهای بازمتن کار میکنید، SDK جدید Strands را برای حذف مراحل دانلود دستی دادهها تست کنید.
- برای کاهش هزینههای ابری، از مکانیزم حذف تکرار در سطح بایت برای ذخیره ویدئوهای آموزشی استفاده کنید.
- امنیت دسترسیهای API خود را بررسی کنید تا از تزریق پرامپت در کنترل سختافزار جلوگیری شود.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما درباره تراشههای Blackwell مراجعه کنید.




گفتگو