[{"data":1,"prerenderedAt":497},["ShallowReactive",2],{"content-query-ChCtVrhBTc":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"cover":11,"type":12,"category":13,"body":14,"_type":491,"_id":492,"_source":493,"_file":494,"_stem":495,"_extension":496},"/technology-blogs/zh/3278","zh",false,"","基于ms香橙派AIpro实现垃圾回收AI识别方案一：昇思MindSpore介绍","随着AI人工智能、机器学习的不断发展，开发者的编程领域也在经历着一场前所未有的变革，在这个过程中，各行各业都开始不断的发展，包括金融、‌医疗、‌教育、‌工业、‌游戏、‌法律等多个行业，‌以及智能硬件领域，‌如智能汽车、‌机器人、‌智能终端等。‌","2024-08-02","https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2024/11/28/078050636458433fa0213ddb122d6308.png","technology-blogs","实践",{"type":15,"children":16,"toc":479},"root",[17,25,37,47,57,67,77,87,91,97,101,111,118,123,126,132,137,157,164,169,172,179,186,237,240,246,255,262,331,334,340,345,352,385,388,393,400,405,415,423,428,435,443,449,456,462,467,472],{"type":18,"tag":19,"props":20,"children":22},"element","h1",{"id":21},"基于ms香橙派aipro实现垃圾回收ai识别方案一昇思mindspore介绍",[23],{"type":24,"value":8},"text",{"type":18,"tag":26,"props":27,"children":28},"p",{},[29],{"type":18,"tag":30,"props":31,"children":35},"a",{"href":32,"rel":33},"https://www.hiascend.com/developer/blog/details/0272157975874351541",[34],"nofollow",[36],{"type":24,"value":8},{"type":18,"tag":26,"props":38,"children":39},{},[40],{"type":18,"tag":30,"props":41,"children":44},{"href":42,"rel":43},"https://www.hiascend.com/developer/blog/details/02111171533919729183",[34],[45],{"type":24,"value":46},"基于ms香橙派AIpro实现垃圾回收AI识别方案二：昇思MindSpore如何使用",{"type":18,"tag":26,"props":48,"children":49},{},[50],{"type":18,"tag":30,"props":51,"children":54},{"href":52,"rel":53},"https://www.hiascend.com/developer/blog/details/0272158138234394548",[34],[55],{"type":24,"value":56},"基于ms香橙派AIpro实现垃圾回收AI识别方案三：昇思大模型平台jupyter快速入门体验",{"type":18,"tag":26,"props":58,"children":59},{},[60],{"type":18,"tag":30,"props":61,"children":64},{"href":62,"rel":63},"https://www.hiascend.com/developer/blog/details/0272158143705280549",[34],[65],{"type":24,"value":66},"基于ms香橙派AIpro实现垃圾回收AI识别方案四：MindSpore应用实践 - 基于MobileNetv2的垃圾分类",{"type":18,"tag":26,"props":68,"children":69},{},[70],{"type":18,"tag":30,"props":71,"children":74},{"href":72,"rel":73},"https://www.hiascend.com/developer/blog/details/0272158155371368550",[34],[75],{"type":24,"value":76},"基于ms香橙派AIpro实现垃圾回收AI识别方案五：香橙派OrangePi AIpro实践(基于MobileNetv2的垃圾分类)",{"type":18,"tag":26,"props":78,"children":79},{},[80],{"type":18,"tag":30,"props":81,"children":84},{"href":82,"rel":83},"https://www.hiascend.com/developer/blog/details/0265158167508388542",[34],[85],{"type":24,"value":86},"基于ms香橙派AIpro实现垃圾回收AI识别方案六：SOWT分析与总结",{"type":18,"tag":88,"props":89,"children":90},"hr",{},[],{"type":18,"tag":19,"props":92,"children":94},{"id":93},"一前言",[95],{"type":24,"value":96},"一、前言：",{"type":18,"tag":26,"props":98,"children":99},{},[100],{"type":24,"value":9},{"type":18,"tag":26,"props":102,"children":103},{},[104,109],{"type":18,"tag":105,"props":106,"children":108},"img",{"alt":7,"src":107},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2024/08/23/4b2fb7bbddce404f93d5b66381f4f6f9.png",[],{"type":24,"value":110}," 作者也是经过了以上几个阶段的软件开发历程，从Web时代编程、到云时代分布式编程，到如今的AI时代，AI技术的发展还带动了相关行业的创新和转型，‌如人工智能和机器学习技术的不断进步和应用范围的扩大，‌推动了社会进步和技术革新。‌随着算法的改进和计算能力的提升，‌AI技术的准确性和效率也在不断增强，‌为各行各业的发展提供了新的动力和支持。",{"type":18,"tag":26,"props":112,"children":113},{},[114],{"type":18,"tag":105,"props":115,"children":117},{"alt":7,"src":116},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2024/08/23/7645c9432be64050a1371b52983f5367.png",[],{"type":18,"tag":26,"props":119,"children":120},{},[121],{"type":24,"value":122},"AI技术的发展为各个领域带来了许多创新和便利。那么，在实际的应用中，如何正确的来使用AI进行提高效率呢，值得大家来思考一下？今天给大家分享华为的“昇思MindSpore”， 旨在实现易开发、高效执行、全场景统一部署三大目标，降低了AI开发者的开发门槛，非常适合各种场景的学习与实践，接下来，带大家一起来实际体验一下。",{"type":18,"tag":88,"props":124,"children":125},{},[],{"type":18,"tag":19,"props":127,"children":129},{"id":128},"二昇思mindspore是什么",[130],{"type":24,"value":131},"二、昇思MindSpore是什么？",{"type":18,"tag":26,"props":133,"children":134},{},[135],{"type":24,"value":136},"昇思MindSpore是一个全场景深度学习AI框架，旨在实现易开发、高效执行、全场景统一部署三大目标，其中有三大优点：",{"type":18,"tag":138,"props":139,"children":140},"ul",{},[141,147,152],{"type":18,"tag":142,"props":143,"children":144},"li",{},[145],{"type":24,"value":146},"①. 易开发表现为API友好、调试难度低；",{"type":18,"tag":142,"props":148,"children":149},{},[150],{"type":24,"value":151},"②. 高效执行包括计算效率、数据预处理效率和分布式训练效率；",{"type":18,"tag":142,"props":153,"children":154},{},[155],{"type":24,"value":156},"③. 全场景则指框架同时支持云、边缘以及端侧场景。",{"type":18,"tag":26,"props":158,"children":159},{},[160],{"type":18,"tag":105,"props":161,"children":163},{"alt":7,"src":162},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2024/08/23/3104551b9c2647f09a6ccb005eb5a021.png",[],{"type":18,"tag":26,"props":165,"children":166},{},[167],{"type":24,"value":168},"昇思MindSpore着重提升易用性并降低AI开发者的开发门槛，易开发表现为API友好、调试难度低；高效执行包括计算效率、数据预处理效率和分布式训练效率；全场景则指框架同时支持云、边缘以及端侧场景。",{"type":18,"tag":88,"props":170,"children":171},{},[],{"type":18,"tag":173,"props":174,"children":176},"h2",{"id":175},"_21-昇思mindspore总体架构如下图所示",[177],{"type":24,"value":178},"2.1 昇思MindSpore总体架构如下图所示：",{"type":18,"tag":26,"props":180,"children":181},{},[182],{"type":18,"tag":105,"props":183,"children":185},{"alt":7,"src":184},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2024/08/23/37718b13febd475fa7618fdc7bfe58e8.png",[],{"type":18,"tag":138,"props":187,"children":188},{},[189,194,199,222,227,232],{"type":18,"tag":142,"props":190,"children":191},{},[192],{"type":24,"value":193},"①. 多领域扩展：提供大模型套件、领域套件、AI4S套件，为用户提供开箱即用的模型与功能接口，便于用户基于套件的预置模型进行研发使用与参考实现。",{"type":18,"tag":142,"props":195,"children":196},{},[197],{"type":24,"value":198},"②. 开发态友好：表达层（MindExpression）为用户提供AI模型开发、训练、推理的接口，支持用户用原生 Python语法开发和调试神经网络，其特有的动静态图统一能力使开发者可以兼顾开发效率和执行性能，同时该层在生产和部署阶段提供全场景统一的C++/Python接口。",{"type":18,"tag":142,"props":200,"children":201},{},[202,204],{"type":24,"value":203},"③. 运行态高效：",{"type":18,"tag":138,"props":205,"children":206},{},[207,212,217],{"type":18,"tag":142,"props":208,"children":209},{},[210],{"type":24,"value":211},"数据处理（MindSpore Data）：提供高性能的数据加载、数据预处理功能。",{"type":18,"tag":142,"props":213,"children":214},{},[215],{"type":24,"value":216},"计算图构建（MindChute）：提供多种构图机制，支持基于Python AST的计算图翻译构建，也支持基于Python字节码的计算图构建能力。",{"type":18,"tag":142,"props":218,"children":219},{},[220],{"type":24,"value":221},"编译优化（MindCompiler）：静态图模式的关键模块，以全场景统一中间表达（MindIR）为媒介，将前端函数整体编译成执行效率更高的底层语言，同时进行全局性能优化，包括自动微分、代数化简等硬件无关优化，以及图算融合、算子生成等硬件相关优化。",{"type":18,"tag":142,"props":223,"children":224},{},[225],{"type":24,"value":226},"④. 动态图直调：动态图模式的关键模块，基于统一的Python表达层接口，匹配Python的解释执行模式，进行逐接口的解释执行，反向执行过程中会复用统一的自动微分功能。",{"type":18,"tag":142,"props":228,"children":229},{},[230],{"type":24,"value":231},"⑤. 全场景部署和多样性硬件：运行时（MindRT）按照上层编译优化的结果对接并调用底层硬件算子，同时通过“端-边-云”统一的运行时架构，支持包括联邦学习在内的“端-边-云”AI协同。",{"type":18,"tag":142,"props":233,"children":234},{},[235],{"type":24,"value":236},"⑥. 其他：面向轻量化推理的离线转换工具与轻量化推理引擎MindSpore Lite，以及调试调优工具、MindSpore Armour等，用户可根据需要选择使用。",{"type":18,"tag":88,"props":238,"children":239},{},[],{"type":18,"tag":173,"props":241,"children":243},{"id":242},"_22-各个模块之间的整体配合关系",[244],{"type":24,"value":245},"2.2 各个模块之间的整体配合关系：",{"type":18,"tag":247,"props":248,"children":249},"blockquote",{},[250],{"type":18,"tag":26,"props":251,"children":252},{},[253],{"type":24,"value":254},"昇思MindSpore作为全场景AI框架，所支持的有端（手机与IOT设备）、边（基站与路由设备）、云（服务器）场景的不同系列硬件，包括昇腾系列产品、英伟达NVIDIA系列产品、Arm系列的高通骁龙、华为麒麟的芯片等系列产品。",{"type":18,"tag":26,"props":256,"children":257},{},[258],{"type":18,"tag":105,"props":259,"children":261},{"alt":7,"src":260},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2024/08/23/a7fa4df243844fa0baa667be6cfe8f3d.png",[],{"type":18,"tag":138,"props":263,"children":264},{},[265,270,293,298,326],{"type":18,"tag":142,"props":266,"children":267},{},[268],{"type":24,"value":269},"①. 左边蓝色方框的是MindSpore主体框架，主要提供神经网络在训练、验证过程中相关的基础API功能，另外还会默认提供自动微分、自动并行等功能。",{"type":18,"tag":142,"props":271,"children":272},{},[273,275],{"type":24,"value":274},"②. 蓝色方框往下是MindSpore Data模块，可以利用该模块进行数据预处理，包括数据采样、数据迭代、数据格式转换等不同的数据操作：",{"type":18,"tag":138,"props":276,"children":277},{},[278,283,288],{"type":18,"tag":142,"props":279,"children":280},{},[281],{"type":24,"value":282},"在训练的过程会遇到很多调试调优的问题",{"type":18,"tag":142,"props":284,"children":285},{},[286],{"type":24,"value":287},"有MindSpore Insight模块对loss曲线、算子执行情况、权重参数变量等调试调优相关的数据进行可视化",{"type":18,"tag":142,"props":289,"children":290},{},[291],{"type":24,"value":292},"方便用户在训练过程中进行调试调优",{"type":18,"tag":142,"props":294,"children":295},{},[296],{"type":24,"value":297},"③. AI安全最简单的场景就是从攻防的视角来看，例如，攻击者在训练阶段掺入恶意数据，影响AI模型推理能力，于是MindSpore推出了MindSpore Armour模块，为MindSpore提供AI安全机制。",{"type":18,"tag":142,"props":299,"children":300},{},[301,303],{"type":24,"value":302},"④. 蓝色方框往上的内容跟算法开发相关的用户更加贴近：",{"type":18,"tag":138,"props":304,"children":305},{},[306,311,316,321],{"type":18,"tag":142,"props":307,"children":308},{},[309],{"type":24,"value":310},"存放大量的AI算法模型库ModelZoo",{"type":18,"tag":142,"props":312,"children":313},{},[314],{"type":24,"value":315},"提供面向不同领域的开发工具套件MindSpore DevKit",{"type":18,"tag":142,"props":317,"children":318},{},[319],{"type":24,"value":320},"高阶拓展库MindSpore Extend，科学计算套件MindSciences",{"type":18,"tag":142,"props":322,"children":323},{},[324],{"type":24,"value":325},"MindSpore首次探索将科学计算与深度学习结合，将数值计算与深度学习相结合，通过深度学习来支持电磁仿真、药物分子仿真等等。",{"type":18,"tag":142,"props":327,"children":328},{},[329],{"type":24,"value":330},"⑤. 神经网络模型训练完后，可以导出模型或者加载存放在MindSpore Hub中已经训练好的模型。接着有MindIR提供端云统一的IR格式，通过统一IR定义了网络的逻辑结构和算子的属性，将MindIR格式的模型文件与硬件平台解耦，实现一次训练多次部署。因此如图所示，通过IR把模型导出到不同的模块执行推理。",{"type":18,"tag":88,"props":332,"children":333},{},[],{"type":18,"tag":173,"props":335,"children":337},{"id":336},"_23-小结",[338],{"type":24,"value":339},"2.3 小结：",{"type":18,"tag":26,"props":341,"children":342},{},[343],{"type":24,"value":344},"昇思MindSpore是一款使能从算法研究到生产部署全流程的开源AI框架。开源至今，昇思MindSpore致力于提供更好的AI开发体验，关键特性和功能一直在持续演进和优化。",{"type":18,"tag":26,"props":346,"children":347},{},[348],{"type":18,"tag":105,"props":349,"children":351},{"alt":7,"src":350},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2024/08/23/c440c3a0ebab476d873d81df165e91da.png",[],{"type":18,"tag":138,"props":353,"children":354},{},[355,360,365,370,375,380],{"type":18,"tag":142,"props":356,"children":357},{},[358],{"type":24,"value":359},"①. 昇思MindSpore提供了高效的分布式并行原生能力，一行代码自动并行执行，实现千亿参数大模型训练。",{"type":18,"tag":142,"props":361,"children":362},{},[363],{"type":24,"value":364},"②. 支持图算深度融合，从图算分离优化到图算联合优化，充分发挥AI芯片的算力。",{"type":18,"tag":142,"props":366,"children":367},{},[368],{"type":24,"value":369},"③. 关于动静图的处理能力，从动静态图分离到动静统一，昇思MindSpore兼顾灵活开发与高效运行。",{"type":18,"tag":142,"props":371,"children":372},{},[373],{"type":24,"value":374},"④. AI+科学计算能力则使它成为了科学研究者的得力助手，并在生物分子、电磁、流体等领域具有广泛的应用。",{"type":18,"tag":142,"props":376,"children":377},{},[378],{"type":24,"value":379},"⑤. 企业级安全可信的特性则保证了数据和模型的安全性和可靠性，从消费级AI到企业级AI，打造AI可信生态。",{"type":18,"tag":142,"props":381,"children":382},{},[383],{"type":24,"value":384},"⑥. AI框架还支持多种编程范式，包括面向对象、函数式、函数式+面向对象融合等，让开发者可以根据自己的需求选择最适合的编程方式。",{"type":18,"tag":88,"props":386,"children":387},{},[],{"type":18,"tag":26,"props":389,"children":390},{},[391],{"type":24,"value":392},"三、如何快速来实践一下昇思MindSpore大模型平台？",{"type":18,"tag":26,"props":394,"children":395},{},[396],{"type":18,"tag":105,"props":397,"children":399},{"alt":7,"src":398},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2024/08/23/f0dade2a121e49b58236d55556f3190f.png",[],{"type":18,"tag":26,"props":401,"children":402},{},[403],{"type":24,"value":404},"打开官方提供的示例：\u003C\u003C手写数字体识别-LeNet5>>",{"type":18,"tag":406,"props":407,"children":409},"pre",{"code":408},".\n├── inference # 推理可视化相关代码\n│   ├── app.py # 推理核心启动文件\n│   ├── config.json # 推理权重文件配置\n│   └── requirements.txt # 推理可视化相关依赖文件\n└── train # 训练可视化相关代码\n    ├── pip-requirements.txt # 训练相关依赖文件，必须和启动文件同一级\n    ├── train_customize_aim.py # 自定义Aim训练代码，支持自定义评估\n    ├── train_gridsearch.py # grid search + LossMonitor 训练代码，支持标准评估\n    |── train_valaccmonitor.py # ValAccMonitor训练代码，支持标准评估\n    └── train.py # LossMonitor训练代码，支持标准评估\n",[410],{"type":18,"tag":411,"props":412,"children":413},"code",{"__ignoreMap":7},[414],{"type":24,"value":408},{"type":18,"tag":247,"props":416,"children":417},{},[418],{"type":18,"tag":26,"props":419,"children":420},{},[421],{"type":24,"value":422},"注：建议将推理可视化相关的代码放在inference文件夹下，训练相关的代码放在train文件夹下。注意该项目下不能有lfs文件，否则会调度失败。",{"type":18,"tag":26,"props":424,"children":425},{},[426],{"type":24,"value":427},"训练与评估：",{"type":18,"tag":429,"props":430,"children":432},"h3",{"id":431},"_31-评估方式1训练日志可视化",[433],{"type":24,"value":434},"3.1 评估方式1——训练日志可视化：",{"type":18,"tag":406,"props":436,"children":438},{"code":437},"# train.py，支持标准评估\n...\nfrom mindvision.engine.callback import LossMonitor\n...\n# 训练网络模型\nmodel.train(10, dataset_train, callbacks=[ckpoint, LossMonitor(0.01, 1875)])\n...\n# train_gridsearch.py，支持标准评估\n...\n# 训练代码\ndef train(args_opt):\n# grid search\nbatch_size_choice = [32, 64, 128]\nlearning_rate_choice = [0.01, 0.001, 0.0001]\nmomentum_choice = [0.9, 0.99]\nfor batch_size in batch_size_choice:\nfor learning_rate in learning_rate_choice:\nfor momentum in momentum_choice:\n...\n# LossMonitor or ValAccMonitor\nmodel.train(20, dataset_train, callbacks=[ckpoint, LossMonitor(learning_rate, steps)])\n...\n\n---\n\n### 3.2 评估方式2——自定义评估：\n\n评估方式1的评估指标有限，你也可以自己写评估代码，跟踪你想要关注的指标。比如下例train_customize_aim.py中以自定义Callback+Aim 跟踪指标 的方式跟踪每个epoch之后训练集和测试集的acc。\n\n```js\n# train_customize_aim.py\n...\nfrom aim import Run\n...\n# 自定义Callback\nclass AimCallback(Callback):\ndef __init__(self, model, dataset_test, aim_run):\nsuper(AimCallback, self).__init__()\nself.aim_run = aim_run # 传入aim实例\nself.model = model # 传入model，用于eval\nself.dataset_test = dataset_test # 传入dataset_test, 用于eval test\ndef step_end(self, run_context):\n\"\"\"step end\"\"\"\ncb_params = run_context.original_args()\n# loss\nepoch_num = cb_params.cur_epoch_num\nstep_num = cb_params.cur_step_num\nloss = cb_params.net_outputs\nrun1 = self.aim_run.track(float(str(loss)), name='loss', step=step_num, epoch=epoch_num,\ncontext={\"subset\": \"train\"})\ndef epoch_end(self, run_context):\n\"\"\"epoch end\"\"\"\ncb_params = run_context.original_args()\n# loss\nepoch_num = cb_params.cur_epoch_num\nstep_num = cb_params.cur_step_num\nloss = cb_params.net_outputs\ntrain_dataset = cb_params.train_dataset\ntrain_acc = self.model.eval(train_dataset)\ntest_acc = self.model.eval(self.dataset_test)\nprint(\"【Epoch:】\", epoch_num, \"【Step:】\", step_num, \"【loss:】\", loss, \"【train_acc:】\", train_acc['accuracy'], \"【test_acc:】\",\ntest_acc['accuracy'])\nself.aim_run.track(float(str(loss)), name='loss', epoch=epoch_num, context={\"subset\": \"train\"})\nself.aim_run.track(float(str(train_acc['accuracy'])), name='accuracy', epoch=epoch_num,\ncontext={\"subset\": \"train\"})\nself.aim_run.track(float(str(test_acc['accuracy'])), name='accuracy', epoch=epoch_num,\ncontext={\"subset\": \"test\"})\n...\n# Aim\naim_run = Run(repo=args_opt.aimrepo_url, experiment=f{args_opt.output_url}/bs{batch_size}_lr{learning_rate}_mt{momentum}\")\n# Log run parameters\naim_run['learning_rate'] = learning_rate\naim_run['momentum'] = momentum\naim_run['batch_size'] = batch_size\n# 训练网络模型\nmodel.train(2, dataset_train, callbacks=[ckpoint, AimCallback(model, dataset_test, aim_run)])\n...\n",[439],{"type":18,"tag":411,"props":440,"children":441},{"__ignoreMap":7},[442],{"type":24,"value":437},{"type":18,"tag":429,"props":444,"children":446},{"id":445},"_33-查看训练列表",[447],{"type":24,"value":448},"3.3 查看训练列表：",{"type":18,"tag":26,"props":450,"children":451},{},[452],{"type":18,"tag":105,"props":453,"children":455},{"alt":7,"src":454},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2024/08/23/b17b68f4fdb44536ba272e3b9f773166.png",[],{"type":18,"tag":429,"props":457,"children":459},{"id":458},"_34-推理可视化",[460],{"type":24,"value":461},"3.4 推理可视化：",{"type":18,"tag":26,"props":463,"children":464},{},[465],{"type":24,"value":466},"选择推理页签，点击启动按钮，启动过程会比较慢，请耐心等待，一般为5分钟以内，若时间过长，请检查推理代码。",{"type":18,"tag":26,"props":468,"children":469},{},[470],{"type":24,"value":471},"MNIST画板效果展示：",{"type":18,"tag":26,"props":473,"children":474},{},[475],{"type":18,"tag":105,"props":476,"children":478},{"alt":7,"src":477},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2024/08/23/f7e68c9133cd478181c9e5d66af5e38d.png",[],{"title":7,"searchDepth":480,"depth":480,"links":481},4,[482,484,485],{"id":175,"depth":483,"text":178},2,{"id":242,"depth":483,"text":245},{"id":336,"depth":483,"text":339,"children":486},[487,489,490],{"id":431,"depth":488,"text":434},3,{"id":445,"depth":488,"text":448},{"id":458,"depth":488,"text":461},"markdown","content:technology-blogs:zh:3278.md","content","technology-blogs/zh/3278.md","technology-blogs/zh/3278","md",1776506128612]