清明这几天说是休息,却完全没有休息,除了按当地以往习俗去祭拜先人之外,大部分时间都投入到了折腾本地大模型上。

本地部署AI大模型的优势

将AI大模型部署在本地,通过充分利用本地资源,可以实现数据隐私与安全、减少网络延迟、支持离线应用、节约成本,并提高自主性与可控性,从而带来更好的体验和效果。

  • 数据隐私与安全

在本地部署AI大模型意味着数据不必离开本地环境,因此可以更好地保护数据的隐私和安全。对于一些敏感信息,如医疗记录、金融交易等,用户可能不希望将其发送到云端进行处理。通过在本地部署模型,可以避免因数据传输而产生的安全风险,确保数据始终在用户控制之下。

  • 减少网络延迟

本地部署AI大模型可以显著减少与远程服务器的通信延迟。对于一些需要实时响应的应用场景,如智能家居、自动驾驶等,即时性是至关重要的。通过在本地执行推理过程,可以降低因网络延迟而导致的响应延迟,提高系统的实时性和性能。

  • 离线应用支持

在某些情况下,用户可能处于没有网络连接的环境中,但仍希望能够使用AI模型进行推断和预测。在本地部署AI大模型可以满足这种需求,因为模型和数据都存储在本地设备上,不需要依赖于网络连接。这为一些离线应用场景,如边缘计算、移动设备等,提供了更大的灵活性和可用性

  • 成本效益

尽管云端计算提供了强大的计算资源,但长期依赖云端服务可能会导致较高的成本。特别是对于需要大量计算资源的AI应用来说,云端计算的成本可能会成为一个负担。通过在本地部署AI大模型,可以节省云端计算服务费用,提高成本效益。

  • 自主性与可控性

本地部署AI大模型意味着用户拥有对整个部署过程的完全控制权。用户可以根据自己的需求和偏好进行定制和调整,而不受到云端服务提供商的限制。这种自主性和可控性使用户能够更好地管理和优化其AI系统,提高系统的稳定性和性能。

本地部署AI大模型的劣势

当然,本地部署的AI大模型受限于个人用户的硬件资源和技术资源等限制,也是存在一定的劣势。

  • 资源需求

本地部署AI大模型通常需要大量的计算资源和存储空间。对于一些规模较大的模型,如BERT、GPT等,需要具备相应的硬件设施来支持其运行和存储模型参数。这可能对个人用户或小型组织来说是一个挑战,因为他们可能无法承担这些资源的成本。

  • 管理和维护

本地部署AI大模型需要进行管理和维护,包括模型更新、性能优化、故障排除等。这可能需要专业的技术人员来负责,增加了管理成本和复杂性。相比之下,使用云端服务可以将这些管理任务交给服务提供商,减轻了用户的负担。

  • 更新和升级

随着技术的不断发展和模型的更新迭代,本地部署的AI大模型需要及时更新和升级以保持性能和安全性。这可能涉及到重新训练模型、更换硬件设备等,需要投入额外的时间和资源。

  • 安全风险

尽管本地部署AI大模型可以增强数据隐私和安全性,但也存在一定的安全风险。例如,本地设备可能受到物理攻击、恶意软件感染等威胁,导致模型参数泄露或被篡改。因此,需要采取相应的安全措施来保护本地部署的AI系统。

  • 可扩展性限制

与云端计算相比,本地部署AI大模型的可扩展性可能受到限制。当需要处理大规模数据或进行高并发计算时,本地资源可能无法满足需求,导致性能下降或系统崩溃。在这种情况下,可能需要考虑将部分工作负载转移到云端或使用分布式系统来提高可扩展性。

对于我来说,折腾本地大模型部署主要是:

免费、隐私和安全,并且内容还没有限制,聊啥都可以,不会像云端那样受制于人。最大的劣势就是受限于本地主机性能,部署的模型规模不够大,能力上没有人家商业模型那么强,使用起来当然也没商业模型那么方便。

LM Studio

之前也在本地弄了不少的AI大模型整合包,一个又一个的大的要死,到处找资源下载也麻烦,又要关注公众号,又要密码之类啥的,还得忍受免费网盘的龟速,占用很多硬盘空间不说,而且费时间,事实上这些整合包也不稳定,况且也没有API服务,可玩性太差。最近又出了不少新的文字生成类的大模型,网上那些评测感觉都不靠谱的,所以想自己实际使用一下看看。

为了方便,我直接使用了LM Studio软件来尝试各种7B左右的开源免费大模型。

在花费很多时间测试后,发现目前开源免费的中文大模型中做文本总结最好用的还是Qwen1.5,当然也称不上满意,只是在一堆矮子里面选个稍微高点的罢了。

另外LM Studio只支持gguf格式的模型,所以有些中文大模型没测试上,例如ChatGLM、还有Baichuan这些大模型,没有官方的gguf格式,用非官方微调过的gguf模型实在是太拉了,几乎不可用,或者都是些base模型,没有经过对齐的,总之比我用该模型的整合包要差不少。

ChatGLM-6B模型整合包在我电脑上只聊了一句就直接崩溃,完全不可用。Baichuan2-7B-Chat-4bits大模型整合包效果也还可以,不过整合包性能优化不行,而且没有API。最终只能选用LM Studio下载Qwen1.5 7B大模型用来做后端,实际上我尝试过Qwen1.5 13B模型,8G显存竟然也能跑起来,不过回复速度我不能接受,所以放弃。

ChatGPT

为什么要提ChatGPT?这个可不是本地大模型,因为它最近居然宣布对所有人免费了,虽然只是GPT3.5随便用。但就这个3.5的模型能力也不是当前本地大模型能够碰瓷媲美的,反正在我目前使用过的所有免费且支持中文的大模型里面,无论是开源本地的还是云端商业的模型,真没有一个能打的。

它的免费让我有了幻想,生成效果也是满足了我的需求,只可惜后面真正搞起来才发现存在问题:

  • 使用它的API需要绑定国外手机,这个要花点小钱,不爽。就算是绑定手机后能用,它的API也不是随便用的,它有5美元的额度。
  • 它有严格的生成内容审查,并不自由。

只是普通用一下还可以,但真的要用来安逸地捣鼓折腾,免不了一番功夫。

微调开源大模型——RWKV6

说了前面的一堆铺垫,终于说到我主要折腾的核心内容了——微调大模型。

我一直想做个可以写小说的模型,续写现在很多大模型都能够做到,但这些续写总是不按剧本的安排生成,随机出现很多人和物,剧情也是随机发展的,完全不受控。

那么,如何用AI生成受控制的小说呢?当然是要AI根据纲章内容来扩写!

这个现在当然是已有模型可以实现,但……都是要钱的,并没有开源免费的。所以才想自己弄一个自己用。何况就算是免费,那些云端模型也总是有各种各样的限制,无论是生成的内容上,还是使用次数上。想要完全自由的模型,就得自己微调。

但微调的首要前提是要有训练扩写的语料数据集。搜遍网上都没有人共享……虽然有些AI爱好群里是有人有的,但人家就是拒绝共享。没办法,只能自己想办法搞。

AI生成微调数据集

我想到的办法就是利用AI生成……没错,就是用AI生成的语料投喂给AI,让更大更智能的模型去教更小的模型干活……

这个时候,就需要自动化了,也就是需要API的时候了。所以为何我最后选择了LM Studio,因为这个工具,它自带有API服务器,而且还是完全兼容OpenAI的API接口规范的。

于是我费时间写了个Python工具,自动将现成的小说做数据清洗、自动拆分成段落、自动让AI给段落打标注,再自动转换成微调训练用的语料数据集格式。

而我选用的微调模型是RWKV V6 2.1 1B6模型。选这个模型是因为RWKV是我最熟悉的大模型,微调也有现成的工具,省去了各种搭建环境的麻烦。

微调效果

折腾了两三天,虽然总算弄出来了,期间还微调了好几次,因为参数的问题一直不收敛,loss值很高,效果是看到有的,但并未达到我想要的效果。可能是弄的数据集还不够多,只有一万多一丢丢的训练数据,训练论次步数也不够,因为我只有8G显存,训练太慢了,loss值没收敛好。

这是微调前的效果:

这个是微调后的效果:

群里直接有人否定了我的微调,说效果还不如不微调。

自我感觉还是能看到一些效果的,虽然还没能达到自己满意的程度,但总算是验证了自己的一些想法,这个思路还是可行的,只要有条件再继续去深入弄的话(优化数据集、增大数据集做大规模训练),应该是能做出效果不错的玩意出来。

这效果还要什么自行车,基本上都够用了,自己微调得微调到什么程度才有这种效果。群里有大神正在这个模型的基础上继续微调扩写功能,难怪会选择这个大模型,原来是这方面的基本能力就强,这下我倒是有点期待这个扩写能力微调增强后的大模型了。

Anything LLM

另外我一直对大模型加载知识库也挺感兴趣的,一直没找到比较好的开源实现,最开始是用的闻达(wenda),配合RWKV-7B模型,真不知道是模型不行,还是wenda不行,效果真的很差,而且速度是真的巨慢,在我看来就是完全不可用的。

最近看到Anything LLM这个开源项目,使用RAG技术,可以做AI大模型知识库解决大模型幻觉问题,最重要的是它还支持LM Studio……6,太6了,非常适合我正在用的一套工具链。

于是我就装了,捣鼓了一天才成功运行上,期间因为embed不了文件折腾了很多次,原来是因为网络问题某个抱脸的模型下载不了导致出现 fetch failure 的报错。

不过最终效果不咋地,都不知道是对中文支持不太好,还是Qwen1.5 7B模型还是不够强大的问题,我扔了个《三国演义》txt文档进去做知识库,提问三国的一些问题,回复的内容还是错的。

总结

目前我个人使用的文字生成式的本地AI大模型,就是以上这么一套工具,效果还是达不到我自己满意的程度,但总归娱乐性还是有的,可玩性也高。

有时间折腾代码的话,还能接入游戏、文生图、文生语音等等之类去,再不济用来辅助写写博客,或者是聊聊天也是可以的。但AI始终是AI,目前对普通人来说,还只是个玩具,总是感觉差点意思。