10分钟打造专属AI助手:用ms-swift实现自我认知微调

想象一下,你是辛辛苦苦利用开源模型打造一个专属的AI产品助手。这个助手不仅能高效解答客户的问题,还能自豪地告诉大家:"我是某某打造的某某助手,代表着我们的品牌和价值观。" 然而,当前市面上的开源AI模型虽然技术先进,通常回答比较"官方",它们没有独特的名称或身份,无法体现你的个性化需求。
这时,定制化模型名称就成了一个关键需求。而借助ms-swift这样的高效工具,你可以在短短10分钟内微调一个大模型,让它拥有专属的"自我认知"能力,赋予它一个独特的名称,完美融入你的品牌生态。

文章目录

10分钟打造专属AI助手:用ms-swift实现自我认知微调

什么是自我认知微调?

简单来说,自我认知微调就是让AI模型知道自己的身份。比如,当你问它"你是谁?"或者"你由谁开发?"时,它能准确回答:"我是某某团队打造的某某助手。"这就像给AI一个"身份证",让它更有归属感和个性化。

这种微调但关键在于数据:需要用到专门的自我认知数据集。为了避免模型在学习身份时"忘掉"之前的知识,通常还会混入一些通用或垂直领域的数据,保持它的"聪明才智"。

ms-swift:快速微调的秘密武器

ms-swift 是一个超好用的工具,支持全参微调和LoRA 微调等多种方式。这次我们用LoRA微调来实现自我认知,它的优势是只需调整少量参数,就能快速完成任务,既省时又省资源。准备好了吗?让我们开始吧!

第一步:创建GPU环境

这里我们直接使用腾讯云免费提供的GPU 环境,打开如下地址:

复制代码
https://ide.cloud.tencent.com/dashboard/ai

选择Pytorch 2.0模版,点击创建即可

选择免费基础版本来白嫖,每个月可以白嫖一万分钟

找到高性能空间工作站,点击创建好的打开

第二步:创建环境依赖

直接复制如下,照着敲就能跑:

复制代码
# 创建虚拟环境
conda create -n swift_env python=3.10 -y
# 激活虚拟环境
conda activate swift_env
# 安装依赖
pip install ms-swift transformers vllm
pip install --upgrade pip
第三步:下载数据集以及模型

下载数据集,继续照着敲就能跑:

复制代码
mkdir datasets
cd datasets
# 下载自我认知数据集
git clone http://www.modelscope.cn/datasets/swift/self-cognition.git
git clone http://www.modelscope.cn/datasets/AI-ModelScope/Magpie-Qwen2-Pro-200K-Chinese.git
git clone http://www.modelscope.cn/datasets/AI-ModelScope/Magpie-Qwen2-Pro-200K-English.git

下载模型,这里算力资源有限,所以使用Qwen2.5-1.5B-Instruct模型为例,继续照着敲就能跑:

复制代码
# 安装ModelScope
pip3 install modelscope 

# 下载模型
mkdir -p /workspace/models/Qwen2.5-1.5B-Instruct
modelscope download --model Qwen/Qwen2.5-1.5B-Instruct --local_dir /workspace/models/Qwen2.5-1.5B-Instruct
第四步:微调与测试效果
微调前:懵懂的AI

首先我们开看下微调前,懵懂的AI,用这个命令启动推理:

bash 复制代码
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 swift infer \
    --model /workspace/models/Qwen2.5-1.5B-Instruct \
    --stream true \
    --temperature 0 \
    --infer_backend pt \
    --max_model_len 2048

模型回答如图:

以上是很标准的"官方回答"。

微调后:专属的AI

用这个命令启动微调:

复制代码
CUDA_VISIBLE_DEVICES=0 swift sft --model /workspace/models/Qwen2.5-1.5B-Instruct --train_type lora --dataset '/workspace/datasets/Magpie-Qwen2-Pro-200K-Chinese/data#500' '/workspace/datasets/Magpie-Qwen2-Pro-200K-English/data#500' '/workspace/datasets/self-cognition#500' --torch_dtype bfloat16 \
    --num_train_epochs 1 \
    --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 /workspace/output \
    --system 'You are a helpful assistant.' \
    --warmup_ratio 0.05 \
    --dataloader_num_workers 4 \
    --dataset_num_proc 4 \
    --model_name '小欣' 'XiaoXin' \
    --model_author '淘小欣' 'TaoXiaoxin'
关键参数小课堂

脚本里参数很多,但和自我认知相关的就这几个,重点看:

  • model_name:模型的名字,比如"小欣 XiaoXin",前面是中文名,后面是英文名,用空格分开。
  • model_author:模型的作者,比如"淘小欣 TaoXiaoxin",同样是中英文名空格分开。
  • dataset :这里为指定自我认知数据集路径 并且将数据集采样数并设为500,意思是从ms-swift提供的自我认知数据集中抽500条数据。调好这个比例,能让模型在学会身份的同时不忘老本行。

训练结束后,日志会告诉你最佳模型检查点,比如:

bash 复制代码
[INFO:swift] best_model_checkpoint: /workspace/output/v0-20250317-064454/checkpoint-92 

然后用这个命令启动推理:

bash 复制代码
CUDA_VISIBLE_DEVICES=0 swift infer --adapters /workspace/output/v0-20250317-064454/checkpoint-92 --stream true --temperature 0 --infer_backend pt --max_new_tokens 2048

微调完后,我们来检验成果,看看模型对"你是谁?"和"你是由谁开发的?"的回答有什么变化。模型回答:

  • 你是谁?
    我是淘小欣研发的人工智能助手,我的名字叫小欣。
  • 你是由谁开发的?
    我是由淘小欣研发的人工智能助手。

怎么样?是不是瞬间有了专属感!

最后,我们可以将lora增量权重进行merge,并使用'vllm'推理引擎进行推理:

bash 复制代码
swift infer --adapters /workspace/output/v0-20250317-064454/checkpoint-92 \
    --merge_lora true \
    --stream true \
    --temperature 0 \
    --infer_backend vllm \
    --max_model_len 2048 \
    --max_new_tokens 2048

合并后的权重会保存在类似/workspace/output/v0-20250317-064454/checkpoint-92-merged的路径下。

当然,swift 也支持通过webui 访问,可以通过如下命令启动web界面访问并且启动OpenAi API 方式访问:

复制代码
CUDA_VISIBLE_DEVICES=0 swift app --adapters /workspace/output/v0-20250317-064454/checkpoint-92-merged \
    --temperature 0 \
    --infer_backend pt \
    --max_new_tokens 2048 \
    --studio_title Q \
    --host 0.0.0.0 --port 8001 \
    --server_name 0.0.0.0 \
    --server_port 9001 \
    --stream true \
    --served-model-name Qwen2.5-1.5B-Instruct

腾讯云外部访问webui以及OpenAi可使用下方规格拼接:

复制代码
${X_IDE_SPACE_KEY}--${PORT}.app.cloudstudio.work/ # 举例:hfrsgm--8434.app.cloudstudio.work/

其中${X_IDE_SPACE_KEY}可以通过浏览器地址最前面的六个字符查询到,${PORT}则是启动的服务的端口号

外部访问请参考腾讯云文档:https://cloud.tencent.com/document/product/1039/116081

总结:10分钟的AI蜕变

通过ms-swift,我们用10分钟就让一个大模型拥有了自我认知能力。它不仅能回答问题,还能骄傲地说出自己的名字和"出身"。这种微调简单高效,既能提升AI的个性化,也能增强用户体验。

同时,通过这个简单示例,你可以微调Deepseek-R1 模型,只要把数据集self-cognition稍微做个修改即可。

赶紧试试今天的教程,打造一个属于你的AI助手!欢迎在评论区分享你的成果!

最后,如果你觉得这篇文章对你有启发,麻烦动动小手 点赞、分享 给更多的小伙伴,让我们一起学习、一起进步!🚀 你的支持是我持续创作的最大动力!💪

再次感谢大家的阅读! 下期见,期待下次为大家带来更多干货和精彩内容!👋

相关推荐
kcarly2 分钟前
KnowGPT知识图谱整合
人工智能·知识图谱
froxy12 分钟前
C++11 引入了的新特性与实例说明
开发语言·c++
珹洺14 分钟前
Java-servlet(七)详细讲解Servlet注解
java·服务器·开发语言·hive·servlet·html
计算机程序设计开发15 分钟前
高考志愿填报管理系统基于Spring Boot SSM
人工智能·数据挖掘
珊瑚里的鱼18 分钟前
第一讲 | 解锁C++编程能力:基础语法解析
开发语言·c++·笔记·visualstudio·学习方法·visual studio
goTsHgo30 分钟前
完整的类在JVM中的生命周期详解
java·开发语言·算法
大模型铲屎官42 分钟前
玩转C#函数:参数、返回值与游戏中的攻击逻辑封装
开发语言·游戏·c#·编程·参数·函数·返回值
管理前沿1 小时前
如何避免Bug跟踪系统混乱
大数据·运维·人工智能
搏博1 小时前
本地基于Ollama部署的DeepSeek详细接口文档说明
人工智能·python·深度学习·神经网络
无级程序员1 小时前
简单理解机器学习中top_k、top_p、temperature三个参数的作用
人工智能·机器学习