• [问题求助] 同样的输入,atlas 200 dk与pytorch推理输出差异是否合理?
    我在调试atlas 200 dk的时候,按照如下步骤验证OM模型、图配置文件、还有代码是否正确:在转换OM模型时,关闭图像预处理功能,那么atlas 200 dk将直接读取预制的二进制文件(RGB,归一化了)进行前向推理pytorch推理代码也是读取这个预制的二进制文件推理比较atlas 200 dk输出的三个张量和pytorch输出的三个张量比较图像上叠加的结果(边框等检测信息)我得到的结果是:图像上叠加的检测结果一致(视觉上看)pytorch推理结果:atlas 200 dk 推理结果三个预测头的输出张量有不小的差异我的模型有3个head,将pytorch下推理输出的head的张量,和atlas 200 dk推理输出的head的张量,取差的绝对值(diff),然后统计各自的最小值、最大值和平均值:第一个头:min(diff) is 2.9802322387695312e-08, max(diff) is 0.12167739868164062, mean(diff) is 0.0018823521677404642第二个头:min(diff) is 0.0, max(diff) is 0.03104877471923828, mean(diff) is 0.000826577830594033第三个头:min(diff) is 0.0, max(diff) is 0.06562614440917969, mean(diff) is 0.0008339564083144069可见两种推理环境下,同样的输入,同一个模型输出的张量差异还是很明显的。各位朋友,这种现象是否正常?
  • [问题求助] 关于pytroch模型的转换问题
    目前atlas200还不支持pytorch模型的直接转换,各位用pytorch模型的同学是怎么解决这个问题的?把pytorch模型转换成caffe或者tensorflows,再进一步转换为开发板能用的还是有其他更方便的方式?
  • [AI大赛] 【PyTorch版本baseline】“华为云杯”2020深圳开放数据应用创新大赛·生活垃圾图片分类
    项目地址: https://github.com/edwardning/PyTorch-YOLOv3-ModelArts有帮助的话欢迎star~在华为云ModelArts平台部署PyTorch版本的YOLOv3目标检测网络,实现模型训练、在线预测及参赛发布。动机正在参加“华为云杯”2020深圳开放数据应用创新大赛·生活垃圾图片分类比赛,官方只提供了keras版本YOLOv3的baseline。 但该baseline判分只有0.05分,低的可怕,远远达不到YOLOv3应有的水平。What I do自己keras用的比较少,因此没去深究官方baseline哪里出了问题。 索性自己写了个PyTorch版本的baseline。经测试,性能大幅大幅大幅提升。。。(看结果请移步最后) 果真官方baseline有问题,有兴趣的小伙伴可以考究一下。source code: https://github.com/eriklindernoren/PyTorch-YOLOv3大赛地址: https://competition.huaweicloud.com/information/1000038439/introduction使用前准备解压官方原始数据集,制作新数据集$ cd PyTorch-YOLOv3-ModelArts/my_utils $ python prepare_datasets.py --source_datasets --new_datasets下载预训练模型$ cd weights/ $ bash download_weights.sh创建自定义模型的cfg文件$ cd PyTorch-YOLOv3-ModelArts/config $ bash create_custom_model.sh <num-classes> #此处已创建,即yolov3-44.cfg在ModelArts平台上训练1.将新数据集打包成压缩文件,替换原始数据集压缩包;2.训练集和测试集的图片路径默认保存在config/train.txt和valid.txt中,每一行代表一张图片,默认按8:2划分。注意每行图片的路径为虚拟容器中的地址,自己重新划分训练集时只需要修改最后的图片名称,千万不要更改路径!2.如果使用预训练模型,请提前将其上传到自己的OBS桶中,并添加参数--pretrained_weights = s3://your_bucket/{model}。此处的model可以是官方预训练模型(yolov3.weights或darknet53.conv.74),也可以是自己训练过的PyTorch模型(.pth)。3.训练过程中,学习率等参数默认不进行调整,请依个人经验调整4.其余流程同大赛指导文档。测试与官方keras版本的baseline比较,训练速度提升两倍多(官方baseline跑10个epoch需要150分钟,本项目仅需47分钟);参赛发布大概一小时完成判分,同样快一倍以上。官方baseline跑10个epoch用时两个半小时,判分却仅得0.05;本项目只训练头部跑5个epoch仅仅用时17分钟,判分达到0.17(惊掉下巴)因为比赛刚开始,过多的测试就不做了。个人估计,在此baseline上改进,最终成绩可以达到0.6分左右。 当然,如果想拿奖金的话还是转投RCNN或者EfficientDet吧。
  • [前沿分享] 【转】华为A910芯片+MindSpore与2080Ti/P100/T4+PyTorch实测对比
    作者:凯恩博原文链接:https://zhuanlan.zhihu.com/p/137934049                          【转自凯恩博的学习笔记】 侵删五一假期参加了华为和机器之心共同办的MindSpore学习的系列活动。因此有机会申请试用到华为云中ModelArts Ascend 910做模型训练。据工作人员讲可以试用大约一周的时间~ 还不错由于华为此前的宣传中一再强调A910的模型训练性能,因而拿到A910试用资格后,迫不及待地做了一系列的模型对比实验。看看到底A910表现如何。为了选择MindSpore在A910和GPU下同时兼容的模型,以及数据集适中大小,这里选择ResNet50+CIFAR10。可惜的是当前A910没有适配的PyTorch版本,这里的对比实验是不严谨的横向对比,仅仅用来直观感受其性能吧。实验配置Dataset: CIFAR10Model: ResNet50Batch size: 32Learning rate: init: 0.01, end: 0.00001, max: 0.1, warmup: 5, lr_decay_mode: polyOptimizer: Momentum(momentum=0.9, weight_decay=1e-4)Loss func: SoftmaxCrossEntropyWithLogits对比实验包括:在如下环境下的train,10 epoch,不包括eval。华为A910 + MindSpore 0.1 (ModelArts目前仅有0.1版)英伟达2080Ti + MindSpore 0.2英伟达2080Ti/P100/T4 + PyTorch 1.5A910 + MindSpore 0.1硬件来源ModelArts华为云昇腾集群,单卡[Modelarts Service Log]2020-05-03 06:59:11,635 - INFO - Slogd startup[Modelarts Service Log]2020-05-03 06:59:11,637 - INFO - FMK of device1 startupINFO:root:Using MoXing-v1.16.1-INFO:root:Using OBS-Python-SDK-3.1.2Download data.Create train and evaluate dataset.Create dataset success.Start run training, total epoch: 10.epoch 1 cost time = 107.66270112991333, train step num: 1562, one step time: 68.92618510237729 ms, train samples per second of cluster: 464.3epoch: 1 step: 1562, loss is 2.0400805epoch 2 cost time = 30.637421369552612, train step num: 1562, one step time: 19.614226228906922 ms, train samples per second of cluster: 1631.5epoch: 2 step: 1562, loss is 2.098766epoch 3 cost time = 30.637131452560425, train step num: 1562, one step time: 19.614040622637916 ms, train samples per second of cluster: 1631.5epoch: 3 step: 1562, loss is 1.8149554epoch 4 cost time = 30.652636766433716, train step num: 1562, one step time: 19.623967200021585 ms, train samples per second of cluster: 1630.7epoch: 4 step: 1562, loss is 1.8619552epoch 5 cost time = 30.621018171310425, train step num: 1562, one step time: 19.60372482158158 ms, train samples per second of cluster: 1632.3epoch: 5 step: 1562, loss is 2.5536947epoch 6 cost time = 30.627925395965576, train step num: 1562, one step time: 19.6081468604133 ms, train samples per second of cluster: 1632.0epoch: 6 step: 1562, loss is 1.8282737epoch 7 cost time = 30.6348295211792, train step num: 1562, one step time: 19.612566914967477 ms, train samples per second of cluster: 1631.6epoch: 7 step: 1562, loss is 1.7311925epoch 8 cost time = 30.63702702522278, train step num: 1562, one step time: 19.61397376774826 ms, train samples per second of cluster: 1631.5epoch: 8 step: 1562, loss is 1.5312912epoch 9 cost time = 30.64574098587036, train step num: 1562, one step time: 19.61955248775311 ms, train samples per second of cluster: 1631.0epoch: 9 step: 1562, loss is 1.3909853epoch 10 cost time = 30.644134283065796, train step num: 1562, one step time: 19.618523868800125 ms, train samples per second of cluster: 1631.1epoch: 10 step: 1562, loss is 1.0322676基本上在A910上的训练速度大约是 1630 张图片/秒。GTX 2080Ti + MindSpore 0.2硬件来源矩池云,单卡和A910平台的MindSpore训练代码配置上稍微有些不同,因为目前MindSpore对于GPU设备尚不支持loop_sink,需要设置为False。context.set_context(enable_loop_sink=False)结果同在A910上自然没法比(其实是差非常多)。基本在 230张/秒的训练速度。...GTX 2080Ti + PyTorch 1.5硬件来源矩池云,单卡虽然上面看到2080Ti + MindSpore表现的一般般。但当我们换用PyTorch 1.5时,发现推理速度可以达到 约840 ~ 850张/秒。可见MindSpore当前在GPU下的性能未能很好的发挥。其实这也好理解,当前MindSpore才开源一个多月,华为MindSpore Team的工作重心多半是在对A910的支持上,对GPU的优化还需要时间。epoch: 0, time: 59.38535284996033, 841.9584560914737 images/secepoch: 1, time: 59.88723134994507, 834.9025138235224 images/secepoch: 2, time: 58.60565137863159, 853.1600421428072 images/secepoch: 3, time: 60.722407817840576, 823.4192581755582 images/secepoch: 4, time: 59.398728370666504, 841.7688622555096 images/secepoch: 5, time: 57.40373611450195, 871.0234452382352 images/secepoch: 6, time: 58.88580918312073, 849.1010091159995 images/secepoch: 7, time: 59.288349628448486, 843.3360063712815 images/secepoch: 8, time: 58.900673389434814, 848.8867295185906 images/secepoch: 9, time: 58.6528799533844, 852.4730591189817 images/sec这里还有一个小小的插曲,第一次做这个实验时,环境中的PyTorch是1.2,训练速度仅是升级PyTorch 1.5后的 77%:epoch: 0, time: 75.62278366088867, 661.1764018660356 images/secepoch: 1, time: 75.28524422645569, 664.140769067595 images/secepoch: 2, time: 75.68567728996277, 660.6269744861075 images/secepoch: 3, time: 76.24357485771179, 655.7929647621011 images/secepoch: 4, time: 76.67036390304565, 652.1424635890348 images/secepoch: 5, time: 75.36379647254944, 663.4485301999354 images/secepoch: 6, time: 76.37205100059509, 654.6897634006241 images/secepoch: 7, time: 76.13714075088501, 656.7097149549684 images/secepoch: 8, time: 74.63874101638794, 669.8934001180677 images/secepoch: 9, time: 75.37042999267578, 663.3901386108427 images/sec由此看来,还是要经常升级PyTorch啊~Tesla P100 + PyTorch 1.5硬件来源华为ModelArts Notebook(当前提供单任务1小时的试用,可续),单卡大约 790张/秒epoch: 0, time: 63.36981773376465, 789.0191543561762 images/secepoch: 1, time: 62.97652459144592, 793.9466384398017 images/secepoch: 2, time: 63.09738540649414, 792.4258616721363 images/secepoch: 3, time: 63.07587289810181, 792.6961245669054 images/secepoch: 4, time: 63.424623250961304, 788.3373591697633 images/secepoch: 5, time: 63.103607416152954, 792.3477285579278 images/secepoch: 6, time: 63.47292637825012, 787.73743157891 images/secepoch: 7, time: 63.04208755493164, 793.1209441063094 images/secepoch: 8, time: 63.53010869026184, 787.0284032374748 images/secepoch: 9, time: 63.33588719367981, 789.441850669922 images/secTesla T4 + PyTorch 1.5硬件来源Google Colab,单卡差不多740 - 750 张/秒,稍逊于P100epoch: 0, time: 67.75457763671875, 737.9575187980084 images/secepoch: 1, time: 67.86454939842224, 736.76168843998 images/secepoch: 2, time: 67.7728979587555, 737.7580346413469 images/secepoch: 3, time: 67.1821916103363, 744.2448482479583 images/secepoch: 4, time: 66.74327516555786, 749.1391436211982 images/secepoch: 5, time: 66.77364683151245, 748.7984013538037 images/secepoch: 6, time: 66.86375832557678, 747.7892546293491 images/secepoch: 7, time: 67.04962396621704, 745.7163372786774 images/secepoch: 8, time: 66.8210072517395, 748.2676789296436 images/secepoch: 9, time: 66.56065726280212, 751.1945052252788 images/sec综合对比当然,综合的训练速度不仅仅取决于GPU/NPU这些芯片,也取决于CPU的负载、IO、内存等因素。这里由于硬件的限制,没法做那么严格的比较,暂且以最终测量的训练速度来呈现。根据这些的数据,A910在训练速度约是2080Ti的1.93倍。由于没找到V100这样的配置,这次没办法实际测试其训练的FPS了。不过可以参考https://zhuanlan.zhihu.com/p/46779820 里对2080Ti及V100的评测。按照2080Ti在32位精度下是V100 80%性能估算,A910的训练速度性能至少是V100的1.5倍左右/以上。看这些数据,A910的性能确实强大,也没有辜负对它的期待。华为作为国内第一家做AI训练芯片的企业,确实让人服气。祝贺昇腾A910芯片,也希望MindSpore可以对GPU的支持越来越好,打造世界一流的AI训练框架。附录:设置环境矩池云的容器可以选择已经装好MindSpore的镜像文件。包括Jupyter环境等等都是设置好的。当然,也可以自己创建Python虚拟环境后通过pip安装MindSpore,注意,这里需要CUDA10.1:conda create -n mindspore python=3.7.5 -yconda activate mindsporepip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/0.2.0-alpha/MindSpore/gpu/cuda-10.1/mindspore_gpu-0.2.0-cp37-cp37m-linux_x86_64.whl# 测试安装python>>> import mindspore as ms>>> ms.__version__'0.2.0'训练ResNet 50 with CIFAR10MindSpore已经可以支持到Lenet、Alexnet、ResNet50这几个网络在GPU模型下的训练。当然,所有的模型都支持在昇腾芯片的训练。官方文档里有完整的ResNet训练example,基本是可以毫无压力的运行。https://gitee.com/mindspore/docs/tree/master/tutorials/tutorial_code/resnet如果测试安装时遇到cuda相关error,记得需要export CUDA路径:export LD_LIBRARY_PATH=/usr/local/cuda/lib64作者:凯恩博原文链接:https://zhuanlan.zhihu.com/p/137934049                          【转自凯恩博的学习笔记】 侵删
  • [AI大赛] [热身赛咨询][来自Armeria]PyTorch模型部署批量服务,出现输出格式问题【已解决】
    Armeria角色:成员话题:1发消息发表于前天 17:49 阅读134回复8 楼主 倒序浏览只看该作者[热身赛咨询]PyTorch模型部署批量服务,出现输出格式问题我在使用PyTorch框架部署批量服务时遇到了输出格式问题,提交模型后始终无法正确评分。以下提到的“输出文件”、“输出格式”都是指batchin.csv_result.txt文件中的内容。baseline的输出文件(baseline评分成功,但我用PyTorch框架做不到这种输出格式):{"data": {"resp_data": "{\"wuhe_zhangheng\": [1, 2, 3]}"}}比赛网页上的要求(没试过,PyTorch框架做不到这种输出格式):  {"data":{"resp_data":{"wuhe_zhangheng":[1, 2, 3]}}}若直接按照如下代码返回def _postprocess(self, result_data):      schema = json.loads('{"wuhe_zhangheng":[1,2,3]}')        return json.dumps(schema)发现输出文件仅有最里面的一层"{\"wuhe_zhangheng\": [1, 2, 3]}"。用真实预测数据替代[1, 2, 3],评分失败。但同样代码,baseline却可以输出完整的可评分的三层JSON文件。请问这是什么原因?让_postprocess直接返回完整的三层JSON,得到的输出文件(提交评分失败):"{"data": {"resp_data": {"wuhe_zhangheng": [1, 2, 3]}}}"我的config.json完全按照baseline设置,且输入都能正常解析。我的config代码见此: https://paste.ubuntu.com/p/VPTT6ZnrDs/请问应该如何解决这一问题?官方推荐使用torch,能否提供torch的参考模板?点赞举报分享Hiroid话题:0角色:成员发消息发表于前天 17:52 沙发只看该作者顶顶顶同求PyTorch的Baseline点赞评论引用举报云上AI角色:副盟主/导师话题:9发消息发表于前天 22:48 板凳只看该作者不同的框架,配置文件和推理代码写法不一样的,先研究下模型包规范:https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0091.html另外,这几个问题,可以好好看下:https://developer.huaweicloud.com/hero/forum.php?mod=viewthread&tid=51715点赞评论引用举报Armeria话题:1角色:成员发消息发表于前天 23:10 地板只看该作者回复:云上AI 发表于 2020-4-22 22:48 不同的框架,配置文件和推理代码写法不一样的,先研究下模型包规范:https://support.huaweicloud.com/engineers-modela老师好,您发的这些材料我都阅读过,我已经是按照PyTorch模型包规范写了配置文件和推理代码。除了最后的批量输出发生格式问题,之前的所有步骤(包括模型读取、数据预处理、预测等)都能正常跑通。我认为我的问题集中在这个表格(response结构)上。我的_postprocess函数确实按照config.json的设置返回了正确的schema(数值型数组),但batchin.csv_results.txt并没有遵循我在config.json中的设置的输出格式,导致评分失败。因为还有另一组用PyTorch的选手也出现了完全一样的情况,所以我觉得这可能是一个比较通性的问题,想问下怎么解决。点赞评论引用举报云上AI角色:副盟主/导师话题:9发消息发表于昨天 09:07 5#只看该作者回复:Armeria 发表于 2020-4-22 23:10 老师好,您发的这些材料我都阅读过,我已经是按照PyTorch模型包规范写了配置文件和推理代码。除了最后的批量输出发生格式问题,之前的所有步骤(包括模型读取、数据这个题之前有同学用pytorch做过,再仔细看下配置文件和推理代码编写规范,也可以多参考示例:https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0175.html如果都按照规范写了还是有问题,那应该就是数据后处理代码有问题,你可以根据日志来排查代码。点赞评论引用举报寒冬夜行人话题:1角色:成员发消息发表于昨天 10:24 6#只看该作者我也是同样的问题阿,,,有没有解决阿,,,,推理代码不停的出错,评分失败,推理代码改了40次,创建模型40个,部署40次,测试40次,每次要花好几分钟,,,,,一天的时间就浪费这在上面了,,,真是鸡肋,啊啊啊啊啊啊啊啊啊啊啊评论云上AI 6 小时前评论点赞,把模型包规范搞明白了。点赞评论引用举报寒冬夜行人话题:1角色:成员发消息发表于昨天 11:06 7#只看该作者回复:云上AI 发表于 2020-4-23 09:07 这个题之前有同学用pytorch做过,再仔细看下配置文件和推理代码编写规范,也可以多参考示例:https://support.huaweicloud.com/e我也是同样的问题,我按照这个范例编写了推理代码,但是仍然没有解决问题,评分仍然失败。按照赛事介绍中所说,_postprocess方法应该返回这个格式{"data":{"resp_data":{"wuhe_zhangheng":[1,4,5,6,4...]}}} ,类型为字符串。我也是按照这个格式返回的,模型的创建、部署和测试都没有问题,都能成功,就是评分失败,评分失败的原因是“判分作业运行失败。scoring job failed”。没有给出判分作业运行的具体的log,我们也不知道错在哪里,如何去改。。点赞评论引用举报Armeria角色:成员话题:1发消息发表于昨天 11:26 8#只看该作者回复:云上AI 发表于 2020-4-23 09:07 这个题之前有同学用pytorch做过,再仔细看下配置文件和推理代码编写规范,也可以多参考示例:https://support.huaweicloud.com/e这个代码我也参考了。我的config.json已经发在顶楼里了,完全按照标准配置的。数据后处理代码_postprocess把能试的写法都试了(全写在顶楼里了),但无论按照baseline写,还是按照比赛网页的要求写,全是评分失败,而且找不到哪里能看到评分详情。请问老师能否提供评分成功的config.json和数据后处理代码?不止一组PyTorch的队伍遇到相同问题无法解决了啊(哭点赞评论引用举报寒冬夜行人话题:1角色:成员发消息发表于昨天 15:10 9#只看该作者摸索了两天,终于判分成功了。这个问题也解决了。先上代码from model_service.pytorch_model_service import PTServingBaseServiceimport jsonimport pandas as pdfrom pandas import  to_datetimeimport numpy as npimport torchimport torch.nn.functional as Fimport torch.nn as nnimport logging logger = logging.getLogger(__name__)class Net(torch.nn.Module):     def __init__(self):         super(Net, self).__init__()         self.layer1 = nn.Linear(in_features=2, out_features=10, bias=True)         self.layer2 = nn.Linear(in_features=10, out_features=50, bias=True)         self.layer3 = nn.Linear(in_features=50, out_features=100, bias=True)         self.layer4 = nn.Linear(in_features=100, out_features=20, bias=True)         self.layer5 = nn.Linear(in_features=20, out_features=1, bias=True)     def forward(self, inputs):         outputs = F.logsigmoid(self.layer1(inputs))         outputs = F.logsigmoid(self.layer2(outputs))         outputs = F.logsigmoid(self.layer3(outputs))         outputs = F.logsigmoid(self.layer4(outputs))         outputs = F.logsigmoid(self.layer5(outputs))         return outputsclass user_Service(PTServingBaseService):     def __init__(self, model_name, model_path):         #print('begin to init')         logger.info("begin to init")         super(user_Service, self).__init__(model_name, model_path)         self.model_name = model_name         self.model_path = model_path         model = Net()         model.load_state_dict(torch.load(self.model_path))         self.model = model        print('model_name:', model_name)         print('model_path:', model_path)         #print('end to init')         logger.info("end to init")     def _preprocess(self, data):         logger.info("begin to pre process")         #print('begin to pre process')         print('data:',data)         days = data["req_data"][0].split(",")         df = pd.DataFrame(columns = ["weekday", "timeindex"])         for day in days:             timestamp = to_datetime(day, format="%Y-%m-%d")             df1 = pd.DataFrame({"weekday":(timestamp.dayofweek/6.0), "timeindex":(np.arange(300, 1256, 5))/(24 * 60.0)})             df = df.append(df1, ignore_index=True)         input_data = np.array(df, dtype=np.float32)         input_data = torch.tensor(input_data)         #print('end to pre process')         logger.info("end to pre process")         return input_data    def _inference(self, data):         #print('start to infer')         logger.info("start to infer")         predict = self.model(data)         #print('end to infer')         logger.info("end to infer")         return predict    def _postprocess(self, result_data):         predict = result_data.detach().numpy()         mean = 23.019272          std = 13.458502         predict = (predict * std) + mean         predict = np.reshape(predict, (predict.shape[0]))         predict = predict.tolist()         tmp = {"wuhe_zhangheng":''}         tmp["wuhe_zhangheng"] = predict         predict = json.dumps(tmp)         output = {"data":{"resp_data":''}}         output['data']['resp_data'] = predict        #output变量类型是一个dict对象,不是字符串         return output{     "model_algorithm": "traffic-prediction",     "model_type": "PyTorch",     "runtime": "python3.6",     "metrics": {},     "apis": [         {             "procotol": "http",             "url": "/",             "method": "post",             "request": {                 "Content-type": "applicaton/json",                 "data": {                     "type": "object",                     "properties": {                         "req_data": {                             "type": "array",                             "items": [                                 {                                     "type": "string"                                 }                             ]                         }                     }                 }             },             "response": {                 "Content-type": "applicaton/json",                 "data": {                     "type": "object",                     "properties": {                         "resp_data": {                             "type": "array",                             "items": [                                 {                                     "type": "number"                                 }                             ]                         }                     }                 }             }         }     ],     "dependencies": [         {             "installer": "pip",             "packages": [                 {                     "restraint": "",                     "package_version": "",                     "package_name": "numpy"                 },                 {                     "restraint": "",                     "package_version": "",                     "package_name": "pandas"                 }             ]         }     ] }这个问题主要的原因是_postprocess方法返回的类型和格式不对。1.类型_postprocess方法返回的output变量的类型是dict对象。我没有测试过将output转为str的情况,因为今天已经超过的提交评分的次数了,没法测试了,但是output为dict对象时,确实能评分成功。2.格式官方的赛事介绍里说明_postprocess返回的格式是{"data":{"resp_data":{"wuhe_zhangheng":[1,4,5,6,4...]}}},是一个json格式的字符串,我按照这个格式返回,测试过多次,仍然评分失败。但是实际上的格式应该为{"data":{"resp_data":'{"wuhe_zhangheng":[1,4,5,6,4...]}'}},注意主要的区别就是下划线部分,下划线部分因该是字符串,不是dict对象,将下划线部分用引号包起来就可以了。官方文档没说清楚,真是害死人,在论坛上问,又说代码问题,自行解决。这些东西花了两天时间一点一点猜,一点一点试,最后终于试出来了,如果推理代码能够方便的调试,根本能很快的解决。评论Armeria 昨天 15:35评论感谢!!Hiroid 10 小时前评论感谢!!!
  • [Atlas300] pytorch转到onnx-tensorflow-atlas,pb模型和om模型输出不一致,逐层查看发现每层误差比例都在扩大
    目前我们的模型从pytorch到tensorflow已验证输出一致,pb转om后模型输出不一致,逐层查看发现:1、第一层Pad,结果一致,误差1%左右,pb通道为NHWC,om通道为NCHWpb前几位非零:-0.244006 -0.244006 -0.244006 -0.226577 -0.226577 -0.226577om前几位非零:-0.243896 -0.243896 -0.243896 -0.226562 -0.226562 -0.2265622、第二层Conv2D(7*7),结果出现比例较大的误差,但整体趋势一致,误差20%左右pb前几位:-0.09175967 -0.01802125 -0.01953621 -0.01578322om前几位:-0.109680 -0.025513 -0.028305 -0.0239113、第三层Add,结果误差比例扩大,达到30%左右每层误差比例的放大和非线性影响,导致输出结果完全不一致了,请问这个是什么问题?需要怎么排查和修复?
  • [问题求助] 会支持Pytorch吗???
    Pytorch好用,但是Atlas200DK还不支持Pytorch模型,请问什么时候能支持呢?有这个计划没??
  • [交流分享] pytorch与图像分割--补充
    #化鲲为鹏,我有话说#针对自己的理解,希望能对大家有帮助。之前看到还有其他用户在分享关于pytorch的图像分割本文主要从:主要介绍另外两种不同的图像分割pytorch与图像分割--补充1.图像分割全景分割:它是语义分割和实例分割的结合。如下图所示,每个像素都被分为一类,如果一种类别里有多个实例,会用不同的颜色进行区分,我们可以知道哪个像素属于哪个类中的哪个实例。比如下图中黄色和红色都属于人这一个类别里,但是分别属于不同的实例(人),因此我们可以通过mask的颜色很容易分辨出不同的实例。实例分割:实例分割方式有点类似于物体检测,不过物体检测一般输出的是 bounding box,实例分割输出的是一个mask。实例分割和上面的语义分割也不同,它不需要对每个像素进行标记,它只需要找到感兴趣物体的边缘轮廓就行,比如下图中的人就是感兴趣的物体。该图的分割方法采用了一种称为Mask R-CNN的方法。我们可以看到每个人都是不同的颜色的轮廓,因此我们可以区分出单个个体。至此。
  • [中间件] 【华为云鲲鹏云服务最佳实践】【工具篇】第015期Pytorch-1.2.0 安装配置指南
    1、简介PyTorch是使用GPU和CPU优化的深度学习张量库。官方链接:https://pytorch.org/类别:中间件2、基础环境类别子项版本获取地址(方法)华为云华为云虚拟机RC3(916)--OSCentOS7.6Kernel4.14软件包Python2.7.5gcc-c++4.8.5wget1.14git1.8.3.1make3.82tar1.26注意:因升级gcc以及python的原因,本文档建议在docker或者chroot下进行操作。3、依赖安装升级gcc到8.3.0版本获取gcc-8.3.0发布包,并解压# wget http://mirror.hust.edu.cn/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz# tar -xf gcc-8.3.0.tar.gz安装依赖包# yum install -y gmp gmp-devel mpfr mpfr-devel   libmpc libmpc-devel编译安装# cd gcc-8.3.0# ./configure   -enable-checking=release -enable-languages=c,c++ -disable-multilib   --prefix=/usr/local/gcc-8.3.0#nohup make   &# make && make install # cp   /usr/local/gcc-8.3.0/lib64/libstdc++.so.6.0.25 /usr/lib64/# ln -sf libstdc++.so.6.0.25 /usr/lib64/libstdc++.so.6# ln -sf gcc /usr/local/gcc-8.3.0/bin/cc配置环境变量# export PATH_BAK=$PATH# export PATH=/usr/local/gcc-8.3.0/bin/:$PATH检查gcc是否升级成功# gcc --version显示如下信息说明升级成功: 安装Python3.6.8及其插件# yum install -y python36 python36-Cython   python36-devel python36-PyYAML python36-cffi python36-setuptools python36-pip# alias python=python3# pip3 install wheel安装cmake3以及其他依赖包# yum install -y cmake3 openblas-devel   blas-devel m4# ln -sf cmake3 /usr/bin/cmake4、组件编译安装下载pytorch源码,切换到1.2.0标签,并更新第三方代码库# git clone   https://github.com/pytorch/pytorch.git# cd pytorch;# git checkout v1.2.0 -b build# git submodule update --init --recursive编译安装# USE_CUDA=0 USE_DISTRIBUTED=0 USE_MKLDNN=0   BUILD_TEST=0 USE_NNPACK=0 USE_QNNPACK=0 MAX_JOBS=1 python setup.py install5、系统配置无6、测试测试内容:torch库是否可以正常加载并使用注:不要在pytorch目录下进行加载使用# python>>> import torch>>> print(torch.__version__)测试结果:torch可正常加载并使用7、参考信息      https://nmilosev.svbtle.com/compling-arm-stuff-without-an-arm-board-build-pytorch-for-the-raspberry-pihttps://pytorch.org/docs/stable/index.htmlhttps://discuss.pytorch.org/t/installing-pyttorch-on-arm-cortex-a9/26106https://sleef.org/8、FAQQ:为什么要升级gcc到8.3.0?A:pytorch第三方库sleef编译要求gcc版本高于5,否则将编译报错。Q:为什么要升级python到3.6版本?A:pytorch官网说明python2.7、python3.6均是支持的版本,只是参考文档均使用python3,因此此处沿用参考文档使用python3。Q:github说明编译pytorch时需要安装MKL,为什么本文档没有安装?A:MKL是Inter的数字核心函数库,ARM上不需要。Q:Pytorch编译时的环境变量设置的根据是什么?A:USE_CUDA:CUDA是显卡厂商NVIDIA推出的运算平台,lspci查看当前环境未查询到NVIDIA的显卡,因此将其设置为0,表示禁止使用;USE_DISTRIBUTED:该选项是各模块分布式训练功能的开关,暂且关闭,有该场景需要的情况下请打开;USE_MKLDNN:MKLDNN是inter特有的库,ARM不支持,因此关闭;BUILD_TEST:该选项是编译测试模块的开关,为减少多余操作,此处关闭;USE_NNPACK:是神经网络计算的加速包,官网显示其支持ARM64,由于是第三方额外功能,暂且关闭,当需要时可打开;USE_QNNPACK:是一种用于低精度高性能神经网络推理的移动优化库,主要应用于移动设备,因此关闭;MAX_JOBS=1:设置编译时的最大进程数,由于在github issues页面有人出现过由于为设置导致内存不够的情况而编译失败,因此将其设置为1。Q:pytorch编译安装时报如下错误:A:检查gcc和Python的版本是否是要求的版本,不是的话需要更换为指定版本;第一次在执行编译安装命令时,可能读取的是之前低版本的开始文件,升级之后,将之前文件删除,cd pytorch/build && rm * -rf,再次编译即可。Q:pytorch编译成功后,加载使用报错:A:检查当前执行的操作命令是否在pytorch目录下,如果是,退出该目录重新加载使用即可。(pytorch目录下正好有个torch目录,并且目录下也正好有个__init__.py,加载时会优先从当前目录查找,然后才是系统库)     
  • [问题求助] Atlas 200 DK是否支持pytorch、mxnet训练模型转换为离线模型
    最近想要找一个靠谱的深度学习硬件平台,刚接触Atlas 200 DK,对它的使用存在一定的疑问,希望获得解答:查看技术白皮书,指明是否支持Pytorch、Mxnet框架下的模型转换为Atlas支持的离线模型,如何操作?视频流输入仅支持2路树莓派摄像头吗,得到的树莓派视频流是什么格式的?如何支持usb摄像头输入?我学习过官网上的教程,上面提到Atlas 200 DK只能作为”从设备“,请问如何理解”从设备“这个名词?它可以用在实际的产品上吗?