2023-04-05 15:12:50 +08:00
---
layout: post
title: 关于最近人工智能的探索
tags: [AI, LLM, 人工智能]
---
最近人工智能发展的还真是不错啊……<!-- more -->
# 起因
2024-01-01 17:01:21 +08:00
最近ChatGPT为代表的人工智能发展的越来越好了, 而且因为它对生产力的提升使得了解AI的人也越来越多了。虽然我也不算是对AI很感兴趣, 但是我在Github Copilot刚出的时候就已经用上了, 到现在一直在用( 不过毕业了以后估计就用不了了吧😂) 。不过那时候Copilot毕竟专业性比较高, 知道的人也比较少, 不像现在ChatGPT能在各行各业使用, 甚至还有基于类似模型的Vtuber, 比如[Neuro-sama](https://www.twitch.tv/vedal987),所以即使是普通人使用它,都能够减轻自己的工作压力,所以现在的人们都在讨论它。
2023-04-05 15:12:50 +08:00
当然在这之前, 还有一些很厉害的画图AI, 比如使用了Stable Difusion的NovalAI, 以及Midjourney啥的, 不过因为我对画图并不感兴趣, 所以它发展的有多好也基本上和我没有关系。其实除了这些能够AIGC的模型之外, 在那之前还有下围棋的AlphaGO啥的, 那个我就更不感兴趣了, 相信大多数人也不感兴趣, 所以总的来看也就只有现在才能证明AI发展到了能够让大家觉得能干涉到更多人的地步吧。
也正因为现在以ChatGPT为代表的LLM的发展, 开源社区也开始搞起来一些有意思的东西。不过LLM的训练成本比较高, 所以现在开源社区在这一块的发展也许得感谢比如Facebook的[LLaMA](https://github.com/facebookresearch/llama)之类基础的模型, 才能让大家能用较低的成本去训练属于自己的AI吧。
# 关于LLaMA衍生的模型体验
在刚开始LLaMA被Facebook开源的时候, GitHub上就出现了[llama.cpp](https://github.com/ggerganov/llama.cpp)这个项目, 因为我没钱买显卡, 手头只有笔记本电脑上的一张非常垃圾的GTX1650Ti 4GiB显存的显卡, 多亏了这个项目, 可以让我这种没显卡的人也能体验LLM的乐趣。而且这个项目使用起来非常简单, 不像很多AI项目还要装什么TensorFlow啊, 还是什么PyTorch啥的, 那些东西不仅大, 还非常的挑版本, 这个项目运行的时候就什么都不用考虑, 对使用者来说非常的友好, 像清华那个[ChatGLM-6B](https://github.com/THUDM/ChatGLM-6B)我就完全跑不了, 它要想正常体验得要有8GiB的显存, 我就没法整这种东西了。
我体验了那个最开始的LLaMA-7B的模型, 效果其实不怎么样, 根本没法流畅对话, 不过也能理解, 因为它应该相当于是把一堆数据堆到一起的东西吧, 也没有针对对话进行训练。不过很快, 斯坦福大学对这个模型进行了Finetune, 制作出了[Alpaca](https://github.com/tatsu-lab/stanford_alpaca), 当然这个仓库里面的东西是纯粹的菜谱和食材, 把他们加工成模型得要整一堆A100的显卡跑几个小时, 这个我可整不来, 不过还好有人根据这个原材料加工成了完整的模型, 现在去🤗上就能下载的到, 比如去[这个仓库](https://huggingface.co/chavinlo/alpaca-native)就能下载到训练好的模型,在[这里](https://huggingface.co/Pi3141/alpaca-native-7B-ggml)可以下载到已经经过量化, 直接可以给llama.cpp使用的版本( 不过现在llama.cpp升级了, 得要按照说明在仓库里执行那个Python脚本进行转换才能正常使用) 。
我运行这些东西是在我的Macbook Pro上, 它只有8GiB的内存, 所以只能跑7B( 70亿参数) 的模型, 不过就这个模型也已经非常厉害了, 虽然只能说英文, 但是流畅程度, 上下文关系的能力都非常不错, 而且常见的知识都能正确回答, 效果让我很满意。不过8GiB内存实在是太小了, 想跑点别的也没办法……不过16GiB内存的电脑我还是能找得到的, 我找了台CPU是i7-11700K的台式机跑了下[使用GPT-4对话数据微调的13B模型](https://huggingface.co/Pi3141/gpt4-x-alpaca-native-13B-ggml), 速度比M2芯片跑的速度感觉慢了至少5倍吧, Macbook生成的速度基本上能达到对话的语速, 台式机跑的速度那就是一个一个词往出蹦, 这下就能感受到M2芯片的计算能力还是强大啊, 4大核+4小核比8核16线程还要厉害, 苹果的产品属实有点东西😝, 不过这个13B的模型也确实厉害, 有些7B的模型回答有错误的部分这个13B的都能正确回答, 如果我能整个16GiB的Macbook可能就能完整体验了吧, 可惜苹果家的内存比金子都贵, 实在是买不起啊……
斯坦福的这种Finetune方法成本还是有点高, 所以后来又有人研究出了一个叫[LoRA](https://arxiv.org/pdf/2106.09685.pdf)的办法去Finetune模型, 据说只要一张普通的显卡就可以进行, 不需要一堆高级显卡也能跑, 不过再低级的显卡, 也不是我这GTX1650Ti能碰瓷的, 所以我也只能看看别人训练的模型啦。在看的时候我发现了一个用的中文训练集跑的模型项目[Chinese-LLaMA-Alpaca](https://github.com/ymcui/Chinese-LLaMA-Alpaca), 看起来还挺有意思的, 不过他们似乎担心什么版权问题, 只放出了LoRA权重, 没有完整的模型, 就相当于是没有面饼的泡面, 只有料包, 好在他们倒是给了去哪里找面饼。不过泡面的这个过程对我来说也挺难的, 合并它需要13-15GiB的可用内存, 16GiB的内存肯定不够用, 所以得找一台32GiB内存的电脑( 不会有人组非2次方倍数内存的电脑吧? ) ……我手头没有, 还好从网上找了台免费的云主机, 整了个32GiB内存的, 才成功的把这碗面泡出来了。虽然泡面的步骤不多, 也不算特别难, 只是我是觉得干嘛同一碗面泡那么多次, 不如我提前泡好直接放网上, 所以我也在🤗上上传了最终合并并量化的模型, [在这里](https://huggingface.co/Mabbs/chinese-Alpaca-lora-7b-ggml)就能下载到直接就能拿来用的模型了。至于运行的参数就按照之前仓库的操作就行了。
# 让M2芯片发挥更大的作用
在我玩完那个llama.cpp项目之后, 我觉得让M2芯片光用CPU算好浪费啊, 毕竟这个芯片里面还有神经网络引擎和GPU啊, 这些哪个都比CPU算更好吧, 不过想要调那些东西进行人工智能计算貌似只能用苹果的Core ML框架。这两天我在Github看到一个苹果官方发布的[Core ML Stable Diffusion](https://github.com/apple/ml-stable-diffusion), 看起来还挺有意思的, 我倒是也想在我的Macbook上跑一下, 正好🤗开发了一个示例[Diffusers](https://apps.apple.com/app/diffusers/id1666309574)可以拿来试试看, 可惜8GiB内存还是限制了它的发挥, 跑是能跑, 速度也挺快的, 就是模型没法换, 因为内存也只能跑小的模型, 跑出来可以说真的就是那种抽象的不能再抽象的东西吧……不过不管怎么说, 这还是发挥了一下神经网络引擎和GPU的作用吧, 不然感觉苹果做了这些东西就没啥作用了😂。
# 感想
从这次体验来看, 我对开源社区的AI发展感觉还是挺有信心的, 虽然相比于ChatGPT之类的来说可能还没办法当作生产力, 不过毕竟它比较平民化, 至于知识量少的问题如果开发者们能加把油能让这些模型对接网络, 那也许就可以在很低成本的情况代替OpenAI的ChatGPT吧, 也能避免他们服务器出问题之类的原因导致生产力的下降吧。不过开源这种事情还是有点……毕竟还是不希望这些东西被人拿去商业化, 更不希望出现国外一开源, 国内就自研这种糟糕情况, 也许开源产品比不上人家的商业产品也是正常的。