llamafile项目简介
很多初学者学习大语言模型的时候,都会被模型文件中一大堆复杂的python文件或者cuda配置劝退,为了方便更多的零基础的初学者体验大语言模型,llamafile 提出了单文件运行大模型的方案。
llamafile项目的目标是让开发人员和终端用户更容易访问开源大型语言模型。为此,llamafile项目将llama.cpp与Cosmopolitan Libc结合到一个框架中,将 LLM 的所有复杂性压缩为一个可在大多数计算机上(同时支持 macOS, Windows, Linux, FreeBSD, OpenBSD, NetBSD系统)本地运行的可执行文件(称为“llamafile”),无需安装。
项目GitHub链接:https://github.com/Mozilla-Ocho/llamafile
上线短短2个月内,Star达到了8.9K。
llamafile魔搭社区最佳实践
感谢魔搭社区开发者bingal(公众号:bingal)贡献的llamafile 模型合集和使用方式。
模型合集链接:https://modelscope.cn/models/bingal/llamafile-models
本合集已包含下列模型(持续更新)
中文支持良好
模型 |
模型大小 |
下载地址 |
使用示例 |
Qwen-7B-Chat |
4.23GB |
Qwen-7B-Chat-q4_0.llamafile |
示例 |
CodeLlama-7b-Instruct |
3.59GB |
CodeLlama-7b-Instruct-q4_0.llamafile |
示例 |
Yi-6B-Chat |
3.45GB |
Yi-6B-Chat-q4.llamafile |
示例 |
多模态模型(英文)
模型 |
模型大小 |
下载地址 |
使用示例 |
LLaVA-1.5-7B |
3.99GB |
llava-v1.5-7b-q4.llamafile |
示例 |
使用方法(以 Qwen-7B-Chat 模型为例):
1. 第一步:下载
示例模型:Qwen-7B-Chat/Qwen-7B-Chat-q4_0.llamafile
这个模型是 70 亿参数的 int4 量化版本,4.23GB。
使用modelscope的lib下载单个文件:
from modelscope.hub.file_download import model_file_download model_dir = model_file_download(model_id='bingal/llamafile-models',file_path='Qwen-7B-Chat/Qwen-7B-Chat-q4_0.llamafile',revision='master')
或者直接页面下载:
2. 第二步:运行
Windows 系统
- 修改文件名,增加 .exe 后缀,如改成 Qwen-7B-Chat-q4_0.exe
- 打开 cmd 或者 terminal命令行窗口,进入模型所在目录
.\Qwen-7B-Chat-q4_0.exe
- 浏览器打开 http://127.0.0.1:8080 即可开始聊天
Linux、Mac 系统
- 终端运行
- 如果您使用的是 macOS、Linux 或 BSD,则需要授予计算机执行此新文件的权限。 (您只需执行一次。)
chmod +x Qwen-7B-Chat-q4_0.llamafile
- 运行llama文件,例如:
./Qwen-7B-Chat-q4_0.llamafile
- 浏览器打开 http://127.0.0.1:8080 即可开始聊天
3. 类 openai api 网址
OpenAI API客户端示例:
from openai import OpenAI client = OpenAI( base_url="http://localhost:8080/v1", # "http://<Your api-server IP>:port" api_key = "sk-no-key-required" ) completion = client.chat.completions.create( model="LLaMA_CPP", messages=[ {"role": "system", "content": "You are an helpful AI assistant."}, {"role": "user", "content": "你好"} ] ) print(completion.choices[0].message)
在 GPT 客户端(如ChatBox)设置好调用接口即可使用
4. 运行效率对比
Mac电脑(个人笔记本M1):
arm64(阿里云倚天710,8核32G):
Intel(魔搭免费CPU算力,8核32G):
5. 可选参数说明
- -ngl 9999 表示模型的多少层放到 GPU 运行,其他在 CPU 运行,如果没有 GPU 则可设置为 -ngl 0 ,默认是 9999,也就是全部在 GPU 运行(需要装好驱动和 CUDA 运行环境)。
- --host 0.0.0.0 web 服务的hostname,如果只需要本地访问可设置为 --host 127.0.0.1 ,如果是0.0.0.0 ,即网络内可通过 ip 访问。
- --port 8080 web服务端口,默认 8080 ,可通过该参数修改。
- -t 16 线程数,当 cpu 运行的时候,可根据 cpu 核数设定多少个内核并发运行。
- 其他参数可以通过 --help 查看。
llamafile支持以下操作系统(最低标准安装说明):
- Linux:内核版本2.6.18或更高版本(支持ARM64或AMD64架构),适用于任何如RHEL5或更新版本的分发版
- macOS:macOS 14 Sonoma(Darwin版本23.1.0)或更高版本(支持ARM64或AMD64架构,但仅ARM64架构支持GPU加速),Darwin内核版本15.6或更高版本理论上应该得到支持,但我们目前无法进行实际测试。
- Windows:windows 8或更高版本(仅支持AMD64架构)
- FreeBSD:FreeBSD 13或更高版本(支持AMD64或ARM64架构,理论上GPU应可工作)
- NetBSD:NetBSD 9.2或更高版本(仅支持AMD64架构,理论上GPU应可工作)
- OpenBSD:OpenBSD 7或更高版本(仅支持AMD64架构,不支持GPU加速)
llamafile支持以下CPU类型:
- AMD64架构的微处理器必须支持SSSE3指令集。如果不支持,llamafile将显示错误信息并无法运行。这意味着,如果您使用的是Intel CPU,至少需要是Intel Core或更新系列(约2006年以后);如果是AMD CPU,至少需要是Bulldozer或更新系列(约2011年以后)。如果您的CPU支持AVX或更高级的AVX2指令集,llamafile将利用这些特性以提升性能。目前AVX512及更高级指令集的运行时调度尚未得到支持。
- ARM64架构的微处理器必须支持ARMv8a+指令集。从Apple Silicon到64位Raspberry Pis的设备都应该兼容,只要您的权重数据能够适应内存容量。
llamafile 对 GPU 的支持说明
- 在搭载 MacOS 的 Apple Silicon 系统上,只要安装了 Xcode 命令行工具,Metal GPU 就应该能够正常工作。 在 Windows 系统上,只要满足以下两个条件,GPU 就应该能够正常工作:(1)使用我们的发行版二进制文件;(2)传递 -ngl 9999 标志。如果您只安装了显卡驱动程序,那么 llamafile 将使用 tinyBLAS 作为其数学内核库,这对于批处理任务(例如摘要生成)来说会慢一些。为了获得最佳性能,NVIDIA GPU 用户需要安装 CUDA SDK 和 MSVC;而 AMD GPU 用户则需要安装 ROCm SDK。如果 llamafile 检测到 SDK 的存在,那么它将为您系统编译一个原生模块,该模块将使用 cuBLAS 或 hipBLAS 库。您还可以通过启用 WSL 上的 Nvidia CUDA 并在 WSL 中运行 llamafiles 来使用 CUDA。使用 WSL 的额外好处是,它允许您在 Windows 上运行大于 4GB 的 llamafiles。
- 在 Linux 系统上,如果满足以下条件,Nvidia cuBLAS GPU 支持将在运行时编译:(1)安装了 cc 编译器;(2)传递 -ngl 9999 标志以启用 GPU;(3)在您的机器上安装了 CUDA 开发工具包,并且 nvcc 编译器在您的路径中。
- 如果您的机器中同时有 AMD GPU 和 NVIDIA GPU,那么您可能需要通过传递 --gpu amd 或 --gpu nvidia 来指定要使用的 GPU。
- 如果由于任何原因无法在运行时编译和动态链接 GPU 支持,llamafile 将回退到 CPU 推理。