作为一名金融领域的 NLP 从业者,自从 ChatGPT 出来以后,整个人都是处于担心下岗的状态。未来我还能做什么?整个自然语言处理行业会不会消失?
我也想在业务中利用 ChatGPT 的优势,然而整个 ChatGPT 是黑盒的,模型规模巨大,没办法根据业务需求进行定制化的微调,所以很难集成到我现在的工作流程中。而且相关业务数据也不能直接上传到 ChatGPT。
一周之前在朋友圈看到大家转发的港科大开源大模型微调代码库 LMFlow,抱着试试看的想法去体验了一下,发现效果还不错。使用这个工具快一周了,也基于这套代码做了不少的业务场景的开发,慢慢找回了自己未来的定位。总体用起来比较得心应手的,需要修改的代码量较少。今天决定写一篇文章记录一下使用体验。
模型能力初体验
我简单阅读了一下官方 github 的介绍,上面提到 LMFlow 不是一个单一模型,而是支持很多模型的微调框架。在使用项目进行开发之前,我先去体验了一下作者提供的模型。这个项目提供了几种模型体验方案:线上的 web demo、托管在 Google Colab 上的 notebook、和本地可以运行的脚本。我首先体验了一下官方的 web demo (lmflow.com):
整体看起来效果还是很不错的,在一些基础的对话能力上可以满足需求。而且具有一定的专业领域知识。对于金融领域的简单概念比如股票、基本面都是手到擒来。
值得一提的是,在写这篇文章的时候看到 LMFlow 的官方 web demo 恰好刚做了一次大的版本更新。之前笨笨的模型现在一下子聪明了许多,尤其是中文能力得到了显著地改善。估计作者最近又进行了更多的模型改进和迭代。
快速个性化微调
尝试过现有模型后,接着就是根据数据做个性化微调。作为一个资深的 Colab 用户,我毫不犹豫地拿出了 Colab Pro+ 珍藏版 A100 (没错,Colab Pro+ 是有 A100 的)。看之前的推送说一张 3090 只需要 5 个小时,于是我就自己试了一些金融客服的小数据集进行微调,数据量比官方的略小一些。在 A100 的加持下,只用了一个小时就跑完了训练流程。下面是一些测试的结果。
训练过程中基本没有碰到困难,整个过程中主要的额外工作就是将手头的训练语料转换为官方指定的数据格式和调节脚本的参数。
作为一个专业对数据进行处理和清洗的 NLP 算法工程师(雾),我当然手到擒来,很快就处理好喂到了训练流程里,最后脚本就会在指定目录下生成一个训好的模型。我使用的是./scripts/run_finetune_with_lora.sh 这个脚本,它只会存储压缩后的模型差异,这样最终保存下来的权重规模只有几 MB,很小也很容易存储。
易用可部署
模型训好了之后就是部署上线和进行推理。我使用的脚本会将生成的模型差异存储在 output_models/finetune_with_lora 文件夹下,运行:
./scripts/run_chatbot.sh {llama-model-path} finetune_with_lora
就可以跑起来一个测试用的聊天机器人。这里 {llama-model-path} 是 Meta 有条件提供的初始模型,需要填一个表单申请(https://forms.gle/jk851eBVbX1m5TAv5)。Meta 审批通过后就能下载拿到官方 llama 模型。需要注意的是,这个模型对商用是有限制的。不过因为 LMFlow 支持很多其他模型,很容易找到平价替代。
这个机器人也有 CPU 的推理版本,可以在没有 GPU 的机器上运行。
./scripts/run_chatbot_cpu.sh {llama-model-path} output_models/finetune_with_lora
不过会比 GPU 的版本慢将近 10 倍,一般可以正常推理的模型需要经过额外的量化 8-bit/4-bit 处理。
我在这个基础上把用户界面做得更友好了一些,方便公司里的同事使用。
缺点
现在主要的实验平台还是 linux 环境,对于大多数 windows 用户来说不是很友好。好在我和其他使用者交流的过程中发现,还是有不少其他用户通过 wsl 成功跑通了训练和推理。另外也可以通过 Google Colab 或者官方提供的 docker 绕开这个问题。过了配环境这一关后,后续的使用体验还是很不错的。
结语
ChatGPT 的出现给人们带来了惊喜,也带来了颠覆。许多人开始担心自己会被所谓的科技“淘汰”,自己也许会失去工作。在这样的背景下,LMFlow 的出现给大家带来了新的可能性。与其害怕变化,不如拥抱变化,主动在 ChatGPT 的大背景下重新找到自己的定位。
在我使用 LMFlow 后,我能够很轻松地生成出自己想要的结果,省去了很多繁琐的操作,大大提高了我的效率,提升了我个人在公司的核心竞争力。
更多阅读
#投 稿 通 道#
让你的文字被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析、科研心得或竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。
📝 稿件基本要求:
• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注
• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题
• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算
📬 投稿通道:
• 投稿邮箱:hr@paperweekly.site
• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者
• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿
△长按添加PaperWeekly小编
🔍
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧
·
·