You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Lambda无服务器函数中安装Ultralytics仅YOLO检测核心组件?

解决方案

完全可以通过ultralytics[detect]这种方式缩小安装范围,结合以下优化手段,能大幅降低部署包体积和安装耗时:

1. 精简依赖清单

修改你的requirements.txt,用ultralytics[detect]替代完整的ultralytics包,这样只会安装目标检测相关的必要依赖,排除训练、分割等你不需要的模块。同时针对Lambda的CPU环境,改用onnxruntime-cpu替代通用的onnxruntime,进一步减少冗余:

boto3
ultralytics[detect]
onnx
onnxruntime-cpu

2. 优化Docker安装步骤

在pip安装时添加--no-cache-dir参数避免缓存占用空间,安装完成后清理pip缓存,进一步压缩镜像体积:

FROM public.ecr.aws/lambda/python:3.12

# 复制依赖清单
COPY requirements.txt ${LAMBDA_TASK_ROOT}

# 安装依赖并清理缓存
RUN pip install --no-cache-dir -r requirements.txt && \
    rm -rf /root/.cache/pip

# 复制函数代码和模型文件
COPY lambda.py best.onnx ${LAMBDA_TASK_ROOT}

CMD [ "lambda.handler" ]

3. 进阶优化:多阶段构建镜像

如果想进一步减小最终镜像的体积,可以采用Docker多阶段构建,只在最终镜像中保留运行必需的文件,剥离构建过程中的临时文件:

# 第一阶段:构建依赖环境
FROM public.ecr.aws/lambda/python:3.12 AS builder

COPY requirements.txt .
# 将依赖安装到指定目录
RUN pip install --no-cache-dir -r requirements.txt -t /lambda-deps

# 第二阶段:生成最终运行镜像
FROM public.ecr.aws/lambda/python:3.12

# 从构建阶段复制已安装的依赖
COPY --from=builder /lambda-deps ${LAMBDA_TASK_ROOT}

# 复制业务代码和模型
COPY lambda.py best.onnx ${LAMBDA_TASK_ROOT}

CMD [ "lambda.handler" ]

额外注意事项

  • 确认你的lambda.py中只导入了推理相关的模块,比如from ultralytics import YOLO,不要导入训练、验证等无关模块,避免触发不必要的依赖加载
  • 可以尝试指定依赖的具体版本,避免安装最新版本可能带来的冗余,比如ultralytics[detect]==8.2.87

内容的提问来源于stack exchange,提问作者Enkh-Amar Ganbat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 12:30:08