# 算子管理
工作流是由一个一个算子连接起来的,所以算子至关重要,平台提供部分公共算子,用户也可以自定义自己的算子。
# 新建算子
# 基础属性
![]()
| 字段 | 意义 |
|---|---|
| 名称 | 算子的名称,方便在工作流中识别,比如 LFM 训练 |
| 路径 | 算子的目录树,个人私有的以 /个人私有/ 开头,可以多级目录,如 /个人私有/xxx ,项目共享的则以项目名开头 |
| 描述 | 备注信息,可选 |
# 输入配置
如果工作流中前一个算子需要输出内容给本算子,或者本算子需要依赖于前一个算子运行完毕,则需要此输入配置。
![]()
点击顶部的 新增输入 可以添加更多的输入,点击卡片的 x 可以删除输入,一个算子的输入可以有 0 或任意多个,如果算子输入为 0 个时,则为起始算子。
| 字段 | 意义 |
|---|---|
| 输入名称 | 算子此输入对应的名字,算子里的代码可以读取对应的输入值 |
| 输入类型 | 目前类型的唯一作用,就是限制连接,比如输入为 RawData,则与其连接的前一个算子输出的类型必须也为 RawData,否则不允许连接,起到防呆作用 |
| 输入描述 | 备注 |
# 输出配置
如果工作流中,需要将本算子的内容输出给下一个算子,或者下一个算子需要依赖于本算子运行完毕,则需要此输出配置。
![]()
点击顶部的 新增输出 可以添加更多的输出,点击卡片的 x 可以删除输入,一个算子的输出可以有 0 或任意多个。
| 字段 | 意义 |
|---|---|
| 输出名称 | 算子此输出对应的名称,算子里的代码需要将输出内容写到对应名称规则的文件里 |
| 输出类型 | 目前类型的唯一作用,就是限制连接,比如输入为 RawData,则与其连接的后一个算子输入的类型必须也为 RawData,否则不允许连接,起到防呆作用 |
| 输出描述 | 备注 |
# 可调参数
如果算子需要一些设置参数,则可以添加这个:
![]()
点击顶部的 新增参数 可以添加更多的参数,点击卡片的 x 可以删除,一个算子的可调参数可以有 0 或任意多个。
点击顶部的 调整顺序 可以调整排序,在工作流中设置算子参数时更方便直观。
| 字段 | 意义 |
|---|---|
| 参数名称 | 当参数传递给算子里代码时的名字 |
| 参数名称(展示) | 在工作流界面右侧展示时显示名称,一般用浅显易懂的中文 |
| 参数类型 | 在算子代码使用在线编辑时有用,会把参数提前转换好类型,如 整型、字符串、浮点型 |
| 参数默认值 | 就是默认值 |
# 运行设置
![]()
| 字段 | 意义 |
|---|---|
| 镜像地址 | 算子运行使用的镜像,点击可以搜索,来自你的镜像管理列表,亦可直接填写外部镜像 |
| 资源组 | 算子运行时需要的资源 |
| 代码 | 即算子运行的代码,有三种方式: |
关于编辑算子运行的代码,有 3 种方式,具体如下:👇
| 字段 | 意义 |
|---|---|
| 无 | 即无代码,不需要平台帮你拉取代码,可以选择直接在启动命令中填写 git clone 等操作 |
| Huya Git | 填虎牙 git地址 和 分支,平台帮助你拉取好代码,然后你在启动命令中,填写启动脚本 |
| 在线编辑 | 直接在网页中书写代码,平台会自动调用 runner 这个钩子函数,关于算子输入、输出和可调参数的使用,请看后面详解 |
# 算子的输入与输出详解
每个算子可以有 0 个或多个输入/输出。
我们的代码如何获取输入的数据和让数据输出给下一个算子呢?我们分两种代码实现形式。
# 在线编辑器
请结合前面已经配置的 输入、输出、可调参数,看下方编辑的示例代码。👇
![]()
当用户使用在线编辑器时,平台已经封装了一个 runner 钩子函数,用户只需要在 runner 函数中填充自己的代码,即可快速编程。目前支持 Python 代码。
如上图所示,我们可以很简单的在在线编辑器中写代码获取算子的“输入”、“可调参数”以及返回“输出“给下一个算子。
# 非在线编辑器
当代码使用 Huya Git 或者只有启动命令时,如何获取输入、可调参数以及输出呢?
![]()
如上图所示,输入和可调参数直接通过命令行参数进行传递,将输入名称和参数名称通过符号 %% 包括起来即可,平台会自动将这个 %% 包括起来的字符,替换为其真实值,用户代码中可以直接去获取命令行传递的参数即可。
![]()
如上图所示,输出需用户在自己的代码中,按一定规则将输出内容写入特定临时文件中,例如:
有一个输出为 my-output-1,临时文件即为 /tmp/my-output-1.txt,拼接规则为:/tmp/ + 输出名称 + .txt,然后将待输出的内容 hello world 写入这个文件中,即可,系统会自动收集这些内容。