AI 大模型之美
徐文浩
bothub 创始人
32335 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 33 讲
AI 大模型之美
15
15
1.0x
00:00/00:00
登录|注册

18|流式生成与模型微调,打造极致的对话体验

应用案例
模型微调详细指南
减少Token消耗
提高数据生成效率
使用微调模型讲故事
结合历史人物和奥特曼
迭代器访问生成文本
开启stream=True参数
类似ChatGPT的交互方式
实时文本生成
继续微调提高准确性
新的训练数据
适用于不断更新的领域,如医学、金融
在已微调模型上继续训练
微调模型使用成本高于内置模型
Curie vs Davinci
生成专属模型
云端训练
提交数据给OpenAI
Prompt和Completion配对
JSONL格式
在基础模型如Ada、Babbage、Curie和Davinci上进行
使用特定数据集训练
特定风格或知识的对话体验
垂直领域问题解答
OpenAI官方文档
微调模型用于电商商品描述
实现流式处理的讲故事应用
优化数据生成代码
优化建议
故事生成
实现方法
交互体验
数据更新
进一步微调
成本考量
微调过程
数据准备
方法
适用场景
推荐阅读
思考题
实践应用
流式生成 (Streaming)
增量训练
模型微调 (Fine-tuning)
大语言模型应用与优化

该思维导图由 AI 生成,仅供参考

你好,我是徐文浩。
在之前介绍 llama-index 和 LangChain 的几讲里面,我们学习了如何将大语言模型和你自己的知识库组合到一起来解决问题。这个方法中,我们不需要对我们使用的模型做任何调整,而是通过将我们的数据用 Embedding 向量索引起来,然后在使用的时候查询索引来解决问题。
不过,其实我们也完全可以利用我们自己的数据,创建一个新的模型来回答问题。这个方法,就是 OpenAI 提供的模型微调(Fine-tune)功能。这也是我们要探讨的大语言模型的最后一个主题。

如何进行模型微调?

模型微调,是因为无论是 ChatGPT 还是 GPT-4 都不是全知全能的 AI。在很多垂直的领域,它的回答还是常常会出错。其中很大一部分原因,是它也缺少特定领域的训练数据。而如果我们有比较丰富的垂直领域的数据,那么就可以利用这些数据来“微调”一个特别擅长这个垂直领域的模型。在这个模型“微调”完成之后,我们就可以直接向模型提问了。而不用再像之前使用 llama-index 或者 LangChain 那样,先通过 Embedding 来查询相关资料,然后把查找到的资料也一并提交给 OpenAI 来获得所需要的答案。
OpenAI 模型微调的过程,并不复杂。你只需要把数据提供给 OpenAI 就好了,对应的整个微调的过程是在云端的“黑盒子”里进行的。需要提供的数据格式是一个文本文件,每一行都是一个 Prompt,以及对应这个 Prompt 的 Completion 接口会生成的内容。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

利用流式生成和模型微调来打造极致的对话体验是本文的核心内容。作者首先介绍了利用Embedding向量索引和查询索引来解决问题的方法,然后详细讨论了OpenAI提供的模型微调功能。通过提供丰富的垂直领域数据来微调模型,使其擅长特定领域的知识和对话风格。微调后的模型不仅具有微调数据的相关知识,还保留了基础模型的大部分知识和能力。文章还展示了如何利用Python代码和OpenAI工具来准备微调所需的数据,并通过命令行工具进行微调模型的操作。此外,还介绍了微调模型的成本考量和增量训练的方法,以及如何在已经微调了的模型上根据新数据做进一步微调,不断优化模型。通过本文,读者可以了解如何利用现有工具和技术,打造符合特定需求的对话体验,为相关领域的应用提供了有力支持。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《AI 大模型之美》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(22)

  • 最新
  • 精选
  • 金
    只要能加载微调后的模型,是不是就可以不用openai了?

    作者回复: 这一讲的微调后的模型还是在OpenAI的云端的。基于开源模型自己用GPU微调,才能不使用openai。

    2023-04-18归属地:广东
    2
    4
  • Oli张帆
    从成本的角度看,微调是不是更适合用来做意图分析的分类任务?我这样想的理由是,因为分类任务相对简单可以用比较便宜的模型来微调,第二,训练好之后,每次调用不必发大量context的提示,这样消耗的token会少很多。请老师指正。

    作者回复: 我个人主观的感觉是,更适合垂直领域的应用。比如你有大量的法律类的文书、金融类的文书等等,单独微调一个模型给自己用。 能够承受相对高成本,并且有大量垂直语料的应用看起来比较合适。 只是意图分析,我觉得不太需要微调语言生成模型,自己训练一个分类模型就好了。

    2023-04-18归属地:北京
    2
  • 蔡雪钧
    如果用 A,B,C三个垂直领域的数据做模型微调,那么微调后的模型是同时增强了A,B,C三块的能力么?比如把数理化的题喂给大模型,后面大模型是不是数理化整体都会变强?

    作者回复: 是的,但是也有overfit过拟合导致其他方面能力变弱的风险。

    2023-05-08归属地:北京
    1
  • weiwei
    徐老师,我们AI部门主要做 “异常数据检测”业务。就是离线把金融的异常数据捕获出来。 之前这块是用规则引擎+人工审核来做的,人力成本挺大。 这块业务,理论上能用fine tunning模型来做吗?

    作者回复: 这个有专门的策略和算法啊,可以看看 anomaly detector 类型的策略和算法。 可以看看kaggle比赛里面大家的解决方案找找思路? https://www.kaggle.com/ealaxi/paysim1

    2023-04-20归属地:浙江
    1
  • 一叶
    老师,问下,Langchain的流式生成似乎不支持迭代的显示方式,好像是通过callback来实现,但是这样在开发web的时候似乎就没办法做成应用了

    作者回复: Callback一样可以啊。你在前端和后端建立一个Websocket,然后后端拿到Callback之后往前端Push消息就可以了。

    2023-04-17归属地:中国台湾
    2
    1
  • 朱朱
    老师,请教下,微调之后的模型在 openai 的云端会存在多久,我直接用您微调后的模型,提示无法找到了

    作者回复: 微调后的模型,不删除一直会在云端。但是每个人的模型是隔离的呀,你肯定是调用不了我微调的模型的。你需要自己微调一个才能调用。

    2023-05-16归属地:浙江
    3
  • stg609
    stop到底是怎么发挥作用的?一遇到stop的字符就停止生成了?如果我们喂给它的csv数据中就有很多. 会怎么样?

    作者回复: 一遇到就停止生成 你可以试一下,那样的话,预处理过程生成的 stop word 会变

    2023-04-19归属地:浙江
  • 莱森
    可以请教一下老师如果用了链式调用,怎么样才能更好地实现流式生成呢?

    作者回复: 可以参看官方文档关于 Stream Response的支持 https://python.langchain.com/en/latest/modules/models/chat/examples/streaming.html

    2023-04-18归属地:四川
  • Warren
    在这一讲生成数据的时候,我们一条条去生成故事特别慢,而且每个组合的故事都要生成三条,特别消耗 Token。你想想这部分的代码,如何根据之前学到的内容优化一下呢? 是不是可以把completion接口的n设为3,一次返回3个故事,可以减少提交的token?

    作者回复: 这是一种方式,还有更多的办法。

    2023-04-17归属地:广东
    2
  • zhihai.tu
    能不能联动tts,把故事实时播报出来。

    作者回复: 当然可以啊,后面20讲会讲解如何接入TTS

    2023-04-17归属地:上海
收起评论
显示
设置
留言
22
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部