本地模型运行
我们首先学习如何本地运行模型。在本地运行后,我们就可以调本地的 LM 的 API,进行系统的开发测试。
代码及命令行方式运行
最简单的办法,是下载 llamafile(Github),然后在命令行里运行就好。这是 Mozilla 的一个项目,目前支持 LLaVA 图像转文字、Mistral、WizardCoder、Rocket、Phi。
最基本的本地运行模型的方法是:在 HuggingFace 上下载 ggml 文件,然后本地用 C 语言编程,来运行。下面是 Andrej Karpathy 在他的 LLM 视频中介绍的方法。
如果是开发,我们可以使用 Llama.cpp。它现在非常流行,开发社区非常好。虽然名字是 Llama,但它现在已经能运行很多的模型,并且有 Python 等接口,这样我们就可以用 Python 程序来和本地运行的模型交互。因为本机的资源有限,所以,它采用了 4-bit 整数量化,并针对 MacBook CPU 进行了优化。
如 Llama.cpp 的网页上所述,运行它的方式是“命令行”,我们输入命令,带上参数,以及我们的 Prompt,比如:make -j && ./main -m models/llama-13b-v2/ggml-model-q4_0.gguf -p “Building a website can be done in 10 simple steps:\nStep 1:” -n 400 -e,它就会输出结果。
如果是学习,我们可以从 Karpathy 示例代码 开始。这个代码是运行代码,但实际上 Karpathy 在这个仓库下,包括了完整的训练模型。具体来说,他重写了他原来写的实现 GPT-2 结构的 nanoGPT,实现了 Llama-2 的模型结构,然后用这个模型,在 TinyStories 数据集上进行了训练,得到了一个很小的 Llama-2 模型,才 15M。他也写了本地运行大模型的代码,能只需要大约 500 行 C 代码。这个代码会运行我们下载的 LLM 模型文件,接受我们的 Prompt,然后输出。
运行它的方式也是“命令行”,比如:./run stories42M.bin -t 0.8 -n 256 -i “One day, Lily met a Shoggoth”
Facebook 的 FairSeqv2 也提供了简单的编程接口,比如这个调用 Mistral 8B 的例子
图形界面运行
用命令行方式运行模型的方法并不直观,因此,人们提供了各种图形界面。
我们尝试了 LM Studio 。它提供了一个图形界面。在这个界面上,我们可以加载下载好的大语言模型,然后在它提供的对话界面中,和模型对话。它还提供了兼容 OpenAI 接口的 API。因此,我们在开发自己的对话机器人的时候,就可以访问本地的 API,这样加快开发速度,降低成本。等代码调试成功后,把 API 的地址,简单换为 OpenAI 的 API 即可。
启动了 LM Studio 的本地 Server 之后,它也可以为其他应用提供服务,比如 Open Interpreter,可以让 LLM 运行代码(Python、Javascript、Shell 等),比如自动下载 Youtube 视频,然后编辑,太可怕了。
我们尝试的时候,发现因为网络原因,不能一键下载 LLM。因此,我们上手动登录 Llama 的 HF 仓库,下载其中的 gguf 文件到本地硬盘的 .cache/lm-studio/model/username/llama/ 目录下,最后运行的。这里的 B站介绍视频 也可以参考。
最近很火的 Ollama 看起来用起来也很方便,支持各种主流的模型,各种接口齐全。
云部署工具
我们系统的最终部署,得用云。下面是一个云部署工具。
- SkyPilot: standard framework for multicloud AI training and serving,run LLMs, AI, and Batch jobs on any cloud. Get maximum savings, highest GPU availability, and managed execution—all with a simple interface.
大模型
目前,各种大模型层出不穷。根据子豪他们的在阿里的魔搭社区的探索,阿里的通义千问,似乎效果最好。最国际上,LLaMA-2、Falcon-180B、BLOOM-176B 模型用得比较多。
下面是几个 LLM
- LLaMA 2
- 大模型开源的杰出之作
- 网页,Arxiv Dive,LLaMA 论文,LLaMA 2 论文
- B 站视频
- 中文 LLaMA,《Efficient and Effective Text Encoding for Chinese LLaMA and Alpaca》,论文,代码 1,代码 2
- 开源 GPT-3
- EleutherAI: GPT-Neo (6.7B), GPT-J (6B), GPT-NeoX (20B)
- Facebook/Meta: 《OPT: Open Pre-trained Transformer Language Models》,网页
- BigScience: 《BLOOM: A 176B-Parameter Open-Access Multilingual Language Model》,HF 目录
- 哈工大,活字
- 基于 BigScience Bloom 7B 参数,15B Token 模型,做了 IFT,RLHF(16.9k 标注数据)
Index | Previous | Next |