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

无法在ML Engine部署scikit-learn模型,求非TensorFlow解决方案

解决AI Platform部署scikit-learn模型时的格式报错问题

我之前也碰到过一模一样的问题——AI Platform(原ML Engine)默认会把未指定框架的模型当成TensorFlow模型来处理,所以才会要求找.pb/.pbtxt文件。其实不用切换到TensorFlow,只要正确配置部署参数或者用自定义预测器就能解决,下面给你两种可行的方案:

方案一:使用预构建的scikit-learn容器(推荐,无需额外代码)

AI Platform提供了针对scikit-learn的预构建运行时容器,你只需要在创建版本时明确指定框架类型、对应的运行时版本和Python版本即可:

  1. 确保你的model.joblib已经上传到Cloud Storage的某个目录下,比如gs://your-bucket/model_files/(注意路径要指向包含模型文件的目录,不是单个文件)
  2. 执行以下命令创建版本(替换成你的模型名、版本号、GCS路径和匹配的版本信息):
gcloud ai-platform versions create v1 \
  --model=your-model-name \
  --origin=gs://your-bucket/model_files/ \
  --runtime-version=2.11 \
  --framework=scikit-learn \
  --python-version=3.9

注意:要保证runtime-version和python-version与你训练模型时的环境兼容,比如runtime 2.11对应scikit-learn 1.2.2、Python 3.9;如果你的模型用了更老的scikit-learn版本,需要选择对应的runtime版本。

方案二:自定义预测器(适合需要预处理/后处理或特殊依赖的场景)

如果你的模型需要自定义的输入预处理、输出后处理,或者依赖一些特殊的Python库,就需要创建自定义预测器:

  1. 编写predictor.py文件,定义加载模型和预测的逻辑:
import joblib
import os

class Predictor:
    def __init__(self, model):
        self.model = model

    @classmethod
    def from_path(cls, model_dir):
        # 加载joblib格式的模型
        model_path = os.path.join(model_dir, 'model.joblib')
        model = joblib.load(model_path)
        return cls(model)

    def predict(self, instances, **kwargs):
        # 这里可以添加自定义预处理逻辑,比如转换输入格式
        predictions = self.model.predict(instances)
        # 也可以添加后处理,比如格式化输出
        return predictions.tolist()
  1. 编写setup.py文件,声明模型依赖(版本要和训练时一致):
from setuptools import setup

setup(
    name='sklearn-custom-predictor',
    version='0.1',
    packages=[''],
    install_requires=[
        'scikit-learn==1.2.2',
        'joblib==1.2.0'
    ]
)
  1. 将predictor.py、setup.py和model.joblib一起上传到Cloud Storage的同一个目录,比如gs://your-bucket/custom_model/

  2. 创建版本时指定自定义预测器的配置:

gcloud ai-platform versions create v1 \
  --model=your-model-name \
  --origin=gs://your-bucket/custom_model/ \
  --runtime-version=2.11 \
  --python-version=3.9 \
  --package-uris=gs://your-bucket/custom_model/ \
  --prediction-class=predictor.Predictor

常见排查点

  • 确认GCS路径正确:--origin指向的是包含模型文件的目录,不是单个文件的路径
  • 版本兼容性:运行时版本、Python版本和scikit-learn版本必须匹配,避免出现依赖冲突
  • 权限问题:确保AI Platform服务账号有访问该GCS bucket的权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:56:58