
为了让AMD显卡支持Ollama大模型,我们需要完成以下准备工作。首先,请从AMD官网下载HIP SDK
https://www.amd.com/en/developer/resources/rocm-hub/hip-sdk.html
如果官网没有列出您的显卡型号,可以参考相关教程
如这篇文章中(roclibs 编译部分及置顶评论部分),使用roclibs替换对应文件。
接下来,我们需要从GitHub下载Ollama代码库。在命令行中输入
git clone https://github.com/ollama/ollama.git
即可获取整个代码库。
然后编辑
https://github.com/ollama/ollama/blob/main/llm/generate/gen_windows.ps1
在amd 显卡列表中添加的你的显卡型号 如 gfx1103.gfx1031...
(非核显用户无需修改)对于部分核显,由于ollama 屏蔽了核显,还需要修改
ollama/gpu/amd_windows.go
第20行 iGPUName = "AMD Radeon(TM) Graphics" ,文中还有几段其他内容。
为了方便,我们把这个内容修改成一个不存在的名称即可 如 iGPUName = “ AMD 2024 Graphics”,这样就不会把amd的核显识别为 核显了。
随后,安装Visual Studio或MinGW(https://www.mingw-w64.org/)作为代码编辑或集成开发环境(IDE)。具体环境搭建请参考ollama 官方 https://github.com/ollama/ollama/blob/main/docs/development.md#windows
编辑部分
安装完毕后,用Visual Studio打开Ollama文件夹,并在文件夹上右击,打开终端。在终端中输入以下命令:
$env:CGO_ENABLED="1"
go generate ./...
这将自动下载所需的文件。
然后,使用VS Code或其他代码编辑器全局搜索“gfx1102”,这是Ollama当前支持的显卡型号。在搜索结果中,大家需要根据自己的显卡型号(例如gfx1103),在相应位置添加自己的显卡型号。主要修改位于llm/generate文件夹下的gen_windows.ps1文件。
修改完成后,回到Ollama的根目录,再次运行之前的命令,并输入go build .进行构建。构建完成后,将在目录中生成ollama.exe文件。
现在,大家可以通过命令行运行./ollama serve来启动服务,并在同一文件夹中运行./ollama run llama3来使您的显卡运行llama3模型。
如果觉得这样以后用起来过程太繁琐,大家可以选择编译Ollama同样的官方安装包。按照app/README.md文件中的说明进行操作。首先,下载并安装Inno Setup(https://jrsoftware.org/isinfo.php)。然后,在Ollama的根目录运行以下PowerShell命令:
powershell -ExecutionPolicy Bypass -File .\scripts\build_windows.ps1
执行完毕后,将在dist文件夹中找到生成的安装包。安装并运行该安装包即可。
注意事项
如果大家使用zluda并遇到兼容性问题,请尝试移除zluda文件夹中的nvml.dll文件。该文件可能导致AMD显卡被错误识别为N卡,并可能影响Ollama的正常运行。通常情况下,移除该文件不会影响zluda的基本功能。
若大家希望改善Ollama的终端界面体验,可以考虑使用lobe chat作为替代界面。从GitHub下载lobe chat(https://github.com/lobehub/lobe-chat),并按照说明进行安装和配置。通过lobe chat的界面,大家可以更方便地运行和管理Ollama。
官方支持列表参考, "gfx900" "gfx906:xnack-" "gfx908:xnack-" "gfx90a:xnack+" "gfx90a:xnack-" "gfx940" "gfx941" "gfx942" "gfx1010""gfx1012" "gfx1030" "gfx1100""gfx1101" "gfx1102"( 以上请直接下载官方版本)
附上 编译好的版本,添加支持"gfx803" "gfx902" "gfx90c:xnack-""gfx940" "gfx941" "gfx942" "gfx1010:xnack-" "gfx1011" "gfx1012:xnack-" "gfx1030" "gfx1031" "gfx1032""gfx1034" "gfx1035" "gfx1036" "gfx1103"
使用方法:
下载安装后。需要额外下载 编译好的Rocblas(见评论置顶,如没有你的显卡可以自行编译rocblas 见文章链接)。
Rocblas.dll覆盖SDK自带的rocblas.dll,并且把rocblas.dll放在HIP SDK 文件(如没有,请自行下载)相对路径,以及替换library文件夹(例如SDK自带的C:\ROCM\5.7\bin\rocblas\library),即可在指定的显卡上正常运行。
第二步,替换ollama 程序目录下的rocblas.dll 文件和Library 文件夹,例如(C:\Users\IAM\AppData\Local\Programs\Ollama\rocm中文的同名文件及文件夹)
然后即可正常让ollama 在显卡上运行了。如无法正常运行,请尝试自行编译。
关于部分型号如 gfx90c:xnack-,gfx1010:xnack-, gfx1012:xnack-如果无法正常运行 需要在环境变量中设置 HSA_OVERRIDE_GFX_VERSION=9.0.12(gfx90c) , HSA_OVERRIDE_GFX_VERSION=10.1.2 (gfx1012) .
然后在C:\Users\usrname\AppData\Local\Programs\Ollama\ollama_runners\rocm_v5.7中打开命令窗口:
./ollama serve
另外打开一个命令窗口 运行(例如):
./ollama run llama3
大多情况可以顺利显卡加载
编译好的下载链接
https://github.com/likelovewant/ollama-for-amd/releases/download/
各系列 Rocblas.dll 相关文件已整合进入 https://github.com/likelovewant/ROCmLibs-for-gfx1103-AMD780M-APU
关于更新:无论是自己编译还是使用本文链接编译好的文件。安装后都会有官方的更新提醒。请不要点击更新。否则会被官方版本自动覆盖。然后你的显卡会再次失灵。需要自己重新编译或到已经编译好的仓库自行下载最新版。或者安装官方版本后用 编译好的zip 文件覆盖也行。
部分问题答案,大家可以在评论区找到。请自行查找