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

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,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 推理。


相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
5月前
|
人工智能 机器人 测试技术
使用LM Studio在本地运行LLM完整教程
GPT-4被普遍认为是最好的生成式AI聊天机器人,但开源模型一直在变得越来越好,并且通过微调在某些特定领域是可以超过GPT4的。
2507 1
|
2月前
|
人工智能 安全 机器人
LLM对齐数据全自动合成!UW华人博士生提出Magpie方法,Macbook Air即可运行
【8月更文挑战第11天】在AI领域,大型语言模型(LLM)的行为对齐一直是个挑战。华盛顿大学研究人员提出名为Magpie的新方法,能自动高效生成高质量指令数据,减少人工干预,提升LLM的对齐效果。通过输入模板,Magpie利用已对齐LLM生成能力自动生成指令数据,仅需少量GPU资源即可创建大规模数据集。实验显示,使用Magpie数据集微调的模型性能媲美传统监督方法。尽管如此,Magpie仍需进一步优化以生成特定领域指令并确保数据安全性。[论文](https://arxiv.org/abs/2406.08464)
146 60
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
【LLM】能够运行在移动端的轻量级大语言模型Gemma实践
【4月更文挑战第12天】可以运行在移动端的开源大语言模型Gemma模型介绍
277 0
|
5月前
|
人工智能 iOS开发 MacOS
Ollama--本地大语言模型LLM运行专家
Ollama--本地大语言模型LLM运行专家
1855 2
|
2月前
|
人工智能 自然语言处理
公理训练让LLM学会因果推理:6700万参数模型比肩万亿参数级GPT-4
【8月更文挑战第3天】新论文提出“公理训练”法,使仅有6700万参数的语言模型掌握因果推理,性能媲美万亿级GPT-4。研究通过大量合成数据示例教授模型因果公理,实现有效推理并泛化至复杂图结构。尽管面临合成数据需求大及复杂关系处理限制,此法仍为语言模型的因果理解开辟新途径。[链接: https://arxiv.org/pdf/2407.07612]
55 1
|
17天前
|
存储 机器学习/深度学习 物联网
CGE:基于Causal LLM的Code Embedding模型
CodeFuse-CGE 项目在外滩大会展出,吸引众多技术与产品从业者的关注。“文搜代码”功能备受好评,模型表现令人期待。CodeFuse-CGE 采用大语言模型,通过 LoRA 微调提取文本与代码嵌入,实现在多个 NL2Code 基准测试中超越现有 SOTA 模型。现已开源 CGE-Large 与 CGE-Small 两种模型,欢迎访问 GitHub 页并支持本项目。[项目地址](https://github.com/codefuse-ai/CodeFuse-CGE)
42 1
|
22天前
|
安全 测试技术
世界模型又近了?MIT惊人研究:LLM已模拟现实世界,绝非随机鹦鹉!
【9月更文挑战第14天】麻省理工学院最近的研究揭示了大型语言模型(LLM)展现出的新潜能,其不仅能模仿真实环境,更在一定程度上理解并模拟程序在特定环境下的运作。通过使用Transformer模型并结合特定探测分类器,研究团队发现模型能逐步掌握程序的形式语义。为了验证这一发现,团队创建了一个独特的干预基准测试,进一步证实了模型的仿真能力,为世界模型的发展提供了新方向。尽管存在模型可能仅习得统计规律而非真正理解语义的争议,这项研究依然为理解复杂系统提供了新工具与视角。论文详情见:https://arxiv.org/abs/2305.11169。
27 1
|
3月前
|
人工智能 JSON 自然语言处理
国内大模型LLM选择以及主流大模型快速使用教程[GLM4/Qwen/Baichuan/Coze/Kimi]
【7月更文挑战第7天】国内大模型LLM选择以及主流大模型快速使用教程[GLM4/Qwen/Baichuan/Coze/Kimi]
176 10
国内大模型LLM选择以及主流大模型快速使用教程[GLM4/Qwen/Baichuan/Coze/Kimi]
|
3月前
|
自然语言处理 API 开发工具
初识langchain:LLM大模型+Langchain实战[qwen2.1、GLM-4]+Prompt工程
【7月更文挑战第6天】初识langchain:LLM大模型+Langchain实战[qwen2.1、GLM-4]+Prompt工程
初识langchain:LLM大模型+Langchain实战[qwen2.1、GLM-4]+Prompt工程
|
3月前
|
搜索推荐 人工智能
人工智能LLM问题之大模型特殊能力如何解决
人工智能LLM问题之大模型特殊能力如何解决
下一篇
无影云桌面