Instructions to use makepluscode/ch08-01-train-smolvla-smolvla-2000-step with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LeRobot
How to use makepluscode/ch08-01-train-smolvla-smolvla-2000-step 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=makepluscode/ch08-01-train-smolvla-smolvla-2000-step \ --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=makepluscode/ch08-01-train-smolvla-smolvla-2000-step - Notebooks
- Google Colab
- Kaggle
Upload smolvla-2000-step (2000 steps)
Browse files- README.md +37 -0
- config.json +93 -0
- model.safetensors +3 -0
- policy_postprocessor.json +32 -0
- policy_postprocessor_step_0_unnormalizer_processor.safetensors +3 -0
- policy_preprocessor.json +79 -0
- policy_preprocessor_step_5_normalizer_processor.safetensors +3 -0
README.md
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
tags:
|
| 4 |
+
- lerobot
|
| 5 |
+
- smolvla
|
| 6 |
+
- vla-robotics
|
| 7 |
+
- so-arm101
|
| 8 |
+
library_name: lerobot
|
| 9 |
+
pipeline_tag: robotics
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# smolvla-2000-step
|
| 13 |
+
|
| 14 |
+
VLA 로보틱스 입문서 예제용 SmolVLA 파인튜닝 체크포인트입니다.
|
| 15 |
+
|
| 16 |
+
## 경로 (GitHub `code/` 와 대응)
|
| 17 |
+
|
| 18 |
+
| 항목 | 값 |
|
| 19 |
+
|------|-----|
|
| 20 |
+
| 논리 경로 | `vla-robotics/ch08/01-train-smolvla/smolvla-2000-step` |
|
| 21 |
+
| GitHub | [vla-robotics-examples](https://github.com/makepluscode/vla-robotics-examples) |
|
| 22 |
+
| 예제 폴더 | `code/ch08/01-train-smolvla/` |
|
| 23 |
+
| Hub 모델 ID | `makepluscode/ch08-01-train-smolvla-smolvla-2000-step` |
|
| 24 |
+
| 학습 step | 2000 |
|
| 25 |
+
| 데이터셋 | `makepluscode/so_arm101_block_picking_main` |
|
| 26 |
+
| 베이스 | `lerobot/smolvla_base` |
|
| 27 |
+
|
| 28 |
+
## 로드
|
| 29 |
+
|
| 30 |
+
```python
|
| 31 |
+
from lerobot.policies.smolvla.modeling_smolvla import SmolVLAPolicy
|
| 32 |
+
|
| 33 |
+
policy = SmolVLAPolicy.from_pretrained("makepluscode/ch08-01-train-smolvla-smolvla-2000-step")
|
| 34 |
+
```
|
| 35 |
+
|
| 36 |
+
전·후처리는 동일 폴더의 `policy_preprocessor.json` /
|
| 37 |
+
`policy_postprocessor.json` 을 `from_pretrained` 로 함께 로드합니다.
|
config.json
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"type": "smolvla",
|
| 3 |
+
"n_obs_steps": 1,
|
| 4 |
+
"input_features": {
|
| 5 |
+
"observation.images.top": {
|
| 6 |
+
"type": "VISUAL",
|
| 7 |
+
"shape": [
|
| 8 |
+
3,
|
| 9 |
+
128,
|
| 10 |
+
128
|
| 11 |
+
]
|
| 12 |
+
},
|
| 13 |
+
"observation.images.side": {
|
| 14 |
+
"type": "VISUAL",
|
| 15 |
+
"shape": [
|
| 16 |
+
3,
|
| 17 |
+
256,
|
| 18 |
+
256
|
| 19 |
+
]
|
| 20 |
+
},
|
| 21 |
+
"observation.state": {
|
| 22 |
+
"type": "STATE",
|
| 23 |
+
"shape": [
|
| 24 |
+
6
|
| 25 |
+
]
|
| 26 |
+
}
|
| 27 |
+
},
|
| 28 |
+
"output_features": {
|
| 29 |
+
"action": {
|
| 30 |
+
"type": "ACTION",
|
| 31 |
+
"shape": [
|
| 32 |
+
6
|
| 33 |
+
]
|
| 34 |
+
}
|
| 35 |
+
},
|
| 36 |
+
"device": "cuda",
|
| 37 |
+
"use_amp": false,
|
| 38 |
+
"use_peft": false,
|
| 39 |
+
"push_to_hub": true,
|
| 40 |
+
"repo_id": null,
|
| 41 |
+
"private": null,
|
| 42 |
+
"tags": null,
|
| 43 |
+
"license": null,
|
| 44 |
+
"pretrained_path": null,
|
| 45 |
+
"chunk_size": 50,
|
| 46 |
+
"n_action_steps": 50,
|
| 47 |
+
"normalization_mapping": {
|
| 48 |
+
"VISUAL": "IDENTITY",
|
| 49 |
+
"STATE": "MEAN_STD",
|
| 50 |
+
"ACTION": "MEAN_STD"
|
| 51 |
+
},
|
| 52 |
+
"max_state_dim": 32,
|
| 53 |
+
"max_action_dim": 32,
|
| 54 |
+
"resize_imgs_with_padding": [
|
| 55 |
+
512,
|
| 56 |
+
512
|
| 57 |
+
],
|
| 58 |
+
"empty_cameras": 0,
|
| 59 |
+
"adapt_to_pi_aloha": false,
|
| 60 |
+
"use_delta_joint_actions_aloha": false,
|
| 61 |
+
"tokenizer_max_length": 48,
|
| 62 |
+
"num_steps": 10,
|
| 63 |
+
"use_cache": true,
|
| 64 |
+
"freeze_vision_encoder": true,
|
| 65 |
+
"train_expert_only": true,
|
| 66 |
+
"train_state_proj": true,
|
| 67 |
+
"optimizer_lr": 0.0001,
|
| 68 |
+
"optimizer_betas": [
|
| 69 |
+
0.9,
|
| 70 |
+
0.95
|
| 71 |
+
],
|
| 72 |
+
"optimizer_eps": 1e-08,
|
| 73 |
+
"optimizer_weight_decay": 1e-10,
|
| 74 |
+
"optimizer_grad_clip_norm": 10,
|
| 75 |
+
"scheduler_warmup_steps": 1000,
|
| 76 |
+
"scheduler_decay_steps": 30000,
|
| 77 |
+
"scheduler_decay_lr": 2.5e-06,
|
| 78 |
+
"vlm_model_name": "HuggingFaceTB/SmolVLM2-500M-Video-Instruct",
|
| 79 |
+
"load_vlm_weights": false,
|
| 80 |
+
"add_image_special_tokens": false,
|
| 81 |
+
"attention_mode": "cross_attn",
|
| 82 |
+
"prefix_length": -1,
|
| 83 |
+
"pad_language_to": "longest",
|
| 84 |
+
"num_expert_layers": -1,
|
| 85 |
+
"num_vlm_layers": 16,
|
| 86 |
+
"self_attn_every_n_layers": 2,
|
| 87 |
+
"expert_width_multiplier": 0.75,
|
| 88 |
+
"min_period": 0.004,
|
| 89 |
+
"max_period": 4.0,
|
| 90 |
+
"rtc_config": null,
|
| 91 |
+
"compile_model": false,
|
| 92 |
+
"compile_mode": "max-autotune"
|
| 93 |
+
}
|
model.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a8134b81f9d9c9373752d86e2d8b9d7c1645af993c089a5b985ad28b2243e60f
|
| 3 |
+
size 1197789224
|
policy_postprocessor.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "policy_postprocessor",
|
| 3 |
+
"steps": [
|
| 4 |
+
{
|
| 5 |
+
"registry_name": "unnormalizer_processor",
|
| 6 |
+
"config": {
|
| 7 |
+
"eps": 1e-08,
|
| 8 |
+
"features": {
|
| 9 |
+
"action": {
|
| 10 |
+
"type": "ACTION",
|
| 11 |
+
"shape": [
|
| 12 |
+
6
|
| 13 |
+
]
|
| 14 |
+
}
|
| 15 |
+
},
|
| 16 |
+
"norm_map": {
|
| 17 |
+
"VISUAL": "IDENTITY",
|
| 18 |
+
"STATE": "MEAN_STD",
|
| 19 |
+
"ACTION": "MEAN_STD"
|
| 20 |
+
}
|
| 21 |
+
},
|
| 22 |
+
"state_file": "policy_postprocessor_step_0_unnormalizer_processor.safetensors"
|
| 23 |
+
},
|
| 24 |
+
{
|
| 25 |
+
"registry_name": "device_processor",
|
| 26 |
+
"config": {
|
| 27 |
+
"device": "cpu",
|
| 28 |
+
"float_dtype": null
|
| 29 |
+
}
|
| 30 |
+
}
|
| 31 |
+
]
|
| 32 |
+
}
|
policy_postprocessor_step_0_unnormalizer_processor.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:95c7ce4f32bdc1a4dac12d91ad65583568d966b8959931bb5dc751e5f16e57b5
|
| 3 |
+
size 7520
|
policy_preprocessor.json
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "policy_preprocessor",
|
| 3 |
+
"steps": [
|
| 4 |
+
{
|
| 5 |
+
"registry_name": "rename_observations_processor",
|
| 6 |
+
"config": {
|
| 7 |
+
"rename_map": {}
|
| 8 |
+
}
|
| 9 |
+
},
|
| 10 |
+
{
|
| 11 |
+
"registry_name": "to_batch_processor",
|
| 12 |
+
"config": {}
|
| 13 |
+
},
|
| 14 |
+
{
|
| 15 |
+
"registry_name": "smolvla_new_line_processor",
|
| 16 |
+
"config": {}
|
| 17 |
+
},
|
| 18 |
+
{
|
| 19 |
+
"registry_name": "tokenizer_processor",
|
| 20 |
+
"config": {
|
| 21 |
+
"max_length": 48,
|
| 22 |
+
"task_key": "task",
|
| 23 |
+
"padding_side": "right",
|
| 24 |
+
"padding": "longest",
|
| 25 |
+
"truncation": true,
|
| 26 |
+
"tokenizer_name": "HuggingFaceTB/SmolVLM2-500M-Video-Instruct"
|
| 27 |
+
}
|
| 28 |
+
},
|
| 29 |
+
{
|
| 30 |
+
"registry_name": "device_processor",
|
| 31 |
+
"config": {
|
| 32 |
+
"device": "cuda",
|
| 33 |
+
"float_dtype": null
|
| 34 |
+
}
|
| 35 |
+
},
|
| 36 |
+
{
|
| 37 |
+
"registry_name": "normalizer_processor",
|
| 38 |
+
"config": {
|
| 39 |
+
"eps": 1e-08,
|
| 40 |
+
"features": {
|
| 41 |
+
"observation.images.top": {
|
| 42 |
+
"type": "VISUAL",
|
| 43 |
+
"shape": [
|
| 44 |
+
3,
|
| 45 |
+
128,
|
| 46 |
+
128
|
| 47 |
+
]
|
| 48 |
+
},
|
| 49 |
+
"observation.images.side": {
|
| 50 |
+
"type": "VISUAL",
|
| 51 |
+
"shape": [
|
| 52 |
+
3,
|
| 53 |
+
256,
|
| 54 |
+
256
|
| 55 |
+
]
|
| 56 |
+
},
|
| 57 |
+
"observation.state": {
|
| 58 |
+
"type": "STATE",
|
| 59 |
+
"shape": [
|
| 60 |
+
6
|
| 61 |
+
]
|
| 62 |
+
},
|
| 63 |
+
"action": {
|
| 64 |
+
"type": "ACTION",
|
| 65 |
+
"shape": [
|
| 66 |
+
6
|
| 67 |
+
]
|
| 68 |
+
}
|
| 69 |
+
},
|
| 70 |
+
"norm_map": {
|
| 71 |
+
"VISUAL": "IDENTITY",
|
| 72 |
+
"STATE": "MEAN_STD",
|
| 73 |
+
"ACTION": "MEAN_STD"
|
| 74 |
+
}
|
| 75 |
+
},
|
| 76 |
+
"state_file": "policy_preprocessor_step_5_normalizer_processor.safetensors"
|
| 77 |
+
}
|
| 78 |
+
]
|
| 79 |
+
}
|
policy_preprocessor_step_5_normalizer_processor.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:95c7ce4f32bdc1a4dac12d91ad65583568d966b8959931bb5dc751e5f16e57b5
|
| 3 |
+
size 7520
|