-
MindStudio模型转换失败可能出现的原因有哪些?首先了解一下模型转换的原理。昇腾AI软件栈中的离线模型生成器(OMG)提供将第三方开源框架下已经生成的模型文件和权重文件转换成可以在昇腾AI处理器上独立运行的离线模型文件。本章节提供了通过Mind Studio进行模型转换和命令行方式进行模型转换两种方式。模型转换指导(Mind Studio方式)模型转换指导(命令行方式)OMG: 用户使用caffe/tensorflow等框架训练好的模型通过OMG工具将其转换为昇腾AI处理器支持的离线模型。 模型转换可以实现算子调度的优化、权重数据重排、量化压缩、内存使用优化,脱离设备完成模型的预处理。个人总结有以下几点原因:(如有补充,望大家评论补充)模型文件proto.txt和caffemodel文件必须配套。使用MindStudio转换模型,失败后根据提示将DetectionOutput换成SSDDetectionOutput。模型转换时出现不支持的算子。对于不支持的算子可采用自定义算子开发。DDK版本不对的原因。模型转换传入的宽高对齐参数与权重文件不一致、输入的个数填写错误。例如caffe文件没有满足caffe的算子边界约束。
-
ModelArts官网提供了多个最佳实践,支持图像分类、物体检测、NLP等场景,从GPU/CPU训练->昇腾310推理到昇腾910训练->昇腾310推理多种训练、推理场景。详情请点击博文链接:https://bbs.huaweicloud.com/blogs/159073
-
一、概述华为云ModelArts服务上线了新版的AI市场,官方发布了几个经典的神经网络算法,同时支持了使用A+K&Ascend910/310芯片进行训练和推理什么是ModelArts:一站式AI平台,你可以:管理数据,开发代码,训练网络,部署推理等等一系列的AI活动应有尽有什么是A+K:ARM+KunPeng的缩写,集群使用Arm架构和鲲鹏处理器。什么是Ascend 910/310芯片:两款采用达芬奇架构的Ascend(昇腾)系列AI芯片,即Ascend 910(华为昇腾910)和Ascend 310(华为昇腾310),分别用于训练和推理,Ascend910芯片是目前单芯片计算密度最大的芯片。详情请点击博文链接:https://bbs.huaweicloud.com/blogs/158092
-
华为云ModelArts昇腾集群公测申请流程ModelArts华为云昇腾集群服务,基于昇腾910芯片,以云的方式提供充裕且经济的AI算力,支撑更多科研探索及行业AI应用。通过软硬件技术协同,华为云致力解决AI应用过程中面临的“贵”和“难”的问题,降低AI应用门槛,实现得起,用得好,用得放心的普惠AI,助力可持续发展。本次对外开放友好用户公测:本次公测提供如下新特性:1、 基于鲲鹏+昇腾910的NPU计算节点2、 提供基于昇腾的TensorFlow 1.15 和MindSpore-0.1 预制AI引擎3、 提供若干个基于昇腾预制算法/模型(通过AI市场订阅获得)详情请点击博文链接:https://bbs.huaweicloud.com/blogs/157026
-
7月9日,世界人工智能大会(WAIC)2020云端峰会盛大召开。此次大会以“智联世界,共同家园”为主题,以“高端化、国际化、专业化、市场化、智能化”为特色,集聚全球智能领域最具影响力的科学家、企业家、行业合作伙伴、以及相关政府机构领导人,围绕人工智能领域的技术前沿、产业趋势和热点问题发表演讲和高端对话。华为公司董事、CIO陶景文出席并做《共建开放生态,使能万物互联的智能世界》主题发言,分享了华为公司在智能化转型过程中的成功实践和经验,呼吁通过产业合作,共建开放生态,使能万物互联的智能世界。陶景文在世界人工智能大会上发表演讲第四次工业革命已来人类将加速进入万物互联的智能世界陶景文指出,随着新技术的不断涌现,第四次工业革命已来,这其中蕴含了巨大的数字化机会。5G+AI+云+工业互联网,多技术融合驱动产业变革,人类正加速进入万物互联的智能世界。在巨大的产业机遇面前,需要全球各产业伙伴和利益相关方,以更加开放的态度,共同协作,共享智能化转型的产业红利。华为智能化实践,使能千行百业+智能陶景文介绍,华为作为一家技术创新公司,基于5G、AI、云等技术,与生态伙伴一起,面向消费者和行业客户,提供智能化产品与解决方案,使能客户智能。同时,自己的降落伞自己跳,华为聚焦自身内部重复、海量、复杂的场景,通过企业场景、算力、算法、数据四位一体,实现企业效率提升、体验提升、模式创新,打造产品创新和企业智能化转型试验田。加强数字主权,促进数据开放智能致善,与产业伙伴共建开放智能生态陶景文强调,华为在内、外部智能化实践中充分认识到数字主权的重要性与必要性。个人、企业、国家,不同层面,有个人隐私、企业机密、国家安全的客观诉求,华为积极支持各国的数字主权主张,做好数据主权保护。通过“建墙”和“开门”,保障数据安全有序的流通,有效促进数据开放,共建开放、有序的智能世界。构建智能世界的构建是一项需要全球政府、企业、用户共同参与的伟大事业。秉持有序、共识、合作,华为愿与客户、伙伴共建开放生态,使能万物互联的智能世界!华为多位嘉宾深度参与WAIC大会此次大会,华为昇腾计算业务总裁许映童、昇腾计算业务CTO周斌、公共开发部总裁鲁鸿驹,华为云EI医疗首席科学家乔楠出席,深度参与产业发展主论坛、风云际会直播间(企业家访谈)、AI新基建、5G新机遇论坛等核心环节,分享全场景智能时代,AI如何助力千行百业实现智能化转型。华为昇腾计算业务部总裁许映童表示:“华为Atlas人工智能计算解决方案为覆盖端边云的AI全场景提供服务。在数据中心侧,Atlas 900 AI集群所提供超强算力,使得诸如天文探索、气象预测、石油勘探、基因研究等计算量巨大的研究课题可以通过AI得以大幅加速,最终造福人类。在边缘侧,我们和广大合作伙伴一起提供输电智能运检、智慧营业厅、医疗影像AI诊断、制造AI质检等系列解决方案,让各行业都可以简单、快捷的使用AI,让智能无所不及。”
-
用开发板跑了一下,好像要达到16路流畅解码很难,没过几分钟16路中就会有好几路卡死。请问这个怎么优化?
-
昇腾310(D芯片)算法模型转换移植讲解录屏
-
关于码豆发放的特别通知!关于码豆发放的特别通知!为保证您顺利领取码豆,请您至少登录一次DevCloud会员中心https://devcloud.huaweicloud.com/bonususer/home。如您修改过用户名还请一并提供修改前的以及最新的用户名。详情请咨询版主或添加小助手微信(Huawei-HDZ)备注“补发码豆”,反馈时间截至2020年8月1日,如您在此之前没有反馈,视为自动放弃获奖资格。直播时间2020年 6月18日 16:00-17:00回看直播 请戳我>>传送门直播简介昇腾云服务是华为云推出的AI推理加速云服务器,是基于单卡4芯的Atlas 300的AI加速卡构建的,算力强劲;本课程将带领开发者全流程体验如何在昇腾AI1型云服务器上构建一个目标检测应用。 本次直播讲解1. 人工智能应用场景与华为AI解决方案2. 昇腾软件栈;3. 目标检测应用整体开发流程4. 云端实验:使用昇腾ECS实现目标检测应用专家介绍直播有奖互动1)预约直播得100码豆【点击这里】,前往预约页面,填写报名资料,登录2)观看直播幸运抽大奖观看直播过程中,小助手随机选取优质互动 数据线、HDZ笔记本等你拿3)参与微话题讨论赢HUAWEI 手表直接在本帖回复关于以下问题的理解或评论。1. DVPP和AIPP各有什么功能,有什么区别和联系?2. 你希望能够用昇腾处理器来实现一个什么样的实际应用?该如何实现?当发帖盖楼人数>10人时由专家评选出5名优秀开发者,分别抽取 一等奖*1 HUAWEI WATCH GT 2(运动款 曜石黑)二等奖 *1 荣耀手环5i三等奖*3 2000码豆(本话题回复时间截止 6月25日 24时)注意事项 1、活动的中奖名单和码豆奖励名单将于话题结束后3天完成公示,全部活动结束后统一发放,请提前登录DevCloud会员中心了解码豆;2、本次< HDZ summit 2020 >活动发放的码豆奖励将在2020年9月1日0点失效;3、本活动最终解释权归华云所有。4、其他事宜请参考【开发者市集活动规则】 更多精彩活动 参与云端实验训战营“盖楼发帖”赢取华为手机+平板中奖名单公布一等奖 HUAWEI WATCH GT 2(运动款 曜石黑)*1孙小北二等奖 荣耀手环5i 陨石黑 *1帕加尼风之子8866三等奖 2000码豆 *3LostArtemisSuperu殇秦一等奖,二等奖用户请注意查看站内私信,三等奖用户,码豆将在全部活动结束后统一发放
-
### 这一版本ModelArts带来的关键字是 **普惠** 和 **MindSpore加持的昇腾全栈**欢迎大家速速登录 [控制台](https://console.huaweicloud.com/modelarts/?locale=zh-cn&utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605#/dashboard) 体验,详细文档请访问 [此处](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_10_0023.html?utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605) * 普惠:众所周知,AI开发过程中算力成本消耗巨大,使得很多人在一开始就望而却步。本着 “**惠及普通开发者、活跃AI开发生态**” 的原则,华为云ModelArts平台在这一版本推出了一系列的超优惠规格。从面向体验用户的[0元体验套餐](https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0229.html?utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605),到面向个人开发者的[1折超低折扣](https://activity.huaweicloud.com/2020ModelArts_Promotion.html?utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605),再到面向中小企业的[8卡年包](https://console.huaweicloud.com/modelarts/?region=cn-north-4&locale=zh-cn&utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605#/dashboard/promotionalPackageWindow),无不体现了ModelArts平台的普惠原则和面向普通开发者的谆谆诚意。 * MindSpore&昇腾:AI芯片自主之路荆棘满布,但我们从未退缩,因为只有如此,我们才能不受制于人,才能在未来以更低的成本去探索奇妙的AI世界。伴随着华为自研AI框架MindSpore与昇腾全栈的首次联合发布,ModelArts平台对昇腾芯片及其开发生态的支持不断加强,ModelArts提供多款支持昇腾系列的预置神经网络算法,这些算法经过华为ModelArts专家们的精心优化,以高精度、高执行效率为标准细致打磨而成。其中昇腾910系列可为用户解决图像分类和物体检测两大类模型训练场景;昇腾310系列可应用于图像分类、物体检测、图像分割、NLP等常用深度学习领域高性能推理场景。 ### 【新增特性】 * 新增多种普惠规格套餐:[链接](https://activity.huaweicloud.com/2020ModelArts_Promotion.html?utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605) * 新增**免费体验规格**,支持创建CPU、GPU的免费体验Notebook和训练任务、在线部署等,单次体验限时1小时(到时自动停止),单日内可反复体验。如遇体验用户过多有可能会引起排队,且排队机制会向新体验用户有所倾斜 * 新增**1折按需套餐包**,支持ModelArts全流程的GPU体验,是入门者经济实惠的不二之选 * 开发环境增强:开发环境提供大量升级,包括但不限于JupyterLab的引入、引擎新增TF2.1,对ModelArts多种基础能力的集成以及若干体验改进。 * PyCharm ToolKit 2.0:支持训练使用专属资源池、多训练作业提交、文件上传,下载能力、支持pycharm2019.2及以上 * AI市场新增对算法发布、订阅的支持 * 昇腾芯片新增多个算法:提供支持“物体检测”、“图像分类”、“文本分类”3种场景的多个预置算法(昇腾910训练和昇腾310推理),详细算法列表请参阅[链接](https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0248.html?utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605),更多端到端应用案例参见[链接](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_10_0023.html?utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605) * 难例挖掘新增5个算法和针对物体检测场景的提升: 新增基于数据增强、数据特征分布、自适应聚类的算法,提升物体检测的难例挖掘精度30%。 * 新增结构化数据集支持:数据集管理支持表格型数据,本期支持导入和发布csv,更多格式(e.g. parquet)将在未来的版本支持 * 训练自定义基础镜像增加CUDA10支持,满足用户灵活使用高版本的TF/Pytorch等框架诉求 * 预置框架支持TenorFlow 2.1 ### 【优化变更】 * 多元搜索内核优化:新增fix\_norm超参搜索、adv_aug数据增强、betanas等多种NAS方法,达到ImageNet上mobile setting下79%业界最佳精度,支持最低5行代码即可享用多元搜索能力。 * 难例挖掘体验优化:支持难例挖掘的日志优化、推理侧难例挖掘体验优化设计。 * 数据集管理体验优化: 数据集管理与数据标注任务管理分离,用户可面向同一数据集同时启动多个数据处理任务 * 开发环境:支持JupyterLab,提供体验更好的开发环境;Notebook实例增加“创建者”标识,对于子账号共享工作空间下不同用户可以快速的识别出自己创建的实例;支持在Notebook/JupyterLab中查看内存和CPU占用情况 * 支持 step by step 的ModelArts使用体验案例,引导用户快速理解产品基本能力 * 支持内嵌的产品使用指南,让用户不需要跳出使用页就可以找到相关的指导 ### 【算法、框架支持总览】 * 官方预置算法 | 名称 | 用途 | 训练引擎 | 训练芯片 | 推理引擎 | 推理芯片| | :-: | :-: | :-: | :-: | :-: | --- | | [YOLO_V3_ResNet_18](https://console.huaweicloud.com/modelarts/?region=cn-north-4&utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605#/aiMarket/aiMarketModelDetail/overview?modelId=7087008a-7eec-4977-8b66-3a7703e9fd22&type=algo) | 物体检测 | Ascend-Powered-Engine TF-1.15-aarch64-cp37 | Ascend-910 | MindSpore | Ascend-310* | | [YOLO_V3_ResNet_18](https://console.huaweicloud.com/modelarts/?region=cn-north-4&utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605#/aiMarket/aiMarketModelDetail?modelId=948196c8-3e7a-4729-850b-069101d6e95c&type=algo) | 物体检测 | Tensorflow-1.13.1-python3.6 | GPU | MindSpore | Ascend-310* | | [Faster_RCNN_ResNet_V1_50](https://console.huaweicloud.com/modelarts/?region=cn-north-4&utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605#/aiMarket/aiMarketModelDetail/overview?modelId=198573e9-b2a9-46ef-aca9-51cc651b6364&type=algo) | 物体检测 | Tensorflow-1.13.1-python3.6-horovod | GPU | TF-Serving | GPU | | [RetinaNet_ResNet_V1_50](https://console.huaweicloud.com/modelarts/?region=cn-north-4&utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605#/aiMarket/aiMarketModelDetail/overview?modelId=d965a19d-62e6-4a07-bb02-3db57ccf9c98&type=algo) | 物体检测 | Tensorflow-1.13.1-python3.6 | GPU | TF-Serving /MindSpore | GPU /Ascend-310* | | [Inception_V3](https://console.huaweicloud.com/modelarts/?region=cn-north-4&utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605#/aiMarket/aiMarketModelDetail?modelId=cad65a02-ef22-46e1-bd5b-01f231da9272&type=algo) | 图像分类 | Tensorflow-1.13.1-python3.6-horovod | GPU | TF-Serving /MindSpore | GPU /Ascend-310* | | [ResNet_V1_50](https://console.huaweicloud.com/modelarts/?region=cn-north-4&utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605#/aiMarket/aiMarketModelDetail/overview?modelId=40b66195-5bbe-463d-b8a2-03e57073538d&type=algo) | 图像分类 | Tensorflow-1.13.1-python3.6-horovod | GPU | TF-Serving /MindSpore | GPU /Ascend-310* | | [ResNet_V1_50](https://console.huaweicloud.com/modelarts/?region=cn-north-4&utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605#/aiMarket/aiMarketModelDetail/overview?modelId=fb03c9e2-bd5a-49e6-8455-af8ab2f5f788&type=algo) | 图像分类 | Ascend-Powered-Engine TF-1.15-aarch64-cp37 | Ascend-910 | TF-Serving /MindSpore | GPU /Ascend-310* | | [ResNet_V1_101](https://console.huaweicloud.com/modelarts/?region=cn-north-4&utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605#/aiMarket/aiMarketModelDetail?modelId=e1d362e1-7162-4931-8b48-c10b44c47cff&type=algo) | 图像分类 | Tensorflow-1.13.1-python3.6-horovod | GPU | TF-Serving /MindSpore | GPU /Ascend-310* | | [MobileNet_V1](https://console.huaweicloud.com/modelarts/?region=cn-north-4&utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605#/aiMarket/aiMarketModelDetail?modelId=9630c28e-1ca6-4d0e-9c31-1bee1198ba45&type=algo) | 图像分类 | Tensorflow-1.13.1-python3.6-horovod | GPU | TF-Serving /MindSpore | GPU /Ascend-310* | | [MobileNet_V2](https://console.huaweicloud.com/modelarts/?utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605#/aiMarket/aiMarketModelDetail?modelId=0470e6b1-923b-47a8-ba3e-fe93de5ae2a0&type=algo) | 图像分类 | Tensorflow-1.13.1-python3.6-horovod | GPU | TF-Serving /MindSpore | GPU /Ascend-310* | | [ResNet_V2_50](https://console.huaweicloud.com/modelarts/?region=cn-north-4&utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605#/aiMarket/aiMarketModelDetail/overview?modelId=c537e9b9-a2be-4318-9be7-e223ef95d5a5&type=algo) | 图像分类 | Ascend-Powered-Engine TF-1.15-aarch64-cp37 | Ascend-910 | TF-Serving /MindSpore | GPU /Ascend-310* | | [ResNet_V2_101](https://console.huaweicloud.com/modelarts/?region=cn-north-4&utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605#/aiMarket/aiMarketModelDetail?modelId=abeae53a-f1f4-45b7-b6b5-fa975b343b98&type=algo) | 图像分类 | Tensorflow-1.13.1-python3.6-horovod | GPU | TF-Serving /MindSpore | GPU /Ascend-310* | | [Bert_based_Text_Classifier](https://console.huaweicloud.com/modelarts/?region=cn-north-4&utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605#/aiMarket/aiMarketModelDetail/overview?modelId=bce58703-4a50-451f-a262-eff9aa8d640c&type=algo) | 文本分类 | Tensorflow-1.13.1-python3.6 | GPU | TF-Serving /MindSpore | GPU /Ascend-310* | | [Sound_Classifier](https://console.huaweicloud.com/modelarts/?region=cn-north-4&utm_source=huaweiyun&utm_medium=ruanwen&utm_campaign=modelarts&utm_content=releasenote&utm_term=MA0605#/aiMarket/aiMarketModelDetail/overview?modelId=6889bd98-b49d-4953-8c2f-15b6b9320a40&type=algo) | 声音分类 | Tensorflow-1.13.1-python3.6 | GPU | TF-Serving | GPU | \* 注:部分算法训练出的模型需要转换后才能在D310芯片上部署* 开发环境框架支持 | 框架名称 | 版本 | Python版本 |芯片| 备注 | | :-: | :-: | :-: | :-: | :-: | | TensorFlow | 1.8, 1.13.1 | 2.7, 3.6 | CPU,GPU| - | | TensorFlow | 2.1| 3.6 | GPU| - | | TensorFlow | 1.15.0| 3.7 |Ascend 910| - | | MindSpore | 0.1| 3.7 | Ascend 910| - | | MXNet| 1.2.1 | 2.7, 3.6 | CPU,GPU| - | | Caffe| 1.0.0 | 2.7 | CPU,GPU| - | | PySpark| 2.3.2 | 2.7, 3.6 | CPU | - | | XGBoost-Sklearn| XGBoost0.80, Sklearn0.20.0 | 2.7, 3.6 | CPU | - | | Conda|5.0.1 | 2.7 | CPU,GPU| - | | Conda|5.1.0 | 3.6 | CPU,GPU| - | | Pytorch | 1.0.0 | 2.7, 3.6 | GPU | - |* 训练作业框架支持 | 框架名称 | 版本 | Python版本 | 芯片 | 备注 | | :-: | :-: | :-: | :-: | :-: | | TensorFlow | 1.8, 1.13.1| 2.7, 3.6 | GPU | - | | TensorFlow | 2.1 | 3.6 | GPU | - | | TensorFlow | 1.15.0 | 3.7 | Ascend 910 | - | | MindSpore | 0.1 | 3.7 | Ascend 910 | - | | Pytorch | 1.0, 1.3 | 2.7, 3.6 | GPU | - | | Caffe | 1.0 | 2.7 | GPU | - | | MXNet | 1.2.1 | 2.7, 3.6 | GPU | - | | Ray | 0.7.4 | 3.6 | GPU | - |
-
如何自定义昇腾芯片支持的op呢?求解!!!!
-
怎么申请昇腾集群的公测?怎么申请昇腾集群的公测?
-
ModelArts 支持昇腾Ascend芯片的预置AI算法列表持续更新中.... 目前主要有两大类1、GPU训练 -> CPU/GPU/Ascend 310 推理,已经涵盖了图像分类、物体检测、文本分类、声音分类等常用的深度学习网络模型2、Ascend 910训练 -> Ascend 310推理,已经支持图像分类,物体检测详细官网操作指导链接: https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0248.html截止 2020-5-19 的支持列表如下图:
-
· 深度:被非线性层隔开的非线性层的个数 · 卷积层作用:特征抽取 · 卷积的起始:一般不会直接从图片的左上角开始,而是会在图像外围加一圈后从新的左上角开始卷积,这样做保证了层大小的一致,在数字图像处理的卷积操作里也有类似操作。 · 池化(pooling)层:整合归纳到单个神经元,分为平均池化average/最大池化max两类 · 感受野:一个神经元能够“看到”多大范围的输入图片,计算感受野的时候要注意卷积运算的重合部分。 · 例子:AlexNet,从五层到八层的巨大飞跃,打破桎梏,真正进入了深度学习的时代。 · 更深还是更宽?:变深比较重要,变宽没那么重要。增宽的学习效率是线性增长,而加深的学习效率是几何式增长。有论文论证了深度的重要作用。 · 新手入门的推荐方法:网上找来代码去跑通。先熟悉/找感觉,再进行更多的学习。 · 训练方法的变化:随机梯度下降/设置学习率。 · 主要问题:数值不稳定性/过拟合/欠拟合/信息流问题。针对这些问题有各种各样的解决方案。ReLU/Dropout/SkipConnections · 自动化设计?我们正在朝这个方向努力:深度学习自动化。 · 深度学习图像分类的最优性能:测试集错误率近几年持续下降,目前已经降到比较低的水平。还有数据量受限的情况下的错误率,也在逐渐进步。 · 深度学习绝对不是我们的终点,深度学习是一块里程碑,是我们学习道路上不可缺少的工具。 · s型函数的饱和区太大了,还会出现梯度消失的问题,非常让人头疼。ReLU是现在最常用的激活函数,最有用的激活函数尚无定论。
-
作者:Jeff Ding原文链接:https://zhuanlan.zhihu.com/p/137904741 好文分享,侵删前两天参加Mindspore五一两日头孢封闭课活动拿到了华为昇腾集群服务公测,在这里感谢一下Mindspore。今天一早起来就收到了华为云“ModelArts华为云昇腾集群服务”公测活动优选用户审核通过的邮件,所以立马就计划试一下利用华为昇腾跑一下ResNet50Cifar10的任务吧。看看使用华为Ascend运行一下会是什么速度。虽然公测拿到的资源只有单机单卡,个人感觉应该要比显卡要给力一点,试试看在说吧。ResNet50Cifar10前几天活动中在2080Ti的显卡环境下epoch=10差不多运行了半个小时多点,这次看看在华为晟腾平台需要运行多少时间吧。纯属无聊写的运行配置随记,可能有些技术点存在一些的错误的地方,还望见谅和提出。代码来源:码云:https://gitee.com/mindspore/mindsporegithub:https://github.com/mindspore-ai/mindsporeMindspore源代码仓库中的example/resnet50_cifar10目录下。要在Ascend上运行需要对train.py ,eval.py,datasets.py进行一下修改,具体操作可以参考Mindspore B站的一个视频视频链接:https://www.bilibili.com/video/BV1nK4y1b7X2这个视频对于如何在华为Ascend上部署和运行也有讲解。一、环境部署过程首先我们先把需要的数据和程序代码上传到华为云的OBS桶中。通过管理控制台->服务列表->-OBS对象存储服务器来创建一个新的桶基本不需要改动什么设置,区域选择这边选择北京-4,因为后面Ascend平台也是在北京-4里面运行,个人感觉这样设置可能好一点吧,桶名称设置一下,我这边设置的是:resnet50cifar10-20200501(本来想简单点的,结果提示重名了,只能这么设置了。设置完通后开始上传文件,我们先设置了2个文件夹:data和codedata:存放数据code:存放代码在data文件夹中上传cifar10的二进制(CIFAR-10 binary version (suitable for C programs)Cifar10的数据库下载地址:http://www.cs.toronto.edu/~kriz/cifar.htmldata目录中我们再建立四个目录:train:存放训练数据eval:存放验证数据log:存放日志output:存放输出文件数据集下载完成后解压,将databatch*.bin的文件上传到train目录中,将test_batch.bin上传到eval文件夹中。到这里,数据集的工作就完成了。通过管理控制台->服务列表->ModerArts创建作业,注意这里只有选择北京四才会有Ascend平台,按照提示填写作业名称等参数,需要使用Ascend平台的话,在创建作业的算法来源中选择常用框架,然后在AI引擎这边选择Ascend Powered Engine,后面就Mindspore-0.1,代码目录这边选择在华为云上创建的OBS桶中的code文件夹数据来源选择数据存储位置,然后位置选择OBS桶中的train目录,然后输出位置选择output文件夹,日志路径选择log文件夹,整体的配置就是图上。全都完成后点击提交,系统就会开始运行了。二、主要执行代码我把我根据视频讲解修改后的代码块贴上来,主要是配合昇腾运行环境改了一些参数train.py# Copyright 2020 Huawei Technologies Co., Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ============================================================================ """train_imagenet.""" import os import argparse import random import numpy as np from dataset import create_dataset from lr_generator import get_lr from config import config from mindspore import context from mindspore import Tensor from mindspore.model_zoo.resnet import resnet50 from mindspore.parallel._auto_parallel_context import auto_parallel_context from mindspore.nn.optim.momentum import Momentum from mindspore.nn.loss import SoftmaxCrossEntropyWithLogits from mindspore.train.model import Model, ParallelMode from mindspore.train.callback import ModelCheckpoint, CheckpointConfig, LossMonitor, TimeMonitor from mindspore.train.loss_scale_manager import FixedLossScaleManager import mindspore.dataset.engine as de from mindspore.communication.management import init import moxing as mox random.seed(1) np.random.seed(1) de.config.set_seed(1) parser = argparse.ArgumentParser(description='Image classification') #parser.add_argument('--run_distribute', type=bool, default=False, help='Run distribute') #parser.add_argument('--device_num', type=int, default=1, help='Device num.') parser.add_argument('--do_train', type=bool, default=True, help='Do train or not.') parser.add_argument('--do_eval', type=bool, default=False, help='Do eval or not.') parser.add_argument('--data_url', type=str, default=None, help='Dataset path') parser.add_argument('--train_url', type=str, default=None, help='Train output path') #parser.add_argument('--dataset_path', type=str,default=None,help='Dataset path') args_opt = parser.parse_args() device_id = int(os.getenv('DEVICE_ID')) device_num = int(os.getenv('RANK_SIZE')) context.set_context(mode=context.GRAPH_MODE, device_target="Ascend", save_graphs=False) context.set_context(enable_task_sink=True, device_id=device_id) context.set_context(enable_loop_sink=True) context.set_context(enable_mem_reuse=True) local_data_url = '/cache/data' local_train_url = '/cache/ckpt' if __name__ == '__main__': if args_opt.do_eval: context.set_context(enable_hccl=False) else: if device_num > 1: context.set_context(enable_hccl=True) context.set_auto_parallel_context(device_num=device_num, parallel_mode=ParallelMode.DATA_PARALLEL, mirror_mean=True) auto_parallel_context().set_all_reduce_fusion_split_indices([107, 160]) init() local_data_url = os.path.join(local_data_url,str(device_id)) else: context.set_context(enable_hccl=False) mox.file.copy_parallel(args_opt.data_url,local_data_url) epoch_size = config.epoch_size net = resnet50(class_num=config.class_num) loss = SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean') if args_opt.do_train: dataset = create_dataset(dataset_path=local_data_url, do_train=True, repeat_num=epoch_size, batch_size=config.batch_size) step_size = dataset.get_dataset_size() loss_scale = FixedLossScaleManager(config.loss_scale, drop_overflow_update=False) lr = Tensor(get_lr(global_step=0, lr_init=config.lr_init, lr_end=config.lr_end, lr_max=config.lr_max, warmup_epochs=config.warmup_epochs, total_epochs=epoch_size, steps_per_epoch=step_size, lr_decay_mode='poly')) opt = Momentum(filter(lambda x: x.requires_grad, net.get_parameters()), lr, config.momentum, config.weight_decay, config.loss_scale) model = Model(net, loss_fn=loss, optimizer=opt, loss_scale_manager=loss_scale, metrics={'acc'}) time_cb = TimeMonitor(data_size=step_size) loss_cb = LossMonitor() cb = [time_cb, loss_cb] if config.save_checkpoint and (device_num == 1 or device_id == 0): config_ck = CheckpointConfig(save_checkpoint_steps=config.save_checkpoint_steps, keep_checkpoint_max=config.keep_checkpoint_max) ckpt_cb = ModelCheckpoint(prefix="resnet", directory=local_train_url, config=config_ck) cb += [ckpt_cb] model.train(epoch_size, dataset, callbacks=cb) if config.save_checkpoint and (device_num == 1 or device_id == 0): mox.file.copy_parallel(local_train_url,args_opt.train_url)dataset.py:# Copyright 2020 Huawei Technologies Co., Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ============================================================================ """ create train or eval dataset. """ import os import mindspore.common.dtype as mstype import mindspore.dataset.engine as de import mindspore.dataset.transforms.vision.c_transforms as C import mindspore.dataset.transforms.c_transforms as C2 from config import config def create_dataset(dataset_path, do_train, repeat_num=1, batch_size=32): """ create a train or eval dataset Args: dataset_path(string): the path of dataset. do_train(bool): whether dataset is used for train or eval. repeat_num(int): the repeat times of dataset. Default: 1 batch_size(int): the batch size of dataset. Default: 32 Returns: dataset """ device_num = int(os.getenv("RANK_SIZE")) rank_id = int(os.getenv("DEVICE_ID")) if device_num == 1: ds = de.Cifar10Dataset(dataset_path, num_parallel_workers=4, shuffle=True) else: ds = de.Cifar10Dataset(dataset_path, num_parallel_workers=4, shuffle=True, num_shards=device_num, shard_id=rank_id) resize_height = config.image_height resize_width = config.image_width rescale = 1.0 / 255.0 shift = 0.0 # define map operations random_crop_op = C.RandomCrop((32, 32), (4, 4, 4, 4)) random_horizontal_flip_op = C.RandomHorizontalFlip(rank_id / (rank_id + 1)) resize_op = C.Resize((resize_height, resize_width)) rescale_op = C.Rescale(rescale, shift) normalize_op = C.Normalize([0.4914, 0.4822, 0.4465], [0.2023, 0.1994, 0.2010]) change_swap_op = C.HWC2CHW() trans = [] if do_train: trans += [random_crop_op, random_horizontal_flip_op] trans += [resize_op, rescale_op, normalize_op, change_swap_op] type_cast_op = C2.TypeCast(mstype.int32) ds = ds.map(input_columns="label", operations=type_cast_op) ds = ds.map(input_columns="image", operations=trans) # apply shuffle operations ds = ds.shuffle(buffer_size=config.buffer_size) # apply batch operations ds = ds.batch(batch_size, drop_remainder=True) # apply dataset repeat operation ds = ds.repeat(repeat_num) return dseval.py# Copyright 2020 Huawei Technologies Co., Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ============================================================================ """ eval. """ import os import argparse import random import numpy as np from dataset import create_dataset from config import config from mindspore import context from mindspore.model_zoo.resnet import resnet50 from mindspore.parallel._auto_parallel_context import auto_parallel_context from mindspore.nn.loss import SoftmaxCrossEntropyWithLogits from mindspore.train.model import Model, ParallelMode from mindspore.train.serialization import load_checkpoint, load_param_into_net import mindspore.dataset.engine as de from mindspore.communication.management import init import moxing as mox random.seed(1) np.random.seed(1) de.config.set_seed(1) parser = argparse.ArgumentParser(description='Image classification') parser.add_argument('--do_train', type=bool, default=False, help='Do train or not.') parser.add_argument('--do_eval', type=bool, default=True, help='Do eval or not.') parser.add_argument('--checkpoint_path', type=str, default=None, help='Checkpoint file path') parser.add_argument('--data_url', type=str, default=None, help='Dataset path') parser.add_argument('--train_url', type=str, default=None, help='Train output path') args_opt = parser.parse_args() device_id = int(os.getenv('DEVICE_ID')) context.set_context(mode=context.GRAPH_MODE, device_target="Ascend", save_graphs=False) context.set_context(enable_task_sink=True, device_id=device_id) context.set_context(enable_loop_sink=True) context.set_context(enable_mem_reuse=True) local_data_url = '/cache/data' local_ckpt_url = '/cache/ckpt' if __name__ == '__main__': context.set_context(enable_hccl=False) if args_opt.checkpoint_path: checkpoint_file=os.path.join(local_ckpt_url,os.path.split(args_opt.checkpoint_path)[1]) mox.file.copy_parallel(args_opt.data_url,local_data_url) mox.file.copy_parallel(args_opt.checkpoint_path,checkpoint_file) epoch_size = config.epoch_size net = resnet50(class_num=config.class_num) loss = SoftmaxCrossEntropyWithLogits(sparse=True) if args_opt.do_eval: dataset = create_dataset(dataset_path=local_data_url, do_train=False, batch_size=config.batch_size) step_size = dataset.get_dataset_size() if args_opt.checkpoint_path: param_dict = load_checkpoint(checkpoint_file) #根据实际作业文件名修改local_ckpt_url load_param_into_net(net, param_dict) net.set_train(False) model = Model(net, loss_fn=loss, metrics={'acc'}) res = model.eval(dataset) print("result:", res, "ckpt=", args_opt.checkpoint_path)三、运行结果Ascend平台单机单卡运行resnet50cifar10,epoch设为90如果需要调参的话,参数都在config.py中,这次运行的config.py参数如下图:执行时间:48分38秒,平均每个epoch用时20秒左右train.py执行完毕后,执行eval.py进行验证。最终结果: result: {'acc': 0.9387019230769231} ,用时1分30秒。经过小伙伴的提醒,这个不一定是模型训练最优的数值,其实有时间的话可以把生成的每个checkpoint都验证一遍,取最佳值。闲来无事读取了一下日志中最小的LOSS值的那个CKPT文件后的ACC值四、train和eval结合将train.py和eval.py结合,实现训练完毕后马上验证。主要的思路就是增加一个model.eval(),然后增加验证数据集的create_dataset代码行。把原先的路径加上os.path.join()使得能够区分train训练数据集还是eval验证数据集。同样在配置的时候需要将数据集目录指定到train和eval的上一级目录即可。代码如下:# Copyright 2020 Huawei Technologies Co., Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ============================================================================ """train_imagenet.""" import os import argparse import random import numpy as np from dataset import create_dataset from lr_generator import get_lr from config import config from mindspore import context from mindspore import Tensor from mindspore.model_zoo.resnet import resnet50 from mindspore.parallel._auto_parallel_context import auto_parallel_context from mindspore.nn.optim.momentum import Momentum from mindspore.nn.loss import SoftmaxCrossEntropyWithLogits from mindspore.train.model import Model, ParallelMode from mindspore.train.callback import ModelCheckpoint, CheckpointConfig, LossMonitor, TimeMonitor from mindspore.train.loss_scale_manager import FixedLossScaleManager import mindspore.dataset.engine as de from mindspore.communication.management import init import moxing as mox random.seed(1) np.random.seed(1) de.config.set_seed(1) parser = argparse.ArgumentParser(description='Image classification') #parser.add_argument('--run_distribute', type=bool, default=False, help='Run distribute') #parser.add_argument('--device_num', type=int, default=1, help='Device num.') parser.add_argument('--do_train', type=bool, default=True, help='Do train or not.') parser.add_argument('--do_eval', type=bool, default=False, help='Do eval or not.') parser.add_argument('--data_url', type=str, default=None, help='Dataset path') parser.add_argument('--train_url', type=str, default=None, help='Train output path') #parser.add_argument('--dataset_path', type=str,default=None,help='Dataset path') args_opt = parser.parse_args() device_id = int(os.getenv('DEVICE_ID')) device_num = int(os.getenv('RANK_SIZE')) context.set_context(mode=context.GRAPH_MODE, device_target="Ascend", save_graphs=False) context.set_context(enable_task_sink=True, device_id=device_id) context.set_context(enable_loop_sink=True) context.set_context(enable_mem_reuse=True) local_data_url = '/cache/data' local_train_url = '/cache/ckpt' if __name__ == '__main__': if args_opt.do_eval: context.set_context(enable_hccl=False) else: if device_num > 1: context.set_context(enable_hccl=True) context.set_auto_parallel_context(device_num=device_num, parallel_mode=ParallelMode.DATA_PARALLEL, mirror_mean=True) auto_parallel_context().set_all_reduce_fusion_split_indices([107, 160]) init() local_data_url = os.path.join(local_data_url,str(device_id)) else: context.set_context(enable_hccl=False) mox.file.copy_parallel(args_opt.data_url,local_data_url) epoch_size = config.epoch_size net = resnet50(class_num=config.class_num) loss = SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean') if args_opt.do_train: dataset = create_dataset(dataset_path=os.path.join(local_data_url,'train'), do_train=True, repeat_num=epoch_size, batch_size=config.batch_size) eval_dataset = create_dataset(dataset_path=os.path.join(local_data_url,'eval'), do_train=False, batch_size=config.batch_size) step_size = dataset.get_dataset_size() loss_scale = FixedLossScaleManager(config.loss_scale, drop_overflow_update=False) lr = Tensor(get_lr(global_step=0, lr_init=config.lr_init, lr_end=config.lr_end, lr_max=config.lr_max, warmup_epochs=config.warmup_epochs, total_epochs=epoch_size, steps_per_epoch=step_size, lr_decay_mode='poly')) opt = Momentum(filter(lambda x: x.requires_grad, net.get_parameters()), lr, config.momentum, config.weight_decay, config.loss_scale) model = Model(net, loss_fn=loss, optimizer=opt, loss_scale_manager=loss_scale, metrics={'acc'}) time_cb = TimeMonitor(data_size=step_size) loss_cb = LossMonitor() cb = [time_cb, loss_cb] if config.save_checkpoint and (device_num == 1 or device_id == 0): config_ck = CheckpointConfig(save_checkpoint_steps=config.save_checkpoint_steps, keep_checkpoint_max=config.keep_checkpoint_max) ckpt_cb = ModelCheckpoint(prefix="resnet", directory=local_train_url, config=config_ck) cb += [ckpt_cb] model.train(epoch_size, dataset, callbacks=cb) if config.save_checkpoint and (device_num == 1 or device_id == 0): mox.file.copy_parallel(local_train_url,args_opt.train_url) res = model.eval(eval_dataset) print("result:", res)运行结果:后记:花了大半天时间也算是体验了一下在华为昇腾上跑了一下前两天的resnet50cifar10,总体运行的单机单卡的速度还是可以的,跑完实例的话平均一个epoch差不多20秒左右,用2080TI是3分半左右一个epoch。华为昇腾单机8卡的话跑完resnet50cifar10,epoch=90差不多10分钟,总体感觉还是在预期之中。期待昇腾和mindspore能发展的越来越好。全文根据今天大半天自己运行的一步一步随便写的,多多少少可能有不对的地方,望见谅和指出。作者:Jeff Ding原文链接:https://zhuanlan.zhihu.com/p/137904741 好文分享,侵删
-
1.简单背景介绍,公司希望在ivs1800上移植些智能算法,主要是昇腾310侧(D算法),需要评估下方案流程。 有几个问题想请教下: a.ivs1800 的操作系统是哪款,最新版本多少? b.带昇腾的型号是集成的类似atlas200加速卡,还是直接集成的310芯片。 c.哪里可以获取第三方D算法的样例工程? 谢谢,大家!!
上滑加载中
推荐直播
-
TinyEngine低代码引擎系列.第1讲——低代码浪潮之下,带你走进TinyEngine
2024/11/11 周一 16:00-18:00
李老师 高级前端开发工程师
低代码浪潮之下,带你走进TinyEngine。李旭宏老师将从低代码的发展趋势、TinyEngine的项目介绍,三方物料组件的使用、跨技术栈的使用、源码生成能力的差异性对比等多个方面带大家对TinyEngine低代码引擎有一个更清晰的认知和了解。
即将直播 -
0代码智能构建AI Agent——华为云AI原生应用引擎的架构与实践
2024/11/13 周三 16:30-18:00
苏秦 华为云aPaaS DTSE技术布道师
大模型及生成式AI对应用和软件产业带来了哪些影响?从企业场景及应用开发视角,面向AI原生应用需要什么样的工具及平台能力?企业要如何选好、用好、管好大模型,使能AI原生应用快速创新?本期直播,华为云aPaaS DTSE技术布道师苏秦将基于华为云自身实践出发,深入浅出地介绍华为云AI原生应用引擎,通过分钟级智能生成Agent应用的方式帮助企业完成从传统应用到智能应用的竞争力转型,使能千行万业智能应用创新。
去报名
热门标签