CUDA 13 PyTorch Git WSL2 Docker 保活 VSCODE 远程管理

CUDA 13 PyTorch Git WSL2 Docker 保活 VSCODE 远程管理

创建时间
Oct 14, 2025 08:47 AM
编辑日期
Last updated October 31, 2025
属性
标签
Motivation:远程桌面开发 AI 模型容易占用 GPU 资源(串流编码)降低计算效率,以及受限于网络环境问题容易卡顿/掉帧,改用 SSH 远程连接方法可以规避该问题。
Env:WSL2 Ubuntu 24.04、Python 3.12、CUDA 13.0、PyTorch 2.9 (CUDA13 Version)
Win11商店里安装后运行 apt update && apt upgrade -y 更新。
Befor you start:更常用的开发环境搭建是在系统下使用 Docker,在容器中配置 cuda、pytorch 等开发环境,几乎不会跟宿主机的环境发生冲突,同时更容易迁移和分发。

0. Docker 环境

首先安装 NVIDIA Container Toolkit,
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
然后执行一次更新 sudo apt-get update。当前最新版是1.17.8,官方文档提供的操作如下:
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1 sudo apt-get install -y \ nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \ nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \ libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \ libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}
此时 NVIDIA Container Toolkit 就安装完了,接着是 Docker,参考文档的 apt 安装:
# Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update
包更新完后运行 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginsudo systemctl status docker 显示运行即可。
此时宿主机的环境应该同时具有 NVIDIA Container Toolkit 和 Docker,然后才能进行下一步:
sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker
NV 官网文档介绍 nvidia-ctk 修改 /etc/docker/daemon.json 添加 NVIDIA 作为默认 runtime 后 Docker 就可以支持容器访问宿主机 GPU。
接着使用 sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi 创建一个临时容器检验安装是否成功。

0.1 创建容器

https://hub.docker.com/r/nvidia/cuda/tags NVIDIA 在 Docker 的镜像。
如果是专注AI开发,还有一个库可以选择,参考0.2节。
这里使用 Dockerfile 构建自定义镜像和 compose 方法来创建容器(当然可以安装管理面板进行操作),在docker-compose.yml 中保存以下内容,可按需设置。默认使用 NV 官方提供的镜像 nvidia/cuda:13.0.1-cudnn-devel-ubuntu24.04,包含了最新 cuda 和 cudnn,开箱即用。
需要注意的是runtime 版本的容器里 nvcc -V 是会显示 nvcc: command not found 的,因为只有运行环境,如果需要编译版本应该选择开发用的 devel
# Dockerfile for python 3.13 # 选择镜像 FROM nvidia/cuda:13.0.1-cudnn-devel-ubuntu24.04 # 更新系统并安装依赖 RUN apt-get update && apt-get install -y \ software-properties-common \ wget \ && apt-get clean && rm -rf /var/lib/apt/lists/* # 添加 deadsnakes PPA 并安装 Python 3.13 RUN add-apt-repository ppa:deadsnakes/ppa -y && \ apt-get update && \ apt-get install -y python3.13 python3.13-venv python3.13-dev && \ apt-get clean && rm -rf /var/lib/apt/lists/* # 设置 Python 3.13 为默认(可选,如果需要系统默认) RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.13 1 && \ update-alternatives --set python3 /usr/bin/python3.13 # 安装 pip(Python 3.13 自带,但确保最新) RUN wget https://bootstrap.pypa.io/get-pip.py && \ python3 get-pip.py && \ rm get-pip.py # 安装 PyTorch RUN pip install torch torchvision --index-url https://download.pytorch.org/whl/cu130 # 默认命令:进入 bash shell CMD ["/bin/bash"]
# Dockerfile for python 3.12 处理 PEP 668 # 选择镜像 FROM nvidia/cuda:13.0.1-cudnn-devel-ubuntu24.04 # 更新系统并安装依赖 RUN apt-get update && apt-get install -y \ software-properties-common \ wget \ && apt-get clean && rm -rf /var/lib/apt/lists/* # 添加 deadsnakes PPA 并安装 Python 3.12 RUN add-apt-repository ppa:deadsnakes/ppa -y && \ apt-get update && \ apt-get install -y python3.12 python3.12-venv python3.12-dev python3-pip && \ apt-get clean && rm -rf /var/lib/apt/lists/* # 创建 Python 3.12 虚拟环境 RUN python3.12 -m venv /opt/venv ENV PATH="/opt/venv/bin:$PATH" # 升级虚拟环境中的 pip RUN pip install --upgrade pip # 安装 PyTorch RUN pip install torch torchvision --index-url https://download.pytorch.org/whl/cu130 # 默认命令:进入 bash CMD ["/bin/bash"]
# docker-compose.yml services: cuda-container: build: . # 从 Dockerfile 构建 # 训练中dataloader的num_workers需要较多的共享内存,docker默认只有64M shm_size: '8gb' # 根据自己硬件情况调整 container_name: my-persistent-cuda # 自定义容器名,便于管理 restart: unless-stopped # 确保持久性:除非手动停止,否则自动重启 deploy: resources: reservations: devices: - driver: nvidia count: all # 启用所有 GPU;或指定 'capabilities: [gpu]' capabilities: [gpu] volumes: - /root/python-project/:/workspace/project # 挂载项目目录 command: /bin/bash # 默认进入 bash shell,便于交互配置 stdin_open: true # 启用 stdin 以支持交互 tty: true # 启用 tty 以支持交互 shell # ports: # 可选:暴露端口,例如 Jupyter。Vscode会自动处理 # - "18888:18888"
然后运行 docker compose up -d --build,使用 docker ps 查看是否运行,此时会显示 CONTAINER ID 这个名称。docker exec -it "CONTAINER ID" bash 进入容器,从 stdin 中使用 exit 退出容器不会导致容器停止。如果使用 attach 的话就会停止,因此推荐使用 exec
docker stop "CONTAINER ID" # 停止容器 docker rm "CONTAINER ID" # 删除容器
接下来就不需要第一步和第二步,cuda、py3.12、pytorch基本环境就配好了,不需要 docker 里套一层 conda 环境。
如果复制了一个容器,可以把 container_name 注释掉,用 docker compose -p project-1 up -d 这种形式创建,只需要更改 project-1 的名称。

如果发现缓存还是不够用,但又不想删掉,可以先记下当前容器的 ID 然后执行以下操作
# root 环境下暂停 docker systemctl stop docker.socket systemctl stop docker cd /var/lib/docker/containers ls # 找到容器 ID 的文件 cd 123456* # 假如是123456开头的文件 nano hostconfig.json # 找到 ShmSize 并修改,值的单位是字节。1024*1024*1024为1G。 # 保存后再启动 docker systemctl start docker.socket systemctl start docker docker start 123456 # 启动容器

0.2 容器打包与安装

本地用 commit 将容器打包成镜像,其中镜像名可以简单的设为"cuda",或者类似版本号"cuda:latest" 形式。
docker commit [容器ID或NAME] [镜像名]
然后对该容器所创建的镜像进行保存,其中镜像路径可以直接用 cuda.tar ,保存至当前路径下,等效于./cuda.tar
docker save -o [镜像路径] [镜像名]
在WSL2环境下需要对文件赋予权限,才能到Windows的文件管理器中copy出来。
到另外一个环境加载该镜像
docker load -i [镜像路径]
完成后 docker images 列出该镜像即完成。

0.3 NVIDIA PyTorch 容器

容器包含了Ubuntu、CUDA、PyTorch 和 TensorRT。可以在本地用消费级显卡进行开发,然后迁移到高性能集群进行计算。
services: cuda-container: image: nvcr.io/nvidia/pytorch:25.09-py3 container_name: my-persistent-cuda restart: unless-stopped deploy: resources: reservations: devices: - driver: nvidia count: all # 启用所有 GPU capabilities: [gpu] volumes: - /root/python-project/:/workspace/project command: /bin/bash stdin_open: true tty: true
docker compose up -d 构建容器。

1. 安装 CUDA Toolkit 13 & cuDNN

参考 NVDIA 官方说明,使用 WSL2 无需在 Linux 环境下安装驱动,避免和 Win 的驱动发生冲突(已经存在)。

1.1 CUDA Toolkit

根据指示安装 CUDA Toolkit
当前最新的安装版本是 13.0.2。
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600 wget https://developer.download.nvidia.com/compute/cuda/13.0.2/local_installers/cuda-repo-wsl-ubuntu-13-0-local_13.0.2-1_amd64.deb sudo dpkg -i cuda-repo-wsl-ubuntu-13-0-local_13.0.2-1_amd64.deb sudo cp /var/cuda-repo-wsl-ubuntu-13-0-local/cuda-*-keyring.gpg /usr/share/keyrings/ sudo apt-get update sudo apt-get -y install cuda-toolkit-13-0
安装完成后,nano ~/.bashrc 添加环境变量,放置在文件最底下即可
export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
更新环境变量 source ~/.bashrc ,此时 nvcc -V 应该可以正常回显
Copyright (c) 2005-2025 NVIDIA Corporation Built on Wed_Aug_20_01:58:59_PM_PDT_2025 Cuda compilation tools, release 13.0, V13.0.88 Build cuda_13.0.r13.0/compiler.36424714_0
接着 ln -s /usr/lib/wsl/lib/nvidia-smi /usr/bin/nvidia-smi 可以链接 nvidia-smi 工具。

1.2 cuDNN

这里直接安装 Ubuntu 24.04 对应的本地版本
wget https://developer.download.nvidia.com/compute/cudnn/9.14.0/local_installers/cudnn-local-repo-ubuntu2404-9.14.0_1.0-1_amd64.deb sudo dpkg -i cudnn-local-repo-ubuntu2404-9.14.0_1.0-1_amd64.deb sudo cp /var/cudnn-local-repo-ubuntu2404-9.14.0/cudnn-*-keyring.gpg /usr/share/keyrings/ sudo apt-get update sudo apt-get -y install cudnn
文章推荐最后使用 sudo apt-get -y install cudnn9-cuda-13 安装,但实际上会根据 CUDA 版本自行安装最新版本。

2. Anaconda & PyTorch

2.1 Anaconda

这里选择全量版本,空间有的是就不用 miniconda 了。
wget https://repo.anaconda.com/archive/Anaconda3-2025.06-0-Linux-x86_64.sh 下载后 bash Anaconda3-2025.06-0-Linux-x86_64.sh 执行安装。
如果 conda init 无法执行,运行 source ~/anaconda3/bin/activate 后再尝试。
重新打开一个终端后应该会显示 (base) 环境。
接着创建 Python 3.12 环境 conda create --name cu13py312 python=3.12 ,然后 conda activate cu13py312 进入新创建的环境。如果此时发现 nvcc -V 无法正常工作,那么按 1.1 的方法重新配置下环境。
在这个新的环境里是不需要再安装 CUDA 和 cuDNN 的。

2.2 PyTorch

Stable 2.9.0 已支持 CUDA 13 环境。
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu130
安装完后执行代码检查环境配置是否正确
import torch print(torch.__version__) # 2.10.0.dev20251012+cu130 print(torch.cuda.is_available()) # True print(torch.cuda.device_count()) # 1 print(torch.version.cuda) # 13.0 print(torch.backends.cudnn.is_available()) # True print(torch.backends.cudnn.version()) # 91300

3. WSL2 保活

已知最新版该方法失效,直接点开个终端缩小吧。
Win 的 WSL 默认逻辑是不使用/关闭终端后就会关闭虚拟机,为了能在后台运行,最简单的方法是创建会话保持虚拟机活跃。
这里使用 tmux 创建会话,apt install tmux 安装后运行 tmux new -s my_session 创建名为 my_session 的会话,可自定义。进入后可通过Ctrl + b, + d 退出,同时保持会话让 WSL2 在关闭终端后仍能在后台运行。
恢复会话使用 tmux attach -t my_session
命令
描述
示例
tmux new -s <name>
创建并进入命名会话
tmux new -s work
tmux
创建并进入无名会话
tmux
tmux ls
列出所有活跃会话
tmux ls
tmux attach -t <name>
连接到指定会话
tmux attach -t work
tmux kill-session -t <name>
结束指定会话
tmux kill-session -t work
Ctrl + b, d
从会话中分离(在 tmux 内)
-
Ctrl + b, s
切换会话(在 tmux 内)
-
该操作可以在 win 锁屏情况下继续使用 WSL2。

3.1 修改 WSL2 配置

全局配置文件路径 %UserProfile%\.wslconfig,可配置内存和 CPU 核心数量等。
也可以用官方的工具“Windows Subsystem for Linux Settings”去配置。

4. VSCODE 远程管理

为了便于操作,避免修改 WSL2 和宿主机的网络环境以及添加端口转发或开防火墙,直接使用组网工具 tailscale (类似的有 ZeroTier)进行操作,使用分配的内网 IP 用 SSH 进行连接。

4.1 Git & Github

首先安装 Git 工具 apt install git,设置
git config --global user.name "Your Name" git config --global user.email "your_email@example.com"
接着在 WSL2 里生成密钥 ssh-keygen -t ed25519,将 cat /root/.ssh/id_ed25519.pub 公钥添加到 Github 的账户里,便于管理自己的私有仓库。
接着在仓库里选择 ssh 方式 git clone 到本地,git clone git@github.com:***.git 然后会遇到一个保存 ssh 指纹的提示,输入 yes,之后再到 vscode 里管理 git 才不会卡在 “or” 具有指纹 这个问题里。

4.2 Remote

通过 Vscode 的插件 Remote - SSH 连接到 WSL2 服务器后(由于组内网,密码登录即可),在远端服务器安装常用的工具 Python 来管理/选择 anaconda 创建的环境,以及 GitLens 查看记录等等。
notion image

5. 监控 GPU 状态的工具

5.1 nvtop

apt install nvtop
这个工具简单清楚,可以展示哪个用户在执行什么任务,消耗了多少系统资源。
notion image

5.2 nvitop

pip install nvitop
相比较 nvtop 可以额外展示 CPU、RAM 的图形资源使用信息。可以监控更多的性能指标。
notion image

5.3 gpustat

极致简洁,一般使用 nvitop 和 nvtop 多一点。
notion image

5.4 Other Tool: zellig

Ubuntu 用编译好的二进制文件安装方便一点
wget https://github.com/zellij-org/zellij/releases/download/v0.43.1/zellij-x86_64-unknown-linux-musl.tar.gz tar -xzf zellij* mv zellij /usr/local/bin
端口复用上比 tmux 好用,可以设置多个窗格。