全部产品
云市场

BBS使用手册

更新时间:2019-09-28 23:54:39

1 BBS预备

1.1 nvidia-docker 环境说明

Docker version 17.06.2-ce, build e046fc5
NVIDIA Docker: 1.0.1
NVIDIA Driver: 418.67
我们使用如下命令启动BBS nvidia-docker container:

  1. sudo docker run -ti --net=host \
  2. --name nvdocker_blade_bbs \
  3. --volume-driver=nvidia-docker \
  4. --volume=nvidia_driver_418.67:/usr/local/nvidia:ro \
  5. --device=/dev/nvidiactl \
  6. --device=/dev/nvidia-uvm \
  7. --device=/dev/nvidia-uvm-tools \
  8. --device=/dev/nvidia0 \
  9. registry.cn-shanghai.aliyuncs.com/eas/blade-bbs:cuda10.0 \
  10. /bin/bash

1.2 BBS 文件清单

  • “run.sh” 优化demo一键式运行脚本
  • “model_info.json” BBS模型相关信息
  • “get_eascmd.py” 获取最新版本eascmd并交互式引导信息配置
  • “run_blade_on_aliyun.py” 自动生成eascmd所需任务json并启动Blade优化任务
  • “run_baseline_locally.py” 运行BBS基线测试
  • “deploy_with_blade_on_aliyun.py” 基于blade processor在云端部署模型服务
  • “post_blade_request_to_aliyun.py” 演示向已部署的测试服务发送请求
  • “README.txt”

2 模型说明

Blade BBS中共包含8个模型,分别介绍如下:

  • CRNN (Convolutional Recurrent Neural Network)

用于图像序列识别的卷积循环神经网络,Tensorflow模型
source:https://github.com/bgshih/crnn
reference: http://arxiv.org/abs/1507.05717

  • PoseNet

用于人体姿态评估的全卷积网络,可处理任意尺寸的输入图像,Tensorflow模型
source: Alibaba In-house
reference: Alibaba Damo Israel Lab

  • OCRDet

用于图像文字检测的卷积神经网络,可处理任意尺寸的输入图像,Tensorflow模型
source: Alibaba In-house
reference: https://rrc.cvc.uab.es/?spm=ata.13261165.0.0.e7b319bdnNG8YZ&ch=4&com=evaluation&task=4&f=3&e=1

  • Bert

用于文本匹配的Bert模型
source: Alibaba In-house
reference: https://arxiv.org/abs/1810.04805

  • MobilenetV1

用于ImageNet图像分类的卷积神经网络,Tensorflow模型
source: https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet_v1.md
reference: https://arxiv.org/abs/1704.04861

  • MobilenetV1_050

用于ImageNet图像分类的卷积神经网络,Tensorflow模型
source: https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet_v1.md
reference: https://arxiv.org/abs/1704.04861

  • RefineDet

用于logo检测的卷积神经网络,Caffe模型
source: https://github.com/sfzhang15/RefineDet
reference: https://arxiv.org/abs/1711.06897

  • InceptionV2

用于ImageNet图像分类的卷积神经网络,Onnx模型
source: https://s3.amazonaws.com/download.onnx/models/opset_6/inception_v2.tar.gz
reference: https://arxiv.org/abs/1512.00567
**

3 BBS使用说明

3.1 优化

BBS提供了优化demo的便捷式入口 “run.sh”。默认地,在”run.sh”中预设了BBS中将演示的所有模型:
“CRNN”, “PoseNet”, “OCRDet”, “Bert”, “MobilenetV1”, “MobilenetV1_050”, “RefineDet”, “InceptionV2”,您也可以修改位于run.sh开头的”models”,来演示其中之一或部分。
直接运行 “run.sh”
sh run.sh
该脚本将为您:

  • 自动下载最新版eascmd(https://help.aliyun.com/document_detail/111031.html), 并交互式地引导您配置阿里云账号的AccessID和AccessKey
  • 通过”run_blade_on_aliyun.py”脚本批量运行BBS模型在阿里云上的blade优化。原理是生成eascmd所需的task json配置文件,然后通过eascmd task create *.json创建优化任务提交至阿里云
  • 通过”run_baseline_locally.py”脚本批量运行BBS模型在本地BBS docker内的baseline优化,包括使用tensorflow, tensorflow+xla, tensorrt, caffe, caffe2等框架

第一次执行”run.sh”时需要输入”resource”信息,目前对于公有云用户免费开放 “T4_8CORE” 和 “P4_8CORE” 的资源组用于Blade优化任务。需要注意的是,公用资源由于数量有限可能导致较长的排队时间(用户可以通过eascmd task desc [task_name]来查看任务实时信息,如果”Progress”为0,则说明优化任务并未启动)。在长时间排队均未能获取资源的情况,建议用户自己购买资源组(请参见:https://help.aliyun.com/document_detail/120122.html)。
执行”run.sh”的优化结果会保存在以”performance”开头的本地文件中(包含时间戳)。

若要单独进行某一模型的优化及部署,执行步骤如下:
Step 1: (如果在run.sh中您已下载eascmd,则可以跳过该步骤)
参考eascmd客户端使用手册,下载eascmd客户端,并配置ak信息;
eascmd客户端使用手册:https://help.aliyun.com/document_detail/111031.html
Step 2:
通过执行run_blade_on_aliyun.py进行Blade优化,需设置model参数指定待优化的模型名称(如”CRNN”),并设置resource参数指定资源组。
python run_blade_on_aliyun.py --model [model name] --resource [resource]
Step 3:
通过执行run_baseline_locally.py进行本地非blade优化,需设置model参数指定待优化的模型名称(如”CRNN”)。
python run_baseline_locally.py --model [model name]

3.2 部署

在EAS上部署Blade优化模型

  • Step 1: (如果在前一步骤中您已下载eascmd,则可跳过该步骤)
    参考eascmd客户端使用手册,下载eascmd客户端,并配置ak信息;
    eascmd客户端使用手册:https://help.aliyun.com/document_detail/111031.html
  • Step 2:通过运行deploy_with_blade_on_aliyun.py进行模型部署,需设置 model 参数指定已优化模型的名称(如 “CRNN”),并设置唯一的服务名称 “service_name” 和指定资源组的 “resource”。这里提请用户注意,上文中提到的免费开放Blade优化使用的资源组并不能用于部署。如需部署,请自行购买资源组(请参见:https://help.aliyun.com/document_detail/120122.html)。
    python deploy_with_blade_on_aliyun.py --model [model name] --service_name [service name] --resource [resource]
    需要注意的是,我们没有为在线部署提供免费的资源组。请购买和优化使用的相同GPU型号的资源组用于在线部署。请参见:https://help.aliyun.com/document_detail/120122.html

向 Blade 推理服务发送测试请求

  • Step 1:参考EAS Python SDK https://github.com/pai-eas/eas-python-sdk 安装所需要的 SDK 包:
    pip install -U eas-prediction --user
  • Step 2:通过运行post_blade_request_to_aliyun.py进行请求发送,需要设置 model 参数指定测试请求的输入(如 “CRNN”),并设置推理服务的名称 service_name 和服务访问的 token(来自部署服务阶段打印出来的信息)。
    python post_blade_request_to_aliyun.py --model [model name] --service_name [service name] --token [token]
    这里需要注意的是 “post_blade_request_to_aliyun.py”(endpoint 参数)默认使用公网地址http://pai-eas.cn-shanghai.alibaba-inc.com 来请求服务。公网地址通常网速较慢,可以参照https://help.aliyun.com/document_detail/120828.html 把服务部署在 VPC 环境中来降低服务端到端请求时延。