CtrlK
BlogDocsLog inGet started
Tessl Logo

minicpm5-finetune-ms-swift

Fine-tune MiniCPM5-1B or MiniCPM5-2B with ms-swift or Megatron-SWIFT. Use when the user mentions "ms-swift", "swift sft", "swift rlhf", or "megatron sft". MiniCPM5-1B uses the PyPI release with `--template minicpm5`; MiniCPM5-2B requires `ms-swift>=4.6.0.dev0` with `--template minicpm5_2b`. Both use `--model_type llama`.

67

Quality

84%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Fine-tune MiniCPM5-1B and MiniCPM5-2B with ms-swift

Select the version and template that match the model:

Modelms-swift versionArguments
MiniCPM5-1BPyPI 4.5.3--model_type llama --template minicpm5
MiniCPM5-2B>=4.6.0.dev0--model_type llama --template minicpm5_2b

Both models require transformers>=5.6.

ms-swift 4.x renamed --train_type to --tuner_type. Use --tuner_type lora for LoRA training.

Required input

VarExampleDefault
BASE_MODELopenbmb/MiniCPM5-2Brequired; openbmb/MiniCPM5-1B is also supported
TEMPLATEminicpm5_2buse minicpm5 for MiniCPM5-1B
DATApath to messages-format jsonlrequired
OUTPUT_DIR./runs/minicpm5_swiftrequired
GPU_ID00

Each line of DATA: {"messages": [{"role":"...","content":"..."}, ...]}.

Steps

1. Install (once)

For MiniCPM5-1B:

pip install "ms-swift==4.5.3" "transformers>=5.6"

For MiniCPM5-2B:

git clone https://github.com/modelscope/ms-swift.git
cd ms-swift
git checkout 654e24f17b5d9f40ed4b9ee4c56a723320244db5
pip install -e .
pip install "transformers>=5.6,<5.17"

For Megatron-SWIFT:

pip install mcore-bridge==1.6.4

2. Train (LoRA SFT)

CUDA_VISIBLE_DEVICES=${GPU_ID} swift sft \
    --model "${BASE_MODEL}" \
    --model_type llama \
    --template "${TEMPLATE}" \
    --tuner_type lora \
    --dataset "${DATA}" \
    --output_dir "${OUTPUT_DIR}" \
    --num_train_epochs 2 \
    --per_device_train_batch_size 4 \
    --gradient_accumulation_steps 4 \
    --learning_rate 2e-4 \
    --lora_rank 16 --lora_alpha 32 --lora_dropout 0.05 \
    --target_modules q_proj k_proj v_proj o_proj gate_proj up_proj down_proj \
    --max_length 4096 \
    --warmup_ratio 0.03 \
    --bf16 true \
    --logging_steps 10 \
    --save_steps 200

Set TEMPLATE=minicpm5 for MiniCPM5-1B or TEMPLATE=minicpm5_2b for MiniCPM5-2B.

3. Validate

Loss should decrease over the first few hundred steps:

{'loss': 4.52, 'token_acc': 0.26, 'epoch': 0.04}
{'loss': 3.57, 'token_acc': 0.35, 'epoch': 1.00}

Adapter is at ${OUTPUT_DIR}/v0-${TIMESTAMP}/checkpoint-${STEP}/.

Merge for serving

swift export \
    --model "${BASE_MODEL}" \
    --adapters "${OUTPUT_DIR}/v0-${TIMESTAMP}/checkpoint-${STEP}" \
    --merge_lora true \
    --output_dir ./minicpm5-swift-merged

The merged model is a regular LlamaForCausalLM and serves with any minicpm5-deploy-* skill.

Full SFT / DPO / RLHF

Same flag surface, just swap the trainer:

# Full SFT
swift sft --tuner_type full ...

# DPO
swift rlhf --rlhf_type dpo \
    --model "${BASE_MODEL}" --model_type llama --template "${TEMPLATE}" \
    --dataset preference.jsonl \
    --output_dir ${OUTPUT_DIR} ...

# Megatron-SWIFT SFT
megatron sft \
    --model "${BASE_MODEL}" \
    --model_type llama \
    --template "${TEMPLATE}" \
    --dataset "${DATA}" \
    --finetune true \
    --output_dir "${OUTPUT_DIR}"

Set TEMPLATE=minicpm5 for MiniCPM5-1B or TEMPLATE=minicpm5_2b for MiniCPM5-2B.

For complete training options and configuration details, see the ms-swift command-line parameters and the Megatron-SWIFT quick start.

Multi-GPU

NPROC_PER_NODE=8 swift sft \
    --model "${BASE_MODEL}" --model_type llama --template "${TEMPLATE}" \
    --tuner_type lora --deepspeed default-zero2 \
    ...

Common pitfalls

  • Failed to automatically match model_type: add --model_type llama.
  • Failed to automatically match template_type: use --template minicpm5 for MiniCPM5-1B or --template minicpm5_2b for MiniCPM5-2B.
  • minicpm5_2b is not registered: the active Python environment is using an older ms-swift release. Install ms-swift>=4.6.0.dev0; the source installation above pins a known revision for reproducibility.
  • Conflict with LLaMA-Factory in same env: LLaMA-Factory pins transformers==4.52, ms-swift wants the latest (currently transformers ≥5.6). Use separate venvs, or set PYTHONNOUSERSITE=1 to ignore user-site transformers.

Reference

docs/finetune/ms_swift.md

Repository
OpenBMB/MiniCPM
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.