llamafile:单个文件分发和运行LLM

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
简介: 为了方便更多的零基础的初学者体验大语言模型,llamafile 提出了单文件运行大模型的方案。

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')

或者直接页面下载:

https://www.modelscope.cn/api/v1/models/bingal/llamafile-models/repo?Revision=master&FilePath=Qwen-7B-Chat/Qwen-7B-Chat-q4_0.llamafile


2. 第二步:运行

Windows 系统

  • 修改文件名,增加 .exe 后缀,如改成 Qwen-7B-Chat-q4_0.exe
  • 打开 cmd 或者 terminal命令行窗口,进入模型所在目录
.\Qwen-7B-Chat-q4_0.exe


Linux、Mac 系统

  • 终端运行
  • 如果您使用的是 macOS、Linux 或 BSD,则需要授予计算机执行此新文件的权限。 (您只需执行一次。)
chmod +x Qwen-7B-Chat-q4_0.llamafile
  • 运行llama文件,例如:
./Qwen-7B-Chat-q4_0.llamafile


3. 类 openai api 网址

接口网址:http://127.0.0.1:8080/v1

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 推理。


相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
相关文章
|
8天前
|
人工智能 机器人 测试技术
使用LM Studio在本地运行LLM完整教程
GPT-4被普遍认为是最好的生成式AI聊天机器人,但开源模型一直在变得越来越好,并且通过微调在某些特定领域是可以超过GPT4的。
1642 1
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
【大模型】使用哪些资源来了解 LLM 的最新进展?
【5月更文挑战第9天】【大模型】使用哪些资源来了解 LLM 的最新进展?
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
LLM 大模型学习必知必会系列(一):大模型基础知识篇
LLM 大模型学习必知必会系列(一):大模型基础知识篇
LLM 大模型学习必知必会系列(一):大模型基础知识篇
|
2天前
|
数据采集 物联网 API
LLM 大模型学习必知必会系列(五):数据预处理(Tokenizer分词器)、模板(Template)设计以及LLM技术选型
LLM 大模型学习必知必会系列(五):数据预处理(Tokenizer分词器)、模板(Template)设计以及LLM技术选型
LLM 大模型学习必知必会系列(五):数据预处理(Tokenizer分词器)、模板(Template)设计以及LLM技术选型
|
8天前
|
自然语言处理 搜索推荐 知识图谱
【大模型】描述与 LLM 相关的个人项目或感兴趣的领域
【5月更文挑战第9天】【大模型】描述与 LLM 相关的个人项目或感兴趣的领域
|
8天前
|
存储 安全 数据安全/隐私保护
【大模型】如何确保负责任地开发和部署 LLM?
【5月更文挑战第7天】【大模型】如何确保负责任地开发和部署 LLM?
|
8天前
|
机器学习/深度学习 人工智能 安全
【大模型】LLM的广泛采用有哪些潜在的社会影响?
【5月更文挑战第7天】【大模型】LLM的广泛采用有哪些潜在的社会影响?
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
【大模型】LLM研究和开发的一些新兴趋势
【5月更文挑战第7天】【大模型】LLM研究和开发的一些新兴趋势
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
【大模型】如何向非技术受众解释LLM的概念及其能力?
【5月更文挑战第7天】【大模型】如何向非技术受众解释LLM的概念及其能力?
|
8天前
|
监控 搜索推荐 安全
【大模型】哪些关键考虑因素使用 LLM 进行客户服务交互
【5月更文挑战第7天】【大模型】哪些关键考虑因素使用 LLM 进行客户服务交互