返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

不到那一步,绝不 SFT(监督微调)

[复制链接]
链载Ai 显示全部楼层 发表于 昨天 10:30 |阅读模式 打印 上一主题 下一主题

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">监督微调(Supervised Fine-Tuning, SFT)是一种通过使用特定任务的数据来微调预训练大模型的方法。我们不会平白无故的对一个大模型进行 SFT,一定是遇到的一些通用大模型解决不了的问题。那么以下是为什么要进行 SFT 的几个关键原因:

    ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;padding-left: 1em;color: rgb(63, 63, 63);" class="list-paddingleft-1">
  1. 1.提升特定任务的表现

    ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;padding-left: 1em;list-style-position: initial;list-style-image: initial;" class="list-paddingleft-1">
  • •大模型在广泛数据上预训练,具备通用能力,但在特定任务上的表现可能不够理想。通过 SFT,可以针对具体任务进行优化,提升模型的准确性和表现。

  • 2.适应领域特定数据

    • ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;padding-left: 1em;list-style-position: initial;list-style-image: initial;" class="list-paddingleft-1">
    • •不同领域的数据具有特定的特征和模式。SFT 可以使模型适应这些特定领域的数据,从而提高在该领域任务上的表现。

  • 3.减少过拟合风险

    • ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;padding-left: 1em;list-style-position: initial;list-style-image: initial;" class="list-paddingleft-1">
    • •使用监督数据进行微调,可以让模型更好地捕捉任务相关的特征,而不是仅仅依赖通用特征,降低过拟合风险。

  • 4.提高模型的鲁棒性和稳定性

    • ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;padding-left: 1em;list-style-position: initial;list-style-image: initial;" class="list-paddingleft-1">
    • •通过微调,模型可以更好地应对噪声和不一致的数据,提高在实际应用中的鲁棒性和稳定性。

    ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.1em;font-weight: bold;margin-top: 2em;margin-right: 8px;margin-bottom: 0.75em;padding-left: 8px;border-left: 3px solid rgb(150, 18, 238);color: rgb(63, 63, 63);">常见的一些需要 SFT 的场景

    ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">在我所接触到的一些行业案例中,大概有以下几个场景是我了解到,并且看到过别人真实解决了的,如下:

      ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;padding-left: 1em;color: rgb(63, 63, 63);" class="list-paddingleft-1">
    1. 1.医疗领域的诊断模型

      ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;padding-left: 1em;list-style-position: initial;list-style-image: initial;" class="list-paddingleft-1">
    • •在医疗诊断中,不同的疾病和症状可能需要特定的诊断模型。通过使用医疗数据对模型进行 SFT,可以提高模型对特定疾病的诊断准确性。

  • 2.金融领域的风险评估

    • •金融领域的数据具有高度专业性和复杂性。通过对金融数据进行微调,可以提升模型在风险评估、欺诈检测等任务上的表现。

  • 3.智能客服机器人

    • •不同行业的客服聊天需求不同。通过 SFT,可以针对特定行业(如电商、银行等)优化聊天机器人,使其更好地理解和回答用户的问题。

  • 4.语言翻译

    • •语言翻译涉及到不同语言对之间的转换。通过对特定语言对的翻译数据进行 SFT,可以提高翻译的准确性和流畅度。

    当然,这些个场景,如智能客服以及其他的一些场景,都或多或少的配合使用到了 RAG(全称为Retrieval-Augmented Generation),即检索增强生成。所以,解决一类问题,我们可以理解为通常需要配合多种技术。

    如何做一次SFT,以及成本和收益

    一次 SFT 大概需要经历如下图所示的几个步骤。

    1. 1.数据准备

    • 收集数据:收集与目标任务相关的高质量监督数据。

    • 数据清洗:对数据进行预处理,去除噪声和不相关信息,确保数据质量。

    这个过程的成本据我所知,应该是成本最不可控的地方,比较专业的团队会甚至会养一个爬虫团队来搜集数据,做数据清洗,而且后期评估模型效果是否达到预期效果,甚至需要从头再来搜集更多数据。

    1. 1.模型选择

    • •选择适合的预训练大模型,如 LLama3 等。这些模型已经在大规模数据上预训练,具备强大的通用能力。

  • 2.构建微调数据集

    • •根据任务需求构建训练集和验证集,确保数据集的代表性和多样性。

  • 3.设置微调参数

    • •设置微调的超参数,如学习率、批量大小、训练轮数等。这些参数需要根据具体任务进行调整。

  • 4.训练模型

    • •使用微调数据集对预训练模型进行训练。在训练过程中,监控模型的表现,避免过拟合。

  • 5.评估模型

    • •使用验证集评估微调后的模型,确保其在特定任务上的表现优于未微调模型。

  • 6.部署和监控

    • •将微调后的模型部署到生产环境中,并持续监控其表现,确保其稳定性和可靠性。

  • 7.迭代优化

    • •根据实际应用中的反馈,不断优化和调整模型,确保其在长期使用中的表现。

    我们关心的成本和收益

    1. 数据准备成本

    • 数据收集

      • •成本:数据工程师的时间和薪资。以国内数据工程师月薪 假设 50K 为例,假设收集数据需要 2 周时间,成本约为 25K。

    • 数据清洗

      • •成本:数据清洗和预处理的时间。以一名数据工程师和数据科学家合作进行,假设数据清洗需要 1 周时间,成本约为 20K。

    • 标注数据

      • •成本:数据标注人员的时间和薪资。以每条数据标注成本 1 元 为例,假设需要标注 10,000 条数据,成本约为 10K。

    总数据准备成本约为:5 万左右。

    2. GPU 资源成本

    • 计算资源

      • •使用云服务(如 AWS、Google Cloud、Azure、阿里云、腾讯云)租用 GPU 实例进行训练。假设使用 4 块 NVIDIA V100 GPU,每小时成本约为百来块。

    • 训练时间

      • •假设训练时间为一两天至一两周不等

    一次总 GPU 资源成本约盲估在,大几百到万把块左右。就大约估算个 1 万左右吧。

    总成本

    ok,我们大概计算出一次 SFT 成本大概在 6 个万左右,其中不可控的部分是数据集这块,可能 SFT 效果不好,还得再来一遍。

    3. 收益

    假设,我们通过 SFT 来增强业务代码生成这块,通过 SFT 提升模型在特定任务上的表现,可能带来以下收益:

    • 代码质量提升

      • •高质量的代码减少了后期维护和修复的成本。

    • 生产效率提高

      • •生成更准确的代码,减少开发人员的重复劳动,提高开发效率。假设团队每月减少 20% 的开发时间,节省的成本为假设为 50K。

    • 用户满意度提高

      • •更好的产品体验带来更多用户,提升市场竞争力。

    • 长期收益

      • • SFT 可以持续优化和改进模型表现,带来持续收益。假设每月节省 50K,1 年节省 60万。

    总收益:60 万-6万*(x) =?

    从成本收益比来看,一次成功的 SFT 投资回报非常可观,当然一次就 ok 概率也比较小,行业经验来看的个三五次。但整体上看,尽管前期投入较高,但通过提升代码生成质量和生产效率,可以在长期内带来显著的经济收益。当然,我说假设的数据可能可能有些过时,但是计算方式上,可能做一定的参考。

    但是,建议是遵循这个步骤, prompt 工程->RAG->SFT,使用成本逐步增加的方式,才是一个比较理性的消费者。

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
    • 官方手机版

    • 微信公众号

    • 商务合作

    • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
    • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ