Google Cloud Platform,ML引擎,没有名为sklearn_crfsuite.estimator的模块

时间:2018-11-28 15:44:24

标签: python scikit-learn google-cloud-platform google-cloud-ml crf

我已经在ML Engine上成功训练了一个模型scikit。我可以从Cloud Storage存储桶中获取model.joblib文件并加载它,还可以使用gcloud获取本地预测。但是我无法创建模型版本。

我使用sklearn_crfsuite估算器

crf = sklearn_crfsuite.CRF(

algorithm='lbfgs',

c1=0.1,

c2=0.1,

max_iterations=2,

all_possible_transitions=True

)

我将按如下所述保存模型:

model = 'model.joblib'

joblib.dump(crf, model)

我要训练的setup.py是:

'''Cloud ML Engine package configuration.'''
from setuptools import setup, find_packages



REQUIRED_PACKAGES = ['joblib==0.13.0',
                     'sklearn-crfsuite==0.3.6',
                     'sklearn==0.0'
                    ]

setup(name='trainer',
      version='1.0',
      packages=find_packages(),
      include_package_data=True,
      install_requires=REQUIRED_PACKAGES)

我提交包裹火车:

gcloud ml-engine jobs submit training train_$JOB_NAME \
--runtime-version 1.8 \
--python-version 2.7 \
--job-dir=gs://$BUCKET_NAME/jobs/$JOB_NAME/ \
--package-path= trainer \
--module-name trainer.model \
--region $REGION \
--scale-tier BASIC \
-- \
--train-data-dir=gs://$BUCKET_NAME/dataset \
--job-dir=gs://$BUCKET_NAME/jobs/$JOB_NAME

模型已在job-dir中进行了训练并导出,但是何时部署:

gcloud alpha ml-engine versions create v1 --model teste --origin \
$ORI --python-version 2.7 --runtime-version 1.8 --framework scikit-learn

它报告此错误:

  

错误:(gcloud.alpha.ml-engine.versions.create)检测到错误的模型,并显示错误:“无法加载模型:无法加载模型:/tmp/model/0001/model.joblib。未命名模块sklearn_crfsuite.estimator。(错误代码:0)“

1 个答案:

答案 0 :(得分:0)

您可以验证目录结构是否正确吗?

  • 您不需要在您的setup.py中包括sklearn,因为它是框架提供的。为避免混淆,请将其从REQUIRED_PACKAGES中删除。

  • 您可以通过查看将import joblib移到导入sklearn-crfsuite之前是否有效来验证setup.py正确

  • 确保setup.py与Trainer平行(即,从model.py向上的一个目录)。有关示例,请参见此GitHub存储库:

https://github.com/GoogleCloudPlatform/training-data-analyst/tree/master/blogs/sklearn/babyweight