• [问题求助] VXML脚本基础cell,请求接口报错,找不到问题原因
    VXML脚本cell,请求接口报错,请大佬帮忙看一下是什么原因导致的。已知问题:1、接口那边没有接收到请求;2、在远程环境中使用postman请求接口能正常返回;3、在IVR机器上使用telnet命令,检测短信接口地址网络是能通的。以下是cell配置和报错日志图,附vxml<vxml version="1.0"> <form>                       <var name="httpHead" expr="session.sce.httpHead"/>                      <script>                                   var httpStr = httpHead;                     </script>             <subdialog name="goodsInfor" namelist="session.sce.phones session.sce.contentKey session.sce.orgi" srcexpr="httpStr" >                                       <filled>                                                              <assign name="session.sce.result"  expr="goodsInfor.result"/>                                                 </filled>                      </subdialog>     </form> </vxml>报错日志如图:
  • [问题求助] 华为aicc视频IVR不推送给用户端视频请求问题
    您好!       我用以下CELL开发视频IVR      使用如下几个基本CELL:         1:播放输入V7.0 cell,或8,0          2:事件等待V2.0 CELL  现在流程在访问过程中出现以下界面需要屏蔽掉(屏蔽内容如红框内内容),麻烦帮忙看看如何操作才行
  • ABC 租户冻结以及如何解冻?
    账号在长时间不使用的情况下会被冻结,处于不可用的状态。图1、图2为账号冻结状态图1图2账号被冻结条件(1)开发环境账号半年不使用会被冻结;(2)生产环境(即线下环境)账号不会被冻结;账号被冻结后如处理:冻结后请联系我们帮助恢复账号的使用
  • [技术干货] Appcube定时任务
    安装完成后,对于园区基线预置的、已激活状态(Active)的定时任务,项目可以根据实际需要将未使用的定时任务关闭,或者修改执行周期,以节省资源。园区基线预置的定时任务请参见基线定时任务统计.xlsx,本章节介绍关闭/修改定时任务的步骤。操作步骤登录AppCube平台。选择“管理 > 系统管理 > 任务管理 > 定时任务”。根据“任务名称”搜索定时任务,单击名称进入任务详情界面。关闭/开启定时任务:在定时任务详情界面,单击右上角的“禁用/启用”。修改“任务首次执行时间”或者“执行周期”:单击输入框后面的“编辑”按钮,设置时间和周期。图1 修改定时任务示例
  • [线上活动] 《华为云开天有约》第1期直播预告 | aPaaS将如何重塑软件行业,1月10日(本周二)17:00 不见不散!
    《华为云开天有约》是华为云开天aPaaS面向伙伴、开发者打造的技术公开课直播栏目,特邀业界知名专家、导师分享技术知识、行业洞察、实操演示、优秀案例等优质内容,旨在帮助开发者更好地基于开天aPaaS进行应用创新和技术实践。2023年第一季度,我们特别推出“玉兔迎春”开年直播系列节目,希望通过干货知识和礼品福利为大家蓄满电量,以饱满的精神状态迎接新的一年,直挂云帆,前兔似锦。随着企业数字化的不断深入,传统软件定制模式难以为继在此背景下软件行业如何破局?新型软件形态将会是什么?应用组装模式会成为新潮流吗?1月10日(本周二)17:00,特别邀请您参与《华为云开天有约》,与我们一起交流探讨,风里雨里,直播间等你,不见不散!直播地址:cid:link_0
  • [问题求助] 想问问为啥没办法拾取元素呀 点击和鼠标移动到需要锚点的位置都没有反映
    操作步骤:step1点击锚点功能step2将鼠标移动到需要锚点的位置,发现无论是长时间放置鼠标在该区域还是点击,都没有反应想咨询解决方法
  • [圈层活动] 华为云MVP全面升级,华为云开发者专家计划(HCDE)启动全球招募!
    华为云MVP全面升级!!! 为了给全球具备影响力的开发者专家带来更多优质权益,“华为云MVP”进行了全面升级,升级后全新名称为“华为云开发者专家计划(简称HCDE)”,HCDE是经华为云认证的熟悉一种或多种华为云开放能力,并对赋能全球开发者有突出贡献的个人,旨在帮助全球开发者成长,构建全球开发者生态。HCDE(原MVP)于2018年成立,迄今5年时间,云集80+城市、100+领域850+名行业顶尖开发者专家。成为HCDE,能够收获学习、交流、成长、商业成功机会,为您开发者生涯增添无限可能!(华为云开发者专家计划)更多专属权益等您来探索,欢迎加入!官网申请链接:cid:link_0HCDE全新六大权益权威认证:获得华为云官方认证, 颁发官网认证证书, 拥有官网个人专属资料展示页, 得到展现个人能力的平台专家圈层:打造HCDE交流圈,与华为云专家、行业大咖交流技术经验,协力探索业内最新技术活动特邀:优先获邀参加华为云主办或协办的相关活动,例如HDC大会、HCDE城市闭门会官方宣传:获得官方媒体渠道宣传支持,展示活动足迹、技术文章及优秀实践案例,提升影响力商务合作:优先获得华为云商务合作权、优先加入开发者生态发展计划,成为华为云合作伙伴资源对接:整合成员企业优质资源,帮助计划成员对接华为云及华为云开发者圈层资源,实现互利共赢HCDE三大使命技术布道:以嘉宾或讲师身份出席华为云相关活动,分享专业技术经验和华为云的实践经验技术实践领袖:不断了解学习华为云相关开放能力,自行或帮助其他开发者完成实践生态共建: 组织策划线下技术沙龙、研讨会,帮助全球开发者成长,构建全球开发者生态成为HCDE成员,您需要满足:满足条件(满足两项即可)1、从事技术领域相关工作或学术研究超8年,并熟悉掌握一项或多项华为云开放能力(必备)2、在华为云开发者社区有突出贡献者3、有企业技术项目管理经验并积极参与开发者相关活动者4、参与华为云合作伙伴计划企业的项目管理者5、在所在领域具有影响力并乐于帮助开发者成长的技术专家哪些人可申请HCDE?不限于华为云开发者社区年度优秀博主、年度优秀版主、优秀建议官、优秀讲师、优秀培训师;积极参与开发者相关活动的企业的技术CEO、CTO、CIO、技术总监、首席架构师、高级工程师;华为云优秀服务供应商、参与开发者生态计划企业项目负责人;高校教师及以上从业者(包括大学教师、硕导、博导)等。(审核周期为7个工作日)
  • [其他] 【开天aPaaS专家说】如何应对软件可变性?这4种常用的方法肯定要知道
    软件可变性的相关思考(一)作者:陈星亮(华为云开天aPaaS专家)软件可变性(Software Variability)是指在一定上下文中一个软件系统被有效改变(扩展、配置、调整)的能力。在许多软件系统的开发运行阶段乃至整个生命周期中,软件可变性都是其设计开发者所要面对的基本问题。       在大多数系统中,可变性表现为软件在某个或某些可变点处对变体的绑定。其中可变点是指软件中可以发生变化(绑定变体)的位置,而变体则是变化发生时,人或机器可以在相应位置做出的选择。       可以看出,在软件的运行实例中,变化发生的位置、变化发生的程度是在设计阶段预定义的。而这种定义又在很大程度上依赖于软件的需求分析以及在此基础上做出的种种假设。系统虽然具有变体绑定能力来满足既定的需求,但可变性模型(可变点、变体以及它们之间的关系)本身没有变化,导致软件在应对变化的需求或环境时存在一定限制。       在传统意义上,软件运行时可变性模型被认为是静态的。在许多研究工作中,模型被以只读的方式访问,以支持软件适应外部的环境。人们将注意力集中在可变性绑定方面(即为什么(重新)绑定变体、绑定什么变体、怎样绑定),而忽视了对运行时可变性模型本身蕴含的限制的突破。随着计算机技术的发展进步、用户需求的增多及变化的加快、系统驻留环境的开放、外界对系统灵活性和可伸缩性要求的提高,这种限制显得愈加突出。       针对软件可变性,开发者们根据软件实现要求和成本投入,采取软件预留配置点、动态软件产品线、运行时可变性动态绑定、多变非核心功能的快速开发等方法来应对。1、软件预留配置点:软件预留配置点可以自动地根据环境的变化来调整自身。换言之,它可以收集和分析有关环境的信息,基于分析的结果决定是否改变自己的行为,如果是,再采取调整动作。系统设计者指出或假设系统所面对环境变化等信息,确定系统所能够感知和收集的环境数据,进而以一定的数据结构将其表示在计算机内,而后才能设计相应的算法对这些信息进行分析并做出决策。在执行环节对于自身的调整,实际上是软件在可变点处对于变体的动态绑定,这是其运行时可变性的表现。关键点:1)设计者难以在系统部署运行之前设想所有的需求或环境的变化,当超过预期的变化出现时,已经成型的系统无法自动地收集与其相关的信息。2)并未改变可变性要素的数量、属性或关系。只能在设计开发时预定的范围内,进行选择。2、动态软件产品线:动态软件产品线包括一组核心资产和从资产开发而来的一系列具有共同特征的软件产品。与传统软件产品线对比,动态软件产品线更关注软件的运行时可变性,本质上是建立具备可配置能力的一系列软件。关键点:1)产品线自身的设计者可以快速开发出具有运行时可变性的软件产品,并赋予其自主选择绑定变体的能力。2)其关注的运行时可变性大部分都是封闭的而非开放的,这意味着运行时可变性应对的是开发者在设计期设想的环境变化,导致软件产品难以应对超过预期的环境变化。3、运行时可变性动态绑定运行时可变性动态绑定机制描述一个运行中的软件如何在一个可变点绑定相应的变体,是软件可变性实现的核心。绑定机制涉及对构件内部结构和行为的调整,包括对子构件的重配置和动态绑定。关键点:1) 对构件行为的调整往往通过重新组织构件的工作流或是重新设置构件内部参数来实现。2) 对于突破了原有设计范围内的变化,需要能被系统识别,并自动生成对应的逻辑。4、多变非核心功能的快速开发为应对行业应用不断变化的情况,亦有思路是降低软件应用开发的难度,将软件的稳定的核心功能与多变的功能分开。对于多变非核心功能,以提供低码开发的方式,便于开发者能快速的根据诉求,进行近场快速开发并投入使用。关键点:1) 软件设计者需要能识别出稳定的核心功能、多变的非核心功能。并且能够在两者之间建立好连接。2) 提供便捷的工具,使得多变的非核心功能能够被近场开发者,甚至是使用者自己能快速实现。如何提升软件的可变性,让软件能够从容应对业务的变化,一直都是软件工程领域的一个重要话题。针对上述4种在应对软件可变性经常用到的方法,各自都有其特点,分别在不同的场景下使用。
  • [直播&活动公告] 2022华为开发者大赛·中国区· 黑龙江区域启动仪式
    正在直播!2022华为开发者大赛·中国区·黑龙江区域启动仪式开始了!齐聚龙江,蓄势待发创想无限,邀你挑战↓↓↓点击观看视频直播
  • [热门活动] 【活动福利】华为开发者大赛中国区·南部赛区线下技术沙龙,领免费入场券!(限前30名)
    华为开发者大赛中国区·南部赛区线下技术沙龙,免费入场券30张!(最新改期)共建新生态,共创新价值!在这场技术沙龙,你将会学到云上最前沿的技术!你能和华为云专家面对面交流!还有各大代表企业现场切磋,机会难得!大会时间:9月27日 14:00-17:30 (因疫情原因,原定8月31日的活动延期到9月27日)大会地点:广州市天河区正佳广场万豪酒店大宴会厅A(场地有可能临时变动,请注意留意帖子更新)领取方式:微信扫码,添加小助手,领取入场券(限前30名)注:限完成【HCSD实训营——零代码云上开发体验季】活动报名用户参加,先到先得,限前30名,领完即止!>>>>>>>>点击报名【HCSD实训营——零代码云上开发体验季】<<<<<<<<<<
  • [线上活动] 【开发者大赛】专家坐堂《如何基于华为云开天aPaaS实现积木式应用创新》8月15日晚7点,参与交流互动赢取奖励!
    主题:如何基于华为云开天aPaaS实现积木式应用创新时间:8月15日  19:00-21:00直播地址:cid:link_0华为云开天aPaaS提供面向行业开发和使用的业务能力积木组装平台,简单几步实现应用创新,本次直播将解读aPaaS赛题,演示API->连接器->自动化流的过程和两个工业应用间的数据集成操作。参与交流互动赢取奖励~
  • [交流吐槽] 第一季度全球蜂窝物联网模块芯片出货量同比增长35%
            市场研究机构Counterpoint research发布的最新研究显示,2022年第一季度全球蜂窝物联网模块芯片出货量同比增长35%,保持高速增长态势。  从市场来看,中国市场是最主要的物联网芯片消费地区,中国、北美、西欧市场占据了超过75%的消费量。其中,PC、路由器/CPE和工业是5G物联网芯片的前三大应用。  从蜂窝物联网芯片供应商来看,高通以42%份额排名第1。排名第2到第7的供应商全部来自中国,其中紫光展锐以25%份额排名第2,翱捷科技以7%份额位居第3,联发科、移芯通信、芯翼信息、华为海思位居其后。  分析师表示,2022年第一季度,高通、紫光展锐、翱捷科技占据前三,出货量超75%。就全球市场而言,高通保持领先,其次是紫光展锐和Sequans。就中国市场而言,紫光展锐、高通和翱捷科技的出货量领先。  高通在全球主要10个市场中的9个市场保持领先,只在中国市场面临本土竞争对手的强劲竞争。高通一直在扩大其蜂窝物联网芯片组产品组合,例如针对零售、汽车、工业机器人和智慧城市等垂直领域的优质4G和5G解决方案。  紫光展锐在4G(Cat1和Cat1 bis)和NB-IoT技术方面表现强劲。此外,紫光展锐稳步改进蜂窝技术,提供4G Cat.4+和5G产品。紫光展锐已成功扩大了客户群,增加了移远通信、广和通、中国移动以及其他国际模组厂商。(连新)  转自:中国电子报原文链接:http://www.cinic.org.cn/hy/tx/1329190.html
  • [技术干货] 专家视点:拥抱人工智能的好处和风险
    作者:Kevin Markarian虽然人工智能的终极愿景似乎遥不可及,但即使是中小型企业主也可以拥抱人工智能。当前,人工智能正在迅速颠覆各行各业开展业务的方式,然而持怀疑论者仍然比比皆是。不过,我们真的有理由害怕人工智能吗?人工智能将改变我们工作和开展业务的方式,其影响已经显现。不过,这并不意味着它总是可怕的。相反,拥抱人工智能并利用其潜力的企业现在可以获得许多竞争优势。理解人工智能根据IBM的说法,在最基本的情况下,人工智能是“利用计算机和机器来模仿人类思维的解决问题和决策能力”的任何事物。但并非所有的人工智能都是一样的。当前,AI主要有两种类型:弱AI和强AI。弱人工智能(Weak AI) 也被称为狭隘人工智能(Narrow AI)或应用人工智能(Applied AI),指的是只能完成某一项特定任务或者解决某一特定问题的人工智能。 狭义的人工智能被训练来执行特定的任务。如可以与潜在客户进行对话的客服机器人就是弱AI 的一个例子,但AI有着更多更强大的应用,我们正在朝着强大的人工智能发展,它可以执行人类所有的复杂任务和决策过程。例如,可以做出艰难决定、反思其影响并相应地重新校准的情绪智能机器。强大的人工智能是否只是另一辆飞行汽车还有待观察。从飞行汽车到人工智能正如历史一再表明的那样,对未来的一些愿景根本就不会实现。飞行汽车的第一项专利于 1918 年授予,一个多世纪后,我们仍然没有看到满天的飞行汽车。这并没有阻止人们梦想和担心天空取代道路的未来。作为一家由人工智能驱动的企业的联合创始人,我最乐观的猜测是,人工智能就是今天的飞行汽车。自2010年以来,人们越来越担心人工智能对经济和未来工作的影响。除非你一直生活在远离网络的世界里,否则你现在可能已经无数篇关于这个话题的文章了, 例如《时代 》杂志 2020年的一篇文章写道:“从1990年到2007年,人工智能工作自动化已经取代了美国大约40万个工厂工作岗位,还有200万个即将被取代。”《时代》杂志的这篇文章实际上并非不正确。  一些行业已经经历了失业,我认为更多的失业可能会到来。这篇文章还正确地指出,人工智能让企业可以用更少的钱做更多的事情。但这并不意味着我们的工作受到了威胁。例如,考虑房地产行业。今天,人工智能开始接管潜在客户的获取和培养的某些工作。虽然这似乎是一种威胁,但作为经营着两家成功的经纪公司和一家科技公司的人,我可以向大家保证,对人工代理的需求并没有消失。人工智能将帮助代理商为更多消费者提供服务,但我预计不会有人用机器人完成房屋交易。为什么?因为人工智能缺乏帮助人们做出重大决策(包括买卖房屋)所需的情商和复杂性。商业领袖如何利用人工智能虽然人工智能的终极愿景似乎遥不可及,但即使是中小型企业主也可以拥抱人工智能。利用人工智能获取潜在客户。没有人喜欢当前糟糕的机器人,但只需少量投资和合适的人才,就可以构建真正有效的 AI 支持平台。如果处于一个快节奏、以客户为中心的行业,例如房地产或任何其他高风险的销售行业,投资人工智能可以帮助企业快速响应客户的询问并随着时间的推移完成更多交易。使用人工智能来寻找和招聘人才。聘请优秀人才和建立优秀团队需要时间和精力。人工智能能够以比任何人更快的速度对数千个应用进行分类,其正在改变我们招聘人才的方式。更好的是,它可以帮助我们发现过去由于我们自己的偏见和假设而可能忽略的优秀候选人。虽然 AI 并不完美(偏见可以内置到算法中),但它仍然有潜力帮助企业主扩大网络,审查更多候选人申请,并使用越来越细微的标准来招聘和建立最好的人才库。让人工智能指明前进的方向。人工智能充分发挥其潜力,还可以为企业指明全新的方向,原因很简单。当接受人工智能时,可以访问有关客户群的大量数据。企业可以利用这些信息继续做已经在做的事情,但最聪明的商业领袖会让他们的人工智能为他们指明新的方向。AI新采用者常犯的错误我们都听过这样一句话:“如果你不能打败他们,那就加入他们。” 这也适用于人工智能。人工智能不会消失。现在拥抱人工智能并开始探索它如何帮助他们做更多事情的企业主将是最大的赢家。尽管如此,避免这三个常见错误也很重要。一、没有为团队招募合适的人才。如果还没有使用 AI,那么团队可能没有合适的人才。虽然外包 AI 计划始终是一种选择,但如果在内部构建 AI 项目,投资回报最终会更高。这可能意味着招募新人才。二、没有意识到投资人工智能的潜在风险。人工智能也带来了独特的风险。如果投资了一家新工厂,但赌注没有得到回报,仍然可以出售工厂和其中的设备,以弥补损失的部分投资。如果你投资人工智能并且没有得到回报,情况就不同了,因为你可能无法出售专门为你的业务开发的算法。在这方面,人工智能虽然有其所有好处,但也给企业主带来了独特的风险。三、假设人工智能可以解决所有问题。最后,重要的是要正确看待人工智能。它可以改变您的业务,但这并不意味着您可以将您的业务置于自动驾驶仪上。即使人工智能改变了企业,商业领袖仍在发号施令。未来几十年,人工智能将深刻改变我们的生活、学习和经商方式。但如果没有我们的远见、洞察力和许可,它不会做任何事情。作为商业领袖,我们能做的最具战略意义的事情就是将人工智能作为一个机会来服务于我们更广泛的业务任务。责任编辑:姜华   来源: 千家网
  • [经验分享] 专家系统TBE算子调优
    详情指路视频专栏:https://www.bilibili.com/video/BV1j34y1J7Cd1、MindStudio介绍MindStudio提供在AI开发所需的一站式开发环境,支持模型开发、算子开发以及应用开发三个主流程中的开发任务,依靠模型可视化、算力测试、IDE本地仿真调试等功能,MindStudio能够帮助您在一个工具上就能高效便捷地完成AI应用开发,MindStudio采用了插件化扩展机制,开发者可以通过开发插件来扩展已有功能。本实验使用的MindStudio版本为5.0.RC1,安装请参考MindStudio安装教程(https://www.hiascend.com/document/detail/zh/mindstudio/50RC1/instg/ instg_000002.html)。2、交付件介绍(1)实现流程         在使用MindStudio中专家系统的算子优化分析功能进行自定义算子调优的时候,因为专家系统的算子优化分析功能只关注于算子实现部分的优化分析,所以对于自定义算子的开发只需要完成一部分步骤即可,算子分析、算子代码实现、算子信息库定义、算子UT测试,然后通过专家系统中的算子优化分析功能进行算子问题的分析和优化,下面展示了本实验的流程图。环境搭建与配置:本实验的环境由华为提供,MindStudio安装教程请参考(https://www.hiascend.com/document/detail/zh/mindstudio/50RC1/inst /instghtml)。安装完MindStudio后开始在MindStudio中配置CANN,CANN配置参考(https://gitee.com/ascend/docs-openmind/blob/ master/guide/common/tutorials/%E6%98%87%E8%85%BE%E7%94%9F%E6%80%81%E4%BC%97%E6%99%BA%E5%AE%9E%E9%AA%8C%E5%AE%A4%E7%BD%91%E7%BB%9C%E8%BF%9E%E6%8E%A5%E6%8C%87%E5%AF%BC.md)算子工程创建:通过MindStudio工具创建算子工程,创建完之后工具会自动生成算子工程目录及相应的文件模板,开发者可以基于这些模板进行算子开发。算子分析:在开发算子代码之前需要分析算子的数学表达式,输入、输出以及计算逻辑的实现,明确需要调用的TBE DSL接口。若是使用的第三方开源网络,网络中有昇腾AI处理器不支持的算子,可以根据第三方开源网站中的算子实现进行分析,推理出算子的数学表达式算子代码实现:算子使用的TBE框架的实现过程。算子信息库定义:算子信息配置文件用于将算子的相关信息注册到算子信息库中,包括算子的输入输出dtype、format以及输入shape信息。网络运行时,FE会根据算子信息库中的算子信息做基本校验,判断是否需要为算子插入合适的转换节点,并根据算子信息库中信息找到对应的算子实现文件进行编译,生成算子二进制文件进行执行。算子的UT测试:即单元测试(Unit Test),仿真环境下验证算子实现的功能正确性,包括算子逻辑实现代码及算子原型定义实现代码。算子问题分析:根据专家系统显现的问题进行分析。算子调优:根据专家系统提出来的建议进行调优。(2)代码工程本实验基于MindStudio的代码工程结构如下图所示。.|-- CMakeLists.txt|-- MyOperator26.iml|-- build                                                 //编译生成的中间文件|-- cmake                                               //编译相关公共文件存放目录|-- cmake-build                                      //编译相关生成文件存放目录|-- framework                    //算子插件实现文件目录|-- op_proto                                           //算子IR定义文件目录|   |-- CMakeLists.txt|   |-- sort.cc                    //算子IR定义的.c文件|   `-- sort.h                                         //算子IR定义的.h头文件|-- tbe                                                    //TBE算子文件目录|   |-- CMakeLists.txt                           //编译规则文件,会被算子工程根目录中的CMakeLists.txt文件调用|   |-- impl|   |   `-- sort.py`-- testcases                                           //工程ut测试和st测试相关代码目录    |-- CMakeLists.txt    `-- ut                                              //算子UT测试目录        `-- ops_test                                                                                  |-- CMakeLists.txt            |-- sort            |   |-- CMakeLists.txt                                               //用于编译可执行文件            |   |-- test_sort_impl.py                                            //算子实现代码的测试用例文件            `-- test_main.cc                                                         //测试用例调用总入口(3)文章介绍文章详细记录了如何使用MindStudio中的算子优化分析功能去优化TBE算子,包括算子工程创建、算子分析、算子代码实现、算子信息库定义、算子UT测试、专家系统算子问题分析和专家系统算子调优。第三节介绍了MindStudio算子工程的创建。第四节介绍了TBE自定义算子开发算子基本概念、算子的分析,包括算子的输入输出,属性等。第五节介绍了专家系统算子优化分析。第六节介绍了整个流程中遇到的问题和解决方案。第七节介绍MindStudio的更多的内容。3、算子工程创建打开MindStudio进入算子工程创建界面首次登录MindStudio:在MindStudio欢迎界面中单击“New Project”,进入创建工程界面。非首次登录MindStudio:在顶部菜单栏中选择“File > New > Project...”,进入创建工程界面。创建算子工程左侧导航栏选择“Ascend Operator”,如图所示,在右侧配置算子工程信息,配置示例如表2所示 表1 工程信息配置参数参数说明示例Name工程名称,用户自行配置。名称必须以字母开头,数字或字母结尾,只能包含字母、数字、中划线和下划线,且长度不能超过64个字符。MyOperator26Description工程描述信息,自行配置。可选配置CANN Version当前CANN的版本号。选择当前CANN的版本号Project Location工程的存储路径。保持默认单击“Next”,在弹出的页面中配置算子相关信息,选择Empty Template,如表2算子信息配置 表2 算子信息配置参数参数说明Empty Template表示创建空的算子工程。选择此选项,下方会显示“Operator Type”配置项,请在此处输入需要创建的算子的类型,请根据算子分析进行配置。Operator Type算子名称Plugin Framework算子所在模型文件的框架类型。如果选择“Sample Template”创建算子工程时不显示此配置项。MindSporePyTorchTensorFlowCaffeONNXCompute Unit有以下两种选项,选择“Sample Template”创建算子工程时不显示此配置项。AI Core / Vector Core:算子如果运行在AI Core或者Vector Core上,则代表是TBE算子。AICPU:算子如果运行在AICPU上,则代表是AICPU算子。如果“Plugin Framework”选择“MindSpore”, 则仅支持选择“AI Core / Vector Core”单击“Finish”,完成算子工程的创建若工作窗口已打开其他工程,会出现如图所示提示。选择“This Window”,则直接在当前工作窗口打开新创建的工程。选择“New Window”,则新建一个工作窗口打开新创建的工程。4、TBE自定义算子开发(1)TBE算子基本概念介绍要认识TBE就要先了解TVM。TVM(Tensor Virtual Machine)是为了解决不同平台的神经网络模型难以在其他硬件平台便捷的运行,无法充分利用新平台的运算性能的问题而诞生出来的开源深度学习编译栈,它通过统一的中间表达(Intermediate Representation)堆栈连接深度学习模型和后端硬件平台,通过统一的结构优化Schedule,可以支持CPU、GPU和特定的加速器平台和语言。TVM的架构详细介绍请参考https://tvm.apache.org/。TBE(Tensor Boost Engine)提供了基于TVM框架的自定义算子开发能力,通过TBE提供的API可以完成相应神经网络算子的开发。TBE工具给用户提供了多层灵活的算子开发方式,用户可以根据对硬件的理解程度自由选择,利用工具的优化和代码生成能力,生成昇腾AI处理器的高性能可执行算子。(2)算子分析sort算子的功能:将输入张量的元素按照给定的维度按值升序或者降序排序。返回一个命名元组(值,索引),其中值是排序后的值,索引是原始输入张量中元素的索引。属性:sort算子有两个属性,分别为axis和descending,代表排序的维度和是升序还是降序。axis类型为int32,descending类型为boolaxis和descending属性都是可选的,默认是-1和false,即默认排序最后一个轴、降序排序。输入和输出:sort算子有一个输入:x,输出为y1,y2。本样例中算子的输入支持的数据类型为float16,算子输出y1的数据类型为float16,y2的数据类型为int32。算子输入支持所有shape,输出shape与输入shape相同。算子输入和输出支持的format为:ND。确定算子开发方式及使用的计算接口:本次sort算子的开发使用的是MindStudio工具,通过调用TIK提供的API接口来实现sort算子的功能。 明确算子实现文件名称、算子实现函数名称以及算子的类型(OpType):算子类型定义为Sort。算子的实现文件名称及实现函数名称将首字母转换小写字符,定义为sort。通过以上分析,得到Sort算子的设计规格如下:表3 算子设计规格算子类型(OpType)Sort算子属性name:axisshape:(,1)data type:int32 default:-1 name:descendingshape:(,1)data type:bool default:false算子输入name:xshape:alldata type:float16format:ND 算子输出name:y1shape:alldata type:float16format:ND name:y2shape:alldata type:int32format:ND 算子实现使用的主要TIK接口tik_instance = tik.Tik()tik_instance.Tensor() 算子实现文件/实现函数名称sort (3)算子代码实现用户调用TIK API编写算子对应的Python程序后,TIK会将其转化为TIK DSL(TIK DSL是一种DSL语言,它可以在比CCE更高的抽象层次上定义CCEC程序的行为),经过编译器编译后生成CCEC文件(CCEC代码目前对于TIK编程人员无法感知),再经过CCE编译器编译后生成可运行在昇腾AI处理器上的应用程序。TBE TIK的算子实现流程如下图所示:通过调用TBE TIK接口,在算子工程下的“tbe/impl/sort.py”文件中进行Sort算子的实现,包括算子函数定义、算子入参校验、compute过程实现及调度与编译。其关键代码如下所示:(4)算子信息库定义需要通过配置算子信息文件,将算子的相关信息注册到算子信息库中。算子信息库主要体现算子在昇腾AI处理器上物理实现的限制,包括算子的输入输出dtype、format以及输入shape信息。网络运行时,FE会根据算子信息库中的算子信息做基本校验,判断是否需要为算子插入合适的转换节点,并根据算子信息库中信息找到对应的算子实现文件进行编译,生成算子二进制文件进行执行。进入“tbe/op_info_cfg.ai_core.soc_version”目录,配置算子信息库文件“sort.ini”。soc_version为当前昇腾AI处理器的版本,例如ascend310、ascend910等。开发者需要基于MindStudio自动生成的sort.ini文件进行修改,修改后的Sort算子的算子信息定义如下所示。表4 Sort算子的算子信息定义说明信息Sort算子配置说明[OpType][Sort]算子类型,以英文半角方括号,标识一个算子信息开始,根据算子分析,算子类型为Sort。input0.namexSort算子的第一个输入tensor的名称,根据算子分析,输入名称为x,所以此处配置为x,且需要跟算子原型定义中的名称保持一致。input0.dtypeinput0.dtype=float16定义输入tensor支持的数据类型与数据排布格式。根据算子分析,Sort算子的输入数据类型支持float16; input0.formatinput0.format= ND支持的数据排布格式有ND。说明:若算子输入支持多种规格,算子输入的dtype与format需要一一对应、按对应顺序进行配置,列出算子支持的所有dtype与format的组合,中间以“,”分隔。input0.shapeall定义输入tensor支持的形状。input0.paramTyperequired定义输入tensor的类型。dynamic:表示该输入是动态个数,可能是1个,也可能是多个。optional:表示该输入为可选,可以有1个,也可以不存在。required:表示该输入有且仅有1个。Sort算子的input0为固定输入1个,此处配置为required。output1.namey1此配置项代表Sort算子的第一个输出tensor的名称,根据算子分析,第一个输出名称为y1,所以此处配置为y1,且需要跟算子原型定义中的名称保持一致。output1.dtypeoutput1.dtype=float16定义输入tensor支持的数据类型与数据排布格式。根据算子分析,Sort算子的输入数据类型支持float16;output1.formatoutput1.format= ND支持的数据排布格式有ND。output1.shapeall定义输入tensor支持的形状。output1.paramTyperequired定义输入tensor的类型。Sort算子的output1为固定1个输出,此处配置为required。output2.namey2Sort算子的输出tensor的名称,根据算子分析,算子的输出名称为y2,所以此处配置为y2,且需要跟算子原型定义中的名称保持一致。output2.dtypeoutput2.dtype=int32定义输出tensor支持的数据类型与数据排布格式。根据算子分析,Sort算子的输出数据类型支持float16;支持的数据排布格式有ND。output2.formatoutput2.format=ND支持的数据排布格式有ND。output2.shapeall定义输出tensor支持的形状。output2.paramTyperequired定义输出tensor的类型。Sort算子的output1为固定输出1个,此处配置为required。(5)算子UT测试UT(Unit Test:单元测试)是开发人员进行单算子运行验证的手段之一,主要目的是:1)、测试算子代码的正确性,验证输入输出结果与设计的一致性。2)、UT侧重于保证算子程序能够跑通,选取的场景组合应能覆盖算子代码的所有分支(一般来说覆盖率要达到100%),从而降低不同场景下算子代码的编译失败率。下面展示UT测试步骤:创建UT测试用例。创建UT测试用例,有以下两种方式:右键单击算子工程根目录,选择“New Cases > TBE UT Case”。若已经存在了算子的UT测试用例,可以右键单击“testcases”目录,或者“testcases > ut”目录,选择“New Cases > TBE UT Case”,创建UT测试用例。在弹出的算子选择界面,选择需要创建UT测试用例的算子,单击OK,如下图所示。创建完成后,会在算子工程根目录下生成testcases文件夹,目录结构如下所示:├── MyOperator26            //工程根目录  │   ├──  testcases                            │   │   ├── libs                  // gtest框架,为第三方依赖,用户无需关注│   │   ├──  ut                              │   │   │   ├── ops_test│   │   │   │   ├── sort   │   │   │   │   │   ├── CMakeLists.txt        //用于编译可执行文件│   │   │   │   │   ├── test_sort_impl.py      //算子实现代码的测试用例文件│   │   │   │   │   ├── test_sort_proto.cc    //算子原型定义代码的测试用例文件│   │   │   │   ├── CMakeLists.txt             //用于编译可执行文件│   │   │   │   ├── test_main.cc              //测试用例调用总入口│   │   │   ├ CMakeLists.txt编写算子实现代码的UT Python测试用例。在“testcases/ut/ops_test/ sort/test_sort_impl.py”文件中,编写算子实现代码的UT Python测试用例,计算出算子执行结果,并取回结果和预期结果进行比较,来测试算子逻辑的正确性。         注:测试用例params中字段和字段取值范围需根据算子实现文件入口参数确定。输入tensor中的"ori_shape"和"ori_format"字段为可选字段,但若使用参数校验修饰器检验参数"ori_shape"和"ori_format"字段必选。可参见UT测试接口参考查看每个测试类接口的使用方法。若要与期望数据进行结果的比对,请使用add_precision_case接口。c) 运行算子实现文件的UT测试用例。开发人员可以执行当前工程中所有算子的UT测试用例,也可以执行单个算子的UT测试用例。右键单击“testcases/ut/aicpu_test”文件夹,选择Run AI CPU Operator‘All’UT Impl with coverage,运行整个文件夹下算子实现代码的测试用例。右键单击“testcases/ut/aicpu_test/算子名称”文件夹,选择Run AI CPU Operator ‘算子名称’ UT Impl with coverage,运行单个算子实现代码的测试用例。第一次运行时会弹出运行配置页面,请参考配置,然后单击Run。后续如需修改运行配置,请参考修改运行配置。表5  UT测试参数配置信息参数说明Name运行配置名称,用户可以自定义。Test Type选择ut_impl。Compute Unit选择计算单元:l  AI Core/Vector Core;l  AI CPU。选择不同的计算单元可以实现AI Core/Vector Core和AICPU_UT测试配置界面的切换。Operator Name选择运行的测试用例。all表示运行所有用例。其他表示运行某个算子下的测试用例。Case Names勾选需要运行的测试用例,即算子实现代码的UT C++测试用例。支持全选和全不选所有测试用例。查看运行结果。运行完成后,通过界面下方的日志打印窗口,查看运行结果。结果中展示此次一共运行几个用例,如下图。 5、专家系统优化分析(1)背景介绍在算子开发结束和整网运行出现算子性能不达标两种场景下,需要对算子进行调优。算子调优对开发者的要求比较高,需要开发者对底层和框架有一定的了解,同时具备一定的算子调优经验。算子优化分析可以协助开发者迅速找到算子性能瓶颈,并给出相应的优化手段,能够有效提升开发者算子调优的效率。本节以TBE中的Sort算子为例,介绍通过专家系统算子优化分析功能,自动识别算子中存在的问题,给出优化建议,根据优化建议进行优化,提升模型整体性能。(2)专家系统操作单击算子工程界面“Run > Edit Configurations...”或单击如下图所示菜单,进入运行UT测试配置界面。配置算子参数时勾选“Enable Advisor”。如下图所示只有当Test Type参数选择ut_impl,Target参数选择Simulator_TMModel,且Case Names参数仅勾选一项Case时,才允许勾选“Enable Advisor”开启算子专家系统功能;当Target选择其他选项或Case Names参数勾选多个case时,“Enable Advisor”选项不显示。单击“OK”完成算子工程信息的配置。单击算子工程界面“Run >Run”或单击下图所示菜单,运行算子UT测试。在这里我们使用了两类UT测试case来测试Sort算子的性能,一类是排序轴数小于2048的场景,另一类是排序轴数大于2048的场景。在使用排序轴数目小于2048场景的UT测试案例的时候,得到如下结果输出。在使用排序排序轴数目大于2048场景下,得到的输出结果如下。(3)问题分析针对占比最大的流水进行分析,主要从三个维度进行:其它流水导致的流水不连续。指令入队列导致的流水不连续。pipe_barrier(PIPE_ALL)导致的流水打断。根据分析的结果,对上述三个维度造成影响的周期数进行排序,结果展示如下:MTE2:表示将数据从Global Memory搬运到Unified Buffer,Vector完成计算后将结果写回Unified Buffer。MTE3:表示将计算结果搬回Global Memory。MTE2和MTE3的功能如下图所示。对于专家系统展示的分析结果,其字段解释如下表格所示。表6 Pipeline Interruptions输出字段参数解释字段说明Pipeline Interruption分析流水打断。Interruption Factor流水打断因素。Affected Pipeline受影响的流水。Interruption Cycles流水打断的周期数。Percentage to Total打断周期数占总周期数的百分比。Reduce strong data dependencies between pipelines.优化不合理的流水依赖。Eliminate improper instruction syschronization between pipelines.消除流水间不合理的指令同步。故根据上述关于专家系统算子优化分析功能的结果展示分析,Sort算子的实现部分针对于排序轴数小于2048的场景存在不合理的流水线依赖问题和流水间不合理指令同步问题。(4)问题解决根据优化建议,需要重点需要优化轴数小于2048的场景下Sort算子的代码实现部分,在这部分中存在着不合理的流水依赖和同步指令,对于这部分的分析根据开发经验,可能会有数据内存地址踩踏问题出现,即可能存在冗余的重复指令问题,再参考专家系统的分析建议,如下图即显示MTE2和MTE3影响了指令流水的打断,对此首先想到data_move指令,即数据的内存和外存之间的搬运指令,是否存在着不合理的可以优化的部分。通过寻找使用data_move的代码模块并测试发现下图中的tik循环可以省略,由于这个不必要的tik循环,导致了出现冗余重复的指令,里面的repeat_times也可以提出到外面进行统一计算,减少了对BLOCK和num_16的数据依赖,也优化了不合理的指令。进行优化后重新测试的结果如下图所示,可以看到对于排序轴数小于2048的情况下,已经没有流水打断提示了,即优化是有效的。(5)使用专家系统总结通过专家系统工具的分析,可以快速找出算子实现的效率和性能问题。并根据向量流水等不同维度的分析(三个维度分析请参考https://www.hiascend.com/document/detail/zh/mindstudio/50RC1/msug/msug_000349.html),给出对应的优化建议。根据优化意见和开发经验分析,可以有针对性的进行性能分析,改进实现代码,提升了算子调优效率。6、经验总结UT测试的时候出现如下问题,case不能识别,显示缺少absl-py模块。解决方法:本地默认的Python环境中安装absl-py模块,而不是在配置的Python编译器中安装absl-py模块,它识别的时候是根据本地的默认的Python环境识别的。使用专家系统时,在tmmodel模式下出现算子case识别不出来解决方法:打开UT的代码,没有精度测试case,使用add_precision_case()添加精度测试case,如果使用add_case方式是无法识别的。有时候使用专家系统的时候出现如下问题。测试案例显示测试成功,但是不能拉起专家系统。解决方法:方法一:检查UT测试代码是否有问题,方法二:尝试关闭MindStudio,并重新打开项目运行测试,占时不明什么原因导致,但是确是是有效的解决方法。7、关于MindStudio更多的内容如果需要了解关于MindStudio更多的信息,请查阅昇腾社区中MindStudio的用户手册(https://www.hiascend.com/document/detail/zh/mindstudio /50RC1/msug/msug_000433.html),里面有算子开发、模型开发等各种使用操作的详细介绍。如果在使用MindStudio过程中遇到任何问题,也可以在昇腾社区中的昇腾论坛(https://www.huaweicloud.com/s/JU1pbmRTdHVkaW_mkK3lu7ol/t_60_p_1)里进行提问,会有华为内部技术人员对其进行解答,如下图。
  • [热门活动] #1小时深度解读SaaS应用系统设计直播专家坐堂答疑# 提问互动赢华为nova迷你蓝牙音箱!
    感谢大家对本次直播的支持与参与,恭喜以下获奖的童鞋,请于8月4日前私信蛋花(微信号:Huawei-danhua)反馈邮寄信息,以便准时收到奖品,逾期未反馈信息则视为自动放弃获奖资格,请知悉。视频号直播观看时长TOP 3有礼公示:直播期间优质问题公示:账号昵称问题1659008007063560165***82457+在进行SaaS应用开发时,CCE应该如何选型?1659004796783930165***89903+多租户模式下有哪些设计难点?1659006209663030165***16083+每个用户得到一套独立的环境吗?论坛优质问题公示:问题1:问题2:热门问题奖:无达到要求的用户直播简介【专家简介】程泽 华为云DTSE技术布道师【直播简介】云原生+AI+大数据时代,多租应用系统是什么样的呢?继上期典型云原生应用架构介绍后,本期直播将与您一起探讨如何利用华为云云原生能力实现独立部署项目的SaaS化改造或技术架构升级。【直播时间】2022年7月28日 19:00-20:30直播链接:https://bbs.huaweicloud.com/live/DTT_live/202207281900.html活动介绍【互动方式】直播前您可以在本帖留下您感兴趣的问题,专家会在直播时为您解答。直播后您可以继续在本帖留言,与专家互动交流。我们会在全部活动结束后对参与互动的用户进行评选。【活动时间】7月28日—8月2日【奖励说明】评奖规则:活动1:在本帖提出与直播相关的问题,由专家在所有互动贴中选出2名最优问题贴的开发者进行奖励。奖品:华为nova迷你蓝牙音箱 1个 活动2:在本帖提出与直播相关的问题并邀请好友点赞,问题点赞量TOP 1的开发者进行奖励。奖品:手机支架 1个【注意事项】1、为保证您顺利领取活动奖品,请您在活动公示奖项后3个工作日内私信提前填写奖品收货信息,如您没有填写,视为自动放弃奖励。2、活动奖项公示时间截止2022年8月4日,如未填写视为弃奖。本次活动奖品将于奖项公示后15个工作日内统一发出,请您耐心等待。3、点赞活动点赞量需≥8;活动期间同类子活动每个ID(同一姓名/电话/收货地址)只能获奖一次,若重复则中奖资格顺延至下一位合格开发者,仅一次顺延。4、如活动奖品出现没有库存的情况,华为云工作人员将会替换等价值的奖品,获奖者不同意此规则视为放弃奖品。5、其他事宜请参考【华为云社区常规活动规则】。