WSL2/Docker/Miniconda:深度学习LLM环境配置指南
[Windows] WSL2 + Docker + Miniconda:深度学习LLM环境配置指南
在 Windows 环境下进行深度学习研究,利用 WSL2(Windows Subsystem for Linux 2)、Docker 与 Miniconda ,构建近 Linux 原生体验同时兼顾 Windows 生态的开发环境。
0. 前置准备
建议安装以下工具以提升开发调试效率:
- Windows Terminal:多标签页支持,同时使用 WSL 和 PowerShell 。
- Visual Studio Code:配合 WSL 扩展插件,实现跨平台开发。
- Git:版本管理及开源项目克隆必备。
1. 环境准备与系统功能配置
WSL2 是在 Windows 上运行 Linux 子系统的最佳实践。相比旧版本,它拥有完整的 Linux 内核,支持原生的 GPU 调用。WSL2 依赖于 Windows 的底层 Hypervisor 虚拟化技术。这可能会导致部分依赖硬件虚拟化的第三方安卓模拟器(如早期版本的雷电、夜神)性能下降或无法运行。
1.1 开启虚拟化功能
方案 A:图形化界面(推荐初学者)
打开 控制面板 > 程序 > 启用或关闭 Windows 功能。
勾选以下项:
- 虚拟机平台 (Virtual Machine Platform)
- 适用于 Linux 的 Windows 子系统 (Windows Subsystem for Linux)
注意:若仅使用 WSL2,通常无需勾选完整的 “Hyper-V” 组件(特别是 Windows 家庭版用户)。
方案 B:命令行操作
使用管理员权限打开 PowerShell 或 CMD:
# 开启 WSL 核心功能
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 开启虚拟机平台
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart操作完成后必须重启电脑以应用更改。
2. WSL2 内核安装
2.1 内核更新
旧版安装方法(更可靠稳定)
旧版安装方法参考:旧版 WSL 的手动安装步骤 | Microsoft Learn
启用Windows可选功能
可以使用
控制面板开启相应功能
适用于 Linux 的 Windows 子系统
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart虚拟机功能
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart不需要开启“Hyper-V”
重启电脑
安装Linux内核更新包
设置WSL 2为默认版本
wsl --set-default-version 2(Microsoft Store)安装发行版并初始化配置
常见问题
初始化过程中无法启动:Installing, this may take a few minutes… WslRegisterDistribution failed with error: 0x800701bc Error: 0x800701bc WSL 2 ?????????????????? https://aka.ms/wsl2kernel
新版安装方法
wsl --install2.2 初始化配置
参考 设置 WSL 开发环境 | Microsoft Learn 细粒度配置
第一次安装后,需要创建“用户名”和“密码”:此用户名和密码特定于安装的每个单独的 Linux 分发版,与 Windows 用户名无关。
配置 Cuda 运行环境
WSL中使用Nvidia,已不需要在WSL重复安装Nvidia驱动!WSL2 与 Windows 共用同一套显卡驱动,重复安装会造成内核模块冲突。(本质上WSL强行将Windows环境变量全部引入了WSL,直接和Linux环境变量拼在一起)
From this point you should be able to run any existing Linux application which requires CUDA. Do not install any driver within the WSL environment. * For building a CUDA application, you will need CUDA Toolkit. Read the next section for further information.*
—— Reference : CUDA on WSL (nvidia.com)
配置Cuda Toolkit编译环境
安装Nvidia驱动后,即可运行大部分程序,如需进行编译(需要使用nvcc),才需要安装Toolkit
CUDA Toolkit Downloads | NVIDIA Developer
2.3 虚拟磁盘迁移与压缩
WSL2 默认将磁盘映像(ext4.vhdx)存储在 C 盘。随着环境增加,C 盘空间会迅速耗尽。
3.1 虚拟磁盘迁移(高风险操作)
[!WARNING]
风险警告:迁移操作涉及底层磁盘挂载,执行前请务必使用wsl --export备份重要数据。
确定路径:定位
.vhdx文件位置,默认路径为:%LOCALAPPDATA%\Packages\<linux_release_version>\LocalState\ext4.vhdx C:\Users\Administrator\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx迁移工具:推荐使用 Move WSL 脚本进行自动化迁移,运行
move-wsl.ps1。
3.2 磁盘瘦身
即使 WSL 中删除文件,Windows 下的 .vhdx 文件也不会自动减小。需手动压缩:
# 1. 停止所有 WSL 实例
wsl --shutdown
# 2. 进入磁盘管理工具
diskpart
# 3. 选择虚拟磁盘(请替换为实际路径)
# select vdisk file="<PATH_TO_VHDX>"
select vdisk file="D:\WSL\Ubuntu\ext4.vhdx"
# 4. 执行压缩操作
attach vdisk readonly
compact vdisk
detach vdisk3. Docker Desktop 安装及配置
3.1 基础配置
新建
%UserProfile%/.wslconfig全局配置文件,配置资源限制。
[wsl2]
memory=4GB
processors=2
swap=0
localhostForwarding=true3.2 迁移Docker虚拟磁盘位置(WSL2环境下)
默认的磁盘放置在%UserProfile%/AppData/Local/Docker/wsl下,较为影响C盘使用
3.2.1 修改Docker Desktop设置
Settings->Resources->Disk Image Location
修改确认后,会自动创建DockerDesktopWSL文件夹,并迁移所有磁盘
3.2.2 使用WSL磁盘迁移方案
参考:迁移WSL磁盘
4. Miniconda 环境配置
本文在 Windows下使用 Miniconda,并将环境统一安装在 D:\ProgramFiles\miniconda3,可根据自身需求调整。
4.1 Miniconda 安装
Miniconda 是最小的 conda 安装环境,相较于 Anaconda 去除了科学计算常用库,仅保留核心的 conda + python + pip,轻量更易用。
curl https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe -o .\miniconda.exe
start /wait "" .\miniconda.exe /S
del .\miniconda.exe| 下载地址: | MiniConda官方手册 | 国内:清华源下载 |
|---|
4.2 环境变量配置
采用 CONDA_HOME 的方式进行组织,方便统一引用。
手工配置
CONDA_PATH = D:\ProgramFiles\miniconda3
# Path 变量新增:
%CONDA_PATH%
%CONDA_PATH%\Scripts
%CONDA_PATH%\Library\bin命令行添加(管理员权限 PowerShell)
# 定义变量
$condaPath = "D:\ProgramFiles\miniconda3"
# 添加 CONDA_HOME
[Environment]::SetEnvironmentVariable("CONDA_HOME", $condaPath, "Machine")
# 更新 Path
$oldPath = [Environment]::GetEnvironmentVariable("Path", "Machine")
$newPath = "$oldPath;$condaPath;$condaPath\Scripts;$condaPath\Library\bin"
[Environment]::SetEnvironmentVariable("Path", $newPath, "Machine")4.2 核心初始化步骤
安装完成后,必须初始化 Shell 脚本才能正常切换环境:
# 直接初始化全部命令行环境,或添加 --dry-run 选项查看所有操作但不执行
conda init --all --dry-run
conda init --all
# 也可单独初始化
conda init powershell
conda init cmd.exe此处PowerShell 重启后可能遇到问题:
系统上禁止运行脚本:提示:https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。(官方参考:关于执行策略 - PowerShell | Microsoft Learn)
系统执行策略限制了 Conda 的自动激活脚本,管理员权限运行PowerShell【允许本地脚本和远程签名脚本】
set-ExecutionPolicy RemoteSigned # 选择Y(推荐)或A # 通过以下命令查看设置结果 # get-executionpolicy
4.3 Miniconda 环境配置
# 在用户目录下自动生成 .condarc 文件(Windows手动创建无效)
conda config --set show_channel_urls yes# %USERPROFILE%/.condarc
pkgs_dirs:
- D:\ProgramFiles\miniconda3\pkgs
envs_dirs:
- D:\ProgramFiles\miniconda3\envs
channels:
- defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
nvidia: https://mirrors.sustech.edu.cn/anaconda-extra/cloud/如已有索引缓存,先运行命令重置索引
conda clean -i为确保目录可用,务必修改
envs和pkgs文件夹的权限,否则仍会导致C盘大量占用!
5. Docker 容器化验证
在 WSL2 模式下,Docker 可以直接调用宿主机的显卡资源。
5.1 部署 Ollama 后端
通过挂载外部路径,保证模型数据持久化在 D 盘:
docker run -d --gpus=all \
-v D:\ProgramFiles\AI\ollama:/root/.ollama \
-p 11434:11434 \
--name ollama ollama/ollama5.2 部署 Open-WebUI 前端
docker run -d -p 3000:8080 --gpus all \
--add-host=host.docker.internal:host-gateway \
-v D:\ProgramFiles\AI\ollama-open-webui:/app/backend/data \
--name ollama-open-webui --restart always ghcr.io/open-webui/open-webui:cuda6. 总结
本指南通过对 Windows 底层虚拟化功能的调整,结合 WSL2 的驱动透传机制,构建了一个具备 GPU 加速能力的 AI 开发环境。