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

SageMaker模型部署报错:/opt/ml/model只读文件系统OSError

SageMaker部署自定义模型报错Read-only file system的解决方案

问题重现

执行部署代码时抛出只读文件系统错误:

部署代码:

predictor = model.deploy(1, instance_type='ml.t2.medium', serializer=csv_serializer)

错误信息:OSError: [Errno 30] Read-only file system,报错路径指向/opt/ml/model

已尝试的无效操作:修改目录权限、调整模型输出路径、更换不同规格实例、遵循官方自定义容器教程、尝试Stack Overflow相关方案。

核心原因

  1. 容器入口配置错误:Dockerfile中固定设置ENTRYPOINT ["python3", "/opt/ml/train.py"],导致部署阶段容器仍执行训练脚本。而SageMaker部署时会将/opt/ml/model挂载为只读目录,训练脚本若尝试写入该路径则触发错误。
  2. 误用环境变量:错误设置了PyTorch官方容器的SAGEMAKER_SUBMIT_DIRECTORY变量,但当前是基于Ubuntu的自定义容器,该变量不适用。
  3. 代码目录不符合SageMaker规范:将代码直接复制到/opt/ml/根目录,与SageMaker挂载的模型目录冲突。

解决方案

1. 修改Dockerfile,适配SageMaker自定义容器规范

更新后的Dockerfile如下:

FROM ubuntu:18.04

MAINTAINER Amazon AI <sage-learner@amazon.com>

ARG REGION=us-west-2

RUN apt-get -y update && apt-get install -y --no-install-recommends \
         wget \
         python3-pip \
         python3-setuptools \
         nginx \
         ca-certificates \
    && rm -rf /var/lib/apt/lists/*

# 添加sagemaker-containers包,用于自动区分训练/部署阶段
RUN pip3 install numpy pandas flask gunicorn sagemaker-containers

ENV PYTHONUNBUFFERED=TRUE
ENV PYTHONDONTWRITEBYTECODE=TRUE
ENV PATH="/opt/ml:${PATH}"

# 将代码复制到SageMaker自定义容器标准代码目录
COPY model-1 /opt/ml/code/
WORKDIR /opt/ml/code/

# 设置自定义容器环境变量,指定代码目录和入口脚本
ENV SAGEMAKER_CODE_DIR /opt/ml/code
ENV SAGEMAKER_PROGRAM train.py

# 使用sagemaker-containers的CLI自动处理训练/部署逻辑
ENTRYPOINT ["python3", "-m", "sagemaker_containers.cli"]

2. 确保serve脚本配置正确

  • 确认serve脚本位于/opt/ml/code目录下,脚本内容需实现推理服务启动逻辑(如启动Flask/Gunicorn并加载/opt/ml/model中的模型文件)。
  • 保留build脚本中对serve的权限设置:chmod +x model-1/serve

3. 调整训练脚本的模型输出路径

在train.py中,将训练好的模型保存到/opt/ml/model目录(SageMaker训练阶段的标准模型输出路径),示例代码片段:

import pickle
import os

model_output_path = os.environ.get('SM_MODEL_DIR', '/opt/ml/model')
with open(os.path.join(model_output_path, 'model.pkl'), 'wb') as f:
    pickle.dump(trained_model, f)

4. 重新构建并推送容器

执行build_and_push.sh脚本,将更新后的镜像推送到ECR仓库,之后重新执行部署操作。

内容的提问来源于stack exchange,提问作者priya khokher

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:15:41