华为云用户手册

  • 推送会议结束事件示例 请求消息: POST /openapi/meetingevent Date: Tue, 17 Dec 2019 09:32:47 GMTContent-Type: application/json;charset=UTF-8Connection: keep-alivePragma: No-cacheCache-Control: no-cacheX-Request-ID: 539e8b710378987ffc5eb844b5e5c290{ "appID": "123456789", "timestamp": 1629813991351, "nonce": "60426560", "signature": "e3945cab9c583f394ae5e4957b83905e779cacaa2377d9542e19e011cc60a139", "eventInfo": {"event": "meeting.end","timestamp": 1629813991351,"payload": {"meetingInfo": { "meetingID": "987446316", "meetingUUID": "0307e0400f0a11eca58a9fcb8e69dde8", "meetingCycleSubID": "6038a614321511ecaf39ffbe33ed54dc"}} }} 响应消息: HTTP/1.1 200 Date: Tue, 17 Dec 2019 09:32:47 GMTContent-Type: application/json;charset=UTF-8Connection: keep-aliveX-Request-ID: 539e8b710378987ffc5eb844b5e5c290
  • 概述 购买了华为云会议旗舰版后,华为云会议将支持开通企业会议事件订阅能力。开通后,华为云会议服务端会主动把该企业的会议事件推送给企业开发者的回调服务地址。 当前已支持的推送会议事件包括: 会议开始 会议结束 会议关闭 录制结束 免费试用企业无法开通“会议事件推送”,请联系华为销售人员,并提供华为云会议企业ID,将企业升级为旗舰版。 第三方开发者如果使用SP模式,需要在华为云会议后台开通“会议事件推送”,请联系华为销售人员,并提供华为云会议SP ID。 给指定的回调地址推送事件时,如果推送失败时,间隔30秒后再重试。重试3次失败后,间隔30分钟再重试,一共重试24小时。24小时后将推送不成功的事件丢弃。 父主题: 企业级会议事件推送
  • 查询会议用户登录指标统计数据 应用场景 面向第三方应用,提供查询指定时间段内,会议用户统计数据下,用户登录指标统计数据的操作。 业务流程 图1 查询会议登录指标统计数据 步骤一:登录鉴权 1-5、第三方通过执行App ID鉴权, 获取Token 。 步骤二:获取指定时间段内会议登录指标统计数据 6、填入时间单位,起始时间,结束时间,分类等参数 7、第三方携带这些参数向网关APIG发送查询会议登录指标统计数据请求。 8、网关接收请求后,向仪表盘发送查询会议登录指标统计数据请求。 9、仪表盘返回会议登录指标统计数据给网关APIG。 10、网关APIG将会议登录指标统计数据返回给第三方。 父主题: 应用示例
  • 示例1:查询与会者QoS 应用场景 面向第三方应用,提供查询会议、与会者、以及QoS数据的操作。 业务流程 图1 查询会议、与会者、QoS数据流程 步骤一:登录鉴权 1-5、第三方通过执行App ID鉴权,获取Token。 步骤二:获取会议列表(在线会议列表或历史会议列表,此处举例为在线会议,历史会议同理) 6、填入偏移量、查询条目数量、关键词等参数 7、第三方携带这些参数向网关APIG发送查询QoS在线会议列表请求。 8、网关接收请求后,向仪表盘发送查询QoS在线会议列表请求。 9、仪表盘返回QoS在线会议列表给网关APIG。 10、网关APIG将QoS在线会议列表返回给第三方。 步骤三:获取QoS会议与会者列表 11、根据返回的在线会议列表,填入偏移量、查询条目数量、对应的会议UUID、会议类别等参数、 12、第三方携带这些参数向网关APIG发起查询指定QoS会议的与会者列表请求。 13、网关APIG接收请求后,向仪表盘发起查询指定QoS会议的与会者列表请求。 14、仪表盘将指定QoS会议的与会者列表返回给网关APIG。 15、网关APIG将指定QoS会议的与会者列表返回给第三方。 步骤四:获取与会者QoS数据 16、填入对应会议UUID、会议类别、对应与会者ID、QoS类型等参数 17、第三方携带这些参数向网关APIG发起查询指定与会者QoS数据的请求。 18、网关APIG接收请求后,向仪表盘发起查询指定与会者QoS数据的请求。 19、仪表盘将指定与会者QoS数据返回给网关APIG。 20、网关APIG将指定与会者的Qos数据返回给第三方。 父主题: 应用示例
  • 接口参考 请求消息的Body体参数如下: 表1 请求消息数据结构 参数 类型 描述 appID String 配置项中“订阅者ID” timestamp Integer 消息时间戳,单位毫秒 nonce String 随机生成字符串 signature String 消息体签名,算法hmacSHA256(appID + timestamp +nonce+ eventInfo,appkey),其中appkey是企业推送开通配置项中的密码。企业开发者可根据这个签名来做数据完整性校验。 说明:签名算法中的eventInfo为事件信息对象转json字符串 eventInfo EventInfo 事件信息 表2 EventInfo数据结构 参数 类型 描述 event String 事件类型。取值范围: meeting.verify:启用验证事件 meeting.started:会议开始事件 meeting.end:会议结束事件 meeting.conclude: 会议关闭事件 record.finish:录制结束事件 timestamp Integer 事件时间戳,单位毫秒 payload PayloadPayload 事件内容 表3 Payload数据结构 参数 类型 描述 meetingInfo MeetingInfo 事件内容 表4 MeetingInfo数据结构 参数 类型 描述 meetingID String 会议id meetingUUID String 会议uuid meetingCycleSubID String 周期子会议uuid 响应消息的Body体参数如下: 表5 响应数据消息结构 参数 类型 描述 event String 事件类型。“启用验证”的响应中填meeting.verify nonce String “启用验证”的响应中填请求中获取的nonce值 启用验证事件 会议开始事件 会议结束事件 会议关闭事件 录制结束事件 父主题: 企业级会议事件推送
  • 业务流程 图1 企业级会议事件推送开启及事件推送流程图 在“会议事件推送”中配置完成并点击“启用”后,华为云会议后台会给指定的URL发送一个“启用验证”请求。 第三方服务端需要按照要求返回响应,响应中带的nonce必须跟上述请求中保持一致。请参考接口启用验证事件。 启用成功后,企业内的会议事件产生后,华为云会议后台会给指定的URL推送相应的事件。请参考接口会议开始事件、会议结束事件和会议关闭事件。 第三方服务端收到事情推送的POST请求后,都应响应200 OK消息。
  • APPID登录鉴权场景 1、检查填写的APPID、APPKEY与申请的信息是否匹配 2、确认Authorization中填入的数据格式是否正确 样例:HMAC-SHA256 signature=bd4b79e16c15fc9274f3336f85a4847e6211c5fc34a1e16be8a35a9c15995915 图1 Authorization参数格式 3、确认生成的signature是否正确,详见生成算法。 样例:HMAC-SHA256 signature=HexEncode(HMAC256((appId + ":" + userId + ":" + expireTime + ":" + nonce), appKey)) 如使用企业管理员身份进行鉴权,userId可以不填,但是“:”需要保留。 样例:HMAC-SHA256 signature=HexEncode(HMAC256((appId + ":" + ":" + expireTime + ":" + nonce), appKey)) 4、确保Body体里填写的参数,与生成signature时一致。
  • 会议媒体质量状态推送示例 {"data": [{"mode": 0,"participantID": "uzr571a9brwu11cvcibvru5a7r7rryiy","netInfo": "good","lostPacketRate": "0","delay": "37","jitter": "0","fluxIn": "2","fluxOut": "2","audioOutLossPacketRate": "0","videoInLossPacketRate": "0","videoOutLossPacketRate": "0","assistVideoInLossPacketRate": "0","assistVideoOutLossPacketRate": "0","outJitter": "0","videoFluxIn": "0","videoFluxOut": "0","assistVideoFluxIn": "0","assistVideoFluxOut": "0","bandwidth": 61440,"audioCodecType": "AACLD","videoCodecType": "H264HP"}],"confID": "900487914","msgID": "244720b162d111eb980a6b11e9b06158","msgMode": 1,"version": 39,"createTime": 1611993596126,"action": "NetConditionNotify"}
  • 邀请结果推送示例 {"data": [{"callNumber": "+86571299676493248","resultCode": "0"}],"confID": "900487914","msgID": "23a4ed3a62d111eb980a8f4b46ea6930","msgMode": 0,"version": 1611993595063,"createTime": 1611993595063,"action": "InviteResultNotify"}
  • 发言方状态推送示例 {"data": [{"pid": "w5v17oiroco5zy9boia91yar1a17wzvy","name": "张三","speakingVolume": 45}],"confID": "900151350","msgID": "4252aa67647f11ebb104b533eb9cd8a1","msgMode": 0,"version": 1612178330127,"createTime": 1612178330127,"action": "SpeakerChangeNotify"}
  • 会议状态推送示例 {"state": "Created","endTime": "1611994784164","mode": "FREE","vas": 1,"picNum": 16,"lock": 0,"mute": 1,"lockSharing": 0,"canUnmute": 1,"chairView": 0,"recState": 0,"aiRecState": 0,"enableShareSetting": 1,"callInRestriction": 0,"audienceCallInRestriction": 0,"forbiddenChat": 0,"realTimeSubtitle": 0,"audienceTotalCount": 0,"simultaneousInterpretation": 0,"lanChannels": [],"allowAudience": false,"pause": false,"partViewNum": 0,"maxPartViewNum": 8,"audienceVideoLayout": "speakerVideoLayout","recOccurred": 0,"clientRecState": 0,"clientRecMode": 0,"waitingRoomState": 0,"showAudienceMode": 0,"audienceCountMultiple": 0,"audienceCountReal": 0,"confID": "900487914","msgID": "23a1dff762d111eb980a9172a5e3d682","msgMode": 0,"version": 1611993595043,"createTime": 1611993595043,"action": "ConfDynamicInfoNotify"}
  • 请求消息示例 GET wss://100.94.23.40/cms/open/websocket/confctl/increment/conn?confID=900726255&tmpToken=cnr6e88712f1c89a7b4e3b989596fc420fd43b45bf8ef35c1db HTTP/1.1Host: 100.94.23.40Connection: UpgradePragma: no-cacheCache-Control: no-cacheUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36Upgrade: websocketOrigin: https://100.94.23.40Sec-WebSocket-Version: 13Accept-Encoding: gzip, deflate, brAccept-Language: zh-CN,zh;q=0.9,en;q=0.8Cookie: CONFPORTALROUTE=canary; supportCookie=1Sec-WebSocket-Key: wJ34Os631BNGJ1R72gQ/mQ==Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
  • 业务流程 图1 视频会控流程图 传入预约会议初始化参数,如会议类型(选择视频),与会者信息等参数。 第三方向网关APIG发起预约会议请求,并传入预约会议初始化参数。 网关APIG接收请求后,向CloudPortal发起预约会议请求。 CloudPortal预约会议成功后,向APIG网关返回会议信息。 网关APIG将收到的会议信息返回给第三方。 预约会议成功后,为了获取会控Token,第三方向网关APIG发起通过会议ID/密码登录会议控制请求。 网关APIG接收请求后,向CloudPortal发送获取会控Token请求。 第三方获取会控Token,供接下来视频会控接口调用。 为了获取与会者的particpantID,第三方向网关APIG发起查询在会会场信息请求。 网关APIG接收请求后,向CloudPortal发送查询在场会场信息请求。 第三方获取与会者particpantID,供接下来视频会控接口调用。 上图中序号12-19为视频会控接口,且接口调用无顺序要求,根据第三方自身需求进行调用。 第三方完成相应的视频会控接口调用,执行结束会议操作,向网关APIG发起结束会议请求。 网关APIG接收请求后,向CloudPortal发送获取结束会议请求,当CloudPortal收到结束会议请求后,结束该会议。
  • 业务流程 图1 会议录播流程图 传入预约会议初始化参数,如会议类型,与会者信息,自动开启录制,录播类型等参数。 第三方向网关APIG发起预约会议请求,并传入预约会议初始化参数。 网关APIG接收请求后,向CloudPortal发起预约会议请求。 CloudPortal预约会议成功后,向APIG网关返回会议信息。 网关APIG将收到的会议信息返回给第三方,可以获取会议id(conferenceid)。 如果在预约会议时,没有开启自动录制功能,则第三方向网关APIG发起启动/停止会议录制请求。 网关APIG接收请求后,向CloudPortal发送启动/停止会议录制请求,当CloudPortal收到启动/停止会议录制请求后,开始进行录制。 第三方完成录制后,执行结束会议操作,向网关APIG发起结束会议请求。 网关APIG接收请求后,向CloudPortal发送获取结束会议请求,当CloudPortal收到结束会议请求后,结束该会议。 为了获取confuuid,第三方向网关APIG发起查询历史会议列表请求。 网关APIG接收请求后,向CloudPortal发送查询历史会议列表请求。 CloudPortal查询历史会议列表成功后,向APIG网关返回历史会议信息。 网关APIG将收到的历史会议信息返回给第三方,获取confuuid用于查询录播文件。 为了查看及下载录播文件,第三方向网关APIG发起查询录播文件请求。 网关APIG接收请求后,向CloudPortal发送查询录播文件请求。 CloudPortal查询录播文件成功后,向APIG网关返回录播文件信息。 网关APIG将收到的录播文件返回给第三方,第三方根据返回的URL可以在浏览器查看录制文件及下载录播文件。
  • 业务流程 图1 基本会控流程图 传入预约会议初始化参数,如会议类型,与会者信息等参数。 第三方向网关APIG发起预约会议请求,并传入预约会议初始化参数。 网关APIG接收请求后,向CloudPortal发起预约会议请求。 CloudPortal预约会议成功后,向APIG网关返回会议信息。 网关APIG将收到的会议信息返回给第三方。 预约会议成功后,为了获取会控Token,第三方向网关APIG发起通过会议ID/密码登录会议控制请求。 网关APIG接收请求后,向CloudPortal发送获取会控Token请求。 第三方获取会控Token,供接下来基本会控接口调用。 为了获取与会者的particpantID,第三方向网关APIG发起查询在会会场信息请求。 网关APIG接收请求后,向CloudPortal发送查询在场会场信息请求。 第三方获取与会者particpantID,供接下来基本会控接口调用。 上图的步骤12-25为基本会控接口,且接口调用无顺序要求,根据第三方自身需求进行调用。 第三方完成相应的基本会控接口调用,执行结束会议操作,向网关APIG发起结束会议请求。 网关APIG接收请求后,向CloudPortal发送获取结束会议请求,当CloudPortal收到结束会议请求后,结束该会议。
  • 业务流程 图1 普通鉴权登录流程图 初始化参数,填入App ID、User ID、Authorization等参数。App ID的申请及Signature的生成,请参考App ID鉴权介绍。 第三方应用向网关APIG发起鉴权请求,携带初始化参数。 网关APIG接收请求后,将请求转发给华为云会议的CloudPortal。 CloudPortal鉴权通过后,向APIG网关返回Token。 网关APIG将收到的Token信息返回给第三方。Token有效期是12~24小时。 Token过期前,向网关APIG发送刷新Token请求。 网关APIG接收请求后,向CloudPortal发送刷新Token请求。 CloudPortal返回刷新后的Token信息给网关APIG。 网关APIG返回刷新后的Token给第三方。 如果短期内不在需要调用接口,调用注销登录接口将Token失效掉。
  • 手机号所属的国家 表1 手机号所属的国家 国家 国家码 chinaPR +86(中国大陆) chinaHKG +852(中国香港) chinaOMA +853(中国澳门) chinaTPE +886(中国台湾地区) BVl +1284 (英属维尔京群岛) Bolivia +591(玻利维亚) CZ +420(捷克共和国) GB +245(几内亚比绍) SVGrenadines +1784(圣文森特和格林纳丁斯) TAT +1868(特立尼达和多巴哥) UK +44(英国) afghanistan +93(阿富汗) albania +355(阿尔巴尼亚) algeria +213(阿尔及利亚) andorra +376(安道尔共和国) angola +244(安哥拉) argentina +54(阿根廷) armenia +374(亚美尼亚) australia +61(澳大利亚) austria +43(奥地利) azerbaijan +994(阿塞拜疆) bahamas +1242(巴哈马) bahrain +973(巴林) bangladesh +880(孟加拉国) belarus +375(白俄罗斯) belgium +32(比利时) belize +501(伯利兹) benin +229(贝宁) bosniaAndHerzegovina +387(波斯尼亚和黑塞哥维那) botswana +267(博茨瓦纳) brazil +55(巴西) brunei +673(文莱) bulgaria +359(保加利亚) burkinaFaso +226(布基纳法索) burundi +257(布隆迪) cambodia +855(柬埔寨) cameroon +237(喀麦隆) canada +1(加拿大) capeVerde +238(佛得角) caymanIslands +1345(开曼群岛) centralAfrican +236(中非) chad +235(乍得) chile +56(智利) columbia +57(哥伦比亚) comoros +269(科摩罗) congoB +242(刚果.布) congoJ +243(刚果.金) costarica +506(哥斯达黎加) croatia +385(克罗地亚) curacao +599(库拉索岛) cyprus +357(塞浦路斯) denmark +45(丹麦) djibouti +253(吉布提) dominica +1809(多米尼加共和国) ecuador +593(厄瓜多尔) egypt +20(埃及) equatorialGuinea +240(赤道几内亚) estonia +372(爱沙尼亚) finland +358(芬兰) france +33(法国) gabon +241(加蓬) gambia +220(冈比亚) georgia +995(格鲁吉亚) germany +49(德国) ghana +233(加纳) greece +30(希腊) grenada +1473(格林纳达) guatemala +502(危地马拉) guinea +224(几内亚) guyana +592(圭亚那) honduras +504(洪都拉斯) hungary +36(匈牙利) india +91(印度) indonesia +62(印度尼西亚) iraq +964(伊拉克) ireland +353(爱尔兰) israel +972( 以色列) italy +39(意大利) ivoryCoast +225(科特迪瓦) jamaica +1876(牙买加) japan +81(日本) jordan +962(约旦) kazakhstan +7(哈萨克斯坦) kenya +254(肯尼亚) kuwait +965(科威特) kyrgyzstan +996(吉尔吉斯斯坦) laos +856(老挝) latvia +371(拉脱维亚) lebanon +961(黎巴嫩) lesotho +266(莱索托) liberia +231(利比里亚) libya +218(利比亚) lithuania +370(立陶宛) luxembourg +352(卢森堡) macedonia +389(北马其顿) madagascar +261(马达加斯加) malawi +265(马拉维) malaysia +60(马来西亚) maldives +960(马尔代夫) mali +223(马里) malta +356(马耳他) mauritania +222(毛里塔尼亚) mauritius +230(毛里求斯) mexico +52(墨西哥) moldova +373(摩尔多瓦) mongolia +976(蒙古) montenegro +382 (黑山共和国) morocco +212(摩洛哥) mozambique +258(莫桑比克) myanmar +95(缅甸) namibia +264(纳米比亚) nepal +977(尼泊尔) netherlands +31(荷兰) newZealand +64(新西兰) nicaragua +505(尼加拉瓜) niger +227(尼日尔) nigeria +234(尼日利亚) norway +47(挪威) oman +968(阿曼) pakistan +92(巴基斯坦) palestine +970(巴勒斯坦) panama +507(巴拿马) papuaNewGuinea +675(巴布亚新几内亚) peru +51(秘鲁) philippines +63(菲律宾) poland +48(波兰) portugal +351(葡萄牙) puertoRico +1787(波多黎各) qatar +974(卡塔尔) romania +40(罗马尼亚) russia +7(俄罗斯) rwanda +250(卢旺达) saintMartin +590(圣马丁) salvatore +503(萨尔瓦多) saudiArabia +966(沙特阿拉伯) senegal +221(塞内加尔) serbia +381(塞尔维亚) seychelles +248(塞舌尔) sierraLeone +232(塞拉利昂) singapore +65(新加坡) slovakia +421(斯洛伐克) slovenia +386(斯洛文尼亚) somalia +252(索马里) southAfrica +27(南非) southKorea +82(韩国) spain +34(西班牙) sriLanka +94(斯里兰卡) suriname +597(苏里南) swaziland +268(斯威士兰) sweden +46(瑞典) switzerland +41(瑞士) tajikistan +992(塔吉克斯坦) tanzania +255(坦桑尼亚) thailand +66(泰国) togo +228(多哥) tunisia +216(突尼斯) turkey +90(土耳其) turkmenistan +993(土库曼斯坦) uae +971(阿联酋) uganda +256(乌干达) ukraine +380(乌克兰) uruguay +598(乌拉圭) usa +1(美国) uzbekistan +998(乌兹别克斯坦) venezuela +58(委内瑞拉) vietNam +84(越南) yemen +967(也门) zambia +260(赞比亚) zimbabwe +263(津巴布韦) 父主题: 附录
  • 时区表 表1 时区映射关系 参数值 时区信息 1 (GMT-12:00) Eniwetok, Kwajalein 2 (GMT-11:00) Midway Island, Samoa 3 (GMT-10:00) Hawaii 4 (GMT-09:00) Alaska 5 (GMT-08:00) Pacific Time(US&Canada);Tijuana 6 (GMT-07:00) Arizona 7 (GMT-07:00) Mountain Time(US&Canada) 8 (GMT-06:00) Central America 9 (GMT-06:00) Central Time(US&Canada) 10 (GMT-06:00) Mexico City 11 (GMT-06:00) Saskatchewan 12 (GMT-05:00) Bogota, Lima, Quito 13 (GMT-05:00) Eastern Time(US&Canada) 14 (GMT-05:00) Indiana(East) 15 (GMT-04:00) Atlantic time(Canada) 16 (GMT-04:00) Caracas, La Paz 17 (GMT-04:00) Santiago 18 (GMT-03:30) Newfoundland 19 (GMT-03:00) Brasilia 20 (GMT-03:00) Buenos Aires, Georgetown 21 (GMT-03:00) Greenland 22 (GMT-02:00) Mid-Atlantic 23 (GMT-01:00) Azores 24 (GMT-01:00) Cape Verde Is. 25 (GMT) Casablanca, Monrovia 26 (GMT) Greenwich Mean Time:Dublin, Edinburgh, Lisbon, London 27 (GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna 28 (GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague 29 (GMT+01:00) Brussels, Copenhagen, Madrid, Paris 30 (GMT+01:00) Sarajevo, Skopje, Sofija, Warsaw, Zagreb 31 (GMT+01:00) West Central Africa 32 (GMT+02:00) Athens, Istanbul, Vilnius 33 (GMT+02:00) Bucharest 34 (GMT+02:00) Cairo 35 (GMT+02:00) Harare, Pretoria 36 (GMT+02:00) Helsinki, Riga, Tallinn 37 (GMT+02:00) Jerusalem 38 (GMT+03:00) Baghdad, Minsk 39 (GMT+03:00) Kuwait, Riyadh 40 (GMT+03:00) Moscow, St. Petersburg, Volgograd 41 (GMT+03:00) Nairobi 42 (GMT+03:30) Tehran 43 (GMT+04:00) Abu Dhabi, Muscat 44 (GMT+04:00) Baku, Tbilisi, Yerevan 45 (GMT+04:30) Kabul 46 (GMT+05:00) Ekaterinburg 47 (GMT+05:00) Islamabad, Karachi, Tashkent 48 (GMT+05:30) Calcutta, Chennai, Mumbai, New Delhi 49 (GMT+05:45) Kathmandu 50 (GMT+06:00) Almaty, Novosibirsk 51 (GMT+06:00) Astana, Dhaka 52 (GMT+06:00) Sri Jayawardenepura 53 (GMT+06:30) Rangoon 54 (GMT+07:00) Bangkok, Hanoi, Jakarta 55 (GMT+07:00) Krasnoyarsk 56 (GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi, Taipei 57 (GMT+08:00) Irkutsk, Ulaan Bataar 58 (GMT+08:00) Kuala Lumpur, Singapore 59 (GMT+08:00) Perth 60 (GMT+09:00) Osaka, Sapporo, Tokyo 61 (GMT+09:00) Seoul 62 (GMT+09:00) Yakutsk 63 (GMT+09:30) Adelaide 64 (GMT+09:30) Darwin 65 (GMT+10:00) Brisbane 66 (GMT+10:00) Canberra, Melbourne, Sydney 67 (GMT+10:00) Guam, Port Moresby 68 (GMT+10:00) Hobart 69 (GMT+10:00) Vladivostok 70 (GMT+11:00) Magadan, Solomon Is., New Caledonia 71 (GMT+12:00) Auckland, Welington 72 (GMT+12:00) Fiji 73 (GMT+13:00) Nuku'alofa 74 (GMT+09:00) Irkutsk 75 (GMT) Casablanca 76 (GMT+04:00) Baku 77 (GMT+12:00) Kamchatka, Marshall Is. 父主题: 附录
  • MLOps功能介绍 机器学习开发流程主要可以定义为四个步骤:项目设计、数据工程、模型构建、部署落地。AI开发并不是一个单向的流水线作业,在开发的过程中,会根据数据和模型结果进行多轮的实验迭代。算法工程师会根据数据特征以及数据的标签做多样化的数据处理以及多种模型优化,以获得在已有的数据集上更好的模型效果。传统的AI应用交付会直接在实验迭代结束后以输出的模型为终点。当应用上线后,随着时间的推移,会出现模型漂移的问题。新的数据和新的特征在已有的模型上表现会越来越差。在MLOps中,实验迭代的产物将会是一条固化下来的流水线,这条流水线将会包含数据工程,模型算法,训练配置等。用户将会使用这条流水线在持续产生的数据中持续迭代训练,确保这条流水线生产出来的模型的AI应用始终维持在一个较好的状态。 MLOps的整条链路需要有一个工具去承载,MLOps打通了算法开发到交付运维的全流程。和以往的开发交付不同,以往的开发与交付过程是分离的,算法工程师开发完的模型,一般都需要交付给下游系统工程师。MLOps和以往的开发交付不同,此时往往这个过程中,算法工程师参与度还是非常高的。企业内部一般都是有一个交付配合的机制。从项目管理角度上需要增加一个AI项目的工作流程机制管理,流程管理不是一个简单的流水线构建管理,它是一个任务管理体系。 这个工具需要具备以下的能力: 流程分析: 沉淀行业样例流水线,帮助用户能快速进行AI项目的参考设计,启动快速的AI项目流程设计。 流程定义与重定义:以流水线作为承载项,用户能快速定义AI项目,实现训练+推理上线的工作流设计。 资源分配:支持帐号管理机制给流水线中的参与人员(包含开发者和运维人员)分配相应的资源配额与权限,并查看相应的资源使用情况等。 时间安排:围绕子流水线配置相应的子任务安排,并加以通知机制,实现流程执行过程之间配合的运转高效管理。 流程质量与效率测评:提供流水线的任务执行过程视图,增加不同的检查点,如数据评估,模型评估,性能评估等,让AI项目管理者能很方便的查看流水线执行过程的质量与效率。 流程优化:围绕流水线每一次迭代下,用户可以自定义输出相关的核心指标,并获取相应的问题数据与原因等,从而基于这些指标下,快速决定下一轮迭代的执行优化。 父主题: MLOps简介
  • 什么是MLOps MLOps(Machine Learning Operation)是“机器学习”(Machine Learning)和“DevOps”(Development and Operations)的组合实践。随着机器学习的发展,人们对它的期待不仅仅是学术研究方面的领先突破,更希望这些技术能够系统化地落地到各个场景中。但技术的真实落地和学术研究还是有比较大的差别的。在学术研究中,一个AI算法的开发是面向固定的数据集(公共数据集或者某个特定场景固定数据集),基于单个数据集,不断做算法的迭代与优化,面向场景的AI系统化开发的过程中,除了模型的开发,还有整套系统的开发,于是软件系统开发中成功经验“DevOps”被自然地引入进来。但是,在人工智能时代,传统的DevOps已经不能完全覆盖一个人工智能系统开发的全流程了。 父主题: MLOps简介
  • DevOps DevOps,即Development and Operations,是一组过程、方法与系统的统称,用于促进软件开发、运维和质量保障部门之间的沟通、协作与整合。在大型的软件系统开发中,DevOps被验证是一个非常成功的方法。DevOps不仅可以加快业务与开发之间的互动与迭代,还可以解决开发与运维之间的冲突。开发侧很快,运维侧太稳,这个就是常说的开发与运维之间固有的、根因的冲突。在AI应用落地的过程中,也有类似的冲突。AI应用的开发门槛较高,需要有一定的算法基础,而且算法需要快速高效地迭代。专业的运维人员追求的更多是稳定、安全和可靠;专业知识也和AI算法大相径庭。运维人员需要去理解算法人员的设计与思路才能保障服务,这对于运维人员来说,门槛更高了。在这种情况下,更多时候可能需要一个算法人员去端到端负责,这样一来,人力成本就会过高。这种模式在少量模型应用的场景是可行的,但是当规模化落地AI应用时,人力问题将会成为瓶颈。 父主题: MLOps简介
  • Workflow的构成 工作流是对一个有向无环图的描述。开发者可以通过 Workflow 进行有向无环图(Directed Acyclic Graph,DAG)的开发。一个DAG是由节点和节点之间的关系描述组成的。开发者通过定义节点的执行内容和节点的执行顺序定义DAG。如下图,绿色的矩形表示为一个节点,节点与节点之间的连线则是节点的关系描述。整个DAG的执行其实就是有序的任务执行模板。 图1 工作流 父主题: 什么是Workflow
  • 如何导入对象 在编写Workflow过程中,相关对象都通过workflow包进行导入,梳理如下: from modelarts import workflow as wf Data包相关内容导入: wf.data.DatasetTypeEnumwf.data.Datasetwf.data.DatasetVersionConfigwf.data.DatasetPlaceholderwf.data.ServiceInputPlaceholderwf.data.ServiceDatawf.data.ServiceUpdatePlaceholderwf.data.DataTypeEnumwf.data.ModelDatawf.data.GalleryModelwf.data.OBSPathwf.data.OBSOutputConfigwf.data.OBSPlaceholderwf.data.SWRImagewf.data.SWRImagePlaceholderwf.data.Storagewf.data.InputStoragewf.data.OutputStoragewf.data.LabelTaskwf.data.LabelTaskPlaceholderwf.data.LabelTaskConfigwf.data.LabelTaskTypeEnumwf.data.MetricsConfigwf.data.TripartiteServiceConfigwf.data.DataConsumptionSelector policy包相关内容导入: wf.policy.Policywf.policy.Scene steps包相关内容导入: wf.steps.MetricInfowf.steps.Conditionwf.steps.ConditionTypeEnumwf.steps.ConditionStepwf.steps.LabelingStepwf.steps.LabelingInputwf.steps.LabelingOutputwf.steps.LabelTaskPropertieswf.steps.ImportDataInfowf.steps.DataOriginTypeEnumwf.steps.DatasetImportStepwf.steps.DatasetImportInputwf.steps.DatasetImportOutputwf.steps.AnnotationFormatConfigwf.steps.AnnotationFormatParameterswf.steps.AnnotationFormatEnumwf.steps.Labelwf.steps.ImportTypeEnumwf.steps.LabelFormatwf.steps.LabelTypeEnumwf.steps.ReleaseDatasetStepwf.steps.ReleaseDatasetInputwf.steps.ReleaseDatasetOutputwf.steps.CreateDatasetStepwf.steps.CreateDatasetInputwf.steps.CreateDatasetOutputwf.steps.DatasetPropertieswf.steps.SchemaFieldwf.steps.ImportConfigwf.steps.JobStepwf.steps.JobMetadatawf.steps.JobSpecwf.steps.JobResourcewf.steps.JobTypeEnumwf.steps.JobEnginewf.steps.JobInputwf.steps.JobOutputwf.steps.LogExportPathwf.steps.MrsJobStepwf.steps.MrsJobInputwf.steps.MrsJobOutputwf.steps.MrsJobAlgorithmwf.steps.ModelStepwf.steps.ModelInputwf.steps.ModelOutputwf.steps.ModelConfigwf.steps.Templatewf.steps.TemplateInputswf.steps.ServiceStepwf.steps.ServiceInputwf.steps.ServiceOutputwf.steps.ServiceConfigwf.steps.StepPolicy workflow包相关内容导入: wf.Workflowwf.Subgraphwf.Placeholderwf.PlaceholderTypewf.AlgorithmParameterswf.BaseAlgorithmwf.Algorithmwf.AIGalleryAlgorithmwf.resourcewf.SystemEnvwf.add_whitelist_userswf.delete_whitelist_users 父主题: 常见问题
  • 使用案例 int类型参数 from modelarts import workflow as wfwf.Placeholder(name="placeholder_int", placeholder_type=wf.PlaceholderType.INT, default=1, description="这是一个int类型的参数") str类型参数 from modelarts import workflow as wfwf.Placeholder(name="placeholder_str", placeholder_type=wf.PlaceholderType.STR, default="default_value", description="这是一个str类型的参数") bool类型参数 from modelarts import workflow as wfwf.Placeholder(name="placeholder_bool", placeholder_type=wf.PlaceholderType.BOOL, default=True, description="这是一个bool类型的参数") float类型参数 from modelarts import workflow as wfwf.Placeholder(name="placeholder_float", placeholder_type=wf.PlaceholderType.FLOAT, default=0.1, description="这是一个float类型的参数") Enum类型参数 from modelarts import workflow as wfwf.Placeholder(name="placeholder_enum", placeholder_type=wf.PlaceholderType.ENUM, default="a", enum_list=["a", "b"], description="这是一个enum类型的参数") dict类型参数 from modelarts import workflow as wfwf.Placeholder(name="placeholder_dict", placeholder_type=wf.PlaceholderType.JSON, default={"key": "value"}, description="这是一个dict类型的参数") list类型参数 from modelarts import workflow as wfwf.Placeholder(name="placeholder_list", placeholder_type=wf.PlaceholderType.LIST, default=[1, 2], placeholder_format="int", description="这是一个list类型的参数,并且value类型为int") 父主题: 参数配置
  • 部分运行 Workflow通过支持预置场景的方式来实现部分运行的能力,在开发工作流时按照场景的不同对DAG进行划分,之后在运行态可选择任意场景单独运行。具体代码示例如下所示: workflow =wf.Workflow( name="image_cls", desc="this is a demo workflow", steps=[label_step, release_data_step, training_step, model_step, service_step], policy=wf.policy.Policy( scenes=[ wf.policy.Scene( scene_name="模型训练", scene_steps=[label_step, release_data_step, training_step] ), wf.policy.Scene( scene_name="服务部署", scene_steps=[model_step, service_step] ), ] )) 该示例中workflow包含了五个节点(节点相关定义已省略),在policy中定义了两个预置场景:模型训练和服务部署,工作流发布至运行态后,部分运行的开关默认关闭,节点全部运行。用户可在全局配置页面打开开关,选择指定的场景进行运行。 部分运行能力支持同一个节点被定义在不同的运行场景中,但是需要用户自行保证节点之间数据依赖的正确性。另外,部分运行能力仅支持在运行态进行配置运行,不支持在开发态进行调试。 父主题: 高阶能力
  • 功能介绍 统一存储主要用于工作流的目录管理,帮助用户统一管理一个工作流中的所有存储路径,主要分为以下两个功能: 输入目录管理:开发者在编辑开发工作流时可以对所有数据的存储路径做统一管理,规定用户按照自己的目录规划来存放数据,而存储的根目录可以根据用户自己的需求自行配置。该方式只做目录的编排,不会自动创建新的目录。 输出目录管理:开发者在编辑开发工作流时可以对所有的输出路径做统一管理,用户无需手动创建输出目录,只需要在工作流运行前配置存储根路径,并且可以根据开发者的目录编排规则在指定目录下查看输出的数据信息。此外同一个工作流的多次运行支持输出到不同的目录下,对不同的执行做了很好的数据隔离。 父主题: 统一存储
  • 功能介绍 通过对ModelArts数据集能力进行封装,实现数据集的版本自动发布的功能。数据集版本发布节点主要用于将已存在的数据集或者标注任务进行版本发布,每个版本相当于数据的一个快照,可用于后续的数据溯源。主要应用场景如下: 对于数据标注这种操作,可以在标注完成后自动帮助用户发布新的数据集版本,结合as_input的能力提供给后续节点使用。 当模型训练需要更新数据时,可以使用数据集导入节点先导入新的数据,然后再通过该节点发布新的版本供后续节点使用。 父主题: 数据集版本发布节点
  • 功能介绍 通过对ModelArts数据集能力进行封装,实现数据集的数据导入功能。数据集导入节点主要用于将指定路径下的数据导入到数据集或者标注任务中,主要应用场景如下: 适用于数据不断迭代的场景,可以将一些新增的原始数据或者已标注数据导入到标注任务中,并通过后续的数据集标注节点进行标注。 对于一些已标注好的原始数据,可以直接导入到数据集或者标注任务中,并通过后续的数据集版本发布节点获取带有版本信息的数据集对象。 父主题: 数据集导入节点
  • OBS请求条件 您可以在创建自定义策略时,通过添加“请求条件”(Condition元素)来控制策略何时生效。请求条件包括条件键和运算符,条件键表示策略语句的Condition元素,分为全局级条件键和服务级条件键。全局级条件键(前缀为g:)适用于所有操作,服务级条件键(前缀为服务缩写,如obs:)仅适用于对应服务的操作。运算符与条件键一起使用,构成完整的条件判断语句。 OBS通过 IAM 预置了一组条件键,例如,您可以先使用obs:SourceIp条件键检查请求者的IP地址,然后再允许执行操作。 OBS支持的条件键和运算符与桶策略的Condition一致,在IAM配置时需要在前面加上“obs:”。详细的Condition介绍请参见Policy格式。 父主题: 配置IAM权限
  • HTTP状态码 表3中“http_code”维度支持如下HTTP状态码。 表5 HTTP状态码列表 HTTP状态码 说明 400 请求报文格式错误。 401 认证授权失败。 403 权限不足,访问拒绝,MimeType限定,无法上传该类型文件等。 404 请求资源不存在。 405 指定的方法不允许操作在请求的资源上。 406 上传数据的CRC32校验失败。 413 上传对象大小错误。 499 客户端断流或客户端数据流传输超时。 579 上传成功,但回调失败。 599 服务端操作失败。 612 指定资源不存在或已被删除。 614 目标资源已存在。 650 监控callback访问源站超时、失败等情况。 701 Block过期,分片不连续,block总大小和对象大小不匹配等。
共100000条