AY-Robots मा SmolVLA मोडेल पृष्ठले प्यारामिटर गणना, GPU टियर, प्रत्येक कार्य चरणमा अनुमान विलम्बता र न्यूनतम एपिसोड गणना देखाउँदै
SmolVLALeRobotVLA तालिमफाइन-ट्यूनिङSO-100

24 GB GPU मा SmolVLA लाई कसरी तालिम दिने (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 लाग्छ।

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

पहिले म्यानुअल मार्ग: lerobot स्थापना गर्नुहोस्, lerobot/smolvla_base चेकपोइन्ट तान्नुहोस्, वास्तविक कमाण्ड चलाउनुहोस्, यो भइरहेको बेला रन पढ्नुहोस्। त्यसपछि प्लेटफर्म मार्ग, र जहाँ यसले मद्दत गर्दैन।

SmolVLA के हो, तपाईंले जाँच गर्न सक्ने संख्याहरूमा

SmolVLA एउटा फ्लो म्याचिङ नीति हो जुन एउटा सानो भिजन भाषा मोडेलमा जोडिएको छ। यसको मुख्य आधार SmolVLM2-500M-Video-Instruct हो; शोधपत्रले यसको भाषा मोडेलका पहिलो १६ तहहरू मात्र राखेको छ, प्रत्येक क्यामेरा फ्रेमलाई इमेज टाइलिङको सट्टा पिक्सेल शफलको साथ ६४ भिजुअल टोकनमा सीमित गर्दछ, र प्रत्येक दोस्रो ब्लकमा सेल्फ एटेन्सन लेयरसँग क्रस एटेन्सनलाई अन्तर-मिश्रित गर्दछ। इन्फरेन्स लागत डिजाइनको एक बाधा थियो, न कि पछि सोचिएको कुरा।

विशेषतामानस्रोत
कुल प्यारामिटरहरूलगभग 450 Mशोधपत्र
एक्शन विशेषज्ञलगभग 100 M, flow matchingशोधपत्र
VLM मुख्य आधारHuggingFaceTB/SmolVLM2-500M-Video-Instructvlm_model_name
प्रयोग गरिएका VLM तहहरूभाषा मोडेलका पहिलो 16num_vlm_layers = 16
प्रति फ्रेम भिजुअल टोकनहरू64, pixel shuffle, no tilingशोधपत्र
प्रि-ट्रेनिङ481 community datasets, 22.9 K episodes, 10.6 M frames; 200000 steps at global batch 256 on 4 GPUsशोधपत्र

बेन्चमार्कहरू नै कारण हुन् जसले गर्दा मानिसहरू 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 प्रतिशत दिन्छ, जहाँ ACT प्रति कार्य प्रशिक्षित ACT को औसत 48.3 थियो। उही पङ्क्तिहरू SmolVLA एरेना प्रविष्टिACT बनाम SmolVLA तुलना मा प्रकाशित प्रत्येक VLA सँगै छन्।

आकार दाबीको इमानदार संस्करण

SmolVLA सबै कुरामा 3 B मोडेल भन्दा राम्रो छैन। शोधपत्रको आफ्नै SO-101 तालिकाले यो देखाउँछ: वितरणमा 90 प्रतिशत सफलता, र यसबाट बाहिर 50 प्रतिशत, जुन प्लेटफर्ममा यसलाई कहिल्यै प्रिट्रेन गरिएको थिएन। यसले दाबी गर्ने र समर्थन गर्ने कुरा के हो भने Pi0 को तुलनामा यसले 6 गुणा कम मेमोरीमा लगभग 40 प्रतिशत छिटो तालिम दिन्छ।

२४ GB कार्ड किन पहिलो रनको लागि सही छ

LeRobot ले यसका लागि रिपोमा सबैभन्दा उपयोगी पृष्ठ, कम्प्युट साइजिंग गाइड प्रदान गर्दछ। यसले नीतिहरूलाई ब्याकबोन साइज अनुसार समूहबद्ध गर्दछ र प्रत्येक समूहको लागि एक VRAM इन्भेलप दिन्छ, जुन AdamW, lerobot को पूर्वनिर्धारित सेटिङ, प्रयोग गरी ब्याच साइज 8 मा मापन गरिएको हो। अप्टिमाइजरको अवस्थाले मात्र सामान्य फर्वार्ड र ब्याकवर्ड पास भन्दा ३० देखि १०० प्रतिशत थप गर्दछ, त्यसैले यी केवल वजन-मात्रका आंकडाहरू होइनन्।

समूहPoliciesपीक VRAM (ब्याच 8, AdamW)सुरुवाती GPU हरू
लाइट BCact, vqbet, tdmpcलगभग २ देखि ६ GBRTX 3060, L4
डिफ्युजनdiffusion, multi_task_ditलगभग ८ देखि १४ GBRTX 4070+, L4
सानो VLAsmolvlaलगभग १० देखि १६ GBRTX 4080+, L4, A10G
ठूलो VLApi0, pi0_fast, pi05, xvla, wall_xलगभग २४ देखि ४० GBA100 40 GB+
बहुमोडलgroot, eo1लगभग २४ देखि ४० GBA100 40 GB+

ब्याच 8 मा दश देखि सोह्र गिगाबाइटको तर्क छ: २४ GB कार्डले त्यो र डेटालोडर दुवैलाई समेट्छ। AY-Robots ले SmolVLA लाई RTX 4090 वा कुनै पनि २४ GB कार्डमा राख्छ, न्यूनतम ३० एपिसोडहरू, LeRobot v3.0 डेटा, प्रति कार्य चरणमा २४५ ms। भाडामा लिँदा, त्यो प्रति घण्टा ०.३० देखि ०.६० USD मा २ देखि ५ घण्टा हुन्छ, लगभग १ देखि ३ USD प्रति फाइन-ट्यूनिङ रन, ८० GB टियर GR00T र Pi0.5 लाई चाहिने ४ देखि १२ USD को तुलनामा (मूल्य निर्धारण)। असफल SmolVLA रन कफी बराबर हो; असफल GR00T रन लन्च बराबर हो।

AY-रोबोट लागत तालिका: नीति अनुसार कार्ड, सञ्चालन समय, प्रति सञ्चालन मूल्य, आवश्यक एपिसोडहरू
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 रेकर्डिङलाई रूपान्तरण गर्नुपर्छ (dataset rejected v3)।
  • प्रति कार्य चरण 245 ms एक सक्षम पिक एन्ड प्लेस नियन्त्रक हो, प्रतिक्रियात्मक होइन।
  • डक्स उदाहरणले A100 मा ब्याच 64 चलाउँछ; 24 GB मा तपाईंले वाल क्लकको लागि ब्याच साट्नुहुन्छ।

चरण 0: डेटासेटले रनको निर्णय गर्छ, फ्ल्यागहरूले होइन

रेकर्डिङ खराब भएमा तलका कुनै पनि कुराले फरक पार्दैन। LeRobot SmolVLA पृष्ठ स्पष्ट छ: सन्दर्भ डेटासेट 5 घन स्थितिहरूमा 50 एपिसोडहरू थियो, प्रति स्थिति 10, र 25 एपिसोडहरूमा समान कार्य खराब प्रदर्शन गर्‍यो। भिन्नता अनुसारको पुनरावृत्तिले सामान्यीकरण गर्छ, कच्चा एपिसोड गणनाले गर्दैन। कहिल्यै रेकर्ड गर्नुभएको छैन? यहाँबाट सुरु गर्नुहोस् आफ्नो पहिलो डेटासेट रेकर्ड गर्नुहोस्, सँग डेस्कटप क्लाइन्ट, जसले टेलिओपरेशन सत्रबाट LeRobot ढाँचामा लेख्छ, वा डेटासेट डाइरेक्टरी बाट एउटा लिनुहोस्।

  • AY-Robots मा कम्तिमा ३० एपिसोडहरू, LeRobot सन्दर्भ रेसिपीका लागि लगभग ५०।
  • रोलआउटमा तपाईंले अपेक्षा गर्ने हरेक भिन्नता, धेरै पटक दोहोर्याइएको।
  • एउटा कार्य स्ट्रिङ, रेकर्ड र रोलआउट समयमा समान रूपमा लेखिएको। मोडेल त्यो पाठमा आधारित हुन्छ।
  • स्थिर क्यामेराहरू। रेकर्डिङ र रोलआउटको बीचमा सारिएको क्यामेरा नै सफा लस कर्भले गतिहीन हात दिने सबैभन्दा सामान्य कारण हो।
  • एउटा होल्ड-आउट भिन्नता जुन तपाईंले कहिल्यै तालिम दिनुभएन, ताकि तपाईंसँग परीक्षण गर्नको लागि केही इमानदार होस्।
एक दिन खर्च गर्ने डेटासेटको जाल

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 प्रशिक्षण डेटा कसरी सङ्कलन गर्ने मा। छोटो संस्करण: जानाबुझी भिन्नताका साथ एउटै कार्यका ३० देखि ५० सफा एपिसोडहरूले तीनवटा कार्यका २०० लापरवाह एपिसोडहरूलाई हराउँछन्, यस्तो मार्जिनले कुनै पनि हाइपरप्यारामिटरले बन्द गर्दैन।

lerobot 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]"` प्रयोग गर्नुहोस्।

आधारभूत lerobot स्थापना पातलो छ र भारी निर्भरताहरूलाई अतिरिक्तहरू पछाडि राख्छ: smolvla ले ट्रान्सफर्मर, num2words र accelerate थप्छ, training ले डेटासेट स्ट्याक र wandb थप्छ, core_scripts ले हार्डवेयर र भिजुअलाइजेसन निर्भरताहरू थप्छ। लिनक्समा स्थापना मार्गले तपाईंको CUDA व्हील पनि निर्धारण गर्दछ: PyPI पूर्वनिर्धारित cu130 व्हील हो जसको ड्राइभर फ्लोर 580.65 छ, त्यसैले पुरानो ड्राइभरमा पहिले cu128 इन्डेक्सबाट torch स्थापना गर्नुहोस्, त्यसपछि lerobot।

policy.path र policy.type एउटै फ्ल्याग होइनन्

--policy.path=lerobot/smolvla_base loads the pretrained 450 M checkpoint and fine-tunes it. --policy.type=smolvla builds a fresh SmolVLA, and the config default load_vlm_weights = False means it does not even pull the SmolVLM2 backbone weights unless you ask. Get it wrong and the run trains happily, costs the same, and learns nothing transferable.

तालिम सञ्चालन, कमाण्ड अनुसार

  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 चरणहरूमा lerobot ले loss, 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 लाई देखाउनुहोस्। lerobot ले अवस्थित output_dir मा सुरु गर्न अस्वीकार गर्छ जबसम्म तपाईं पुनः सुरु गरिरहनु भएको छैन, त्यसैले तपाईंले गल्तीले रनलाई ओभरराइट गर्न सक्नुहुन्न।

    bash
    lerobot-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कोसाइन क्षय लम्बाइ, पूर्वनिर्धारित 3000030000 भन्दा माथि मात्र प्रभावकारी
--policy.use_ampमिश्रित परिशुद्धता; SmolVLA मा कुनै dtype फिल्ड छैनमेमोरी कम हुँदा true
--num_workersडेटालोडर प्रक्रियाहरू, पूर्वनिर्धारित 4data_s बढ्न बन्द नभएसम्म बढाउनुहोस्
--dataset.eval_splitप्रत्येक कार्यका लागि छुट्याइएका एपिसोडहरूको अंश0.1, with --eval_steps
--policy.freeze_vision_encoderभिजन टावरलाई स्थिर राख्छtrue on 24 GB
--policy.train_expert_onlyलगभग 100 M विशेषज्ञले मात्र ग्रेडियन्ट पाउँछन्पहिले true
तालिका: 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 स्तम्भमा तपाईंले जाँच गर्न सक्नुहुन्छ।

यदि तपाईंले केही छुनुभएन भने तपाईंले प्राप्त गर्ने पूर्वनिर्धारित मानहरू

एउटा lerobot मा कन्फिगले आफ्नै अप्टिमाइजर र शेड्युलर प्रिसेट बोक्छ, र जबसम्म तपाईंले सेट गर्नुहुन्न use_policy_training_preset=false ती प्रिसेटहरूले जित्छन्। SmolVLA प्रशिक्षणको बारेमा मानिसहरूले सोध्ने आधा प्रश्नहरूको जवाफ उनीहरूलाई थाहा नभएको पूर्वनिर्धारित मानले दिन्छ।

सेटिङlerobot 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
भिजन इन्कोडर फ्रिज गर्नुहोस्trueSmolVLAConfig
विशेषज्ञ मात्र तालिम दिनुहोस्trueSmolVLAConfig
ब्याच साइज / स्टेप्स8 / 100000TrainPipelineConfig
सिड / सेभ फ्रिक्वेन्सी / num_workers1000 / 20000 / 4TrainPipelineConfig

मानिसहरूलाई अचम्ममा पार्ने दुई लाइनहरू हुन् freeze_vision_encodertrain_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)smolvla4लगभग 3 देखि 6 घण्टा
एकल A100 40 GBsmolvla16लगभग 1 देखि 2 घण्टा
एक्सेलेरेट सहित 4 x H100 80 GBsmolvla32लगभग 1 देखि 2 घण्टा
एकल RTX 4090 / RTX 3090 (24 GB)act8लगभग 30 देखि 60 मिनेट
<code>--steps</code> छान्नु अघि इपोक अंकगणित गर्नुहोस्

नियम भनेको डेटासेटमा 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 ms लाई गलत बुझ्न सजिलो छ: नीतिले उत्सर्जन गर्छ chunk_size = 50 कार्यहरू प्रति फरवार्ड पास र कार्यान्वयन गर्छ n_action_steps = 50 ती मध्ये, त्यसैले तपाईंले त्यो लागत कति पटक तिर्नुहुन्छ भन्ने कुरा ती नबहरूद्वारा सेट गरिन्छ, सर्भोहरूले कति पटक आदेश पाउँछन् भन्ने कुराले होइन। यही हो कार्य चंकिङ किन्छ, र किन 245 ms को मोडेलले 30 Hz को हात चलाउन सक्छ। बाँकी रहेको छ अनुमान विलम्बता चंकको अन्त्यमा।

मापन (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 ms हुन्छ, र सार्वजनिक-इन्टरनेट राउन्ड ट्रिपहरूले काम गर्ने नीतिलाई हिचकिचाउने नीतिमा परिणत गर्छ। टाढाको अनुमान ढिलो पिक एण्ड प्लेसका लागि सम्भव छ, तर छिटो प्रतिक्रियात्मक गतिको लागि होइन: यदि कार्यलाई द्रुत सुधारहरू चाहिन्छ भने, GPU हातको जस्तै LAN मा हुनुपर्छ।

7.4 V, 12 V होइन

तालिम सञ्चालनका लागि विषय बाहिरको कुरा हो, तर यसले कुनै पनि हाइपरप्यारामिटर भन्दा बढी SO-100 परियोजनाहरू समाप्त गर्दछ। SO-100SO-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 सही पहिलो रन थियो कि थिएन भन्ने परीक्षण यो सफल भयो कि भएन भन्ने होइन, तर असफलताले तपाईंलाई केही बतायो कि बताएन भन्ने हो। ६० वा ७० प्रतिशतमा पुग्नुभयो भने ठूलो मोडेल अर्को उचित खर्च हो: डेटाले संकेत बोक्छ। १० प्रतिशतमा पुग्नुभयो भने ३ B मोडेल पनि १० प्रतिशतमा पुग्ने सम्भावना बढी हुन्छ, जुन तपाईंले बाह्र डलरको सट्टा तीन डलरमा सिक्नुभयो।

AY-Robots प्रशिक्षण म्याट्रिक्स: पङ्क्तिहरूको रूपमा पाँच नीतिहरू, स्तम्भहरूको रूपमा चार रोबोट हातहरू
प्रत्येक सेल यसको आफ्नै मार्गदर्शक हो। SmolVLA सँग चारवटै हातका लागि एउटा छ।

थप खर्च गर्नु अघि पढ्न लायक: Pi0.5 SmolVLA विरुद्ध एउटै विचारमा थप क्षमताका लागि, र GR00T N1.7 SmolVLA विरुद्ध NVIDIA मार्गका लागि, दुवै ८० GB टियर प्रति रन ४ देखि १२ USD मा। अर्को तरिका, ACT सस्तो आधारभूत हो: ८० M प्यारामिटरहरू, प्रति कार्य चरण २० ms, कुनै भाषा कन्डिसनिङ छैन। सबै पाँचवटा यहाँ छन् नीति पृष्ठ; एरिना सँग ८५ मोडेल र ३३२ बेन्चमार्क परिणामहरू छन्।

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

कुनै पनि कुरा मापन गर्नु अघिको चेकलिस्ट

  1. के lr यसको 2.5e-6 न्यूनतम बिन्दुमा पुग्यो? 30000 स्टेप्स भन्दा कममा lerobot ले क्षयलाई पुनः मापन गर्छ र स्टार्टअपमा त्यसो भन्छ; त्यो भन्दा माथि, --policy.scheduler_decay_steps आफैं सेट गर्नुहोस्।
  2. एक भन्दा बढी चेकपोइन्ट, र --dataset.eval_split सँग राखिएका एपिसोडहरू ताकि मूल्याङ्कन हानि (eval loss) को केही अर्थ होस्।
  3. के नीति (policy) अलिकति पनि चल्छ? गतिहीन हातको साथ घट्दो हानि (falling loss) का विशेष कारणहरू छन्: हानि घट्छ, नीतिले केही गर्दैन
  4. के यसले दृश्य परिवर्तनमा पनि काम गर्छ? यदि गर्दैन भने: नीतिले एउटै सेटअपमा मात्र काम गर्छ
  5. के तपाईंले सीड (seed) लेख्नुभयो? 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