Instructions to use nota-gmbh/so101_pick_place_pen_smolvla with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LeRobot
How to use nota-gmbh/so101_pick_place_pen_smolvla with LeRobot:
# See https://github.com/huggingface/lerobot?tab=readme-ov-file#installation for more details git clone https://github.com/huggingface/lerobot.git cd lerobot pip install -e .[smolvla]
# Launch finetuning on your dataset python lerobot/scripts/train.py \ --policy.path=nota-gmbh/so101_pick_place_pen_smolvla \ --dataset.repo_id=lerobot/svla_so101_pickplace \ --batch_size=64 \ --steps=20000 \ --output_dir=outputs/train/my_smolvla \ --job_name=my_smolvla_training \ --policy.device=cuda \ --wandb.enable=true
# Run the policy using the record function python -m lerobot.record \ --robot.type=so101_follower \ --robot.port=/dev/ttyACM0 \ # <- Use your port --robot.id=my_blue_follower_arm \ # <- Use your robot id --robot.cameras="{ front: {type: opencv, index_or_path: 8, width: 640, height: 480, fps: 30}}" \ # <- Use your cameras --dataset.single_task="Grasp a lego block and put it in the bin." \ # <- Use the same task description you used in your dataset recording --dataset.repo_id=HF_USER/dataset_name \ # <- This will be the dataset name on HF Hub --dataset.episode_time_s=50 \ --dataset.num_episodes=10 \ --policy.path=nota-gmbh/so101_pick_place_pen_smolvla - Notebooks
- Google Colab
- Kaggle
so101_pick_place_pen_smolvla
A SmolVLA vision-language-action policy fine-tuned with LeRobot for a pick-and-place pen task on the SO-101 robot arm.
์ด ๋ชจ๋ธ์ SO-101 ๋ก๋ด ํ์์ ํ ์ง์ด ์ฎ๊ธฐ๊ธฐ(pick-and-place) ์์ ์ ์ํํ๋๋ก LeRobot์ผ๋ก ํ์ธํ๋ํ SmolVLA ๋น์ -์ธ์ด-์ก์ ์ ์ฑ ์ ๋๋ค.
Model Details / ๋ชจ๋ธ ์ ๋ณด
- Policy / ์ ์ฑ
: SmolVLA (fine-tuned from
lerobot/smolvla_base) - Robot / ๋ก๋ด: SO-101 follower arm
- Task / ์์ : Pick and place a pen / ํ ์ง์ด ์ฎ๊ธฐ๊ธฐ
- Dataset / ๋ฐ์ดํฐ์
:
nota-gmbh/pick_and_place_pen_so101 - Episodes / ์ํผ์๋: 53
Training / ํ์ต
- Steps: 40,000
- Hardware: Multi-GPU
- Batch size: 64
- Base model:
lerobot/smolvla_base
During data collection, the camera frames were captured keeping a consistent width-to-height aspect ratio across episodes for visual consistency.
๋ฐ์ดํฐ ์์ง ์, ์ํผ์๋ ์ ๋ฐ์ ๊ฑธ์ณ ์นด๋ฉ๋ผ ํ๋ ์์ ๊ฐ๋ก:์ธ๋ก ๋น์จ์ ๋์ผํ๊ฒ ์ ์งํ๋ ค๊ณ ๋ ธ๋ ฅํ์ต๋๋ค.
export NCCL_P2P_DISABLE="1"
export NCCL_IB_DISABLE="1"
export HF_USER="~~"
export TASK_NAME="pick_and_place"
accelerate launch --multi_gpu --num_processes=4 \
$(which lerobot-train) \
--policy.path=lerobot/smolvla_base \
--dataset.repo_id=Dangni/pick_and_place_so101_pen \
--dataset.video_backend=pyav \
--dataset.image_transforms.enable=true \
--dataset.image_transforms.max_num_transforms=3 \
--dataset.image_transforms.random_order=true \
--batch_size=16 \
--num_workers=1 \
--steps=100000 \
--output_dir=outputs/train/so101/smolvla/pick_and_place_$(date +%Y%m%d_%H%M%S) \
--job_name=smolvla_yellow \
--policy.device=cuda \
--policy.freeze_vision_encoder=true \
--policy.train_expert_only=true \
--policy.push_to_hub=false\
--policy.repo_id=Dangni/pick_and_place_yellow_smolvla \
--rename_map='{"observation.images.fixed": "observation.images.camera1", "observation.images.handy": "observation.images.camera2"}' \
--save_freq=5000 \
--wandb.enable=true
Optimizer / ์ตํฐ๋ง์ด์
| Item / ํญ๋ชฉ | Value / ๊ฐ | Note / ์ค๋ช |
|---|---|---|
| Optimizer | AdamW | decoupled_weight_decay=True |
| Initial LR | 1.0e-04 | Learning rate at the start of training / ํ์ต ์์ LR |
| LR (latest logged) | 3.2594e-05 | LR at the logged step (scheduled decay) / ์ค์ผ์ค๋ฌ ์ ์ฉ ํ LR |
| Betas | (0.9, 0.95) | 1st / 2nd moment coefficients |
| Epsilon | 1e-08 | Numerical stability constant |
| Weight Decay | 1e-10 | Very small L2 regularization |
Note: The learning rate decays over training via the scheduler, so
3.2594e-05reflects a logged intermediate step rather than the final value. ์ฐธ๊ณ : LR์ ์ค์ผ์ค๋ฌ์ ์ํด ํ์ต ์ค ๊ฐ์ํ๋ฉฐ,3.2594e-05๋ ๋ก๊น ๋ ์ค๊ฐ ์คํ ์ ๊ฐ์ ๋๋ค.
Usage / ์ฌ์ฉ๋ฒ
lerobot-rollout `
--strategy.type=base `
--policy.path=Dangni/pick_and_place_smolvla_so101_040000 `
--policy.n_action_steps=50 `
--robot.type=so101_follower `
--robot.port=COM3 `
--robot.id=follower_arm `
--robot.cameras='{fixed: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30}, handy: {type: opencv, index_or_path: 0, width: 1920, height: 1080, fps: 30}}' `
--rename_map='{"observation.images.fixed": "observation.images.camera1", "observation.images.handy": "observation.images.camera2"}' `
--task="Pick the pen and place it inside the yellow border" `
--duration=500
Limitations / ํ๊ณ
- Trained on a single pick-and-place pen task with 53 episodes; performance is limited to this task and the data-collection setup.
- Camera resolution and viewpoint should match the training setup for reliable inference.
- ๋จ์ผ ํ ์ง๊ธฐ ์์ , 53๊ฐ ์ํผ์๋๋ก ํ์ต๋์ด ํด๋น ์์ ๊ณผ ์์ง ํ๊ฒฝ์ ํ์ ๋ฉ๋๋ค.
- ์ถ๋ก ์ ์นด๋ฉ๋ผ ํด์๋ยท์์ ์ ํ์ต ํ๊ฒฝ๊ณผ ๋์ผํ๊ฒ ๋ง์ถฐ์ผ ์์ ์ ์ผ๋ก ๋์ํฉ๋๋ค.
Links / ๋งํฌ
- Base model:
lerobot/smolvla_base - Dataset:
nota-gmbh/pick_and_place_pen_so101 - LeRobot: https://github.com/huggingface/lerobot aa
- Downloads last month
- 125