训练项目和训练任务管理¶
训练项目接口¶
-
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_update
()¶ 更新对象url,如果子类更新对象接口名称不是
update
,可以重写此方法来定制接口名称
-
训练任务接口¶
-
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=[])¶ 对象检查属性是否存在
-
_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
子类需实现此抽象方法
-
_url_create
()¶ 创建对象url,如果子类创建对象接口名称不是
add
,可以重写此方法来定制接口名称
-
_url_update
()¶ 更新对象url,如果子类更新对象接口名称不是
update
,可以重写此方法来定制接口名称
-
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
-
classmethod
from_sql
(sql_local_train_task: anylearn.storage.db.models.SqlLocalTrainTask)[源代码]¶ 把本地保存的训练任务SqlLocalTrainTask转化为TrainTask
- 参数
sql_local_train_task (
SqlLocalTrainTask
) – 本地训练任务- 返回
- 返回类型
-
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_timestamp –
str
仅获取某一时刻以后的中间结果,格式”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" ]
-
get_log
(limit=100, direction='init', offset=0, offset_index=- 1)[源代码]¶ 训练任务日志查询接口
对象属性
id
应为非空
- 参数
limit –
int
日志条数上限(默认值100)。direction –
str
日志查询方向。offset –
int
日志查询偏移量。
- :param offset_index
int
日志查询偏移量索引,搭配偏移量使用作为分页基准。
- 返回
[ { "offset": 164324567, "offset_index": 1234, "text": "Task TRAId123 started." }, { "offset": 164324590, "offset_index": 1238, "text": "Task TRAId123 finished." } ]
-
get_status
()[源代码]¶ 训练任务状态查询接口
对象属性
id
、secret_key
应为非空
- 返回
{ "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" }
-
report_final_metric
(metric: float)[源代码]¶ 训练任务汇报最终结果指标
对象属性
id
、secret_key
应为非空
- 参数
metric –
float
最终结果指标。- 返回
{ "msg": "任务TRAId123结果指标保存成功" }
-
report_intermediate_metric
(metric: float)[源代码]¶ 训练任务汇报中间结果指标
对象属性
id
、secret_key
应为非空
- 参数
metric –
float
中间结果指标。- 返回
{ "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)[源代码]¶ 模型文件转存接口
对象属性
results_id
、algorithm_id
应为非空
- 参数
file_path (
str
) – 模型文件路径。name (
str
) – 模型的名称。description (
str
) – 模型描述。is_zipfile (
bool
) – 模型是否为zip文件。默认为False。public (
bool
) – 模型是否公开。默认为False。 模型转存后可到前端模型详情中设置模型的协作者。polling (
float|int
) – 模型转换中轮询模型状态的时间间隔(单位:秒)。 默认为5秒。
- 返回
模型对象。
- 返回类型
-