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

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 为了方便更多的零基础的初学者体验大语言模型,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盲盒。
相关文章
|
6月前
|
人工智能 机器人 测试技术
使用LM Studio在本地运行LLM完整教程
GPT-4被普遍认为是最好的生成式AI聊天机器人,但开源模型一直在变得越来越好,并且通过微调在某些特定领域是可以超过GPT4的。
2739 1
|
1月前
|
Shell Docker Python
LLM-02 大模型 本地部署运行 ChatGLM3-6B(13GB) 双卡2070Super8GB 环境配置 单机多卡 基于LLM-01章节 继续乘风破浪 为大模型微调做准备
LLM-02 大模型 本地部署运行 ChatGLM3-6B(13GB) 双卡2070Super8GB 环境配置 单机多卡 基于LLM-01章节 继续乘风破浪 为大模型微调做准备
46 1
|
1月前
|
并行计算 算法 Shell
LLM-01 大模型 本地部署运行 ChatGLM2-6B-INT4(6GB) 简单上手 环境配置 单机单卡多卡 2070Super8GBx2 打怪升级!
LLM-01 大模型 本地部署运行 ChatGLM2-6B-INT4(6GB) 简单上手 环境配置 单机单卡多卡 2070Super8GBx2 打怪升级!
60 1
|
3月前
|
人工智能 安全 机器人
LLM对齐数据全自动合成!UW华人博士生提出Magpie方法,Macbook Air即可运行
【8月更文挑战第11天】在AI领域,大型语言模型(LLM)的行为对齐一直是个挑战。华盛顿大学研究人员提出名为Magpie的新方法,能自动高效生成高质量指令数据,减少人工干预,提升LLM的对齐效果。通过输入模板,Magpie利用已对齐LLM生成能力自动生成指令数据,仅需少量GPU资源即可创建大规模数据集。实验显示,使用Magpie数据集微调的模型性能媲美传统监督方法。尽管如此,Magpie仍需进一步优化以生成特定领域指令并确保数据安全性。[论文](https://arxiv.org/abs/2406.08464)
161 60
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
【LLM】能够运行在移动端的轻量级大语言模型Gemma实践
【4月更文挑战第12天】可以运行在移动端的开源大语言模型Gemma模型介绍
309 0
|
6月前
|
人工智能 iOS开发 MacOS
Ollama--本地大语言模型LLM运行专家
Ollama--本地大语言模型LLM运行专家
1986 2
|
30天前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
232 2
|
24天前
|
机器学习/深度学习 人工智能 运维
企业内训|LLM大模型在服务器和IT网络运维中的应用-某日企IT运维部门
本课程是为某在华日资企业集团的IT运维部门专门定制开发的企业培训课程,本课程旨在深入探讨大型语言模型(LLM)在服务器及IT网络运维中的应用,结合当前技术趋势与行业需求,帮助学员掌握LLM如何为运维工作赋能。通过系统的理论讲解与实践操作,学员将了解LLM的基本知识、模型架构及其在实际运维场景中的应用,如日志分析、故障诊断、网络安全与性能优化等。
55 2
|
28天前
|
机器学习/深度学习 数据采集 人工智能
文档智能 & RAG 让AI大模型更懂业务 —— 阿里云LLM知识库解决方案评测
随着数字化转型的深入,企业对文档管理和知识提取的需求日益增长。阿里云推出的文档智能 & RAG(Retrieval-Augmented Generation)解决方案,通过高效的内容清洗、向量化处理、精准的问答召回和灵活的Prompt设计,帮助企业构建强大的LLM知识库,显著提升企业级文档管理的效率和准确性。
|
7天前
|
自然语言处理 开发者
多模态大模型LLM、MLLM性能评估方法
针对多模态大模型(LLM)和多语言大模型(MLLM)的性能评估,本文介绍了多种关键方法和标准,包括模态融合率(MIR)、多模态大语言模型综合评估基准(MME)、CheckList评估方法、多模态增益(MG)和多模态泄露(ML),以及LLaVA Bench。这些方法为评估模型的多模态和多语言能力提供了全面的框架,有助于研究者和开发者优化和改进模型。

热门文章

最新文章