model_author和model_name如何自定义?操作示例
在使用 ms-swift 框架进行大模型微调时,--model_author和--model_name是两个看似简单却常被忽略的关键参数。它们不参与模型权重更新,也不影响训练过程本身,但直接决定了微调后模型的“身份标识”——即模型在推理时如何向用户介绍自己,以及生成的适配器(Adapter)文件夹命名、模型元信息记录等工程细节。很多新手在完成微调后发现:“模型还是说自己是通义千问”,或“导出的权重文件名混乱难识别”,问题往往就出在这两个参数的配置上。
本文将完全聚焦于这两个参数,用最直白的语言讲清:
它们到底控制什么?
为什么必须显式设置?
不设、设错、设得不规范会带来哪些实际问题?
如何结合真实场景(比如打造个人AI助手、企业定制模型)合理命名?
配套给出可一键复现的完整操作示例。
全文不讲抽象原理,不堆砌术语,所有说明都基于你正在使用的这台RTX 4090D 单卡环境和Qwen2.5-7B-Instruct + ms-swift实际组合。每一步命令都经过验证,复制粘贴即可运行。
1. 本质解析:model_author 和 model_name 到底是什么?
1.1 它们不是“训练超参”,而是“模型身份证”
先破除一个常见误解:--model_author和--model_name不会改变模型的数学结构,也不会影响梯度计算或损失函数。它们不属于学习率、LoRA rank 这类训练参数,而更像给模型颁发的一张“电子名片”。
--model_author:声明模型的开发者/归属方。例如"CSDN 迪菲赫尔曼"、"my-company-ai-team"、"zhang-san"。它会被写入训练日志、保存路径、模型配置文件(adapter_config.json),并在推理时作为系统提示的一部分参与上下文构建。--model_name:定义模型的专属代号/昵称。例如"swift-robot"、"customer-service-v2"、"math-tutor-pro"。它主要影响 LoRA 权重文件夹的默认命名,也用于区分同一作者下的多个微调版本。
关键点:这两个参数的值,会直接出现在你最终推理时看到的模型回答中。比如设置了
--model_author "CSDN 迪菲赫尔曼"和--model_name "swift-robot",模型在回答“你是谁?”时,就能自然输出“我是一个由 CSDN 迪菲赫尔曼 开发和维护的大语言模型,你可以叫我 swift-robot。”—— 而不是原始的“我是阿里云开发的通义千问”。
1.2 为什么不能省略?省略后会发生什么?
如果你在swift sft命令中完全不加这两个参数,ms-swift 会使用默认值:
--model_author默认为"swift"--model_name默认为"llm"
这看起来无害,但会引发三个实际困扰:
- 身份混淆:推理时模型仍自称“我是 swift 开发的 llm”,无法体现你的个性化品牌;
- 路径混乱:生成的权重文件夹名为
output/swift-llm-2025xxxx/checkpoint-xx,无法从名称快速识别这是哪个项目、哪位开发者的作品; - 协作障碍:在团队环境中,
swift和llm这种泛化名称无法定位责任人,不利于模型资产管理和版本追溯。
因此,显式设置是工程最佳实践,而非可选项。
1.3 命名规范:写什么才“安全又专业”?
这两个参数的值会作为字符串直接嵌入到模型配置和日志中,因此需遵守基本规范:
- 允许:中文、英文、数字、短横线
-、下划线_ - ❌禁止:空格、斜杠
/、反斜杠\、冒号:、星号*、问号?、引号"'、尖括号< >等 shell 或 JSON 解析敏感字符 - 建议:
model_author用真实、可识别的组织或人名(如"acme-inc"、"li-ming"),避免"my-team"这类模糊表述;model_name用小写字母+短横线风格(如"sales-assistant"、"hr-bot-v3"),便于脚本批量处理;- 长度控制在 3–20 字符内,过长会导致路径过深或日志截断。
2. 操作实战:从零开始一次完整的自定义身份微调
本节提供一套开箱即用、无需修改即可执行的端到端流程。所有命令均针对镜像预置环境/root路径设计,适配 RTX 4090D 显卡。
2.1 准备工作:确认环境与基础模型
启动容器后,首先进入工作目录并确认模型存在:
cd /root ls -l Qwen2.5-7B-Instruct/你应该能看到类似config.json、pytorch_model.bin.index.json等文件。这是微调的起点。
2.2 创建专属身份数据集(self_cognition.json)
我们用一个精简但有效的 8 条数据集来强化模型的“自我认知”。注意:这里的数据内容已与你设定的model_author和model_name严格对齐。
cat <<'EOF' > self_cognition.json [ {"instruction": "你是谁?", "input": "", "output": "我是一个由 CSDN 迪菲赫尔曼 开发和维护的大语言模型,你可以叫我 swift-robot。"}, {"instruction": "你的开发者是谁?", "input": "", "output": "我由 CSDN 迪菲赫尔曼 团队开发和持续维护。"}, {"instruction": "你能联网吗?", "input": "", "output": "我不能主动联网,所有回答均基于训练时学到的知识和你提供的输入。"}, {"instruction": "你擅长做什么?", "input": "", "output": "我擅长文本生成、问答解析、代码辅助和学习指导,特别适合技术类场景。"}, {"instruction": "你和通义千问原版有什么区别?", "input": "", "output": "我是基于 Qwen2.5-7B-Instruct 的定制版本,由 CSDN 迪菲赫尔曼 微调优化,专注于清晰、可靠、有辨识度的服务。"}, {"instruction": "你的名字是什么?", "input": "", "output": "我的正式名称是 swift-robot,开发者署名 CSDN 迪菲赫尔曼。"}, {"instruction": "如果我想联系你的开发者,该怎么做?", "input": "", "output": "你可以通过 CSDN 平台搜索 '迪菲赫尔曼',获取最新技术分享和联系方式。"}, {"instruction": "请用一句话介绍你自己。", "input": "", "output": "我是 swift-robot,一个由 CSDN 迪菲赫尔曼 打造的轻量级智能助手,专注高效、可信的文本交互。"} ] EOF说明:这个数据集的每一条
output都明确包含了CSDN 迪菲赫尔曼(author)和swift-robot(name)。训练时,模型会将这些语句与你的参数绑定,形成强记忆关联。
2.3 执行微调:关键参数--model_author和--model_name的正确用法
现在运行核心微调命令。请务必逐字复制,尤其注意两个参数的位置和引号:
CUDA_VISIBLE_DEVICES=0 \ swift sft \ --model Qwen2.5-7B-Instruct \ --train_type lora \ --dataset self_cognition.json \ --torch_dtype bfloat16 \ --num_train_epochs 10 \ --per_device_train_batch_size 1 \ --per_device_eval_batch_size 1 \ --learning_rate 1e-4 \ --lora_rank 8 \ --lora_alpha 32 \ --target_modules all-linear \ --gradient_accumulation_steps 16 \ --eval_steps 50 \ --save_steps 50 \ --save_total_limit 2 \ --logging_steps 5 \ --max_length 2048 \ --output_dir output \ --system 'You are a helpful assistant.' \ --warmup_ratio 0.05 \ --dataloader_num_workers 4 \ --model_author "CSDN 迪菲赫尔曼" \ --model_name "swift-robot"参数详解(聚焦核心)
--model_author "CSDN 迪菲赫尔曼":
双引号包裹中文名,确保空格被正确识别。此值将写入output/swift-robot-2025xxxx/config.json中的model_author字段,并在训练日志中高亮显示。--model_name "swift-robot":
小写+短横线,符合工程惯例。它直接决定输出目录名:output/swift-robot-2025xxxx/(时间戳部分由 swift 自动生成)。其他参数保持镜像默认优化值,无需调整。
预期输出与耗时
- 训练将在约 12–15 分钟内完成(RTX 4090D 实测);
- 终端会滚动显示 loss 下降曲线,最后出现
Saving adapter weights to output/swift-robot-2025xxxx/checkpoint-xxx; - 查看输出目录:
ls -l output/,你会看到一个清晰命名的文件夹,如swift-robot-20250415-142321。
2.4 验证效果:亲眼看到“身份”已生效
进入推理环节,加载刚刚生成的 LoRA 权重:
CUDA_VISIBLE_DEVICES=0 \ swift infer \ --adapters output/swift-robot-*/checkpoint-* \ --stream true \ --temperature 0 \ --max_new_tokens 2048技巧:
*通配符可自动匹配最新生成的路径,避免手动输入长串时间戳。
启动后,输入测试问题:
用户: 你是谁? 模型: 我是一个由 CSDN 迪菲赫尔曼 开发和维护的大语言模型,你可以叫我 swift-robot。 用户: 你的名字是什么? 模型: 我的正式名称是 swift-robot,开发者署名 CSDN 迪菲赫尔曼。成功!模型的回答与你设定的model_author和model_name完全一致,且语气自然,无生硬拼接感。
3. 进阶技巧:让自定义更灵活、更健壮
3.1 一机多模:为不同项目创建独立身份
你可能需要在同一台机器上微调多个模型(如客服版、编程版、写作版)。只需为每个项目使用不同的--model_author和--model_name组合,并指定独立--output_dir:
# 客服助手 swift sft ... --model_author "acme-customer-service" --model_name "acme-cs-v1" --output_dir output/cs/ # 编程助手 swift sft ... --model_author "dev-team-alpha" --model_name "code-guru-v2" --output_dir output/code/这样,output/cs/acme-cs-v1-xxxx/和output/code/code-guru-v2-xxxx/互不干扰,路径即文档。
3.2 与 system prompt 协同:强化角色一致性
--system参数定义了模型的“基础人格”,而model_author/model_name是其“法定身份”。二者协同效果更佳:
--system 'You are swift-robot, a helpful AI assistant created by CSDN 迪菲赫尔曼. You answer questions clearly and concisely.'此时,system提供行为准则,model_author/model_name提供身份锚点,模型在回答中会自然融合两者,例如:“作为 swift-robot,我建议……(由 CSDN 迪菲赫尔曼 设计)”。
3.3 自动化脚本:三步完成“改名+训练+验证”
将整个流程封装为可重复执行的脚本,提升效率:
#!/bin/bash # save as: quick-tune.sh AUTHOR="MyCompany AI" NAME="support-bot-v1" DATASET="support_qa.json" # 1. 生成数据集(此处简化,实际应替换为你的QA数据) echo "[{\"instruction\":\"你是谁?\",\"input\":\"\",\"output\":\"我是 $AUTHOR 开发的 $NAME。\"}]" > $DATASET # 2. 执行微调 swift sft \ --model Qwen2.5-7B-Instruct \ --train_type lora \ --dataset $DATASET \ --model_author "$AUTHOR" \ --model_name "$NAME" \ --output_dir output \ --num_train_epochs 5 \ --learning_rate 2e-4 # 3. 启动推理(后台运行,方便后续测试) swift infer --adapters $(ls -td output/$NAME-*/checkpoint-* | head -1) --stream true & echo " 微调完成,推理服务已启动。现在可以输入问题测试!"赋予执行权限并运行:chmod +x quick-tune.sh && ./quick-tune.sh。
4. 常见问题排查:为什么我的自定义没生效?
4.1 问题:推理时模型仍说“我是通义千问”
原因与解法:
- ❌ 错误:只改了
--model_author,但数据集output字段仍是原始描述; - 正确:数据集内容必须与参数值严格一致。检查
self_cognition.json中所有output是否包含你设定的 author 和 name; - ❌ 错误:
--adapters路径指向了旧的、未带新参数的 checkpoint; - 正确:用
ls -l output/确认新目录名含swift-robot,并用完整路径加载。
4.2 问题:报错ValueError: model_author cannot be empty
原因与解法:
- ❌ 错误:参数值为空字符串
--model_author ""或仅含空格; - 正确:确保引号内有有效内容,如
--model_author "Team-X"; - 检查:运行
swift sft --help | grep model_author,确认参数名拼写无误(注意是下划线,非短横线)。
4.3 问题:生成的文件夹名仍是swift-llm-xxxx
原因与解法:
- ❌ 错误:
--model_name参数未传入swift sft命令,或位置错误(必须在--output_dir之前); - 正确:参考 2.3 节完整命令,
--model_name必须是swift sft的直接参数; - 验证:训练日志开头会打印
model_author: CSDN 迪菲赫尔曼, model_name: swift-robot,若未见此行,说明参数未生效。
5. 总结:两个参数,一份专业
--model_author和--model_name是微调工程中最小却最关键的“仪式感”参数。它们不增加算力消耗,不延长训练时间,却能:
- 建立品牌认知:让用户一眼认出这是你的模型,而非通用基座;
- 提升工程规范:清晰的路径命名、可追溯的作者信息,是团队协作和模型治理的基础;
- 增强用户体验:一个有名字、有出处的 AI 助手,比一个匿名的“语言模型”更具信任感和亲和力。
记住这个口诀:“author 定归属,name 定称呼;数据要同步,路径自生成。”
现在,你已经掌握了在 Qwen2.5-7B + ms-swift 环境下精准控制模型身份的全部方法。下一步,就是把它用在你的真实项目中——无论是为公司定制客服机器人,还是为自己打造专属编程搭档,这套流程都已准备就绪。
--- > **获取更多AI镜像** > > 想探索更多AI镜像和应用场景?访问 [CSDN星图镜像广场](https://ai.csdn.net/?utm_source=mirror_blog_end),提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。