大参数模型效果好,但成本高、响应慢。为了在保障效果的同时提升推理速度、降低成本,可首先借助大参数模型完成目标任务的数据生成,并使用这些数据微调小参数模型,使其在特定任务中达到接近大参数模型的表现,这一过程也被称为模型蒸馏。

本方案将以从一句话中提取结构化信息(如收件人、地址、电话)为例,演示如何通过模型蒸馏,让 Qwen3-0.6B 模型在此任务上达到大参数模型的表现。

先来看效果对比吧。经过了模型优化后,识别能力确实有所提高。

img

当前,《基于 GPU 云服务器微调 Qwen3 模型》技术方案开放免费体验,您只需要点击文末阅读原文即可开启。

如果您想免费体验更多技术解决方案,可以登录aliyun.com,点击权益中心-解决方案免费试用领取100点试用点。

img

一、方案路线

1. 数据准备

由于真实的物流填单数据涉及到用户隐私,我们将使用一批虚拟地址描述信息作为输入,并使用 Qwen3-235B-A22B 作为教师模型提取结构化的信息作为输出。

建议您在模型微调时使用业务场景的真实数据。

2. 模型微调

在获取教师模型的输入输出后,我们可以使用该数据来微调 Qwen3-0.6B 模型,提升其在此任务场景下的表现。这里我们将使用魔搭社区提供的 ms-swift 框架,即使您不了解微调算法的细节,依然可以借通过一行命令来完成微调任务。

3. 效果验证

最后,为了确保模型在真实业务场景中的稳定性与准确性,建议在部署到生产环境前准备评测数据与评测标准,对微调后的模型进行效果验证。

二、配置计算环境

大模型微调对计算环境有较高要求,需配套安装合适版本的 GPU 驱动、CUDA(NVIDIA的并行计算平台和编程模型)和 cuDNN(NVIDIA的深度神经网络加速库)。手动通过命令行安装不仅步骤繁琐,而且容易出错。为提升部署效率,您可在创建 GPU 云服务器实例时选择带有 GPU 驱动的镜像,省去复杂的命令行操作,快速启动微调任务。

我们推荐用免费试用的方式体验本方案。免费试用助您零成本体验本解决方案,但试用期间创建的资源与数据在结束后会被清除。免费试用的时长有限,若需长期使用云资源,可以参考:

https://www.aliyun.com/solution/tech-solution-deploy/2925027?utm_content=g_1000405783 页面中手动创建部分。

  1. 根据页面提示,领取试用点并创建资源,右侧将实时展示资源创建进程。可能需要等待几分钟。

  2. 连接 GPU 云服务器

在跳转页面中,使用左侧的登录名称登录密码登录。

img

单击左侧的远程连接按钮,再单击登录,即可连接到 GPU 云服务器。

img

三、下载并微调模型

微调模型通常上手门槛较高。通过魔搭社区提供的 ms-swift 框架,您仅需一句命令即可快速启动微调任务,大幅降低操作复杂度。

1.安装依赖

本方案依赖以下两个核心组件:

  • ms-swift

魔搭社区提供的训练框架,支持模型的下载、微调和权重合并,极大简化了微调流程。

  • vllm

用于部署微调后的模型,支持高性能推理服务,不仅方便验证微调效果,还可用于生成 API,供业务方直接调用。

您可以在终端运行以下命令来安装依赖:

pip3 install vllm==0.9.0.1 ms-swift==3.5.0

安装依赖大约需要5分钟。

2.模型微调

运行以下命令可以完成模型下载、微调、合并权重的操作:

# 进入 /root 目录cd /root && \# 下载微调脚本 sft.shcurl -f -o sft.sh "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250623/cggwpz/sft.sh" && \# 执行微调脚本bash sft.sh

模型微调核心代码如下,您可以在 sft.sh 文件中看到:

dataset 参数指定的’train.jsonl’为数据准备步骤获得的训练集。

swift sft \    --model Qwen/Qwen3-0.6B \    --train_type lora \    --dataset 'train.jsonl' \    --torch_dtype bfloat16 \    --num_train_epochs 10 \    --per_device_train_batch_size 20 \    --per_device_eval_batch_size 20 \    --learning_rate 1e-4 \    --lora_rank 8 \    --lora_alpha 32 \    --target_modules all-linear \    --gradient_accumulation_steps 16 \    --save_steps 1 \    --save_total_limit 2 \    --logging_steps 2 \    --max_length 2048 \    --output_dir output \    --warmup_ratio 0.05 \    --dataloader_num_workers 4

微调模型大约需要10分钟,期间会实时打印如下所示的模型在训练集与验证集的损失变化情况:

img

出现以下信息表明模型微调已完成:

✓ swift export 命令执行成功检查合并结果...✓ 合并目录创建成功: output/v0-xxx-xxx/checkpoint-50-merged
✓ LoRA权重合并完成!合并后的模型路径: output/v0-xxx-xxx/checkpoint-50-merged

完成该步骤会在output/v0-xxx-xxx路径下生成带有 merged 后缀的文件夹,为微调后的模型文件。

您可以在output/v0-xxx-xxx路径下中找到 images 文件夹,打开 train_loss.png(反映训练集损失) 与 eval_loss.png(反映验证集损失),根据损失值的变化趋势初步判断当前模型的训练效果:

  • 在结束训练前 train_loss 与 eval_loss 仍有下降趋势(欠拟合)

您可以增加 num_train_epochs(训练轮次,与训练深度正相关) 参数,或适当增大 lora_rank(低秩矩阵的秩,秩越大,模型能表达更复杂的任务,但更容易过度训练)的值后再进行训练,加大模型的对训练数据的拟合程度;

  • 在结束训练前 train_loss 持续下降,eval_loss 开始变大(过拟合)

您可以减少 num_train_epochs 参数,或适当减小lora_rank的值后再进行训练,防止模型过度训练;

  • 在结束训练前 train_loss 与 eval_loss 均处于平稳状态(良好拟合)

模型处于该状态时,您可以进行后续步骤。本方案的 train_loss 与 eval_loss 变化如下表所示:

train_loss eval_loss
img img

如果训练失败,您也可以尝试调整 learning_rate等参数。

四、验证效果

在将微调后的模型部署到实际业务环境前,我们建议先对其效果进行系统性的评测。只有通过充分验证,才能确保模型具备良好的稳定性和准确性,避免上线后出现意料之外的问题。

1.准备测试数据

测试数据的格式应与训练数据一致,以确保评测的可比性。

测试数据应使用区别于训练数据的全新样本用于测试。这样可以更准确地反映模型在新数据上的泛化能力,避免因“见过的样本”导致分数虚高。

您可以运行以下命令获取我们准备好的测试数据:

cd /root && \# 下载测试数据 test.jsonlcurl -o test.jsonl "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250610/mhxmdw/test_with_system.jsonl"

以下两行示例样本供您参考:

{"messages": [{"role": "system", "content": "你是一个专业的信息抽取助手,专门负责从中文文本中提取收件人的JSON信息,包含的Key有province(省份)、city(城市名称)、district(区县名称)、specific_location(街道、门牌号、小区、楼栋等详细信息)、name(收件人姓名)、phone(联系电话)"}, {"role": "user", "content": "电话:23204753945:大理市大理市人民路25号 大理古城国际酒店 3号楼:收件者:段丽娟"}, {"role": "assistant", "content": "{\"province\": \"云南省\", \"city\": \"大理市\", \"district\": \"大理市\", \"specific_location\": \"人民路25号 大理古城国际酒店 3号楼\", \"name\": \"段丽娟\", \"phone\": \"23204753945\"}"}]}{"messages": [{"role": "system", "content": "你是一个专业的信息抽取助手,专门负责从中文文本中提取收件人的JSON信息,包含的Key有province(省份)、city(城市名称)、district(区县名称)、specific_location(街道、门牌号、小区、楼栋等详细信息)、name(收件人姓名)、phone(联系电话)"}, {"role": "user", "content": "天津市河西区珠江道21号金泰大厦3层 , 接收人慕容修远 , MOBILE:22323185576"}, {"role": "assistant", "content": "{\"province\": \"天津市\", \"city\": \"天津市\", \"district\": \"河西区\", \"specific_location\": \"珠江道21号金泰大厦3层\", \"name\": \"慕容修远\", \"phone\": \"22323185576\"}"}]}

2.设计评测指标

评测标准应紧贴实际业务目标。以本方案为例,除了判断生成的 JSON 字符串是否合法,还应该关注对应 Key、Value 的值是否正确。

本案例评测方法核心代码

def compare_address_info(actual_address_str, predicted_address_str):    """比较两个JSON字符串表示的地址信息是否相同"""    try:        # 解析实际地址信息        if actual_address_str:            actual_address_json = json.loads(actual_address_str)        else:            actual_address_json = {}                # 解析预测地址信息        if predicted_address_str:            predicted_address_json = json.loads(predicted_address_str)        else:            predicted_address_json = {}                # 直接比较两个JSON对象是否完全相同        is_same = actual_address_json == predicted_address_json                return {            "is_same": is_same,            "actual_address_parsed": actual_address_json,            "predicted_address_parsed": predicted_address_json,            "comparison_error": None        }            except json.JSONDecodeError as e:        return {            "is_same": False,            "actual_address_parsed": None,            "predicted_address_parsed": None,            "comparison_error": f"JSON解析错误: {str(e)}"        }    except Exception as e:        return {            "is_same": False,            "actual_address_parsed": None,            "predicted_address_parsed": None,            "comparison_error": f"比较错误: {str(e)}"        }

3.评测初始模型效果

我们针对 Qwen3-0.6B 模型设计了多版提示词,选取效果最好的系统提示词为:

你是一个专业的信息抽取助手,专门负责从中文文本中提取收件人的结构化信息。
## 任务说明请根据给定的输入文本,准确提取并生成包含以下六个字段的JSON格式输出:- province: 省份/直辖市/自治区(必须是完整的官方名称,如"河南省""上海市""新疆维吾尔自治区"等)- city: 城市名称(包含"市"字,如"郑州市""西安市"等)- district: 区县名称(包含"区""县"等,如"金水区""雁塔区"等)- specific_location: 具体地址(街道、门牌号、小区、楼栋等详细信息)- name: 收件人姓名(完整的中文姓名)- phone: 联系电话(完整的电话号码,包括区号)
## 抽取规则1. **地址信息处理**- 必须准确识别省、市、区的层级关系   - 省份名称必须使用官方全称(如"河南省"而非"河南"- 直辖市的province和city字段应该相同(如都填"上海市"- specific_location应包含详细的街道地址、小区名称、楼栋号等
2. **姓名识别**- 准确提取完整的中文姓名,包括复姓   - 包括少数民族姓名
3. **电话号码处理**- 提取完整的电话号码,保持原有格式
## 输出格式请严格按照以下JSON格式输出,不要添加任何解释性文字:{  "province": "省份名称",  "city": "城市名称",   "district": "区县名称",  "specific_location": "详细地址",  "name": "收件人姓名",  "phone": "联系电话"}

使用上述系统提示词与测试样本对没有微调的本地 Qwen3-0.6B 模型进行评测:

# 进入 /root 目录cd /root && \# 下载并执行验证脚本curl -o evaluate_without_sft.py "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250617/ksrneh/evaluate_without_sft.py" && \curl -o evaluate_without_sft.sh "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250617/cmvbcz/evaluate_without_sft.sh" && \bash evaluate_without_sft.sh

执行后可以看到,尽管优化了提示词,测试样本准确率仅有14%:

所有预测完成! 结果已保存到 predicted_labels_without_sft.jsonl样本数: 400 条响应正确: 56 条响应错误: 344 条
评估脚本运行完成

4.验证微调后模型效果

使用测试样本对微调后的模型进行评测:``

# 进入 /root 目录cd /root && \# 下载并执行验证脚本curl -o evaluate.py "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250612/bzszyc/evaluate.py" && \curl -o evaluate.sh "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250612/xtgxql/evaluate.sh" && \bash evaluate.sh

针对微调后的模型,我们使用了更简单的提示词,这可以提升模型推理时的响应速度:

你是一个专业的信息抽取助手,专门负责从中文文本中提取收件人的JSON信息,包含的Key有province(省份)、city(城市名称)、district(区县名称)、specific_location(街道、门牌号、小区、楼栋等详细信息)、name(收件人姓名)、phone(联系电话)

即使使用了更简单的提示词,微调模型的准确率也达到 98%,相比微调前的 14% 准确率有了大幅提升。

所有预测完成! 结果已保存到 predicted_labels.jsonl样本数: 400 条响应正确: 392 条响应错误: 8 条
评估脚本运行完成

至此,您已经成功完成了一次模型微调。

如果您需要在生产环境中使用,可以点击文末阅读原文参考后续内容

img

您也可以通过在aliyun.com 直接搜索“10分钟微调,让0.6B模型媲美235B模型”即可直达技术解决方案,获得更多部署方案。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐