windows环境使用intel核显GPU跑LLM大模型

前言

现在流行玩大模型,跟风玩了一下本地化部署。HP ProBook 450 G10笔记本,i51340P+16G,Win11家庭版,简单架了一个Ollama+Open WebUI环境,纯CPU试了Qwen2.5的0.5B、1.5B、3B、7B、14B,模型越大回复就越靠谱,也回复越慢,到了7B就要等老半天才有消息返回,于是想用核显的GPU来参与运算。

概述

花了几天摸索,各类文档内容看着比较乱,大致总结如下:

  1. 英特尔有提供ipex-llm库来实现英特尔核显GPU加速。ipex-llm/README.zh-CN.md at main · intel-analytics/ipex-llm · GitHub
  2. 对英特尔的显卡驱动版本有要求,31.0.101.5122。我本机是13代Cpu,Iris的显卡,驱动升级后满足要求。
  1. 英特尔官网对7代-10代的CPU核显提供的最高驱动版本为31.0.101.2130,我在另一台i7-9700T(核显UHD Graphics 630)上运行ipex-llm会报错,提示"InvalidModule: Invalid SPIR-V module: unsupported SPIR-V version number 'unknown (66560)'. Range of supported/known SPIR-V versions is 1.0 (65536) - 1.3 (66304)",因此至少需要11代CPU的核显才能加速。
  2. 用ipex-llm[cpp]为Ollama提供支持,使用ipex-llm内置的Ollama简单方便。

主要过程

  • 显卡驱动升级:到英特尔官网下载最新显卡驱动并安装。请在任务管理器确认所使用的核显型号,确定属于最新驱动支持的范围「链接」
  • 下载安装Miniforgeconda-forge | community-driven packaging for conda | conda-forge | community-driven packaging for conda
  • 安装ipex-llm[cpp]:在Miniforge Prompt命令行窗口中,依次执行下述三个命令行,安装ipex-llm[cpp]
  • conda create -n llm-cpp python=3.11
    conda activate llm-cpp
    pip install --pre --upgrade ipex-llm[cpp]
  • 初始化llama-cpp和Ollama:在Miniforge Prompt命令行窗口中,依次使用mkdir和cd命令,创建并进入llama-cpp文件夹,然后运行init-llama-cpp.bat和init-ollama.bat做初始化安装。
  • mkdir llama-cpp
    cd llama-cpp
    init-llama-cpp.bat
    init-ollama.bat
    • 运行Ollama:如果Miniforge Prompt命令行窗口当前目录不在llama-cpp内,需要先使用cd命令进入llama-cpp文件夹,然后执行环境配置与服务启动。(注:服务期间此窗口不可关闭,结束Ollama服务可以按Ctrl+C中断运行)
    conda activate llm-cpp
    cd llama-cpp
    set OLLAMA_NUM_GPU=999
    set no_proxy=localhost,127.0.0.1
    set ZES_ENABLE_SYSMAN=1
    set SYCL_CACHE_PERSISTENT=1
    set SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=1
    
    ollama serve

    使用

    • 到Ollama官网,找个准备使用的大模型,我这里选择的是阿里的大模型qwen2.5Tags · qwen2.5,示例使用1.5b-instruct调教版本,复制运行命令行“ollama run qwen2.5:1.5b-instruct”。
    • 新开一个Miniforge Prompt命令行窗口(此时Ollama服务窗口应仍在继续运行中),进入llama-cpp目录,执行“ollama run qwen2.5:1.5b-instruct”,会自动下载模型文件,完毕后即可与大模型对话。可以在任务管理器观察到GPU被调用。
    • 使用浏览器,访问本机11434端口,通过API方式访问Ollama。

    问题

    • 运行qwen2.5:14b-instruct,提示资源不足,运行失败。
    • 运行qwen2.5:7b-instruct,能运行,速度还行,但在连续做大量推理后,比如写长篇作文,写着写着后面的内容就写成其它的内容了,比如报告、试题之类,无休无止,强行结束。
    • 换了llama3.1:8b-instruct-q4_K_M,和qwen2.5:7b一样,能运行,大量推理后回复内容出错。
    • 修改Ollama启动参数set OLLAMA_NUM_GPU=0,纯CPU方式来跑qwen2.5:7b和llama3.1:8b,慢,但输出的内容基本正常。
    • 修改Ollama启动参数set OLLAMA_NUM_GPU=10,放一部分运算到GPU中,可见GPU未跑满,略微速度提升,CPU占满。

    结束语

    纯CPU情况顶多能跑个3b的模型,要想内容更加精准有效,14b应该是个比较折中的选择。通过对Ollama参数的优化,相信能够充分发挥出硬件资源的作用,欢迎大家共同探讨交流。

    原文链接:,转发请注明来源!