• [其他] 为什么是深度强化学习?
    到目前为止,我们还没有谈到深度神经网络。事实上,你可以以任何你想要的方式实现上述所有算法。例如,Q-learning 是一种经典的强化学习算法,它在代理与环境交互时创建了一个状态-动作-奖励值表。当你处理状态和操作数量非常少的简单环境时,此类方法非常有效。但是,当你处理一个复杂的环境时,其中动作和状态的组合数量可能非常巨大,或者环境是不确定的,并且可能存在的状态几乎是无限的;这时,评估每个可能的状态-动作对就变得不可能了。在这种情况下,你需要一个近似函数,它可以根据有限的数据学习归纳出最佳策略。给定正确的架构和优化函数,深度神经网络可以直接学习最优策略,而无需遍历系统的所有可能状态。深度强化学习代理仍然需要大量数据(例如,在 Dota 和星际争霸中进行数千小时的游戏),但它们可以解决经典强化学习系统无法解决的问题。比如,深度强化学习模型可以使用卷积神经网络,从视觉数据中提取状态信息。循环神经网络可以从帧序列中提取有用的信息,例如球的朝向,或者汽车是否停放或移动。这种复杂的学习能力,可以帮助 RL 代理理解更复杂的环境,并将其状态映射到动作。深度强化学习可与监督机器学习相媲美。该模型生成动作,并根据来自环境的反馈调整其参数。然而,不同于传统的监督学习,深度强化学习会面临一些独特的挑战。与模型具有一组标记数据的监督学习问题不同,RL 代理只能访问其自身经验的结果。它能够根据在不同训练阶段收集的经验来学习最佳策略;但它也可能错过许多其他获得更好政策的最佳轨迹。强化学习还需要评估状态-动作对的轨迹;这比监督学习所要面对的,每个训练示例与其预期结果配对问题更难学习。这种复杂性增加了深度强化学习模型的数据要求。但与监督学习不同,深度强化学习模型在训练期间收集数据,而监督学习需要人工提前策划和准备训练数据。深度强化学习和通用人工智能AI 社区对深度强化学习的发展方向存在分歧。一些科学家认为,使用正确的 RL 架构,可以解决任何类型的问题,包括通用人工智能。这些科学家相信,强化学习与产生自然智能的算法相同,如果有足够的时间和精力,并配备适当的奖励,我们可以重建人类级别的智能。其他人则认为强化学习并没有解决人工智能的一些最基本的问题。他们认为,尽管取得了许多成就,但深度强化学习代理需要明确定义问题;并且它无法自行发现新问题,更没办法提出针对新问题提出解决方案。无论如何,不可否认的是,深度强化学习已经帮助解决了许多非常复杂的问题,并且将继续成为 AI 社区的重要研究领域。
  • [算子编译] 【mindspore-gpu 1.3.0】【训练盘古时,init Dropout算子失败】
    【功能模块】8卡V100, mindspore-gpu-1.3.0训练无pipeline并行的2.6B盘古模型编译时报错【操作步骤&问题现象】File "/usr/local/python-3.7.5/lib/python3.7/site-packages/mindspore/nn/cell.py", line 608, in compile_and_run    self.compile(*inputs)  File "/usr/local/python-3.7.5/lib/python3.7/site-packages/mindspore/nn/cell.py", line 595, in compile    _executor.compile(self, *inputs, phase=self.phase, auto_parallel_mode=self._auto_parallel_mode)  File "/usr/local/python-3.7.5/lib/python3.7/site-packages/mindspore/common/api.py", line 494, in compile    result = self._executor.compile(obj, args_list, phase, use_vm)RuntimeError: mindspore/ccsrc/frontend/parallel/step_parallel.cc:2037 ExtractInformation] Failure:operator Dropout init failed# In file /home/xxx/pangu_gpu/src/utils.py(176)            global_norms = F.sqrt(P.AllReduce()(square_reduce_sum))【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [<HC2021>活动] 【获奖公告】【场景实验室】五子棋AI训练,完成体验赢积分好礼!
    获奖信息公布幸运奖bzhtootabcabc好久没出门我中奖了多米诺的古牌昶谕十年树木ad123445运气男孩测试人员001恭喜以上开发者,之前未填写获奖信息的开发者,请与11月5日16:00前完成获奖信息填写。为保证您顺利领取活动奖品,请您提前填写奖品收货信息,如您没有填写,视为放弃奖励。收货信息请【点击此处填写】参与活动前请先报名华为全联接开发者社区活动【点击报名】活动奖励:a. 奖励一:每人获得圆梦积分10分b. 奖励二:在所有完成任务的用户中抽取10个幸运奖,奖品为公牛插座魔方1个。活动时间:2021年9月15日~2021年10月20日 参与方式:用户点击【开始体验】,并完成五子棋AI训练体验,即可视为完成任务,我们会核对大家的实验完成信息。 活动规则:a.请严格按照实验要求体验b. 本次五子棋AI训练活动结束后,将由华为云工作人员将符合抽奖条件的用户名单导入至巨公摇号平台(https://www.jugong.wang/random-portal/)内,抽取各奖项,并截屏公示抽奖过程。如您不同意此抽奖规则,请勿参加本次活动。 Tips:1、请务必使用个人账号参与活动(IAM、企业账号等账号参与无效)。2、所有获得华为电子产品奖项的获奖用户,请于获奖后3日内完成实名认证,否则视为放弃奖励。3、收货信息填写说明:1)为保证您顺利领取活动奖品,请您提前填写奖品收货信息,如您没有填写,视为放弃奖励。收货信息请【点击此处填写】2)填写时间截至2021年11月5日16:00。3)在HC2021开发者社区系列活动中完成一次填写即可。我们最终将会按照您填写的信息发放奖励。4、活动规则请戳https://bbs.huaweicloud.com/forum/thread-154048-1-1.html其他【场景实验室】精彩体验
  • [其他] 为什么要使用概率?
      计算机科学的许多分支处理的实体大部分都是完全确定且必然的。  程序员通常可以安全地假定CPU将完美地执行每条机器指令。  虽然硬件错误确实会发生,但它们足够罕见,以致于大部分软件应用在设计时并不需要考虑这些因素的影响。  鉴于许多计算机科学家和软件工程师在一个相对干净和确定的环境中工作,机器学习对于概率论的大量使用是很令人吃惊的。  这是因为机器学习通常必须处理不确定量,有时也可能需要处理随机(非确定性的)量。   不确定性和随机性可能来自多个方面。  至少从20世纪80年代开始,研究人员就对使用概率论来量化不确定性提出了令人信服的论据。  这里给出的许多论据都是根据~{Pearl88}的工作总结或启发得到的。  几乎所有的活动都需要一些在不确定性存在的情况下进行推理的能力。  事实上,除了那些被定义为真的数学声明,我们很难认定某个命题是千真万确的或者确保某件事一定会发生。
  • [大赛专区] 华为云DevCloud暑期训练赛心得
    我的华为云账号:hid_i_67y3-j-641fc0我的姓名:谢小龙我的心得:通过本次华为云DevCloud暑期训练赛,通过老师课程的讲解,我了解到了许多课本上没有的知识。通过本次实验,在项目部署到服务器这一环节,有了初步的认知,通过maven打包,然后部署执行,版本控制器用的是git,但是在项目部署成功后,因为安全组的问题,有一点小插曲,在更改安全组后,正常访问。1.软件的生产是一个不停地复制的过程即不停地复制软件的周期(需求、设计、开发、测试、构建、交付);2.我对迭代开发和瀑布开发有了进一步的认识,使用迭代开发有诸多好处,降低了产品无法按照既定进度进入市场的风险。加快了整个开发工作的进度。瀑布开发不仅周期长,并且完成后修改成本很高。3.敏捷模型适用于大多数的项目开发,它不同于传统的项目管理,它更加关注在项目的目标、价值和质量不断变化的状态下如何平衡投入和产出的问题;4.了解了一下华为软开云的软件测试,它覆盖了Top10主流编程语言的其中7种从7个维度全面评价代码质量:编码安全、编码缺陷、编码风格、架构、依赖包安全、圈复杂度,代码重复。华为30年经验积累,提供专业级的预置规则集提供专业的缺陷修复建议,指导代码质量改进。提供自定义规则集,可定制企业级质量标准,精准击中企业关心问题缺陷精确定位到代码行。非常强大。5.通过课程,我也对容器有了一定的认识,Docker容器,Docker容器与虚拟机的区别是:Docker在同一个操作系统中部署多个应用,它可以做到隔离,虚拟机是在不同的操作系统中部署应用,在不同的操作系统中安装不同的应用,极大的帮助我们节省了资源的占用。6.通过沙箱实验,我体验到了这个软开云的强大,对于软件的开发,测试,部署,发布是一个很厉害的综合性的管理平台。按照实验手册上一步一步才完成了实验,要想掌握这个强大的工具,我们还需要更多的去使用它。总而言之,这次学习使我收获了很多,让我明白了不能放过任何一个学习机会,因为你所学到的东西远远不止于你所看到的。特别是对于我们这个专业,软件是一个更新换代得很快的一个东西,如果不想成为淘汰者就要不停的去学习,除了是学习课本上的东西,我们还应该置身于实践中去,最好是能有更多的像这次一样的学习机会,将项目从开始到结束的整个流程进行学习,只有接触的足够多才能发现自身的不足,然后加以提升。在这个在线沙箱实验中,我们学习到了如何去搭建一个软件开发项目,以及如何去持续构建,迭代演进,同时,让我更加清晰的去了解IT从业人员的从事的具体的工作内容,而这也是最有意义的,这让我们明白,作为一名程序员,不仅仅是埋头苦干,不问世事,更要积极努力的与同时间合作交流,也让我对今后的工作方向有了一个明确的目标,而我也将为此继续努力。
  • [前沿分享] 【转载】MindSpore AI科学计算系列(6):AI科学计算综述阅读
    最近阅读了AI科学计算相关的几篇综述论文[1-3],深受启发,在这里做一个阅读笔记,和大家分享一下。背景多物理和多尺度系统的动力学建模和预测仍然是一个开放的科学问题。以地球系统为例,它是一个独特的复杂系统,其动力学受到物理、化学和生物过程相互作用的复杂支配,这些过程发生在时空尺度上,跨度达17个数量级。在过去的50年里,通过使用有限差分、有限元、甚至无网格方法数值求解偏微分方程(partial differential equations,PDEs),在从地球物理到生物物理的不同应用中,对多尺度物理的理解取得了巨大的进展。这些方法虽然可以解决低维问题(比如三维问题),但随着维度的增加,事情很快变得更加困难。玻耳兹曼方程就是一个很好的例子:相空间的维数和碰撞核的非局域性使得用上述算法求解玻尔兹曼方程变得非常困难,即使它的维度远小于多体薛定谔方程。这就引出了我们所面临的许多难题的核心问题——维度灾难(curse of dimensionality,CoD):随着维度的增长,复杂性(或计算成本)也呈指数增长[1]。多尺度建模克服上述困难的一个重要思想是多尺度建模[2]:通过将小尺度下的无关紧要的自由度整合起来,人们应当能够直接使用更可靠的微观尺度模型,为我们感兴趣的宏观尺度过程提出更为有效的算法。这种方法适用于广泛的科学学科。然而至今为止,多尺度模型并没有像20年前预期的那样取得引人注目的成功,因为它面临以下挑战:1. 微型模型往往不是那么可靠。例如,在研究裂纹扩展时,我们经常使用分子动力学作为微尺度模型。但是,分子动力学模型对于涉及断键的动态过程的准确性常常是值得怀疑的。2. 尽管多尺度建模可以大大减少所需的微尺度模拟的大小,但它仍然超出了我们目前的能力。3. 我们利用多尺度建模的主要好处是分离了问题的微观和宏观尺度。但对于最有趣和最具挑战性的问题,这种方法通常会失效。4. 在技术层面上,高效的多尺度建模需要有效的算法从微尺度模拟中提取所需的相关信息。这是一个尚未得到充分解决的数据分析问题。机器学习带来转机机器学习的最新进展为我们逼近多变量的函数提供了前所未有的能力。深度学习已经成功地解决了高维问题,如高分辨率的图像分类、语言建模和高维偏微分方程。这种成功的一个原因是神经网络可以在目标函数是局部函数的层次组成的条件下打破维度灾难。这让我们可以回到所有因CoD而变得困难的问题。它还提供了一个机会,通过添加一个新的维度来重新检查上面讨论的问题。机器学习有很多不同的方法可以用来帮助解决科学和工程领域出现的问题,我们将集中讨论以下问题:如何使用机器学习来找到新的可解释的和真正可靠的物理模型?纯数据驱动的机器学习模型可能可以完美拟合观测结果,但由于推断或观测偏差可能导致较差的泛化性能,预测可能在物理上不一致或不可信。以下是在机器学习的帮助下构建新的物理模型的基本要求[1]:1. 模型应满足以下要求:(1)表达基本的物理原理(例如守恒定律) ,(2)遵守物理约束(如对称性、框架无差异),(3)尽可能做到普遍准确 ,(4)具有物理意义(可解释);2. 用来构建模型的数据集应该能够很好地表示模型所要用于的所有实际情况;3. 为了减少人工干预,构建模型的过程应该是端到端的。物理知识与机器学习融合将物理知识与机器学习融合相当于引入适当的观察、归纳或学习偏差,从而引导学习过程,以找到物理上一致的解决方案[3]。· 观测偏差观察数据可能是最近机器学习取得成功的基础。当给定的数据可以覆盖学习任务的输入域时,机器学习方法在实现点之间的精确插值方面显示了非凡的能力,即使是在高维任务中。特别是对于物理系统,传感器网络的快速发展使得获取大量的观测数据和监测复杂现象跨越多个时空尺度的演变成为可能。这些观测数据可以反映指示其生成的潜在物理原理,原则上可以作为一种弱机制,在机器学习模型的训练阶段将这些原理嵌入到模型中[4]-[7]。然而,特别是对于过度参数化的深度学习模型,通常需要大量的数据来强化这些偏差,并生成符合某些对称性和守恒定律的预测。在这种情况下,一个直接的困难与数据获取的成本有关。对于物理和工程科学的许多应用来说,数据获取的成本可能是非常大的,因为观测数据需要通过昂贵的实验或大规模的计算模型产生。· 归纳偏差设计专门的神经网络架构,将与给定预测任务相关的任何先验知识和归纳偏差嵌入架构。以卷积神经网络为例,通过巧妙地遵循自然图像中对称组和分布模式表示的不变性,彻底改变了计算机视觉领域。卷积网络可以推广到旋转、反射和更一般的规范对称变换。这使得在只依赖于内在几何的流形上开发一类非常通用的神经网络架构成为可能,从而为涉及医学图像、气候模式分割等计算机视觉任务提供非常有效的模型。平移不变表示也可以通过基于小波的散射变换来构造,这种变换对形变是稳定的,并且可以保留高频信息。另一个例子是协变神经网络(covariant NNs)[8],专为符合多体系统中存在的旋转和平移不变性而定制。尽管这些方法具有显著的效果,但目前这些方法仅在相对简单且定义良好的物理或对称群任务中有效,并且需要通过精细的设计来实现。此外,将它们扩展到更复杂的任务是具有挑战性的,因为许多物理系统的基本不变性或守恒定律往往难以理解,或难以在神经体系结构中进行隐式编码。广义卷积并不是把归纳偏差嵌入架构的唯一选择。例如,神经网络输入变量交换下的反对称性可以通过矩阵值函数的行列式得到[9];在大规模原子模型中,将基于物理的键序势模型与神经网络相结合,将结构参数分为局部和全局两部分来预测原子间势能面[10];采用不变张量基将伽利略不变性嵌入到网络结构中,显著提高了湍流建模中神经网络的预测精度[11];通过修改自动编码器来代表库普曼算子,从而识别坐标变换,将非线性动力学重新转换为近似的线性动力学[12]。当神经网络用于求解微分方程,可以通过修改结构来完全满足所需的初始条件[13],Dirichlet边界条件[14],Neumann边界条件[15, 16],Robin边界条件[17],周期边界条件[18,19]和界面条件[17]。此外,如果偏微分方程解的一些特征是预先知道的,也可以将它们编码到网络结构中,例如,多尺度特征[20, 21]、偶/奇对称和能量守恒[22]、高频[23]等等。· 学习偏差学习偏差可以通过选择合适的损失函数、约束和推理算法引入,这些算法可以调节机器学习模型的训练阶段,使其收敛到符合基本物理知识的解决方案。通过使用和调整这种软惩罚约束,基本的物理定律可以被近似地满足。这提供了一个非常灵活的方案来引入一类广泛的基于物理的偏差,这些偏差可以以积分、微分甚至分数方程的形式表示。代表性的例子包括deep Galerkin方法[24]和PINNs及其变体[25-28]。PINNs的框架如下图所示,它将偏微分方程及其初始条件和边界条件作为损失函数来训练神经网络。这些使机器学习算法倾向于物理一致的解决方案并不是相互排斥的,可以有效地组合,从而产生非常广泛的混合方法,用于构建物理知识与机器学习相融合的模型。展望尽管最近物理知识与机器学习融合取得一定的成功,但作为一个新兴领域,它仍然面临巨大挑战:· 新的算法和计算框架基于物理的机器学习模型通常需要训练具有复杂损失函数的大规模神经网络,这些神经网络通常由多个项组成,因此是高度非凸优化问题。在训练过程中,损失函数中的各项可能会相互竞争,训练过程可能不是鲁棒和足够稳定的,无法保证收敛到全局最小值。为了解决这个问题,需要开发更加鲁棒的网络结构和训练算法。与经典的分类或回归任务梯度下降时只需要计算一阶导数不同,基于物理知识与机器学习融合的方法通常涉及高阶导数。目前,TensorFlow、PyTorch等流行的软件框架并没有很好地支持它们的高效计算。一个高效计算高阶导数的计算框架可以大大降低计算成本,促进物理知识与机器学习融合的方法在不同学科中的应用。除了整数阶导数,积分算子,甚至分数阶导数在物理知识的学习中也是非常有用的。· 数据生成和通用的评价指标在科学计算领域,很多数据无法通过实验获得(例如密度泛函理论和分子动力学模拟、湍流的直接数值模拟等),它们需要消耗大量的时间和计算资源。因此,应该仔细考虑如何使这些数据公开可用,如何管理这些有价值的数据,以及如何包括生成这些数据库所需的物理模型和所有参数。此外,还需要研究人员共同努力来设计有意义的基准,以测试新提出的基于物理的算法的准确性和速度,这是一项非平凡的任务。参考文献[1] Weinan E, Jiequn Han, & Linfeng Zhang, Integrating Machine Learning with Physics-Based Modeling, Preprint at arXiv(2020).[2] Weinan E, The Dawning of a New Era in Applied Mathematics, Notice of the American Mathematical Society (2021).[3] George Em Karniadakis, Ioannis G. Kevrekidis, Lu Lu, Paris Perdikaris, Sifan Wang, & Liu Yang, Physics-informed machine learning, Nature Reviews Physics, 3: 422–440 (2021).[4] Lu, L., Jin, P., Pang, G., Zhang, Z. & Karniadakis, G. E. Learning nonlinear operators via DeepONet based on the universal approximation theorem of operators. Nat. Mach. Intell. 3, 218–229 (2021).[5] Kashefi, A., Rempe, D. & Guibas, L. J. A point- cloud deep learning framework for prediction of fluid flow fields on irregular geometries. Phys. Fluids 33, 027104 (2021).[6] Li, Z. et al. Fourier neural operator for parametric partial differential equations. in Int. Conf. Learn. Represent. (2021).[7] Yang, Y. & Perdikaris, P. Conditional deep surrogate models for stochastic, high- dimensional, and multi- fidelity systems. Comput. Mech. 64, 417–434, (2019).[8] Kondor, R., Son, H. T., Pan, H., Anderson, B. & Trivedi, S. Covariant compositional networks for learning graphs. Preprint at arXiv.org e-Print archive(2018).[9] Pfau, D., Spencer, J. S., Matthews, A. G. & Foulkes, W. M. C. Ab initio solution of the manyelectron Schrödinger equation with deep neural networks. Phys. Rev. Res. 2, 033429 (2020).[10] Pun, G. P., Batra, R., Ramprasad, R. & Mishin, Y. Physically informed artificial neural networks for atomistic modeling of materials. Nat. Commun. 10, 1–10 (2019).[11] Ling, J., Kurzawski, A. & Templeton, J. Reynolds averaged turbulence modelling using deep neural networks with embedded invariance. J. Fluid Mech. 807, 155–166 (2016).[12] Lusch, B., Kutz, J. N. & Brunton, S. L. Deep learning for universal linear embeddings of nonlinear dynamics. Nat. Commun. 9, 4950 (2018).[13] Lagaris, I. E., Likas, A. & Fotiadis, D. I. Artificial neural networks for solving ordinary and partial differential equations. IEEE Trans. Neural Netw. 9, 987–1000(1998).[14] Sheng, H. & Yang, C. PFNN: A penalty- free neural network method for solving a class of second- order boundary- value problems on complex geometries. J. Comput. Phys. 428, 110085 (2021).[15] McFall, K. S. & Mahan, J. R. Artificial neural network method for solution of boundary value problems with exact satisfaction of arbitrary boundary conditions.IEEE Transac. Neural Netw. 20, 1221–1233 (2009).[16] Beidokhti, R. S. & Malek, A. Solving initial- boundary value problems for systems of partial differential equations using neural networks and optimizationtechniques. J. Franklin Inst. 346, 898–913 (2009).[17] Lagari, P. L., Tsoukalas, L. H., Safarkhani, S. & Lagaris, I. E. Systematic construction of neural forms for solving partial differential equations inside rectangular domains, subject to initial, boundary and interface conditions. Int. J. Artif. Intell. Tools 29, 2050009 (2020).[18] Zhang, D., Guo, L. & Karniadakis, G. E. Learning in modal space: solving time- dependent stochastic PDEs using physics- informed neural networks. SIAM J. Sci.Comput. 42, A639–A665 (2020).[19] Dong, S. & Ni, N. A method for representing periodic functions and enforcing exactly periodic boundary conditions with deep neural networks. J. Comput.Phys. 435, 110242 (2021).[20] Wang, B., Zhang, W. & Cai, W. Multi- scale deep neural network (MscaleDNN) methods for oscillatory stokes flows in complex domains. Commun. Comput. Phys.28, 2139–2157 (2020).[21] Liu, Z., Cai, W. & Xu, Z. Q. J. Multi- scale deep neural network (MscaleDNN) for solving Poisson–Boltzmann equation in complex domains. Commun. Comput. Phys. 28, 1970–2001 (2020).[22] Mattheakis, M., Protopapas, P., Sondak, D., Di Giovanni, M. & Kaxiras, E. Physical symmetries embedded in neural networks. Preprint at arxiv (2019).[23] Cai, W., Li, X. & Liu, L. A phase shift deep neural network for high frequency approximation and wave problems. SIAM J. Sci. Comput. 42, A3285–A3312 (2020).[24] Sirignano, J. & Spiliopoulos, K. DGM: a deep learning algorithm for solving partial differential equations. J. Comput. Phys. 375, 1339–1364 (2018).[25] Raissi, M., Perdikaris, P. & Karniadakis, G. E. Physics- informed neural networks: a deep learning framework for solving forward and inverse problems involving nonlinear partial differential equations. J. Comput. Phys. 378, 686–707 (2019).[26] Kissas, G. et al. Machine learning in cardiovascular flows modeling: predicting arterial blood pressure from non- invasive 4D flow MRI data using physicsinformedneural networks. Comput. Methods Appl. Mech. Eng. 358, 112623 (2020).[27] Zhu, Y., Zabaras, N., Koutsourelakis, P. S. & Perdikaris, P. Physics- constrained deep learning for high- dimensional surrogate modeling and uncertaintyquantification without labeled data. J. Comput. Phys. 394, 56–81 (2019).[28] Geneva, N. & Zabaras, N. Modeling the dynamics of PDE systems with physics- constrained deep auto- regressive networks. J. Comput. Phys. 403, 109056 (2020).转自文章链接:https://zhuanlan.zhihu.com/p/407723828感谢作者的努力与分享,侵权立删!
  • [Atlas500] altas500人群密度检测模型
    之前在这:https://www.hiascend.com/zh/developer/mindx-sdk/crowdcounting 看到一个关于人群密度检测的模型,但在自定义场景下侧了下模型,性能还达不到预期,请问关于这个模型的训练是怎样的呢(训练数据、参考脚本之类)?
  • [热门活动] 8小时玩转openGauss训练营(第二期)来啦!免费干货课程!发放官方证书!参与更有礼品相送!戳进绝不后悔~
    两天入门openGauss?八小时的课程免费上?还有作业和考试及时巩固?学习课程还有免费好礼送到家?是的你没看错不仅如此本次活动还是由openGauss社区、Gauss松鼠会、云和恩墨共同举办业内资深专家共同授课微信扫描图中二维码即可报名8小时玩转openGauss活动训练营活动B3群你们期待的礼品来啦!两日签到+按时提交作业=精美雨伞或大号鼠标垫一个两日签到+按时提交作业+在线结营考试合格=结营证书+纪念卫衣一件(可叠加领取)参与互动问答=《openGauss数据库核心技术》书籍一本还等什么?快带上你的小伙伴一起上车!
  • [MindX DL] 【MindX DL 2.0.2.1】【用户指南】案例运行失败
    【功能模块】MindX DL 2.0.2.1 用户指南 01,网址是:https://support.huawei.com/enterprise/zh/doc/EDOC1100209652/435ade8e【操作步骤&问题现象】1、按照官网教程中"使用指导"-"基于Resnet-50模型的使用示例"-"mindspore"2、进行到"训练任务下发"步骤时,发现任务运行不到一分钟会自动停掉【截图信息】1.yaml文件内容如下图,此时做测试,真正的训练任务跑起来也会停掉2.现象:开始时很正常然后很快就停掉了
  • [其他] 华为云深度学习
    全托管基于容器的serverless服务,您无需关心升级与维护,安心搞业务简单易用预置多种网络模型、向导式开发界面、一键开启模型训练与部署开发工作量少自研MoXing分布式框架,让您的分布式训练代码开发量缩短近10倍训练速度快1000块GPU集群和0.8的线性加速比,原先一个月的模型训练时间,现在1小时搞定机会难得,小伙伴们还不抓紧来体验,数量有限,先到先得哦!!点击访问华为云深度学习官网
  • [其他] 机器学习服务可以做什么?
    机器学习服务应用于海量数据挖掘分析场景。欺骗检测保险公司分析投保人的历史行为数据,建立欺骗行为模型,识别出假造事故骗取保险赔偿的投保人。产品推荐根据客户本身属性和行为特征等,预测客户是否愿意办理相关业务,为客户提供个性化的业务推荐。客户分群通过数据挖掘来给客户做科学的分群,依据不同分群的特点制定相应的策略,从而为客户提供适配的产品、制定针对性的营销活动和管理用户,最终提升产品的客户满意度,实现商业价值。异常检测在网络设备运行中,用自动化的网络检测系统,根据流量情况实时分析,预测可疑流量或可能发生故障的设备。预测性维护为设备创建预测模型并提供预见性维护建议和计划,减少故障时间和发生几率,从而提高效率和降低成本。驾驶行为分析通过采集驾驶员不良驾驶习惯(比如:急加速、急转弯、急减速、超速、疲劳驾驶等),通过建模分析驾驶员驾驶习惯优良程度,面向企业车队提供驾驶员评级,约束不良驾驶习惯;面向个人车主,提供驾驶习惯优化建议,降低事故率和降低油耗,对于保险公司,可以用于UBI场景。
  • [大赛专区] 华为云DevCloud暑期训练赛-湖南信息学院站
    我的华为云账号:hid_53mzapy_l3d28d4我的名字:丁浩佳我的分享:本课程主要以凤凰商城项目为例子,仔细介绍了DevOps的基础功能和操作方法,讲解清晰,通俗易懂,特别利于我这种不熟悉DevOps的新手,跟着实验步骤便可以完成本次的实验,在实验中体验到了如何去搭建一个软件开发项目,以及如何去持续构建,迭代演进:这次实验的体验很非常不错。最后感谢云华为提供这一次体验和学习机会。实验完成截图:
  • [技术干货] 使用mindspore实现yoloV3
    mindspore是华为开源的深度学习框架,之前已经参加过两期训练营,8月8日又举办了第三期,继续参加学习。这次主要的作业是用mindspore实现yolo_v3,并在华为云的modelArts平台上实现。mindspore跑yolo_v3,其实在mindspore主仓的model_zoo里已经有了训练和测试的代码,可以到 官方gitee仓 里查看但是官方的代码是在本地跑的,要在modelArts上跑,需要做一些适当的调整首先,要把代码和数据集上传到云上,要在华为云上创建一个“对象储存服务obs”,将代码、数据集上传其次,要创建modelArts训练作业点击之后出现如下配置界面最重要的两个参数,一个是数据集目录,一个是模型保存位置,默认以data_url和train_url为参数名通过argparse传入启动程序,所以启动程序中一定要有解析这两个参数的功能,并将涉及数据集的目录用data_url替代,涉及模型保存的目录,用train_url代替。最后,上传数据的“对象储存服务”相当于云盘,modelArts相当于运行容器,训练的时候需要把数据从云盘复制到容器中,最后训练的模型,还要复制到云盘中才能使用。数据在云盘和容器间的复制操作需要moxing模块import moxing as moxlocal_data_url='/cache/data'local_train_url='/cache/train_url'#将obs中data_url目录拷贝到容器的local_data_url中mox.file.copy_parallel(args_opt.data_url,local_data_url)#模型训练完,还要将模型目录拷贝到obs中才能下载mox.file.copy_parallel(local_train_url,args_opt.train_url)一切改好后,就可以提交运行了,可以在日志中看到运行结果,如果运行失败就看看日志的错误提示逐一解决。熟悉了整个运行机制之后,就会发现这套系统非常简单,上传数据集,修改几行代码就搞定了!————————————————原文链接:https://blog.csdn.net/sinat_21902051/article/details/107899368
  • [技术干货] MindSpore-LeNet模型理解深度学习一般化过程
    深度学习一般化过程理解Mindspore docs工程代码:https://gitee.com/mindspore/docs.gitLeNet实例源码位置:*/docs/tutorials/tutorial_code/lenet    接续上一篇的实例实践,通过前面运行MindSpore的LeNet实例代码了解了一个经典的手写字体识别模型在框架中使用的情况,本篇尝试从该代码实例开始,围绕模型为核心来深入分析和总结深度学习的一般化过程以及需要重点掌握的知识点。    从实践来看深度学习的领域“模型”是核心,所有的操作最终都是围绕模型来建立的。通常深度学习应用过程抽象为以下一般过程。1)深度学习应用结构-“输入-处理-输出”    深度学习尽管本身是专属领域的范畴,但是其在应用过程中依然离不开IT通用的化的过程,任何的部署成可执行程序的模式基本的结构都是相通的。 “输入-处理-输出”的结构是通用IT应用的基本结构,对于人工智能的深度学习方法也是同样适用;不同之处人工智能的深度学习方法到能够落地应用通常分为两个关键步骤:模型学习训练(深度学习的学习就凸显在模型的学习训练上,通过规模数据训练学习输出符合要求的模型)模型的推理应用(其中推理会涉及应用的场景化部署,所以可能部署的方式各不同,比如数据中心、边缘等方式)2)核心围绕-“数据”    深度学习离不开数据,所有的模型训练即学习的过程,通过数据的输入处理不断的完善模型,在数据方面涉及规模数据的称呼为“数据集”。通常一个模型要能够到达应用的地步,离不开两类数据集:训练数据集(LeNet例子中MNIST数据集中的train-images-idx3-ubyte和train-labels-idx1-ubyte)测试数据集(LeNet例子中MNIST数据集中的t10k-images-idx3-ubyte和t10k-labels-idx1-ubyte)另外在模型训练完成后:会生成带有训练参数优化的输出的模型文件数据,比如MindSpore中提供的模型输出文件,后续会深入分析。实际部署应用中会涉及相应的模型验证评估和推理处理的请求和输出结果数据,比如图像识别中人脸识别应用,实时捕捉人脸数据作为服务“请求数据”进行识别,以及结果数据的输出。3)深度学习的两个关键过程“模型训练”和“模型推理”    深度学习的学习就体现在学习数据、训练模型上面,通过海量的数据输入结合特定的网络模型来进行训练和学习,最终输出具备一定精准度的模型文件,供后续推理使用。模型训练    在人工智能的深度学习方面,模型是核心,其中基于神经网络构建的模型是当前主流的模型方法,因此模型训练包括如下过程:        1)输入数据的准备;模型训练通常输入数据采用数据集的方式来管理,不同的数据集可能存在不同的格式,后续会介绍MindSpore在数据集处理上提供的核心能力。        2)模型训练过程,根据神经网络先选择定义匹配的网络,结合训练的数据集来训练相应的模型,这个模型是带有某种内置数学手段的输出物,最终会生成模型的文件(存放训练结果的数据)。        3)模型是一个训练的结果输出物,在MindSpore上采用了checkpoints的快照模式,来支持多次训练的输出或者中断时候恢复,同时MindSpore还提供了统一的模型文件MindIR格式,用于部署态不同云、边等环境统一部署。模型评估和推理模型评估    结合数据集和相应的神经网络等训练方法输出相应的模型数据,该模型数据如何评估其准确性和精度,就需要通过模型评估的方法,结合输入的测试数据集(如MNIST数据集中的测试数据集t10k-images-idx3-ubyte和t10k-labels-idx1-ubyte)    评估的结果往往是输出模型的精度,比如图片训练结合测试数据的识别度,精度往往可以通过选择不同的神经网络方法、包括网络参数的调整来提升。模型推理    当模型训练输出后,要进入应用场景时候,需要发布和部署成功输出的模型,通常如果要提供在线服务,都会部署成可以提供在线处理的服务模式,供在线应用。Mindspore框架的相应能力说明官方入门教程地址:https://www.mindspore.cn/tutorial/zh-CN/r1.2/quick_start.ht    MindSpore官方网站提供了以LeNet模型为开篇入门教程,总结了Mindspore作为一个深度学习框架在其提供的开放能力之上使用的一般过程。    这里我们借助这个过程来简单分析MindSpore为其使用者提供了哪些核心的能力来支持深度学习的一般化过程。    MindSpore中提供给用户使用的是最上层的高阶API,高阶的API虽然也有java和c++语言提供的,大多数情况下还是以python提供为主。    要完成一个基本的LeNet模型训练及推理,MindSpore中提供的几个基础核心能力应用即可:1)框架上下文(mindspore.context)    MindSpore框架的上下文封装,框架提供的相关图模式、PYNATIVE_MODE、并行计算相关的配置都在其中设定,比如前面实例指定LeNet在CPU上运行,默认模式device_target指定为CPU。context.set_context(mode=context.GRAPH_MODE, device_target=args.device_target)2)数据集(mindspore.dataset)    MindSpore在数据集方面提供了丰富的能力,dataset中针对不同的数据集的格式都有统一的封装,具体的说明如下。https://www.mindspore.cn/doc/api_python/en/r1.2/mindspore/mindspore.dataset.html    对于LeNet模型实例,选择对应的数据集封装使用“mindspore.dataset.MnistDataset”类即可。3)构建神经网络相关(mindspore.nn)    MindSpore在核心的神经网络模型的构建上通过Cell类的基本神经网络单元类来构建最终的网络。比如LeNet中,就采用继承mindspore.nn.Cell的方式来构建,在该类中可以定义各类具体的神经网络方法来训练相应的模型。比如在LeNet中采用Conv2d来定义卷积神经网络的方式来构建网络。class LeNet5(nn.Cell):    """Lenet network structure."""    # define the operator required    def __init__(self, num_class=10, num_channel=1):        super(LeNet5, self).__init__()        self.conv1 = nn.Conv2d(num_channel, 6, 5, pad_mode='valid')        self.conv2 = nn.Conv2d(6, 16, 5, pad_mode='valid')        ......4)模型训练、推理相关(mindspore.train)    其中主要的提供的模型训练、推理的核心API封装,LeNet实例中直接使用提供Model封装类即可完成大部分模型训练和推理的操作。比如在LeNet实例中封装的train_net训练模型、test_net评估模型、test_predict推理三个主要方法,内部核心都使用了Model类提供的方法。#提供模型训练APInetwork_model.train(epoch_size, ds_train, callbacks=[ckpoint_cb, LossMonitor()], dataset_sink_mode=sink_mode)#提供模型评估APInetwork_model.eval(ds_eval, dataset_sink_mode=False)#提供模型推理APInetwork_model.predict(Tensor(data['image']))5)输出模型文件相关    在MindSpore的输出模型文件方面,提供了两类核心能力:一类采用类似快照机制,输出训练的过程文件,用于多次训练能够回溯或者中断恢复之前的模型数据处理,在MindSpore中封装在回调mindspore.train.callback中,LeNet实例中如下。每次训练结束都输出一个checkpoint模型文件,可以用于推理处理。# save the network model and parameters for subsequence fine-tuningckpoint = ModelCheckpoint(prefix="checkpoint_lenet", config=config_ck)一类最终发布的模型文件,采用自定义的MindIR格式,目的是为了可以在不同的硬件体系,如云中心或者边缘、终端等体系直接运行。可以基于某个checkpoint模型文件来最终输出。def export_mr():    print("============== Export MindIR ==============")    resnet = LeNet5()    # load the parameter into net    param_dict = load_checkpoint("checkpoint_lenet-1_1875.ckpt")    load_param_into_net(resnet, param_dict)    input = np.random.uniform(0.0, 1.0, size=[32, 1, 32, 32]).astype(np.float32)    export(resnet, Tensor(input), file_name='checkpoint_lenet-2-1_1875', file_format='MINDIR')总结:    MindSpore是一个全场景的深度学习框架,全场景体现在其适应云端、边缘、终端等各类基础设施形态上运行;深度学习框架是其总结抽象了深度学习的一般化过程,通过可以被应用开发者使用的API方式开放其支持深度学习应用开发的能力。    下一篇结合LeNet模型实例,来尝试深入理解下神经网络模型是怎么回事。————————————————原文链接:https://blog.csdn.net/wangfengwf/article/details/117596887
  • [技术干货] MindSpore进行分布式训练
    分布式和并行计算,在计算机领域是非常重要的概念。对于一些行外人来说,总觉得这是一些很简单的工作,但是如果我们纵观计算机的硬件发展史,从CPU到GPU,再到TPU和华为的昇腾(NPU),乃至当下的热点量子计算机(QPU),其实就是一个分布式与并行计算的发展史。从简单的数据并行,到算法并行,到图的并行,最后是量子叠加所带来的物理并行。因此能否做好分布式与并行的技术,很大程度上决定了一个工具的性能上限,本文我们一起来研究一下MindSpore分布式训练的方法。环境部署在前面的博客中,我们探讨过用Docker和Singularity容器等方案来安装MindSpore的CPU版本和GPU版本,感兴趣的读者可以翻一翻这些历史博客。而这篇文章中,我们将默认已经在本地安装好一个MindSpore的GPU环境,以此为前提进行探讨在单机多GPU卡的环境下去使用MindSpore的分布式功能。比较完整的介绍可以参考这个官方地址,里面包含了完整的安装部署和使用的介绍。这里我们仅针对本地Ubuntu的环境介绍基本安装和使用方法。安装openmpi这里一共需要安装2个软件,我们都是采取了源码安装的方法,首先到这个MindSpore给出的下载链接中下载对应版本的源码:按照版本配套我们下载这个4.0.3的 tar.gz的压缩包:下载完成后可以大致的按照这里面的操作指导进行源码安装:安装成功的话运行 mpirun --version可以看到版本号。有这里面有两个需要提醒的点是:1. 解压缩不一定用这里面给出的指令,可以用自己的;2. 如果按照这个指引的prefix,后面需要在 LD_LIBRARY_PATH这个环境变量中加入 /usr/local/lib/这个路径,否则会有一些so库无法被识别。安装NCCLMindSpore在GPU上的分布式通信是采用了NCCL这个工具,同样的我们先去这里面给出的链接找源码包下载安装:这里推荐使用Local的安装方案:找到适配自己的系统版本的软件包之后,就可以按照下述的指引一步一步安装:其中如果在 apt-key这一步执行一次失败的话,可以多执行两次看看。环境测试安装成功后,openmpi和NCCL都安装成功后,可以用如下的初始化示例测试一下环境的部署情况:# test-init.py from mindspore import contextfrom mindspore.communication.management import init if __name__ == "__main__":    context.set_context(mode=context.GRAPH_MODE, device_target="GPU")    init("nccl")如果执行的结果如下所示,没有任何的报错信息,则说明环境部署成功:dechin@ubuntu2004:~/projects/mindspore/test$ mindspore test-init.py dechin@ubuntu2004:~/projects/mindspore/test$MindSpore分布式训练首先可能会有人好奇,上一个章节中最后用的mindspore是个啥指令?这其实是我自己在本地配置的一个mindspore-gpu版本的快捷命令:dechin@ubuntu2004:~/projects/$ cat ~/.bashrc | grep mindsporealias mindspore='singularity exec --nv /home/dechin/tools/singularity/mindspore-gpu_1.2.0.sif python'如果觉得还算方便的话,读者也可以按照自己的喜好去alias一个快捷命令。接下来我们要看一个实现的案例,这个代码来自于前面的这一篇博客,只是我们在这个代码基础之上,加入了上一个章节中的初始化代码init(),完整代码如下所示:# test_nonlinear.py from mindspore import contextfrom mindspore.communication.management import initcontext.set_context(mode=context.GRAPH_MODE, device_target="GPU")init()import numpy as npfrom mindspore import dataset as dsfrom mindspore import nn, Tensor, Modelimport timefrom mindspore.train.callback import Callback, LossMonitor def get_data(num, a=2.0, b=3.0, c=5.0):    for _ in range(num):        x = np.random.uniform(-1.0, 1.0)        y = np.random.uniform(-1.0, 1.0)        noise = np.random.normal(0, 0.03)        z = a * x ** 2 + b * y ** 3 + c + noise        yield np.array([[x**2], [y**3]],dtype=np.float32).reshape(1,2), np.array([z]).astype(np.float32) def create_dataset(num_data, batch_size=16, repeat_size=1):    input_data = ds.GeneratorDataset(list(get_data(num_data)), column_names=['xy','z'])    input_data = input_data.batch(batch_size)    input_data = input_data.repeat(repeat_size)    return input_data data_number = 160batch_number = 16repeat_number = 200 ds_train = create_dataset(data_number, batch_size=batch_number, repeat_size=repeat_number)dict_datasets = next(ds_train.create_dict_iterator()) class LinearNet(nn.Cell):    def __init__(self):        super(LinearNet, self).__init__()        self.fc = nn.Dense(2, 1, 0.02, 0.02)     def construct(self, x):        x = self.fc(x)        return x net = LinearNet()model_params = net.trainable_params()print ('Param Shape is: {}'.format(len(model_params)))for net_param in net.trainable_params():    print(net_param, net_param.asnumpy())net_loss = nn.loss.MSELoss() optim = nn.Momentum(net.trainable_params(), learning_rate=0.01, momentum=0.6)model = Model(net, net_loss, optim) epoch = 1model.train(epoch, ds_train, callbacks=[LossMonitor(10)], dataset_sink_mode=False) for net_param in net.trainable_params():    print(net_param, net_param.asnumpy())此时我们需要改成用mpirun去运行这个代码:dechin@ubuntu2004:~/projects/gitlab/dechin/src/mindspore$ mpirun -n 2 singularity exec --nv /home/dechin/tools/singularity/mindspore-gpu_1.2.0.sif python test_nonlinear.py运行过程中我们就可以看到,有两个python的任务分别跑在两个不同的GPU卡上:这个监控方式其实还是 nvidia-smi的指令,只不过为了长期监视GPU状态,我是使用了 watch -n 1 nvidia-smi的指令,每隔1s的时间就刷新一次 nvidia-smi的状态。但是这里需要注意的也有两点:1. 这个代码直接用mindspore指令也可以跑在单GPU卡上,但是如果要用mpirun来运行,那么我们就不能使用刚才alias的mindspore指令,而需要手动写上完整的指令,除非把新的指令再alias一个;2. 上述的代码因为只是初始化了一下,所以虽然跑在两张卡上,但是实际上训练过程并没有互相通信,是两个独立的任务。那么如果要构造一个完整的自动化的分布式训练,就需要像如下代码一样,再加入context.set_auto_parallel_context(parallel_mode=ParallelMode.DATA_PARALLEL)这样的一个字样,以及checkpoint中的一些配置,新的完整代码如下所示:# test_nonlinear.py from mindspore import contextfrom mindspore.communication.management import initcontext.set_context(mode=context.GRAPH_MODE, device_target="GPU")init() import numpy as npfrom mindspore import dataset as dsfrom mindspore import nn, Tensor, Modelimport timefrom mindspore.train.callback import Callback, LossMonitor, ModelCheckpoint, CheckpointConfigfrom mindspore.context import ParallelModeimport mindspore as msms.common.set_seed(0) start_time = time.time()def get_data(num, a=2.0, b=3.0, c=5.0):    for _ in range(num):        x = np.random.uniform(-1.0, 1.0)        y = np.random.uniform(-1.0, 1.0)        noise = np.random.normal(0, 0.03)        z = a * x ** 2 + b * y ** 3 + c + noise        yield np.array([[x**2], [y**3]],dtype=np.float32).reshape(1,2), np.array([z]).astype(np.float32) def create_dataset(num_data, batch_size=16, repeat_size=1):    input_data = ds.GeneratorDataset(list(get_data(num_data)), column_names=['xy','z'])    input_data = input_data.batch(batch_size)    input_data = input_data.repeat(repeat_size)    return input_data data_number = 160batch_number = 16repeat_number = 20 context.set_auto_parallel_context(parallel_mode=ParallelMode.DATA_PARALLEL)ds_train = create_dataset(data_number, batch_size=batch_number, repeat_size=repeat_number)dict_datasets = next(ds_train.create_dict_iterator()) class LinearNet(nn.Cell):    def __init__(self):        super(LinearNet, self).__init__()        self.fc = nn.Dense(2, 1, 0.02, 0.02)     def construct(self, x):        x = self.fc(x)        return x net = LinearNet()model_params = net.trainable_params()print ('Param Shape is: {}'.format(len(model_params)))for net_param in net.trainable_params():    print(net_param, net_param.asnumpy())net_loss = nn.loss.MSELoss() optim = nn.Momentum(net.trainable_params(), learning_rate=0.01, momentum=0.6)ckpt_config = CheckpointConfig()ckpt_callback = ModelCheckpoint(prefix='data_parallel', config=ckpt_config) model = Model(net, net_loss, optim) epoch = 10model.train(epoch, ds_train, callbacks=[ckpt_callback], dataset_sink_mode=True) for net_param in net.trainable_params():    print(net_param, net_param.asnumpy()) print ('The total time cost is: {}s'.format(time.time() - start_time))这个代码的运行结果如下所示:dechin@ubuntu2004:~/projects/gitlab/dechin/src/mindspore$ mpirun -n 2 singularity exec --nv /home/dechin/tools/singularity/mindspore-gpu_1.2.0.sif python test_nonlinear.py Param Shape is: 2Parameter (name=fc.weight, shape=(1, 2), dtype=Float32, requires_grad=True) [[0.02 0.02]]Parameter (name=fc.bias, shape=(1,), dtype=Float32, requires_grad=True) [0.02]Param Shape is: 2Parameter (name=fc.weight, shape=(1, 2), dtype=Float32, requires_grad=True) [[0.02 0.02]]Parameter (name=fc.bias, shape=(1,), dtype=Float32, requires_grad=True) [0.02][WARNING] ME(2528801:139843698521024,MainProcess):2021-06-10-09:45:37.603.010 [mindspore/train/callback/_checkpoint.py:428] OSError, failed to remove the older ckpt file /home/dechin/projects/gitlab/dechin/src/mindspore/data_parallel-1_200.ckpt.[WARNING] ME(2528799:139709496722368,MainProcess):2021-06-10-09:45:37.713.232 [mindspore/train/callback/_checkpoint.py:428] OSError, failed to remove the older ckpt file /home/dechin/projects/gitlab/dechin/src/mindspore/data_parallel-2_200.ckpt.[WARNING] ME(2528799:139709496722368,MainProcess):2021-06-10-09:45:37.824.271 [mindspore/train/callback/_checkpoint.py:428] OSError, failed to remove the older ckpt file /home/dechin/projects/gitlab/dechin/src/mindspore/data_parallel-3_200.ckpt.[WARNING] ME(2528799:139709496722368,MainProcess):2021-06-10-09:45:37.943.749 [mindspore/train/callback/_checkpoint.py:428] OSError, failed to remove the older ckpt file /home/dechin/projects/gitlab/dechin/src/mindspore/data_parallel-4_200.ckpt.[WARNING] ME(2528801:139843698521024,MainProcess):2021-06-10-09:45:38.433.85 [mindspore/train/callback/_checkpoint.py:428] OSError, failed to remove the older ckpt file /home/dechin/projects/gitlab/dechin/src/mindspore/data_parallel-5_200.ckpt.Parameter (name=fc.weight, shape=(1, 2), dtype=Float32, requires_grad=True) [[0.12186428 0.21167319]]Parameter (name=fc.bias, shape=(1,), dtype=Float32, requires_grad=True) [5.561276]The total time cost is: 8.412446737289429sParameter (name=fc.weight, shape=(1, 2), dtype=Float32, requires_grad=True) [[0.12186428 0.21167319]]Parameter (name=fc.bias, shape=(1,), dtype=Float32, requires_grad=True) [5.561276]The total time cost is: 8.439369916915894s虽然运行成功了,但是有一点需要注意的是,分布式的这个案例耗时为8.44s,而单卡的训练耗时为8.15s,分布式的训练速度甚至比单卡的要慢,我们在总结里面对这个现象进行一个解释。总结概要这篇文章我们主要探讨如何去部署一个基于MindSpore框架的分布式训练环境,在MindSpore环境已经配置好的情况下,我们只需要安装好openmpi和nccl这两个工具就可以实现分布式的训练,在文中我们已经给出了相应的示例。虽然分布式与并行技术的目的是为了提升性能,但不是说对所有的场景都能够起到加速的作用,比如文章中的案例就没有加速的效果。这其实是因为我们的用例场景太简单了,纵观整个训练过程,GPU的使用率不到10%,在这种情况下还要考虑上通信的开销,自然是没有放在同一个卡上去训练来得快。这也给我们一个启发,考虑使用分布式和并行计算的技术时,一定也要先评估好问题本身是否适用于并行化的处理,否则是达不到预期的加速的目的的。————————————————原文链接:https://blog.csdn.net/baidu_37157624/article/details/117801111