export OMP_NUM_THREADS=2
export MKL_NUM_THREADS=2
export NUMEXPR_NUM_THREADS=2
python -m lerobot.scripts.lerobot_train \
--policy.type=pi0 \
--policy.pretrained_path=lerobot/pi0_base \
--policy.repo_id=local/pi0_soarm101 \
--policy.push_to_hub=False \
--dataset.repo_id=local/all_data \
--dataset.root=/media/jetson/52AE-4AB4/merged_70 \
--output_dir=./outputs/pi0_soarm101 \
--job_name=pi0_soarm101 \
--steps=1500 \
--batch_size=1 \
--num_workers=0 \
--policy.device=cpu \
--policy.dtype=float32 \
--policy.use_peft=true \
--policy.train_expert_only=true \
--policy.freeze_vision_encoder=true \
--policy.gradient_checkpointing=true \
--policy.compile_model=false \
--policy.n_action_steps=4 \
--policy.n_obs_steps=1 \
--save_freq=3005e-6 \e_steps=2 \
ERROR:root:Could not import third-party plugin: lerobot_robot_bi_so101_follower
Traceback (most recent call last):
File "/home/jetson/lerobot/src/lerobot/utils/import_utils.py", line 158, in attempt_import
importlib.import_module(module_name)
File "/home/jetson/miniconda3/envs/lerobot_py310/lib/python3.10/importlib/init.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/home/jetson/.local/lib/python3.10/site-packages/lerobot_robot_bi_so101_follower/init.py", line 17, in <module>
from .bi_so101_follower import BiSO101Follower
File "/home/jetson/.local/lib/python3.10/site-packages/lerobot_robot_bi_so101_follower/bi_so101_follower.py", line 23, in <module>
from lerobot.robots.so101_follower import SO101Follower
ModuleNotFoundError: No module named 'lerobot.robots.so101_follower'
WARNING:root:'torchcodec' is not available in your platform, falling back to 'pyav' as a default decoder
WARNING:root:'torchcodec' is not available in your platform, falling back to 'pyav' as a default decoder
INFO 2026-05-19 18:22:57 ot_train.py:197 {'batch_size': 1,
'checkpoint_path': None,
'dataset': {'episodes': None,
'image_transforms': {'enable': False,
'max_num_transforms': 3,
'random_order': False,
'tfs': {'affine': {'kwargs': {'degrees': [-5.0,
5.0],
'translate': [0.05,
0.05]},
'type': 'RandomAffine',
'weight': 1.0},
'brightness': {'kwargs': {'brightness': [0.8,
1.2]},
'type': 'ColorJitter',
'weight': 1.0},
'contrast': {'kwargs': {'contrast': [0.8,
1.2]},
'type': 'ColorJitter',
'weight': 1.0},
'hue': {'kwargs': {'hue': [-0.05,
0.05]},
'type': 'ColorJitter',
'weight': 1.0},
'saturation': {'kwargs': {'saturation': [0.5,
1.5]},
'type': 'ColorJitter',
'weight': 1.0},
'sharpness': {'kwargs': {'sharpness': [0.5,
1.5]},
'type': 'SharpnessJitter',
'weight': 1.0}}},
'repo_id': 'local/all_data',
'revision': None,
'root': '/media/jetson/52AE-4AB4/merged_70',
'streaming': False,
'use_imagenet_stats': True,
'video_backend': 'pyav'},
'env': None,
'eval': {'batch_size': 50, 'n_episodes': 50, 'use_async_envs': False},
'eval_freq': 20000,
'job_name': 'pi0_soarm101',
'log_freq': 200,
'num_workers': 0,
'optimizer': {'betas': [0.9, 0.95],
'eps': 1e-08,
'grad_clip_norm': 1.0,
'lr': 2.5e-05,
'type': 'adamw',
'weight_decay': 0.01},
'output_dir': 'outputs/pi0_soarm101',
'peft': None,
'policy': {'action_expert_variant': 'gemma_300m',
'chunk_size': 50,
'compile_mode': 'max-autotune',
'compile_model': False,
'device': 'cpu',
'dtype': 'float32',
'empty_cameras': 0,
'freeze_vision_encoder': True,
'gradient_checkpointing': True,
'image_resolution': [224, 224],
'input_features': {},
'license': None,
'max_action_dim': 32,
'max_period': 4.0,
'max_state_dim': 32,
'min_period': 0.004,
'n_action_steps': 4,
'n_obs_steps': 1,
'normalization_mapping': {'ACTION': <NormalizationMode.MEAN_STD: 'MEAN_STD'>,
'STATE': <NormalizationMode.MEAN_STD: 'MEAN_STD'>,
'VISUAL': <NormalizationMode.IDENTITY: 'IDENTITY'>},
'num_inference_steps': 2,
'optimizer_betas': [0.9, 0.95],
'optimizer_eps': 1e-08,
'optimizer_grad_clip_norm': 1.0,
'optimizer_lr': 2.5e-05,
'optimizer_weight_decay': 0.01,
'output_features': {},
'paligemma_variant': 'gemma_2b',
'pretrained_path': 'lerobot/pi0_base',
'private': None,
'push_to_hub': False,
'repo_id': 'local/pi0_soarm101',
'rtc_config': None,
'scheduler_decay_lr': 2.5e-06,
'scheduler_decay_steps': 30000,
'scheduler_warmup_steps': 1000,
'tags': None,
'time_sampling_beta_alpha': 1.5,
'time_sampling_beta_beta': 1.0,
'time_sampling_offset': 0.001,
'time_sampling_scale': 0.999,
'tokenizer_max_length': 48,
'train_expert_only': True,
'type': 'pi0',
'use_amp': False,
'use_peft': True},
'rabc_epsilon': 1e-06,
'rabc_head_mode': 'sparse',
'rabc_kappa': 0.01,
'rabc_progress_path': None,
'rename_map': {},
'resume': False,
'save_checkpoint': True,
'save_freq': 300,
'scheduler': {'decay_lr': 2.5e-06,
'num_decay_steps': 30000,
'num_warmup_steps': 1000,
'peak_lr': 2.5e-05,
'type': 'cosine_decay_with_warmup'},
'seed': 1000,
'steps': 1500,
'tolerance_s': 0.0001,
'use_policy_training_preset': True,
'use_rabc': False,
'wandb': {'disable_artifact': False,
'enable': False,
'entity': None,
'mode': None,
'notes': None,
'project': 'lerobot',
'run_id': None}}
INFO 2026-05-19 18:22:57 ot_train.py:205 Logs will be saved locally.
INFO 2026-05-19 18:22:57 ot_train.py:217 Creating dataset
INFO 2026-05-19 18:22:58 eo_utils.py:106 Using video codec: libsvtav1
INFO 2026-05-19 18:22:58 ot_train.py:235 Creating policy
Traceback (most recent call last):
File "/home/jetson/miniconda3/envs/lerobot_py310/lib/python3.10/runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/home/jetson/miniconda3/envs/lerobot_py310/lib/python3.10/runpy.py", line 86, in _run_code
exec(code, run_globals)
File "/home/jetson/lerobot/src/lerobot/scripts/lerobot_train.py", line 551, in <module>
main()
File "/home/jetson/lerobot/src/lerobot/scripts/lerobot_train.py", line 547, in main
train()
File "/home/jetson/lerobot/src/lerobot/configs/parser.py", line 233, in wrapper_inner
response = fn(cfg, *args, **kwargs)
File "/home/jetson/lerobot/src/lerobot/scripts/lerobot_train.py", line 236, in train
policy = make_policy(
File "/home/jetson/lerobot/src/lerobot/policies/factory.py", line 497, in make_policy
from peft import PeftConfig, PeftModel
ModuleNotFoundError: No module named 'peft'
(lerobot_py310) jetson@jetson-desktop:~$ export OMP_NUM_THREADS=1
export MKL_NUM_THREADS=1
export NUMEXPR_NUM_THREADS=1
python -m lerobot.scripts.lerobot_train \
--policy.type=pi0 \
--policy.pretrained_path=lerobot/pi0_base \
--policy.repo_id=local/pi0_soarm101 \
--policy.push_to_hub=False \
--dataset.repo_id=local/all_data \
--dataset.root=/media/jetson/52AE-4AB4/merged_70 \
--output_dir=./outputs/pi0_soarm101 \
--job_name=pi0_soarm101 \
--steps=1000 \
--batch_size=1 \
--num_workers=0 \
--policy.device=cpu \
--policy.dtype=float32 \
--policy.use_peft=false \
--policy.train_expert_only=true \
--policy.num_inference_steps=1g=false \
ERROR:root:Could not import third-party plugin: lerobot_robot_bi_so101_follower
Traceback (most recent call last):
File "/home/jetson/lerobot/src/lerobot/utils/import_utils.py", line 158, in attempt_import
importlib.import_module(module_name)
File "/home/jetson/miniconda3/envs/lerobot_py310/lib/python3.10/importlib/init.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/home/jetson/.local/lib/python3.10/site-packages/lerobot_robot_bi_so101_follower/init.py", line 17, in <module>
from .bi_so101_follower import BiSO101Follower
File "/home/jetson/.local/lib/python3.10/site-packages/lerobot_robot_bi_so101_follower/bi_so101_follower.py", line 23, in <module>
from lerobot.robots.so101_follower import SO101Follower
ModuleNotFoundError: No module named 'lerobot.robots.so101_follower'
WARNING:root:'torchcodec' is not available in your platform, falling back to 'pyav' as a default decoder
WARNING:root:'torchcodec' is not available in your platform, falling back to 'pyav' as a default decoder
WARNING:root:No accelerated backend detected. Using default cpu, this will be slow.
WARNING:lerobot.configs.policies:Device 'None' is not available. Switching to 'cpu'.
INFO 2026-05-19 18:24:28 ot_train.py:197 {'batch_size': 8,
'checkpoint_path': None,
'dataset': {'episodes': None,
'image_transforms': {'enable': False,
'max_num_transforms': 3,
'random_order': False,
'tfs': {'affine': {'kwargs': {'degrees': [-5.0,
5.0],
'translate': [0.05,
0.05]},
'type': 'RandomAffine',
'weight': 1.0},
'brightness': {'kwargs': {'brightness': [0.8,
1.2]},
'type': 'ColorJitter',
'weight': 1.0},
'contrast': {'kwargs': {'contrast': [0.8,
1.2]},
'type': 'ColorJitter',
'weight': 1.0},
'hue': {'kwargs': {'hue': [-0.05,
0.05]},
'type': 'ColorJitter',
'weight': 1.0},
'saturation': {'kwargs': {'saturation': [0.5,
1.5]},
'type': 'ColorJitter',
'weight': 1.0},
'sharpness': {'kwargs': {'sharpness': [0.5,
1.5]},
'type': 'SharpnessJitter',
'weight': 1.0}}},
'repo_id': 'local/all_data',
'revision': None,
'root': '/media/jetson/52AE-4AB4/merged_70',
'streaming': False,
'use_imagenet_stats': True,
'video_backend': 'pyav'},
'env': None,
'eval': {'batch_size': 50, 'n_episodes': 50, 'use_async_envs': False},
'eval_freq': 20000,
'job_name': 'pi0_soarm101',
'log_freq': 200,
'num_workers': 4,
'optimizer': {'betas': [0.9, 0.95],
'eps': 1e-08,
'grad_clip_norm': 1.0,
'lr': 2.5e-05,
'type': 'adamw',
'weight_decay': 0.01},
'output_dir': 'outputs/pi0_soarm101',
'peft': None,
'policy': {'action_expert_variant': 'gemma_300m',
'chunk_size': 50,
'compile_mode': 'max-autotune',
'compile_model': False,
'device': 'cpu',
'dtype': 'float32',
'empty_cameras': 0,
'freeze_vision_encoder': False,
'gradient_checkpointing': False,
'image_resolution': [224, 224],
'input_features': {},
'license': None,
'max_action_dim': 32,
'max_period': 4.0,
'max_state_dim': 32,
'min_period': 0.004,
'n_action_steps': 50,
'n_obs_steps': 1,
'normalization_mapping': {'ACTION': <NormalizationMode.MEAN_STD: 'MEAN_STD'>,
'STATE': <NormalizationMode.MEAN_STD: 'MEAN_STD'>,
'VISUAL': <NormalizationMode.IDENTITY: 'IDENTITY'>},
'num_inference_steps': 10,
'optimizer_betas': [0.9, 0.95],
'optimizer_eps': 1e-08,
'optimizer_grad_clip_norm': 1.0,
'optimizer_lr': 2.5e-05,
'optimizer_weight_decay': 0.01,
'output_features': {},
'paligemma_variant': 'gemma_2b',
'pretrained_path': 'lerobot/pi0_base',
'private': None,
'push_to_hub': False,
'repo_id': 'local/pi0_soarm101',
'rtc_config': None,
'scheduler_decay_lr': 2.5e-06,
'scheduler_decay_steps': 30000,
'scheduler_warmup_steps': 1000,
'tags': None,
'time_sampling_beta_alpha': 1.5,
'time_sampling_beta_beta': 1.0,
'time_sampling_offset': 0.001,
'time_sampling_scale': 0.999,
'tokenizer_max_length': 48,
'train_expert_only': False,
'type': 'pi0',
'use_amp': False,
'use_peft': False},
'rabc_epsilon': 1e-06,
'rabc_head_mode': 'sparse',
'rabc_kappa': 0.01,
'rabc_progress_path': None,
'rename_map': {},
'resume': False,
'save_checkpoint': True,
'save_freq': 20000,
'scheduler': {'decay_lr': 2.5e-06,
'num_decay_steps': 30000,
'num_warmup_steps': 1000,
'peak_lr': 2.5e-05,
'type': 'cosine_decay_with_warmup'},
'seed': 1000,
'steps': 100000,
'tolerance_s': 0.0001,
'use_policy_training_preset': True,
'use_rabc': False,
'wandb': {'disable_artifact': False,
'enable': False,
'entity': None,
'mode': None,
'notes': None,
'project': 'lerobot',
'run_id': None}}
INFO 2026-05-19 18:24:28 ot_train.py:205 Logs will be saved locally.
INFO 2026-05-19 18:24:28 ot_train.py:217 Creating dataset
INFO 2026-05-19 18:24:28 eo_utils.py:106 Using video codec: libsvtav1
INFO 2026-05-19 18:24:29 ot_train.py:235 Creating policy
The PI0 model is a direct port of the OpenPI implementation.
This implementation follows the original OpenPI structure for compatibility.
Original implementation: https://github.com/Physical-Intelligence/openpi
Killed
-bash: --steps=1000: command not found
-bash: --policy.device=cpu: command not found
-bash: --policy.use_peft=false: command not found
-bash: --policy.train_expert_only=true: command not found
-bash: --policy.gradient_checkpointing=false: command not found
-bash: --policy.n_action_steps=2: command not found