Site icon 时鹏亮的Blog

阿里云大模型ACP 笔记

训练过程中,你需要关注两个关键指标来判断训练状态:训练损失(training loss)反映模型在训练数据上的表现,验证损失(evaluation loss)反映模型在未参与训练的验证数据上的表现。通过这两个指标的变化趋势,可以判断模型处于哪种状态:

训练损失 验证损失 状态 含义
不降 / 上升 不降 / 上升 训练失败 学习率可能太高,模型无法学习
下降 下降 欠拟合 模型在学习,但还没学够,继续训练
下降 先降后升 过拟合 模型在”背题”,需要更多数据或减少训练轮次
趋于平稳 趋于平稳 训练成功 模型已经充分学习

参数 本课选值 调优方向
lora_rank 8 训练数据 < 200 条可降到 4;> 2000 条或任务更复杂可升到 16
learning_rate 5e-5 loss 不降 → 调高到 1e-4;loss 震荡 → 调低到 1e-5
num_train_epochs 5 验证损失开始上升 → 减少轮次;验证损失仍在下降 → 增加轮次
per_device_train_batch_size 8 显存不足 → 减小到 4;显存充裕 → 增大可加速训练

常见问题

问题 原因 解决方法
训练损失不降 学习率太高 降低 learning_rate 到 1e-5
验证损失上升 过拟合 减少 epochs 或增加训练数据
JSON 格式崩坏 训练数据中 JSON 格式不统一 检查数据格式一致性
意图遗漏 多意图样本占比不足 确保训练集中多意图样本 ≥ 30%
显存不足 batch_size 或 max_length 太大 减小 batch_size 到 4

不适合蒸馏的场景及替代方案

场景 原因 替代方案
需要实时知识更新(如政策查询) 蒸馏模型的知识固化在训练时刻 蒸馏做意图识别 + RAG 提供最新知识
需要多步推理(如数学证明) 小模型推理能力有限 保留大模型,或用推理压缩蒸馏
教师模型本身表现不稳定 学生无法超过教师的上限 先优化教师的 prompt 或换更强的教师
基座模型已能基本完成需求 提升空间有限,投入产出不划算 权衡投入产出比,考虑直接使用基座模型

蒸馏在以下场景中即使推理成本不占优,仍然值得考虑:


部署决策

什么时候该用蒸馏,什么时候不该?

场景特征 推荐方案 原因
高频、固定域、结构化输出 蒸馏 小模型推理成本低,效果接近大模型
知识每天更新 RAG 蒸馏模型无法自动适应新知识
需要复杂推理 保留大模型 小模型推理能力有限
蒸馏 + RAG 混合 混合架构 蒸馏做预处理,RAG 做知识查询

评估服务性能

为了评估部署后的模型服务性能,这里使用一个简单的HTTP性能测试工具wrk来快速模拟压测请求并生成报告。下面以压测 POST /v1/chat/completions 接口为例,展示服务的相关性能指标。

首先,打开一个新的终端窗口,安装压测工具wrk的依赖包。注意:终端窗口是在步骤1中指定的目录下。

sudo apt update sudo apt install wrk

接着,准备POST请求所需要的Body数据。数据已放在./resources/2_9/post.lua文件,文件内容如下所示。

wrk.method = "POST" wrk.headers["Content-Type"] = "application/json" wrk.body = [[ { "model": "./model/qwen3-0.6b", "messages": [ {"role": "system", "content": "你是一个帮助助手。"}, {"role": "user", "content": "请告诉我2008年北京奥运会,中国队总共获得了多少枚金牌?"} ] } ]]

然后,在终端窗口执行wrk压测命令,分别设置chat接口的并发量(-c)为1和10,压测时间(-d)均为10s,观察两个实验的压测结果。

wrk -t1 -c1 -d10s -s ./resources/2_9/post.lua http://localhost:8000/v1/chat/completions wrk -t1 -c10 -d10s -s ./resources/2_9/post.lua http://localhost:8000/v1/chat/completions

wrk压测结果如下所示:

根据压测结果可见,随着并发量增加(1 -> 10),QPS提升了约6倍(3.30 -> 20.08),平均延迟增加了约30%(324.61ms -> 426.84ms)。特别地是,第二个压测实验中出现了2个超时错误。这是因为在并发量较高情况下,服务器的负载超过了其处理能力,性能的不足导致了部分请求超时。


云服务方案对比和决策推荐

在阿里云上部署模型时,选择不同的服务需要综合考虑业务需求模型特性技术能力运维复杂度成本等因素。以下是对上面几种常见的云服务部署方式的对比分析及选择建议:

服务名称 特点 适用场景
阿里云百炼 大模型专属平台,提供一键部署、模型优化、API调用管理,封装底层复杂性。 快速部署大模型(如千问系列),无需关注基础设施。
函数计算(FC) Serverless 架构,按请求量计费,自动扩缩容,免运维。 适用于需要轻量级推理任务、低频访问场景(如定时任务、事件触发)。
PAI-EAS 模型在线服务平台,支持自定义模型部署,弹性扩缩容,监控等能力。 中小型深度学习模型(如图像分类、NLP),需弹性扩缩容和细粒度资源管理。
GPU云服务器 IaaS层资源,灵活安装任意框架和依赖,需手动管理运维。 自定义模型训练/推理,需要完全掌控环境(如复杂依赖、特殊硬件需求)。
容器服务ACK/容器计算服务ACS Kubernetes集群部署,集成CI/CD、自动扩缩容、负载均衡。 复杂微服务架构、混合工作负载、大规模分布式推理或训练。

 


在让大模型处理任务过程中,减少 token 的输入和输出可以帮助模型缩减推理时间,从而加快响应速度,这对于实时性要求较高的应用场景(如对话系统、客服机器人)尤为重要。


用户感知优化

除了上面介绍的几种提升 LLM 系统性能的原则外,还可以通过以下方法进一步提升用户在使用过程中的满意度。

2.2.1 流式输出

将生成的内容逐步返回给用户的技术,可以减少用户感知延迟、提高交互的流畅性,从而显著提升用户体验,尤其是在实时性要求较高的场景(如在线客服、语音助手)中。如果你的应用架构中使用了负载均衡,可能需要关闭缓存和数据压缩功能,避免流式输出失效。

2.2.2 分块处理

将任务分解为多个小块,分别处理并逐步返回结果。比如在 RAG 系统中,分块处理可以应用于检索和生成两个阶段:

2.2.3 展示任务进度

可以让用户了解当前系统的处理状态,减少因未知等待带来的焦虑感。在 RAG 系统中,可以通过进度条、加载动画或文字提示展示任务进度。例如:

2.2.4 完善错误处理机制

这是确保系统稳定性和用户体验的关键。明确的错误处理机制不仅能够捕获和处理各种异常情况,还能通过返回友好的错误信息和重试建议,提升用户对系统的信任感和满意度。

2.2.5 提供用户反馈入口与持续改进


系统性能提升 中介绍的很多方法不仅能降低延迟,提升性能,还能帮助你有效节约成本,包括:

上面这些方法比较通用,在实际业务部署中,通常有两种方式:自建环境和云上部署。自建环境初期成本高,且服务器采购流程长、维护难度大。相比之下,云上部署更适合初创企业及对成本敏感的业务。云部署将基础设施维护等任务交由云厂商处理,并能根据业务需求快速调整资源,实现高效利用。


应对过拟合的常见方法

对于 1.5B(15亿参数)规模的模型,如果出现过拟合,通常可以采取以下措施:

  1. 增加数据量或数据多样性:引入更多高质量的微调或预训练数据。

  2. 使用正则化技术:如增大 Dropout 比率、引入权重衰减(Weight Decay)。

  3. 早停法(Early Stopping):在验证损失开始上升的节点前停止训练,保存此时的模型参数。

  4. 调整 LoRA 参数:如果是进行 LoRA 轻量化微调,可以尝试降低 LoRA 的秩(Rank, $r$)或 $\alpha$ 值,以减少可训练的参数量。


  1. LoRA 的秩(rank,通常记为 r)

    • 秩越大,LoRA 引入的可训练参数量越多,模型表达能力越强,可以拟合更复杂、更多样的数据。

    • 秩越小,参数量越少,模型学习能力受限,容易欠拟合数据中的模式。

  2. 数据量很小的场景

    • 数据量小 → 容易过拟合。

    • 如果此时增大秩(r),会让模型在有限样本上学到更多噪声和无意义的模式,进一步加剧过拟合,泛化能力更差。

    • 正确的做法一般是:数据量小 → 用小秩(r=4, 8 等),限制模型容量,减少过拟合风险。

  3. 数据量大的场景

    • 数据量大 → 模型能力不足时会欠拟合。

    • 此时可以增大秩(r=32, 64 甚至更高),让 LoRA 有足够容量学习数据中的丰富模式。


批大小(Batch Size) 指的是在模型训练的单次迭代中,同时送入模型进行前向传播和反向传播的样本数量。它对训练的方方面面都有着直接或间接的影响:



如您从本文得到了有价值的信息或帮助,请考虑扫描下方二维码捐赠和鼓励。

尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。


与《阿里云大模型ACP 笔记》相关的博文:

Exit mobile version