# PI05
PI05模型基于基模型进行微调，支持全参数微调（FFT）和LORA微调。PI05训练时会额外添加normalization_mapping参数。LORA训练前会先将基模型复制到输出目录的base子目录。
- conda环境：lerobot-pi
- 默认超参数：batch_size=32、steps=100000、save_freq=10000、chunk_size=50、optimizer_lr=2.5e-5、scheduler_decay_lr=2.5e-6、scheduler_warmup_steps=1000、scheduler_decay_steps=30000
- dtype支持bfloat16（默认）和float32
**训练启动命令（FFT）**
```
conda activate lerobot-pi && cd /opt/cloud/lerobot_ascend_notebook/lerobot && HF_HOME=${HF_CACHE} HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1 accelerate launch --num_processes=${MA_NUM_GPUS} scripts/train.py --policy.type=pi05 --output_dir=${OUTPUT}/_ckpt --dataset.root=${DATASET} --dataset.repo_id=cloudrobo --policy.push_to_hub=false --wandb.enable=true --wandb.mode=offline --policy.normalization_mapping='{"ACTION": "MEAN_STD", "STATE": "MEAN_STD", "VISUAL": "IDENTITY"}' --policy.pretrained_path=${BASE_MODEL} --policy.gradient_checkpointing=true
```
**训练启动命令（LORA）**
1. 复制基模型到输出目录
   ```
   if [ -d "${BASE_MODEL}/base" ]; then
   cp -r ${BASE_MODEL}/base ${OUTPUT}/base
   else
   cp -r ${BASE_MODEL} ${OUTPUT}/base
   fi
   ```
   

2. 启动LORA训练
   ```
   conda activate lerobot-pi && cd /opt/cloud/lerobot_ascend_notebook/lerobot && HF_HOME=${HF_CACHE} HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1 accelerate launch --num_processes=${MA_NUM_GPUS} scripts/train.py --policy.type=pi05 --output_dir=${OUTPUT}/_ckpt --dataset.root=${DATASET} --dataset.repo_id=cloudrobo --policy.push_to_hub=false --wandb.enable=true --wandb.mode=offline --policy.normalization_mapping='{"ACTION": "MEAN_STD", "STATE": "MEAN_STD", "VISUAL": "IDENTITY"}' --policy.pretrained_path=${BASE_MODEL} --policy.gradient_checkpointing=true --peft.method_type=LORA
   ```
   
**推理部署启动命令**
```
conda activate lerobot-pi && cd /opt/cloud/lerobot_ascend_notebook/lerobot && HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1 HF_HOME=/home/ma-user/.cache/huggingface/hf_cache python -m scripts.serve_policy --policy_type=pi05 --checkpoint_path=${CHECKPOINT} --base_model_name_or_path=${CHECKPOINT}/base
```
