
SmolVLA በአንድ 24 ጂቢ ካርድ ላይ የሚስተካከል 450 M ፓራሜትር ያለው VLA ነው። ትክክለኛ የlerobot 0.6.1 ትዕዛዞች፣ ትክክለኛዎቹ ነባሪዎች፣ አንድ ቀን የሚያስወጡ ወጥመዶች፣ እና አንድ ሩጫ ምን ያህል እንደሚያስወጣ።
SmolVLA በአንድ ስክሪን
- •450 M ፓራሜትሮች፣ ከነሱ ውስጥ ወደ 100 M የሚሆኑት የፍሎው ማችንግ አክሽን ኤክስፐርት ናቸው። ሌሮቦት የሚያሰለጥነው ያንን ኤክስፐርት ብቻ ሲሆን VLMን ደግሞ እንዳለ ያቆየዋል፣ ለዚህም ነው በአንድ ካርድ ላይ የሚገጥመው።
- •የLeRobot የኮምፒዩት መመሪያ የsmolvla ቡድንን በ AdamW እና በባች 8 ላይ በግምት ከ10 እስከ 16 ጊባ ከፍተኛ VRAM እንደሚያስፈልገው ያሳያል። ስለዚህ 24 ጊባ።
- •የመግቢያ ነጥቡ lerobot-train ነው። የሰኔ 2025 SmolVLA ብሎግ ፖስት አሁንም python lerobot/scripts/train.py የሚለውን ያትማል፣ ይህም መንገድ አሁን የለም። ከዚህ በታች ያለው ሁሉ lerobot 0.6.1 ነው።
- •የኮሳይን ስኬጁል በ30000 ደረጃዎች ላይ እንዲቀንስ አስቀድሞ ተዘጋጅቷል። lerobot 0.6.1 ለአጭር ሩጫ ያንን ወደ ታች ያሳንሰዋል እና ይመዘግበዋል፣ ነገር ግን በጭራሽ ወደ ላይ አያሳድገውም፡ የ100000 ደረጃ ሩጫ ለ70000 ደረጃዎች በ2.5e-6 ወለል ላይ ያበቃል።
- •ሰላሳ ኢፒሶዶች የAY-Robots ዝቅተኛው ሲሆን፣ በ24 ጊባ ደረጃ ላይ ያለ ሩጫ ከ1 እስከ 3 ዶላር ያስከፍላል፣ ከ80 ጊባ ሞዴሎች ከ4 እስከ 12 ዶላር ጋር ሲነጻጸር።
አብዛኛዎቹ ሰዎች የእይታ ቋንቋ ተግባር ሞዴል በእውነተኛ ክንድ ላይ የሚፈልጉት በሃርድዌር ገደብ ይቆማሉ። GR00T N1.7 እና Pi0.5 እያንዳንዳቸው ወደ ሶስት ቢሊዮን ፓራሜትሮች የሚጠጉ ሲሆኑ A100 80 ጊባ ወይም H100 ይፈልጋሉ። የእርስዎ ንብረት RTX 4090 ያለው የጨዋታ ፒሲ ከሆነ፣ ያ የመንገዱ መጨረሻ ነው። SmolVLA ልዩ ነው፡ 450 M ፓራሜትሮች ያሉት፣ በLeRobot ውስጥ፣ በአንድ የሸማች ካርድ ላይ ለማስተካከል እና ከሲፒዩ ለማገልገል የተሰራ።
በመጀመሪያ በእጅ የሚሰራው መንገድ፡ ሌሮቦትን ይጫኑ፣ lerobot/smolvla_base ቼክፖይንቱን ይጎትቱ፣ ትክክለኛውን ትዕዛዝ ያሂዱ፣ በሚሰራበት ጊዜ ሩጫውን ያንብቡ። ከዚያም የፕላትፎርም መንገዱ፣ እና በማይረዳበት ቦታ።
SmolVLA ምንድን ነው፣ በሚያረጋግጧቸው ቁጥሮች
SmolVLA የፍሎው ማችንግ ፖሊሲ ሲሆን ከትንሽ ቪዥን ላንጉዌጅ ሞዴል ጋር የተያያዘ ነው። የጀርባ አጥንቱ SmolVLM2-500M-Video-Instruct ነው። ጥናቱ የቋንቋ ሞዴሉን የመጀመሪያዎቹን 16 ንብርብሮች ብቻ የሚጠቀም ሲሆን፣ እያንዳንዱን የካሜራ ፍሬም በ64 ቪዥዋል ቶከኖች በፒክሰል ሹፍል እንጂ በምስል ታይሊንግ አይገድበውም፣ እንዲሁም በየሁለተኛው ብሎክ ላይ ክሮስ አቴንሽንን ከሴልፍ አቴንሽን ንብርብር ጋር ያቀላቅላል። የኢንፈረንስ ወጪ የንድፍ ገደብ እንጂ በኋላ የታሰበ ነገር አልነበረም።
| ባሕርይ | ዋጋ | ምንጭ |
|---|---|---|
| ጠቅላላ ፓራሜትሮች | about 450 M | paper |
| የድርጊት ኤክስፐርት | about 100 M, flow matching | paper |
| VLM የጀርባ አጥንት | HuggingFaceTB/SmolVLM2-500M-Video-Instruct | vlm_model_name |
| ጥቅም ላይ የዋሉ የVLM ንብርብሮች | first 16 of the language model | num_vlm_layers = 16 |
| በፍሬም የእይታ ቶከኖች | 64, pixel shuffle, no tiling | paper |
| ቅድመ-ስልጠና | 481 community datasets, 22.9 K episodes, 10.6 M frames; 200000 steps at global batch 256 on 4 GPUs | paper |
የ450 M ሞዴልን ሰዎች የሚጠቀሙበት ምክንያት በቤንችማርኮቹ የተነሳ ነው። በLIBERO ላይ በአማካይ 87.3 በመቶ ሲሆን፣ OpenVLA በ7 B 76.5 እና ሮቦቲክስ-ቅድመ-ስልጠና የተደረገለት Pi0 በ3.3 B ደግሞ 86.0 ነው። በMeta-World ላይ ደግሞ 57.3 ከ47.9 ጋር። በእውነተኛ SO-100 ሃርድዌር ላይ፣ ባለብዙ ተግባር ስልጠና በፒክ ኤንድ ፕሌስ 75 በመቶ፣ በስታኪንግ 90፣ በሶርቲንግ 70 በመቶ ይሰጣል፣ በአማካይ 78.3 ሲሆን፣ ACT ለእያንዳንዱ ተግባር የሰለጠነው በአማካይ 48.3 ነበር። ተመሳሳይ ረድፎች በSmolVLA አሬና ግቤት እና በACT ከSmolVLA ጋር ንጽጽር ውስጥ ከእያንዳንዱ የታተመ VLA ጎን ይገኛሉ።
SmolVLA በሁሉም ነገር ከ3 B ሞዴል የተሻለ አይደለም። የጥናቱ የራሱ SO-101 ሰንጠረዥ የሚያሳየው፡ በስርጭት ውስጥ 90 በመቶ ስኬት፣ ከስርጭት ውጪ ደግሞ 50 በመቶ ነው፣ ይህም በጭራሽ ቅድመ-ስልጠና ባልተደረገበት መድረክ ላይ ነው። የሚናገረው እና የሚደግፈው ግን ከPi0 ጋር ሲነጻጸር በ6 እጥፍ ያነሰ ማህደረ ትውስታ ላይ በ40 በመቶ ገደማ በፍጥነት እንደሚሰለጥን ነው።
ለምን 24 ጊባ ካርድ ትክክለኛው የመጀመሪያ ሩጫ ነው
LeRobot የኮምፒዩት መጠን መመሪያን ያቀርባል፣ ለዚህም በሪፖው ውስጥ በጣም ጠቃሚው ገጽ ነው። ፖሊሲዎችን በአከርካሪ አጥንት መጠን ይመድባል እና ለእያንዳንዱ ቡድን አንድ የVRAM መጠን ይሰጣል፣ ይህም በባች መጠን 8 በ AdamW፣ የlerobot ነባሪ፣ ይለካል። የኦፕቲማይዘር ሁኔታ ብቻ ከባዶ ወደፊት እና ወደኋላ ማለፍ ከ30 እስከ 100 በመቶ ይጨምራል፣ ስለዚህ እነዚህ የክብደት-ብቻ አሃዞች አይደሉም።
| ቡድን | ፖሊሲዎች | ከፍተኛው VRAM (ባች 8፣ AdamW) | የመጀመሪያ GPUs |
|---|---|---|---|
| ቀላል BC | act, vqbet, tdmpc | ከ2 እስከ 6 ጊባ ገደማ | RTX 3060, L4 |
| ስርጭት | diffusion, multi_task_dit | ከ8 እስከ 14 ጊባ ገደማ | RTX 4070+, L4 |
| ትንሽ VLA | smolvla | ከ10 እስከ 16 ጊባ ገደማ | RTX 4080+, L4, A10G |
| ትልቅ VLA | pi0, pi0_fast, pi05, xvla, wall_x | ከ24 እስከ 40 ጊባ ገደማ | A100 40 GB+ |
| ባለብዙ ሞዳል | groot, eo1 | ከ24 እስከ 40 ጊባ ገደማ | A100 40 GB+ |
በባች 8 አስር እስከ አስራ ስድስት ጊጋባይት የሚለው ክርክር ነው፡ 24 ጊባ ካርድ ያንን እና የዳታ ሎደርን ይይዛል። AY-Robots SmolVLAን በ RTX 4090 ወይም በማንኛውም 24 ጊባ ካርድ ላይ ያስቀምጣል፣ ዝቅተኛው 30 ክፍሎች፣ LeRobot v3.0 ዳታ፣ በአንድ የድርጊት ደረጃ 245 ms። ተከራይቶ፣ ያ በሰዓት ከ0.30 እስከ 0.60 ዶላር በ2 እስከ 5 ሰዓታት ውስጥ ነው፣ በአንድ ጥሩ ማስተካከያ ሩጫ፣ ከ80 ጊባ ደረጃ GR00T እና Pi0.5 ከሚያስፈልጋቸው ከ4 እስከ 12 ዶላር ጋር ሲነጻጸር (ዋጋ)። ያልተሳካ የSmolVLA ሩጫ ቡና ነው፤ ያልተሳካ የGR00T ሩጫ ምሳ ነው።

- አስቀድመው ሊኖርዎት ከሚችል ሃርድዌር ጋር ይጣጣማል፡ በግምት ከ10 እስከ 16 ጂቢ በባች 8።
- የጠፋ ሩጫ ሰዓታትን እና ነጠላ አሃዝ ዶላሮችን ያስከፍላል፣ ስለዚህ ስለ ዳታሴቱ ስህተት ቢሰሩም አቅሙ አለዎት።
- በlerobot ታግ ስር በተጋሩ የማህበረሰብ ዳታሴቶች ላይ የሰለጠነ፣ ከትክክለኛ SO-100 እና SO-101 ውጤቶች ጋር።
- በራሱ lerobot ውስጥ ይኖራል፡ ምንም የሻጭ ሪፖ የለም፣ እና smolvla_base አልተገደበም።
- 450 M አሁንም 450 M ነው፡ ከስርጭት ውጪ ያለው ስኬት በወረቀቱ SO-101 ሰንጠረዥ ውስጥ ከ90 ወደ 50 በመቶ ይወርዳል።
- LeRobot v3.0 ዳታ ይፈልጋል፤ የv2.1 ቀረጻ መለወጥ አለበት (dataset rejected v3)።
- በእያንዳንዱ የድርጊት ደረጃ 245 ms ብቃት ያለው የመምረጥ እና የማስቀመጥ መቆጣጠሪያ ነው እንጂ ምላሽ ሰጪ አይደለም።
- የሰነዶቹ ምሳሌ ባች 64ን በA100 ላይ ያካሂዳል፤ በ24 ጂቢ ላይ ባችውን ለትክክለኛው ጊዜ ይለውጣል።
ደረጃ 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 ላይ ይበላሻል። አንድ ጊዜ ይመዝግቡ፣ በኋላ ሞዴሎችን ለማነፃፀር ያቅዱ፣ እና በአንድም ሆነ በሌላ መንገድ ይቀይራሉ፡ የውሂብ ስብስብ 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 ጭነት ቀጭን ሲሆን ከባድ ጥገኞችን ከኋላ ተጨማሪዎች ይደብቃል (gates): 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 ይገነባል፣ እና የconfig ነባሪው load_vlm_weights = False ማለት እርስዎ ካልጠየቁ በስተቀር የSmolVLM2 ባክቦን ክብደቶችን እንኳን አይጎትትም ማለት ነው። ስህተት ከሰሩ፣ ሩጫው በደስታ ይሰለጥናል፣ ተመሳሳይ ወጪ ያስወጣል፣ እና ምንም ሊተላለፍ የሚችል ነገር አይማርም።
የስልጠናው ሂደት፣ ትዕዛዝ በትዕዛዝ
- 1ከHub ጋር ማረጋገጥ
መሰረታዊው ቼክፖይንት ከHub የሚመጣ ሲሆን፣ የእርስዎ የውሂብ ስብስብም ምናልባት ከዚያው ነው።
bashhf auth login - 2አማራጮቹን አንድ ጊዜ ያንብቡ
የፓይፕላይኑ እና የፖሊሲው ውቅር እያንዳንዱ መስክ ባንዲራ ነው። ምንጩን ከመመርመርዎ በፊት በአጭሩ ይመልከቱት።
bashlerobot-train --help - 3ጥሩ ማስተካከያውን ይጀምሩ
የሰነዶቹ ምሳሌ በአንድ A100 ላይ ባች 64ን ያካሂዳል፤ የኮምፒዩት መመሪያው የራሱ A100 40 ጂቢ መልህቅ ባች 16 ሲሆን፣ 8 ደግሞ የ24 ጂቢ ተመጣጣኝ ነው። እዚህ ምንም የጊዜ ሰሌዳ ባንዲራ ሆን ተብሎ የለም፣ ከታች ይመልከቱ።
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 ኪሳራን (loss)፣ ግራዲየንትን (grdn)፣ የመማሪያ ፍጥነትን (lr)፣ የዝማኔ ፍጥነትን (updt_s)፣ የውሂብ ፍጥነትን (data_s)፣ ናሙናዎችን በሰከንድ (smp/s) እና በCUDA ላይ ደግሞ ሜም_ጂቢን (mem_gb) ያትማል። mem_gb ባቹ የሚመጥን መሆኑን፣ lr የጊዜ ሰሌዳው እየቀነሰ መሆኑን፣ እና data_s ወደ updt_s መቃረብ ደግሞ የውሂብ ጫኚው (dataloader) የአንገት ማነቂያ እንጂ ጂፒዩ አለመሆኑን ያሳያል።
bash# if data_s creeps toward updt_s lerobot-train ... --num_workers=8 - 5ሊያወዳድሯቸው የሚችሉ ቼክፖይንቶችን ይሰብስቡ
save_freq በነባሪ 20000 ነው፣ ስለዚህ የ20000 እርምጃዎች ሂደት አንድ ቼክፖይንት ብቻ ይተዋል እና ከሱ ጋር የሚያወዳድር ምንም ነገር አይኖርም። 2000 ያድርጉት። ወደ Hub ለመግፋት --policy.repo_id ያስፈልጋል።
bash--save_freq=2000 \ --policy.repo_id=${HF_USER}/smolvla_pick_place \ --save_checkpoint_to_hub=true - 6ማሽኑ ከሞተ ይቀጥሉ
--config_pathን ከቼክፖይንቱ አጠገብ ወዳለው train_config.json ያመልክቱ። lerobot እርስዎ ካልቀጠሉ በስተቀር ወደ ነባር output_dir ለመጀመር እምቢ ይላል፣ ስለዚህ በድንገት አንድን ሂደት መፃፍ አይችሉም።
bashlerobot-train \ --config_path=<path to the saved train_config.json> \ --resume=true
ውጤቱን በትክክል የሚቀይሩት ባንዲራዎች
| ባንዲራ | ምን እንደሚሰራ | በ24 ጂቢ ላይ |
|---|---|---|
| --batch_size | በየእርምጃው ያሉ ናሙናዎች፣ በVRAM ውስጥ በግምት መስመራዊ | 4 to 8 |
| --steps | ጠቅላላ የማመቻቸት እርምጃዎች | 20000 first pass |
| --policy.scheduler_decay_steps | የኮሳይን መበስበስ ርዝመት፣ አስቀድሞ የተዘጋጀ 30000 | ከ30000 በላይ ብቻ ነው የሚሰራው |
| --policy.use_amp | የተቀላቀለ ትክክለኛነት፤ SmolVLA የdtype መስክ የለውም | ማህደረ ትውስታ ሲጠብ እውነት |
| --num_workers | የውሂብ ጫኚ ሂደቶች፣ ነባሪ 4 | data_s መውጣት እስኪያቆም ድረስ ይጨምሩ |
| --dataset.eval_split | በየተግባሩ የተያዙ የክፍሎች ክፍልፋይ | 0.1, with --eval_steps |
| --policy.freeze_vision_encoder | የእይታ ማማውን የቀዘቀዘ ያደርገዋል | true on 24 GB |
| --policy.train_expert_only | ~100 M ባለሙያው ብቻ ግራዲየንቶችን ያገኛል | መጀመሪያ እውነት |
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 |
| የእይታ ኢንኮደርን ማቀዝቀዝ | true | SmolVLAConfig |
| ባለሙያውን ብቻ ማሰልጠን | true | SmolVLAConfig |
| የቡድን መጠን / እርምጃዎች | 8 / 100000 | TrainPipelineConfig |
| ዘር / የማስቀመጫ ድግግሞሽ / የሰራተኞች ብዛት | 1000 / 20000 / 4 | TrainPipelineConfig |
ሰዎችን የሚያስደንቁት ሁለቱ መስመሮች freeze_vision_encoder እና train_expert_only ሲሆኑ ሁለቱም እውነት ናቸው። ከመጀመሪያው ጀምሮ በግምት 100 M ፓራሜትሮችን ነው የሚያሰለጥኑት እንጂ 450 M አይደለም፣ ለዚህም ነው በ24 GB ላይ የሚገጥመው። የLeRobot የራሱ የማጣቀሻ ሩጫ በአራት-GPU H100 ክላስተር ላይ ሁለቱንም ወደ false ይቀይራቸዋል፤ በአንድ 24 GB ካርድ ላይ ደግሞ የሚሰራ ሩጫን ወደ የማስታወሻ እጥረት ብልሽት ይለውጠዋል።
ማህደረ ትውስታ ሲያጥርብዎ መመሪያው የሚሰጠው ምክር የባች መጠኑን መቀነስ እና ውጤታማውን ባች ለመመለስ gradient accumulationን መጠቀም ነው። በlerobot 0.6.1 ውስጥ gradient accumulation የለም፡ TrainPipelineConfig እንደዚህ አይነት መስክ የለውም እና ይህ ቃል በተለቀቀው ፓኬጅ ውስጥ የትም አይገኝም። የAY-Robots ቅጽ ለSmolVLA የ8 gradient accumulation ዋጋ ያሳያል ነገር ግን አይተገብረውም። በ24 GB ላይ ያሉዎት መቆጣጠሪያዎች --batch_size፣ ሁለቱ የፍሪዝ ነባሪዎች እና --policy.use_amp ናቸው።
ሩጫው ምን ያህል ጊዜ እንደሚወስድ እና ስንት እርምጃዎች በቂ እንደሆኑ
LeRobot ለአምስት ኢፖኮች በግምት 50 የትዕይንት ዳታሴት ላይ፣ በ30 fps ወደ 45000 ፍሬሞች የሚሆን የሰዓት መልህቆችን ያትማል። የሰነዶቹ አባባል እንደሚያሳየው እነዚህ ግምታዊ አሃዞች ናቸው፣ ነገር ግን በአንድ ሰዓት እና በአንድ ቀን መካከል ያለውን ልዩነት ይፈጥራሉ።
| ማዋቀር | ፖሊሲ | ባች | የግድግዳ ሰዓት |
|---|---|---|---|
| ነጠላ L4 / A10G (24 ጊባ) | smolvla | 4 | ከ3 እስከ 6 ሰዓት ያህል |
| ነጠላ A100 40 ጊባ | smolvla | 16 | ከ1 እስከ 2 ሰዓት ያህል |
| 4 x H100 80 ጊባ ከ accelerate ጋር | smolvla | 32 | ከ1 እስከ 2 ሰዓት ያህል |
| ነጠላ RTX 4090 / RTX 3090 (24 ጊባ) | act | 8 | ከ30 እስከ 60 ደቂቃ ያህል |
ደንቡ በመረጃ ስብስቡ ላይ ከ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 ሚሊሰከንድ በቀላሉ ሊሳሳት ይችላል: ፖሊሲው chunk_size = 50 ድርጊቶችን በአንድ የፊት ማለፊያ ያወጣል እና n_action_steps = 50 ያከናውናል፣ ስለዚህ ያንን ወጪ ምን ያህል ጊዜ እንደሚከፍሉ የሚወሰነው በእነዚያ መቆጣጠሪያዎች እንጂ ሰርቮዎች ትዕዛዝ በሚያገኙበት ድግግሞሽ አይደለም። ይህም የድርጊት ክፍፍል የሚያስገኘው ጥቅም ነው፣ እና 245 ሚሊሰከንድ ሞዴል 30 ኸርዝ ክንድ እንዲያንቀሳቅስ የሚያስችለው ለዚህ ነው። የሚቀረው ደግሞ የግምት መዘግየት በክፍሉ መጨረሻ ላይ ነው።
| መለኪያ (SmolVLA, እውነተኛ SO-100) | ተመሳሳይ ጊዜ | የተለያየ ጊዜ |
|---|---|---|
| የማጠናቀቂያ ጊዜ፣ ማንሳት እና ማስቀመጥ፣ 10 ሙከራዎች | 13.75 s | 9.70 s |
| በተወሰነ የጊዜ መስኮት ውስጥ የማንሳት እና የማስቀመጥ ዑደቶች | 9 | 19 |
| በሶስቱ ተግባራት ላይ አማካይ የስኬት መጠን | 78.3 % | 73.3 % |
ያ ሶስተኛው ረድፍ አብዛኛዎቹ ጽሑፎች የሚዘሉት ነው። የተለያየ ጊዜ ግምት (Async inference) በግምት 30 በመቶ ፈጣን ሲሆን በተወሰነ የጊዜ መስኮት ውስጥ ምርታማነትን በእጥፍ ይጨምራል፣ እና ወረቀቱ የስኬት መጠኖችን ተመጣጣኝ ይላቸዋል፣ በአማካይ ደግሞ እንደዚያው ናቸው። ከዚህ በታች፣ መደርደር ከ70 ወደ 50 በመቶ ሲቀንስ ማንሳት እና ማስቀመጥ 5 ጨምሯል። lerobot 0.6.1 ሌላኛውን መቆጣጠሪያ በተመሳሳይ ሁለትዮሽ ይዟል: --inference.type=rtc የጥቅልል ሂደቱን ወደ እውነተኛ ጊዜ ክፍፍል ይቀይራል፣ ይህም የስክሪፕቱ የራሱ የአጠቃቀም ክፍል ለቀርፋፋ VLAs፣ Pi0፣ Pi0.5 እና SmolVLA ይመክራል።
የመቆጣጠሪያው ዑደት እንደ ሞዴሉ ከ20 እስከ 485 ሚሊሰከንድ በእያንዳንዱ የድርጊት ደረጃ ነው፣ እና ከላይ የሚጨመሩ የህዝብ-ኢንተርኔት የዙር ጉዞዎች የሚሰራ ፖሊሲን ወደ አመንታነት ይለውጡታል። የርቀት ግምት ለቀርፋፋ ማንሳት እና ማስቀመጥ ተስማሚ ነው እንጂ ለፈጣን ምላሽ ሰጪ እንቅስቃሴ አይደለም: ተግባሩ ፈጣን እርማቶችን የሚፈልግ ከሆነ፣ ጂፒዩው ከክንዱ ጋር በተመሳሳይ LAN ላይ መሆን አለበት።
ወደ አንድ የፍተሻ ነጥብ የሚወስዱ ሁለት መንገዶች
ማሽኑ፣ አካባቢው እና ማረም የእርስዎ ናቸው። ብቸኛው የክላውድ ጥገኝነት የመሠረት ፍተሻ ነጥብ የHub ማውረድ ነው። ፖሊሲውን ማሻሻል ከፈለጉ፣ ዳታዎ ከኔትወርክዎ መውጣት ካልቻለ፣ ወይም ካርዱ ስራ ፈት ከሆነ ትክክለኛው መንገድ ነው።
- የ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 መሰረት ጂፒዩ ይከራያል፣ አሰልጣኙን ያካሂዳል እና ወደ ኦብጀክት ማከማቻ ይጽፋል። ዳታሴቱ ከHugging Face repo id፣ ከህዝባዊው ፣ ወይም ከማሽንዎ ሊመጣ ይችላል። በ ፣ ወይም በ ።
| Field | Default the platform sends for SmolVLA | Note |
|---|---|---|
| ባች መጠን | 2 | ለ24 ጂቢ ደረጃ ጥንቃቄ የተሞላበት |
| የመማሪያ ፍጥነት | 1e-4 | የlerobot ቅድመ ዝግጅት |
| ከፍተኛ እርምጃዎች | 20000 | በLeRobot ሰነዶች ውስጥ ያለው የማጣቀሻ ሩጫ |
| ግራዲየንት ክምችት | 8 | በቅጹ ላይ የሚታይ፣ ያልተተገበረ |
| ተጨማሪ መቆጣጠሪያዎች | seed, logFreq | Seed ሩጫውን ሊደገም የሚችል ያደርገዋል |
- በ24 ጂቢ ደረጃ ከ2 እስከ 5 ሰዓታት፣ በአንድ ሩጫ ከ1 እስከ 3 ዶላር አካባቢ።
- ተመሳሳይ ስራዎች ከ/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 ዶላር በአንድ ሩጫ። በሌላ በኩል፣ ACT ርካሽ መነሻ ነው፡ 80 M ፓራሜትሮች፣ 20 ms በአንድ የድርጊት እርምጃ፣ የቋንቋ ሁኔታ የለም። አምስቱም የሚገኙት በየፖሊሲዎች ገጽ፤ አሬናው 85 ሞዴሎች እና 332 የቤንችማርክ ውጤቶች አሉት።

ማንኛውንም ነገር ከማስፋትዎ በፊት የሚያስፈልጉ ነገሮች ዝርዝር
- `lr` 2.5e-6 ወለሉ ላይ ደርሷል? ከ30000 እርምጃዎች በታች lerobot መበስበሱን እንደገና ያስተካክላል እና ሲጀመር ይገልጻል፤ ከዚያ በላይ ከሆነ፣ `--policy.scheduler_decay_steps`ን እራስዎ ያዘጋጁ።
- ከአንድ በላይ የፍተሻ ነጥብ (checkpoint)፣ እና `--dataset.eval_split`ን በመጠቀም የተለዩ ክፍሎች (episodes)፣ ስለዚህ የeval loss ትርጉም ይኖረዋል።
- ፖሊሲው ምንም እንቅስቃሴ ያደርጋል? የማይንቀሳቀስ ክንድ ያለው እየቀነሰ የሚሄድ loss የተወሰኑ ምክንያቶች አሉት: loss ይቀንሳል፣ ፖሊሲው ምንም አያደርግም።
- የቦታ ለውጥን ይቋቋማል? ካልሆነ: ፖሊሲው በአንድ አቀማመጥ ላይ ብቻ ይሰራል።
- ዘሩን (seed) ጽፈውታል? lerobot በነባሪ 1000 ይጠቀማል፣ ስለዚህ ሁለት ያልተነኩ ሙከራዎች (runs) ተመጣጣኝ ሆነው ይቆያሉ።
- ከዚያ በኋላ ብቻ: ተጨማሪ ክፍሎች (episodes)፣ ተጨማሪ ልዩነቶች (variation)፣ ወይም ትልቅ ሞዴል (model)። በዚያ ቅደም ተከተል።
እነዚህ ሞዴሎች ለምን እንደተፈጠሩ እና ከቋንቋ ግብዓት ጋር ምን እንደሚያደርጉ ለማወቅ፣ ዳራው ነው፤ ስብሰባን የሚያከናውነው በ በኩል እስከ መጀመሪያው ሙከራ (run) ድረስ ነው። ለተጠናቀቀው የፍተሻ ነጥብ (checkpoint)፣ ፤ ክንዱ በጭራሽ ካልታየ፣ ።
SmolVLAን በራስዎ ክንድ ላይ ያሰልጥኑ
ሞዴሉን እና ክንዱን ይምረጡ እና መመሪያው ትክክለኛዎቹን ነባሪዎች፣ የውሂብ ስብስብ ቅርጸት እና የሙከራውን (run) ወጪ ይነግርዎታል። SmolVLA በ24 ጊባ ደረጃ ላይ የሚገኝ ሲሆን በአንድ ሙከራ (run) ከ1 እስከ 3 የአሜሪካ ዶላር ያስከፍላል።
የስልጠና መመሪያዎችን ይክፈቱSmolVLAን በRTX 4090 ላይ በትክክል ማስተካከል እችላለሁ?▾
አዎ። የLeRobot የኮምፒዩት መመሪያ SmolVLAን በbatch 8 ከAdamW ጋር በግምት ከ10 እስከ 16 ጊባ ከፍተኛ የVRAM እንደሚጠቀም ያስቀምጣል እና 24 ጊባ የሸማች ካርዶችን ለእሱ ምቹ እንደሆኑ ይዘረዝራል። በሰነዶቹ ምሳሌ ውስጥ ያለው batch 64 ከአንድ A100 ጋር ተጣምሯል። ማህደረ ትውስታ ከbatch ጋር በግምት መስመራዊ በሆነ መልኩ ስለሚመጣጠን 4 ወይም 8 ይጠቀሙ እና mem_gbን ይመልከቱ።
በእርግጥ ስንት ክፍሎች ያስፈልጉኛል?▾
AY-Robots ዝቅተኛውን 30 ላይ ያስቀምጣል። የLeRobot ሰነዶች ወደ 50 አካባቢ ይመክራሉ እና ተመሳሳይ ተግባር ያላቸው 25 ክፍሎች ደካማ አፈጻጸም እንዳሳዩ ሪፖርት ያደርጋሉ። አወቃቀር ከቁጥር ይበልጣል፡ የማጣቀሻው ስብስብ 5 የኩብ አቀማመጦች ሲሆኑ እያንዳንዳቸው 10 ክፍሎች ነበሩ፣ እና ያ ድግግሞሽ ነው አጠቃላይ የሚያደርገው።
ሰነዶቹ batch 64 ይላሉ፣ መድረኩ batch 2 ይልካል። የትኛው ነው ትክክል?▾
ሁለቱም፣ ለተለያዩ ሃርድዌሮች። የሰነዶቹ ምሳሌ batch 64 ይጠቀማል እና በአንድ A100 ላይ ለ20000 ደረጃዎች ወደ 4 ሰዓታት ያህል ይወስዳል፤ የኮምፒዩት መመሪያው A100 40 GB መልህቅ batch 16 ነው። Batch 2 AY-Robots በ24 GB ደረጃ ላይ የሚልከው ነው። በአካባቢው 4 እስከ 8 መካከለኛ ነው፣ እና የepoch ስሌት ከእሱ ጋር ይለወጣል።
በSO-100 ላይ ለመጀመሪያ ጊዜ ለመስራት SmolVLA ወይስ ACT?▾
ACT ተግባሩ አንድ ተደጋጋሚ እንቅስቃሴ ከሆነ እና ፈጣኑን ዑደት ከፈለጉ፡ በአንድ የድርጊት ደረጃ 20 ms፣ 80 M parameters፣ የቋንቋ ሁኔታ የለም። SmolVLA የቋንቋ ሁኔታን፣ በአንድ ቼክፖይንት ውስጥ በርካታ የተግባር ሕብረቁምፊዎችን እና ቅድመ-የሰለጠነ መሰረትን ከፈለጉ። ሁለቱም በ24 GB ደረጃ ላይ ስለሚቀመጡ ምርጫው ተግባሩ ነው እንጂ በጀት አይደለም።
--policy.scheduler_decay_stepsን ማዘጋጀት አለብኝ?▾
የ--steps ከ30000 በላይ ሲሆን ብቻ። SmolVLA የcosine decayን በ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 ስልጠና የኮምፒዩት ሃርድዌር መመሪያ
- 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 (ተጨማሪዎች እና የኮንሶል መግቢያ ነጥቦች)
- lerobot በPyPI ላይ
- 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