任务管理

最近更新时间:2025-05-14 17:16:02

我的收藏

简介

任务创建完成后,会在任务列表页面展示该条训练任务记录,列表展示了任务名称,训练镜像,机器来源,占用资源,标签,状态(任务状态有提交中,排队中,启动中,运行中,异常,停止中,已停止,已完成),运行时长,创建者,训练开始时间,更新时间,监控和操作。操作包括复制任务,Tensorboard,停止/启动任务和删除任务等 。

任务各个状态简介:
提交中:任务成功发起提交请求至进入排队队列前。
排队中:任务正常提交后进入排队队列。当状态为排队中时,点击可展示任务的排队时长和优先级。

启动中:任务成功出队,调度到了资源,开始初始化任务。
运行中:任务成功加载,进入运行状态。
异常:任务异常退出。
停止中:用户手动停止任务,回收资源等过程。
已停止:用户手动停止任务,任务正常终止。
已完成:任务训练完成,正常退出。

查看我的任务

列表页右上角有查看我的任务快捷选项,勾选后仅展示当前登录的子账号创建的任务。

复制任务

当用户需要进行多个训练任务进行对比,以比较不同数据集或者不同超参配置的训练效果时,可选择复制训练任务,单击复制训练任务将跳转到创建任务窗口,用户可在原任务配置信息基础上进行简单修改,即可快速创建一个任务。

Tensorboard

平台支持读取 CFS 和 COS 中的 summary 数据生成 Tensorboard 监控面板,具体操作步骤如下:
单击任务列表 > 操作栏中的 Tensorboard 按钮,开始配置 Tensorboard 任务。

若您的训练输出文件存储在 CFS 中,则选择 CFS 为 summary 输出存储,选择存储路径为您当前训练任务配置的 CFS 文件系统和源路径(若您配置了多个,则需要选择其中一个),填写您的 summary 数据所在的容器内目录(平台默认会将您的 CFS 系统挂载的容器本地路径展示出来,您只需要填写 summary 文件具体所在的子目录),如下图所示:

若您的训练输出文件存储在 COS 中,则选择 COS 为 summary 输出存储,需要注意的是,如果选择了 COS,存储路径默认为任务配置的训练输出 COS 路径 + /< job_id> + /summary,summary 目录默认为/opt/ml/summary/(容器内路径),用户无需配置,因此您需要在训练代码中提前将 summary 监控数据输出到/opt/ml/summary/中,如若不然,则无法创建 Tensorboard 面板。

完成配置后,单击确定,即可进入 Tensorboard 信息页,此时单击页面中的 点击跳转 ,即可跳转至 Tensorboard 面板。



启动Tensorboard 可能需要1 - 2分钟,在此期间,请不要关闭重定向页面。




当前 Tensorboard 服务免费提供给用户使用,您可能会遇到平台资源不足的情况,如您在此服务中遇见“不可用”的状态,还请您耐心等待,稍后重试。

停止/启动任务

正在训练的任务用户可以选择手停,停止后的任务可进行重新启动。

发布到模型仓库

训练完成的任务(仅支持按照要求将输出数据写到COS存储路径中的任务)可将输出发布到模型仓库。单击发布到模型仓库,可选择新建模型或者添加已有模型版本。
若选择新建模型,则需输入模型名称;若选择添加已有模型版本,则需要选择模型仓库中的模型,自动生成版本号(新增版本默认版本号自动加1)。

删除任务

训练完成/已停止的任务用户可手动删除记录。

任务详情

单击训练任务名称,可进入任务详情页。

基本信息

基本配置页显示了训练任务的基本配置信息、作业参数信息和资源配置信息。其中任务的标签可以进行更新。

实例列表

实例列表页展示了当前训练任务的实例清单,在此页面可查看实例 ID,占用资源,状态。此外,训练实例可支持直接进入实例容器,用户可在页面上单击进入容器,进入 webshell 页面,用户可执行命令行操作训练实例容器。

监控

任务监控有两个维度,第一是训练指标监控,第二是资源监控。其中训练指标监控页展示了用户自定义上报的监控指标信息。用户训练过程中的指标监控信息需要用户在训练脚本中按照平台规则进行上报(如何上报请查看 Tikit-提交训练任务 文档中的 push_training_metrics()指令)。资源监控信息展示了训练任务的 CPU 使用率,MEM 使用率,MEM 使用量,GPU 使用率,显存使用率和显存使用量信息;整卡任务会展示细粒度卡维度监控指标,同时若您提交了整机训练任务,还可以查看节点 RDMA 使用监控信息。

训练指标上报代码示例:

## 在valide函数中,上传训练指标 acc1和acc5

def validate(val_loader, model, criterion, epoch, args):
batch_time = AverageMeter('Time', ':6.3f')
losses = AverageMeter('Loss', ':.4e')
top1 = AverageMeter('Acc@1', ':6.2f')
top5 = AverageMeter('Acc@5', ':6.2f')
progress = ProgressMeter(
len(val_loader),
[batch_time, losses, top1, top5],
prefix='Test: ')

# switch to evaluate mode
model.eval()

with torch.no_grad():
end = time.time()
for i, (images, target) in enumerate(val_loader):
if args.gpu is not None:
images = images.cuda(args.gpu, non_blocking=True)
target = target.cuda(args.gpu, non_blocking=True)

# compute output
output = model(images)
loss = criterion(output, target)

# measure accuracy and record loss
acc1, acc5 = accuracy(output, target, topk=(1, 5))
losses.update(loss.item(), images.size(0))
top1.update(acc1[0], images.size(0))
top5.update(acc5[0], images.size(0))

# measure elapsed time
batch_time.update(time.time() - end)
end = time.time()

if i % args.print_freq == 0:
progress.display(i)

## 调用Tikit指令上传指标
client.push_training_metrics(int(time.time()), {"acc1": float(format(top1.avg, '.3f')), "acc5": float(format(top5.avg, '.3f'))}, epoch=epoch)
# TODO: this should also be done with the ProgressMeter
print('TIACC - * Acc@1 {top1.avg:.3f} Acc@5 {top5.avg:.3f} Epoch={epoch}'
.format(top1=top1, top5=top5, epoch=epoch))

return top1.avg
任务完成后,可以在“任务式建模/监控”下查看指标(可能会存在一点延迟)。

训练日志

训练任务页展示了实例维度的训练日志,日志可实时刷新查看,同时支持全文检索,亦可通过时间选择查看该训练任务的历史日志。平台默认为用户存储最长7天的日志,若您需要持久化存储使用,请使用 CLS 日志投递。用户也可在当前页选择开启 CLS 日志投递或者关闭 CLS 日志服务。同时,平台支持日志进行分类展示,可按照 平台日志(健康检测)、平台日志(初始化)、训练代码日志 进行日志过滤,方便用户针对性的查看所关心的日志分类。


事件

平台支持查看任务运行过程中产生的事件,用户可基于事件进行问题的诊断。