viable/strict/1788412085: [ROCm][Docker] Avoid caching TheRock wheels in Docker images (#195526)
PyTorch 的 PR #195526 修改了 .ci/docker/common/install_rocm.sh,在安装 ROCm wheels 时禁用 pip 缓存,以避免 Docker 镜像中重复缓存多架构 ROCm wheels,从而减小镜像大小,且不改变安装的 ROCm 负载。该 PR 由 @tantara 在 ROCm/ROCm-docker#166 中提出,由 Cursor 和 Jeff Daily 共同编写,Jeff Daily 批准。
发展脉络
- 首次出现viable/strict/1788412085: [ROCm][Docker] Avoid caching TheRock wheels in Docker images (#195526)PyTorch Core
- 行业反馈trunk/d7a82dcfcb838549a84f49516bc5c32ecf1eef90: [ROCm][Docker] Avoid caching TheRock wheels in Docker images (#195526)PyTorch Core
- 当前判断PyTorch 对 ROCm 镜像的优化反映了对 AMD GPU 支持的持续投入,同时 Docker 镜像大小是开发者体验和 CI 效率的重要因素。此变更可能影响使用 PyTorch ROCm Docker 镜像的团队,使其镜像更小、拉取更快。Agent Pulse · 分析
PyTorch 合并了 PR #195526,该 PR 修改了 Docker 构建脚本,在安装 ROCm wheels 时禁用 pip 缓存。由于多架构 ROCm wheels 体积较大,保留 pip 下载缓存会在 Docker 层中重复存储其内容,导致镜像膨胀。通过禁用 pip 缓存,可以在不改变安装的 ROCm 负载的情况下减小镜像大小。该问题最初在 ROCm/ROCm-docker#166 中报告,由 @tantara 追踪。PR 由 Cursor 和 Jeff Daily 共同编写,Jeff Daily 批准。
该变更表明,在 Docker 镜像构建中,pip 缓存可能导致存储浪费,尤其是对于大型多架构 wheels。禁用缓存是一种优化镜像大小的策略,但可能增加重复构建时的下载时间。未来可关注 PyTorch 是否对 CUDA 等其他大型依赖采用类似优化。
PyTorch 对 ROCm 镜像的优化反映了对 AMD GPU 支持的持续投入,同时 Docker 镜像大小是开发者体验和 CI 效率的重要因素。此变更可能影响使用 PyTorch ROCm Docker 镜像的团队,使其镜像更小、拉取更快。
对于使用 PyTorch ROCm Docker 镜像的团队,此变更可减少存储和带宽成本,加快镜像拉取和部署速度,提升 CI/CD 效率。
未来,PyTorch 可能进一步优化 Docker 镜像,例如使用多阶段构建或更精简的基础镜像。此变更也可能被其他深度学习框架借鉴,以减小其 ROCm 或 CUDA 镜像的大小。