本文介绍了使用Docker来配置Pytorch开发环境的步骤

为什么使用docker

如果以Windows系统为主力机时,很容易遇到如下问题

系统级工具软件安装繁琐

Windows下安装各类python第三方包所需的系统软件非常麻烦,举例而言,opencv(机器视觉工具)、sox(音频处理工具)、ffmpeg(音视频处理工具),这些在Linux系统下可以直接使用包管理工具

Linux与Win的第三方Python库实现不一致

很多工具虽然有Win版本,但有时实现不一致,这导致了实际使用时Win下更容易出问题。

DESED Issue #60 中提到的问题,在Linux中就不会出现。

配置步骤

从市场选择合适的Docker镜像

无需顾虑物理机cuda版本,因为只会用到物理机的NVIDIA Driver,保证NVIDIA Driver CUDA API版本大于等于镜像cuda版本即可。

查看物理机驱动指令nvidia-smi

启用Docker

powershell下执行指令:

docker run -it --gpus all `
    --name sed `           # 给容器命名,方便管理
    -p 2222:22 `                            # 映射SSH端口,左侧是物理端口,右侧是Docker容器里的端口
    -p 9090:9090                            # 映射clash管理端口
    -v E:\dockerfile:/workspace `           # 挂载Windows目录到容器中的/workspace目录
    --ipc=host `                            # 共享内存,用于PyTorch多进程
    --shm-size=16g `                        # 设置共享内存大小,避免OOM问题
    pytorch/pytorch:2.4.1-cuda12.1-cudnn9-runtime /bin/bash # 设置拉取的Pytorch官方镜像版本

OpenSSH的配置

安装OpenSSH

apt update && apt install -y openssh-server

配置 SSH 服务

# 修改配置文件,允许 root 登录
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
# 如果用root登录,执行以下命令给root设置密码
passwd root

# 启动SSH服务
service ssh start

# 如果你希望用非root用户登录,可创建一个新用户
useradd -m vscodeuser && echo "vscodeuser:yourpassword" | chpasswd

Visual Studio Code登录

安装remote ssh插件,然后输入ssh root@localhost -p 2222

如需要,可以清理物理机指定端口ssh缓存

ssh-keygen -R [localhost]:2222

在vscode终端中恢复conda环境

source /opt/conda/bin/activate

重启容器后的恢复步骤

Docker的exec中

恢复ssh服务

service ssh start

Visual Studio Code的终端中

恢复conda环境

source /opt/conda/bin/activate