深度学习篇---docker迁移深度学习项目至windows平台
2026/5/5 22:42:38 网站建设 项目流程

深度学习项目的环境,不是简单的“拷贝代码”,而是要复制一整套生态系统:Python版本、CUDA版本、cuDNN、PyTorch/TensorFlow版本、各种依赖库的精确版本、环境变量……

哪怕两台电脑装的都是Windows,只要你没把环境完全对齐,代码就很可能跑不起来。


通俗比喻:搬家 vs 搬房子

把项目从一台电脑挪到另一台,普通项目就像搬家——把家具(代码)搬过去就行,因为新家格局(系统环境)差不多。

深度学习项目则像搬整个房子,连地基一起搬过去。因为:

  • 你的代码可能依赖Python 3.10,而新电脑装了3.12

  • 你的模型训练时用了CUDA 11.8,新电脑驱动可能只支持CUDA 12.x

  • 你用pip install装了一堆库,具体版本号自己都记不清了

Docker 的做法是:把你的“房子”连同“地基”一起打包成镜像,到新电脑上直接还原。只要新电脑装了Docker,它就能原样复现你的环境。


具体怎么做:分步骤详解

第一步:在原电脑上,搞清楚你需要什么

你不需要把整个电脑打包,只需要打包和你项目相关的部分。先梳理清楚:

  1. 代码和数据:你的.py脚本、模型权重(.pth)、训练数据放在哪个文件夹。

  2. Python 版本:你当时用的是哪个Python?项目里有runtime.txt.python-version吗?

  3. 依赖包清单:在原电脑上跑这个命令生成清单:

    pip freeze > requirements.txt

    这会记下所有包及精确版本(例如torch==2.1.0+cu118)。

  4. CUDA 版本:跑nvidia-smi看看右上角显示的 CUDA 版本,记住它——这决定了基础镜像选什么。

  5. 显卡驱动:目标电脑只要装了足以支持这个 CUDA 版本的驱动就行,这个在Docker外面搞定。

第二步:给你写一份 Dockerfile(环境说明书)

这个文件告诉Docker“怎么搭你的房子”。我会先给一个GPU版本的,因为你做深度学习。

# 1. 选择带CUDA的基础镜像(底座),这里选CUDA 11.8 + cuDNN 8的开发版本 FROM nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 # 2. 装Python和你需要的系统包(比如git、wget) RUN apt-get update && apt-get install -y \ python3.10 python3-pip git wget \ && rm -rf /var/lib/apt/lists/* # 3. 把python3命令指向python(让你习惯用的命令生效) RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.10 1 # 4. 设置工作目录(容器里的项目文件夹) WORKDIR /workspace # 5. 先只复制依赖清单,再安装——为了用Docker缓存加速后续构建 COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple # 6. 把你的全部项目代码和数据复制进去 COPY . . # 7. 容器启动时执行的命令(改成你自己的,比如训练脚本) CMD ["python", "main.py"]

💡解释几个设计原因

  • 先COPY依赖文件再安装:Docker构建时每一行都是一层,如果代码变了但依赖没变,以前装好的层可以直接复用,不用重新下载几百兆的PyTorch。

  • 用清华镜像源-i https://pypi.tuna.tsinghua.edu.cn/simple:在国内装PyTorch会快非常多。

  • 基础镜像选了什么:如果你原电脑CUDA是11.8,就选对应的;PyTorch官网也有针对你CUDA版本的安装命令,把它们浓缩进requirements.txt里了。

第三步:写 .dockerignore 文件(必做!避免把垃圾打进去)

Dockerfile同级目录,创建.dockerignore,内容类似:

__pycache__ *.pyc .git .vscode .idea *.pth *.ckpt data/raw_data

这能防止把模型权重、原始数据等巨大文件意外打包进镜像,导致镜像动辄几十GB。模型权重和数据,建议通过挂载卷的方式传入,不要打进镜像里

第四步:在原电脑上构建镜像

打开PowerShell,进入项目根目录:

docker build -t my-dl-project:v1 .

完成后,你会看到一个属于自己的镜像:

docker images

第五步:把镜像搬到新电脑

方法有几种,对个人迁移最直接的是:

方案A:导出为文件,用U盘/移动硬盘拷贝

# 原电脑:导出镜像为tar包 docker save -o my-dl-project.tar my-dl-project:v1 # 把tar包拷到新电脑 # 新电脑:载入镜像 docker load -i my-dl-project.tar

方案B:推送到Docker Hub(如果镜像不太大且网络好)

docker tag my-dl-project:v1 你的用户名/my-dl-project:v1 docker push 你的用户名/my-dl-project:v1 # 新电脑直接 pull

第六步:在新电脑上运行

新电脑必须已经装好:

  • Docker Desktop for Windows

  • NVIDIA 显卡驱动(版本要≥你CUDA要求的那个)

  • NVIDIA Container Toolkit(这是让Docker能用GPU的关键,装好后新电脑才能用GPU跑)

然后运行容器:

# --gpus all 让Docker能调用显卡 docker run --gpus all -it --rm my-dl-project:v1

整体流程总结图

下面这张图概括了从“梳理环境”到“在新电脑上跑起来”的整个 Docker 迁移流程。


最后几个关键提醒

  1. 模型权重文件(.pth)不要打进镜像里。镜像应该只是“环境”,数据通过-v挂载进去:

    docker run --gpus all -v D:\我的模型:/workspace/models -v D:\我的数据:/workspace/data 项目名
  2. 如果你训练需要多卡--gpus all会自动识别新电脑上的所有兼容GPU。

  3. 如果不想走Docker,还有更轻量的conda env exportconda env create流程,但它在Windows上复现GPU版本的成功率远不如Docker。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询