在机器学习PAI怎么把sklearn训练的模型直接转成alink的模型用?
在阿里云机器学习PAI中,可以使用 ALink 进行模型训练和预测,并且支持加载 Scikit-learn(sklearn)训练的模型。下面是一些将 sklearn 模型转换为 ALink 模型的常见方法:
Scikit-learn 提供了一个 sklearn2pmml
的库,可以将 sklearn 模型转换成 PMML(Predictive Model Markup Language)格式,而 ALink 支持加载 PMML 格式的模型。您可以使用以下命令安装该库:
pip install sklearn2pmml
然后在 Python 代码中使用 sklearn2pmml
库将模型转换为 PMML 格式,例如:
from sklearn2pmml import sklearn2pmml
from sklearn.linear_model import LogisticRegression
clf = LogisticRegression()
# Train the model using sklearn
...
# Convert the model to PMML format
sklearn2pmml(clf, "model.pmml")
在上述代码中,将 sklean 训练好的逻辑回归模型 clf 转换为 PMML 格式,并将结果保存到名为 model.pmml
的文件中。
然后,您可以使用以下 ALink 命令加载 PMML 格式的模型进行预测:
--script="from alink_model_exporter import AlinkModelExporter;model_path='file:///root/model.pmml';AlinkModelExporter.convert(model_path)"
在上述命令中,将 model.pmml
文件的路径指定为 model_path
,然后使用 AlinkModelExporter.convert()
函数将模型转换为 ALink 可以加载的格式。
ONNX(Open Neural Network Exchange)是一种跨平台、可移植的深度学习模型表示格式,而 ALink 支持加载 ONNX 格式的模型。您可以使用 skl2onnx
库将 sklearn 模型转换为 ONNX 格式,例如:
import numpy as np
from sklearn import datasets
from sklearn.linear_model import LogisticRegression
from skl2onnx.common.data_types import FloatTensorType
from skl2onnx import convert_sklearn
# Load iris dataset
iris = datasets.load_iris()
X = iris.data[:, :2]
y = iris.target
# Train the model using sklearn
clf = LogisticRegression().fit(X, y)
# Convert the model to ONNX format
initial_type = [('input', FloatTensorType([None, 2]))]
onnx_model = convert_sklearn(clf, initial_types=initial_type)
# Save the model to a file
with open("model.onnx", "wb") as f:
f.write(onnx_model.SerializeToString())
在上述代码中,将 sklean 训练好的逻辑回归模型 clf 转换为 ONNX 格式,并将结果保存到名为 model.onnx
的文件中。
然后,您可以使用以下 ALink 命令加载 ONNX 格式的模型进行预测:
--script="from alink_model_exporter import AlinkModelExporter;model_path='file:///root/model.onnx';AlinkModelExporter.convert(model_path)"
在上述命令中,将 model.onnx
文件的路径指定为 model_path
,然后使用 AlinkModelExporter.convert()
函数将模型转换为 ALink 可以加载的格式。
下面是将Scikit-learn模型转换为Alink模型的步骤:
import joblib
from sklearn.linear_model import LogisticRegression
# 训练模型
clf = LogisticRegression(random_state=0).fit(X, y)
# 保存模型
joblib.dump(clf, "model.joblib")
在PAI平台上创建Alink任务,选择“转换模型”任务类型,并设置输入和输出路径。
在Alink任务中添加以下代码:
import joblib
from sklearn2pmml import sklearn2pmml
from alink_model_conversion_utils import save_pmml_model_to_oss
# 加载Scikit-learn模型
clf = joblib.load("/input/model.joblib")
# 将Scikit-learn模型转换为PMML格式
pmml_bytes = sklearn2pmml(clf, X.columns.tolist(), "output")
# 将PMML格式的模型保存到OSS
save_pmml_model_to_oss(pmml_bytes, "oss://<your_bucket>/<your_model_name>.pmml")
其中,alink_model_conversion_utils
是Alink提供的模型转换工具包,可以在Alink任务中直接使用。save_pmml_model_to_oss
函数将PMML格式的模型保存到OSS。
提交Alink任务并等待任务完成。完成后,您可以在OSS上找到转换后的Alink模型文件。
在Alink任务中添加训练代码,加载转换后的Alink模型并使用它进行训练。例如:
from pyflink.dataset import ExecutionEnvironment
from pyflink.table import TableEnvironment, BatchTableEnvironment
from pyflink.table.descriptors import Schema, OldCsv, FileSystem
from pyflink.table.types import DataTypes
# 创建Alink环境
t_env = BatchTableEnvironment.create(env=ExecutionEnvironment.get_execution
在机器学习PAI中,您可以通过 "Model Conversion" 功能将 scikit-learn 训练的模型转换成阿里云平台支持的模型格式,如Alink和MNN。
以下是进行模型转换的一般步骤:
您需要在机器学习 PAI 上安装 Python 环境和相关的转换库,如tensorflow、onnx等(具体库的安装根据您要转换的目标模型格式而定)。
在 Python 环境中,使用 scikit-learn 的 joblib.dump()
函数将训练好的模型导出为 .pkl 文件。
您可以使用相关的转换工具,如 TensorFlow-serving 和 ONNX 等,将 scikit-learn 模型转换为 Alink 或 MNN 的模型格式。 完成转换后,您可以将生成的模型上传到阿里云对象存储 OSS 上,并在自己的项目中调用。
需要注意的是,由于不同的模型转换工具支持的模型类型和版本可能不同,因此您在转换模型时需要仔细选择相应的转换工具和模型类型,以确保转换成功。
总结起来,将 scikit-learn 训练的模型转换为 Alink 或 MNN 格式的模型,需要对转换库有所了解,并根据您要转换的模型类型和需求进行相应的操作。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
人工智能平台 PAI(Platform for AI,原机器学习平台PAI)是面向开发者和企业的机器学习/深度学习工程平台,提供包含数据标注、模型构建、模型训练、模型部署、推理优化在内的AI开发全链路服务,内置140+种优化算法,具备丰富的行业场景插件,为用户提供低门槛、高性能的云原生AI工程化能力。