一、简介
任务各个状态简介:
·提交中:任务成功发起提交请求至进入排队队列前。
·排队中:任务正常提交后进入排队队列。当状态为排队中时,点击可展示任务的排队时长和优先级。
·启动中:任务成功出队,调度到了资源,开始初始化任务。
·运行中:任务成功加载,进入运行状态。
·异常:任务异常退出。
·停止中:用户手动停止任务,回收资源等过程。
·已停止:用户手动停止任务,任务正常终止。
·已完成:任务训练完成,正常退出。
二、查看我的任务
列表页右上角有查看我的任务快捷选项,勾选后仅展示当前登录的子账号创建的任务。
三、复制任务
当用户需要对多个训练任务进行对比,以比较不同数据集或者不同超参配置的训练效果时,可选择复制训练任务,单击复制训练任务将跳转到创建任务窗口,用户可在原任务配置信息基础上进行简单修改,即可快速创建一个任务。
四、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 服务免费提供给用户使用,你可能会遇到平台资源不足的情况,如你在此服务中遇见“不可用”的状态,还请你耐心等待,稍后重试。
五、Ray Dashboard
选择 Ray 训练模式的任务后,平台支持一键打开 Ray Dashboard,用户可进入该面板查看任务和集群信息。
在任务列表点击 Dashboard:
Dashboard 页面:
六、停止/启动任务
正在训练的任务用户可以选择手停,停止后的任务可进行重新启动。
七、编辑任务
支持对任务参数进行编辑,编辑后重新运行会生成新的执行记录。
八、发布到模型仓库
训练完成的任务可将输出发布到模型仓库。单击发布到模型仓库,可选择新建模型或者添加已有模型版本,详细操作请查看 模型仓库使用。
若选择新建模型,则需输入模型名称;若选择添加已有模型版本,则需要选择模型仓库中的模型,自动生成版本号(新增版本默认版本号自动加1)。
九、删除任务
训练完成/已停止的任务用户可手动删除记录。
十、任务详情
单击训练任务名称,可进入任务详情页。
十一、基本信息
基本配置页显示了训练任务的基本配置信息、作业参数信息和资源配置信息。其中任务的标签可以进行更新。
十二、实例列表
实例列表页展示了当前训练任务的实例清单,在此页面可查看实例 ID,占用资源,状态。此外,训练实例可支持直接进入实例容器,用户可在页面上单击进入容器,进入 webshell 页面,用户可执行命令行操作训练实例容器。
十三、执行记录
执行记录列表页按顺序展示了当前任务的历次执行记录,包含任务手动执行和异常自动重启,可以快捷跳转到对应的日志和事件页面查看该次执行记录的信息。
十四、监控
任务监控有两个维度,第一是训练指标监控,第二是资源监控。其中训练指标监控页展示了用户自定义上报的监控指标信息。用户训练过程中的指标监控信息需要用户在训练脚本中按照平台规则进行上报(如何上报请查看 Tikit-提交训练任务 文档中的 push_training_metrics()指令)。资源监控信息展示了训练任务的 CPU 使用率,MEM 使用率,MEM 使用量,GPU 使用率,显存使用率和显存使用量信息;整卡任务会展示细粒度卡维度监控指标,同时若你提交了整机训练任务,还可以查看节点 RDMA 使用监控信息。
十五、训练指标上报代码示例:
## 在valide函数中,上传训练指标 acc1和acc5def 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
任务完成后,可以在“任务式建模/监控”下查看指标(可能会存在一点延迟)。
十六、训练日志
训练任务页展示了实例维度的训练日志,日志可实时刷新查看,同时支持全文检索,亦可通过时间选择查看该训练任务的历史日志。平台默认为用户存储最长15天的日志,若你需要持久化存储使用,请使用 CLS 日志投递。用户也可在当前页选择开启 CLS 日志投递或者关闭 CLS 日志服务。同时,平台支持日志进行分类展示,可按照 平台日志(健康检测)、平台日志(初始化)、训练代码日志 进行日志过滤,方便用户针对性的查看所关心的日志分类。
十七、事件
平台支持查看任务运行过程中产生的事件,用户可基于事件进行问题的诊断。