AY-Robots पर SmolVLA मॉडल पेज पैरामीटर गणना, GPU टियर, प्रति एक्शन स्टेप अनुमान विलंबता और न्यूनतम एपिसोड गणना दिखाते हुए
SmolVLALeRobotVLA प्रशिक्षणफाइन-ट्यूनिंगSO-100

SmolVLA को 24 GB GPU पर कैसे प्रशिक्षित करें (lerobot 0.6.1)

AY-Robots ResearchAugust 23, 202617 मिनट का पठन

SmolVLA एक 450 M पैरामीटर VLA है जो एक सिंगल 24 GB कार्ड पर फाइन-ट्यून होता है। वास्तविक lerobot 0.6.1 कमांड, वास्तविक डिफ़ॉल्ट, वे जाल जिनमें एक दिन लग गया, और एक रन की लागत क्या है।

एक स्क्रीन में स्मॉलवीएलए (SmolVLA)

  • 450 M पैरामीटर, जिनमें से लगभग 100 M एक फ्लो मैचिंग एक्शन एक्सपर्ट हैं। लेरोबोट (lerobot) केवल उस एक्सपर्ट को प्रशिक्षित करता है और वीएलएम (VLM) को फ्रीज रखता है, यही कारण है कि यह एक कार्ड पर फिट बैठता है।
  • लेरोबोट (LeRobot) की कंप्यूट गाइड के अनुसार, स्मॉलवीएलए (smolvla) समूह को एडमडब्ल्यू (AdamW) के साथ बैच 8 पर लगभग 10 से 16 GB पीक वीआरएएम (VRAM) की आवश्यकता होती है। इसलिए 24 GB।
  • एंट्री पॉइंट 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 GB टियर पर जिसकी लागत 1 से 3 USD प्रति रन है, जबकि 80 GB मॉडल के लिए 4 से 12 USD।

अधिकांश लोग जो एक विजन लैंग्वेज एक्शन मॉडल को एक वास्तविक आर्म पर चाहते हैं, वे हार्डवेयर लाइन पर रुक जाते हैं। GR00T N1.7 और Pi0.5 प्रत्येक लगभग तीन बिलियन पैरामीटर के हैं और उन्हें एक A100 80 GB या एक H100 की आवश्यकता होती है। यदि आपके पास RTX 4090 वाला एक गेमिंग पीसी है, तो यह यहीं समाप्त हो जाता है। स्मॉलवीएलए (SmolVLA) इसका अपवाद है: 450 M पैरामीटर, लेरोबोट (LeRobot) के भीतर, जिसे एक उपभोक्ता कार्ड पर फाइन-ट्यून करने और सीपीयू (CPU) से सेवा देने के लिए बनाया गया है।

पहले मैन्युअल तरीका: लेरोबोट (lerobot) इंस्टॉल करें, lerobot/smolvla_base चेकपॉइंट पुल करें, वास्तविक कमांड चलाएं, और इसे चलते समय पढ़ें। फिर प्लेटफॉर्म का तरीका, और जहां यह मदद नहीं करता।

स्मॉलवीएलए (SmolVLA) क्या है, उन संख्याओं में जिनकी आप जांच कर सकते हैं

स्मॉलवीएलए एक फ्लो मैचिंग पॉलिसी है जिसे एक छोटे विजन लैंग्वेज मॉडल पर लगाया गया है। इसका बैकबोन SmolVLM2-500M-Video-Instruct है; पेपर इसके लैंग्वेज मॉडल की केवल पहली 16 परतों को रखता है, प्रत्येक कैमरा फ्रेम को इमेज टाइलिंग के बजाय पिक्सेल शफल के साथ 64 विजुअल टोकन तक सीमित करता है, और हर दूसरे ब्लॉक में क्रॉस अटेंशन को सेल्फ अटेंशन लेयर के साथ इंटरलीव करता है। अनुमान लागत एक डिज़ाइन बाधा थी, न कि बाद का विचार।

गुणमानस्रोत
कुल पैरामीटरलगभग 450 Mpaper
एक्शन एक्सपर्टलगभग 100 M, फ्लो मैचिंगpaper
वीएलएम बैकबोनHuggingFaceTB/SmolVLM2-500M-Video-Instructvlm_model_name
उपयोग की गई वीएलएम परतेंलैंग्वेज मॉडल की पहली 16num_vlm_layers = 16
प्रति फ्रेम विजुअल टोकन64, पिक्सेल शफल, कोई टाइलिंग नहींpaper
प्रीट्रेनिंग481 सामुदायिक डेटासेट, 22.9 K एपिसोड, 10.6 M फ्रेम्स; 4 जीपीयू पर ग्लोबल बैच 256 पर 200000 स्टेप्सpaper

बेंचमार्क ही वह कारण हैं कि लोग 450 M मॉडल पर ध्यान क्यों देते हैं। LIBERO पर यह 7 B के OpenVLA के लिए 76.5 और 3.3 B के रोबोटिक्स-प्रीट्रेन्ड Pi0 के लिए 86.0 के मुकाबले औसतन 87.3 प्रतिशत है; Meta-World पर, 47.9 के मुकाबले 57.3। वास्तविक SO-100 हार्डवेयर पर, मल्टी-टास्क ट्रेनिंग पिक एंड प्लेस पर 75 प्रतिशत, स्टैकिंग पर 90, सॉर्टिंग पर 70 देती है, जिसका औसत 78.3 है, जहाँ एसीटी प्रति कार्य प्रशिक्षित का औसत 48.3 था। वही पंक्तियाँ हर प्रकाशित वीएलए के बगल में हैं स्मॉलवीएलए एरिना एंट्री और एसीटी बनाम स्मॉलवीएलए तुलना

आकार के दावे का ईमानदार संस्करण

स्मॉलवीएलए हर चीज़ में 3 B मॉडल से बेहतर नहीं है। पेपर की अपनी SO-101 तालिका इसका प्रमाण है: वितरण में 90 प्रतिशत सफलता, उससे बाहर 50 प्रतिशत, एक ऐसे प्लेटफॉर्म पर जिस पर इसे कभी प्रीट्रेन नहीं किया गया था। यह जो दावा करता है, और जिसका समर्थन करता है, वह यह है कि Pi0 के मुकाबले यह 6 गुना कम मेमोरी पर लगभग 40 प्रतिशत तेजी से प्रशिक्षित होता है।

24 GB कार्ड पहली बार चलाने के लिए सही क्यों है

LeRobot इस काम के लिए एक कंप्यूट साइज़िंग गाइड प्रदान करता है, जो रेपो में सबसे उपयोगी पेज है। यह नीतियों को बैकबोन साइज़ के अनुसार समूहित करता है और प्रति समूह एक VRAM एनवेलप देता है, जिसे बैच साइज़ 8 पर AdamW (जो lerobot का डिफ़ॉल्ट है) के साथ मापा जाता है। केवल ऑप्टिमाइज़र स्टेट ही एक सामान्य फॉरवर्ड और बैकवर्ड पास की तुलना में 30 से 100 प्रतिशत अधिक जोड़ता है, इसलिए ये केवल वज़न के आंकड़े नहीं हैं।

समूहनीतियाँपीक VRAM (बैच 8, AdamW)स्टार्टर GPU
लाइट BCact, vqbet, tdmpcलगभग 2 से 6 GBRTX 3060, L4
डिफ्यूजनdiffusion, multi_task_ditलगभग 8 से 14 GBRTX 4070+, L4
स्मॉल VLAsmolvlaलगभग 10 से 16 GBRTX 4080+, L4, A10G
लार्ज VLApi0, pi0_fast, pi05, xvla, wall_xलगभग 24 से 40 GBA100 40 GB+
मल्टीमॉडलgroot, eo1लगभग 24 से 40 GBA100 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 रन, लंच के बराबर।

AY-Robots लागत तालिका: प्रति नीति कार्ड, रन टाइम, प्रति रन मूल्य, आवश्यक एपिसोड
SmolVLA और ACT 24 GB पंक्ति में हैं, जबकि तीन 3 B मॉडल 80 GB पंक्ति में हैं।
3 B मॉडल के बजाय SmolVLA से शुरुआत करना
आपको क्या मिलता है
  • आपके पास पहले से मौजूद हार्डवेयर में फिट बैठता है: बैच 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 पर क्रैश हो जाता है। एक बार रिकॉर्ड करें, बाद में मॉडल की तुलना करने की योजना बनाएं, और आपको किसी न किसी तरह से बदलना होगा: डेटासेट ने v3 को अस्वीकार कर दिया

bash
# 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
कनवर्टर lerobot के अंदर आता है, इसलिए अतिरिक्त कुछ भी इंस्टॉल करने की आवश्यकता नहीं है। पैकेज में दूसरी दिशा में कोई कनवर्टर नहीं है।

इस पर अधिक जानकारी यहाँ है: उच्च गुणवत्ता वाला VLA प्रशिक्षण डेटा कैसे एकत्र करें। संक्षिप्त संस्करण: जानबूझकर भिन्नता वाले एक कार्य के 30 से 50 साफ एपिसोड, तीन के 200 लापरवाह एपिसोड को हरा देते हैं, इतने बड़े अंतर से जिसे कोई हाइपरपैरामीटर बंद नहीं कर सकता।

लेरोबोट 0.6.1 स्थापित करें

bash
# 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
PyPI पाथ। ट्रेनर को पैच करने के लिए, रेपो को क्लोन करें और इसके बजाय `pip install -e ".[smolvla,training]"` का उपयोग करें।

मूल लेरोबोट इंस्टाल पतला है और भारी निर्भरताओं को एक्स्ट्रा के पीछे रखता है: स्मोलवीएलए ट्रांसफॉर्मर, num2words और एक्सेलेरेट जोड़ता है, ट्रेनिंग डेटासेट स्टैक और wandb, कोर_स्क्रिप्ट्स हार्डवेयर और विज़ुअलाइज़ेशन निर्भरताएँ। लिनक्स पर इंस्टाल पाथ आपके CUDA व्हील को भी तय करता है: PyPI डिफ़ॉल्ट 580.65 के ड्राइवर फ्लोर के साथ एक cu130 व्हील है, इसलिए पुराने ड्राइवर पर पहले cu128 इंडेक्स से टॉर्च इंस्टॉल करें, फिर लेरोबोट।

policy.path और policy.type एक ही फ़्लैग नहीं हैं

--policy.path=lerobot/smolvla_base प्रीट्रेन्ड 450 M चेकपॉइंट को लोड करता है और इसे फाइन-ट्यून करता है। --policy.type=smolvla एक नया SmolVLA बनाता है, और कॉन्फ़िग डिफ़ॉल्ट load_vlm_weights = False का मतलब है कि यह SmolVLM2 बैकबोन वज़न को तब तक नहीं खींचता जब तक आप न कहें। यदि आप इसे गलत करते हैं तो रन खुशी-खुशी प्रशिक्षित होता है, लागत समान रहती है, और कुछ भी हस्तांतरणीय नहीं सीखता है।

प्रशिक्षण रन, कमांड दर कमांड

  1. 1
    हब के विरुद्ध प्रमाणीकरण करें

    बेस चेकपॉइंट हब से आता है, और आपका डेटासेट भी शायद वहीं से आता है।

    bash
    hf auth login
  2. 2
    विकल्पों को एक बार पढ़ें

    पाइपलाइन और पॉलिसी कॉन्फ़िग का हर फ़ील्ड एक फ़्लैग है। स्रोत में गहराई से जाने से पहले इसे सरसरी तौर पर देख लें।

    bash
    lerobot-train --help
  3. 3
    फ़ाइन-ट्यून शुरू करें

    दस्तावेज़ों का उदाहरण एक सिंगल A100 पर बैच 64 चलाता है; कंप्यूट गाइड का अपना A100 40 GB एंकर बैच 16 है, और 8, 24 GB के बराबर है। यहाँ जानबूझकर कोई शेड्यूलर फ़्लैग नहीं है, नीचे देखें।

    bash
    lerobot-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. 4
    केवल लॉस ही नहीं, लॉग लाइन भी पढ़ें

    प्रत्येक --log_freq स्टेप्स पर लेरोबोट लॉस, 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. 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. 6
    यदि मशीन बंद हो जाए तो फिर से शुरू करें

    चेकपॉइंट के बगल में train_config.json पर --config_path को इंगित करें। लेरोबोट मौजूदा output_dir में शुरू होने से मना कर देता है जब तक कि आप फिर से शुरू नहीं कर रहे हों, इसलिए आप गलती से किसी रन को ओवरराइट नहीं कर सकते।

    bash
    lerobot-train \
      --config_path=<path to the saved train_config.json> \
      --resume=true

वे फ़्लैग जो वास्तव में परिणाम बदलते हैं

Flagयह क्या करता है24 GB पर
--batch_sizeप्रति स्टेप नमूने, VRAM में लगभग रैखिक4 to 8
--stepsकुल ऑप्टिमाइज़र स्टेप्स20000 first pass
--policy.scheduler_decay_stepsकोसाइन क्षय की लंबाई, प्रीसेट 30000Only bites above 30000
--policy.use_ampमिश्रित परिशुद्धता; SmolVLA में कोई dtype फ़ील्ड नहीं हैtrue when memory is tight
--num_workersडेटालोडर प्रक्रियाएँ, डिफ़ॉल्ट 4Raise until data_s stops climbing
--dataset.eval_splitप्रति कार्य रोके गए एपिसोड का अंश0.1, with --eval_steps
--policy.freeze_vision_encoderविजन टावर को फ्रीज रखता हैtrue on 24 GB
--policy.train_expert_onlyकेवल ~100 M विशेषज्ञ को ग्रेडिएंट मिलते हैंtrue first
शेड्यूल: 0.6.1 क्या संभालता है, और क्या नहीं

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` कॉलम वह जगह है जहाँ आप जाँच करते हैं।

यदि आप कुछ भी नहीं छूते हैं तो आपको मिलने वाले डिफ़ॉल्ट

एक पॉलिसी कॉन्फ़िग लेरोबोट में अपना ऑप्टिमाइज़र और शेड्यूलर प्रीसेट रखता है, और जब तक आप सेट नहीं करते use_policy_training_preset=false तब तक वे प्रीसेट जीतते हैं। SmolVLA प्रशिक्षण के बारे में लोग जो आधे सवाल पूछते हैं, उनका जवाब एक ऐसे डिफ़ॉल्ट से मिलता है जिसके बारे में उन्हें पता नहीं था।

सेटिंगलेरोबोट 0.6.1 में डिफ़ॉल्टइसमें परिभाषित
chunk_size / n_action_steps50 / 50SmolVLAConfig
num_steps (फ्लो मैचिंग डीनोइज़)10SmolVLAConfig
optimizer_lr1e-4SmolVLAConfig
scheduler_warmup_steps1000SmolVLAConfig
scheduler_decay_steps30000SmolVLAConfig
scheduler_decay_lr2.5e-6SmolVLAConfig
freeze_vision_encodertrueSmolVLAConfig
train_expert_onlytrueSmolVLAConfig
batch_size / steps8 / 100000TrainPipelineConfig
seed / save_freq / num_workers1000 / 20000 / 4TrainPipelineConfig

दो लाइनें जो लोगों को आश्चर्यचकित करती हैं वे हैं freeze_vision_encoder और train_expert_only, दोनों सही हैं। बिना किसी बदलाव के आप लगभग 100 M पैरामीटर प्रशिक्षित करते हैं, 450 M नहीं, यही कारण है कि यह 24 GB पर फिट बैठता है। LeRobot का चार-GPU H100 क्लस्टर पर अपना संदर्भ रन दोनों को गलत कर देता है; एक 24 GB कार्ड पर वह एक काम कर रहे रन को .

वह मेमोरी नॉब जो मौजूद नहीं है

जब आप मेमोरी-बाउंड होते हैं तो गाइड की सलाह है कि बैच आकार को कम करें और प्रभावी बैच को पुनः प्राप्त करने के लिए ग्रेडिएंट एक्यूमुलेशन का उपयोग करें। lerobot 0.6.1 में कोई ग्रेडिएंट एक्यूमुलेशन नहीं है: TrainPipelineConfig में ऐसा कोई फ़ील्ड नहीं है और यह स्ट्रिंग जारी किए गए पैकेज में कहीं भी दिखाई नहीं देती है। AY-Robots फॉर्म SmolVLA के लिए ग्रेडिएंट एक्यूमुलेशन मान 8 दिखाता है और इसे लागू भी नहीं करता है। 24 GB पर आपके लीवर्स हैं --batch_size, दो फ़्रीज़ डिफ़ॉल्ट, और --policy.use_amp

रन में कितना समय लगता है, और कितने स्टेप्स पर्याप्त हैं

LeRobot लगभग 50 एपिसोड वाले डेटासेट पर पांच युगों के लिए वॉल-क्लॉक एंकर प्रकाशित करता है, जो 30 fps पर लगभग 45000 फ़्रेम हैं। दस्तावेज़ कहते हैं कि ये परिमाण के आंकड़े हैं, लेकिन वे एक घंटे और एक दिन की अपेक्षा के बीच का अंतर हैं।

सेटअपपॉलिसीबैचवास्तविक समय
सिंगल L4 / A10G (24 GB)smolvla4about 3 to 6 h
सिंगल A100 40 GBsmolvla16about 1 to 2 h
एक्सेलरेट के साथ 4 x H100 80 GBsmolvla32about 1 to 2 h
सिंगल RTX 4090 / RTX 3090 (24 GB)act8about 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 को स्पर्श करें तो इसे फिर से करें।

आर्म पर फाइन-ट्यून की गई पॉलिसी को वापस चलाना

bash
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 s9.70 s
एक निश्चित समय सीमा में पिक एंड प्लेस चक्र919
तीनों कार्यों पर औसत सफलता दर78.3 %73.3 %

वह तीसरी पंक्ति है जिसे अधिकांश लेख छोड़ देते हैं। असिंक्रोनस इन्फरेंस लगभग 30 प्रतिशत तेज है और एक निश्चित समय सीमा में थ्रूपुट को लगभग दोगुना कर देता है, और पेपर सफलता दरों को तुलनीय बताता है, जो औसतन वे हैं। इसके तहत, सॉर्टिंग 70 से 50 प्रतिशत तक गिर गई जबकि पिक एंड प्लेस में 5 की वृद्धि हुई। lerobot 0.6.1 उसी बाइनरी में दूसरा लीवर रखता है: --inference.type=rtc रोलआउट को रियल टाइम चंकिंग में बदल देता है, जिसे स्क्रिप्ट का अपना उपयोग ब्लॉक धीमे VLAs, Pi0, Pi0.5 और SmolVLA के लिए अनुशंसित करता है।

इन्फरेंस को सर्वो के बगल में होना चाहिए

कंट्रोल लूप मॉडल के आधार पर प्रति एक्शन स्टेप 20 से 485 मिलीसेकंड का होता है, और सार्वजनिक-इंटरनेट राउंड ट्रिप इसके ऊपर एक कार्यशील पॉलिसी को एक झिझकने वाली पॉलिसी में बदल देती हैं। रिमोट इन्फरेंस धीमे पिक एंड प्लेस के लिए व्यवहार्य है, न कि तेज प्रतिक्रियाशील गति के लिए: यदि कार्य को त्वरित सुधार की आवश्यकता है, तो GPU आर्म के समान LAN पर होना चाहिए।

7.4 V, 12 V नहीं

यह प्रशिक्षण रन के लिए विषय से हटकर है, लेकिन यह किसी भी हाइपरपैरामीटर से ज़्यादा 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 को स्वयं डीबग करते हैं।
bash
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
एक ही ब्लॉक में पूरा मैनुअल मार्ग, lerobot 0.6.1।

जब SmolVLA गलत विकल्प हो

SmolVLA सही पहली रन थी या नहीं, इसकी कसौटी यह नहीं है कि यह काम कर गई, बल्कि यह है कि विफलता ने आपको कुछ बताया या नहीं। 60 या 70 प्रतिशत तक पहुँचने पर एक बड़ा मॉडल अगला उचित खर्च है: डेटा में संकेत होता है। 10 प्रतिशत तक पहुँचने पर एक 3 B मॉडल भी संभवतः 10 प्रतिशत तक पहुँचता है, जो आपने बारह डॉलर के बजाय तीन डॉलर में सीख लिया।

AY-Robots प्रशिक्षण मैट्रिक्स: पंक्तियों के रूप में पाँच नीतियां, स्तंभों के रूप में चार रोबोट भुजाएँ
हर सेल अपनी खुद की मार्गदर्शिका है। SmolVLA में प्रत्येक चार भुजाओं के लिए एक है।

अधिक खर्च करने से पहले पढ़ने लायक: Pi0.5 against SmolVLA उसी विचार पर अधिक क्षमता के लिए, और GR00T N1.7 against SmolVLA NVIDIA मार्ग के लिए, दोनों 80 GB टियर पर 4 से 12 USD प्रति रन। दूसरा तरीका, ACT सस्ता आधारभूत है: 80 M पैरामीटर, 20 ms प्रति एक्शन स्टेप, कोई भाषा कंडीशनिंग नहीं। ये सभी पाँच नीतियों के पृष्ठ पर हैं; अखाड़ा में 85 मॉडल और 332 बेंचमार्क परिणाम हैं।

AY-Robots नीतियों की तुलना: पैरामीटर, GPU टियर, विलंबता, न्यूनतम एपिसोड
वे चार संख्याएँ जो एक रन का निर्णय करती हैं।

किसी भी चीज़ को स्केल करने से पहले की चेकलिस्ट

  1. क्या lr अपने 2.5e-6 के न्यूनतम स्तर तक पहुँच गया? 30000 चरणों से कम पर lerobot क्षय को पुनः स्केल करता है और स्टार्टअप पर ऐसा बताता है; इससे ऊपर, --policy.scheduler_decay_steps स्वयं सेट करें।
  2. एक से अधिक चेकपॉइंट, और --dataset.eval_split के साथ रोके गए एपिसोड ताकि मूल्यांकन हानि का कुछ अर्थ हो।
  3. क्या नीति बिल्कुल भी चलती है? एक गतिहीन हाथ के साथ गिरती हुई हानि के विशिष्ट कारण होते हैं: हानि गिरती है, नीति कुछ नहीं करती
  4. क्या यह दृश्य परिवर्तन में जीवित रहता है? यदि नहीं: नीति केवल एक सेटअप में काम करती है
  5. क्या आपने सीड लिख लिया? lerobot डिफ़ॉल्ट रूप से 1000 पर सेट होता है, इसलिए दो अछूते रन तुलनीय रहते हैं।
  6. तभी: अधिक एपिसोड, अधिक भिन्नता, या एक बड़ा मॉडल। इसी क्रम में।

ये मॉडल क्यों मौजूद हैं और वे भाषा इनपुट के साथ क्या करते हैं, इसके लिए, पृष्ठभूमि है; असेंबली को से पहले रन तक चलाता है। समाप्त चेकपॉइंट के लिए, ; यदि हाथ कभी दिखाई नहीं देता है, तो ।

अपने स्वयं के आर्म पर SmolVLA को प्रशिक्षित करें

मॉडल और आर्म चुनें और मार्गदर्शिका आपको सटीक डिफ़ॉल्ट, डेटासेट प्रारूप और रन की लागत बताती है। SmolVLA 24 GB टियर पर प्रति रन 1 से 3 USD में उपलब्ध है।

प्रशिक्षण मार्गदर्शिकाएँ खोलें
क्या मैं वास्तव में 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 फ्लोर पर छोड़ देता है।

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started