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

Sagemaker脚本模式部署报错:已实现model_fn仍提示需提供该实现

排查SageMaker脚本模式部署时「ClientError: Please provide a model_fn implementation.」错误

以下是几个关键排查点及修复方案:

1. 变量名拼写错误

你的笔记本代码中存在变量名不一致的问题:

# 定义的变量名为iestimator
iestimator = SKLearnModel(
    entry_point='inference.py',
    source_dir='/home/ec2-user/SageMaker/my_path/src/',
    model_data='s3://my_bucket/my_key/output/model.tar.gz',
    role=role,
    py_version='py3'
)

# 但调用部署时使用了未定义的estimator
predictor = estimator.deploy(...)

修复:将变量名统一为estimator:

estimator = SKLearnModel(
    entry_point='inference.py',
    source_dir='/home/ec2-user/SageMaker/my_path/src/',
    model_data='s3://my_bucket/my_key/output/model.tar.gz',
    role=role,
    py_version='py3'
)

predictor = estimator.deploy(...)

2. 导入路径与目录结构不匹配

你的目录结构中是utils文件夹,但inference.py中导入时写的是util:

# 错误的导入路径
from util.config import TRAINING_VARIABLE_HEADERS

而实际目录结构为:

src
 L utils
   L config.py

修复:修正导入路径为utils:

from utils.config import TRAINING_VARIABLE_HEADERS

这个导入错误会导致inference.py加载失败,SageMaker无法识别到你定义的model_fn,从而抛出错误。

3. 验证依赖模块的可导入性

确保modelling/models.py、modelling/vectorisers.py中的MyModel、MyVectoriser类能被正确导入,且无语法错误。可以在本地SageMaker notebook中运行以下代码测试:

import sys
sys.path.insert(0, '/home/ec2-user/SageMaker/my_path/src/')

from modelling.models import MyModel
from modelling.vectorisers import MyVectoriser
from utils.config import TRAINING_VARIABLE_HEADERS

如果运行报错,说明模块存在语法错误或依赖缺失,需先修复这些问题。

4. 确认model_fn的模型加载逻辑正常

你的model_fn实现本身符合要求,但要确保MyModel类的__init__方法能正确从model_dir加载模型文件,且无异常抛出。如果模型加载过程出错,会导致SageMaker无法正常初始化模型,进而误判为未实现model_fn。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:13:08