我已经在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)“
答案 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