1. 环境安装
在开始之前,请确保您的开发环境已配置好 Python 和 CUDA。建议使用国内镜像源加速依赖下载。
# 设置 pip 全局镜像 (加速下载)
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
# 安装 ms-swift 框架
pip install 'ms-swift[llm]' -U
# 环境对齐 (通常不需要运行,如果你运行错误,可以跑下面的代码,仓库使用最新环境测试)
pip install -r requirements/framework.txt -U
pip install -r requirements/llm.txt -U
2. 微调前推理
在安装完成后,首先需要验证环境是否正常工作,并测试基座模型的推理能力。
使用 Python 脚本:
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
from swift.llm import ModelType, InferArguments, infer_main
infer_args = InferArguments(model_type=ModelType.qwen1half_4b_chat)
result = infer_main(infer_args)
使用命令行 (CLI):
CUDA_VISIBLE_DEVICES=0 swift infer --model_type qwen1half-4b-chat
此时模型会输出默认的系统设定,例如自我介绍为阿里云通义千问。
3. 微调训练
微调是改变模型行为、知识或风格的关键步骤。本示例使用 LoRA 技术进行高效微调,适合显存有限的场景。
3.1 参数说明与策略
提示:因为自我认知训练涉及到知识编辑,建议对 MLP 加 lora_target_modules。你可以通过指定 --lora_target_modules ALL 在所有的 linear 层 (包括 qkvo 以及 mlp) 加 lora。这通常是效果最好的。
关键参数解释:
learning_rate: 学习率,建议从 5e-5 开始尝试。warmup_ratio: 预热比例,防止初期梯度震荡。max_length: 最大序列长度,根据显存大小调整,显存不足可降低此值。dataset: 数据集名称及数量,支持内置数据集如 alpaca_zh, self_cognition 等。
3.2 Python 脚本微调
# Experimental environment: A10, 3090, V100, ...
# 22GB GPU memory
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
from swift.llm import DatasetName, ModelType, SftArguments, sft_main
sft_args = SftArguments(
model_type=ModelType.qwen1half_4b_chat,
dataset=[, ,
],
logging_steps=,
max_length=,
learning_rate=,
warmup_ratio=,
output_dir=,
lora_target_modules=[],
model_name=[, ],
model_author=[, ])
output = sft_main(sft_args)
best_model_checkpoint = output[]
()


