AI开发平台ModelArtsAI开发平台ModelArts

计算
弹性云服务器 ECS
裸金属服务器 BMS
云手机 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器 HECS
VR云渲游平台 CVR
特惠算力专区
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属企业存储服务
云存储网关 CSG
专属分布式存储服务 DSS
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘小站 IES
智能边缘平台 IEF
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
园区智能体 CampusGo
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
视频分析服务 VAS
语音交互服务 SIS
知识图谱 KG
人证核身服务 IVS
IoT物联网
设备接入 IoTDA
设备管理 IoTDM(联通用户专用)
全球SIM联接 GSL
IoT开发者服务
IoT数据分析
车联网服务 IoV
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
开发与运维
软件开发平台 DevCloud
项目管理 ProjectMan
代码托管 CodeHub
流水线 CloudPipeline
代码检查 CodeCheck
编译构建 CloudBuild
部署 CloudDeploy
云测 CloudTest
发布 CloudRelease
移动应用测试 MobileAPPTest
CloudIDE
Classroom
开源镜像站 Mirrors
应用魔方 AppCube
云性能测试服务 CPTS
应用管理与运维平台 ServiceStage
云应用引擎 CAE
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
资源管理服务 RMS
应用身份管理服务 OneAccess
区块链
区块链服务 BCS
可信跨链服务 TCS
智能协作
IdeaHub
开发者工具
SDK开发指南
API签名指南
DevStar
HCloud CLI
Terraform
Ansible
API问题定位指导
云生态
云市场
合作伙伴中心
华为云培训中心
其他
管理控制台
消息中心
产品价格详情
系统权限
我的凭证
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
应用编排服务 AOS
多云容器平台 MCP
基因容器 GCS
容器洞察引擎 CIE
云原生服务中心 OSC
容器批量计算 BCE
容器交付流水线 ContainerOps
应用服务网格 ASM
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB (for openGauss)
云数据库 GaussDB(for MySQL)
云数据库 GaussDB NoSQL
数据管理服务 DAS
数据库和应用迁移 UGO
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据湖治理中心 DGC
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
API网关 APIG
分布式缓存服务 DCS
分布式消息服务RocketMQ版
企业应用
域名注册服务 Domains
云解析服务 DNS
云速建站 CloudSite
网站备案
华为云WeLink
会议
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMAExchange
API全生命周期管理 ROMA API
安全与合规
安全技术与应用
DDoS防护 ADS
Web应用防火墙 WAF
云防火墙 CFW
应用信任中心 ATC
企业主机安全 HSS
容器安全服务 CGS
云堡垒机 CBH
数据库安全服务 DBSS
数据加密服务 DEW
数据安全中心 DSC
云证书管理服务 CCM
SSL证书管理 SCM
漏洞扫描服务 VSS
态势感知 SA
威胁检测服务 MTD
管理检测与响应 MDR
安全治理云图 Compass
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
专属云
专属计算集群 DCC
解决方案
高性能计算 HPC
SAP
游戏云
混合云灾备
华为工业云平台 IMC
价格
成本优化最佳实践
专属云商业逻辑
用户服务
帐号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
更新时间:2021-11-19 GMT+08:00
分享

应用调试

图运行方式

ModelBox有两种运行图的方式:

  • 不携带服务插件运行
  • 携带服务插件运行

这两种方式的区别是是否携带服务插件,服务插件提供了对接ModelArts推理模块及公有云其他云服务的能力。在本地调试流程图时,往往不需要加载服务插件,只是希望验证流程图本身的正确性,因此采用不带服务插件的运行模式即可。当服务需要部署到推理模块时,或者需要对接真实业务的输入输出流进行调测时,需要切换到携带服务插件的运行模式进行调试。

不携带服务插件运行调试(本地输入输出调试)

不携带服务插件的运行模式通常使用的是本地的测试输入作为应用输入,例如traffic样例的输入数据存放在/test/data目录下。

图1 本地测试数据

代码调试使用对应语言的调试方法即可,c++使用gdb,python使用pdb。GDB调试时,需要先配置.vscode目录下的编译配置文件tasks.json和调试配置文件launch.json,具体配置可参考上一章节中样例应用的配置说明。

配置好后,直接按F5即可进入调试模式。更多调试使用可参考官网VSCode调试指南

图2 使用VSCode调试代码

携带服务插件运行调试(云服务输入输出调试)

当需要部署为ModelArts推理服务或接入真实输入输出进行开发调测时,需要选用这种模式。当前该功能仅支持OBS源作为输入和输出。

当采用这种调试方式时,需要创建一个新的图文件,并以_iva.toml后缀命名。以视频车辆检测的样例为例:

图3 两种运行方式下的图文件

这两个图文件的差别主要在于输入和输出的功能单元。当使用本地输入输出调试时,功能单元的配置如图4所示,输入为本地文件,输出为推送到本地的rtsp视频流。

图4 本地输入输出功能单元

当使用云服务输入输出调试时,功能单元的配置需要和服务插件配合使用,具体写法如图5所示。

图5 云服务输入输出功能单元

当本地调试完成后需要进行部署到ModelArts推理时,也需要使用携带服务插件运行的图(推理服务仅支持携带服务插件运行模式)。后续进行打包操作时,需要确保CMakeLists.txt中配置的图文件为携带服务插件的图文件。

图6 打包配置使用的图文件名称

图编写完成后,需要执行如下命令运行图。

1. 应用打包,rpm包默认安装在./build/release目录下。

python manage.py package -s traffic

2. 运行调试服务器。该服务器用于接收ModelBox服务插件发送的任务状态信息。

python manage.py run-server

3. 新建一个terminal窗口,进入工程目录,运行推理任务。目前只支持OBS输入和输出,需要通过参数--input_path和--output_path指定用户自己的OBS输入和输出路径。

python manage.py run-job --input_path obs://video-inference/lp_infer/test_video_vehicle.mp4 --output_path obs://video-inference/test

在log文件夹下instance.log记录了实例的状态日志,task.log记录了任务的状态日志。

执行该步骤时,如果报下面的错误:

failed to verify token: .auth file not exist

则是用户未使用ModelArts VSCode插件连接实例,而是使用了其他连接方式,登录信息未写入实例导致的,需要用户切换成使用ModelArts VSCode插件连接的方式。

4. 查看推理日志。通过如下命令实时查看modolbox推理的日志信息。

tail -f /var/log/modelbox/modelbox-server.log

5. 推理任务运行成功后,可以登录OBS服务进入相关的目录查看推理结果。

  • 发布部署调试

    本地调试完成后,开发者可以将自己的应用打包成开发镜像并发布到ModelArts推理服务后查看日志,以确保开发好的应用可以在推理平台正常运行。开发镜像和生产运行镜像的差别在于开发镜像可以打开debug模式输出更多的调试日志,后续还会支持直接terminal接入运行环境进行在线调试。具体调试步骤如下:

    1. 应用打包,rpm包默认安装在./build/release目录下

    python manage.py package -s traffic

    2. 构建镜像

    构建镜像就是将应用打好的rpm包和基础镜像打成新的应用镜像,在开发调试阶段,基础镜像可以选择develop镜像,在生产部署时需要选择runtime镜像。

    cd ./tools/docker/
    vim Dockerfile      # 编写Dockerfile,工程中提供的模板可直接使用,也可以根据需求进行自定义修改
    vim modelbox-run    # 编写镜像启动脚本,其中图配置文件需要按实际修改
    vim build_image.sh  # 编写镜像构建脚本,参考脚本注释说明填写相关参数
    sh build_image.sh   # 执行镜像构建脚本

    执行成功后镜像将被推送到华为云SWR服务的组织中,SWR地址会打印在terminal控制台。命令执行结束后,镜像构建的日志会在下载至工程log目录下docker-build.log文件中,可通过日志查看构建过程信息。

    3. 发布应用

    指定应用名称和版本号,--source_location指定上一步推送到SWR的镜像地址。

    python manage.py create-app --application_name my_app --application_version 1.0.0 --source_location swr.cn-east-3.myhuaweicloud.com/org/image_name:1.0.0

    执行成功后,应用ID会打印在控制台日志。

    4. 部署在线服务(异步服务)

    指定服务名称和版本号,--app_id指定上一步导入成功的应用ID,--specification指定运行的推理资源规格,此处可以选择0.25 T4。

    python manage.py deploy-service --service_name my_service --app_id xxx --specification modelarts.vm.gpu.0.25t4

    执行成功后,服务ID会打印在控制台日志。

    5. 创建作业

    指定作业名称,--service_id指定上一步部署成功的服务ID,--input指定作业输入的OBS地址,--output指定输出的OBS地址,用户需要根据实际情况自行配置,参数格式均为Json,双引号需要转义。

    python manage.py create-task --service_id  xxx  --name my_task --input "{\"type\": \"obs\", \"data\": [{\"bucket\": \"video-inference\", \"path\": \"lp_infer/test_video_vehicle.mp4\", \"index\": 0}]}"  --output "{\"obs\": {\"bucket\": \"video-inference\", \"path\": \"result/\"}}"

    执行成功后,作业ID会打印在控制台日志。

    6. 查看作业状态

    python manage.py task-info --service_id xxx --task_id xxx

    指定服务ID和任务ID,查看作业状态,运行成功后,可以登录OBS服务进入相关的目录查看推理结果。

    作业运行失败时,当前暂未提供查询作业日志的功能,请提工单联系客服进行处理。

分享:

    相关文档

    相关产品

关闭导读