পাঁচটি পলিসি সারি এবং চারটি রোবট আর্ম কলাম সহ AY-Robots প্রশিক্ষণ ম্যাট্রিক্স, প্রতিটি সেল একটি নির্দিষ্ট মডেল এবং আর্ম প্রশিক্ষণের নির্দেশিকার সাথে লিঙ্ক করা।
ACTSO-100lerobotঅনুকরণ শিক্ষাপলিসি প্রশিক্ষণ

শুরু থেকে SO-100-এ ACT-কে কীভাবে প্রশিক্ষণ দেবেন

AY-Robots ResearchAugust 23, 202616 মিনিট পড়া

lerobot ব্যবহার করে SO-100-এ শুরু থেকে একটি Action Chunking Transformer-কে প্রশিক্ষণ দিন: act config, chunk_size এবং n_action_steps, 100000 ধাপের সময়সূচী, 20 ms ইনফারেন্স।

SO-100 নীতিগুলির মধ্যে ACT একটি ব্যতিক্রম। GR00T N1.7 এবং N1.5 শুরু হয় nvidia/GR00T-N1.7-3B এবং nvidia/GR00T-N1.5-3B, Pi0.5 থেকে lerobot/pi05_base। ACT শূন্য থেকে শুরু হয়: এর কোনো বেস চেকপয়েন্ট নেই, কারণ এটি কোনো ফাউন্ডেশন মডেল নয়। এটি প্রায় 80 মিলিয়ন প্যারামিটার বিশিষ্ট একটি ট্রান্সফরমার যা আপনি একটি নির্দিষ্ট কাজ, আপনার রোবটের বাহু এবং আপনার আলোর অধীনে স্ক্র্যাচ থেকে প্রশিক্ষণ দেন।

এ কারণেই এটি 20 ms-এ একটি নিয়ন্ত্রণ ধাপ চালায়, যেখানে একটি 3 বিলিয়ন প্যারামিটার VLA-এর জন্য 152 থেকে 485 ms প্রয়োজন হয় এবং প্রতি রানে 4 থেকে 12 USD-এর পরিবর্তে 1 থেকে 3 USD খরচ হয়। এই নির্দেশিকাটি ম্যানুয়াল পদ্ধতি অনুসরণ করে lerobot একটি SO-100-এ: রেকর্ড, act কনফিগ, কী chunk_size এবং n_action_steps নিয়ন্ত্রণ করে, 100000 ধাপের সময়সূচী, রোলআউট। তারপর AY-Robots-এ একই কাজ, যেখানে প্ল্যাটফর্ম সাহায্য করে না সেই ক্ষেত্রগুলি সহ।

যা আপনার জানা দরকার

  • ACT স্ক্র্যাচ থেকে প্রশিক্ষণ নেয়: কোনো বেস মডেল নেই, কোনো প্রিট্রেয়িং নেই, কোনো ভাষার ইনপুট নেই। একটি চেকপয়েন্ট, একটি কাজ।
  • গবেষণাপত্র: প্রায় 80 মিলিয়ন প্যারামিটার, একটি 11 GB RTX 2080 Ti-তে প্রায় 5 ঘন্টা, 0.01 সেকেন্ড ইনফারেন্স।
  • lerobot-এর ডিফল্ট: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 ধাপ, seed 1000।
  • AY-Robots-এ: প্রতি ধাপে 20 ms, পাঁচটির মধ্যে দ্রুততম। সর্বনিম্ন 50 এপিসোড, LeRobot v3.0, একটি 24 GB কার্ড, প্রতি রানে 1 থেকে 3 USD।
  • এটি যে কাজটি দেখেছে তাতে জয়ী হয়, এবং যখনই আপনি ভাষা কন্ডিশনিং চান তখনই হেরে যায়।
কোন সংস্করণগুলি এটি বর্ণনা করে

23 আগস্ট 2026 তারিখে lerobot-এর বিপরীতে যাচাই করা হয়েছে 0.6.x: pyproject.toml on main reads version = "0.6.2", newest tag v0.6.1, 3 আগস্ট 2026। একটি টিউটোরিয়াল যা python lerobot/scripts/train.py দিয়ে শুরু হয় তা কনসোল এন্ট্রি পয়েন্টগুলির পূর্ববর্তী lerobot-train, lerobot-record এবং lerobot-rollout

ACT আসলে কী

অ্যাকশন চাংকিং উইথ ট্রান্সফরমার্স (ACT) ALOHA পেপার থেকে এসেছে, কম খরচের হার্ডওয়্যার দিয়ে সূক্ষ্ম দ্বিপাক্ষিক ম্যানিপুলেশন শেখা, ঝাও, কুমার, লেভিন এবং ফিন দ্বারা, arXiv, 23 এপ্রিল 2023। রিগটি 50 Hz এ রেকর্ড করে চারটি ওয়েবক্যাম 30 fps এ 480x640 স্ট্রিম করে: দুটি গ্রিপারগুলিতে, একটি উপরে, একটি সামনে। অ্যাবস্ট্রাক্টটি 10 মিনিটের প্রদর্শনী থেকে 80 থেকে 90 শতাংশ সাফল্যের সাথে ছয়টি দক্ষতার দাবি করে, যার মধ্যে একটি স্বচ্ছ মশলা কাপ খোলা এবং একটি ব্যাটারি স্লট করা।

রেকর্ডিং সেশন পরিকল্পনা করার সময় মূল অংশটি আরও কার্যকর: প্রতি টাস্কে 50টি প্রদর্শনী, থ্রেড ভেলক্রো 100টি ছাড়া, যা 10 থেকে 20 মিনিটের ডেটা এবং রিসেট গণনা করার পর 30 থেকে 60 মিনিটের ওয়াল-ক্লক সময়। সাফল্যও একরকম নয়: থ্রেড ভেলক্রো 20 শতাংশে শেষ হয়, পুট অন শু 92, কাপ ওপেন 84, প্রেপ টেপ 64।

হাইপারপ্যারামিটারALOHA পেপার, সারণী IIIlerobot অন মেইন
লার্নিং রেট1e-5optimizer_lr = 1e-5
ব্যাচ সাইজ8batch_size = 8, in TrainPipelineConfig not ACTConfig
এনকোডার / ডিকোডার লেয়ার4 / 7n_encoder_layers = 4 / n_decoder_layers = 1
চাঙ্ক সাইজ k100chunk_size = 100
z এর ল্যাটেন্ট ডিমেনশনঅনুপস্থিত; চিত্র 11 একটি 32 থেকে 512 প্রজেকশন দেখায়latent_dim = 32
টেম্পোরাল এনসেম্বলিংঅনুপস্থিত; রেফারেন্স কোডে --temporal_aggtemporal_ensemble_coeff = None
ডিকোডার লেয়ারের সারিটি কোনো টাইপো নয়

গবেষণাপত্রে ৭টি ডিকোডার লেয়ারের কথা উল্লেখ করা হয়েছে, lerobot ইচ্ছাকৃতভাবে ১টি ব্যবহার করে। configuration_act.py-এর কমেন্টে বলা হয়েছে যে মূল বাস্তবায়নে একটি বাগ ছিল যার অর্থ শুধুমাত্র প্রথম লেয়ারটি ব্যবহৃত হয়, tonyzhaozh/act-এর ইস্যু ২৫ উল্লেখ করে: অ্যাকশন হেড hs[0] পড়ে, তাই সাতটি লেয়ারই চলে কিন্তু শুধুমাত্র প্রথম আউটপুট ভবিষ্যদ্বাণীতে পৌঁছায়। সেই ইস্যুটি ২৩ এপ্রিল ২০২৪ থেকে খোলা এবং উত্তরহীন। lerobot প্রকাশিত ফলাফল তৈরি করা আচরণকে অনুসরণ করে, মুদ্রিত সংখ্যাকে নয়। --policy.n_decoder_layers বাড়ালে আপনি এমন একটি মডেলকে প্রশিক্ষণ দেবেন যা গবেষণাপত্রটি কখনও মূল্যায়ন করেনি।

অ্যাকশন চাংকিংই মূল ধারণা

সাধারণ আচরণগত ক্লোনিং একটি পর্যবেক্ষণকে একটি অ্যাকশনে ম্যাপ করে, এবং ত্রুটিগুলি জমা হয়: একটি বিচ্যুতি হাতকে বিতরণ থেকে সরিয়ে দেয়, একটি খারাপ অ্যাকশন তৈরি করে, এবং ত্রিশ ধাপ পরে গ্রিপার বস্তুর কাছাকাছিও থাকে না। অ্যাকশন চাংকিং একবারে k সংখ্যক অ্যাকশন ভবিষ্যদ্বাণী করে এবং সেগুলিকে কার্যকর করে, কার্যকর দিগন্তকে k গুণ কমিয়ে দেয়। এটি মানুষের ডেটার জন্য নির্দিষ্ট একটি উপদ্রবও পরিচালনা করে: টেলিঅপারেটররা বিরতি নেয়, এবং একটি একক-ধাপের মার্কোভিয়ান পলিসি আগের ঘটনার উপর নির্ভরশীল একটি বিরতিকে মডেল করতে পারে না।

গবেষণাপত্রটি k-কে জোর দিয়ে বলার পরিবর্তে এটিকে অ্যাবলেট করে। টেম্পোরাল এনসেম্বলিং বন্ধ রেখে, চারটি সেটিংসে গড় করে, k = 1 এ সাফল্যের হার 1 শতাংশ থেকে k = 100 এ 44 শতাংশে উন্নীত হয়, তারপর পলিসি ওপেন-লুপ নিয়ন্ত্রণের কাছাকাছি আসার সাথে সাথে 200 এবং 400 এ কমে যায়। এই বক্ররেখাটিই ডিফল্ট 100 হওয়ার কারণ।

  • chunk_size: ডিকোডার প্রতি ফরোয়ার্ড পাসে কতগুলি ভবিষ্যৎ অ্যাকশন অনুমান করে। ডিফল্ট 100।
  • n_action_steps: আবার কোয়েরি করার আগে আপনি সেগুলির মধ্যে কতগুলি কার্যকর করেন। ডিফল্ট 100, তাই lerobot পুরো চাঙ্কটি ওপেন লুপে চালায়।
  • lerobot `n_action_steps <= chunk_size` যাচাই করে এবং যদি আপনি এটি উল্টোভাবে দেন তবে একটি `ValueError` উত্থাপন করে।

কার্যকরীভাবে যা গুরুত্বপূর্ণ তা হল chunk_size কে ফ্রেম রেট দ্বারা ভাগ করা। lerobot-এর SO-100 উদাহরণগুলিতে ব্যবহৃত 30 fps-এ, 100-এর একটি চাঙ্ক একটি পর্যবেক্ষণ থেকে প্রায় 3.3 সেকেন্ডের জন্য কাজ করে। যদি কাজটি সেই উইন্ডোর মধ্যে একটি সংশোধনের প্রয়োজন হয়, তবে n_action_steps কমান, chunk_size নয়: আপনি দীর্ঘ পূর্বাভাস বজায় রাখেন এবং আরও ঘন ঘন পুনরায় পর্যবেক্ষণ করেন।

bash
# predict 100 actions, re-query after 25 of them (about 0.8 s at 30 fps)
lerobot-train \
  --dataset.repo_id=${HF_USER}/so100_cube \
  --policy.type=act \
  --policy.chunk_size=100 \
  --policy.n_action_steps=25 \
  --policy.device=cuda
পূর্বাভাস ছোট না করে চাঙ্কের কার্যকর অংশ ছোট করা।
টেম্পোরাল এনসেম্বলিং ফাঁদ

--policy.temporal_ensemble_coeff সেট করুন এবং lerobot-এর জন্য n_action_steps = 1 প্রয়োজন, অন্যথায় NotImplementedError উত্থাপন করে। এনসেম্বলিং প্রতিটি টাইমস্টেপে নীতিকে কোয়েরি করে এবং সেই টাইমস্টেপের জন্য ওভারল্যাপিং পূর্বাভাসগুলিকে w_i = exp(-m * i) ওজন দিয়ে মিশ্রিত করে, যেখানে সবচেয়ে পুরানোটি w_0 পায়। গবেষণাপত্রটি ACT-এর জন্য এটিকে 3.3 শতাংশে রাখে: বাস্তব কিন্তু পরিমিত, এবং এটি ইনফারেন্স গণনাকে চাঙ্কের দৈর্ঘ্য দ্বারা গুণ করে। প্রতি ধাপে 20 ms-এ সাশ্রয়ী, 485 ms-এ নয়। দেখুন ইনফারেন্স ল্যাটেন্সি

যখন ACT একটি ফাউন্ডেশন মডেলকে হারায়

পাঁচটি প্রশিক্ষণযোগ্য নীতি পাশাপাশি, AY-Robots যে সংখ্যাগুলি পরিমাপ করে এবং তার ভাড়া করা GPU-এর আকার নির্ধারণ করতে ব্যবহার করে।

নীতিপরিবারপ্যারামিটারপ্রতি ধাপেGPU স্তরসর্বনিম্ন পর্বডেটা সেট
ACTস্ক্র্যাচ থেকে চাঙ্কিং ট্রান্সফরমার~80 M20 msRTX 4090 / 24 GB50LeRobot v3.0
SmolVLAকমপ্যাক্ট VLA~450 M245 msRTX 4090 / 24 GB30LeRobot v3.0
GR00T N1.7VLA ফাউন্ডেশন, ডিফিউশন হেড~3 B (~40 M trained)152 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
GR00T N1.5VLA ফাউন্ডেশন, পূর্বসূরি~3 B165 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
Pi0.5ফ্লো-ম্যাচিং VLA, দেখুন ফ্লো ম্যাচিং~3 B, PaliGemma backbone485 msA100 / H100 80 GB50LeRobot v3.0
The AY-Robots policies page showing a comparison table of ACT, SmolVLA, GR00T N1.5, GR00T N1.7 and Pi0.5 with parameter counts, GPU requirements, inference latency and minimum episode counts
The /policies table: ACT has the smallest parameter count and the shortest step time.
প্রথম থেকে ACT প্রশিক্ষণ
সুবিধাসমূহ
  • প্রতি অ্যাকশন স্টেপে ২০ ms, পাঁচটি পদ্ধতির মধ্যে দ্রুততম, একটি ২৪ GB কার্ডে, A100-এ নয়।
  • প্রতি রানে ১ থেকে ৩ USD, যেখানে ৩ B ক্লাসের জন্য ৪ থেকে ১২ USD।
  • এটি যে কন্টাক্ট-রিচ কাজ দেখেছে তাতে নির্ভুল: স্লাইড জিপলক এবং স্লট ব্যাটারিতে ৮৮ এবং ৯৬ শতাংশ, যেখানে পূর্ববর্তী পদ্ধতিগুলি প্রথম পর্যায়ও অতিক্রম করতে পারেনি।
বিনিময়
  • কোনো ভাষা কন্ডিশনিং নেই: টাস্ক স্ট্রিং উপেক্ষা করা হয়, তাই একটি চেকপয়েন্ট একটি টাস্ক।
  • কোনো সিমান্টিক পূর্বধারণা নেই: এটি যা কিছু জানে তা আপনার ৫০টি এপিসোড থেকে এসেছে।
  • সংকীর্ণ সাধারণীকরণ: একটি ক্যামেরা সরালে আপনাকে পুনরায় প্রশিক্ষণ দিতে হবে।
  • এটি নীরবে ব্যর্থ হয়: লস কমে যায়, বাহু কিছুই করে না, লগগুলিতে কিছু বলা হয় না।
  • গতির সুবিধা তখনই কাজে লাগে যদি ইনফারেন্স সার্ভোগুলির পাশেই থাকে।

যখন টাস্ক এবং দৃশ্য স্থির থাকে এবং গতি দ্রুত ও নির্ভুল হতে হয়, তখন ACT বেছে নিন। একটি যখন একটি চেকপয়েন্টকে একাধিক নির্দেশনা কভার করতে হয়, তখন একটি ভিশন-ল্যাঙ্গুয়েজ-অ্যাকশন মডেল বেছে নিন। দুটি পৃষ্ঠা এই সিদ্ধান্তকে মুখোমুখি তুলনা করে: এবং । প্রকাশিত বেঞ্চমার্কের জন্য, প্রতিটি সংখ্যাকে তার উৎসের সাথে সংযুক্ত করে।

শুরু করার আগে আপনার যা প্রয়োজন

একটি ফলোয়ার আর্ম, একটি লিডার আর্ম , কমপক্ষে একটি ক্যামেরা, একটি ২৪ GB GPU। ACT শুধুমাত্র ছবি এবং জয়েন্ট পজিশন পড়ে। দুটি ক্যামেরা হল আদর্শ: জিনিসগুলি কোথায় আছে তার জন্য একটি স্থির সামনের দৃশ্য, এবং কী স্পর্শ করতে চলেছে তার জন্য একটি রিস্ট ক্যামেরা, যেমন ALOHA-তে।

আর্মসার্ভোভোল্টেজযন্ত্রাংশের খরচস্থিতি
SO-100Feetech STS32157.4 V~110 to 150 EURসম্পূর্ণ সমর্থন, রেফারেন্স আর্ম
SO-101Feetech STS32157.4 V~130 to 170 EURসম্পূর্ণ সমর্থন
Koch v1.1Dynamixel XL330 / XL4305 V and 12 V rails~250 to 350 EURসামঞ্জস্যপূর্ণ
LeKiwiFeetech STS3215 (arm)7.4 V arm, 12 V base~400 to 500 EURসামঞ্জস্যপূর্ণ
7.4 V, 12 V নয়

SO-100 এবং SO-101 Feetech STS3215 সার্ভো 7.4 V রেলে চলে। এগুলিতে 12 V সরবরাহ করলে সেগুলি নষ্ট হয়ে যায়, এতটাই নীরবে যে লোকেরা প্রথমে সফটওয়্যারকে দোষারোপ করে, এবং একটি Koch 12 V সরবরাহ SO-100 বোর্ডের সাথে শারীরিকভাবে সামঞ্জস্যপূর্ণ। লেবেলটি পরীক্ষা করুন। লক্ষণ: সার্ভো সাড়া দিচ্ছে না, আর্ম কাঁপে তারপর ঝুলে যায়। এছাড়াও SO-100 বনাম SO-101

খালি আর্ম থেকে রেকর্ড করা ডেটাসেট পর্যন্ত

নিচের ফ্লোটি হল lerobot 0.6.x। আপনার কাছে যদি একটি ক্যালিব্রেটেড আর্ম এবং একটি ডেটাসেট থাকে তবে এটি এড়িয়ে যান। অন্যথায় SO-100 শুরু করার নির্দেশিকা অ্যাসেম্বলি কভার করে, রেকর্ডিং ওয়াকথ্রু ক্যাপচার কভার করে এবং ডেটাসেট ডকুমেন্টেশন ফরম্যাটটি কভার করে।

  1. 1
    সঠিক এক্সট্রা সহ lerobot ইনস্টল করুন

    রেকর্ডিংয়ের জন্য core_scripts, প্রশিক্ষণের জন্য training, Feetech সার্ভোর জন্য feetech প্রয়োজন। পাইথন 3.12+।

    bash
    conda create -y -n lerobot python=3.12
    conda activate lerobot
    conda install ffmpeg -c conda-forge
    
    pip install 'lerobot[core_scripts,training,feetech]'
    lerobot-info
  2. 2
    প্রতিটি হাতের USB পোর্ট খুঁজুন

    উভয় হাত সংযুক্ত রেখে এটি চালান, প্রম্পট করা হলে একটি খুলে ফেলুন। লিনাক্সে আপনার নোড পারমিশন খুলতে হতে পারে।

    bash
    lerobot-find-port
    # on Linux, if the port exists but is unreadable:
    sudo chmod 666 /dev/ttyACM0
  3. 3
    মোটর আইডি এবং বাউডরেট সেট করুন

    SO-100-এ এটি অ্যাসেম্বলির আগে ঘটে: SO-101-এর বিপরীতে, একবার তৈরি হয়ে গেলে কানেক্টরগুলি নাগালের বাইরে থাকে। স্ক্রিপ্টটি গ্রিপার থেকে একবারে একটি মোটর করে বাস বরাবর চলে, EEPROM-এ আইডি লেখে।

    bash
    lerobot-setup-motors \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0
    
    lerobot-setup-motors \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1
  4. 4
    উভয় হাত ক্যালিব্রেট করুন

    প্রতিটি জয়েন্টকে তার পরিসরের মাঝখানে সেট করুন, এন্টার চাপুন, তারপর প্রতিটি জয়েন্টকে তার সম্পূর্ণ পরিসরের মধ্য দিয়ে সুইপ করুন। ক্যালিব্রেশন একটি হাতে প্রশিক্ষিত নীতিকে অন্য হাতে চালাতে দেয়। একই id পুনরায় ব্যবহার করুন।

    bash
    lerobot-calibrate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower
    
    lerobot-calibrate \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader
  5. 5
    ক্যামেরা চালু রেখে একবার টেলিঅপারেট করুন

    lerobot-এর সাধারণ নিয়ম: আপনার শুধুমাত্র ক্যামেরার ছবি দেখে কাজটি করতে সক্ষম হওয়া উচিত। যদি আপনি না পারেন, ACT-ও পারবে না। এটি পরবর্তী ডিবাগিংয়ের চেয়ে বেশি খারাপ ডেটাসেট ধরে ফেলে।

    bash
    lerobot-teleoperate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower \
        --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader \
        --display_data=true
  6. 6
    50টি পর্ব রেকর্ড করুন

    50 হল AY-Robots-এর ন্যূনতম এবং ALOHA প্রতি টাস্কে যা ব্যবহার করত। lerobot প্রতি অবজেক্ট লোকেশনে 10টি, ক্যামেরা স্থির রেখে, গ্রাস্প সামঞ্জস্যপূর্ণ রাখার পরামর্শ দেয়। n একটি পর্ব শেষ করে, r পুনরায় রেকর্ড করে, q থামায় এবং এনকোড করে।

    bash
    HF_USER=$(NO_COLOR=1 hf auth whoami | awk -F': *' 'NR==1 {print $2}')
    
    lerobot-record \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower \
        --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader \
        --dataset.repo_id=${HF_USER}/so100_cube \
        --dataset.num_episodes=50 \
        --dataset.single_task="Grab the black cube and put it in the bin" \
        --display_data=true
AY-Robots রেকর্ডিং টিউটোরিয়াল পৃষ্ঠা যেখানে একটি টেলিঅপারেশন সেশন থেকে কীভাবে একটি LeRobot-ফরম্যাট ডেটাসেট ক্যাপচার করতে হয় তা ব্যাখ্যা করা হয়েছে।
রেকর্ডিং টিউটোরিয়াল। ডেস্কটপ ক্লায়েন্ট lerobot-record-এর মতো একই লেআউট লেখে।
যে ফাঁদটি একটি দিন খেয়ে ফেলে: একটি অসঙ্গতিপূর্ণ ডেটাসেট

ACT-এর ফিরে যাওয়ার মতো কোনো পূর্বধারণা নেই, তাই প্রতিটি অসঙ্গতি স্থায়ী হয়ে যায়। তিনটি সবচেয়ে ব্যয়বহুল: পর্ব 20 এবং 21 এর মধ্যে একটি ক্যামেরা সামান্য নড়ে যাওয়া, বিকেলে অর্ধেক সেট রেকর্ড করার কারণে আলোর পরিবর্তন, একটি গ্রাস্প দুইভাবে করা। প্রতিটি একটি নিখুঁত-দেখা লস কার্ভ এবং একটি হাত যা ভুল জায়গায় যায় তা দেয়। দেখুন লস কমে, নীতি কিছু করে না, নীতি শুধুমাত্র একটি সেটআপে কাজ করে এবং উচ্চ মানের প্রশিক্ষণ ডেটা সংগ্রহ করা

প্রশিক্ষণের আগে, অন্তত পাঁচটি পর্ব পুনরায় চালান। ক্যামেরা স্ট্রিম, জয়েন্ট স্টেট এবং অ্যাকশন প্রতি সংরক্ষণ করে, এবং রিপ্লে সেই অ্যাকশনগুলিকে হাতের দিকে ঠেলে দেয়। যদি রিপ্লে কাজটি না করে, তবে ডেটাতে এটি থাকে না এবং প্রশিক্ষণ এটি উদ্ভাবন করবে না।

bash
lerobot-replay \
    --robot.type=so100_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_follower \
    --dataset.repo_id=${HF_USER}/so100_cube \
    --dataset.episode=0
এপিসোড 0 রিপ্লে করা হচ্ছে। যদি এটি ব্যর্থ হয়, তাহলে থামুন এবং পুনরায় রেকর্ড করুন।

ACT পলিসি প্রশিক্ষণ

এটি সম্পূর্ণ কমান্ড। ACT-নির্দিষ্ট সবকিছুই ইতিমধ্যেই ডিফল্ট, এই কারণেই lerobot ACT পৃষ্ঠা তাদের দিয়ে শুরু করতে বলে।

bash
lerobot-train \
  --dataset.repo_id=${HF_USER}/so100_cube \
  --policy.type=act \
  --output_dir=outputs/train/act_so100_cube \
  --job_name=act_so100_cube \
  --policy.device=cuda \
  --wandb.enable=true \
  --policy.repo_id=${HF_USER}/act_so100_cube
lerobot 0.6.x ডকুমেন্টেশন থেকে প্রশিক্ষণ কমান্ড, একটি SO-100 ডেটাসেটে।

--policy.type=act ACTConfig লোড করে, যা আপনার ডেটাসেটে রেকর্ড করা মোটর এবং ক্যামেরার সংখ্যার সাথে খাপ খাইয়ে নেয়, তাই আপনাকে পর্যবেক্ষণের আকার ঘোষণা করতে হয় না। --wandb.enable=true ঐচ্ছিক এবং এর মূল্য আছে: 100000 ধাপের একটি রানে লস কার্ভই একমাত্র সস্তা সংকেত। শিডিউলটি lerobot-এর ট্রেন কনফিগ থেকে আসে, ACTConfig থেকে নয়: 100000 ধাপ, ব্যাচ 8, সিড 1000, একটি চেকপয়েন্ট প্রতি 20000 ধাপে একটি, এবং প্রতি 200 ধাপে লগিং।

একটি সম্পূর্ণ রান পাঁচটি চেকপয়েন্ট ডিরেক্টরি রেখে যায়, 020000 থেকে 100000 পর্যন্ত, সাথে একটি শেষ সিমলিঙ্ক। সবগুলি রাখুন: সেরা নীতিটি প্রায়শই শেষটি হয় না।

সেটিংlerobot ডিফল্টAY-Robots ACT ফর্মমন্তব্য
ব্যাচ সাইজ88VRAM সীমাবদ্ধতায় পৌঁছালে প্রথমে এটি কমান।
লার্নিং রেট1e-51e-5ALOHA পেপারের মতোই।
সর্বোচ্চ ধাপ100000100000প্রায় 50 এপিসোডের একটি সেট যেখানে উন্নতি বন্ধ করে।
গ্রেডিয়েন্ট অ্যাকুমুলেশন11, does not applyএর পরিবর্তে ব্যাচ সাইজ পরিবর্তন করুন।
সিড1000exposedGR00T-এর টাইরো এন্ট্রি পয়েন্টে কোনো সিড নেই; ACT রানগুলি পুনরাবৃত্তিযোগ্য।
chunk_size / n_action_steps100 / 100100 / 100, editableপূর্বাভাস এবং এক্সিকিউশন দিগন্ত। দ্বিতীয়টি কমান, প্রথমটি নয়।
চেকপয়েন্ট ফ্রিকোয়েন্সি20000not exposedএখানে saveSteps একটি GR00T নব।
মেমরি শেষ হওয়া একটি ব্যাচ সাইজের সমস্যা, কার্ডের সমস্যা নয়

8 ব্যাচ সাইজে দুটি 640x480 ক্যামেরা সহ ACT 24 GB-তে স্বাচ্ছন্দ্যে ফিট করে। যখন লোকেরা গতির জন্য ব্যাচ সাইজ বাড়ায়, অথবা একটি lerobot রেকর্ডিং উদাহরণে দেখানো 1920x1080 ফ্রেম ফিড করে, তখন এটি ফিট হওয়া বন্ধ করে দেয়। 1080p-তে দুটি ResNet-18 ব্যাকবোন একটি সম্পূর্ণ ভিন্ন মেমরি প্রোফাইল। একটি বড় কার্ড ভাড়া করার আগে --batch_size 4-এ নামিয়ে আনুন। দেখুন প্রশিক্ষণে মেমরি শেষ হওয়া

সময়কাল: পেপারে একটি 11 GB RTX 2080 Ti-তে প্রায় 5 ঘন্টা, lerobot-এর ACT পৃষ্ঠা অনুযায়ী 100k স্টেপের জন্য কয়েক ঘন্টা, AY-Robots 24 GB টায়ারে 2 থেকে 5 ঘন্টা। এটি সংক্ষিপ্ত করবেন না। রেফারেন্স রেপোর README বলে যে একটি ঝাঁকুনিপূর্ণ বা থেমে থেমে চলা পলিসির সাধারণত আরও প্রশিক্ষণ, কারণ লস প্লেটোতে পৌঁছানোর পরেও সাফল্য এবং মসৃণতা উন্নত হতে থাকে: বাস্তব-বিশ্বের ডেটার জন্য এটি কমপক্ষে 5000 ইপোক চায়, অথবা প্লেটোর পরে আরও 3 থেকে 4 গুণ বেশি সময়।

bash
lerobot-train \
  --config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
  --resume=true
এর শেষ চেকপয়েন্ট থেকে একটি বাধাগ্রস্ত রান পুনরায় শুরু করা হচ্ছে।

প্রশিক্ষিত পলিসিটি বাহুতে চালানো হচ্ছে

ডিপ্লয়মেন্ট ব্যবহার করে lerobot-rollout। ক্যামেরা কীগুলি রেকর্ড করা কীগুলির সাথে মিলতে হবে: একটি পলিসি যা front এবং wrist এর উপর প্রশিক্ষিত, সেটি cam0 এবং cam1 গ্রহণ করবে না, এবং rename_map সাহায্য করে না, কারণ এটির একটি প্রিট্রেইনড চেকপয়েন্ট প্রয়োজন। টাস্ক স্ট্রিং বাদ দেওয়া যেতে পারে; lerobot-এর নিজস্ব উদাহরণে ACT-এর জন্য এটিকে স্কিপযোগ্য হিসাবে চিহ্নিত করা হয়েছে।

bash
lerobot-rollout \
  --strategy.type=base \
  --policy.path=${HF_USER}/act_so100_cube \
  --robot.type=so100_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.id=my_follower \
  --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
  --display_data=true \
  --duration=60
রেকর্ডিং ছাড়া স্বায়ত্তশাসিত রোলআউট। মূল্যায়ন পর্বগুলি রেকর্ড করতে --strategy.type=sentry ব্যবহার করুন।
এই কমান্ডটির সম্প্রতি নাম পরিবর্তন করা হয়েছে, তাই পুরনো টিউটোরিয়ালগুলিতে ভিন্নতা দেখা যায়

মূল্যায়ন lerobot-record --policy.path=... এর মাধ্যমে চলত। 0.6.x সংস্করণে এটি lerobot-rollout একটি --strategy.type নির্বাচক সহ: base, sentry (স্বয়ংক্রিয় আপলোড সহ রেকর্ডিং), highlight (কিস্ট্রোক দ্বারা সংরক্ষিত রিং বাফার), dagger (লুপে মানুষ) এবং episodic। 23 আগস্ট 2026 পর্যন্ত ACT ডকুমেন্টেশন পৃষ্ঠায় এখনও বলা আছে "using the lerobot-record command" সরাসরি একটি ব্লকের উপরে যা lerobot-rollout চালায়। কমান্ডটি অনুসরণ করুন, বাক্যটি নয়।

চূড়ান্ত মডেলের পরিবর্তে একটি চেকপয়েন্ট পিন করতে, যোগ করুন --policy.pretrained_revision। এর জন্য রানটি শুরু হতে হবে --save_checkpoint_to_hub=true, ডিফল্টরূপে বন্ধ: এটি ছাড়া lerobot শুধুমাত্র চূড়ান্ত মডেলটি পুশ করে এবং অন্য কিছু নয়। এটি সহ, প্রতিটি চেকপয়েন্ট তার শূন্য-প্যাড করা ধাপ দিয়ে ট্যাগ করা হয়, তাই --policy.pretrained_revision=060000 60000 ধাপের চেকপয়েন্টটি পুনরুদ্ধার করে। আসল আর্মের উপর 100000 এর সাথে এর তুলনা করা সবচেয়ে সস্তা পরীক্ষা।

একই চেকপয়েন্টে পৌঁছানোর দুটি পথ

উপরের সবকিছুই ম্যানুয়াল পদ্ধতি এবং এটি কাজ করে। প্ল্যাটফর্ম পদ্ধতিটি একটি GPU বা পাইথন পরিবেশের মালিকানা না থাকার বিনিময়ে নিয়ন্ত্রণ ত্যাগ করে।

  1. core_scripts, training, feetech, ffmpeg সহ lerobot 0.6.x ইনস্টল করুন।
  2. পোর্ট খুঁজুন, মোটর আইডি সেট করুন, উভয় বাহু ক্যালিব্রেট করুন, 50টি এপিসোড রেকর্ড করুন।
  3. ডেটাতে কাজটি আছে কিনা তা নিশ্চিত করতে কয়েকটি এপিসোড রিপ্লে করুন।
  4. একটি 24 GB GPU ভাড়া করুন বা নিজের কাছে রাখুন, CUDA এবং PyTorch এর সাথে মিলিয়ে নিন, lerobot-train --policy.type=act চালান।
  5. কয়েক ঘন্টা অপেক্ষা করুন, তারপর বাহুর কাছে থাকা মেশিনে lerobot-rollout চালান।
bash
# the two commands that matter, end to end
lerobot-record --robot.type=so100_follower --robot.port=/dev/ttyACM0 \
  --teleop.type=so100_leader --teleop.port=/dev/ttyACM1 \
  --dataset.repo_id=${HF_USER}/so100_cube --dataset.num_episodes=50 \
  --dataset.single_task="Grab the black cube"

lerobot-train --dataset.repo_id=${HF_USER}/so100_cube --policy.type=act \
  --output_dir=outputs/train/act_so100_cube --policy.device=cuda
এই পদ্ধতি আপনাকে কী দেয়

সম্পূর্ণ নিয়ন্ত্রণ: configuration_act.py সম্পাদনা করুন, একটি ক্যামেরা যোগ করুন, প্রশিক্ষককে ফর্ক করুন। একটি কাজ শিপিং করার পরিবর্তে গবেষণার জন্য, একটি প্ল্যাটফর্ম একটি বিভ্রান্তি।

The AY-Robots training matrix with five policy rows and four robot arm columns, where every cell links to the specific training guide for that model and arm combination
The matrix on /train. The ACT row against the SO-100 column is this article's guide.

আসলে কী ভুল হয়

প্রশিক্ষণ কমান্ডে প্রায় কোনো সমস্যাই থাকে না। সমস্যাগুলি এর চারপাশের জিনিসগুলিতে থাকে, যা প্রথমবার কত ঘন ঘন সমস্যা সৃষ্টি করে তার উপর ভিত্তি করে সাজানো হয়েছে।

লক্ষণসাধারণ কারণপৃষ্ঠা
lerobot-find-port কিছু দেখাচ্ছে নাড্রাইভার, কেবল বা নোড পারমিশনআর্ম শনাক্ত হয়নি
রেকর্ড করার সময় ক্যামেরা অনুপস্থিতরিবুটে সূচক পরিবর্তিত হয়েছে, অথবা একটি USB কন্ট্রোলারে দুটি ক্যামেরাক্যামেরা শনাক্ত হয়নি
প্রশিক্ষণ ডেটাসেট প্রত্যাখ্যান করেACT v3.0 চায়, GR00T-এর v2.1 প্রয়োজনv3 হিসাবে ডেটাসেট প্রত্যাখ্যান করা হয়েছে
CUDA মেমরি শেষব্যাচ সাইজ বাড়ানো হয়েছে, অথবা 480p এর পরিবর্তে 1080p ফ্রেমপ্রশিক্ষণে মেমরি শেষ
লস ভালো দেখাচ্ছে, আর্ম কিছু করছে নাডেটাতে টাস্কের অভাব, অথবা একটি ক্যামেরা সরে গেছেলস কমে, পলিসি কিছু করে না
ঝাঁকুনিপূর্ণ গতি বা পর্বের মাঝখানে বিরতিঅপর্যাপ্ত প্রশিক্ষণ, একটি চাঙ্ক বাউন্ডারি স্টল, অথবা একটি টাইম-আউট ইনফারেন্স কলপলিসি গতির মাঝখানে থেমে যায়

দুটি সারি জোর দেওয়ার মতো। ACT LeRobot v3.0-এ প্রশিক্ষণ নেয় যখন GR00T-এর লোডার এতে ক্র্যাশ করে এবং v2.1 প্রয়োজন হয়, তাই ACT-কে প্রশিক্ষণ দেয় এমন একটি ডেটাসেট GR00T রান ব্যর্থ করতে পারে। এবং শেষ সারিতে দুটি সমাধান রয়েছে: ACT লেখকরা ঝাঁকুনিপূর্ণ গতির উত্তর দেন আরও প্রশিক্ষণের মাধ্যমে, যখন n_action_steps 100-এ একটি আসল স্টল একটি চাঙ্ক বাউন্ডারিতে পড়ে, 30 fps-এ প্রতি 3.3 সেকেন্ডে একটি দৃশ্যমান বিরতি। আরও দুটি বিষয় জানার আছে: একটি একক ডেড জয়েন্ট সাধারণত একটি সার্ভো আইডি যা কখনও লেখা হয়নি, এবং একটি গ্রিপার যা কাছে আসে কিন্তু কখনও বন্ধ হয় না মানে প্রদর্শনীতে গ্রিপার রেঞ্জ খুব কম। সম্পূর্ণ সূচক: ব্যর্থতার মোড পৃষ্ঠাগুলি.

একটি রানের খরচ কত

স্তরমডেলচালানোর সময়প্রতি ঘণ্টার মূল্যপ্রতি রানের খরচ
RTX 4090 / 24 GBACT, SmolVLA২ থেকে ৫ ঘণ্টা0.30 to 0.60 USDপ্রায় ১ থেকে ৩ USD
A100 80 GB / H100GR00T N1.7, GR00T N1.5, Pi0.5৩ থেকে ৬ ঘণ্টা1.20 to 2.00 USDপ্রায় ৪ থেকে ১২ USD

পরে VLA চাইলেও ACT দিয়ে শুরু করার যুক্তি এটাই। একটি ব্যর্থ ACT রানের খরচ এক কাপ কফির দামের সমান এবং কয়েক ঘণ্টার মধ্যেই আপনাকে জানিয়ে দেয় যে আপনার ডেটাসেটে কাজটি আছে কিনা। একটি ব্যর্থ GR00T রানের খরচ একই শিক্ষার জন্য এর চারগুণ। পরবর্তীতে GR00T N1.7 অথবা SmolVLA এ উন্নীত হওয়া একটি ফর্ম পরিবর্তন, পুনর্নির্মাণ নয়। পটভূমি: ভিশন-ল্যাঙ্গুয়েজ-অ্যাকশন মডেল, সম্পূর্ণ SO-100 গাইড, আপনার প্রথম পলিসি প্রশিক্ষণ দিন এবং ইমিটেশন লার্নিং। কোনো আর্ম নেই? লাইভ পৃষ্ঠা একটি আসল SO-100 স্ট্রিম করে যা সাইন আপ না করেই চালানো যায়।

আপনার SO-100 এ ACT প্রশিক্ষণ দিন

এই নির্দিষ্ট সমন্বয়ের জন্য গাইড: ডিফল্ট, GPU স্তর এবং একটি রানের খরচ। ডেটাসেট নির্বাচন করুন, ব্যাকএন্ড কার্ড ভাড়া করে এবং চেকপয়েন্টগুলি লেখে।

প্রশিক্ষণ গাইড খুলুন
একটি প্রাক-প্রশিক্ষিত ACT মডেল আছে যা আমি ফাইন-টিউন করতে পারি?

না। ACT এর কোনো বেস মডেল নেই; এটি শুধুমাত্র আপনি প্রশিক্ষণ দেওয়ার পরেই বিদ্যমান থাকে। এটি টুলিংয়ের কোনো ত্রুটি নয়, ACT এমনই: গবেষণাপত্রটি প্রতিটি কাজের জন্য স্ক্র্যাচ থেকে একটি পলিসি প্রশিক্ষণ দেয়। একটি ভেন্ডর চেকপয়েন্টের জন্য, GR00T N1.7 বা Pi0.5 ব্যবহার করুন।

আমার আসলে কতগুলি এপিসোড দরকার?

৫০: ALOHA প্রতি টাস্কে যা রেকর্ড করেছে (থ্রেড ভেলক্রোর জন্য ১০০, যা সবচেয়ে কঠিন) এবং AY-Robots এর সর্বনিম্ন। lerobot প্রতি অবজেক্ট লোকেশনে প্রায় ১০টি এপিসোড, ক্যামেরা স্থির রেখে, গ্রাস্প সামঞ্জস্যপূর্ণ রাখার পরামর্শ দেয়। ক্যামেরা নড়াচড়া করা একশ এপিসোডের চেয়ে পঞ্চাশটি পরিষ্কার এপিসোড ভালো।

আমি কি chunk_size ১০০ থেকে পরিবর্তন করব?

সাধারণত না। অ্যাবলেশন k = 1 এ ১ শতাংশ থেকে k = 100 এ ৪৪ শতাংশে উঠে এবং তারপর কমে যায়, তাই ১০০ প্রায় শীর্ষে থাকে। যদি আর্মটি খুব বেশি সময় ধরে কাজ করে, তাহলে n_action_steps কমিয়ে দিন: ৩০ fps এ, প্রতি ০.৮ সেকেন্ডে ২৫টি পুনরায় কোয়েরি।

একটি প্রশিক্ষণ রান কতক্ষণ লাগে, এবং আমি কি এটি তাড়াতাড়ি থামাতে পারি?

১০০০০০ স্টেপের জন্য একটি ২৪ GB কার্ডে দুই থেকে পাঁচ ঘণ্টা। চেকপয়েন্টগুলি প্রতি ২০০০০ স্টেপে তৈরি হয় এবং --resume=true একটি রান আবার শুরু করে, তাই তাড়াতাড়ি থামানো নিরাপদ। তবে প্রথম সমতল অংশে নয়: লস স্থিতিশীল হওয়ার পরে মসৃণতা উন্নত হয়।

লস কমে গেছে কিন্তু আর্ম এখনও ব্যর্থ হচ্ছে। এখন কী করব?

প্রায় সবসময় ডেটাসেট। আর্ম এ রেকর্ড করা এপিসোডগুলি পুনরায় চালান: যদি রিপ্লে কাজটি না করে, তাহলে ডেটাতে এটি নেই। তারপর পরীক্ষা করুন কিছু নড়েছে কিনা, বিশেষ করে একটি ক্যামেরা। ACT এর কোনো পূর্বধারণা নেই, তাই এপিসোড ২১ এ একটি ধাক্কা স্থায়ী।

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started