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

软件要求

  • 🖥️ Windows 11 22H2或更高版本
  • 🔗 AMD显卡驱动下载

二、环境配置流程

1. 启用WSL2

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

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重启计算机。

2 设置 WSL2 为默认版本‌

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 终端中运行:

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)==

rocminfo  # 应输出显卡型号(如 gfx1100)

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

1. 创建 Dockerfile‌

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

mkdir ollama-amd && cd ollama-amd
nano Dockerfile

输入以下内容:

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. 构建镜像‌

docker build -t ollama-amd

3. 启动容器并映射 GPU‌

docker run -d \--name ollama \--gpus=all \--device=/dev/kfd \--device=/dev/dri \-p 11434:11434 \ollama-amd

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

1. 检查容器状态‌

docker logs ollama  # 应显示 "Listening on 0.0.0.0:11434"

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

安装 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-7B2820GB
CodeLlama-34B924GB

七、优化配置‌

1. 调整 WSL2 内存限制‌

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

memory=16GB   # 分配 16GB 内存给 WSL2
processors=8   # 分配 8 个 CPU 核心

2. 启用混合精度推理‌

docker exec -it ollama ollama run llama2 --gpu-layers 32 --precision fp16

八、常见问题解答‌

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

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

sudo apt update && sudo apt upgrade -y

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

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

docker run ... --device=/dev/dri/renderD128  # 添加此参数

总结‌

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

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

WSL命令:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/28158.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【大模型基础_毛玉仁】1.1 基于统计方法的语言模型

【大模型基础_毛玉仁】1.1 基于统计方法的语言模型 1.语言模型基础1.1 基于统计方法的语言模型1.1.1 n-grams 语言模型1.1.2 n-grams 的统计学原理 1.语言模型基础 语言是概率的。语言模型&#xff08;LanguageModels, LMs&#xff09;旨在准确预测语言符号的概率。 将按照语…

IDEA 2025最新版2024.3.3软件安装、插件安装、语言设置

IntelliJ IDEA是一款由JetBrains公司开发的集成开发环境&#xff08;IDE&#xff09;&#xff0c;主要用于Java语言的开发&#xff0c;它通过提供丰富的功能如智能代码补全、代码分析、版本控制集成等来提高开发效率。 IDEA有社区版和专业版两个版本&#xff0c;社区版是免费开…

springbootWeb入门--创建springbootweb项目

步骤&#xff1a; 1.建立空工程 2.选择项目的jdk版本 3.在工程中建立模块&#xff0c;选择“spring initilazer”,类型勾选“maven” 4.勾选“spring web”之后&#xff0c;就无需再自行写dependcy了。 5.等待联网下载 6.生成的工程文件&#xff0c;如下绿色框中文件&…

Windows10系统构建本地安全私有化的个人知识库——采用DeepSeek+RAGFlow

一、为什么要构建本地私有化个人知识库 1.1、自身需求 1、需要相关隐私资料内容的安全保护可控; 2、需要根据自身的隐私资料内容构建出个性化的知识库; 一些常见的业务场景如:①希望我们的智能助手可以根据公司的管理制度回答问题,让员工可以随时了解公司相关制度内容信息;…

江协科技/江科大-51单片机入门教程——P[3-1] 独立按键控制LED亮灭

本文围绕51单片机开发中的独立按键控制技术展开&#xff0c;系统讲解其硬件结构、电平检测原理与C51编程实现方法。文章从开发板独立按键的物理构造与电路连接入手&#xff0c;剖析按键按下与松开时的电平变化规律&#xff0c;并结合单片机I/O口寄存器操作原理&#xff0c;阐释…

【QGIS二次开发】地图显示与交互-01

1. 系统界面设计 设计的系统界面如下&#xff0c;很好还原了QGIS、ArcGIS等软件的系统界面&#xff0c;充分利用了QT中顶部工具栏、菜单栏、底部状态栏&#xff0c;实现了图层管理器、鹰眼图、工具箱三个工具面板。 菜单栏、工具栏、工具箱集成了系统中实现的全部功能&#x…

第40天:安全开发-JavaEE应用SpringBoot框架JWT身份鉴权打包部署JARWAR

时间轴&#xff1a; 演示案例&#xff1a; SpringBoot-身份鉴权-JWT 技术 SpringBoot-打包部署-JAR&WAR SpringBoot-身份鉴权-JWT 技术 SpringBoot- 身份鉴权 -JWT 技术 JWT(JSON Web Token) 是由服务端用加密算法对信息签名来保证其完整性和不可伪 造&#xff1b; …

计算机毕业设计SpringBoot+Vue.js医院挂号就诊系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

Linux之命令记录【一】

文章目录 前言几个重要的热键1.[Tab]按键2.[Ctrl]-c 按键3.[Ctrl]-d 按键4.[shift]{[PageUP]|[Page Down]}按键 线上求助&#xff08;查看帮助信息&#xff09;1. --help2.man page3.info page 用户身份1.su 基础指令1.date2.cal3.bc 系统字符集相关1.locale 文本编辑器1.nano …

Ollama存在安全风险的情况通报及解决方案

据清华大学网络空间测绘联合研究中心分析&#xff0c;开源跨平台大模型工具Ollama默认配置存在未授权访问与模型窃取等安全隐患。鉴于目前DeepSeek等大模型的研究部署和应用非常广泛&#xff0c;多数用户使用Ollama私有化部署且未修改默认配置&#xff0c;存在数据泄露、算力盗…

Sourcetrail 代码分析工具

Sourcetrail 概述 Sourcetrail 是一个代码分析工具&#xff0c;它旨在帮助开发人员理解和导航复杂的代码库。它可以创建代码库的可视化图形&#xff0c;显示代码中的类、函数、变量、依赖关系等信息&#xff0c;从而帮助开发人员更好地理解代码结构和关系&#xff0c;降低维护…

【手撕算法】支持向量机(SVM)从入门到实战:数学推导与核技巧揭秘

摘要 支持向量机&#xff08;SVM&#xff09;是机器学习中的经典算法&#xff01;本文将深入解析最大间隔分类原理&#xff0c;手撕对偶问题推导过程&#xff0c;并实战实现非线性分类与图像识别。文中附《统计学习公式手册》及SVM调参指南&#xff0c;助力你掌握这一核心算法…

《OpenCV》——dlib(人脸应用实例)

文章目录 dlib库dlib库——人脸应用实例——表情识别dlib库——人脸应用实例——疲劳检测 dlib库 dlib库的基础用法介绍可以参考这篇文章&#xff1a;https://blog.csdn.net/lou0720/article/details/145968062?spm1011.2415.3001.5331&#xff0c;故此这篇文章只介绍dlib的人…

ArcGIS操作:07 绘制矢量shp面

1、点击目录 2、右侧显示目录 3、选择要存储的文件夹&#xff0c;新建shp 4、定义名称、要素类型、坐标系 5、点击开始编辑 6、点击创建要素 7、右侧选择图层、创建面 8、开始绘制&#xff0c;双击任意位置结束绘制

用Python+Flask打造可视化武侠人物关系图生成器:从零到一的实战全记录

用PythonFlask打造可视化武侠人物关系图生成器&#xff1a;从零到一的实战全记录 一、缘起&#xff1a;一个程序小白的奇妙探索之旅 作为一个接触Python仅13天的编程萌新&#xff0c;我曾以为开发一个完整的应用是遥不可及的事情。但在DeepSeek的帮助下&#xff0c;我竟用短短…

2025年渗透测试面试题总结- 阿某云安全实习(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 阿里云安全实习 一、代码审计经验与思路 二、越权漏洞原理与审计要点 三、SSRF漏洞解析与防御 四、教…

el-select的下拉选择框插入el-checkbox

el-check注意这里要使用model-value绑定数据 <el-selectv-model"selectDevice"multiplecollapse-tags:multiple-limit"5"style"width: 200px"popper-class"select-popover-class" ><el-optionv-for"item in deviceList…

20250304在Ubuntu20.04的GUI下格式化exFAT格式的TF卡为ext4格式

20250304在Ubuntu20.04的GUI下格式化exFAT格式的TF卡为ext4格式 2025/3/4 16:47 缘起&#xff1a;128GB的TF卡&#xff0c;只能格式化为NTFS/exFAT/ext4。 在飞凌的OK3588-C下&#xff0c;NTFS格式只读。 exFAT需要改内核来支持。 现在只剩下ext4了。 linux R4默认不支持exFAT…

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例1:基础表格

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

【Linux】【网络】UDP打洞-->不同子网下的客户端和服务器通信(未成功版)

【Linux】【网络】UDP打洞–>不同子网下的客户端和服务器通信&#xff08;未成功版&#xff09; 上次说基于UDP的打洞程序改了五版一直没有成功&#xff0c;要写一下问题所在&#xff0c;但是我后续又查询了一些资料&#xff0c;成功实现了&#xff0c;这次先写一下未成功的…