开发者社区 > 大数据与机器学习 > 人工智能平台PAI > 正文

在机器学习PAI怎么把sklearn训练的模型直接转成alink的模型用?

在机器学习PAI怎么把sklearn训练的模型直接转成alink的模型用?

展开
收起
三分钟热度的鱼 2023-06-05 15:39:36 104 0
4 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    在阿里云机器学习PAI中,可以使用 ALink 进行模型训练和预测,并且支持加载 Scikit-learn(sklearn)训练的模型。下面是一些将 sklearn 模型转换为 ALink 模型的常见方法:

    1. 使用 Python 脚本将 sklearn 模型转换为 PMML 格式

    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 可以加载的格式。

    1. 使用 skl2onnx 库将 sklearn 模型转换为 ONNX 格式

    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 可以加载的格式。

    2023-06-05 22:09:07
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    下面是将Scikit-learn模型转换为Alink模型的步骤:

    1. 使用Scikit-learn训练模型并保存模型文件,例如使用joblib保存:
    import joblib
    from sklearn.linear_model import LogisticRegression
    
    # 训练模型
    clf = LogisticRegression(random_state=0).fit(X, y)
    
    # 保存模型
    joblib.dump(clf, "model.joblib")
    
    1. 在PAI平台上创建Alink任务,选择“转换模型”任务类型,并设置输入和输出路径。

    2. 在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。

    1. 提交Alink任务并等待任务完成。完成后,您可以在OSS上找到转换后的Alink模型文件。

    2. 在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
    2023-06-05 18:47:11
    赞同 展开评论 打赏
  • 在机器学习PAI中,您可以通过 "Model Conversion" 功能将 scikit-learn 训练的模型转换成阿里云平台支持的模型格式,如Alink和MNN。

    以下是进行模型转换的一般步骤:

    1. 安装 Python 环境和相关的转换库

    您需要在机器学习 PAI 上安装 Python 环境和相关的转换库,如tensorflow、onnx等(具体库的安装根据您要转换的目标模型格式而定)。

    1. 导出 scikit-learn 模型

    在 Python 环境中,使用 scikit-learn 的 joblib.dump() 函数将训练好的模型导出为 .pkl 文件。

    1. 转换模型

    您可以使用相关的转换工具,如 TensorFlow-serving 和 ONNX 等,将 scikit-learn 模型转换为 Alink 或 MNN 的模型格式。 完成转换后,您可以将生成的模型上传到阿里云对象存储 OSS 上,并在自己的项目中调用。

    需要注意的是,由于不同的模型转换工具支持的模型类型和版本可能不同,因此您在转换模型时需要仔细选择相应的转换工具和模型类型,以确保转换成功。

    总结起来,将 scikit-learn 训练的模型转换为 Alink 或 MNN 格式的模型,需要对转换库有所了解,并根据您要转换的模型类型和需求进行相应的操作。

    2023-06-05 17:32:37
    赞同 展开评论 打赏
  • 没有这个接口现在,有一些简单的模型,可以直接自己转一下。此回答整理自钉群“Alink开源--用户群”

    2023-06-05 15:58:51
    赞同 展开评论 打赏

相关产品

  • 人工智能平台 PAI
  • 热门讨论

    热门文章

    相关电子书

    更多
    大规模机器学习在蚂蚁+阿里的应用 立即下载
    阿里巴巴机器学习平台AI 立即下载
    机器学习及人机交互实战 立即下载