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 च्या कम्प्यूट मार्गदर्शिकेनुसार, AdamW सह बॅच 8 वर smolvla ग्रुपला अंदाजे 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 म्हणजे काय, तुम्ही तपासू शकता अशा संख्यांमध्ये

SmolVLA हे एक फ्लो मॅचिंग धोरण आहे जे एका लहान व्हिजन लँग्वेज मॉडेलला जोडलेले आहे. याचे बॅकबोन SmolVLM2-500M-Video-Instruct आहे; या शोधनिबंधात त्याच्या लँग्वेज मॉडेलचे फक्त पहिले 16 लेयर्स वापरले आहेत, प्रत्येक कॅमेरा फ्रेमला इमेज टायलिंगऐवजी पिक्सेल शफल वापरून 64 व्हिज्युअल टोकन्सपर्यंत मर्यादित केले आहे, आणि प्रत्येक दुसऱ्या ब्लॉकवर क्रॉस अटेंशनला सेल्फ अटेंशन लेयरसह इंटरलीव्ह केले आहे. इन्फरन्स खर्च ही डिझाइनची एक मर्यादा होती, नंतरचा विचार नव्हता.

गुणधर्ममूल्यस्रोत
एकूण पॅरामीटर्सabout 450 Mpaper
ॲक्शन एक्सपर्टabout 100 M, flow matchingpaper
VLM बॅकबोनHuggingFaceTB/SmolVLM2-500M-Video-Instructvlm_model_name
वापरलेले VLM लेयर्सfirst 16 of the language modelnum_vlm_layers = 16
प्रति फ्रेम व्हिज्युअल टोकन्स64, pixel shuffle, no tilingpaper
प्रीट्रेनिंग481 community datasets, 22.9 K episodes, 10.6 M frames; 200000 steps at global batch 256 on 4 GPUspaper

बेंचमार्क्समुळेच लोक 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 होती. तेच रो प्रत्येक प्रकाशित VLA च्या बाजूला आहेत SmolVLA एरिना एंट्री आणि ACT विरुद्ध SmolVLA तुलना.

आकाराच्या दाव्याची प्रामाणिक आवृत्ती

SmolVLA प्रत्येक बाबतीत 3 B मॉडेलपेक्षा चांगले नाही. शोधनिबंधातील SO-101 टेबल हेच सांगते: ज्या प्लॅटफॉर्मवर ते कधीही प्रीट्रेन केले नव्हते, त्यावर वितरणात 90 टक्के यश, आणि त्याबाहेर 50 टक्के. ते जे दावा करते आणि समर्थन करते ते असे की Pi0 च्या तुलनेत ते 6 पट कमी मेमरीवर सुमारे 40 टक्के वेगाने प्रशिक्षित होते.

24 GB कार्ड पहिली रनसाठी योग्य का आहे?

LeRobot या कामासाठी एक कम्प्यूट साईझिंग गाईड पुरवते, जी रेपोमधील सर्वात उपयुक्त पृष्ठ आहे. ती पॉलिसींना बॅकबोन आकारानुसार गटबद्ध करते आणि प्रत्येक गटासाठी एक VRAM एनव्हलप देते, जे AdamW सह बॅच साईझ 8 वर मोजले जाते, जो lerobot चा डिफॉल्ट आहे. ऑप्टिमायझरची स्थिती एकट्यानेच केवळ फॉरवर्ड आणि बॅकवर्ड पासपेक्षा 30 ते 100 टक्के अधिक जागा घेते, त्यामुळे हे केवळ वजनाचे आकडे नाहीत.

गटपॉलिसीजपीक VRAM (बॅच 8, AdamW)स्टार्टर GPUs
Light BCact, vqbet, tdmpcabout 2 to 6 GBRTX 3060, L4
Diffusiondiffusion, multi_task_ditabout 8 to 14 GBRTX 4070+, L4
Small VLAsmolvlaabout 10 to 16 GBRTX 4080+, L4, A10G
Large VLApi0, pi0_fast, pi05, xvla, wall_xabout 24 to 40 GBA100 40 GB+
Multimodalgroot, eo1about 24 to 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 रेकॉर्डिंग रूपांतरित करावे लागेल (dataset rejected 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.

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 निष्काळजी एपिसोडपेक्षा चांगले ठरतात, इतक्या फरकाने की कोणताही हायपरपॅरामीटर तो भरून काढू शकत नाही.

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 इंडेक्समधून टॉर्च इन्स्टॉल करा, नंतर lerobot.

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 स्टेप्सवर 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. 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 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` कॉलममध्ये तुम्ही तपासू शकता.

तुम्ही काहीही न केल्यास तुम्हाला मिळणारे डिफॉल्ट्स

एक lerobot मधील कॉन्फिग स्वतःचे ऑप्टिमायझर आणि शेड्यूलर प्रीसेट घेऊन येते, आणि जोपर्यंत तुम्ही use_policy_training_preset=false सेट करत नाही, तोपर्यंत ते प्रीसेट्स प्रभावी ठरतात. SmolVLA प्रशिक्षणाबद्दल लोक विचारत असलेल्या अर्ध्या प्रश्नांची उत्तरे त्यांना माहीत नसलेल्या डिफॉल्टमुळे मिळतात.

सेटिंगlerobot 0.6.1 मधील डिफॉल्टयामध्ये परिभाषित
chunk_size / n_action_steps50 / 50SmolVLAConfig
num_steps (flow matching denoise)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 फ्रेम्स आहेत. दस्तऐवज म्हणतात की हे अंदाजे आकडे आहेत, परंतु ते एक तास आणि एक दिवसाची अपेक्षा करण्यातील फरक दर्शवतात.

सेटअपपॉलिसीबॅचएकूण वेळ
Single L4 / A10G (24 GB)smolvla4सुमारे 3 ते 6 तास
Single A100 40 GBsmolvla16सुमारे 1 ते 2 तास
4 x H100 80 GB with acceleratesmolvla32सुमारे 1 ते 2 तास
Single RTX 4090 / RTX 3090 (24 GB)act8सुमारे 30 ते 60 मिनिटे
--steps निवडण्यापूर्वी इपॉकचे गणित करा

नियम असा आहे की डेटासेटवर 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-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 विरुद्ध SmolVLA त्याच कल्पनेवर अधिक क्षमतेसाठी, आणि GR00T N1.7 विरुद्ध 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. धोरण (policy) अजिबात हलते का? स्थिर हाताने कमी होणाऱ्या लॉसची विशिष्ट कारणे आहेत: लॉस कमी होतो, धोरण काहीही करत नाही.
  4. ते दृश्यातील बदलातून टिकून राहते का? नसल्यास: धोरण (policy) फक्त एकाच सेटअपमध्ये कार्य करते.
  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 आहे. AY-Robots 24 GB टियरवर बॅच 2 पाठवते. स्थानिक पातळीवर 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