如何使用 Tensorflow 1、CUDA 11、OpenCV 和 Pytorch 构建紧凑的 docker 镜像

问题描述 投票:0回答:2

我正在使用 Tensorflow 1、Pytorch、OpenCV 和 JupyterLab 构建一个 docker 映像,该映像可在 NVidia A100 GPU 上运行。据我所知,A100 需要 CUDA 11 才能工作。

我在 NVidia NGC Catalog 中找到了合适的基础镜像 - https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tensorflow/tags

它已经具有 JupyterLab 功能,并且有包括 Tensorflow 1 和 Cuda 11 的选项。我需要添加 OpenCV 和 Pytorch。

问题在于,即初始 nvcr.io/nvidia/tensorflow:22.04-tf1-py3 图像已经是 14.39Gb,这太大了(2-3Gb 就可以了)。有没有办法压缩这个图像,或者其他一些基础图像可能更适合我?

docker tensorflow nvidia
2个回答
0
投票

一种可能的方法是使用

nvidia/cuda
作为基础图像。
nvidia/cuda:11.2.0-cudnn8-devel-ubuntu20.04
的大小为6.93G;然而,添加
TensorFlow
PyTorch
至少会增加 10G,即使你做得很节俭。这是我与 nvidia-pytorch-tensorflow-conda-jupyter-ssh
尝试
。大小为14.6G。您可以尝试通过删除不必要的部分来简化它。


0
投票

我使用 nvcr.io/nvidia/cuda:11.8.0-cudnn8-runtime-ubi8、registry.access.redhat.com/ubi9:latest、python:3.11.4 和registry.access.redhat 进行多阶段构建.com/ubi9/ubi-micro:最新。使用 ubi9:latest 创建基本 rootfs,添加 glibcminimal、libstdc++、zlib、xz-libs 和 bzip2-libs,然后将其复制到 ubi9:micro,然后复制 /usr/local/lib、/usr/local/bin 和 / usr/local/include/python3.11 从 python:3.11.4 到 micro,最后将 /usr/local/cuda 从 cuda:11.8.0-cudnn8-runtime-ubi8 复制到最终的 micro。我的最终 Python3.11.4-cuda11.8.0 ubi9-micro 映像为 1.2GB,然后我安装了 cuda 11.8 的 torch 和 torchvision gpu 轮以及 mlflow-skinny、numpy 和 pandas。最终的 pytorch-cuda 镜像大小为 3.4GB。我还在 ubi9-micro 中构建了一个 Cuda micromamba 图像,其大小大致相同。我使用这些图像作为使用 argo 工作流程在 openshift 中运行训练作业的基础。

多阶段构建始终会产生最小的最终容器尺寸。

© www.soinside.com 2019 - 2024. All rights reserved.