如何为AWS SageMaker部署镜像添加缺失的ffmpeg二进制文件
在AWS SageMaker自定义镜像中添加FFmpeg的标准流程
步骤1:编写Dockerfile基于原DJL镜像
以你使用的官方DJL推理镜像为基础,编写Dockerfile来安装ffmpeg:
# 基础镜像指定为你当前使用的DJL镜像 FROM 763104351884.dkr.ecr.europe-west-1.amazonaws.com/djl-inference:0.21.0-deepspeed0.8.3-cu117 # 基于Ubuntu系统安装ffmpeg,清理缓存减小镜像体积 RUN apt-get update && apt-get install -y --no-install-recommends \ ffmpeg \ && rm -rf /var/lib/apt/lists/*
注:该基础镜像基于Ubuntu发行版,因此使用
apt包管理器;若后续镜像更换为Amazon Linux等其他发行版,需改用yum或dnf命令执行安装。
步骤2:构建并推送自定义镜像到ECR
- 登录目标区域的ECR仓库:
aws ecr get-login-password --region europe-west-1 | docker login --username AWS --password-stdin 你的ECR账号ID.dkr.ecr.europe-west-1.amazonaws.com
- 构建本地Docker镜像:
docker build -t custom-djl-ffmpeg:v1 .
- 为镜像添加ECR仓库标签:
docker tag custom-djl-ffmpeg:v1 你的ECR账号ID.dkr.ecr.europe-west-1.amazonaws.com/你的ECR仓库名:custom-djl-ffmpeg-v1
- 推送镜像到ECR:
docker push 你的ECR账号ID.dkr.ecr.europe-west-1.amazonaws.com/你的ECR仓库名:custom-djl-ffmpeg-v1
步骤3:修改部署代码使用自定义镜像
将部署函数中的image_uri参数替换为你推送到ECR的自定义镜像地址即可。
AWS深度学习容器自定义镜像文档核心内容(中文翻译)
自定义镜像核心原则
- 保持兼容性:必须基于AWS官方深度学习容器(DLC)构建,确保与SageMaker的基础设施、API及运行时环境兼容。
- 最小化变更:仅添加必要的依赖或工具,避免修改原镜像的核心运行环境,防止引入兼容性问题。
- 轻量化镜像:安装完成后清理包管理缓存(如
rm -rf /var/lib/apt/lists/*),减小镜像体积,加速SageMaker端点启动与部署流程。
自定义镜像关键要求
- 需保留官方DLC内置的SageMaker入口脚本,无需额外添加,除非你需要自定义推理逻辑。
- 确保镜像用户权限正确:官方DLC使用
sagemaker用户运行进程,自定义操作避免破坏权限配置,必要时用USER sagemaker切换用户。 - GPU实例适配:基于CUDA的镜像需保证CUDA、cuDNN等依赖版本与原镜像一致,避免GPU加速功能失效。
内容的提问来源于stack exchange,提问作者n_prime
相关产品推荐
相关产品推荐

