当前位置:首页|资讯

编译运行 llama.cpp (vulkan, Intel GPU SYCL)

作者:穷人小水滴发布时间:2024-09-23

首发日期 2024-08-23, 以下为原文内容:

llama.cpp 是一个运行 AI (神经网络) 语言大模型的推理程序,支持多种 后端 (backend), 也就是不同的具体的运行方式,比如 CPU 运行, GPU 运行等.

但是编译运行 llama.cpp 并不是那么容易的,特别是对于 SYCL 后端 (用于 Intel GPU), 坑那是一大堆.只有特定版本的 llama.cpp, 特定版本的 Linux 系统和 GPU 驱动程序, 才可能成功运行,否则都是失败.能够运行的版本还不是最新版本, 经过了大量尝试和失败, 才获得了本文的结果.本文适用于 Intel GPU (A770) 和 Linux 操作系统.

这里是 穷人小水滴, 专注于 穷人友好型 低成本技术.

相关文章:

  • 《QEMU/KVM 虚拟机显卡透传 (vfio-pci)》

  • 《自制神之嘴: fish-speech 容器镜像 (文本转语音 AI 大模型)》

目录

1 下载 llama.cpp 源代码

可以从网页下载: https://github.com/ggerganov/llama.cpp

也可以使用 git 命令 (下载 b3600 版本):

下载 b3038 版本:

vulkan 后端参考文档:

SYCL 后端参考文档:

下载 GGUF 模型文件 (llama-2-7b.Q4_K_M.gguf):https://hf-mirror.com/TheBloke/Llama-2-7B-GGUF

2 编译 llama.cpp

为了方便, 窝们使用容器 (podman) 来进行编译.首先构建基础镜像, Dockerfile 如下:

执行命令:

结果:

2.1 编译 vulkan 后端

Dockerfile 如下:

执行命令:

结果:

2.2 编译 SYCL (Intel oneAPI) 后端

Dockerfile 如下:

执行命令:

结果:

3 运行测试

由于 Intel SYCL 只能在特定系统的特定驱动版本才能正常运行,所以使用了虚拟机 GPU 透传 (详见文章 《QEMU/KVM 虚拟机显卡透传 (vfio-pci)》).

在这篇文章的虚拟机的基础上, 需要额外安装软件包:

重启虚拟机. 虚拟机内的相关信息如下:

把上面编译的 llama.cpp 程序 (以及 gguf 模型文件) 复制到虚拟机:

3.1 vulkan 运行测试

使用模型 llama-2-7b.Q4_K_M.gguf, 生成长度 200:

生成速度约为 25.90 tokens per second, 也就是每秒输出 25.9 个字符.

3.2 SYCL 运行测试

使用模型 llama-2-7b.Q4_K_M.gguf, 生成长度 200:

生成速度约为 30.53 tokens per second, 也就是每秒输出 30.5 个字符.

4 总结与展望

本文使用容器 (podman) 编译了 llama.cpp 的 vulkan 后端和 SYCL 后端,并成功在 Intel GPU (A770) 运行, 获得了较快的语言模型推理速度.

SYCL 后端比 vulkan 后端稍微快一点, 但不多.使用的模型 (gguf), 生成长度, 软件驱动版本, 运行参数设置等很多因素,都可能影响模型推理的速度, 所以本文中的运行速度仅供参考.

SYCL 比 vulkan 快不了多少, 但是使用 SYCL (Intel oneAPI) 却非常麻烦 !!所以, 至少目前为止, 对于 A770 (16GB) 显卡来说, 使用 vulkan 即可,强行使用 SYCL 的意义不大.

Intel 和 llama.cpp 对于 SYCL 还需要继续努力, 希望能够更方便, 更快速的运行大模型.

本文使用 CC-BY-SA 4.0 许可发布.

本文使用 Bilibili-Markdown 工具进行格式化排版:https://www.bilibili.com/read/cv18986956/


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1