
SmolVLA একটি 450 M প্যারামিটার VLA যা একটি একক 24 GB কার্ডে ফাইন-টিউন করা যায়। প্রকৃত lerobot 0.6.1 কমান্ড, প্রকৃত ডিফল্ট, যে ফাঁদগুলি একদিন নষ্ট করে, এবং একটি রানের খরচ কত।
এক স্ক্রিনে স্মলভিএলএ
- •৪৫০ মিলিয়ন প্যারামিটার, যার মধ্যে প্রায় ১০০ মিলিয়ন একটি ফ্লো ম্যাচিং অ্যাকশন এক্সপার্ট। lerobot শুধুমাত্র সেই এক্সপার্টকে প্রশিক্ষণ দেয় এবং VLM-কে ফ্রিজড রাখে, এই কারণেই এটি একটি কার্ডে ফিট করে।
- •LeRobot-এর কম্পিউট গাইড অনুসারে, AdamW সহ ব্যাচ ৮-এ smolvla গ্রুপটির সর্বোচ্চ VRAM প্রায় ১০ থেকে ১৬ GB। তাই ২৪ GB।
- •এন্ট্রি পয়েন্ট হল lerobot-train। জুন ২০২৫-এর SmolVLA ব্লগ পোস্টে এখনও python lerobot/scripts/train.py প্রিন্ট করা হয়, যা এখন আর বিদ্যমান নেই। নিচের সবকিছুই lerobot 0.6.1।
- •কসাইন শিডিউলটি ৩০০০০ স্টেপের উপর ক্ষয় হওয়ার জন্য প্রিসেট করা হয়েছে। lerobot 0.6.1 এটিকে একটি ছোট রানের জন্য কমিয়ে দেয় এবং লগ করে, কিন্তু কখনও বাড়ায় না: স্টক ১০০০০০ স্টেপের রান ৭০০০০ স্টেপের জন্য 2.5e-6 ফ্লোরে শেষ হয়।
- •ত্রিশটি এপিসোড হল AY-Robots-এর সর্বনিম্ন, একটি ২৪ GB টায়ারে যার প্রতি রানের খরচ ১ থেকে ৩ USD, যেখানে ৮০ GB মডেলগুলির জন্য ৪ থেকে ১২ USD।
বেশিরভাগ মানুষ যারা একটি ভিশন ল্যাঙ্গুয়েজ অ্যাকশন মডেল একটি বাস্তব বাহুতে ব্যবহার করতে চান, তারা হার্ডওয়্যার লাইনে এসে থেমে যান। GR00T N1.7 এবং Pi0.5 প্রতিটি প্রায় তিন বিলিয়ন প্যারামিটার এবং একটি A100 80 GB বা একটি H100 চায়। যদি আপনার কাছে একটি RTX 4090 সহ একটি গেমিং পিসি থাকে, তবে সেটিই শেষ রাস্তা। SmolVLA হল ব্যতিক্রম: ৪৫০ মিলিয়ন প্যারামিটার, LeRobot-এর ভিতরে, একটি কনজিউমার কার্ডে ফাইন-টিউন করার জন্য এবং একটি CPU থেকে পরিবেশন করার জন্য তৈরি।
প্রথমে ম্যানুয়াল রুট: lerobot ইনস্টল করুন, lerobot/smolvla_base চেকপয়েন্টটি টানুন, আসল কমান্ডটি চালান, এবং এটি চলার সময় রানটি পড়ুন। তারপর প্ল্যাটফর্ম রুট, এবং যেখানে এটি সাহায্য করে না।
স্মলভিএলএ কী, যে সংখ্যাগুলি আপনি পরীক্ষা করতে পারেন
SmolVLA হল একটি ফ্লো ম্যাচিং নীতি যা একটি ছোট ভিশন ল্যাঙ্গুয়েজ মডেলের সাথে যুক্ত। এর ব্যাকবোন হল SmolVLM2-500M-Video-Instruct; গবেষণাপত্রটি এর ল্যাঙ্গুয়েজ মডেলের শুধুমাত্র প্রথম ১৬টি স্তর ব্যবহার করে, প্রতিটি ক্যামেরা ফ্রেমকে ইমেজ টাইলিংয়ের পরিবর্তে পিক্সেল শাফেল ব্যবহার করে ৬৪টি ভিজ্যুয়াল টোকেনে সীমাবদ্ধ করে, এবং প্রতি দ্বিতীয় ব্লকে একটি সেলফ অ্যাটেনশন লেয়ারের সাথে ক্রস অ্যাটেনশনকে ইন্টারলিভ করে। ইনফারেন্স খরচ একটি ডিজাইন সীমাবদ্ধতা ছিল, কোনো পরবর্তী চিন্তা নয়।
| বৈশিষ্ট্য | মান | উৎস |
|---|---|---|
| Total parameters | প্রায় ৪৫০ M | paper |
| Action expert | প্রায় ১০০ M, ফ্লো ম্যাচিং | paper |
| VLM backbone | HuggingFaceTB/SmolVLM2-500M-Video-Instruct | vlm_model_name |
| VLM layers used | ল্যাঙ্গুয়েজ মডেলের প্রথম ১৬টি | num_vlm_layers = 16 |
| Visual tokens per frame | ৬৪, পিক্সেল শাফেল, কোনো টাইলিং নেই | paper |
| Pretraining | ৪৮১টি কমিউনিটি ডেটাসেট, ২২.৯ K এপিসোড, ১০.৬ M ফ্রেম; ৪টি GPU-তে গ্লোবাল ব্যাচ ২৫৬ সহ ২০০০০০ ধাপ | paper |
বেঞ্চমার্কগুলিই হল কারণ কেন মানুষ একটি ৪৫০ M মডেল নিয়ে মাথা ঘামায়। LIBERO-তে এটি ৭ B-এর OpenVLA-এর ৭৬.৫ শতাংশ এবং ৩.৩ B-এর রোবোটিক্স-প্রিট্রেইনড Pi0-এর ৮৬.০ শতাংশের বিপরীতে গড়ে ৮৭.৩ শতাংশ অর্জন করে; Meta-World-এ, ৪৭.৯-এর বিপরীতে ৫৭.৩। বাস্তব SO-100 হার্ডওয়্যারে, মাল্টি-টাস্ক ট্রেনিং পিক অ্যান্ড প্লেসে ৭৫ শতাংশ, স্ট্যাকিংয়ে ৯০ শতাংশ, সর্টিংয়ে ৭০ শতাংশ দেয়, যার গড় ৭৮.৩, যেখানে ACT প্রতি টাস্কে প্রশিক্ষিত হয়ে গড়ে ৪৮.৩ অর্জন করে। একই সারিগুলি SmolVLA এরিনা এন্ট্রি এবং ACT বনাম SmolVLA তুলনা-তে প্রকাশিত প্রতিটি VLA-এর পাশে বসে।
SmolVLA সব কিছুতে একটি ৩ B মডেলের চেয়ে ভালো নয়। গবেষণাপত্রের নিজস্ব SO-101 সারণীটিই প্রমাণ: বিতরণে ৯০ শতাংশ সাফল্য, এর বাইরে ৫০ শতাংশ, এমন একটি প্ল্যাটফর্মে যা এটিতে কখনও প্রিট্রেইন করা হয়নি। এটি যা দাবি করে এবং সমর্থন করে তা হল, Pi0-এর তুলনায় এটি ৬ গুণ কম মেমরিতে প্রায় ৪০ শতাংশ দ্রুত প্রশিক্ষণ দেয়।
কেন একটি 24 GB কার্ড প্রথম রানের জন্য সঠিক পছন্দ
LeRobot একটি কম্পিউট সাইজিং গাইড সরবরাহ করে, যা এই কাজের জন্য রিপোজিটরিটির সবচেয়ে দরকারী পৃষ্ঠা। এটি ব্যাকবোন আকার অনুসারে নীতিগুলিকে গোষ্ঠীভুক্ত করে এবং প্রতি গ্রুপে একটি VRAM এনভেলপ দেয়, যা AdamW সহ ব্যাচ সাইজ 8-এ পরিমাপ করা হয়, যা lerobot-এর ডিফল্ট। অপ্টিমাইজার স্টেট একা একটি খালি ফরোয়ার্ড এবং ব্যাকওয়ার্ড পাসের উপর 30 থেকে 100 শতাংশ যোগ করে, তাই এগুলি শুধুমাত্র ওজনের হিসাব নয়।
| গ্রুপ | নীতিমালা | সর্বোচ্চ VRAM (ব্যাচ 8, AdamW) | স্টার্টার GPU |
|---|---|---|---|
| লাইট BC | act, vqbet, tdmpc | প্রায় 2 থেকে 6 GB | RTX 3060, L4 |
| ডিফিউশন | diffusion, multi_task_dit | প্রায় 8 থেকে 14 GB | RTX 4070+, L4 |
| স্মল VLA | smolvla | প্রায় 10 থেকে 16 GB | RTX 4080+, L4, A10G |
| লার্জ VLA | pi0, pi0_fast, pi05, xvla, wall_x | প্রায় 24 থেকে 40 GB | A100 40 GB+ |
| মাল্টিমোডাল | groot, eo1 | প্রায় 24 থেকে 40 GB | A100 40 GB+ |
ব্যাচ 8-এ দশ থেকে ষোল গিগাবাইটই মূল যুক্তি: একটি 24 GB কার্ডে এটি এবং ডেটা লোডার উভয়ই ধরে। AY-Robots SmolVLA-কে RTX 4090 বা যেকোনো 24 GB কার্ডে চালায়, ন্যূনতম 30 এপিসোড, LeRobot v3.0 ডেটা সহ, প্রতি অ্যাকশন স্টেপে 245 ms। ভাড়া করা হলে, এটি প্রতি ঘন্টায় 0.30 থেকে 0.60 USD-তে 2 থেকে 5 ঘন্টা, প্রায় 1 থেকে 3 USD একটি ফাইন-টিউনিং রানের জন্য, যেখানে 80 GB টায়ারের GR00T এবং Pi0.5-এর জন্য 4 থেকে 12 USD প্রয়োজন (মূল্য)। একটি ব্যর্থ SmolVLA রান মানে এক কাপ কফি; একটি ব্যর্থ GR00T রান মানে দুপুরের খাবার।

- আপনার কাছে ইতিমধ্যেই থাকা হার্ডওয়্যারে ফিট করে: ব্যাচ 8-এ প্রায় 10 থেকে 16 GB।
- একটি ব্যর্থ রানের জন্য ঘন্টা এবং একক-সংখ্যার ডলার খরচ হয়, তাই ডেটা সেট সম্পর্কে ভুল হলেও আপনি সামর্থ্য রাখতে পারেন।
- lerobot ট্যাগ-এর অধীনে শেয়ার করা কমিউনিটি ডেটা সেটগুলিতে প্রিট্রেইন করা হয়েছে, বাস্তব SO-100 এবং SO-101 ফলাফল সহ।
- এটি lerobot-এর মধ্যেই থাকে: কোনো ভেন্ডর রেপো নেই, এবং smolvla_base গেটেড নয়।
- 450 M এখনও 450 M: কাগজের SO-101 সারণীতে ডিস্ট্রিবিউশনের বাইরে সাফল্যের হার 90 থেকে 50 শতাংশে নেমে আসে।
- এটি LeRobot v3.0 ডেটা চায়; একটি v2.1 রেকর্ডিংকে রূপান্তর করতে হবে (ডেটা সেট v3 প্রত্যাখ্যান করা হয়েছে)।
- প্রতি অ্যাকশন স্টেপে 245 ms একটি সক্ষম পিক অ্যান্ড প্লেস কন্ট্রোলার, প্রতিক্রিয়াশীল নয়।
- ডক্স উদাহরণটি A100-এ ব্যাচ 64 চালায়; 24 GB-তে আপনি ওয়াল ক্লকের জন্য ব্যাচ বিনিময় করেন।
ধাপ 0: ডেটা সেট রান নির্ধারণ করে, ফ্ল্যাগ নয়
যদি রেকর্ডিং খারাপ হয় তবে নীচের কিছুই গুরুত্বপূর্ণ নয়। LeRobot SmolVLA পৃষ্ঠাটি স্পষ্ট: রেফারেন্স ডেটা সেটটি 5টি কিউব পজিশনে 50টি পর্ব জুড়ে ছিল, প্রতি পজিশনে 10টি, এবং 25টি পর্বে একই কাজ খারাপভাবে সম্পাদিত হয়েছিল। প্রতি ভিন্নতার পুনরাবৃত্তি সাধারণীকরণ করে, কাঁচা পর্বের সংখ্যা নয়। কখনও একটি রেকর্ড করেননি? আপনার প্রথম ডেটা সেট রেকর্ড করুন দিয়ে শুরু করুন, সাথে ডেস্কটপ ক্লায়েন্ট, যা একটি টেলিঅপারেশন সেশন থেকে LeRobot ফরম্যাট লেখে, অথবা ডেটা সেট ডিরেক্টরি থেকে একটি ধার করুন।
- AY-Robots-এ কমপক্ষে 30টি পর্ব, LeRobot রেফারেন্স রেসিপির জন্য প্রায় 50টি।
- রোলআউটের সময় আপনি যে প্রতিটি বৈচিত্র্য আশা করেন, তা কয়েকবার পুনরাবৃত্তি করা হয়েছে।
- একটি টাস্ক স্ট্রিং, যা রেকর্ড এবং রোলআউটের সময় অভিন্নভাবে লেখা হয়। মডেলটি সেই টেক্সটের উপর শর্তযুক্ত।
- স্থির ক্যামেরা। রেকর্ডিং এবং রোলআউটের মধ্যে একটি ক্যামেরা সরানো হলে একটি পরিষ্কার লস কার্ভ একটি গতিহীন বাহু দেওয়ার সবচেয়ে সাধারণ কারণ।
- একটি ধরে রাখা বৈচিত্র্য যার উপর আপনি কখনও প্রশিক্ষণ দেননি, যাতে আপনার কাছে পরীক্ষা করার জন্য কিছু সৎ থাকে।
SmolVLA, Pi0.5 এবং ACT LeRobot v3.0 চায়। GR00T N1.7 এবং N1.5 v2.0 অথবা v2.1 চায় এবং তাদের লোডার v3.0-এ ক্র্যাশ করে। একবার রেকর্ড করুন, পরে মডেল তুলনা করার পরিকল্পনা করুন, এবং আপনাকে একভাবে বা অন্যভাবে রূপান্তর করতে হবে: dataset rejected v3।
# v2.1 -> v3.0: aggregates per-episode files into shards and writes the episode offsets
python -m lerobot.scripts.convert_dataset_v21_to_v30 --repo-id=${HF_USER}/so100_pick_placeএ বিষয়ে আরও জানতে দেখুন উচ্চ মানের VLA প্রশিক্ষণ ডেটা কীভাবে সংগ্রহ করবেন। সংক্ষিপ্ত সংস্করণ: একটি নির্দিষ্ট কাজের 30 থেকে 50টি পরিষ্কার পর্ব, ইচ্ছাকৃত বৈচিত্র্য সহ, তিনটি কাজের 200টি অগোছালো পর্বকে হারায়, এমন একটি ব্যবধানে যা কোনো হাইপারপ্যারামিটার পূরণ করতে পারে না।
lerobot 0.6.1 ইনস্টল করুন
# LeRobot needs Python 3.12 or newer as of 0.6.x
conda create -y -n lerobot python=3.12
conda activate lerobot
# TorchCodec decodes the dataset videos and wants ffmpeg
conda install ffmpeg -c conda-forge
# Base package is deliberately thin; extras pull the rest
pip install 'lerobot[smolvla,training,core_scripts]'
# Sanity check: prints the lerobot version, the GPU torch sees, and the console scripts you got
lerobot-infoবেস lerobot ইনস্টল পাতলা এবং অতিরিক্তগুলির পিছনে ভারী নির্ভরতা গেট করে: smolvla ট্রান্সফরমার, num2words এবং accelerate যোগ করে, training ডেটাসেট স্ট্যাক এবং wandb, core_scripts হার্ডওয়্যার এবং ভিজ্যুয়ালাইজেশন নির্ভরতা। লিনাক্সে ইনস্টল পাথ আপনার CUDA হুইলও নির্ধারণ করে: PyPI ডিফল্ট হল 580.65 এর ড্রাইভার ফ্লোর সহ একটি cu130 হুইল, তাই একটি পুরানো ড্রাইভারে প্রথমে cu128 ইনডেক্স থেকে টর্চ ইনস্টল করুন, তারপর lerobot।
--policy.path=lerobot/smolvla_base প্রাক-প্রশিক্ষিত 450 M চেকপয়েন্ট লোড করে এবং এটিকে ফাইন-টিউন করে। --policy.type=smolvla একটি নতুন SmolVLA তৈরি করে, এবং কনফিগের ডিফল্ট load_vlm_weights = False মানে আপনি না চাইলে এটি SmolVLM2 ব্যাকবোন ওজনও টানবে না। ভুল করলে রানটি আনন্দের সাথে প্রশিক্ষণ দেবে, একই খরচ হবে এবং স্থানান্তরযোগ্য কিছুই শিখবে না।
প্রশিক্ষণ রান, কমান্ড বাই কমান্ড
- 1হাবের বিরুদ্ধে প্রমাণীকরণ করুন
বেস চেকপয়েন্ট হাব থেকে আসে, এবং আপনার ডেটাসেটও সম্ভবত সেখান থেকেই আসে।
bashhf auth login - 2একবার অপশনগুলো পড়ুন
পাইপলাইন এবং পলিসি কনফিগের প্রতিটি ক্ষেত্র একটি ফ্ল্যাগ। সোর্স কোডে ঢোকার আগে এটি একবার দেখে নিন।
bashlerobot-train --help - 3ফাইন-টিউন শুরু করুন
ডক্সের উদাহরণ একটি একক A100-এ ব্যাচ 64 চালায়; কম্পিউট গাইডের নিজস্ব A100 40 GB অ্যাঙ্কর হল ব্যাচ 16, এবং 8 হল 24 GB-এর সমতুল্য। এখানে ইচ্ছাকৃতভাবে কোনো শিডিউলার ফ্ল্যাগ নেই, নিচে দেখুন।
bashlerobot-train \ --policy.path=lerobot/smolvla_base \ --dataset.repo_id=${HF_USER}/so100_pick_place \ --batch_size=8 \ --steps=20000 \ --save_freq=2000 \ --log_freq=200 \ --seed=1000 \ --output_dir=outputs/train/smolvla_pick_place \ --job_name=smolvla_pick_place \ --policy.device=cuda \ --wandb.enable=true - 4শুধু লস নয়, লগ লাইনটি পড়ুন
প্রতি --log_freq ধাপে lerobot লস, grdn, lr, updt_s, data_s, smp/s এবং CUDA-তে mem_gb প্রিন্ট করে। mem_gb বলে যে ব্যাচটি ফিট করে কিনা, lr বলে যে শিডিউলটি ক্ষয় হচ্ছে কিনা, এবং data_s যদি updt_s-এর কাছাকাছি আসে তবে এর অর্থ হল ডেটা লোডারটি বাধা, GPU নয়।
bash# if data_s creeps toward updt_s lerobot-train ... --num_workers=8 - 5তুলনা করার জন্য চেকপয়েন্ট সংগ্রহ করুন
save_freq ডিফল্টরূপে 20000, তাই 20000 ধাপের একটি রান একটি চেকপয়েন্ট রেখে যায় এবং এর সাথে তুলনা করার মতো আর কিছু থাকে না। 2000 সেট করুন। হাবে পুশ করার জন্য --policy.repo_id প্রয়োজন।
bash--save_freq=2000 \ --policy.repo_id=${HF_USER}/smolvla_pick_place \ --save_checkpoint_to_hub=true - 6মেশিন বন্ধ হয়ে গেলে পুনরায় শুরু করুন
চেকপয়েন্টের পাশে থাকা train_config.json-এর দিকে --config_path নির্দেশ করুন। lerobot একটি বিদ্যমান output_dir-এ শুরু করতে অস্বীকার করে যদি না আপনি পুনরায় শুরু করেন, তাই আপনি দুর্ঘটনাক্রমে একটি রান ওভাররাইট করতে পারবেন না।
bashlerobot-train \ --config_path=<path to the saved train_config.json> \ --resume=true
যে ফ্ল্যাগগুলি আসলে ফলাফল পরিবর্তন করে
| ফ্ল্যাগ | এটি কী করে | 24 GB-তে |
|---|---|---|
| --batch_size | প্রতি ধাপে স্যাম্পল, VRAM-এর সাথে প্রায় রৈখিক | 4 to 8 |
| --steps | মোট অপ্টিমাইজার ধাপ | 20000 প্রথম পাস |
| --policy.scheduler_decay_steps | কোসাইন ক্ষয় দৈর্ঘ্য, প্রিসেট 30000 | শুধুমাত্র 30000-এর উপরে কার্যকর |
| --policy.use_amp | মিশ্র নির্ভুলতা; SmolVLA-এর কোনো dtype ক্ষেত্র নেই | মেমরি কম হলে true |
| --num_workers | ডেটা লোডার প্রক্রিয়া, ডিফল্ট 4 | data_s বাড়া বন্ধ না হওয়া পর্যন্ত বাড়ান |
| --dataset.eval_split | প্রতিটি কাজের জন্য ধরে রাখা পর্বের ভগ্নাংশ | 0.1, with --eval_steps |
| --policy.freeze_vision_encoder | ভিশন টাওয়ারকে ফ্রিজ করে রাখে | 24 GB-তে true |
| --policy.train_expert_only | শুধুমাত্র ~100 M এক্সপার্ট গ্রেডিয়েন্ট পায় | প্রথমে true |
SmolVLA একটি কোসাইন সময়সূচী প্রিসেট করে: `scheduler_warmup_steps = 1000`, `scheduler_decay_steps = 30000`, `scheduler_decay_lr = 2.5e-6`। পুরোনো পরামর্শ অনুযায়ী, 20000 ধাপের একটি রান ক্ষয়ের মাঝামাঝি সময়ে থেমে যায়। 0.6.1 সংস্করণে এটি হয় না: `CosineDecayWithWarmupSchedulerConfig.build()` কে `--steps` দেওয়া হয়, এবং `num_decay_steps` এর নিচে এটি উভয়কেই পুনরায় স্কেল করে, ওয়ার্মআপ 1000 থেকে 666 এবং ক্ষয় 30000 থেকে 20000, এবং এটি করার সময় Auto-scaling LR scheduler প্রিন্ট করে। এটি কখনোই উপরের দিকে পুনরায় স্কেল করে না: ক্ষয় `min(current_step, decay_steps)` দিয়ে সীমাবদ্ধ করা হয়, তাই ডিফল্ট `--steps=100000` ধাপ 30000 থেকে শেষ পর্যন্ত, অর্থাৎ রানের 70 শতাংশ সময় ধরে সর্বনিম্ন স্তরে থাকে। শুধুমাত্র সেই দীর্ঘ দিকের জন্য এখনও `--policy.scheduler_decay_steps` প্রয়োজন। `lr` কলামে আপনি এটি পরীক্ষা করতে পারেন।
আপনি যদি কিছু না করেন তবে যে ডিফল্টগুলি আপনি উত্তরাধিকার সূত্রে পাবেন
lerobot-এ একটি কনফিগারেশন তার নিজস্ব অপ্টিমাইজার এবং শিডিউলার প্রিসেট বহন করে, এবং যদি না আপনি use_policy_training_preset=false সেট করেন, তবে সেই প্রিসেটগুলিই কার্যকর হয়। SmolVLA প্রশিক্ষণ সম্পর্কে লোকেরা যে প্রশ্নগুলি জিজ্ঞাসা করে তার অর্ধেকই এমন একটি ডিফল্ট দ্বারা উত্তর দেওয়া হয় যা তারা জানত না।
| সেটিং | lerobot 0.6.1-এ ডিফল্ট | সংজ্ঞায়িত |
|---|---|---|
| chunk_size / n_action_steps | 50 / 50 | SmolVLAConfig |
| num_steps (ফ্লো ম্যাচিং ডিনয়েজ) | 10 | SmolVLAConfig |
| optimizer_lr | 1e-4 | SmolVLAConfig |
| scheduler_warmup_steps | 1000 | SmolVLAConfig |
| scheduler_decay_steps | 30000 | SmolVLAConfig |
| scheduler_decay_lr | 2.5e-6 | SmolVLAConfig |
| freeze_vision_encoder | true | SmolVLAConfig |
| train_expert_only | true | SmolVLAConfig |
| batch_size / steps | 8 / 100000 | TrainPipelineConfig |
| seed / save_freq / num_workers | 1000 / 20000 / 4 | TrainPipelineConfig |
যে দুটি লাইন মানুষকে অবাক করে তা হল freeze_vision_encoder এবং train_expert_only, উভয়ই সত্য। ডিফল্টভাবে আপনি প্রায় 100 M প্যারামিটার প্রশিক্ষণ দেন, 450 M নয়, এই কারণেই এটি 24 GB-তে ফিট করে। একটি চার-GPU H100 ক্লাস্টারে LeRobot-এর নিজস্ব রেফারেন্স রান উভয়কে মিথ্যাতে পরিবর্তন করে; একটি 24 GB কার্ডে এটি একটি কার্যকরী রানকে .
যখন আপনি মেমরি-বাউন্ড হন তখন গাইডের পরামর্শ হল ব্যাচ সাইজ কমানো এবং কার্যকর ব্যাচ পুনরুদ্ধার করতে গ্রেডিয়েন্ট অ্যাকুমুলেশন ব্যবহার করা। lerobot 0.6.1-এ কোনো গ্রেডিয়েন্ট অ্যাকুমুলেশন নেই: TrainPipelineConfig-এর এমন কোনো ফিল্ড নেই এবং প্রকাশিত প্যাকেজে স্ট্রিংটি কোথাও দেখা যায় না। AY-Robots ফর্ম SmolVLA-এর জন্য 8-এর একটি গ্রেডিয়েন্ট অ্যাকুমুলেশন মান দেখায় এবং এটি প্রয়োগও করে না। 24 GB-তে আপনার লিভারগুলি হল --batch_size, দুটি ফ্রিজ ডিফল্ট, এবং --policy.use_amp।
রানটি কতক্ষণ সময় নেয় এবং কতগুলি ধাপ যথেষ্ট
LeRobot প্রায় 50 এপিসোডের একটি ডেটাসেটের উপর পাঁচটি ইপোকের জন্য ওয়াল-ক্লক অ্যাঙ্কর প্রকাশ করে, প্রায় 45000 ফ্রেম 30 fps-এ। ডকুমেন্টেশন অনুসারে এগুলি অর্ডার অফ ম্যাগনিটিউড ফিগার, তবে এগুলি এক ঘন্টা এবং একদিনের মধ্যে প্রত্যাশার পার্থক্য।
| সেটআপ | পলিসি | ব্যাচ | ওয়াল ক্লক |
|---|---|---|---|
| Single L4 / A10G (24 GB) | smolvla | 4 | about 3 to 6 h |
| Single A100 40 GB | smolvla | 16 | about 1 to 2 h |
| 4 x H100 80 GB with accelerate | smolvla | 32 | about 1 to 2 h |
| Single RTX 4090 / RTX 3090 (24 GB) | act | 8 | about 30 to 60 min |
নিয়মটি হলো ডেটাসেটের উপর 5 থেকে 10টি ইপক, কোনো নির্দিষ্ট ধাপের সংখ্যা নয়: steps_per_epoch = ceil(total_frames / (num_gpus x batch_size))। ডকুমেন্টেশনে উল্লেখিত রেফারেন্স ডেটাসেট, lerobot/svla_so100_pickplace-এ, মেটাডেটা 50টি এপিসোড এবং 19631টি ফ্রেম রিপোর্ট করে: ব্যাচ 8 প্রতি ইপকে প্রায় 2454টি ধাপ দেয়, তাই 20000টি ধাপ প্রায় 8টি ইপকের সমান। ব্যাচ অর্ধেক করলে একই বাজেট অর্ধেক ইপক দেবে, তাই যখনই আপনি --batch_size পরিবর্তন করবেন তখনই এটি পুনরায় করুন।
আর্মের উপর ফাইন-টিউনড পলিসি পুনরায় চালানো
lerobot-rollout \
--strategy.type=base \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower_arm \
--robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
--task="Grasp the cube and put it in the box." \
--policy.path=${HF_USER}/smolvla_pick_placeপ্রতি অ্যাকশন স্টেপে 245 ms ভুলভাবে পড়া সহজ: পলিসি chunk_size = 50 ফরোয়ার্ড পাসে অ্যাকশন নির্গত করে এবং এক্সিকিউট করে n_action_steps = 50 সেগুলির মধ্যে, তাই আপনি কত ঘন ঘন সেই খরচ দেন তা এই নবগুলি দ্বারা নির্ধারিত হয়, সার্ভো কত ঘন ঘন একটি কমান্ড পায় তার দ্বারা নয়। এটাই কেনে, এবং কেন একটি 245 ms মডেল একটি 30 Hz আর্ম চালাতে পারে। যা অবশিষ্ট থাকে তা হল চাংকের শেষে।
| পরিমাপ (SmolVLA, বাস্তব SO-100) | সিঙ্ক্রোনাস | অ্যাসিঙ্ক্রোনাস |
|---|---|---|
| সম্পূর্ণ হওয়ার সময়, পিক অ্যান্ড প্লেস, 10টি ট্রায়াল | 13.75 s | 9.70 s |
| একটি নির্দিষ্ট সময়সীমার মধ্যে পিক অ্যান্ড প্লেস চক্র | 9 | 19 |
| তিনটি কাজের উপর গড় সাফল্যের হার | 78.3 % | 73.3 % |
তৃতীয় সারিটি বেশিরভাগ লেখায় বাদ দেওয়া হয়। অ্যাসিঙ্ক ইনফারেন্স প্রায় 30 শতাংশ দ্রুত এবং একটি নির্দিষ্ট উইন্ডোতে থ্রুপুট প্রায় দ্বিগুণ করে, এবং গবেষণাপত্রটি সাফল্যের হারকে তুলনীয় বলে অভিহিত করে, যা গড়ে তারা তাই। এর নিচে, বাছাই 70 থেকে 50 শতাংশে নেমে আসে যখন পিক অ্যান্ড প্লেস 5 বৃদ্ধি পায়। lerobot 0.6.1 একই বাইনারিতে অন্য লিভারটি বহন করে: --inference.type=rtc রোলআউটকে রিয়েল টাইম চাংকিংয়ে স্যুইচ করে, যা স্ক্রিপ্টের নিজস্ব ব্যবহার ব্লক ধীর VLAs, Pi0, Pi0.5 এবং SmolVLA-এর জন্য সুপারিশ করে।
মডেলের উপর নির্ভর করে কন্ট্রোল লুপ প্রতি অ্যাকশন স্টেপে 20 থেকে 485 ms হয়, এবং এর উপরে পাবলিক-ইন্টারনেট রাউন্ড ট্রিপ একটি কার্যকরী পলিসিকে একটি দ্বিধাগ্রস্ত পলিসিতে পরিণত করে। ধীর পিক অ্যান্ড প্লেসের জন্য রিমোট ইনফারেন্স কার্যকর, দ্রুত প্রতিক্রিয়াশীল গতির জন্য নয়: যদি কাজের জন্য দ্রুত সংশোধনের প্রয়োজন হয়, তাহলে GPU-কে আর্মের মতো একই LAN-এ থাকতে হবে।
প্রশিক্ষণের জন্য অপ্রাসঙ্গিক, তবে এটি যেকোনো হাইপারপ্যারামিটারের চেয়ে বেশি SO-100 প্রকল্প শেষ করে। SO-100 এবং SO-101-এর Feetech STS3215 সার্ভোগুলি 7.4 V-এ চলে; 12 V সেগুলিকে নষ্ট করে দেয়। LeKiwi একটি 7.4 V আর্মকে একটি 12 V বেসের সাথে মিশ্রিত করে, এভাবেই ভুল ব্যারেল জ্যাক ভুল সকেটে চলে যায়।
একই চেকপয়েন্টে যাওয়ার দুটি পথ
আপনি মেশিন, পরিবেশ এবং ডিবাগিংয়ের মালিক। একমাত্র ক্লাউড নির্ভরতা হল বেস চেকপয়েন্টের হাব ডাউনলোড। যদি আপনি নীতি পরিবর্তন করতে চান, যদি ডেটা আপনার নেটওয়ার্ক ছেড়ে যেতে না পারে, অথবা যদি কার্ডটি নিষ্ক্রিয় থাকে তবে এটি সঠিক পথ।
- আপনি CUDA হুইল, ড্রাইভার, ffmpeg বিল্ড এবং ডেটা লোডার নিয়ন্ত্রণ করেন।
- আপনি configuration_smolvla.py প্যাচ করতে পারেন এবং একই বিকেলে পুনরায় প্রশিক্ষণ দিতে পারেন।
- আপনি বিদ্যুৎ এবং সময়ের জন্য অর্থ প্রদান করেন, প্রতি রানের জন্য নয়, এবং TorchCodec নিজেই ডিবাগ করেন।
pip install 'lerobot[smolvla,training,core_scripts]'
hf auth login
lerobot-train \
--policy.path=lerobot/smolvla_base \
--dataset.repo_id=${HF_USER}/so100_pick_place \
--batch_size=8 --steps=20000 \
--save_freq=2000 --seed=1000 \
--output_dir=outputs/train/smolvla_pick_place \
--job_name=smolvla_pick_place \
--policy.device=cuda --wandb.enable=trueএকটি ফর্মের পিছনে একই রান: আপনি মডেল এবং ডেটাসেট নির্বাচন করেন, ব্যাকএন্ড প্রয়োজনীয় VRAM অনুযায়ী একটি GPU ভাড়া করে, প্রশিক্ষক চালায় এবং চেকপয়েন্ট অবজেক্ট স্টোরেজে লেখে। ডেটাসেট একটি Hugging Face রেপো আইডি, পাবলিক ডিরেক্টরি, অথবা আপনার মেশিন থেকে আসতে পারে। শুরু করুন SO-100-এ SmolVLA, অথবা ম্যাট্রিক্স থেকে প্রশিক্ষণ পৃষ্ঠায়।
| ক্ষেত্র | SmolVLA-এর জন্য প্ল্যাটফর্মের পাঠানো ডিফল্ট | নোট |
|---|---|---|
| batch size | 2 | 24 GB টায়ারের জন্য রক্ষণশীল |
| learning rate | 1e-4 | lerobot প্রিসেট |
| max steps | 20000 | LeRobot ডক্স-এ রেফারেন্স রান |
| gradient accumulation | 8 | ফর্মে দেখানো হয়েছে, প্রয়োগ করা হয়নি |
| extra knobs | seed, logFreq | সিড রানটিকে পুনরাবৃত্তিযোগ্য করে তোলে |
- 24 GB টায়ারে 2 থেকে 5 ঘন্টা, প্রতি রানে প্রায় 1 থেকে 3 USD।
- /cli-এর একটি টার্মিনাল থেকে এবং /mcp-এর AI এজেন্ট থেকে একই অপারেশন।
- ইনফারেন্স পডগুলি একটি নিষ্ক্রিয় ওয়াচডগ বহন করে, তাই একটি ভুলে যাওয়া পড নীরবে বিল করার পরিবর্তে নিজেকে ধ্বংস করে।
- এখনও আর্ম নেই? /live একটি ফিজিক্যাল SO-100 স্ট্রিম করে যা আপনি সাইন আপ না করেই চালাতে পারেন।
কিউতে আটকে থাকা একটি কাজ স্পট মার্কেটের লক্ষণ, কোনো বাগ নয়: প্রশিক্ষণ কাজ কিউতে আটকে আছে। ধাপে ধাপে: আপনার প্রথম নীতি প্রশিক্ষণ দিন এবং প্রশিক্ষণ ডক্স।
যখন SmolVLA ভুল পছন্দ
SmolVLA সঠিক প্রথম রান ছিল কিনা তার পরীক্ষা এটি কাজ করেছে কিনা তা নয়, বরং ব্যর্থতা আপনাকে কিছু শিখিয়েছে কিনা। 60 বা 70 শতাংশে পৌঁছালে একটি বড় মডেল পরবর্তী যুক্তিসঙ্গত বিনিয়োগ: ডেটা সংকেত বহন করে। 10 শতাংশে পৌঁছালে একটি 3 B মডেলও সম্ভবত 10 শতাংশে পৌঁছাবে, যা আপনি বারো ডলারের পরিবর্তে তিন ডলারে শিখলেন।

আরও খরচ করার আগে পড়া উচিত: Pi0.5 বনাম SmolVLA একই ধারণার উপর আরও ক্ষমতার জন্য, এবং GR00T N1.7 বনাম SmolVLA NVIDIA রুটের জন্য, উভয়ই 80 GB টায়ার প্রতি রান 4 থেকে 12 USD। অন্যভাবে, ACT হল সস্তা বেসলাইন: 80 M parameters, প্রতি অ্যাকশন স্টেপে 20 ms, কোনো ভাষা কন্ডিশনিং নেই। এই পাঁচটি আছে পলিসি পৃষ্ঠায়; অ্যারেনায় 85টি মডেল এবং 332টি বেঞ্চমার্ক ফলাফল রয়েছে।

কিছু স্কেল করার আগে আপনার চেকলিস্ট
lrকি তার 2.5e-6 ফ্লোরে পৌঁছেছে? 30000 স্টেপের নিচে lerobot ক্ষয়কে পুনরায় স্কেল করে এবং স্টার্টআপে তা জানায়; এর উপরে,--policy.scheduler_decay_stepsনিজে সেট করুন।- একের বেশি চেকপয়েন্ট, এবং
--dataset.eval_splitদিয়ে এপিসোডগুলি আলাদা করে রাখা হয়েছে যাতে ইভাল লসের একটি অর্থ থাকে। - পলিসি কি আদৌ নড়াচড়া করে? একটি গতিহীন হাতের সাথে লস কমে যাওয়া কিছু নির্দিষ্ট কারণের জন্য হয়: লস কমে, পলিসি কিছু করে না।
- এটি কি দৃশ্যের পরিবর্তন সহ্য করে? যদি না করে: পলিসি শুধুমাত্র একটি সেটআপে কাজ করে।
- আপনি কি সিডটি লিখে রেখেছেন? lerobot ডিফল্টরূপে 1000 ব্যবহার করে, তাই দুটি অপরিবর্তিত রান তুলনীয় থাকে।
- শুধুমাত্র তখনই: আরও এপিসোড, আরও বৈচিত্র্য, অথবা একটি বড় মডেল। এই ক্রমেই।
এই মডেলগুলি কেন বিদ্যমান এবং ভাষার ইনপুট দিয়ে তারা কী করে, তার জন্য, হল পটভূমি; অ্যাসেম্বলি চালায় থেকে প্রথম রান পর্যন্ত। সমাপ্ত চেকপয়েন্টের জন্য, ; যদি হাতটি কখনও না আসে, ।
আপনার নিজের হাতে SmolVLA প্রশিক্ষণ দিন
মডেল এবং হাতটি বেছে নিন এবং নির্দেশিকা আপনাকে সঠিক ডিফল্ট, ডেটাসেট ফরম্যাট এবং রান খরচ কত তা দেবে। SmolVLA প্রতি রানে 1 থেকে 3 USD খরচে 24 GB টিয়ারে থাকে।
প্রশিক্ষণ নির্দেশিকা খুলুনআমি কি সত্যিই একটি RTX 4090-এ SmolVLA ফাইন-টিউন করতে পারি?▾
হ্যাঁ। LeRobot-এর কম্পিউট গাইড SmolVLA-কে AdamW সহ ব্যাচ 8-এ প্রায় 10 থেকে 16 GB পিক VRAM-এ রাখে এবং 24 GB কনজিউমার কার্ডগুলিকে এর জন্য আরামদায়ক বলে তালিকাভুক্ত করে। ডক্স উদাহরণে ব্যাচ 64 একটি একক A100-এর সাথে যুক্ত। মেমরি ব্যাচের সাথে প্রায় রৈখিকভাবে স্কেল করে, তাই 4 বা 8 ব্যবহার করুন এবং mem_gb দেখুন।
আমার আসলে কতগুলি পর্বের প্রয়োজন?▾
AY-Robots সর্বনিম্ন 30 সেট করে। LeRobot ডক্স প্রায় 50 সুপারিশ করে এবং রিপোর্ট করে যে একই কাজের 25টি পর্ব খারাপভাবে সম্পাদিত হয়েছে। কাঠামো সংখ্যাকে হারায়: রেফারেন্স সেটটি ছিল 5টি কিউব পজিশন যার প্রতিটি 10টি পর্ব ছিল, এবং সেই পুনরাবৃত্তিই সাধারণীকরণ করে।
ডক্স বলছে ব্যাচ 64, প্ল্যাটফর্ম পাঠাচ্ছে ব্যাচ 2। কোনটি সঠিক?▾
উভয়ই, বিভিন্ন হার্ডওয়্যারের জন্য। ডক্স উদাহরণটি ব্যাচ 64 ব্যবহার করে এবং একটি একক A100-এ 20000 ধাপের জন্য প্রায় 4 ঘন্টা সময় উল্লেখ করে; কম্পিউট গাইডের A100 40 GB অ্যাঙ্কর হল ব্যাচ 16। ব্যাচ 2 হল AY-Robots যা 24 GB টিয়ারে পাঠায়। স্থানীয়ভাবে 4 থেকে 8 হল মাঝামাঝি, এবং এর সাথে ইপোক অ্যারিথমেটিক পরিবর্তিত হয়।
SO-100-এ প্রথম রানের জন্য SmolVLA নাকি ACT?▾
যদি কাজটি একটি পুনরাবৃত্তিমূলক গতি হয় এবং আপনি দ্রুততম লুপ চান তবে ACT: প্রতি অ্যাকশন স্টেপে 20 ms, 80 M প্যারামিটার, কোনো ভাষা কন্ডিশনিং নেই। যদি আপনি ভাষা কন্ডিশনিং, একটি চেকপয়েন্টে একাধিক টাস্ক স্ট্রিং এবং একটি প্রিট্রেইনড বেস চান তবে SmolVLA। উভয়ই 24 GB টিয়ারে বসে, তাই পছন্দটি কাজ, বাজেট নয়।
আমাকে কি --policy.scheduler_decay_steps সেট করতে হবে?▾
শুধুমাত্র যখন --steps 30000 এর উপরে থাকে। SmolVLA 30000 ধাপে কোসাইন ক্ষয়কে প্রিসেট করে, এবং lerobot 0.6.1 একটি ছোট রানের জন্য এটিকে নিজে থেকেই কমিয়ে দেয়, যখন এটি করে তখন "Auto-scaling LR scheduler" লগ করে। এটি কখনও স্কেল আপ করে না, তাই স্টক --steps=100000 শেষ 70000 ধাপকে 2.5e-6 ফ্লোরে রাখে।
Sources
- SmolVLA: সাশ্রয়ী এবং দক্ষ রোবোটিক্সের জন্য একটি ভিশন-ল্যাঙ্গুয়েজ-অ্যাকশন মডেল
- SmolVLA: দক্ষ ভিশন-ল্যাঙ্গুয়েজ-অ্যাকশন মডেল (Hugging Face ব্লগ)
- lerobot/smolvla_base মডেল কার্ড
- LeRobot ডক্স: SmolVLA
- LeRobot ডক্স: LeRobot প্রশিক্ষণের জন্য কম্পিউট HW গাইড
- LeRobot ডক্স: ইনস্টলেশন
- LeRobot ডক্স: LeRobotDataset v3.0 এবং v2.1 কনভার্টার
- LeRobot ডক্স: অ্যাসিঙ্ক্রোনাস ইনফারেন্স
- lerobot v0.6.1: configuration_smolvla.py
- lerobot v0.6.1: TrainPipelineConfig
- lerobot v0.6.1: CosineDecayWithWarmupSchedulerConfig
- lerobot v0.6.1: lerobot_rollout.py (কৌশল এবং RTC ইনফারেন্স)
- lerobot v0.6.1: pyproject.toml (এক্সট্রা এবং কনসোল এন্ট্রি পয়েন্ট)
- PyPI-এ lerobot
- lerobot/svla_so100_pickplace ডেটাসেট (50টি পর্ব, 19631টি ফ্রেম, v3.0)
Sources
- SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics
- SmolVLA: Efficient Vision-Language-Action Model (Hugging Face blog)
- lerobot/smolvla_base model card
- LeRobot docs: SmolVLA
- LeRobot docs: Compute HW Guide for LeRobot Training
- LeRobot docs: Installation
- LeRobot docs: LeRobotDataset v3.0 and the v2.1 converter
- LeRobot docs: Asynchronous Inference
- lerobot v0.6.1: configuration_smolvla.py
- lerobot v0.6.1: TrainPipelineConfig
- lerobot v0.6.1: CosineDecayWithWarmupSchedulerConfig
- lerobot v0.6.1: lerobot_rollout.py (strategies and RTC inference)
- lerobot v0.6.1: pyproject.toml (extras and console entry points)
- lerobot on PyPI
- lerobot/svla_so100_pickplace dataset (50 episodes, 19631 frames, v3.0)
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started