以下是实现这一目标的最佳实践步骤

核心逻辑

  1. Windows: 安装 VS Code 和远程插件。
  2. Linux 宿主机: 运行 SSH 服务,并将你的代码放在 1.8T 的 /data 分区。
  3. Docker 容器: 运行 ROCm 镜像,通过 -v 参数把宿主机的代码目录“挂载”进去。
  4. 连接方式: VS Code (SSH) -> Linux 宿主机 -> VS Code (Attach) -> Docker 容器。

第一步:准备 Linux 宿主机(SSH 与 权限)

  1. 安装并启动 SSH 服务:

    sudo apt update
    sudo apt install openssh-server -y
    sudo systemctl enable --now ssh
    
  2. 关键一步:免 sudo 运行 Docker
    VS Code 的插件需要有权限直接操作 Docker,而不需要每次输密码。

    sudo usermod -aG docker $USER
    newgrp docker  # 使设置立即生效
    

    测试:输入 docker ps,如果不报错,说明成功了。


第二步:Windows VS Code 插件安装

在 Windows 的 VS Code 中安装以下两个核心插件:

  1. Remote - SSH (由 Microsoft 出品)
  2. Dev Containers (或者直接安装 Remote Development 插件包,包含了以上所有)

第三步:连接并映射项目路径

  1. 在 Windows VS Code 中连接 Linux:

    • F1Ctrl+Shift+P,输入 SSH: Connect to Host...
    • 输入 root@192.168.1.1 并输入密码。
    • 连接成功后,左下角会显示 SSH: 192.168.1.1
  2. 创建/打开项目文件夹:

    • 在 VS Code 中打开 /data/my_project(建议放在大硬盘分区)。
  3. 启动 Docker 容器并挂载路径:
    在 VS Code 的集成终端(Terminal)里运行启动命令(注意 -v 参数):

    docker run -it \
      --device=/dev/kfd --device=/dev/dri --group-add video --ipc=host --shm-size 8G \
      -v /data/my_project:/workspace \
      --name my_rocm_env \
      rocm/pytorch:rocm7.2_ubuntu24.04_py3.12_pytorch_release_2.9.1
    

    这样,你在 Windows 上修改 /data/my_project 里的文件,容器里的 /workspace 会实时同步。


第四步:VS Code 进入 Docker 内部(终极体验)

虽然你现在可以在宿主机终端运行代码,但 VS Code 的 IntelliSense(代码补全) 此时还识别不到容器里的 PyTorch。我们需要让 VS Code “钻”进容器里。

  1. 在连接了 SSH 的 VS Code 窗口左侧,点击 Docker 鲸鱼图标
  2. Containers 列表里找到正在运行的 my_rocm_env
  3. 右键点击容器名称 -> 选择 Attach Visual Studio Code
  4. VS Code 会新开一个窗口,此时左下角显示 Container: my_rocm_env

现在,你的状态是:

  • 编辑器:在 Windows 上操作。
  • 代码补全/解释器:直接使用容器里 PyTorch 7.2 的环境。
  • 运行:直接调用宿主机的 AMD GPU。
  • 文件存放在:宿主机的 1.8T 硬盘上(即使容器删了,代码还在)。

进阶:配置 devcontainer.json(可选,推荐)

如果你觉得每次敲 docker run 命令太长太麻烦,你可以利用 VS Code 的 Dev Containers 功能:

  1. 在项目根目录创建一个 .devcontainer 文件夹。
  2. 新建一个 devcontainer.json
{
    "name": "ROCm Development",
    "image": "rocm/pytorch:rocm7.2_ubuntu24.04_py3.12_pytorch_release_2.9.1",
    "runArgs": [
        "--device=/dev/kfd",
        "--device=/dev/dri",
        "--group-add=video",
        "--ipc=host",
        "--shm-size=8G"
    ],
    "workspaceFolder": "/workspace",
    "mounts": [
        "source=${localWorkspaceFolder},target=/workspace,type=bind"
    ],
    "customizations": {
        "vscode": {
            "extensions": [
                "ms-python.python",
                "ms-toolsai.jupyter"
            ]
        }
    }
}
  1. 以后你只需要点击 VS Code 左下角的蓝色图标,选择 Reopen in Container,它会自动帮你把显卡挂载、路径映射全做好了。