OpenMMLab技术答疑bot诞生记!快来一起打造专属你的AI对话模型
4 月份的时候,我们基于特征检索方案,在 MMDeploy 微信 2 群部署了专业知识问答助手“茴香豆”解答技术疑问,详见外行也能看懂的大语言模型结构对比!
当时总结了一些方案和结构缺陷,但由于时间原因,没有持续更新。
工具的实用性毋庸置疑,所以我们决定,沿之前的方向继续探索。
在 OpenXLab 应用平台上直接体验 alpha0 版本 https://openxlab.org.cn/apps/detail/tpoisonooo/antiseed-bean
(文末点击阅读原文可直达)
场景定义
针对微信群聊场景,我们总结一下有哪些要求:
闲聊产生法律风险,过多闲聊影响群体验。4 月份的版本已经能很好地处理它
用户喜欢把一个问题,分成 2~3 句发出。因此需要在群聊中理清上下文
用户还喜欢先发日志截图,再问问题
群聊中,知识类和方案咨询类问题居多,不太要求代码生成和数学计算
历史消息长度无限
对于 OpenMMLab 相关技术话题,不光要求时效性,还要考虑历史代码版本。
这些特点,几乎要求最终方案是混合的。
实现过程
alpha0 核心是一个 sft 训练的对话模型。它的意义在于跑通了完整的流程,使得系统可以持续迭代。
数据清洗
我们抽取了 2023.03.31 之前的 OpenMMLab 部分群聊,设计了一个 5 阶段清洗流程,最终得到 1.4w 对问答。
至于训练数据是否脱敏开源,希望群友自己决定。我们简单征询了一下,目前无人反对。
训练和测试
我们参考 OpenCompass 排行榜 (https://opencompass.org.cn/leaderboard-llm),挑选近期得分靠前、同时训练数据包含 OpenMMLab 的模型做基座。
只需要改一份 config 文件,就可以在 XTuner (https://github.com/InternLM/xtuner)中,增加对基座模型的支持。开始 qlora 和全量训练。
除了开源测试集外,我们同时设计了专属测试集,来验证模型精度。
目前主观体验还有一些问题:
LLM 幻觉。由于数据只到 3.31 之前,对于未知的 opencompass 安装问题,会胡编乱造答案
表述待改进。例如 “mmdet3.0 是否依赖 mmcv0.7”,作为研发人员助手,不该劝用户降低 mmdet 版本,而是升级 mmcv
服务化
OpenXLab 应用中心(https://openxlab.org.cn/apps)提供了 GPU 资源来部署服务,支持 gradio 和静态页面两种接入方式。
我们把 alpha0 版本部署到一台 A100 上,和其他应用集中虚拟化调度。打开应用中心搜索“茴香豆”即可体验。
我们可能会在 alpha2 版定下最终版的基座模型,届时可用 lmdeploy(https://github.com/internlm/lmdeploy)提升数倍吞吐和响应速度。目前 alpha0 版本没做任何性能优化。
未来计划
显而易见,alpha0 还有很多算法和工程问题等着我们处理:
模型如何低成本地准确学会冷知识(如 ncnn 全称,现在搜索引擎回答不了)
如何降低幻觉,基座模型是否继续训练
群聊问题和 github issue/discussion 差异较明显,适用性有多大
敬请期待下个版本~
2023-09-12
2023-09-11