如何用ms-swift QLoRA微调你自己的VoiceMem记忆模型新手完整指南【免费下载链接】VoiceMemInfrastructure for the next generation of voice agents, designed to provide universal memory. It is divided into a left brain and a right brain, storing information and emotions respectively, while a fully streaming architecture eliminates latency at the fundamental level.项目地址: https://gitcode.com/gh_mirrors/vo/VoiceMemVoiceMem是一个面向语音智能体的流式双脑记忆系统左脑管理信息右脑管理情绪与人格全流式架构让记忆检索几乎不增加延迟。这篇文章带你走通它内置的微调流程——用 ms-swift 框架对 VoiceMem 记忆回复模型做一次 QLoRA 微调训练出属于你自己的记忆模型 Adapter。默认参数跑一遍就能复现官方发布的那次训练新手也能照着完成。为什么要微调一个记忆模型VoiceMem 的记忆是这样被使用的用户说话时系统一边转写一边提前检索相关记忆然后把检索到的Top-K 条记忆注入回复模型的上下文由模型读懂这些记忆并自然地回应你——而不是把记忆条目原样念出来。官方已发布了一组微调好的模型家族Qwen2.5-Omni、Qwen3-Omni、Step-Audio2-Mini但如果你希望模型适配自己的业务风格、领域话术或对话人格就需要训练一个自己的 Adapter。微调方案选得很省QLoRA4bit 量化 LoRA只训练一小部分低秩参数显存占用低消费级显卡也有机会跑起来产出一个 Adapter 而非完整模型体积小、训练快、可以随时换风格重训超参完全开源默认配置与官方发布的 Adapter 完全一致照默认跑 复现同一次训练官方数据是怎么来的训练侧的数据ChatMem-400K通过三阶段 OPD 流程构建记忆世界构建基于人设、背景事件与消息生成动态记忆场景SLM 验证的在线蒸馏通过挑战-策略迭代与对比蒸馏持续打磨人工精修补充多模态内容与情商、人格类难题注意完整的训练数据本身不在仓库中公开前会补齐数据来源、许可与同意状态说明。你可以用自己的数据练手仓库自带了 5 条样例数据用于走通流程。环境准备两条命令搞定首先克隆仓库git clone https://gitcode.com/gh_mirrors/vo/VoiceMem cd VoiceMem然后安装微调依赖pip install ms-swift4.5.2 bitsandbytes # torch 按自己的平台安装微调代码全部集中在finetune/目录共 5 个文件分工非常清晰文件作用finetune/train.py训练入口封装 ms-swift 的sft_mainfinetune/eval.py用训好的 Adapter 逐条推理打印ref/predfinetune/dataset.py读取 JSONL 并逐条校验格式不合规直接报出第几条第几句finetune/utils.py默认超参、四种 system prompt、warmup 换算finetune/data/sample.jsonl5 条样例数据训练数据格式看懂一条样例就够了每条训练数据是一行 JSONL核心是messages对话和meta元信息。以样例中的第一条为例已简化{ messages: [ {role: system, content: 你是VoiceMem一个有记忆的个人AI伴侣。……}, {role: user, content: 我的猫叫什么名字来着\n\nMEMORY CONTEXT (things you remember about the user):\n- [2023-05-08] 用户养了一只英短猫名字叫墨墨今年三岁。}, {role: assistant, content: 叫墨墨呀三岁的英短。} ], meta: {lang: zh, category: knowledge, session_id: s_0001, turn: 1} }新手需要抓住三个设计要点记忆块MEMORY CONTEXT只拼在最后一轮的 user 里历史轮不带记忆——这与真实场景一致只有当前轮才做检索只有最后一句 assistant 参与 loss 计算loss_scalelast_round历史轮不算避免模型去背历史system prompt 按category/lang二选一knowledge/emotion/persona走有记忆版casual走闲聊版中英各一套共 4 种定义在 finetune/utils.py数据加载时会逐条校验首句必须是 system、末句必须是 assistant、user/assistant 成对出现、历史不超过 6 轮、lang只能是zh/en、category只能是knowledge/emotion/persona/casual。校验逻辑见 finetune/dataset.py出错时会精确告诉你第几条第几句哪里不对调试起来不费劲。一键开始训练# 先用自带的 5 条样例把流程走通 python finetune/train.py # 换成自己的数据注意路径在 finetune/ 目录下 python finetune/train.py --data data/train.jsonl常用参数与默认值与已发布 Adapter 的训练一致参数说明默认值--data训练数据finetune/data/sample.jsonl--outAdapter 输出目录out/voicemem-qlora--base基座模型Qwen/Qwen3.6-35B-A3B--rank/--alphaLoRA 秩 / alpha32 / 64--epochs/--lr轮数 / 学习率2 / 2e-4--max-len最大序列长度2048--no-4bit关闭 4bit 量化显存够才用默认开启 4bit其他训练细节定义在 finetune/utils.pybf16 精度、batch size 8 × 梯度累积 2、cosine 学习率调度、3% warmup、梯度检查点、种子 42以及自动切出 10% 数据做验证集。想换个输出位置、调轮数和学习率一条命令即可python finetune/train.py --data data/train.jsonl \ --out out/my-adapter --epochs 3 --lr 1e-4 --no-4bit评估你训好的Adapter训练结束后用仓库自带的评估脚本跑一遍数据逐条打印question/ref/predpython finetune/eval.py --adapter out/voicemem-qlora --out preds.jsonl评估以温度 0推理保证结果可复现比较。脚本末尾还会按category和lang分组统计回答长度中位数与空回答数量帮助你快速发现某类样本整体答得太长/太短/答不出这类系统性问题。完整脚本见 finetune/eval.py。提示这里的评估针对的是回复质量如果要看记忆检索本身的指标如 LoCoMo 得分请使用仓库另一套独立的评测流程 evaluation/。新手常见踩坑点1. 换基座模型必须改target_regexLoRA 的注入模块正则是按Qwen3.6-35B-A3B的模块命名写死的见 finetune/utils.py。换其他基座时不确定就改成all-linear最稳妥。2. 多卡训练要手动折算 warmupwarmup_steps()按单进程计算多卡并行时需要再除以卡数否则预热阶段会偏长。3. 分发的注意事项Adapter 不能脱离基座独立使用分发前请确认基座模型的许可条款完整说明见 finetune/README.md。4. 显存不够怎么办默认开启 4bit 量化bnb这是显存友好的关键。如果反过来显存富余加--no-4bit可以省去量化开销、通常收敛也更稳。小结用ms-swiftbitsandbytes两条命令装好依赖finetune/目录自带完整的训练/评估/数据校验工具链数据格式很简单记忆拼在最后一轮 user 里只有最后一句 assistant 算 loss照默认参数跑 复现官方发布的 Adapter改--data和--out即可换成自己的数据与风格训完用eval.py逐条对比参考回答再按 category / lang 分组统计即可快速定位问题掌握这套流程后你就可以给自己的语音智能体换上更懂你业务的记忆大脑了 【免费下载链接】VoiceMemInfrastructure for the next generation of voice agents, designed to provide universal memory. It is divided into a left brain and a right brain, storing information and emotions respectively, while a fully streaming architecture eliminates latency at the fundamental level.项目地址: https://gitcode.com/gh_mirrors/vo/VoiceMem创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考