什么是骆驼?
您可能听说过甚至使用Chatgpt。 CHATGPT和类似的神经网络称为LLM(大语言模型)。 Llama是一种这样的模型,由Meta AI(以前是Facebook)开发的用于研究目的,其许可不适合商业用途。您可以在此处阅读更多有关它的信息:https://ai.facebook.com/blog/large-language-model-llama-meta-ai/
这篇文章是关于什么的?
发行时不久,发烧友开始探索这套模型,培训和创建新的模型。结果,我们现在有羊驼,考拉,维库纳,stablevicuna等。在这篇博客文章中,我将描述我尝试在2018 MacBook 12中使用70亿参数运行Llama模型的经验。
获得权重,转换和量化
默认情况下,所有这些模型都需要GPU来处理所有这些复杂的计算。我没有这种GPU的PC,所以我开始探索其他方式。目前,有一种商定的方法可以在家中运行开源模型:使用Llama.cpp。这是一个免费可用的软件,它将模型转换为GGML格式(只是神经网的另一种格式,需要CPU和RAM而不是GPU),然后量化它们以使它们可以运行(甚至是单词?),即使是在较低的规格上) 。我在整个过程中都非常挣扎,但是正如他们所说,没有痛苦没有收获!本指南不是一个适合所有解决方案,而是对我有用的方法。
好吧,让我们开始:
-
下载权重。实际上,应该从元数据请求权重(也称为参数,甚至为简单起见, model 本身),但似乎它们不再向任何人提供。没有体重,没有乐趣!幸运的是,我们周围有许多洪流,可以很快下载模型。我不会在这里共享任何链接(请避免在评论部分中共享任何内容),但是如果您Google“我如何获得Llama strige”可能会导致您进入GitHub讨论,您可以在其中找到磁铁链接。只需抓住它并放入您喜欢的Bittorrent客户端即可。选择要下载的型号(有7B,13B,33B和65B,越大越好)。我用了最小的。
-
转换权重并量化模型。正如我所说,我们将使用Llama.cpp:https://github.com/ggerganov/llama.cpp。只需向下滚动到使用段部分并按照说明。同意,您应该克隆回购,制作(编译)二进制程序,将下载的型号放在模型文件夹中,转换为GGML FP16格式,然后量化为4位。您只需要“构建”和“准备数据并运行”部分。之后,您应该在模型文件夹中获得.bin文件,即模型本身!然后,您可以在终端中运行并与之通信:
./main -m ./models/7B/ggml-model-q4_0.bin -n 128
对于上述步骤,您应该安装Python(应该已经预装了MacOS和大多数Linux发行版)。我建议您使用Minconda管理不同的Python环境。
实际上,我认为这篇博客文章会更长的时间。但是实际上,我所有的挣扎都用一个或两个命令解决了,解决方案花了永远的解决方案。我决定介绍一些其他要点:
Llama.cpp有一些绑定吗?
是的,不同语言有一些绑定。 Llama.cpp存储库中列出了支持的列表。绑定只是一个方便的库,可以针对模型调用方法。例如,在Python中,您可以运行类似的东西:
response = llm(prompt="What is the meaning of life?")
是否有UI可以进行交互?
是的,Llama.cpp回购指出了2种不同的UI解决方案。他们俩都不为我工作。也许,我太愚蠢了,无论如何,我只是跳过了,并使用简化和Llama-CPP-Python绑定开发了自己的非常基本的UI解决方案。如果您想让我分享该过程及其运作方式,请随时在评论中告诉我!
什么是量化?
让我们问Chatgpt! “ LLM,例如GPT-3,具有大量参数(在GPT-3的情况下为1750亿),使其具有很大的资源密集型。存储和运行。量化通过用低位整数来表示模型的重量和激活来解决此问题。这可以大大降低GPU内存需求并加速计算密集型操作(例如矩阵乘法)。例如,使用INT8(8位Integer) )量化可以使GPU存储器使用量减半,并且与FP16相比,矩阵乘法的吞吐量几乎翻了一番。换句话说,您将获得一个较小的模型,但在性能方面并不令人印象深刻,尽管通常并不明显。
运行此问题的技术要求是什么?
请参阅此处:https://github.com/ggerganov/llama.cpp#memorydisk-requirements
如果我有chatgpt,为什么我需要这个?
只是为了好玩!对于实际任务,我使用GPT-4和Claude。然而,这些型号非常有趣!我只尝试了Llama 7b和Koala 7B,并计划尝试羊驼,GPT4ALL,FALCON和其他型号!无论如何,这些模型是用于研究的,所以让我们来做!
我很乐意回答您遇到的任何问题(当然,如果我知道答案)