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

SageMaker多模型部署报错:无法访问只读文件系统下的config.json

问题:Amazon SageMaker多模型部署时出现只读文件系统错误

尝试在Amazon SageMaker中创建多模型端点,执行以下代码:

boto_seasson = boto3.session.Session(region_name='us-east-1')
sess = sagemaker.Session(boto_session=boto_seasson)

iam = boto3.client('iam')
role = iam.get_role(RoleName='sagemaker-role')['Role']['Arn']

huggingface_model = HuggingFaceModel(model_data='s3://bucket/path/model.tar.gz',
                                     transformers_version="4.12.3",
                                     pytorch_version="1.9.1",
                                     py_version='py38',
                                     role=role,
                                     sagemaker_session=sess)
mme = MultiDataModel(name='model-name',
                     model_data_prefix='s3://bucket/path/',
                     model=huggingface_model,
                     sagemaker_session=sess)
predictor = mme.deploy(initial_instance_count=1, instance_type="ml.t2.medium")

执行预测操作时:

predictor.predict({"inputs": "test"}, target_model="model.tar.gz")

出现以下错误:

{ModelError}An error occurred (ModelError) when calling the InvokeEndpoint operation: Received client error (400) from primary with message "{
  "code": 400,
  "type": "InternalServerException",
  "message": "[Errno 30] Read-only file system: '/opt/ml/models/d8379026esds430426d32321a85878f6b/model/config.json'"
}

但使用HuggingFaceModel部署单模型时,代码如下,预测操作可正常执行:

huggingface_model = HuggingFaceModel(model_data='s3://bucket/path/model.tar.gz',
                                     transformers_version="4.12.3",
                                     pytorch_version="1.9.1",
                                     py_version='py38',
                                     role=role,
                                     sagemaker_session=sess)
predictor = huggingface_model.deploy(initial_instance_count=1, instance_type="ml.t2.medium")

询问:使用MultiDataModel部署时出现只读文件系统错误的原因是什么?


原因分析

出现该错误的核心差异在于SageMaker单模型与多模型端点的模型存储目录权限:

  • 单模型部署:模型会被解压到/opt/ml/model目录,该目录默认具备可写权限。Hugging Face Transformers库加载模型时,若需要修改配置文件或写入缓存,可直接在该目录操作,不会触发权限问题。
  • 多模型端点(MME)部署:每个模型会被独立下载解压到/opt/ml/models/<唯一模型UUID>目录下,这个目录是只读挂载的。而Hugging Face的模型加载逻辑(比如自动更新config.json、写入模型组件缓存)会尝试写入模型所在目录,这就触发了只读文件系统的权限错误,也就是报错中提到的无法写入config.json的问题。

简单来说,MME的模型存储路径是只读的,而Hugging Face默认加载逻辑需要写入该路径,两者冲突导致了错误。


内容的提问来源于stack exchange,提问作者Mpizos Dimitris

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:55:11