• [技术干货] 模型压缩部署概述【转载】
    一、模型在线部署深度学习和计算机视觉方向除了算法训练/研究,还有两个重要的方向: 模型压缩(模型优化、量化)、模型部署(模型转换、后端功能SDK开发)。所谓模型部署,即将算法研究员训练出的模型部署到具体的端边云芯片平台上,并完成特定业务的视频结构化应用开发。现阶段的平台主要分为云平台(如英伟达 GPU)、手机移动端平台(ARM 系列芯片)和其他嵌入式端侧平台(海思 3519、安霸 CV22、地平线 X3、英伟达 jetson tx2 等芯片)。对于模型部署/移植/优化工程师来说,虽然模型优化、量化等是更有挑战性和技术性的知识,但是对于新手的我们往往是在做解决模型无法在端侧部署的问题,包括但不限于:实现新 OP、修改不兼容的属性、修改不兼容的权重形状、学习不同芯片平台的推理部署框架等。对于模型转换来说,现在行业主流是使用 Caffe 和 ONNX 模型作为中间模型。1.1,深度学习项目开发流程在高校做深度学习 demo 应用一般是这样一个过程,比如使用 Pytorch/TensorFlow 框架训练出一个模型,然后直接使用 Pytorch 框架做推理(test)完成功能验证,但是在工业界这是不可能的,因为这样模型推理速度很慢,一般我们必须有专门的深度学习推理加速框架去做模型推理(inference)。以 GPU 云平台推理框架 TensorRT 为例,简单描述模型训练推理过程就是:训练好网络模型(权重参数数据类型为 FP32)输入 TensorRT,然后 TensorRT 做解析优化,并进行在线推理和输出结果。两种不同的模型训练推理过程对比如下图所示: 前面的描述较为简单,实际在工业届,理想的深度学习项目开发流程应该分为三个步骤: 模型离线训练、模型压缩和模型在线部署,后面两个步骤互有交叉,具体详情如下:模型离线训练:实时性低,数据离线且更新不频繁,batchsize 较大,消耗大量 GPU 资源。设计开发模型网络结构;准备数据集并进行数据预处理、EDA 等操作;深度学习框架训练模型:数据增强、超参数调整、优化器选择、训练策略调整(多尺度训练)、TTA、模型融合等;模型测试。模型优化压缩:主要涉及模型优化、模型转换、模型量化和模型编译优化,这些过程很多都在高性能计算推理框架中集成了,各个芯片厂商也提供了相应的工具链和推理库来完成模型优化压缩。实际开发中,在不同的平台选择不同的推理加速引擎框架,比如 GPU 平台选择 TensorRT,手机移动端(ARM)选择 NCNN/MNN,NPU 芯片平台,如海思3519、地平线X3、安霸CV22等则直接在厂商给出的工具链进行模型的优化(optimizer)和压缩。模型优化 Optimizer:主要指计算图优化。首先对计算图进行分析并应用一系列与硬件无关的优化策略,从而在逻辑上降低运行时的开销,常见的类似优化策略其包括:算子融合(conv、bn、relu 融合)、算子替换、常数折叠、公共子表达式消除等。模型转换 Converter:Pytorch->Caffe、Pytorch->ONNX、ONNX模型->NCNN/NPU芯片厂商模型格式(需要踩坑非常多,Pytorch、ONNX、NPU 三者之间的算子要注意兼容)。注意 ONNX 一般用作训练框架和推理框架之间转换的中间模型格式。模型量化 Quantizer:主要指训练后量化(Post-training quantization PTQ);权重、激活使用不同的量化位宽,如速度最快的量化方式 w8a8、速度和精度平衡的量化方式 w8a16。模型编译优化(编译优化+NPU 指令生成+内存优化)Compiler:模型编译针对不同的硬件平台有不同优化方法,与前面的和硬件无关的模型层面的优化不同。GPU平台存在 kernel fusion 方法;而 NPU 平台算子是通过特定二进制指令实现,其编译优化方法包括,卷积层的拆分、卷积核权重数据重排、NPU 算子调优等。模型部署/SDK输出: 针对视频级应用需要输出功能接口的SDK。实时性要求高,数据线上且更新频繁,batchsize 为 1。主要需要完成多模型的集成、模型输入的预处理、非DL算法模块的开发、 各个模块 pipeline 的串联,以及最后 c 接口(SDK)的输出。板端框架模型推理: Inference:C/C++。不同的 NPU 芯片/不同的公司有着不同的推理框架,但是模型的推理流程大致是一样的。包括:输入图像数据预处理、加载模型文件并解析、填充输入图像和模型权重数据到相应地址、模型推理、释放模型资源。这里主要需要学习不同的模型部署和推理框架。pipeline 应用开发: 在实际的深度学习项目开发过程中,模型推理只是其中的基础功能,具体的我们还需要实现多模型的集成、模型输入前处理、以及非 DL 算法模块的开发: 包括检测模块、跟踪模块、选帧模块、关联模块和业务算法模块等,并将各模块串联成一个 pipeline,从而完成视频结构化应用的开发。SDK集成: 在完成了具体业务 pipeline 的算法开发后,一般就需要输出 c 接口的 SDK 给到下层的业务侧(前后端)人员调用了。这里主要涉及 c/c++ 接口的转换、pipeline 多线程/多通道等sample的开发、以及大量的单元、性能、精度、稳定性测试。芯片平台板端推理 Inference,不同的 NPU 芯片有着不同的 SDK 库代码,但是模型运行流程类似。不同平台的模型的编译优化是不同的,比如 NPU 和一般 GPU 的区别在于后端模型编译上,GPU 是编译生成 kernel library(cuDNN 函数),NPU 是编译生成二进制指令;前端的计算图优化没有本质区别,基本通用。所以综上所述,深度学习项目开发流程可以大致总结为三个步骤: 模型离线训练、模型优化压缩和模型部署/SDK输出,后两个步骤互有交叉。前面 2 个步骤在 PC 上完成,最后一个步骤开发的代码是需要在在 AI 芯片系统上运行的。最后以视差模型在海思 3519 平台的部署为例,其模型部署工作流程如下: 1.2,模型训练和推理的不同为了更好进行模型优化和部署的工作,需要总结一下模型推理(Inference)和训练(Training)的不同:网络权重值固定,只有前向传播(Forward),无需反向传播,因此:模型权值和结构固定,可以做计算图优化,比如算子融合等;输入输出大小固定,可以做 memory 优化,比如 feature 重排和 kernel 重排。batch_size 会很小(比如 1),存在 latency 的问题。可以使用低精度的技术,训练阶段要进行反向传播,每次梯度的更新是很微小的,需要相对较高的精度比如 FP32 来处理数据。但是推理阶段,对精度要求没那么高,现在很多论文都表明使用低精度如 in16 或者 int8 数据类型来做推理,也不会带来很大的精度损失。二、手机端CPU推理框架的优化对于 HPC 和软件工程师来说,在手机 CPU 端做模型推理框架的优化,可以从上到下考虑:算法层优化:最上面就是算法层,如可以用winograd从数学上减少乘法的数量(仅在大channel尺寸下有效);框架优化:推理框架可以实现内存池、多线程等策略;硬件层优化:主要包括: 适应不同的硬件架构特性、pipeline和cache优化、内存数据重排、NEON 汇编优化等。转自:cid:link_0
  • [教程] 轻松搞定图像识别调用
    前言基于java使用SDK实现图像识别,主要以媒资图像标签和名人识别为例。一、环境配置Maven(没有直接下载华为的SDK包,而是使用Maven安装依赖)JDK19(官方的SDK包要求JDK版本必须高于JDK8版本,大家根据自己只要满足版本要求即可)开发工具:IDEA 2023.3(其他版本也可)能创建Maven项目即可开通图像识别服务(目前是免费体验):这里我开通的是图像标签/媒资图像标签和名人识别服务。设置访问密钥服务区域:我开通的服务区域是华北-北京四关键步骤Maven项目的创建和Java环境变量的配置我就不再赘诉,这是大家学习java早已熟练掌握的,这里只讲诉易错的。开通图像识别服务 华为云首页就有云产品体验区(找不到就在搜索栏检索),勾选AI: 点击“立即体验”后,找到服务列表,开通你想要的服务(点击开通): 设置访问密钥 在控制台找到“我的凭证”: 找到“访问密钥”,如果没有就新增,新增后一定要下载密钥的CSV文件,他会有提示让你下载,防止你忘记: 下载完csv文件后用记事本打开即可看到AK和SK: Maven引入依赖配置 版本可以自己切换 <dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-image</artifactId> <version>3.1.8</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.70</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.16</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.16.0</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.13.0</version> </dependency>二、图像识别实例媒资图像标签功能介绍:对用户传入的图像可以返回图像中的物体名称、所属类别及置信度信息。使用图片是网上的,仅作学习使用: 代码如下:/** * @Version: 1.0.0 * @Author: Dragon_王 * @ClassName: RunImageMediaTaggingSolution * @Description: 媒资图像标签 * @Date: 2024/1/8 11:51 */ /** * 此demo仅供测试使用,强烈建议使用SDK * 使用前需配置依赖jar包。jar包可通过下载SDK获取 */ import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.image.v2.region.ImageRegion; import com.huaweicloud.sdk.image.v2.*; import com.huaweicloud.sdk.image.v2.model.*; public class RunImageMediaTaggingSolution { public static void main(String[] args) { //此处需要输入您的AK/SK信息 String ak = "你的AK"; String sk = "你的SK"; ICredential auth = new BasicCredentials() .withAk(ak) .withSk(sk); ImageClient client = ImageClient.newBuilder() .withCredential(auth) .withRegion(ImageRegion.valueOf("cn-north-4")) //此处替换为您开通服务的区域 .build(); RunImageMediaTaggingRequest request = new RunImageMediaTaggingRequest(); ImageMediaTaggingReq body = new ImageMediaTaggingReq(); body.withThreshold(10f); body.withLanguage("zh"); body.withUrl("https://tse2-mm.cn.bing.net/th/id/OIP-C.SIuEnb1-arhtDNqfdICVqAHaE7?rs=1&pid=ImgDetMain"); //此处替换为公网可以访问的图片地址 request.withBody(body); try { RunImageMediaTaggingResponse response = client.runImageMediaTagging(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } }运行结果: //运行结果如下 class RunImageMediaTaggingResponse { result: class ImageMediaTaggingResponseResult { tags: [class ImageMediaTaggingItemBody { confidence: 83.63 type: 动物 tag: 金毛犬 i18nTag: class ImageMediaTaggingItemBodyI18nTag { zh: 金毛犬 en: Golden retriever } i18nType: class ImageMediaTaggingItemBodyI18nType { zh: 动物 en: Animal } instances: [] }, class ImageMediaTaggingItemBody { confidence: 81.78 type: 动物 tag: 金毛 i18nTag: class ImageMediaTaggingItemBodyI18nTag { zh: 金毛 en: Golden hair } i18nType: class ImageMediaTaggingItemBodyI18nType { zh: 动物 en: Animal } instances: [] }, class ImageMediaTaggingItemBody { confidence: 77.00 type: 动物 tag: 金毛寻猎犬 i18nTag: class ImageMediaTaggingItemBodyI18nTag { zh: 金毛寻猎犬 en: Golden Retriever } i18nType: class ImageMediaTaggingItemBodyI18nType { zh: 动物 en: Animal } instances: [] }, class ImageMediaTaggingItemBody { confidence: 62.60 type: 动物 tag: 贵妇犬 i18nTag: class ImageMediaTaggingItemBodyI18nTag { zh: 贵妇犬 en: Poodle } i18nType: class ImageMediaTaggingItemBodyI18nType { zh: 动物 en: Animal } instances: [] }, class ImageMediaTaggingItemBody { confidence: 59.02 type: 生活 tag: 狗链 i18nTag: class ImageMediaTaggingItemBodyI18nTag { zh: 狗链 en: Dog chain } i18nType: class ImageMediaTaggingItemBodyI18nType { zh: 生活 en: Life } instances: [] }, class ImageMediaTaggingItemBody { confidence: 53.84 type: 动物 tag: 宠物狗 i18nTag: class ImageMediaTaggingItemBodyI18nTag { zh: 宠物狗 en: Pet dog } i18nType: class ImageMediaTaggingItemBodyI18nType { zh: 动物 en: Animal } instances: [] }, class ImageMediaTaggingItemBody { confidence: 48.01 type: 动物 tag: 狗狗 i18nTag: class ImageMediaTaggingItemBodyI18nTag { zh: 狗狗 en: Dog } i18nType: class ImageMediaTaggingItemBodyI18nType { zh: 动物 en: Animal } instances: [] }, class ImageMediaTaggingItemBody { confidence: 44.02 type: 动物 tag: 犬 i18nTag: class ImageMediaTaggingItemBodyI18nTag { zh: 犬 en: Dog } i18nType: class ImageMediaTaggingItemBodyI18nType { zh: 动物 en: Animal } instances: [] }, class ImageMediaTaggingItemBody { confidence: 42.11 type: 动物 tag: 纯种犬 i18nTag: class ImageMediaTaggingItemBodyI18nTag { zh: 纯种犬 en: Purebred dog } i18nType: class ImageMediaTaggingItemBodyI18nType { zh: 动物 en: Animal } instances: [] }, class ImageMediaTaggingItemBody { confidence: 38.65 type: 动物 tag: 中华田园犬 i18nTag: class ImageMediaTaggingItemBodyI18nTag { zh: 中华田园犬 en: Chinese pastoral dog } i18nType: class ImageMediaTaggingItemBodyI18nType { zh: 动物 en: Animal } instances: [] }] } } Process finished with exit code 0名人识别功能介绍:分析并识别图片中包含的敏感人物、明星及网红人物,返回人物信息及人脸坐标。使用照片是网上的照片,仅作学习使用: 代码如下:/** * @Version: 1.0.0 * @Author: Dragon_王 * @ClassName: RunCelebrityRecognitionSolution * @Description: 媒资标签 * @Date: 2024/1/9 16:23 */ import com.alibaba.fastjson.JSON; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.image.v2.ImageClient; import com.huaweicloud.sdk.image.v2.model.RunCelebrityRecognitionRequest; import com.huaweicloud.sdk.image.v2.region.ImageRegion; import com.huaweicloud.sdk.image.v2.model.CelebrityRecognitionReq; import com.huaweicloud.sdk.image.v2.model.RunCelebrityRecognitionResponse; public class RunCelebrityRecognitionSolution { public static void main(String[] args) { // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全 // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK String ak = "你的AK"; String sk = "你的SK"; ICredential auth = new BasicCredentials() .withAk(ak) .withSk(sk); ImageClient client = ImageClient.newBuilder() .withCredential(auth) .withRegion(ImageRegion.valueOf("cn-north-4")) //此处替换为您开通服务的区域 .build(); RunCelebrityRecognitionRequest request = new RunCelebrityRecognitionRequest(); CelebrityRecognitionReq body = new CelebrityRecognitionReq(); body.withThreshold(0f); body.withUrl("https://tse1-mm.cn.bing.net/th/id/OIP-C.tM6jifW1xaCDP7Kia9QiYwHaKD?rs=1&pid=ImgDetMain"); //此处替换为公网可以访问的图片地址 request.withBody(body); try { RunCelebrityRecognitionResponse response = client.runCelebrityRecognition(request); System.out.println(response.getHttpStatusCode()); System.out.println(JSON.toJSONString(response)); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } }运行结果:200 {"httpStatusCode":200,"result":[{"confidence":0.9985551,"faceDetail":{"w":132,"h":186,"x":197,"y":79},"label":"成龙"}]} Process finished with exit code 0总结以上就是华为云的AI图像识别服务调用,这里提供官方文档
  • [问题求助] 技能组排队等待音配置成通过IVR流程,在排队等待一段时间后溢出到其他队列失败
     【问题来源】【必填】                 天安人寿       【问题简要】【必填】                       技能组排队等待音配置成通过IVR流程,在排队等待一段时间后溢出到其他队列失败   【问题类别】【必填】                  IVR(gsl)     【AICC解决方案版本】【必填】                AICC 23.100            【期望解决时间】【选填】                           尽快            【问题现象描述】【必填】       技能组排队等待音配置成通过IVR流程(IVR_Paidui_4008133.GSL),在排队等待一段时间后,查询另外一些技能组是否有空闲坐席,有的话直接转移呼叫,无空闲坐席继续在原技能组排队等待;现在的问题是经过”查询设备“、”队列状态“判断有可用坐席时,调用”转移呼叫“节点报错,无法转接呼叫,报错信息如下:   2023-09-21 16:03:55.282  205 $107$[转移呼叫]   2023-09-21 16:03:55.285  205 CCS(0)(0,10108)->IVR(255)(11,205): 拆线: 原因: [未定义: 717]   2023-09-21 16:03:55.286  205 CccRequestReroutingWithVDN WaitReturn=0 DeviceTyp=1 DeviceNo=5 DeviceVDN=1 Time=1695283393 Dsn=8291 Handle=1 Server=0 Ret=0   这个问题原来开过一个贴子(https://bbs.huaweicloud.com/forum/thread-0279130667516801004-1-1.html?ticket=ST-92399263-A7pVcfojfUltSrgEoURQTOZc-sso),依帖子中老师的建议:配置技能组的超时时长,排队等待超时时调用IVR流程实现重新排队和溢出功能。这种能实现这个功能,但选择重新排队用户又重新进入了队列,原来的等待时长就从0计算了,大屏监控中显示的最长排队等待时长也变为从重新排队时计算了,业务不接受这种方式!通过配置技能组等待音为IVR流程实现能完美实现这个功能,但现在溢出到其他技能组时报错,能否解决这个问题?谢谢! 
  • [问题求助] 华为云下发消息,设备联动-执行动作-发送通知,显示如下结果,点击同意授权也没反应,该怎么办
    我用esp8266连接华为云,使用的MQTT协议,属性值可以成功上报给华为云,但是想要实现短信提醒功能时出现如下图的问题该怎么办,求大神指点!!!
  • [问题求助] 鸿蒙开发使用ets语言,目前没有可用的对象存储服务sdk
    鸿蒙开发使用ets语言,目前没有可用的对象存储服务sdk,因为后续鸿蒙开发者会越来越多,希望增加一下
  • [问题求助] 技能组排队超时处理方式配置成IVR流程,在这个IVR流程中如何获取到原始的呼叫ID?  
     【问题来源】【必填】                 天安人寿       【问题简要】【必填】                       技能组排队超时处理方式配置成IVR流程,在这个IVR流程中如何获取到原始的呼叫ID?   【问题类别】【必填】                  IVR(gsl)     【AICC解决方案版本】【必填】                AICC 23.100            【期望解决时间】【选填】                           尽快            【问题现象描述】【必填】              技能组排队超时处理方式配置成IVR流程,IVR流程中播报”很抱歉,现在坐席繁忙,如需电话回复请按1号键,继续等待请按2号键,结束请挂机“,用户按1记录数据库后挂断,第一次按2后继续在原技能组请求路由继续排队,第二次及以后按2后查询其他三个技能组是否有空闲坐席,有空闲坐席直接溢出,无空闲坐席继续在原技能组请求路由继续排队。       现在的问题是在排队超时的IVR流程中如何获取到原始的呼叫ID?我做了如下尝试:      1、通过获取呼叫ID节点获取的呼叫ID和发起转接流程呼叫ID不同,且多次排队超时调用此流程获取到的呼叫ID都不尽相同,我想通过呼叫ID为KEY值记录排队超时次数就行不通了     2、通过操作人工台数据,发起转接端能设置成功,排队超时IVR流程中无法获取到设置的人工台数据     3、通过操作IE信息设置/获取UUI信息,从发起端日志可看到设置成功了,但排队超时IVR流程中也无法获取到设置的UUI信息 附件为测试日志,test.GSL为发起转接的IVR流程,IVR_YiChu_4008133.GSL为排队超时IVR流程
  • [问题求助] 技能组排队等待音配置成通过IVR流程,在排队等待一段时间后溢出到其他队列的坐席失败 
    【问题来源】【必填】               天安人寿     【问题简要】【必填】                     技能组排队等待音配置成通过IVR流程,在排队等待一段时间后溢出到其他队列的坐席失败 【问题类别】【必填】                IVR(gsl)   【AICC解决方案版本】【必填】              AICC 23.100          【期望解决时间】【选填】                         尽快          【问题现象描述】【必填】            技能组排队等待音配置成通过IVR流程(IVR_Paidui_4008133.GSL),在排队等待一段时间后,查询另外一些技能组是否有空闲坐席,有的话直接转移呼叫,无空闲坐席继续在原技能组排队等待;现在的问题是经过”查询设备“、”队列状态“判断有可用坐席时,调用”转移呼叫“节点报错,无法转接呼叫,报错信息如下: 2023-09-21 16:03:55.282  205 $107$[转移呼叫] 2023-09-21 16:03:55.285  205 CCS(0)(0,10108)->IVR(255)(11,205): 拆线: 原因: [未定义: 717] 2023-09-21 16:03:55.286  205 CccRequestReroutingWithVDN WaitReturn=0 DeviceTyp=1 DeviceNo=5 DeviceVDN=1 Time=1695283393 Dsn=8291 Handle=1 Server=0 Ret=0 
  • [问题求助] 【java-sdk】使用obs的并发分段上传比直接上传速度还慢
    您好,我在使用OBS javasdk的文件上传API,使用中,我发现,对于大文件,使用官方提供的并发上传文件示例,比直接调 putObject方法速度还慢,具体代码如下:1.并发分段上传代码官方示例https://support.huaweicloud.com/sdk-java-devg-obs/obs_21_0607.html2.调用 putObject 上传文件public SaveObjectResult saveObject(String bucket, String objectKey, MultipartFile file) throws Exception { // 校验桶名称是否正确 bucket = checkBucketName(bucket); InputStream in = file.getInputStream(); SaveObjectResult saveObjectResult = new SaveObjectResult(); saveObjectResult.setOk(Boolean.FALSE); saveObjectResult.setStorageMediaType(OSSTypeEnum.OBS.name()); PutObjectResult putObjectResult = getClient().putObject(bucket, objectKey, in); if (putObjectResult != null && putObjectResult.getStatusCode() == HttpStatus.HTTP_OK) { saveObjectResult.setOk(Boolean.TRUE); saveObjectResult.setAccessUrl(putObjectResult.getObjectUrl()); } return saveObjectResult; }此处直接使用ObsCLient 的 PutObjectResult putObject(String bucketName, String objectKey, InputStream input) 方法。测试结果发现,使用并发分段上传,并没有节省时间,反而比直接使用putObject还慢,为什么会这样?怎么优化,才能让上传更快?
  • [问题求助] 交叉编译后在arm中运行,acl资源初始化错误。返回错误:507008; // soc version error
     aclError ret = aclInit(aclConfigPath);    if (ret != ACL_SUCCESS) {        ERROR_LOG("acl init failed, errorCode = %d", static_cast<int32_t>(ret));        return FAILED;    }以上是初始化代码:开发环境是x86,CANN版本是 6.3.RC1.alpha001运行环境是arm,docker中自带CANN套件,版本是6.3.RC1,具体是alpha001还是alpha002,不太清楚;问题定位到libascendcl.so库,和头文件不匹配;求助一下大佬,是不是开发环境和运行环境CANN套件中库不匹配,导致无法初始化
  • [问题求助] 关于trecordinfo表数据取值时间问题
    【问题来源】深圳容大【问题简要】trecordinfo表取值时间问题【问题类别】CC-dis【期望解决时间】在线等【问题描述】您好,在产生通话详单记录后,tcurrentbilllog表里有相应的数据记录,记录在关于时间有WAITBEGIN,WAITEND,ACKBEGIN,ACKEND,CALLBEGIN,CALLEND这几个时间字段中,想去trecordinfo[1,2,3,4,5,6,7,8,9,10,11,12]表查询录音记录,应该以哪个时间为准呢?
  • [问题求助] 使用keil软件编译器,不识别#pragma section 指令
    开发环境:keil软件使用#pragma section  指定内存地址#pragma section (".cal_data") volatile const float c_fRT1PedLatDist = 1.8F; volatile const float c_fCmsFldValveFreq = 1000; volatile const float c_fCmsFldValveDuty = 0; #pragma (section)编译报错../Core/Src/main.c(34): warning: #161-D: unrecognized #pragma #pragma arm section (".cal_data") ../Core/Src/main.c(38): warning: #161-D: unrecognized #pragma #pragma (section) ../Core/Src/main.c: 2 warnings, 0 errors linking... Program Size: Code=26572 RO-data=1356 RW-data=512 ZI-data=29464 FromELF: creating hex file... "pa2_0_min_sys\pa2_0_min_sys.axf" - 0 Error(s), 2 Warning(s). Build Time Elapsed: 00:00:04 Your Code
  • [问题求助] AICC 监控报表开发->调用批量查询技能队列维度服务水平接口http的响应码为401
    批量查询技能队列维度服务水平场景描述查询技能队列当前5分钟的服务水平相关数据。接口方法设置成“POST”。该接口仅支持POST方法,不支持PUT、GET和DELETE等方法。请求URLhttps://ip:port/rest/cmsapp/v1/openapi/skill/servicequality其中,ip为NSLB的服务器IP地址,port为CC-CMS服务在NSLB映射的HTTPS端口号。ak取值:/home/cmsapp/webapps/cmsapp/WEB-INF/classes/config/servicecloud.base.properties openapi.globalAppId=xxx sk取值:/home/cmsapp/webapps/cmsapp/WEB-INF/classes/config/security/servicecloud.security.properties  openapi.globalSk=xx根据文档里面的demo生成Authorization,然后访问接口后报401错误,
  • [公告] SDK个人数据说明
    IdeaHub SDK个人数据说明SDK名称个人数据清单使用目的存留期WhiteboardService SDK用户操作白板数据传输给调用者,用于共享不保存,只传输Login SDK设备SN激活时从设备获取,传给集成者用于设备激活不保存,只传输CastServer SDK不涉及个人数据不涉及不涉及MediaControl SDK不涉及个人数据不涉及不涉及
  • [问题求助] IAM Token所在用户怎么订阅设备接入服务
    请问一下IAM Token所在用户怎么订阅设备接入服务呀?小程序获取token之后获取设备影子报错403
  • [问题求助] 【AppCube】【ROMA】关于在开发试用环境开发安防问题
    目前需要定制化开发智慧安防基线服务,有以下疑问,请大佬们帮忙解答下:1.目前在用的是开发试用环境,要想进入多账号开发,是否需要申请购买开发环境?2.园区平台有基线应用demo:智慧安防,想基于这个基线应用定制化开发,该demo哪里可以申请到?需要走什么流程?3.安防中用到的摄像头等设备,在开发环境是否可以 提供 接入真实设备进行测试,如果不能,园区平台是否可以提供模拟设备进行,摄像头相关场景测试开发?4.关于摄像头视频这块,是否可以通过AppCube+ROMA+IOT就可以接入,进行视频实时查看?如果不能,是否有相应解决方案,比如是否需要购买华为哪款视频服务来做支撑?5.通过link sdk直接摄像头这种方案,sdk包 在哪里可以下载,需要走什么流程可以拿到相应sdk和试用文档?6.南向系统集成相关sdk和二次集成开发文档哪里可以申请到,帮忙给一个链接?以上问题,还请 各位大佬 帮忙解答下,谢谢!