AutoDL作业

AutoDL是一款自动深度学习产品,利用先进的迁移学习或者神经网络架构搜索技术,针对业务提供数据进行训练。平台提供简单易懂的操作界面,只需几步便可训练、评估、部署模型,给用户以一站式体验。AutoDL适用性广泛,初学者只需提交数据便可得到高品质模型,经验丰富的工程师拿到平台提供的高品质模型后可继续研究。

新建作业限制:

  • 每位用户在公共集群(免费试用)资源上最多同时支持3个作业(包括4种类型作业)在排队或运行。
  • 如果已有3个作业在排队或运行,希望发起新的作业时,需要等其中一个现有作业运行结束,或者终止当前的一个作业,否则会发起作业失败。

新建作业

左侧导航栏选择“训练-->AutoDL作业”,进入AutoDL作业列表页。点击『新建作业』按钮,进入新建作业流程。

image_20190612_135200.png

图像分类-迁移学习

利用已经训练过的卷积神经网络(CNN),结合训练数据微调其中几层,得到适合于我们训练数据的模型,避免了大资源长时间的训练过程,这便是迁移学习的理念。图像分类-迁移学习,针对几百张量级的图片数据,10分钟便可训出一个可用模型给用户,并展示训练过程,包括:预处理结果、训练阶段的loss和acc指标。用户可以在预测服务中直接部署使用此模型。

配置说明:

配置名称 是否必须 描述
作业名称 只能由数字、字母、-或_组成且首位只能是字母,长度小于40个字符
算法或框架 图像分类-迁移学习
作业结束是否发短信 作业结束后是否发短信通知用户
训练数据路径 存放模型训练数据的路径。填写zip压缩包则只用此zip包训练;填写文件夹则使用文件夹下所有zip包训练,文件夹不支持子目录迭代,zip包超过10个只取前10个,目前只支持zip压缩包。
输出路径 存放模型和日志的路径,作业成功后将模型存放在该路径/{job_id}/model下,日志存放在该路径/{job_id}/log下
计算资源 Infinite集群或用户自有cce集群
资源套餐 深度学习开发卡等GPU单卡套餐
实例个数 1
最大运行时间 若作业运行达到最大运行时间,Infinite会自动强制停止作业,可能造成作业失败

训练数据格式说明:

image2018-12-24_11-36-3.png

  • 需要将所有准备好的图片对应的分类以单个文件夹整理,同时将所有文件夹压缩为.zip格式
  • 若图片较多,建议分多个压缩包,最大支持10个压缩包训练。
  • 如果多个压缩包里面分类命名存在一致,系统会自动合并数据,当作一类图片。
  • 分类的命名需要以数字、字母、下划线格式,目前不支持中文格式命名,同时注意不要存在空格
  • 图片说明:
    (1)图片的扩展名可支持常见的三种:jpg,jpeg,png
    (2)图片大小:暂无限制
    (3)每类图片数量:20 <= 每类图片数量;注意:每类图片数量要均衡,模型效果才更好
    (4) 图片种类数:2类 <= 图片分类数 <= 200类
    (5) 图片总数量:图片总数量 <= 10万张

示例配置:

训练数据是从网上下载的cifar10数据。开发人员将数据转化成了符合图像分类-迁移学习算法的输入数据格式(转化的代码可参考transfer_cifar10.py,在python2环境运行并依赖numpy和opencv库)即按照不同的目录来划分图片分类。作为示例,开发人员将每个分类取100张图片,共1000张图片来训练。您可以下载数据后自己进行转化,也可以直接使用我们的公共bos数据进行训练。

训练数据路径:bos:/infinite-public/autodl-demo/data/cifar10-for-transferlearning.zip

输出路径配置您自己的bos路径。

image.png

点击“确定”按钮后,提交作业。

模型输出格式说明:

  • 输出模型是pytorch格式的模型,以pth后缀结尾,包含网络的权重信息。模型文件存放在用户指定的输出路径/{jobid}/model下,可以用此模型路径做预测服务。

启动预测服务:

图像分类-迁移学习作业运行成功后,在作业详情页复制模型输出路径,如:
bos:/xxx/yyy/autodl-qianyixuexi/job-8c0yiasq02caa6hf/model/

  • 在预测->预测模型库->新建模型页面,添加图像分类-迁移学习的模型,模型文件路径填写上面的路径。

image.png

  • 在预测->模板配置库->新建模板页面,新建模板配置,如:

image.png

  • 在预测->端点管理->新建端点页面中,加载上面的模板,启动预测服务,如:

image.png

发送预测请求:

当预测端点状态为服务中时,可以发送预测服务请求,代码如下:

#!/usr/bin/env python
 # -*- coding: utf-8 -*-
 import sys
 import json
 import base64
 import requests

 IMAGE_PATH = "aaa.jpg"
 ENDPOINT_URL = "http://10.181.114.16:8023/v1/endpoints/yyyy/invocations"
 PARAMS = "?interface=predict&action=predict"
 TARGET_URL = ENDPOINT_URL + PARAMS

 def get_request():
     """构造请求"""
     arr_instances = []
     with open(IMAGE_PATH, "rb") as f:
         data = f.read()
     encoded_data = base64.b64encode(data)
     str_data = str(encoded_data)
     obj_instance = {
         "data": str_data,
     }
     arr_instances.append(obj_instance)
     request = {
         "instances": arr_instances,
     }
     return request

 if __name__ == '__main__':
     request = get_request()
     json_request = json.dumps(request)

     headers = {'Content-type': 'application/json'}
     res = requests.post(TARGET_URL, data = json_request, headers = headers)
     result = res.text
     print(result)

修改IMAGE_PATH为图片位置,修改ENDPOINT_URL为端点URL,执行上述代码就可以发送预测请求,得到图片分类预测结果。
预测的图片:

aaa2.jpg

预测的结果:

{"result":"[[1.288892149925232, -3.755728244781494, -1.8610944747924805, 6.285534381866455, -1.8683143854141235, 2.2759482860565186, -3.119175672531128, 0.8390857577323914, 1.8015419244766235, -1.3871209621429443]]"}

结果表示,图片被预测为label 3,猫。

图像分类-ENAS

利用先进的神经网络架构搜索技术,针对业务提供数据进行训练,几小时便可完成最优模型搜索以及高品质模型输出。通过用户给定的分好类的图像数据,输出一个训练好的模型给用户,并展示训练过程,包括:预处理结果、每一轮的Metric指标和神经网络结构图、调优结果。

配置说明:

配置名称 是否必须 描述
作业名称 只能由数字、字母、-或_组成且首位只能是字母,长度小于40个字符
算法或框架 图像分类-ENAS
训练数据路径 存放模型训练数据的路径。填写zip压缩包则只用此zip包训练;填写文件夹则使用文件夹下所有zip包训练,文件夹不支持子目录迭代,zip包超过10个只取前10个,目前只支持zip压缩包。
输出路径 存放模型和日志的路径,作业成功后将模型存放在该路径/{job_id}/model下,日志存放在该路径/{job_id}/log下
计算资源 目前只支持公共集群(免费试用)
集群类型 目前只支持单机单卡
最大搜索时间 作业会在最大搜索时间内搜索最佳神经网络结构,造成作业结束搜索的条件有2个:a、到达最大搜索时间;b、搜索最优模型过程已经收敛。
最大搜索时间建议在1到30小时之间,上限为30小时。

训练数据格式说明:

image2018-12-24_11-36-3.png

  • 需要将所有准备好的图片对应的分类以单个文件夹整理,同时将所有文件夹压缩为.zip格式
  • 若图片较多,建议分多个压缩包,最大支持10个压缩包训练。
  • 如果多个压缩包里面分类命名存在一致,系统会自动合并数据,当作一类图片。
  • 分类的命名需要以数字、字母、下划线格式,目前不支持中文格式命名,同时注意不要存在空格
  • 图片说明:
    (1)图片的扩展名可支持常见的三种:jpg,jpeg,png
    (2)图片大小:100K <= 图片大小 <= 3M,长宽比在3:1以内,其中最长边需要小于4096px,最短边需要大于30px
    (3)每类图片数量:50 <= 每类图片数量;注意:每类图片数量要均衡,模型效果才更好
    (4) 图片种类数: 2类 <= 图片分类数 <= 200类
    (5)图片总数量:图片总数量 <= 10万张

示例配置:

训练数据是从网上下载的cifar10数据。开发人员将数据转化成了符合图像分类-ENAS算法的输入数据格式(转化的代码可参考transfer_cifar10.py,在python2环境运行并依赖numpy和opencv库),即按照不同的目录来划分图片分类,并打成zip包。您可以下载数据后自己进行转化,也可以直接使用我们的公共bos数据进行训练。

训练数据路径:bos:/infinite-public/autodl-demo/data/cifar10.zip

输出路径配置您自己的bos路径。

image.png

点击“确定”按钮后,提交作业。

模型输出格式说明:

  • 输出模型是keras hdf5格式的模型,包含网络结构和权重参数。

作业列表相关操作

  • 终止:将当前正在运行或排队的作业终止,不再排队,不再运行。终止运行后,作业结果及作业日志不会上传到指定的BOS路径。
  • 克隆:克隆一份作业的配置项,进入新建作业页面。
  • 删除:删除该条作业,如果删除时作业还在排队或运行中,会先终止排队或运行,再删除作业,删除后该作业从作业列表中消失。
  • 查看作业详情:点击作业名称可以进入作业详情,查看作业的作业信息、参数信息、集群信息。
  • 查看运行详情:点击作业名称选择运行详情标签可以进入运行详情,查看作业运行状态、起止时间、日志详情、运行曲线等。

查看作业结果

作业运行成功后,会根据作业配置时指定的输出路径,将模型和日志分别存储到对应的 BOS 地址下,用户需要前往 BOS 查看或下载作业模型或者日志。

如果作业模型或日志无法保存,可能是下列情况:

  • 手动终止作业
  • 作业运行超时被自动终止
  • 作业运行失败

用户作业失败,可能是下列情况导致:

  • 输入数据与数据格式要求不匹配
  • 输入数据的BOS地址不存在或不可访问
  • 输出路径的bucket不存在或不可访问
  • 训练超时