更新时间:2024-04-29 GMT+08:00
分享

构建学习器

from modelarts.algo_kits import Learner

learner = Learner(
	model=model,
    datablock=db,
    output_dir="./output",
    optimizer="SGD",
    momentum=0.999,
    checkpoint="your_local_path_of_pretrained_model",
    warmup_policy="linear",
    warmup_iters=500,
    epoch_based_eval_interval=1,
    save_ckpt_interval=1,
    log_params={"log_type":["table", "graph"], "table_highlight_method":"best", "log_interval":10}

)
表1 Learner初始化参数说明

参数名称

可选/必选

参数类型

参数描述

model

必选

Model object

模型对象,初始化方法参考Model模块。

datablock

必选

DataBlock object

数据集对象,初始化方法参考DataBlock模块。

output_dir

必选

string

训练时checkpoint,日志等的输出路径。

optimizer

可选

string

训练优化器,支持SGD和Adam,默认为SGD。

momentum

可选

float

动量,默认为0.999。

checkpoint

可选

string

预训练模型路径,默认为None,优先级高于Model的checkpoint入参,指定checkpoint入参后会覆盖初始化Model时对应checkpoint的模型参数。

warmup_policy

可选

string

warmup策略,默认为linear。其中,open-mmlab系列模型支持linear和polynomial两种,ivg系列模型支持cosine。

warmup_iters

可选

int/float

warmup的迭代次数,默认为500。

epoch_based_eval_interval

可选

int/float

训练过程中评估间隔数,以epoch为单位,默认为1。

iter_based_eval_interval

可选

int/float

训练过程中评估间隔数,以iteration为单位,默认为100。

save_ckpt_interval

可选

int/float

训练过程中保存模型的间隔数,以epoch为单位,默认为1。

log_params

可选

dict

训练日志相关参数,包含“log_type”“table_highlight_method”“log_interval”三个字段,分别代表日志类型,训练损失高亮方法,日志间隔时间。log_type支持text(原始日志), table(表格), graph(动态曲线图)和tensorboard四中,其中除text外其余日志类型可任意组合;table_highlight_method支持best(高亮最优)和gradient(高亮渐变);log_interval的单位为iteration。具体见上述代码示例。

基于learner进行模型训练

learner.fit(
	lr=0.001,
    max_epochs=5,
    weight_decay=0.005,
    seed=None,
    checkpoint=None,
    gpu_ids=[0],
    world_size=1,
    local_size=1,
    launch_remote=False
)
表2 learner.fit参数

参数名称

可选/必选

参数类型

参数描述

lr

可选

float

学习率参数,默认为0.001。

max_epochs

可选

int/float

最大训练epoch数,默认为5。

weight_decay

可选

float

权重衰减,默认为0.005。

seed

可选

int

训练随机数,默认为None。

checkpoint

可选

string

预训练模型路径,优先级高于初始化Learner和Model时的路径参数,指定checkpoint入参后会覆盖初始化Learner或Model时对应checkpoint的模型参数。

gpu_ids

可选

int / list

open-mmlab系列默认使用0号卡进行训练。ivg系列可指定,如0或者[0]或者[0,1]。

world_size

可选

int

分布式训练节点数量,默认为1,暂不支持分布式训练。

local_size

可选

int

单个节点中的GPU数量,默认为1,暂不支持分布式训练。

launch_remote

可选

boolean

提交训练作业,默认为False,暂不支持基于API提交训练作业。

基于learner进行模型评估

learner.validate(
	data=db,
    checkpoint="your_local_path_of_pretrained_model",
    gpu_ids=[0]
)
表3 learner.validate参数

参数名称

可选/必选

参数类型

参数描述

data

可选

DataBlock object

数据集对象,默认为None,初始化方法参考DataBlock模块。默认值时会基于构建好的DataBlock对象中的validation data进行模型评估。

checkpoint

可选

string

预训练模型路径,默认为None。当基于learner.fit完成训练且该参数为None,则基于训练后的模型参数进行评估。若指定checkpoint路径,则加载对应路径的模型参数进行评估。

gpu_ids

可选

int/list

模型评估时使用的GPU序号。open-mmlab系列模型默认使用0号卡。ivg系列可指定,如0或者[0, 1]。

show_score_thr

可选

float

评估时预测结果置信度阈值,默认为0.5,仅用于open-mmlab系列模型。

out

可选

string

评估结果pkl文件保存路径,默认为None,仅用于open-mmlab系列模型。

基于learner.predict进行模型推理

learner.predict(
	img_path='your_local_path_of_image',
    checkpoint='your_local_path_of_pretrained_model',
    gpu_ids=None,
    save_dir='your_local_path_for_saving_output'
)
表4 learner.predict参数

参数名称

可选/必选

参数类型

参数描述

img_path

必选

string

图片路径,当前predict仅支持推理图片。

checkpoint

可选

string

预训练模型路径,默认为None。当基于learner.fit完成训练且该参数为None,则基于训练后的模型参数进行推理。若指定checkpoint路径,则加载对应路径的模型参数进行推理。

gpu_ids

可选

int/list

推理时使用的GPU,默认为None(使用cpu进行推理)。

save_dir

可选

string

默认为初始化Learner时指定的work_dir,可指定其他本地路径。

model

可选

Model object

自定义Model对象,仅用于open-mmlab系列模型,默认为None。默认值时使用基于learner.fit训练好的模型进行推理。

score_thr

可选

float

推理时结果置信度阈值,默认为0.3,仅用于open-mmlab系列模型。

ret_vis

可选

boolean

是否可视化推理结果,默认为False,仅用于open-mmlab系列模型。

分享:

    相关文档

    相关产品