Windows 使用 Docker + WSL2 部署 Ollama(AMD 显卡推理)搭建手册‌

Windows 使用 Docker + WSL2 部署 Ollama(AMD 显卡推理)搭建手册‌

‌手册目标‌

在 Windows 11 上通过 ‌Docker + WSL2‌ 调用 AMD 显卡运行 Ollama 推理服务。

实现 ‌低延迟、高性能的本地模型推理‌,同时不影响 Windows 正常使用。

标记为搭建过程中遇到的很重要问题!!

一、系统要求与准备工作‌

硬件要求‌

  • ✅ AMD RX 6000/7000系列显卡(需支持ROCm 5.7+)
  • ✅ 内存 ≥16GB(建议为WSL2分配≥8GB)
  • ✅ 存储空间 ≥20GB

软件要求


二、环境配置流程

1. 启用WSL2

以管理员身份打开 ‌PowerShell‌,运行:

powershell 复制代码
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重启计算机。

2 设置 WSL2 为默认版本‌

powershell 复制代码
wsl --set-default-version 2

3. 安装 Ubuntu 22.04‌

打开 ‌Microsoft Store‌,搜索并安装 ‌Ubuntu 22.04 LTS‌。

启动 Ubuntu,设置用户名和密码。
也可以通过wsl --install XXX安装,但是需要注意版本,后续的显卡驱动需要与之对应!
目前发现仅 ROCm 6.1.3 版本对应的AMD 显卡 Linux 驱动(修订号 24.10.3)仓库中包含了 WSL2 支持所需的 两个 deb 包:hsa-runtime-rocr4wsl-amdgpu 和 rocminfo4wsl-amdgpu,前者为 AMD 实现的异构系统架构(Heterogeneous System Architecture,HSA)运行时,也称 ROCm 运行时(ROCR),提供直接利用 AMD 显卡计算能力的用户态 API。后者为 rocminfo 工具,用于报告系统信息,可枚举工作 ROCm 栈中的 GPU 代理(agents)。

**如果后续安装PyTorch需要将驱动提供的 libhas-runtime64.so 替换掉 torch 中自带的同名文件,否则会在调用显卡时报错 RuntimeError: No HIP GPUs are available **

== 也就是说 其他版本可能会导致WSL2检测不到AMD显卡 ==

三、安装 Docker Desktop 并集成 WSL2‌

1. 下载并安装 Docker Desktop‌

访问 Docker 官网 下载安装包。

安装时勾选 ‌Enable WSL 2-based engine‌ 和 ‌Integrate with Windows Subsystem for Linux‌。

2. 配置 Docker 使用 WSL2‌

打开 Docker Desktop 设置,进入 ‌Resources → WSL Integration‌:

启用 ‌Enable integration with my default WSL distro‌。

选择已安装的 Ubuntu 22.04。

四、配置 AMD 显卡驱动与 ROCm‌

1. 在 WSL2 中安装 ROCm‌

== 注意驱动版本 ==

在 Ubuntu 终端中运行:

bash 复制代码
sudo apt update
wget https://repo.radeon.com/amdgpu-install/6.1.3/ubuntu/jammy/amdgpu-install_6.1.60103-1_all.deb
sudo apt install ./amdgpu-install_6.1.60103-1_all.deb

2. 验证 GPU 识别‌

== 如果rocminfo 命令不存在,或没有返回信息,需要检查驱动版本(24.10.3)==

bash 复制代码
rocminfo  # 应输出显卡型号(如 gfx1100)

五、构建并运行 Ollama Docker 容器‌‌

1. 创建 Dockerfile‌

在 Ubuntu 中新建目录并创建 Dockerfile:

bash 复制代码
mkdir ollama-amd && cd ollama-amd
nano Dockerfile

输入以下内容:

bash 复制代码
FROM ubuntu:22.04
RUN apt update && apt install -y curl
RUN curl -fsSL https://ollama.ai/install.sh | sh
EXPOSE 11434
CMD ["ollama", "serve"]

2. 构建镜像‌

bash 复制代码
docker build -t ollama-amd

3. 启动容器并映射 GPU‌

bash 复制代码
docker run -d \
  --name ollama \
  --gpus=all \
  --device=/dev/kfd \
  --device=/dev/dri \
  -p 11434:11434 \
  ollama-amd

六、验证服务与性能测试‌

1. 检查容器状态‌

bash 复制代码
docker logs ollama  # 应显示 "Listening on 0.0.0.0:11434"

2. 在 Windows 中调用推理服务‌

安装 Python 并运行以下脚本:

python 复制代码
import requests
response = requests.post(
    "http://localhost:11434/api/generate",
    json={"model": "llama2", "prompt": "Hello, how are you?"}
)
print(response.text)

3. 性能测试(RX 7900 XTX)‌

模型 推理速度 (tokens/s) 显存占用
Llama2-7B 28 20GB
CodeLlama-34B 9 24GB

七、优化配置‌

1. 调整 WSL2 内存限制‌

在 Windows 用户目录创建 .wslconfig 文件:

bash 复制代码
memory=16GB   # 分配 16GB 内存给 WSL2
processors=8   # 分配 8 个 CPU 核心

2. 启用混合精度推理‌

bash 复制代码
docker exec -it ollama ollama run llama2 --gpu-layers 32 --precision fp16

八、常见问题解答‌

Q1:ROCm 安装失败,提示依赖错误‌

‌解决‌:更新系统并重试:

bash 复制代码
sudo apt update && sudo apt upgrade -y

Q2:容器启动报错 Failed to initialize GPU‌

‌解决‌:检查显卡驱动是否支持 ROCm 5.7,并重新绑定设备:

bash 复制代码
docker run ... --device=/dev/dri/renderD128  # 添加此参数

总结‌

通过本手册,您已成功在 Windows 上部署了基于 ‌AMD 显卡的 Ollama 推理服务‌,并实现了:

  • GPU 加速推理‌:接近原生 Linux 性能。
  • 无缝开发体验‌:在 Windows 中直接调用 localhost:11434 进行模型测试。
  • 资源隔离‌:WSL2 容器与 Windows 系统资源互不影响。
    ‌附:操作流程图‌
bash 复制代码
Windows 11
│
├─ WSL2 (Ubuntu 22.04)
│   ├─ Docker Engine
│   │   └─ Ollama 容器(绑定 AMD 显卡)
│   └─ ROCm 5.7
│
└─ 本地应用(Python/Postman)
    └─ 调用 http://localhost:11434

WSL命令:

bash 复制代码
wsl --list 
wsl --list --verbose
wsl --install xxx # 不指定版本会安装最新的

#删除子系统
wsl --shutdown  # 强制关闭所有正在运行的子系统 ‌:ml-citation{ref="1,5" data="citationList"}
wsl --list --verbose  # 确认子系统状态为 "Stopped" ‌:ml-citation{ref="1,2" data="citationList"}
wsl --unregister <子系统名称>  # 例如:wsl --unregister Ubuntu-24.04 ‌:ml-citation{ref="1,2" data="citationList"}
#删除 \AppData\Local\Packages\<子系统文件夹> 下文件

启动 WSL‌:

wsl:不带参数时,将启动默认的 Linux 发行版。

wsl -d :指定要启动的 Linux 发行版名称。

‌列出 Linux 发行版‌:

wsl --list 或 wsl -l:列出所有已安装的 Linux 发行版。

wsl --list --online 或 wsl -l -o:列出可以从 Microsoft Store 安装的在线 Linux 发行版。

wsl --list --verbose 或 wsl -l -v:显示详细的发行版列表,包括发行版的状态和使用的 WSL 版本(1 或 2)。

‌设置默认的 Linux 发行版‌:

wsl --setdefault :设置指定的 Linux 发行版为默认启动项。

‌卸载 Linux 发行版‌:

wsl --unregister :卸载指定的 Linux 发行版。

‌更新 WSL‌:

WSL 的更新通常通过 Windows 更新或 Microsoft Store 来完成。

‌检查 WSL 状态‌:

可以通过运行 wsl 命令并观察输出,或者查看 Windows 功能列表中的 WSL 相关项来检查 WSL 是否已正确安装和配置。

‌跨系统文件访问‌:

WSL 允许在 Windows 和 Linux 文件系统之间访问文件,但出于性能考虑,建议将文件存储在 WSL 文件系统中。

‌运行 Linux GUI 应用‌:

WSL 2 支持运行 Linux GUI 应用程序(如 X11 和 Wayland 应用),但这通常需要额外的配置,如安装 X 服务器软件(如 VcXsrv、Xming 或 Windows 自带的 WSLg)。‌1

相关推荐
alden_ygq1 小时前
K8S Svc Port-forward 访问方式
云原生·容器·kubernetes
hwj运维之路1 小时前
k8s监控方案实践(二):集成Alertmanager告警与钉钉Webhook通知
云原生·容器·kubernetes
心动啊1212 小时前
docker常用命令总结
docker·容器·eureka
python算法(魔法师版)2 小时前
Docker容器启动失败?无法启动?
linux·运维·nginx·docker·容器
不学无术の码农8 小时前
Ubuntu 22.04 (WSL2) 上使用 Docker 安装 Nacos 3.0.0
ubuntu·docker
AnnyYoung9 小时前
从Dockerfile 构建docker镜像——保姆级教程
docker·容器·eureka
慧一居士9 小时前
Docker Compose 的详细使用总结、常用命令及配置示例
容器·架构
何怀逸9 小时前
安装 Docker
运维·docker·容器
码码哈哈0.09 小时前
2025最新:3分钟使用Docker快速部署单节点Redis
redis·docker·eureka
云攀登者-望正茂10 小时前
通过Kubernetes 外部 DNS控制器来自动管理Azure DNS 和 AKS
容器·kubernetes·azure