注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。
以下文档描述了不再推荐在平台中使用的foundry_ml
库。相反,请使用palantir_models
库。您还可以通过一个示例学习如何将模型从foundry_ml
迁移到palantir_models
框架。
foundry_ml
库将于2025年10月31日移除,这与计划淘汰Python 3.9相对应。
基于数据集的模型是在Foundry中使用foundry_ml
Python库开发的模型。基于数据集的模型是能够在Foundry中序列化以进行推理的数据变换单元。
一个模型由一系列阶段组成,每个阶段包含一系列有状态的变换,通常使用机器学习算法进行训练。模型和阶段提供了一个标准化的接口,使得使用不同库和算法构建的模型可以具有一致的语义。这允许模型在Foundry的各种应用程序中互换使用。
要在Python中创建模型,请传递您想应用于模型构造函数的阶段。
例如:Model(stage1, stage2)
将通过应用stage1
到输入数据,然后将stage2
应用到stage1
的输出,最后返回stage2
的输出。每个模型都保存一个API,技术上定义了模型期望的输入以及它将产生的输出。
由于模型可能封装来自不同且不兼容框架的阶段,Model
接口使得所有模型能够透明地互换。
以下方法和属性可用于所有Foundry ML模型:
transform(data)
: 串行应用阶段以生成得分输出。append_stage(stage)
: 在当前阶段之后向模型追加一个额外的阶段。input_spec
: 描述预期输入的格式。output_spec
: 描述输出的格式。stages
: 获取模型中的阶段列表。大多数建模框架都有其自己的序列化格式和方法。特别是,分布式和多语言框架通常具有难以理解的序列化方法。Foundry的模型接口通过Architecture V2简化了序列化过程。
Architecture V2是一种序列化格式,增加了对许多新特性的支持:
在Python Transforms中,您可以使用以下模板:
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
from transforms.api import transform, Input, Output from foundry_ml import Model @transform( training_data=Input("/path/to/input/training/data"), out_model = Output("/path/to/output/model"), ) def create_model(training_data, out_model): df = training_data.dataframe() # 在此处训练模型 model = Model(*model stages) # 创建模型对象,参数为模型的各个阶段 model.save(out_model) # 将训练好的模型保存到指定路径 @transform( in_model = Input("/path/to/output/model"), test_data = Input("/path/to/input/test/data" ), out_data = Output("/path/to/scores/output"), ) def apply_model(in_model, test_data, out_data): model = Model.load(in_model) # 加载训练好的模型 output_df = model.transform(test_data.dataframe()) # 使用模型对测试数据进行预测或变换 out_data.write_dataframe(output_df) # 将输出数据写入指定路径
在代码工作簿中,返回一个 foundry_ml.Model
实例以保存模型,并通过将其定义为代码块的函数参数来加载它。
模型是一个由称为阶段的单个变换组成的线性管道。所有阶段均遵循一个通用接口来执行其变换。
基本的阶段契约是最小的,仅有单一类型。
通过 Stage()
调用的阶段表示模型管道的一个计算组件,它封装了一个外部对象(例如 sklearn 模型)。每次调用 transform()
都映射到托管模型上的某个注册函数。
阶段具有以下职责:
Stage.transform
)。在大多数情况下,阶段的最小定制仅限于变换对象之外。Foundry 提供了一个阶段注册表,可以通过类型为支持的库自动创建阶段。
利用帮助
函数查看 foundry_ml
当前支持的库类及其已注册的变换函数和序列化格式。
阶段可以包含许多可配置参数。参数用于控制变换函数的应用。
为支持标准化模型和接口,可以使用参数在阶段之间传递相关信息。
对于 foundry_ml
支持的阶段,必需、默认和非必填参数是动态生成的。了解更多可用参数。