当前位置: 首页 > news >正文

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

想象一下,你是辛辛苦苦利用开源模型打造一个专属的AI产品助手。这个助手不仅能高效解答客户的问题,还能自豪地告诉大家:“我是某某打造的某某助手,代表着我们的品牌和价值观。” 然而,当前市面上的开源AI模型虽然技术先进,通常回答比较”官方“,它们没有独特的名称或身份,无法体现你的个性化需求。

这时,定制化模型名称就成了一个关键需求。而借助ms-swift这样的高效工具,你可以在短短10分钟内微调一个大模型,让它拥有专属的“自我认知”能力,赋予它一个独特的名称,完美融入你的品牌生态。

文章目录

    • 10分钟打造专属AI助手:用ms-swift实现自我认知微调
      • 什么是自我认知微调?
      • ms-swift:快速微调的秘密武器
        • 第一步:创建GPU环境
        • 第二步:创建环境依赖
        • 第三步:下载数据集以及模型
        • 第四步:微调与测试效果
          • 微调前:懵懂的AI
          • 微调后:专属的AI
            • 关键参数小课堂
      • 总结:10分钟的AI蜕变

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,用这个命令启动推理:

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条数据。调好这个比例,能让模型在学会身份的同时不忘老本行。

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

[INFO:swift] best_model_checkpoint: /workspace/output/v0-20250317-064454/checkpoint-92 

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

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’推理引擎进行推理:

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助手!欢迎在评论区分享你的成果!

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

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

相关文章:

  • 在Vue3中使用$router.push方法进行路由跳转时,如何传递多个路径参数?
  • Android 拍照开发——移动虚拟机摄像头
  • lombok不起作用
  • 蓝桥杯第13届真题2
  • 【R语言】 文件,vector, matrix,dataframe 的基本操作
  • STM32---FreeRTOS软件定时器
  • 修改HuggingFace模型默认缓存路径
  • C 语言中 typedef struct 与 struct 的区别详解
  • 射频组件、度量和数学计算
  • F8 逐行执行(Step Over) F7 进入方法(Step Into) Shift+F8 跳出方法(Step Out)
  • 合React宝宝体质的自定义防抖hook
  • 相对路径跳转和绝对路径跳转有什么区别?
  • Vue3一个组件绑定多个 v-model,自定义 prop 和 event 名称
  • 【区块链 + 金融服务】寿险业直保再保协同平台 | FISCO BCOS 应用案例
  • 【计算机网络】一二章
  • java面试题之多线程
  • 怎么鉴别金媒v10.51和v10.5的区别!单单从CRM上区分!
  • Git 新建本地分支并关联到远程仓库
  • 在制作电脑的过程中,如何区分整机性能问题和应用自身性能问题
  • 【2025 最新 Cursor AI 教程 05】用 Cursor AI 解决常见开发问题
  • 修订占比近30%收录25万条目,第三版《英汉大词典》来了
  • 今年3月全国查处违反中央八项规定精神问题16994起
  • 财政部下达农业生产防灾救灾资金3.76亿元,支持黄淮海等地抗旱保春播
  • 一回合摘下“狮心”,张名扬霸气回应观众:再嘘一个我听听
  • 阿曼外交大臣:伊美下一轮谈判暂定5月3日举行
  • 俄总统助理:普京与美特使讨论了恢复俄乌直接谈判的可能性