在 Intel Arc GPU 上跑Ollama


原文地址:https://test-bigdl-llm.readthedocs.io/en/main/doc/LLM/Quickstart/llama_cpp_quickstart.html#

以下是对提供内容的中文翻译,去除了影响阅读的 HTML 标签:


你可以通过以下链接查看运行在 Intel Arc GPU 上的 LLaMA2-7B 的演示。

注意

ipex-llm[cpp] 版本 2.5.0b20240527 与 llama.cpp 的 c780e75 一致。

我们当前的版本与 llama.cpp 的 62bfef5 一致。

快速开始#

这份快速入门指南将带你完成安装和运行 llama.cppipex-llm 的过程。

0 前提条件#

IPEX-LLM 对 llama.cpp 的支持现在已经可以在 Linux 系统和 Windows 系统上使用。

Linux#

对于 Linux 系统,我们推荐使用 Ubuntu 20.04 或更高版本(首选 Ubuntu 22.04)。

访问 在装有 Intel GPU 的 Linux 上安装 IPEX-LLM,按照 安装 Intel GPU 驱动程序安装 oneAPI 来安装 GPU 驱动程序和 Intel® oneAPI Base Toolkit 2024.0。

Windows(可选)#

IPEX-LLM 后端对 llama.cpp 仅支持较新的 GPU 驱动程序。请确保你的 GPU 驱动程序版本等于或更新于 31.0.101.5333,否则你可能会看到乱码输出。

如果你的 GPU 驱动程序版本较低,请访问 在装有 Intel GPU 的 Windows 上安装 IPEX-LLM 指南,并按照 更新 GPU 驱动程序

1 安装 IPEX-LLM for llama.cpp#

要使用 llama.cpp 与 IPEX-LLM,首先确保已安装 ipex-llm[cpp]

LinuxWindows

conda create -n llm-cpp python=3.11
conda activate llm-cpp
pip install --pre --upgrade ipex-llm[cpp]

复制到剪贴板

请在 Miniforge Prompt 中运行以下命令。

conda create -n llm-cpp python=3.11
conda activate llm-cpp
pip install --pre --upgrade ipex-llm[cpp]

复制到剪贴板

安装完成后,你应该已经创建了一个名为 llm-cpp 的 conda 环境,用于运行带有 IPEX-LLM 的 llama.cpp 命令。

2 设置运行 llama.cpp#

首先,你应该创建一个目录来使用 llama.cpp,例如,使用以下命令创建一个 llama-cpp 目录并进入它。

mkdir llama-cpp
cd llama-cpp

复制到剪贴板

使用 IPEX-LLM 初始化 llama.cpp#

然后,你可以使用以下命令使用 IPEX-LLM 初始化 llama.cpp

LinuxWindows

init-llama-cpp

复制到剪贴板

在运行 init-llama-cpp 后,你应该在当前目录中看到许多 llama.cpp 的可执行文件的软链接和一个 convert.py

请在 Miniforge Prompt 中以 管理员权限运行以下命令

init-llama-cpp.bat

复制到剪贴板

在运行 init-llama-cpp.bat 后,你应该在当前目录中看到许多 llama.cpp 的可执行文件的软链接和一个 convert.py

注意

init-llama-cpp 会在当前目录中创建 llama.cpp 的可执行文件的软链接,如果你想在其他地方使用这些可执行文件,不要忘记再次运行上述命令。

注意

如果你安装了更高版本的 ipex-llm[cpp] 并想要升级你的二进制文件,不要忘记先删除旧的二进制文件,然后再次使用 init-llama-cppinit-llama-cpp.bat 初始化。

现在你可以按照标准的 llama.cpp 用法使用这些可执行文件。

运行时配置#

要使用 GPU 加速,在运行 llama.cpp 之前需要设置几个环境变量。

LinuxWindows

source /opt/intel/oneapi/setvars.sh
export SYCL_CACHE_PERSISTENT=1

复制到剪贴板

请在 Miniforge Prompt 中运行以下命令。

set SYCL_CACHE_PERSISTENT=1

复制到剪贴板

提示

如果你的本地 LLM 在装有 Linux 操作系统(内核 6.2)的 Intel Arc™ A-Series 图形上运行,建议额外设置以下环境变量以获得最佳性能:

export SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=1

复制到剪贴板

3 示例:使用 IPEX-LLM 运行社区 GGUF 模型#

这里我们提供一个简单的示例,展示如何使用 IPEX-LLM 运行社区 GGUF 模型。

模型下载#

在运行之前,你应该下载或复制社区 GGUF 模型到你当前的目录。例如,Mistral-7B-Instruct-v0.1-GGUFmistral-7b-instruct-v0.1.Q4_K_M.gguf

运行量化模型#

LinuxWindows

./main -m mistral-7b-instruct-v0.1.Q4_K_M.gguf -n 32 --prompt "Once upon a time, there existed a little girl who liked to have adventures. She wanted to go to places and meet new people, and have fun" -t 8 -e -ngl 33 --color

复制到剪贴板

有关每个参数含义的更多详细信息,你可以使用 ./main -h

请在 Miniforge Prompt 中运行以下命令。

main -m mistral-7b-instruct-v0.1.Q4_K_M.gguf -n 32 --prompt "Once upon a time, there existed a little girl who liked to have adventures. She wanted to go to places and meet new people, and have fun" -t 8 -e -ngl 33 --color

复制到剪贴板

有关每个参数含义的更多详细信息,你可以使用 main -h

示例输出#

Log start
main: build = 1 (38bcbd4)
main: built with Intel(R) oneAPI DPC++/C++ Compiler 2024.0.0 (2024.0.0.20231017) for x86_64-unknown-linux-gnu
main: seed  = 1710359960
ggml_init_sycl: GGML_SYCL_DEBUG: 0
ggml_init_sycl: GGML_SYCL_F16: no
found 8 SYCL devices:
|ID| Name                                        | compute capability | Max compute units | Max work group | Max sub group | Global mem size |
|--|---------------------------------------------|------------------|-----------------|--------------|-------------|---------------|
| 0| Intel(R) Arc(TM) A770 Graphics            | 1.3              | 512              | 1024          | 32           | 16225243136   |
| 1| Intel(R) FPGA Emulation Device           | 1.2              | 32               | 67108864      | 64           | 67181625344   |
| 2| 13th Gen Intel(R) Core(TM) i9-13900K     | 3.0              | 32               | 8192          | 64           | 67181625344   |
| 3| Intel(R) Arc(TM) A770 Graphics            | 3.0              | 512              | 1024          | 32           | 16225243136   |
| 4| Intel(R) Arc(TM) A770 Graphics            | 3.0              | 512              | 1024          | 32           | 16225243136   |
| 5| Intel(R) UHD Graphics 770                  | 3.0              | 32               | 512           | 32           | 53745299456   |
| 6| Intel(R) Arc(TM) A770 Graphics            | 1.3              | 512              | 1024          | 32           | 16225243136   |
| 7| Intel(R) UHD Graphics 770                  | 1.3              | 32               | 512           | 32           | 53745299456   |
detect 2 SYCL GPUs: [0,6] with Max compute units: 512
llama_model_loader: loaded meta data with 20 key-value pairs and 291 tensors from ~/mistral-7b-instruct-v0.1.Q4_K_M.gguf (version GGUF V2)
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = llama
llama_model_loader: - kv 1: general.name str = mistralai_mistral-7-b-instruct-v0.1
...(此处省略部分输出内容)...
llama_print_timings:        total time =    xx.xx ms /    62 tokens
Log end

声明:八零秘林|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 在 Intel Arc GPU 上跑Ollama


记忆碎片 · 精神拾荒