导入在IBM watsonx.aiRuntime 之外训练的机器学习模型,以便部署和测试模型。 查看可用于导入模型的模型框架。
在这里,导入经过训练的模型是指:
- 将训练好的模型存储在watsonx.aiRuntime 资源库中
- 可选:在watsonx.ai运行时服务中部署存储模型
repository 表示 Cloud Object Storage 存储区。 有关更多信息,请参阅 创建部署空间。
您可以通过以下方式导入模型:
有关更多信息,请参阅:
有关如何使用 Python 客户机以编程方式添加模型的示例,请参阅以下 Notebook:
有关如何使用 REST API以编程方式添加模型的示例,请参阅以下 Notebook:
按框架类型导入模型的可用方法
本表列出了按框架类型将模型导入watsonx.aiRuntime 的可用方法。
import 选项 | Spark MLlib | Scikit-learn | XGBoost | TensorFlow | PyTorch |
---|---|---|---|---|---|
导入模型对象 | ✓ | ✓ | ✓ | ||
使用文件路径导入模型 | ✓ | ✓ | ✓ | ✓ | |
使用目录路径导入模型 | ✓ | ✓ | ✓ | ✓ |
使用 UI 添加模型
如果要导入 PMML 格式的模型,可以直接导入模型 .xml
文件。
要使用 UI 导入模型:
- 在 "watsonx.ai运行时空间的 "资产选项卡中,点击 "进口资产。
- 转至 本地文件 ,然后选择 模型。
- 选择要导入的模型文件,然后单击 导入。
导入机制根据 .xml
文件中的版本字符串自动选择匹配的模型类型和软件规范。
导入模型对象
此导入方法受有限数量的 ML 框架支持。 有关更多信息,请参阅 按框架类型导入模型的可用方法。
要导入模型对象:
- 如果您的模型位于远程位置,请遵循 下载存储在远程位置的模型。
- 将模型对象存储在watsonx.aiRuntime 资源库中。 更多信息,请参阅将模型存储在watsonx.aiRuntime 资源库中。
使用文件路径导入模型
此导入方法受有限数量的 ML 框架支持。 有关更多信息,请参阅 按框架类型导入模型的可用方法。
要使用文件路径导入模型,请执行以下操作:
如果您的模型位于远程位置,请遵循 下载存储在远程位置的模型 以下载该模型。
如果模型位于本地,请将其放置在特定目录中:
!cp <saved model> <target directory> !cd <target directory>
对于 scikit-learn、XGBoost、Tensorflow 和 PyTorch 模型,如果下载的文件不是
.tar.gz
存档,请进行归档:!tar -zcvf <saved model>.tar.gz <saved model>
模型文件必须位于目录的顶级文件夹中,例如:
assets/ <saved model> variables/ variables/variables.data-00000-of-00001 variables/variables.index
使用保存文件的路径将模型文件存储到watsonx.aiRuntime 资源库中。 更多信息,请参阅将模型存储在watsonx.aiRuntime 资源库中。
使用目录路径导入模型
此导入方法受有限数量的 ML 框架支持。 有关更多信息,请参阅 按框架类型导入模型的可用方法。
要使用目录路径导入模型,请执行以下操作:
如果模型位于远程位置,请参阅下载存储在远程位置中的模型。
如果模型位于本地,请将其放置在特定目录中:
!cp <saved model> <target directory> !cd <target directory>
对于 scikit-learn, XGBoost, Tensorflow和 PyTorch 模型,模型文件必须位于目录的顶级文件夹中,例如:
assets/ <saved model> variables/ variables/variables.data-00000-of-00001 variables/variables.index
使用目录路径将模型文件存储在watsonx.aiRuntime 资源库中。 更多信息,请参阅将模型存储在watsonx.aiRuntime 资源库中。
下载存储在远程位置中的模型
请按照此样本代码从远程位置下载模型:
import os
from wget import download
target_dir = '<target directory name>'
if not os.path.isdir(target_dir):
os.mkdir(target_dir)
filename = os.path.join(target_dir, '<model name>')
if not os.path.isfile(filename):
filename = download('<url to model>', out = target_dir)
导入模型时要考虑的事项
要了解有关导入特定模型类型的更多信息,请参阅:
要进一步了解可与 "watsonx.ai运行时一起使用的框架,请参阅 "支持的框架。
以 PMML 格式保存的模型
- 从 PMML 导入的模型的唯一可用部署类型是联机部署。
- PMML 文件必须具有
.xml
文件扩展名。 - PMML 模型无法用于 SPSS 流式流程。
- PMML 文件不得包含序言。 根据您在保存模型时使用的库,缺省情况下可能会将序言添加到文件的开头。 例如,如果文件包含 prolog 字符串(例如
spark-mllib-lr-model-pmml.xml
),请在将 PMML 文件导入到部署空间之前移除该字符串。
根据您在保存模型时使用的库,缺省情况下可能会将序言添加到文件的开头,如以下示例中所示:
::::::::::::::
spark-mllib-lr-model-pmml.xml
::::::::::::::
在将 PMML 文件导入watsonx.aiRuntime 之前,必须先删除该序言。
Spark MLlib 模型
- 只有分类和回归模型可用。
- 定制变换器,用户定义的函数和类不可用。
Scikit-learn 模型
.pkl
和.pickle
是可用的导入格式。- 要序列化或选取模型,请使用
joblib
包。 - 只有分类和回归模型可用。
predict()
API 的 pandas 数据帧输入类型不可用。- scikit-learn 模型的唯一可用部署类型是联机部署。
XGBoost 模型
.pkl
和.pickle
是可用的导入格式。- 要序列化或选取模型,请使用
joblib
包。 - 只有分类和回归模型可用。
predict()
API 的 pandas 数据帧输入类型不可用。- XGBoost 模型的唯一可用部署类型是联机部署。
TensorFlow 模型
.pb
,.h5
和.hdf5
是可用的导入格式。- 要保存或序列化 TensorFlow 模型,请使用
tf.saved_model.save()
方法。 tf.estimator
不可用。- TensorFlow 模型的唯一可用部署类型为: 联机部署和批处理部署。
PyTorch 模型
PyTorch 模型的唯一可用部署类型是联机部署。
要将 Pytorch 模型导入watsonx.aiRuntime,必须先将其导出为 "
.onnx
格式。 请参阅此代码。torch.onnx.export(<model object>, <prediction/training input data>, "<serialized model>.onnx", verbose=True, input_names=<input tensor names>, output_names=<output tensor names>)
在watsonx.ai运行时资源库中存储模型
使用此代码将模型存储在watsonx.aiRuntime 资源库中:
from ibm_watson_machine_learning import APIClient
client = APIClient(<your credentials>)
sw_spec_uid = client.software_specifications.get_uid_by_name("<software specification name>")
meta_props = {
client.repository.ModelMetaNames.NAME: "<your model name>",
client.repository.ModelMetaNames.SOFTWARE_SPEC_UID: sw_spec_uid,
client.repository.ModelMetaNames.TYPE: "<model type>"}
client.repository.store_model(model=<your model>, meta_props=meta_props)
备注:
根据所使用的模型框架,
<your model>
可以是实际模型对象,保存的模型文件的完整路径或模型文件所在目录的路径。 有关更多信息,请参阅 按框架类型导入模型的可用方法。要获取要用作
<software specification name>
的可用软件规范的列表,请使用client.software_specifications.list()
方法。有关要用作
model_type
的可用模型类型的列表,请参阅 部署的软件规范和硬件规范。将 Pytorch 模型导出为 "
.onnx
格式时,请指定 "keep_initializers_as_inputs=True
标记,并将 "opset_version
设为 9watsonx.ai运行时部署使用的是 "caffe2
ONNX 运行时,它不支持高于 9 的 opset 版本)。torch.onnx.export(net, x, 'lin_reg1.onnx', verbose=True, keep_initializers_as_inputs=True, opset_version=9)
父主题: 部署空间中的资产