ai-center
2022.4
false
- 发行说明
- 在开始之前
- 入门指南
- 安装 Automation Suite
- 迁移和升级
- 项目
- 数据集
- ML 包
- 管道
- ML 技能
- ML 日志
- AI Center 中的 Document Understanding
- 许可
- 如何
- 基本故障排除指南
AI Center 用户指南
Last updated 2024年10月17日
完整管道
完整管道用于一次性训练新的机器学习模型并评估此新模型的性能。此外,在训练之前运行预处理步骤,从而允许对经过训练的机器学习模型进行数据操作/训练。
要使用此管道,包必须包含用于处理数据以及训练、评估和保存模型的代码(train.py 文件中的
process_data()
、train ()
、evaluate()
和 save()
函数)。此代码与数据集或数据集中的子文件夹以及评估数据集(可选)一起生成新的包版本、分数(evaluate()
函数为新版本的模型返回的内容)以及用户想要保留的任何其他输出。
按此处所述创建新的完整管道。确保提供以下特定于完整管道的信息:
- 在“管道类型”字段中,选择“完整管道运行”。
- 在“选择输入数据集”字段中,选择要从中导入数据以进行完整训练的数据集或文件夹。在管道运行时,该数据集/文件夹中的所有文件应在
data_directory
变量中存储的路径上本地可用。 - (可选)在“选择评估数据集”字段中,选择要从中导入数据以进行评估的数据集或文件夹。在管道运行时,该数据集/文件夹中的所有文件应在
test_data_directory
变量中存储的路径上本地可用。如果未选择任何文件夹,则预计您的管道会将某些内容写入到process_data
函数的test_data_directory
变量中存储的目录。如果您未选择文件夹,并且您的process_data
未写入到test_data_directory
,则传递到评估函数的目录将为空。 - 在“输入参数”部分中,输入管道定义和使用的环境变量(如果有)。环境变量包括:
training_data_directory
,默认值为 dataset/training:定义管道可在本地访问训练数据的位置。此目录用作train()
函数的输入。大多数用户将不必通过用户界面覆盖此参数,只需将数据写入到process_data
函数的os.environ['training_data_directory']
中,并且预期可以使用train(self, data_directory
来调用os.environ['training_data_directory']
中的参数 data_directory。-
test_data_directory
,默认值为 dataset/test:定义管道可在本地访问测试数据的位置。此目录用作evaluate()
函数的输入。大多数用户将不必通过用户界面覆盖此参数,只需将数据写入到process_data
函数的os.environ['test_data_directory']
中,并且预期可以使用evaluate(self, data_directory
来调用os.environ['test_data_directory']
中的参数 data_directory。 artifacts_directory
,默认值为 artifacts:这定义目录的路径,该目录将保留为与此管道相关的辅助数据。大多数用户(如果不是所有用户)都不必通过用户界面覆盖此参数。管道执行期间可以保存任何内容,包括图像、pdf 和子文件夹。具体而言,代码在路径os.environ['artifacts_directory']
指定的目录中写入的所有数据都会在管道运行结束时上传,并且可以从“管道详细信息”页面中查看。save_training_data
,默认值为 true:如果设置为 true,则training_data_directory
文件夹将在管道运行结束时作为管道的输出上传到目录training_data_directory
下。save_test_data
,默认值为 true:如果设置为 true,则test_data_directory
文件夹将在管道运行结束时作为管道的输出上传到目录test_data_directory
下。
根据是否选择评估数据集,您可以创建完整管道,如下所示:
注意:管道执行可能需要一些时间。稍后请返回以查看其状态。
执行管道后,在“管道”页面中,管道的状态将更改为“成功”。“管道详细信息”页面会显示与管道运行相关的任意文件和文件夹。
train()
函数在 train.csv 上训练,而不在数据文件夹的未更改内容(example1.txt和 example2.txt)上训练。process_data
可用于根据任何用户定义的参数动态拆分数据。- 第一个完整管道在包含 example1.txt、example2.txt 和 test.csv 的目录上运行评估。第二个完整管道在仅包含 test.csv 的目录上运行评估。这就是在创建第二个完整管道运行时未显式选择评估集的差异。这样,您可以对 UiPath 机器人中的新数据进行评估,还可以动态拆分项目中已有的数据。
- 每个单独的组件都可以将任意工件(直方图、TensorBoard 日志和分布图等)写入到管道。
- ML 包 zip 文件是由训练管道自动生成的新的包版本。
- artifacts 文件夹(仅在不为空时可见)用于对管道生成的所有工件进行重新分组,并且保存在
artifacts_directory
文件夹下。 - training 文件夹(仅在
save_training_data
设置为 true 时可见)是training_data_directory
文件夹的副本。 - test 文件夹(仅在
save_training_data
设置为 true 时可见)是test_data_directory
文件夹的副本。
以下是某个包(例如版本 1.1)上的完整管道执行的概念类推,以及版本 1.0 上训练管道的输出。
重要事项:这是一个简化的示例。其目的是说明数据集和包在完整管道中的交互方式。这些步骤仅是概念性步骤,并不代表平台的工作方式。
- 将包版本 1.1 复制到
~/mlpackage
。 - 创建名为
./dataset
的目录。 - 将输入数据集的内容复制到
./dataset
。 - 如果用户在“选择评估数据集”字段中设置了某些内容,则复制该评估数据集并将其放在
./dataset/test
中。 - 设置环境变量
training_data_directory=./dataset/training
和test_data_directory=./dataset/test
。 - 执行以下 python 代码:
from train import Main m = Main() m.process_data('./dataset') m.evaluate(os.environ['test_data_directory']) m.train(os.environ['training_data_directory']) m.evaluate(os.environ['test_data_directory'])
from train import Main m = Main() m.process_data('./dataset') m.evaluate(os.environ['test_data_directory']) m.train(os.environ['training_data_directory']) m.evaluate(os.environ['test_data_directory']) - 将
~/mlpackage
的内容保留为包版本 1.2。如果写入,则保留工件。如果save_data
设置为 true,则生成数据的快照。注意:环境变量training_data_directory
和test_data_directory
的存在意味着process_data
可以使用这些变量来动态拆分数据。
_results.json
文件包含管道运行执行的摘要,并显示完整管道的所有输入/输出和执行时间。
{
"parameters": {
"pipeline": "< Pipeline_name >",
"inputs": {
"package": "<Package_name>",
"version": "<version_number>",
"input_data": "<storage_directory>",
"evaluation_data": "<storage_directory>/None",
"gpu": "True/False"
},
"env": {
"key": "value",
...
}
},
"run_summary": {
"execution_time": <time>, #in seconds
"start_at": <timestamp>, #in seconds
"end_at": <timestamp>, #in seconds
"outputs": {
"previous_score": <previous_score>, #float
"current_score": <current_score>, #float
"training_data": "<training_storage_directory>/None",
"test_data": "<test_storage_directory>/None",
"artifacts_data": "<artifacts_storage_directory>",
"package": "<Package_name>",
"version": "<new_version>"
}
}
}
{
"parameters": {
"pipeline": "< Pipeline_name >",
"inputs": {
"package": "<Package_name>",
"version": "<version_number>",
"input_data": "<storage_directory>",
"evaluation_data": "<storage_directory>/None",
"gpu": "True/False"
},
"env": {
"key": "value",
...
}
},
"run_summary": {
"execution_time": <time>, #in seconds
"start_at": <timestamp>, #in seconds
"end_at": <timestamp>, #in seconds
"outputs": {
"previous_score": <previous_score>, #float
"current_score": <current_score>, #float
"training_data": "<training_storage_directory>/None",
"test_data": "<test_storage_directory>/None",
"artifacts_data": "<artifacts_storage_directory>",
"package": "<Package_name>",
"version": "<new_version>"
}
}
}