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 কমান্ড, প্রকৃত ডিফল্ট, যে ফাঁদগুলি একদিন নষ্ট করে, এবং একটি রানের খরচ কত।

এক স্ক্রিনে স্মলভিএলএ

  • ৪৫০ মিলিয়ন প্যারামিটার, যার মধ্যে প্রায় ১০০ মিলিয়ন একটি ফ্লো ম্যাচিং অ্যাকশন এক্সপার্ট। 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প্রায় ৪৫০ Mpaper
Action expertপ্রায় ১০০ M, ফ্লো ম্যাচিংpaper
VLM backboneHuggingFaceTB/SmolVLM2-500M-Video-Instructvlm_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
লাইট 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-এ ক্র্যাশ করে। একবার রেকর্ড করুন, পরে মডেল তুলনা করার পরিকল্পনা করুন, এবং আপনাকে একভাবে বা অন্যভাবে রূপান্তর করতে হবে: 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 ডিফল্ট হল 580.65 এর ড্রাইভার ফ্লোর সহ একটি cu130 হুইল, তাই একটি পুরানো ড্রাইভারে প্রথমে 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 প্রথম পাস
--policy.scheduler_decay_stepsকোসাইন ক্ষয় দৈর্ঘ্য, প্রিসেট 30000শুধুমাত্র 30000-এর উপরে কার্যকর
--policy.use_ampমিশ্র নির্ভুলতা; SmolVLA-এর কোনো dtype ক্ষেত্র নেইমেমরি কম হলে true
--num_workersডেটা লোডার প্রক্রিয়া, ডিফল্ট 4data_s বাড়া বন্ধ না হওয়া পর্যন্ত বাড়ান
--dataset.eval_splitপ্রতিটি কাজের জন্য ধরে রাখা পর্বের ভগ্নাংশ0.1, with --eval_steps
--policy.freeze_vision_encoderভিশন টাওয়ারকে ফ্রিজ করে রাখে24 GB-তে true
--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
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-তে ফিট করে। একটি চার-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)smolvla4about 3 to 6 h
Single A100 40 GBsmolvla16about 1 to 2 h
4 x H100 80 GB with acceleratesmolvla32about 1 to 2 h
Single RTX 4090 / RTX 3090 (24 GB)act8about 30 to 60 min
--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 parameters, প্রতি অ্যাকশন স্টেপে 20 ms, কোনো ভাষা কন্ডিশনিং নেই। এই পাঁচটি আছে পলিসি পৃষ্ঠায়; অ্যারেনায় 85টি মডেল এবং 332টি বেঞ্চমার্ক ফলাফল রয়েছে।

AY-Robots পলিসি তুলনা: parameters, GPU tier, latency, minimum episodes
একটি রান নির্ধারণকারী চারটি সংখ্যা।

কিছু স্কেল করার আগে আপনার চেকলিস্ট

  1. lr কি তার 2.5e-6 ফ্লোরে পৌঁছেছে? 30000 স্টেপের নিচে lerobot ক্ষয়কে পুনরায় স্কেল করে এবং স্টার্টআপে তা জানায়; এর উপরে, --policy.scheduler_decay_steps নিজে সেট করুন।
  2. একের বেশি চেকপয়েন্ট, এবং --dataset.eval_split দিয়ে এপিসোডগুলি আলাদা করে রাখা হয়েছে যাতে ইভাল লসের একটি অর্থ থাকে।
  3. পলিসি কি আদৌ নড়াচড়া করে? একটি গতিহীন হাতের সাথে লস কমে যাওয়া কিছু নির্দিষ্ট কারণের জন্য হয়: লস কমে, পলিসি কিছু করে না
  4. এটি কি দৃশ্যের পরিবর্তন সহ্য করে? যদি না করে: পলিসি শুধুমাত্র একটি সেটআপে কাজ করে
  5. আপনি কি সিডটি লিখে রেখেছেন? lerobot ডিফল্টরূপে 1000 ব্যবহার করে, তাই দুটি অপরিবর্তিত রান তুলনীয় থাকে।
  6. শুধুমাত্র তখনই: আরও এপিসোড, আরও বৈচিত্র্য, অথবা একটি বড় মডেল। এই ক্রমেই।

এই মডেলগুলি কেন বিদ্যমান এবং ভাষার ইনপুট দিয়ে তারা কী করে, তার জন্য, হল পটভূমি; অ্যাসেম্বলি চালায় থেকে প্রথম রান পর্যন্ত। সমাপ্ত চেকপয়েন্টের জন্য, ; যদি হাতটি কখনও না আসে, ।

আপনার নিজের হাতে 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 ফ্লোরে রাখে।

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started