如何将torch集成到docker镜像中,同时保持镜像大小合理?

moa*_*n66 1 python docker pytorch

所以我有一个 Flask Web 应用程序,它将公开一些深度学习模型。

我构建了图像,一切正常。

问题是这张图片的大小是5.58GB!这有点荒谬。

我有一些在构建过程中复制的深度学习模型,我认为它们可能是罪魁祸首,但它们的大小总和并没有超过,300MB所以绝对不是它。

在检查历史记录和每层的大小后,我发现了这一点:

  • RUN /bin/sh -c pip install -r requirements.txt占用771MB
  • RUN /bin/sh -c pip install torch==1.10.2占用2.8GB
  • RUN /bin/sh -c apt-get install ffmpeg libsm6 libxext6占用400MB

那么如何在保持图像大小合理的同时合并这些库呢?在 python 中部署机器学习模型时,可以使用这些大小的图像吗?

下面是root directory

在此输入图像描述

Dockerfile

FROM python:3.7.13
WORKDIR /app 
COPY ["rdm.pt", "autosort_model.pt", "rotated_model.pt", "yolov5x6.pt", "/app/"]
RUN pip install torch==1.10.2
COPY requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
RUN apt-get update
RUN apt-get install ffmpeg libsm6 libxext6  -y
COPY . /app
CMD python ./app.py
Run Code Online (Sandbox Code Playgroud)

.dockerignore

Dockerfile
README.md
__pycache__
Run Code Online (Sandbox Code Playgroud)

小智 6

默认情况下,torch 会打包 CUDA 包和其他东西。如果不需要 CUDA,请将--extra-index-url https://download.pytorch.org/whl/cpu和添加到 pip install 命令。--no-cache-dir

RUN pip install --no-cache-dir -r requirements.txt --extra-index-url https://download.pytorch.org/whl/cpu

删除 apt 列表缓存也是一个好习惯:

RUN apt-get update \
    && apt-get install -y \
    ffmpeg \
    libsm6 \
    libxext6 \
    && rm -rf /var/lib/apt/lists/*
Run Code Online (Sandbox Code Playgroud)