
TinyVLA و SmolVLA یک VLA عملیاتی را زیر ۱ میلیارد پارامتر قرار میدهند. اعداد واقعی از هر دو مقاله، پیشفرضهای LeRobot، تأخیر اندازهگیری شده، و هزینه یک اجرا روی کارت ۲۴ گیگابایتی.
تقریباً هر مدل بینایی-زبان-عمل که در مورد آن نوشته میشود، یک کارت دیتاسنتر را فرض میکند. OpenVLA دارای ۷ میلیارد پارامتر است. GR00T N1.7 و Pi0.5 حدود ۳ میلیارد پارامتر دارند و برای تنظیم دقیق به یک A100 80 GB نیاز دارند. اگر کارت روی میز شما یک ۴۰۹۰ است، آن دسته از مدلها خارج از دسترس هستند.
دو مقاله استدلال میکنند که به آن نیازی ندارید. TinyVLA (arXiv 2409.12514، پذیرفته شده توسط IEEE Robotics and Automation Letters در فوریه ۲۰۲۵) یک VLA را از یک ستون فقرات ۴۰۰ میلیون تا ۱.۳ میلیارد پارامتری به همراه یک سر عمل انتشار (diffusion action head) میسازد. SmolVLA (arXiv 2506.01844، ارسال شده در ۲ ژوئن ۲۰۲۵) ۴۵۰ میلیون پارامتر را با وزنهای باز، دادههای باز و یک اسکریپت که روی یک کارت مصرفکننده اجرا میشود، ارائه میدهد. در اینجا آنچه هر دو اندازهگیری کردند، و جایی که استدلال زیر ۱ میلیارد پارامتر دیگر معتبر نیست، آورده شده است.
آنچه باید بدانید
- •TinyVLA در سه اندازه عرضه میشود: ۴۲۲ میلیون کل با ۱۰۱ میلیون قابل آموزش، ۷۴۰ میلیون با ۱۳۸ میلیون، ۱.۳ میلیارد با ۱۴۳ میلیون. تنها دو مورد اول زیر ۱ میلیارد قرار میگیرند.
- •جدول IV آن، ۱۴ میلیثانیه برای هر پیشبینی عمل برای TinyVLA-1B روی یک A6000 را اندازهگیری میکند، در مقابل ۲۹۲ میلیثانیه برای OpenVLA-7B و ۱۴۰ میلیثانیه برای یک OpenVLA-1B کوچکشده.
- •این سرعت را سر (head) حفظ میکند، نه ستون فقرات (backbone): سر انتشار TinyVLA-H را با یک سر ACT عوض کنید و پنج وظیفه ربات واقعی از میانگین ۹۴.۰ به ارقام تکرقمی کاهش مییابند. یک سر MLP در همه جا امتیاز ۰ میگیرد.
- •SmolVLA ۴۵۰ میلیون پارامتر دارد، که تقریباً ۱۰۰ میلیون آن متخصص عمل است، و روی ۴۸۱ مجموعه داده LeRobot جامعه و ۱۰.۶ میلیون فریم از پیش آموزش دیده است. این مدل امتیاز ۸۷.۳ را در LIBERO در مقابل ۸۶.۰ برای یک Pi0 از پیش آموزشدیده رباتیک با ۳.۳ میلیارد پارامتر، و ۷۸.۳ را در سه وظیفه واقعی SO-100 در مقابل ۶۱.۷ برای Pi0 با ۳.۵ میلیارد پارامتر گزارش میدهد.
- •SmolVLA که بدون آن پیشآموزش به صورت تکوظیفه آموزش دیده است، در آن وظایف به ۴۰.۰ کاهش مییابد، که کمتر از ۴۸.۳ ACT است. کوچک بودن به طور خودکار آسان نیست.
- •TinyVLA هیچ ادغام LeRobot ندارد و یک پشته چرخ CUDA 11.7 را پین میکند. SmolVLA در lerobot موجود است و هر اجرا در رده ۲۴ گیگابایتی در اینجا تقریباً ۱ تا ۳ دلار هزینه دارد.
چه چیزی واقعاً به عنوان یک VLA کوچک محسوب میشود
تعداد پارامترها در کارت مدل یک عدد واحد نیست. این میتواند به معنای وزنهای کلی، وزنهای بارگذاری شده در زمان استنتاج، یا وزنهایی باشد که در طول . TinyVLA هر دو را گزارش میکند و این شکاف بزرگ است: TinyVLA-H در مجموع 1.3 میلیارد پارامتر دارد اما 143 میلیون آن قابل آموزش است، زیرا برج بینایی و بیشتر مدل زبان ثابت میمانند در حالی که آداپتورهای LoRA و سر عمل حرکت میکنند. مقاله سهم قابل آموزش را حدود 5 درصد ذکر میکند.
| مدل | پارامترها | بکبون | سر عمل | منبع |
|---|---|---|---|---|
| TinyVLA-S | 422 M total, 101 M trainable | Llava-Pythia ~400 M | Diffusion (droid_diffusion U-Net) | arXiv 2409.12514 |
| TinyVLA-B | 740 M total, 138 M trainable | Llava-Pythia ~700 M | Diffusion | arXiv 2409.12514 |
| TinyVLA-H | 1.3 B total, 143 M trainable | Llava-Pythia ~1.3 B | Diffusion | arXiv 2409.12514 |
| SmolVLA | 450 M, ~100 M action expert | SmolVLM2-500M-Video-Instruct | Flow matching expert | arXiv 2506.01844 |
| Octo-Small | 27 M | ViT-S scale, T5-Base text encoder | Diffusion | octo-small-1.5 card |
| ACT | ~80 M | ResNet, no language model | Direct chunk regression | AY-Robots catalog |
| OpenVLA | 7 B | Llama 2 7 B, DINOv2 and SigLIP encoders | Autoregressive action tokens | arXiv 2406.09246 |
دو ردیف ارزش بحث دارند. با تقریباً 80 میلیون پارامتر از هر چیز دیگری در اینجا کوچکتر است اما مدل زبان ندارد، بنابراین یک VLA نیست: یک وظیفه را یاد میگیرد و نمیتوان به آن گفت که کار دیگری انجام دهد. با 27 میلیون پارامتر از طریق یک رمزگذار متن T5-Base شرطی شده است، نه یک بکبون LLM. اینها خطوط مبنای خوبی هستند، اما هیچکدام از آنها دستورالعملهایی را که برچسب نشان میدهد، ارائه نمیدهند.
TinyVLA-H، نسخهای که نتایج اصلی را به همراه دارد، 1.3 میلیارد پارامتر دارد و بالاتر از این خط قرار میگیرد. سوال بهتر این است که آیا یک مدل در طول آموزش در 24 گیگابایت جا میشود و در زمان استنتاج به نرخ کنترل شما میرسد. پنج سیاستی که میتوانید در اینجا آموزش دهید در صفحه سیاستها قرار دارند؛ TinyVLA یک ورودی در آرنا دارد اگر میخواهید اعداد آن را در کنار دیگران ببینید.
TinyVLA: سرعت از سرچشمه میگیرد، نه از ستون فقرات
برداشت واضح این است که آنها مدل زبان را کوچکتر کردهاند، بنابراین سریعتر شده است. اما بررسی حذف اجزا در مقاله خلاف این را میگوید. جایگزینی ستون فقرات 7 B مدل OpenVLA با یک ستون فقرات تقریباً 1 B، پیشبینی هر عمل را از 292 ms به 140 ms کاهش داد که یک افزایش 2 برابری است. TinyVLA-H، با تعداد پارامترهای مشابه، با سرعت 14 ms روی همان کارت اجرا میشود. 10 برابر دیگر مربوط به سر عمل (action head) است.
| مدل | پیشبینی هر عمل | اندازهگیری شده روی |
|---|---|---|
| OpenVLA-7B | 292 ms | یک A6000 |
| OpenVLA-1B، ستون فقرات با TinyVLA جایگزین شد | 140 ms | یک A6000 |
| TinyVLA-1B (TinyVLA-H) | 14 ms | یک A6000 |
OpenVLA اعمال را به صورت توکنهای گسسته از طریق سر مدل زبان، یکی برای هر بعد عمل، به صورت خودرگرسیو منتشر میکند. TinyVLA یک رمزگشای انتشار (diffusion decoder) متصل میکند که کل قطعه را در یک مرحله تولید میکند. جدول V معماری TinyVLA-H را نشان میدهد و تنها سر را در همان پنج وظیفه ربات واقعی تعویض میکند. این واضحترین مدرک در هر دو مقاله برای استدلال تطبیق جریان سیاستها ایجاد میکنند، و دلیل اینکه Pi0 از رمزگشایی توکن فاصله گرفت.
| عملکرد روی TinyVLA-H | قرار دادن توپ تنیس | برگرداندن ماگ | روی هم چیدن مکعبها | بستن کشو | باز کردن جعبه |
|---|---|---|---|---|---|
| انتشار (droid_diffusion) | 90.0 | 98.3 | 98.3 | 96.7 | 86.7 |
| ترانسفورمر قطعهبندی عمل | 13.3 | 8.3 | 8.3 | 13.3 | 23.3 |
| پرسپترون چندلایه | 0 | 0 | 0 | 0 | 0 |
ارقام 292 / 140 / 14 میلیثانیه مربوط به جدول IV هستند که همگی روی یک A6000 اجرا شدهاند. این ارقام مربوط به پیشبینی هر عمل هستند و شامل ضبط دوربین، پیشپردازش و نوشتن سریال به سرووها نمیشوند. تأخیر منتشر شده را به عنوان یک حد پایین در نظر بگیرید، نه هرگز به عنوان نرخ کنترل. اعداد ما نیز همین محدودیت را دارند: به تأخیر استنتاج مراجعه کنید.
عملکرد TinyVLA
| معیار | پروتکل | TinyVLA-H | خطوط پایه |
|---|---|---|---|
| MetaWorld، 50 وظیفه، شبیهسازی | چند وظیفهای، 50 دمو، 3 سید | 77.6 / 21.5 / 11.4 / 15.8 بر اساس دشواری، میانگین 31.6 | میانگین خطمشی انتشار 10.5 |
| ربات واقعی Franka Panda، 5 وظیفه | 100 مسیر حرکت در هر وظیفه، 20 آزمایش | میانگین 94.0 | OpenVLA 68.3, Diffusion Policy 35.3 |
| UR5 دو دستی، 3 وظیفه | چند وظیفهای، 10 آزمایش در هر وظیفه | 76.7 / 36.7 / 30.0 | OpenVLA 0 / 0 / 0, Diffusion Policy 40.3 / 31.3 / 43.0 |
ردیف دو دستی توضیحی خستهکننده دارد که خود مقاله ارائه میدهد: OpenVLA بر روی Open X-Embodiment از پیش آموزش دیده است، که به طور کامل از دادههای تکبازو تشکیل شده است، بنابراین فضای عمل دو بازو خارج از توزیع است و امتیاز آن صفر میشود. خط پایه سیاست انتشار (diffusion policy) در دو مورد از آن سه وظیفه، TinyVLA-H را شکست میدهد. پیشزمینه در نوشتار Open X-Embodiment.

مخزن TinyVLA، تا آگوست 2026
مقاله خوب است. کد یک نسخه تحقیقاتی است. مخزن github.com/liyaxuanliyaxuan/TinyVLA است؛ فایل README آن تاریخ انتشار کد را 17 فوریه 2025 و آخرین کامیت را 11 مارس 2025 نشان میدهد. برای بازتولید یک مقاله خوب است، اما اگر یک کتابخانه نگهداری شده میخواستید، مشکلساز است.
git clone https://github.com/liyaxuanliyaxuan/TinyVLA
conda create -n tinyvla python=3.10 -y
conda activate tinyvla
pip install --upgrade pip
pip install -r requirements.txt
cd policy_heads && pip install -e .
cd ../llava-pythia && pip install -e .فایل requirements.txt نسخههای torch==2.0.1، transformers==4.37.1، deepspeed==0.9.5، peft==0.4.0، diffusers==0.11.1، numpy==1.24.4 و پشته CUDA را به چرخههای 11.x محدود میکند: nvidia-cuda-runtime-cu11==11.7.99، nvidia-cudnn-cu11==8.5.0.96، triton==2.0.0. فایل README پایتون 3.10 را درخواست میکند؛ lerobot 0.6.1 به 3.12 یا جدیدتر نیاز دارد، بنابراین این دو نمیتوانند یک محیط را به اشتراک بگذارند. ابتدا تأیید کنید که یک بیلد torch 2.0.1 برای نسل GPU شما وجود دارد. اگر به جای آن، اجرا به دلیل VRAM متوقف شد، چکلیست کمبود حافظه سریعتر از حدس زدن است.
TinyVLA همچنین مجموعهدادههای LeRobot را نمیخواند. فرمت آن ACT-style HDF5 است: action، language_raw، و یک گروه مشاهدات با تصاویر چندنمایی، joint_positions، qpos و qvel. مخزن فایل data_utils/rlds_to_h5py.py را برای ورودی RLDS ارائه میدهد، و هر وظیفه به صورت دستی در aloha_scripts/constants.py با dataset_dir، episode_len و camera_names آن ثبت میشود. اگر اپیزودهای شما از lerobot یا کلاینت دسکتاپ آمدهاند، مسئولیت تبدیل با شماست.
# scripts/train.sh, the real flags from the repository
ACTION_HEAD=droid_diffusion
deepspeed --master_port 29600 --num_gpus=8 --num_nodes=1 ./train_tinyvla.py \
--deepspeed scripts/zero2.json \
--lora_enable True \
--lora_module 'vit llm' \
--lora_r 64 \
--lora_alpha 256 \
--non_lora_lr 2e-5 \
--task_name "example_task_config" \
--model_name_or_path /path/to/pretrained_vlm \
--freeze_vision_tower True \
--freeze_backbone True \
--bf16 True \
--max_steps 10000 \
--per_device_train_batch_size 32 \
--gradient_accumulation_steps 1 \
--learning_rate 2e-4 \
--lr_scheduler_type "cosine" \
--warmup_ratio 0.005 \
--save_steps 1000 \
--action_head_type $ACTION_HEAD \
--use_state True \
--window_size 6- --num_gpus=8 فرض میکند یک گره هشت کارتی است. آن را روی 1 تنظیم کنید و اندازه بچ را به خوبی زیر 32 کاهش دهید. هیچ نسخه تک-GPU به صورت پیشفرض ارائه نمیشود، بنابراین دستور را نمیتوان دقیقاً روی 4090 اجرا کرد.
- --deepspeed scripts/zero2.json به فایلی اشاره میکند که در دایرکتوری اصلی scripts نیست. تنظیمات DeepSpeed در llava-pythia/scripts/zero2.json قرار دارند. مسیر را قبل از اولین اجرای خود اصلاح کنید.
- README نیاز دارد که نام دایرکتوری خروجی شامل llava_pythia باشد، به علاوه lora اگر LoRA فعال باشد.
- بکبون یک دانلود جداگانه است: lesjie/Llava-Pythia-400M, -700M or -1.3B. هیچ نقطه بازرسی پایه واحدی وجود ندارد که شما یک policy را به آن اشاره کنید، به همان روشی که به lerobot/smolvla_base اشاره میکنید.
SmolVLA: مدل زیر 1 میلیارد پارامتر که میتوانید امروز بعدازظهر اجرا کنید
SmolVLA همین استدلال را در یک کتابخانه نگهداری شده مطرح میکند. این مدل 450 میلیون پارامتر روی بکبون SmolVLM2-500M-Video-Instruct دارد، و کارایی آن از تنظیماتی ناشی میشود که میتوانید از configuration_smolvla.py بخوانید، نه از ادعایی مبنی بر کوچک بودن.
| Setting in configuration_smolvla.py | پیشفرض | چه چیزی به دست میآید |
|---|---|---|
| num_vlm_layers | 16 | فقط 16 لایه اول مدل زبان اجرا میشوند |
| expert_width_multiplier | 0.75 | اندازه پنهان متخصص عمل 75 درصد VLM است |
| self_attn_every_n_layers | 2 | خود-توجهی با توجه متقاطع در هم آمیخته است |
| chunk_size / n_action_steps | 50 / 50 | یک گذر 50 عمل را منتشر میکند و هر 50 عمل اجرا میشوند |
| num_steps | 10 | حذف نویز تطبیق جریان در 10 گام ثابت شده است |
| tokenizer_max_length | 48 | دستورالعمل به 48 توکن کوتاه میشود |
| freeze_vision_encoder / train_expert_only | True / True | تنظیم دقیق، متخصص را حرکت میدهد، نه برج بینایی را |
| optimizer_lr, warmup, decay | 1e-4, 1000 steps, to 2.5e-6 over 30000 | نه دستورالعمل مقاله: پیشآموزش آن از یک گرمکردن 100 گامی در طول 200000 گام استفاده کرد |
پیشآموزش از 481 مجموعه داده جامعه LeRobot، 22.9 هزار اپیزود و 10.6 میلیون فریم روی 4 GPU، 200000 گام با یک بچ جهانی 256 استفاده کرد؛ مقاله کل پروژه را حدود 30 هزار ساعت GPU تخمین میزند. یک عدد قابل توجه: وبلاگ راهاندازی Hugging Face میگوید 487 مجموعه داده انتخاب شده، در حالی که جدول مقاله 481 را نشان میدهد. ما از رقم مقاله استفاده میکنیم و این اختلاف را علامتگذاری میکنیم.
| معیار | SmolVLA 0.45 B | SmolVLA 2.25 B | Pi0 | ACT |
|---|---|---|---|---|
| میانگین LIBERO، چندوظیفهای | 87.3 | 88.75 | 86.0 (3.3 B, robotics-pretrained) | - |
| میانگین Meta-World، چندوظیفهای | 57.3 | 68.24 | 47.9 (3.5 B, robotics-pretrained) | - |
| SO-100 واقعی، 3 وظیفه، آموزش چندوظیفهای | 78.3 | - | 61.7 (3.5 B) | - |
| SO-100 واقعی، 3 وظیفه، تکوظیفهای، بدون پیشآموزش رباتیک | 40.0 | - | - | 48.3 |
| SO-101 لگو برداشت و قرار دادن، تکوظیفهای، در توزیع | 90 | - | - | 70 |
| SO-101 لگو برداشت و قرار دادن، تکوظیفهای، خارج از توزیع | 50 | - | - | 40 |
LIBERO شبیهسازی است و اکنون همه مدلهای کارآمد در آن امتیازات دهه هشتاد را کسب میکنند. ردیف SO-100 واقعی، جایی که یک مدل 450 میلیونی یک مدل 3.5 میلیاردی را با 16.6 امتیاز شکست میدهد، جالب توجه است؛ ردیف زیر آن وزنه تعادل است. اگر پیشآموزش جامعه و آموزش چندوظیفهای را حذف کنیم، همان مدل به 40.0 کاهش مییابد، پایینتر از ACT. ادعای قابل دفاع این است که یک مدل کوچک به طور خودکار بدتر نیست، نه اینکه بهتر است.
یک اتفاق کمککننده: جدول Meta-World مقاله SmolVLA اعداد منتشر شده TinyVLA را به عنوان یک خط مبنا در خود دارد، بنابراین برای یک بار هر دو مدل در یک جدول قرار میگیرند، SmolVLA-0.45B با 57.3 در مقابل TinyVLA-H با 31.6. همچنین گزارش میدهد که آموزش SmolVLA حدود 40 درصد سریعتر از Pi0 با 6 برابر حافظه کمتر است. همه اینها از نویسندگان SmolVLA میآید؛ مدخل آرنا هر مقدار را به منبع آن پیوند میدهد.
SmolVLA زمان خود را کجا صرف میکند
AY-Robots مدل SmolVLA را 245 میلیثانیه در هر گام عملیاتی و ACT را 20 میلیثانیه در کاتالوگ سیاستها. TinyVLA 14 میلیثانیه برای هر پیشبینی عمل گزارش میدهد. این اعداد قابل مقایسه نیستند و فرض بر قابل مقایسه بودن آنها رایجترین اشتباه در این موضوع است: برخی زمان یک گذر رو به جلو را میسنجند، برخی آن گذر را بر روی یک تکه تقسیم میکنند زمانی که تکهبندی عمل آن را مستهلک میکند.
- SmolVLA در هر گذر رو به جلو 50 عمل را منتشر کرده و هر 50 عمل را اجرا میکند. با نرخ 30 فریم بر ثانیه که مقاله برای رباتهای واقعی استفاده میکند، یک استنتاج حدود 1.7 ثانیه حرکت را پوشش میدهد.
- استنتاج ناهمزمان (Asynchronous inference) تکه بعدی را در حالی که تکه فعلی هنوز در حال اجراست محاسبه میکند: میانگین زمان تکمیل وظیفه 9.7 ثانیه در مقابل 13.75 ثانیه همزمان، تقریباً 30 درصد سریعتر، و 19 چرخه برداشت و قرار دادن (pick-and-place) در یک پنجره 60 ثانیهای ثابت در مقابل 9 چرخه.
- نرخهای موفقیت قابل مقایسه بودند تا بهتر، 78.3 همزمان در مقابل 73.3 ناهمزمان. ناهمزمانی توان عملیاتی را افزایش میدهد، نه دقت را.
- تکهبندی تأخیر محاسباتی را پنهان میکند، نه تأخیر شبکه را، و سیاست را کمتر واکنشپذیر میکند زیرا به 50 عمل متعهد است.
AY-Robots میتواند یک پاد GPU ابری را به صورت خودکار فراهم کند که خطمشی شما را ارائه میدهد، در حالی که کلاینت ربات محلی با آن نقطه پایانی صحبت میکند، و پاد دارای یک نگهبان بیکار است تا به جای صورتحسابدهی بیصدا، خود را از بین ببرد. آنچه انجام نمیدهد، حذف رفت و برگشت اینترنت عمومی است. حلقه کنترل در پنج خطمشی اینجا، 20 تا 485 میلیثانیه در هر گام عملیاتی قبل از هرگونه شبکه است، بنابراین استنتاج از راه دور برای عملیات کند برداشت و قرار دادن (pick-and-place) قابل اجرا است، نه برای حرکت واکنشی سریع.

تنظیم دقیق SmolVLA روی یک کارت مصرفکننده
مسیر دستی، روی lerobot 0.6.1، نسخه فعلی PyPI از 23 آگوست 2026. همه موارد زیر از مستندات Hugging Face lerobot SmolVLA، که در همان روز دریافت شده است، میآید؛ نسخه راهنما ملایمتر است.
- 1نصب lerobot با افزونه smolvla
وابستگیهای SmolVLA یک افزونه اختیاری هستند و بخشی از نصب پایه نیستند. نصب بدون آن و سپس تعجب از اینکه چرا نوع خطمشی ناشناخته است، یک نیم ساعت رایج از دست رفته است.
bashgit clone https://github.com/huggingface/lerobot.git cd lerobot pip install -e ".[smolvla]" - 2یک مجموعه داده با اپیزودهای کافی تهیه کنید
مستندات حدود 50 اپیزود را توصیه میکنند و بیان میکنند که همان کار با 25 اپیزود کافی نبوده است. AY-Robots حداقل را 30 تعیین میکند. خودتان ضبط کنید، یا از دایرکتوری مجموعه داده شروع کنید.
bash# any LeRobotDataset on the Hub works as --dataset.repo_id # lerobot/svla_so100_pickplace is the paper's own 50-episode set: # 5 cube positions, 10 episodes each - 3شروع تنظیم دقیق
دستور از راهنمای lerobot، بدون تغییر. مستندات 20000 گام را تقریباً 4 ساعت روی یک A100 تخمین میزنند. روی یک کارت 24 گیگابایتی، زمان بیشتری انتظار داشته باشید و آن را اندازهگیری کنید.
bashcd lerobot && lerobot-train \ --policy.path=lerobot/smolvla_base \ --dataset.repo_id=${HF_USER}/mydataset \ --batch_size=64 \ --steps=20000 \ --output_dir=outputs/train/my_smolvla \ --job_name=my_smolvla_training \ --policy.device=cuda \ --wandb.enable=true - 4اندازه دسته را تا زمانی که جا شود کاهش دهید
batch_size=64 یک مثال مستند است، نه یک تضمین در مورد کارت شما. مستندات توصیه میکنند که با مقدار کم شروع کرده و در حالی که زمان بارگذاری کوتاه میماند، آن را افزایش دهید.
bashlerobot-train --help - 5اجرای نقطه بازرسی روی بازو
همان کتابخانه، یک دستور. پرچمهای تکهتکه کردن بلادرنگ در مستندات کامنت شدهاند و برای سختافزارهای کمتوان باید از آنها استفاده کرد.
bashlerobot-rollout \ --strategy.type=base \ --robot.type=so101_follower \ --robot.port=/dev/ttyACM0 \ --robot.id=my_blue_follower_arm \ --robot.cameras="{ front: {type: opencv, index_or_path: 8, width: 640, height: 480, fps: 30}}" \ --task="Grasp a lego block and put it in the bin." \ --policy.path=HF_USER/FINETUNE_MODEL_NAME
هر مسیری که انتخاب کنید، در نهایت به یک نقطه بازرسی به همراه پیکربندی که آن را تولید کرده است، میرسید. بازبینی مجموعه داده، تعداد گامها و seed را در کنار آن نگه دارید. lerobot به طور پیشفرض از seed 1000 استفاده میکند؛ نقطه ورود تنظیم دقیق GR00T هیچ seedی را آشکار نمیکند، بنابراین آن اجراها به صورت بیت به بیت قابل بازتولید نیستند. مکانیکها در مستندات آموزش.
دو راه برای قرار دادن یک VLA کوچک روی بازو
شما مالک دستگاه و حالتهای خرابی هستید. برای SmolVLA این منطقی است: یک افزونه pip، یک دستور آموزش، یک دستور اجرا. برای TinyVLA این یک بازتولید تحقیقاتی با پینهای ثابت، یک مسیر DeepSpeed خراب و یک تبدیل داده است که خودتان مینویسید.
- یک کارت 24 گیگابایتی تهیه کنید، 30 تا 50 اپیزود ضبط کنید، جریانهای دوربین را فریم به فریم تأیید کنید.
- pip install -e ".[smolvla]" را اجرا کنید، lerobot-train را در برابر lerobot/smolvla_base اجرا کنید، سپس نقطه بازرسی را روی دستگاهی که بازو به آن متصل است، سرویسدهی کنید.
- برای TinyVLA: محیط conda جداگانه، تبدیل داده به HDF5، ثبت وظیفه در constants.py، رفع مسیر zero2.json، کاهش train.sh از هشت GPU به یک GPU.
- پس از پرداخت هزینه کارت، صورتحساب ساعتی وجود ندارد.
- استنتاج در کنار سرووها قرار میگیرد، تنها راه برای دستیابی به یک حلقه کنترل سریع.
- میتوانید کد خطمشی را پچ کنید، و TinyVLA فقط از این طریق در دسترس است.
- یک 4090 هر خطمشی ~3 B را حذف میکند، بنابراین مقایسه محلی با GR00T N1.7 یا Pi0.5 امکانپذیر نیست.
- تنظیم محیط کار اصلی است. پینهای TinyVLA به تنهایی میتوانند یک روز زمان ببرند.
- بدون صف، بدون تلاش مجدد، بدون ذخیرهسازی نقطه بازرسی. راهاندازی مجدد در گام 14000 به معنای شروع دوباره است.
SmolVLA یکی از پنج خطمشی در اینجا است. شما مدل و مجموعه داده را در یک فرم انتخاب میکنید، بکاند یک GPU را بر اساس VRAM مورد نیاز اجاره میکند، آموزشدهنده را اجرا میکند و نقاط بازرسی را در ذخیرهسازی شیء مینویسد. گام به گام: SmolVLA روی SO-100، یا ماتریس کامل در صفحه آموزش.
| آنچه پلتفرم برای SmolVLA ارسال میکند | مقدار |
|---|---|
| اندازه دسته | 2 |
| نرخ یادگیری | 1e-4 |
| حداکثر گامها | 20000 |
| تجمع گرادیان | 8, and it does not reach the trainer |
| تنظیمات اضافی در فرم | seed, logFreq |
| رده GPU | RTX 4090 or any 24 GB card |
| فرمت مجموعه داده | LeRobot v3.0 |
| حداقل اپیزودها | 30 |
اولاً، اندازه دسته پیشفرض در اینجا 2 است، نه 64 در مثال مستندات lerobot، و تنظیم تجمع گرادیان ارسال میشود اما برای SmolVLA هیچ تأثیری ندارد، بنابراین دسته مؤثر واقعاً 2 است. آن را عمداً افزایش دهید به جای اینکه فرض کنید پیشفرض با بالادست مطابقت دارد. ثانیاً، TinyVLA اصلاً در اینجا قابل آموزش نیست.
یک اجرا در رده 24 گیگابایتی 2 تا 5 ساعت با هزینه 0.30 تا 0.60 دلار آمریکا در ساعت طول میکشد، تقریباً 1 تا 3 دلار آمریکا. در رده A100، یک خطمشی ~3 B، 3 تا 6 ساعت با هزینه 1.20 تا 2.00 دلار آمریکا در ساعت طول میکشد، تقریباً 4 تا 12 دلار آمریکا. به قیمتگذاری، و همین عملیات از CLI و سرور MCP مراجعه کنید.
زمانی که یک مدل کوچک انتخاب اشتباهی است
هر دو مقاله در اینجا دقیقتر از خلاصهها هستند. تحلیل شکست TinyVLA خاص است: نسخه 0.4 B سه بار با خواندن اشتباه دستورالعمل شکست خورد، که نویسندگان آن را به درک زبان محدود در VLM کوچکتر نسبت میدهند، و این حالت در 1.3 B ناپدید شد. SmolVLA همان منحنی را از انتهای دیگر نشان میدهد: نسخه 2.25 B از معماری یکسان در LIBERO امتیاز 88.75 و در Meta-World امتیاز 68.24 را کسب میکند در مقابل 87.3 و 57.3 برای مدل 0.45 B.
- روی کارت 24 گیگابایتی جا میشود، که هزینه یک آزمایش را از دهها دلار به چند دلار کاهش میدهد.
- به اندازه کافی سریع است که در کنار بازو اجرا شود، بنابراین هیچ پرش شبکه در حلقه کنترل وجود ندارد.
- روی دادههایی که یک نفر میتواند ضبط کند، تنظیم دقیق میشود، دهها اپیزود به جای هزاران.
- وزنها، لیست دادهها و کد SmolVLA عمومی هستند، بنابراین یک نتیجه بد قابل اشکالزدایی است.
- پیروی ضعیفتر از دستورالعملها: پارامترهای زبانی کمتر، توانایی کمتر برای تفکیک عبارات ارجاعی مشابه.
- تعمیم فضایی و بصری کمتر به تنظیماتی که ضبط نکردهاید.
- حساسیت بیشتر به نقصهای مجموعه داده، با پیشآموزش کمتر برای اتکا به آن.
- کارهای چندوظیفهای و با افق بلند همچنان مدلهای بزرگتر را ترجیح میدهند، از جمله نسخه 2.25 B خود SmolVLA.
مقایسهای که ارزش اجرا دارد، TinyVLA در برابر SmolVLA نیست. بلکه SmolVLA در برابر ACT در وظیفه خودتان است، و مقاله SmolVLA دلیل آن را توضیح میدهد. SmolVLA که به صورت تکوظیفهای و بدون پیشآموزش رباتیک آموزش دیده بود، در سه وظیفه SO-100 به طور متوسط 40.0 امتیاز کسب کرد، در حالی که ACT تکوظیفهای 48.3 امتیاز داشت. آنچه آن را به 78.3 میرساند، پیشآموزش جامعه به علاوه آموزش چندوظیفهای است، نه فقط معماری. در وظیفه لگو SO-101، هر دو تکوظیفهای، SmolVLA برنده میشود: 90 در برابر 70 در توزیع. سپس SmolVLA در برابر Pi0.5 اگر بودجه اجازه دهد.
پیشآموزش کمتری برای پوشش دادههای بد وجود دارد، بنابراین یک منحنی افت (loss curve) تمیز روی یک مجموعه داده معیوب، سیاستی را به شما میدهد که نقص را با اطمینان بازتولید میکند. مستندات lerobot در مورد ساختار صریح هستند: ۵۰ اپیزود در ۵ موقعیت مکعب، ۱۰ اپیزود برای هر موقعیت، کار کرد؛ ۲۵ اپیزود کار نکرد. اگر افت (loss) خوب به نظر میرسد و بازو کار مفیدی انجام نمیدهد، از افت کاهش مییابد، سیاست کاری انجام نمیدهد، سیاست فقط در یک تنظیمات کار میکند یا جمعآوری دادههای آموزشی VLA که واقعاً قابل استفاده هستند شروع کنید.
پنج سیاست، یک جدول مقایسه
GR00T N1.7، GR00T N1.5، Pi0.5، SmolVLA و ACT با تعداد پارامترهای واقعی، تأخیر استنتاج در هر گام عملیاتی، رده GPU مورد نیاز هر یک و حداقل تعداد اپیزود قبل از انجام هر کار مفیدی.
سیاستها را مقایسه کنیدیک جدول تصمیمگیری که میتوانید بر اساس آن عمل کنید
| وضعیت شما | با این شروع کنید | چرا |
|---|---|---|
| یک وظیفه، نمایشهای خوب، بدون زبان | ACT | ~۸۰ میلیون، ۲۰ میلیثانیه، کارت ۲۴ گیگابایتی، بدون مدل پایه برای دانلود |
| چند وظیفه مرتبط، هر کدام یک دستورالعمل | SmolVLA | 450 M, in lerobot, حداقل ۳۰ اپیزود، ۱ تا ۳ دلار برای هر اجرا |
| باز تولید نتیجه TinyVLA به طور خاص | TinyVLA-B or TinyVLA-H | مخزن تنها راه است: محیط ایزوله، دادههای تبدیل شده |
| چند وظیفهای، دستورالعملهای متنوع، بودجه A100 | GR00T N1.7 or Pi0.5 | ~۳ میلیارد، ۱۵۲ میلیثانیه و ۴۸۵ میلیثانیه در هر گام، ۴ تا ۱۲ دلار برای هر اجرا |
| هنوز رباتی ندارید | یک بازوی واقعی را هدایت کنید | بازوی زنده مبتنی بر صف نیازی به ثبتنام و سختافزار ندارد |
برای ردیف آخر، بازوی زنده یک SO-100 فیزیکی را پخش میکند که میتوانید بدون نیاز به حساب کاربری از مرورگر آن را کنترل کنید، و سه روش برای شروع بقیه را پوشش میدهد. این SO-100 بازوی مرجع در اینجا است، تقریباً 110 تا 150 یورو در قطعات، با یک راهنمای کامل راهاندازی.
چه چیزی پس از مدلهای زیر 1 میلیارد پارامتر میآید
کاهش تعداد پارامترها یکی از راههای ارزان کردن VLA است و لزوماً راه برنده نیست. OpenVLA-OFT (arXiv 2502.19645) ستون فقرات 7 میلیارد پارامتری را حفظ میکند و تنها نحوه رمزگشایی اقدامات را تغییر میدهد، که افزایش 26 برابری در توان عملیاتی تولید اقدام و افزایش LIBERO از 76.5 به 97.1 درصد را گزارش میکند. BitVLA (arXiv 2506.07530) هر وزن از ستون فقرات 1 بیتی BitNet b1.58 2B4T را سهتایی میکند، که 11.0 برابر حافظه کمتر و 4.4 برابر تأخیر کمتر از ابتدا تا انتها را گزارش میکند، در حالی که با OpenVLA-OFT با دقت کامل مطابقت دارد. X-VLA-0.9B (arXiv 2510.10274) با تطبیق جریان در خط 1 میلیارد پارامتر قرار میگیرد.
نکته مشترک: رمزگشای اقدام، نه مدل زبان، جایی است که تأخیر وجود دارد. قبل از اینکه بپرسید یک سیاست چند پارامتر دارد، بپرسید چگونه اقدامات را منتشر میکند. این آرنا دارای 85 مدل و 332 نتیجه است که هر کدام به منبع خود پیوند داده شدهاند؛ یک نمای کلی گستردهتر در معرفی VLA ما.
آیا میتوانم SmolVLA را روی یک RTX 4090 تنظیم دقیق (fine-tune) کنم؟▾
بله. SmolVLA دارای ۴۵۰ میلیون پارامتر است و AY-Robots آن را روی سطح RTX 4090 / 24 GB اجرا میکند. مثال lerobot از --batch_size=64 استفاده میکند که یک نمونه است نه تضمینی برای کارت شما؛ مستندات توصیه میکنند که با مقدار کم شروع کرده و در حالی که زمان بارگذاری کوتاه میماند، آن را افزایش دهید. انتظار زمانی طولانیتر از تقریباً ۴ ساعتی که مستندات برای ۲۰۰۰۰ گام روی A100 ذکر میکنند، داشته باشید.
آیا TinyVLA در lerobot یا روی AY-Robots موجود است؟▾
خیر، برای هر دو. TinyVLA فقط در مخزن تحقیقاتی خود موجود است، آخرین کامیت ۱۱ مارس ۲۰۲۵، و فرمت آن HDF5 به سبک ACT است نه LeRobot. AY-Robots مدلهای GR00T N1.7, GR00T N1.5, Pi0.5, SmolVLA و ACT را آموزش میدهد. اگر TinyVLA را میخواهید، باید خودتان آن را بسازید و ابتدا باید مسیر پیکربندی DeepSpeed را در scripts/train.sh اصلاح کنید.
آیا یک مدل ۴۵۰ میلیون پارامتری واقعاً با یک مدل ۳ میلیارد پارامتری رقابتی است؟▾
بر اساس معیارهای خود نویسندگان، بله: ۸۷.۳ در برابر ۸۶.۰ در LIBERO در مقایسه با یک Pi0 از پیش آموزشدیده رباتیک با ۳.۳ میلیارد پارامتر، و ۷۸.۳ در برابر ۶۱.۷ در سه وظیفه واقعی SO-100 که همان مقاله Pi0 را با ۳.۵ میلیارد پارامتر برچسبگذاری میکند. محدودیت در همان مقاله ذکر شده است: در وظایف تکگانه بدون پیشآموزش رباتیک، SmolVLA به ۴۰.۰ کاهش مییابد که پایینتر از ۴۸.۳ ACT است.
چند اپیزود نیاز دارم تا یک VLA کوچک کاری انجام دهد؟▾
AY-Robots حداقل اپیزودهای SmolVLA را ۳۰ و حداقل ACT را ۵۰ تعیین میکند. مستندات lerobot حدود ۵۰ اپیزود را توصیه میکنند و گزارش میدهند که ۲۵ اپیزود برای همان وظیفه کافی نبوده است. ساختار به اندازه تعداد اهمیت دارد: مجموعه داده مقاله از ۵ موقعیت مکعب با ۱۰ اپیزود برای هر کدام استفاده کرده است.
چرا اعداد تأخیر منتشر شده اینقدر با هم اختلاف دارند؟▾
آنها چیزهای متفاوتی را اندازهگیری میکنند. TinyVLA ۱۴ میلیثانیه برای هر پیشبینی عمل روی A6000 گزارش میدهد؛ AY-Robots SmolVLA را ۲۴۵ میلیثانیه و ACT را ۲۰ میلیثانیه برای هر گام عمل فهرست میکند. برخی ارقام یک گذر رو به جلو را پوشش میدهند، برخی یک گذر را بین یک بسته ۵۰ عملی تقسیم میکنند، و تقریباً هیچکدام شامل ضبط دوربین یا نوشتن به سرووها نمیشوند.
آیا استنتاج ابری مشکل GPU را حل میکند؟▾
تا حدی. AY-Robots به طور خودکار یک پاد را فراهم میکند که سیاست را ارائه میدهد در حالی که کلاینت محلی با آن نقطه پایانی ارتباط برقرار میکند، با یک نگهبان بیکار (idle watchdog) که باعث میشود خودش را از بین ببرد به جای اینکه بیصدا صورتحساب صادر کند. این نمیتواند سفر رفت و برگشت اینترنت عمومی را حذف کند، و حلقه کنترل از قبل ۲۰ تا ۴۸۵ میلیثانیه برای هر گام عمل است. برای عملیات آرام برداشتن و قرار دادن خوب است، اما برای حرکت واکنشی سریع مناسب نیست.
Sources
- TinyVLA: به سوی مدلهای بینایی-زبان-عمل سریع و کارآمد داده برای دستکاری رباتیک
- مخزن کد رسمی TinyVLA (README, requirements.txt, scripts/train.sh)
- صفحه پروژه TinyVLA
- lesjie/Llava-Pythia-1.3B، وزنهای ستون فقرات TinyVLA-H
- SmolVLA: یک مدل بینایی-زبان-عمل برای رباتیک مقرونبهصرفه و کارآمد
- مستندات lerobot: تنظیم دقیق SmolVLA
- lerobot: configuration_smolvla.py، تنظیمات پیشفرض SmolVLA
- کارت مدل lerobot/smolvla_base
- SmolVLA: مدل بینایی-زبان-عمل کارآمد (وبلاگ Hugging Face)
- lerobot در PyPI (0.6.1، نیازمند Python 3.12 یا جدیدتر)
- OpenVLA: یک مدل بینایی-زبان-عمل متنباز
- تنظیم دقیق مدلهای بینایی-زبان-عمل: بهینهسازی سرعت و موفقیت (OpenVLA-OFT)
- BitVLA: مدلهای بینایی-زبان-عمل ۱ بیتی برای دستکاری رباتیک
- X-VLA: ترانسفورمر با پرامپت نرم به عنوان مدل بینایی-زبان-عمل مقیاسپذیر و چند-تجسمی
- کارت مدل rail-berkeley/octo-small-1.5 (۲۷ میلیون پارامتر)
Sources
- TinyVLA: Towards Fast, Data-Efficient Vision-Language-Action Models for Robotic Manipulation
- TinyVLA official code repository (README, requirements.txt, scripts/train.sh)
- TinyVLA project page
- lesjie/Llava-Pythia-1.3B, the TinyVLA-H backbone weights
- SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics
- lerobot documentation: fine-tuning SmolVLA
- lerobot: configuration_smolvla.py, the SmolVLA defaults
- lerobot/smolvla_base model card
- SmolVLA: Efficient Vision-Language-Action Model (Hugging Face blog)
- lerobot on PyPI (0.6.1, requires Python 3.12 or newer)
- OpenVLA: An Open-Source Vision-Language-Action Model
- Fine-Tuning Vision-Language-Action Models: Optimizing Speed and Success (OpenVLA-OFT)
- BitVLA: 1-bit Vision-Language-Action Models for Robotics Manipulation
- X-VLA: Soft-Prompted Transformer as Scalable Cross-Embodiment Vision-Language-Action Model
- rail-berkeley/octo-small-1.5 model card (27 M parameters)
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started