[{"data":1,"prerenderedAt":251},["ShallowReactive",2],{"content-query-7RblLmWpEt":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":245,"_id":246,"_source":247,"_file":248,"_stem":249,"_extension":250},"/technology-blogs/zh/3561","zh",false,"","基于MindSpore的香橙派AIpro实现垃圾回收AI识别方案一：如何快速实践昇思MindSpore大模型平台？","作者：完美记号   原文链接：https://www.hiascend.com/developer/blog/details/0272157975874351541","2024-12-26","https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2025/01/15/8669c4ca2ffa4f7b85b75b2d1987cbfc.png","technology-blogs","开发者分享",{"type":15,"children":16,"toc":242},"root",[17,25,37,53,58,66,71,76,84,89,94,102,109,114,124,133,141,149,157,165,173,178,186,194,202,209,217,225,230,235],{"type":18,"tag":19,"props":20,"children":22},"element","h1",{"id":21},"基于mindspore的香橙派aipro实现垃圾回收ai识别方案一如何快速实践昇思mindspore大模型平台",[23],{"type":24,"value":8},"text",{"type":18,"tag":26,"props":27,"children":28},"p",{},[29,31],{"type":24,"value":30},"**作****者：**",{"type":18,"tag":32,"props":33,"children":34},"strong",{},[35],{"type":24,"value":36},"完美记号",{"type":18,"tag":26,"props":38,"children":39},{},[40,42],{"type":24,"value":41},"**原文链接：**",{"type":18,"tag":32,"props":43,"children":44},{},[45],{"type":18,"tag":46,"props":47,"children":51},"a",{"href":48,"rel":49},"https://www.hiascend.com/developer/blog/details/0272157975874351541",[50],"nofollow",[52],{"type":24,"value":48},{"type":18,"tag":26,"props":54,"children":55},{},[56],{"type":24,"value":57},"随着AI人工智能、机器学习的不断发展，开发者的编程领域也在经历着一场前所未有的变革，在这个过程中，各行各业都开始不断的发展，包括金融、‌医疗、‌教育、‌工业、‌游戏、‌法律等多个行业，‌以及智能硬件领域，‌如智能汽车、‌机器人、‌智能终端等。",{"type":18,"tag":26,"props":59,"children":60},{},[61],{"type":18,"tag":62,"props":63,"children":65},"img",{"alt":7,"src":64},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2024/12/27/0376c1ac0759486599f9109f30edbb9c.png",[],{"type":18,"tag":26,"props":67,"children":68},{},[69],{"type":24,"value":70},"作者也是经过了以上几个阶段的软件开发历程，从Web时代编程、到云时代分布式编程，到如今的AI时代，AI技术的发展还带动了相关行业的创新和转型，‌如人工智能和机器学习技术的不断进步和应用范围的扩大，‌推动了社会进步和技术革新。‌随着算法的改进和计算能力的提升，‌AI技术的准确性和效率也在不断增强，‌为各行各业的发展提供了新的动力和支持。",{"type":18,"tag":26,"props":72,"children":73},{},[74],{"type":24,"value":75},"AI技术的发展为各个领域带来了许多创新和便利。那么，在实际的应用中，如何正确的来使用AI进行提高效率呢，值得大家来思考一下？今天给大家分享如何快速实践昇思MindSpore大模型平台，昇思MindSpore旨在实现易开发、高效执行、全场景统一部署三大目标，降低了AI开发者的开发门槛，非常适合各种场景的学习与实践，接下来，带大家一起来实际体验一下。",{"type":18,"tag":26,"props":77,"children":78},{},[79],{"type":18,"tag":32,"props":80,"children":81},{},[82],{"type":24,"value":83},"昇思MindSpore是什么？",{"type":18,"tag":26,"props":85,"children":86},{},[87],{"type":24,"value":88},"昇思MindSpore是新一代覆盖端边云全场景的开源AI框架，旨在开创全新的AI编程范式，降低开发者门槛，为开发者打造开发友好、运行高效、部署灵活的AI框架，推动人工智能生态繁荣发展。昇思在致力于技术创新的同时，着力打造学习型社区环境，希望凝聚开发者力量共建社区，与开发者共同学习和成长。",{"type":18,"tag":26,"props":90,"children":91},{},[92],{"type":24,"value":93},"自2020年3月28日开源以来，昇思MindSpore致力于围绕产品与产业界、学术界共建人工智能框架开源生态，成为框架新选择。目前已孵化、支持50+国内外主流大模型；开源版本已累计获得1100万次下载，覆盖全球133多个国家和地区的2400多个城市，共有3.7万多名开发者参与社区贡献；与360多所高校科研院所展开教学及科研合作，联合1700多位生态伙伴，打造了超过2000+解决方案。",{"type":18,"tag":26,"props":95,"children":96},{},[97],{"type":18,"tag":32,"props":98,"children":99},{},[100],{"type":24,"value":101},"如何快速实践昇思MindSpore大模型平台？",{"type":18,"tag":26,"props":103,"children":104},{},[105],{"type":18,"tag":62,"props":106,"children":108},{"alt":7,"src":107},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2024/12/27/18c41684e2cd4d3e809b0b28cca28933.png",[],{"type":18,"tag":26,"props":110,"children":111},{},[112],{"type":24,"value":113},"打开官方提供的示例：\u003C\u003C手写数字体识别-LeNet5>>",{"type":18,"tag":115,"props":116,"children":118},"pre",{"code":117},".\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",[119],{"type":18,"tag":120,"props":121,"children":122},"code",{"__ignoreMap":7},[123],{"type":24,"value":117},{"type":18,"tag":26,"props":125,"children":126},{},[127],{"type":18,"tag":128,"props":129,"children":130},"em",{},[131],{"type":24,"value":132},"注：建议将推理可视化相关的代码放在inference文件夹下，训练相关的代码放在train文件夹下。注意该项目下不能有lfs文件，否则会调度失败。",{"type":18,"tag":26,"props":134,"children":135},{},[136],{"type":18,"tag":32,"props":137,"children":138},{},[139],{"type":24,"value":140},"0****1",{"type":18,"tag":26,"props":142,"children":143},{},[144],{"type":18,"tag":32,"props":145,"children":146},{},[147],{"type":24,"value":148},"评估方式1——训练日志可视化：",{"type":18,"tag":115,"props":150,"children":152},{"code":151},"# 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",[153],{"type":18,"tag":120,"props":154,"children":155},{"__ignoreMap":7},[156],{"type":24,"value":151},{"type":18,"tag":26,"props":158,"children":159},{},[160],{"type":18,"tag":32,"props":161,"children":162},{},[163],{"type":24,"value":164},"0****2",{"type":18,"tag":26,"props":166,"children":167},{},[168],{"type":18,"tag":32,"props":169,"children":170},{},[171],{"type":24,"value":172},"评估方式2——自定义评估：",{"type":18,"tag":26,"props":174,"children":175},{},[176],{"type":24,"value":177},"评估方式1的评估指标有限，你也可以自己写评估代码，跟踪你想要关注的指标。比如下例train_customize_aim.py中以自定义Callback+Aim 跟踪指标 的方式跟踪每个epoch之后训练集和测试集的acc。",{"type":18,"tag":115,"props":179,"children":181},{"code":180},"```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",[182],{"type":18,"tag":120,"props":183,"children":184},{"__ignoreMap":7},[185],{"type":24,"value":180},{"type":18,"tag":26,"props":187,"children":188},{},[189],{"type":18,"tag":32,"props":190,"children":191},{},[192],{"type":24,"value":193},"0****3",{"type":18,"tag":26,"props":195,"children":196},{},[197],{"type":18,"tag":32,"props":198,"children":199},{},[200],{"type":24,"value":201},"查看训练列表",{"type":18,"tag":26,"props":203,"children":204},{},[205],{"type":18,"tag":62,"props":206,"children":208},{"alt":7,"src":207},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2024/12/27/fde1e596ddfe427cbcb558aab425f7ce.png",[],{"type":18,"tag":26,"props":210,"children":211},{},[212],{"type":18,"tag":32,"props":213,"children":214},{},[215],{"type":24,"value":216},"0****4",{"type":18,"tag":26,"props":218,"children":219},{},[220],{"type":18,"tag":32,"props":221,"children":222},{},[223],{"type":24,"value":224},"推理可视化",{"type":18,"tag":26,"props":226,"children":227},{},[228],{"type":24,"value":229},"选择推理页签，点击启动按钮，启动过程会比较慢，请耐心等待，一般为5分钟以内，若时间过长，请检查推理代码。",{"type":18,"tag":26,"props":231,"children":232},{},[233],{"type":24,"value":234},"MNIST画板效果展示：",{"type":18,"tag":26,"props":236,"children":237},{},[238],{"type":18,"tag":62,"props":239,"children":241},{"alt":7,"src":240},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2024/12/27/009ace40a9e64573bb4352d8c7b3e504.png",[],{"title":7,"searchDepth":243,"depth":243,"links":244},4,[],"markdown","content:technology-blogs:zh:3561.md","content","technology-blogs/zh/3561.md","technology-blogs/zh/3561","md",1776506131075]