训练项目和训练任务管理

训练项目接口

class anylearn.interfaces.project.Project(id: Optional[str] = None, name: Optional[str] = None, description: Optional[str] = None, create_time: Optional[datetime.datetime] = None, update_time: Optional[datetime.datetime] = None, creator_id: Optional[str] = None, datasets: Optional[list] = None, load_detail=False)[源代码]

基类:anylearn.interfaces.base.BaseObject

AnyLearn项目类,以方法映射项目CRUD相关接口

id

项目的唯一标识符,自动生成,由PROJ+uuid1生成的编码中后28个有效位(小写字母和数字)组成

name

项目名称(非空 长度1~50)

description

项目描述(可为空 长度最大255)

create_time

创建时间

update_time

更新时间

creator_id

创建者的ID

datasets

项目实用的数据集,以逗号分隔数据集的ID拼成的字符串,无多余空格

load_detail

初始化时是否加载详情

__init__(id: Optional[str] = None, name: Optional[str] = None, description: Optional[str] = None, create_time: Optional[datetime.datetime] = None, update_time: Optional[datetime.datetime] = None, creator_id: Optional[str] = None, datasets: Optional[list] = None, load_detail=False)[源代码]
参数
  • id – 项目的唯一标识符,自动生成,由PROJ+uuid1生成的编码中后28个有效位(小写字母和数字)组成

  • name – 项目名称(非空 长度1~50)

  • description – 项目描述(可为空 长度最大255)

  • create_time – 创建时间

  • update_time – 更新时间

  • creator_id – 创建者的ID

  • datasets – 项目实用的数据集,以逗号分隔数据集的ID拼成的字符串,无多余空格

  • load_detail – 初始化时是否加载详情

_check_fields(required=[])

对象检查属性是否存在

_create()

创建对象,如果子类创建方法与此有较大差异可以重写此方法

_fields = {'payload': {'create': ['id', 'name', 'description', 'datasets'], 'update': ['id', 'name', 'description', 'datasets']}, 'required': {'create': ['name'], 'update': ['id', 'name']}}

创建/更新对象时:

  • 必须包含且不能为空的字段 _fields['required']

  • 所有字段 _fields['payload']

_namespace()[源代码]
  • 子类的命名空间,调用此方法以获取子类的名称用于异常信息输出等,以 User 为例, _namespace 可以为 user

  • 子类需实现此抽象方法

_update()

更新对象,如果子类更新方法与此有较大差异可以重写此方法

_url_create()

创建对象url,如果子类创建对象接口名称不是 add ,可以重写此方法来定制接口名称

_url_delete()

删除对象url,如果子类删除对象接口名称不是 delete ,可以重写此方法来定制接口名称

_url_update()

更新对象url,如果子类更新对象接口名称不是 update ,可以重写此方法来定制接口名称

delete(force: bool = False)

删除对象

  • 对象属性 id 应为非空

返回

True or False

返回类型

bool

get_detail()[源代码]

获取训练项目详细信息

  • 对象属性 id 应为非空

返回

训练项目对象。

返回类型

Project

classmethod get_list()[源代码]

获取训练项目列表

返回

训练项目对象的集合。

返回类型

List [Project]

get_train_tasks(load_detail=False)[源代码]

获取训练项目的训练任务列表

  • 对象属性 id 应为非空

返回

训练任务的集合。

返回类型

List [TrainTask]

save()

创建或更新对象

  • 对象包含非空属性 id 时为更新,否则为创建

  • 创建对象时必须包含且不能为空的字段: _fields['required']['create']

  • 创建对象时包含的所有字段: _fields['payload']['create']

  • 更新对象时必须包含且不能为空的字段: _fields['required']['update']

  • 更新对象时包含的所有字段: _fields['payload']['update']

返回

True or False

返回类型

bool

训练任务接口

class anylearn.interfaces.train_task.TrainTask(id: Optional[str] = None, name: Optional[str] = None, description: Optional[str] = None, state: Optional[int] = None, creator_id: Optional[str] = None, project_id: Optional[str] = None, algorithm_id: Optional[str] = None, algorithm_git_ref: Optional[str] = None, train_params: Optional[str] = None, train_params_prefix: str = '--', train_params_delimeter: str = ' ', files: Optional[list] = None, results_id: Optional[str] = None, secret_key: Optional[str] = None, create_time: Optional[datetime.datetime] = None, finish_time: Optional[datetime.datetime] = None, envs: Optional[str] = None, hpo=False, hpo_search_space: Optional[str] = None, final_metric: Optional[float] = None, resource_request: Optional[List[Dict[str, Dict[str, int]]]] = None, load_detail=False, entrypoint: Optional[str] = None, output: Optional[str] = None, mirror_id: Optional[str] = None, num_nodes=1, nproc_per_node=1)[源代码]

基类:anylearn.interfaces.base.BaseObject

AnyLearn训练任务类,以方法映射训练任务CRUD相关接口

id

训练任务的唯一标识符,自动生成,由TRAI+uuid1生成的编码中后28个有效位(小写字母和数字)组成

name

训练任务的名称(长度1~50))

description

训练任务描述(长度最大255)

state

训练任务状态

creator_id

创建者ID

project_id

训练项目ID

algorithm_id

算法ID

algorithm_git_ref

算法Gitea代码仓库的版本号(可以是commit号、分支名、tag名),非必填。

train_params

训练任务参数列表

train_params_prefix

训练超参数键前标识

train_params_delimeter

训练超参数键值间的分隔符

files

训练相关的文件(默认’’ 多个的话用逗号’,’隔开)

results_id

训练结果文件ID

secret_key

密钥

create_time

创建时间

finish_time

结束时间

envs

训练任务环境变量(默认’’)

hpo

是否开启超参数自动调优

hpo_search_space

开启超参数自动调优时不能为空

final_metric

最终结果指标

load_detail

初始化时是否加载详情

resource_request

训练所需计算资源的请求。 如未填,则使用Anylearn后端的:obj:`default`资源组中的默认资源套餐。

Type

List[Dict[str, Dict[str, int]]], optional

entrypoint

算法训练的启动命令,非标准算法必填

output

算法训练结果(模型)存储目录路径,非标准算法必填

mirror_id

训练使用的镜像ID,默认为空,即使用算法绑定的镜像ID

__init__(id: Optional[str] = None, name: Optional[str] = None, description: Optional[str] = None, state: Optional[int] = None, creator_id: Optional[str] = None, project_id: Optional[str] = None, algorithm_id: Optional[str] = None, algorithm_git_ref: Optional[str] = None, train_params: Optional[str] = None, train_params_prefix: str = '--', train_params_delimeter: str = ' ', files: Optional[list] = None, results_id: Optional[str] = None, secret_key: Optional[str] = None, create_time: Optional[datetime.datetime] = None, finish_time: Optional[datetime.datetime] = None, envs: Optional[str] = None, hpo=False, hpo_search_space: Optional[str] = None, final_metric: Optional[float] = None, resource_request: Optional[List[Dict[str, Dict[str, int]]]] = None, load_detail=False, entrypoint: Optional[str] = None, output: Optional[str] = None, mirror_id: Optional[str] = None, num_nodes=1, nproc_per_node=1)[源代码]
参数
  • id – 训练任务的唯一标识符,自动生成,由TRAI+uuid1生成的编码中后28个有效位(小写字母和数字)组成

  • name – 训练任务的名称(长度1~50))

  • description – 训练任务描述(长度最大255)

  • state – 训练任务状态

  • creator_id – 创建者ID

  • project_id – 训练项目ID

  • algorithm_id – 算法ID

  • algorithm_git_ref – 算法Gitea代码仓库的版本号(可以是commit号、分支名、tag名),非必填。

  • train_params – 训练任务参数列表

  • train_params_prefix – 训练超参数键前标识

  • train_params_delimeter – 训练超参数键值间的分隔符

  • files – 训练相关的文件(默认’’ 多个的话用逗号’,’隔开)

  • results_id – 训练结果文件ID

  • secret_key – 密钥

  • create_time – 创建时间

  • finish_time – 结束时间

  • envs – 训练任务环境变量(默认’’)

  • hpo – 是否开启超参数自动调优

  • hpo_search_space – 开启超参数自动调优时不能为空

  • final_metric – 最终结果指标

  • resource_request (List[Dict[str, Dict[str, int]]], optional) – 训练所需计算资源的请求。 如未填,则使用Anylearn后端的:obj:`default`资源组中的默认资源套餐。

  • load_detail – 初始化时是否加载详情

  • num_nodes – 训练任务请求的节点数

  • entrypoint – 算法训练的启动命令,非标准算法必填

  • output – 算法训练结果(模型)存储目录路径,非标准算法必填

  • mirror_id – 训练使用的镜像ID,默认为空,即使用算法绑定的镜像ID

_check_fields(required=[])

对象检查属性是否存在

_create()[源代码]

创建对象,如果子类创建方法与此有较大差异可以重写此方法

_fields = {'payload': {'create': ['name', 'description', 'project_id', 'algorithm_id', 'algorithm_git_ref', 'train_params', 'envs', 'train_params_prefix', 'train_params_delimeter', 'files', 'resource_request', 'num_nodes', 'nproc_per_node', 'entrypoint', 'output', 'mirror_id'], 'update': []}, 'required': {'create': ['name', 'project_id', 'algorithm_id', 'train_params'], 'update': []}}

创建/更新对象时:

  • 必须包含且不能为空的字段 _fields['required']

  • 所有字段 _fields['payload']

_namespace()[源代码]
  • 子类的命名空间,调用此方法以获取子类的名称用于异常信息输出等,以 User 为例, _namespace 可以为 user

  • 子类需实现此抽象方法

_update()[源代码]

更新对象,如果子类更新方法与此有较大差异可以重写此方法

_url_create()

创建对象url,如果子类创建对象接口名称不是 add ,可以重写此方法来定制接口名称

_url_delete()

删除对象url,如果子类删除对象接口名称不是 delete ,可以重写此方法来定制接口名称

_url_update()

更新对象url,如果子类更新对象接口名称不是 update ,可以重写此方法来定制接口名称

delete(force: bool = False)

删除对象

  • 对象属性 id 应为非空

返回

True or False

返回类型

bool

download_results(save_path: str, async_download: bool = True, downloader: Optional[anylearn.interfaces.resource.resource_downloader.ResourceDownloader] = None, polling: Union[float, int] = 5)[源代码]

下载训练任务结果

参数
  • save_path (str) – 文件保存路径。

  • downloader (ResourceDownloader) – 可以使用SDK中的AsyncResourceDownloader,也可以自定义实现ResourceDownloader。

  • polling (float, int) – 下载前要先压缩文件,轮询查看文件有没有压缩完的时间间隔,单位:秒。默认值5

返回

文件名。

返回类型

str

finished()[源代码]

检查训练任务是否完成

返回

True or False

返回类型

bool

classmethod from_sql(sql_local_train_task: anylearn.storage.db.models.SqlLocalTrainTask)[源代码]

把本地保存的训练任务SqlLocalTrainTask转化为TrainTask

参数

sql_local_train_task (SqlLocalTrainTask) – 本地训练任务

返回

返回类型

TrainTask

get_detail()[源代码]

获取训练任务详细信息

  • 对象属性 id 应为非空

返回

训练任务对象。

返回类型

TrainTask

get_final_metric()[源代码]

获取训练任务最终结果指标

  • 对象属性 id 应为非空

返回

{
  "final_metric": 662.8,
  "id": "TRAI1d3",
  "name": "test"
}

get_full_log(debug: bool = False)[源代码]

训练任务日志全量查询接口,返回日志文本列表。

  • 对象属性 id 应为非空

:param debug bool

是否显示更全面的debug信息(默认False)。

返回

[
  "log text1",
  "log text2"
]

get_intermediate_metric(last_timestamp: str = '1970-01-01 00:00:00')[源代码]

获取训练任务中间结果指标

  • 对象属性 id 应为非空

参数

last_timestampstr 仅获取某一时刻以后的中间结果,格式”1970-01-01 00:00:00”

返回

[
  {
    "id": "METR123",
    "metric": 90.0,
    "train_task_id": "TRAI123",
    "reported_at": "2021-04-29 21:00:00"
  },
  {
    "id": "METR456",
    "metric": 99.0,
    "train_task_id": "TRAI123",
    "reported_at": "2021-04-29 21:10:00"
  }
]

get_last_log(limit: int = 100, debug: bool = False)[源代码]

训练任务日志最近n行查询接口,返回日志文本列表。

  • 对象属性 id 应为非空

:param limit int

需要查询的行数(默认100)。

:param debug bool

是否显示更全面的debug信息(默认False)。

返回

[
  "log text1",
  "log text2"
]

classmethod get_list()[源代码]

Listing is not supported for TrainTask

get_log(limit=100, direction='init', offset=0, offset_index=- 1)[源代码]

训练任务日志查询接口

  • 对象属性 id 应为非空

参数
  • limitint 日志条数上限(默认值100)。

  • directionstr 日志查询方向。

  • offsetint 日志查询偏移量。

:param offset_index int

日志查询偏移量索引,搭配偏移量使用作为分页基准。

返回

[
  {
    "offset": 164324567,
    "offset_index": 1234,
    "text": "Task TRAId123 started."
  },
  {
    "offset": 164324590,
    "offset_index": 1238,
    "text": "Task TRAId123 finished."
  }
]

get_status()[源代码]

训练任务状态查询接口

返回

{
  "current_epoch": "2",
  "current_train_loss": "2.169192314147949",
  "current_train_step": "1288",
  "ip": "10.244.2.124",
  "process": "1.0",
  "secret_key": "TKEY123",
  "state": "success"
}

get_train_profile()[源代码]

获取训练任务描述

  • 对象属性 id 应为非空

返回

训练任务描述对象。

返回类型

TrainProfile

report_final_metric(metric: float)[源代码]

训练任务汇报最终结果指标

参数

metricfloat 最终结果指标。

返回

{
  "msg": "任务TRAId123结果指标保存成功"
}

report_intermediate_metric(metric: float)[源代码]

训练任务汇报中间结果指标

参数

metricfloat 中间结果指标。

返回

{
  "msg": "任务TRAId123结果指标保存成功"
}

save()

创建或更新对象

  • 对象包含非空属性 id 时为更新,否则为创建

  • 创建对象时必须包含且不能为空的字段: _fields['required']['create']

  • 创建对象时包含的所有字段: _fields['payload']['create']

  • 更新对象时必须包含且不能为空的字段: _fields['required']['update']

  • 更新对象时包含的所有字段: _fields['payload']['update']

返回

True or False

返回类型

bool

stream_log(init_limit: int = 100, polling: int = 2, debug: bool = False)[源代码]

实时训练任务日志流式生成接口,每次迭代返回日志文本的一行。

  • 对象属性 id 应为非空

:param init_limit bool

起始日志需要查询的行数(默认100)。

:param polling int

轮询间隔时间(单位:秒,默认2)。

:param debug bool

是否显示更全面的debug信息(默认False)。

返回

Iterator

transform_model(file_path: str, name: str, description: Optional[str] = None, is_zipfile: bool = False, public: bool = False, polling: Union[float, int] = 5)[源代码]

模型文件转存接口

参数
  • file_path (str) – 模型文件路径。

  • name (str) – 模型的名称。

  • description (str) – 模型描述。

  • is_zipfile (bool) – 模型是否为zip文件。默认为False。

  • public (bool) – 模型是否公开。默认为False。 模型转存后可到前端模型详情中设置模型的协作者。

  • polling (float|int) – 模型转换中轮询模型状态的时间间隔(单位:秒)。 默认为5秒。

返回

模型对象。

返回类型

Model

class anylearn.interfaces.train_task.TrainTaskState[源代码]

基类:object

训练任务状态标识:

  • 0(CREATED)表示已创建

  • 1(RUNNING)表示运行中

  • 2(SUCCESS)表示已完成

  • -1(DELETED)表示已删除

  • -2(FAIL)表示失败

  • -3(ABORT)表示中断