5分鐘在線體驗(yàn)MindSpore的圖層IR--MindIR
在線體驗(yàn) MindIR 格式模型生成
?
眾所周知,人工智能能有今天的發(fā)展離不開數(shù)據(jù)、算力和算法。作為普通的Copy攻城獅,手頭沒有良好的硬件支撐AI的學(xué)習(xí),焦頭爛額,還好有她--ModelArts 。ModelArts是華為云的一站式AI開發(fā)平臺(tái),其中有個(gè)「我的筆記本」功能,是即開即用、用于機(jī)器學(xué)習(xí)的在線集成開發(fā)環(huán)境,可以輕松的構(gòu)建、訓(xùn)練、調(diào)試、部署機(jī)器學(xué)習(xí)算法與模型。關(guān)鍵是免費(fèi)!免費(fèi)!免費(fèi)!
?
關(guān)于 MindIR
此次 MindSpore 第五期集訓(xùn)營的第一節(jié)課主要講的就是 MindIR 。MindIR是MindSpore提供的中間表達(dá)形式,可以幫助我們實(shí)現(xiàn)一次訓(xùn)練多處部署,實(shí)現(xiàn)端云互通。比如我們可以在Ascend AI處理器、GPU、CPU等不同平臺(tái)上訓(xùn)練并導(dǎo)出MindIR文件,然后快速部署到手機(jī)端或者用MindSpore Serving服務(wù)等環(huán)境上,體驗(yàn)到MindSpore的全場景能力。MindIR的具體實(shí)現(xiàn)細(xì)節(jié)請(qǐng)閱讀《AI框架中圖層IR的分析》。因?yàn)?,Copy攻城獅只關(guān)心如何應(yīng)用:
接下來通過兩個(gè)具體的在線案例了解一下 MindIR 格式的模型是如何生成的。
導(dǎo)出LeNet網(wǎng)絡(luò)的MindIR格式模型
官方文檔:保存模型
查看源碼
下載notebook
在云上體驗(yàn)
這是一個(gè)可以在 CPU 環(huán)境運(yùn)行的案例,使用的是 LeNet 網(wǎng)絡(luò) 和 MNIST 數(shù)據(jù)集。具體的實(shí)現(xiàn)本文不再贅述,總之這個(gè)案例詳細(xì)介紹了 MindSpore 中數(shù)據(jù)處理、網(wǎng)絡(luò)定義、模型訓(xùn)練、模型保存、模型驗(yàn)證等相關(guān)知識(shí)點(diǎn)。本文關(guān)注點(diǎn)在「導(dǎo)出MindIR格式文件」。 點(diǎn)擊上邊或者官方文檔的 「Run in ModelArts」 就可跳轉(zhuǎn)到華為云一站式AI開發(fā)平臺(tái),我們進(jìn)入的其實(shí)是 ModelArts 的 「我的筆記本」功能--一個(gè)基于 JupyterLab 構(gòu)建的在線集成開發(fā)環(huán)境,還可以快速切換不同環(huán)境平臺(tái)。當(dāng)前案例使用的是 GPU 環(huán)境,MindSpore 版本為 1.0.1 。根據(jù)文檔并執(zhí)行代碼,我們很快就能實(shí)現(xiàn)一個(gè) LeNet 網(wǎng)絡(luò)并得到訓(xùn)練之后的模型。
目前導(dǎo)出 MINDIR 格式模型文件基于前置步驟生成的 CheckPoint 文件。官方文檔建議使用.mindir作為MINDIR格式文件的后綴名。導(dǎo)出 MINDIR 格式文件的代碼如下:
from?mindspore.train.serialization?import?export,?load_checkpoint,?load_param_into_net
from?mindspore?import?Tensor
import?numpy?as?np
lenet?=?LeNet5()
#?返回模型的參數(shù)字典
param_dict?=?load_checkpoint("./models/ckpt/mindspore_save_model/lenet-1_1875.ckpt")
#?加載參數(shù)到網(wǎng)絡(luò)
load_param_into_net(lenet,?param_dict)
input?=?np.random.uniform(0.0,?1.0,?size=[32,?1,?32,?32]).astype(np.float32)
#?以指定的名稱和格式導(dǎo)出文件
export(lenet,?Tensor(input),?file_name='lenet-1_1875.mindir',?file_format='MINDIR',)
導(dǎo)出完成之后,在當(dāng)前目錄下會(huì)生成一個(gè)MINDIR格式文件,如下圖中名為lenet-1_1875.mindir的文件。
當(dāng)然如果您想將 LeNet 模型導(dǎo)出為不同格式的文件,建議您進(jìn)行封裝,具體實(shí)踐請(qǐng)參考mindspore/model_zoo/official/cv/lenet/export.py
訓(xùn)練ResNet50網(wǎng)絡(luò)導(dǎo)出MindIR格式模型
官方文檔:使用ResNet-50網(wǎng)絡(luò)實(shí)現(xiàn)圖像分類
查看源碼
下載notebook
在云上體驗(yàn)
有了上一次的在線體驗(yàn),在進(jìn)行訓(xùn)練ResNet50網(wǎng)絡(luò)導(dǎo)出MindIR格式模型的時(shí)候,可謂“輕車熟路”,同樣的點(diǎn)擊「Run in ModelArts」開始我們的云端AI開發(fā)之旅。這次我們使用的是ResNet-50網(wǎng)絡(luò),CIFAR-10數(shù)據(jù)集,依舊是 MIndSpore 1.0.1 版本,不過是 GPU 環(huán)境的。
目前, ModelArts 中 「我的筆記本」要想使用 GPU 版本的 MIndSpore,好像暫時(shí)只有這個(gè)入口。 當(dāng)然,這個(gè)案例中并沒有實(shí)現(xiàn)將模型導(dǎo)出為 MindIR 格式,需要我們手動(dòng)添加,唯一值得注意的是 MindSpore 1.0.1 和 MIndSpore 1.1.0 中 導(dǎo)出的方法「export」放在不同的命名空間下,1.1.0版本的引入方法是
from?mindspore?import?Tensor,?export,?load_checkpoint,?load_param_into_net
而 1.1.0版本中的引入方法是
from?mindspore.train.serialization?import?export,?load_checkpoint,?load_param_into_net
因此,這里導(dǎo)出ResNet50網(wǎng)絡(luò) MindIR 格式的代碼為:
from?resnet?import?resnet50
from?mindspore.train.serialization?import?export,?load_checkpoint,?load_param_into_net
from?mindspore?import?Tensor
import?numpy?as?np
resnet?=?resnet50(batch_size=32,?num_classes=10)
#?return?a?parameter?dict?for?model
param_dict?=?load_checkpoint("./models/ckpt/mindspore_vision_application/train_resnet_cifar10-10_1562.ckpt")
#?load?the?parameter?into?net
load_param_into_net(resnet,?param_dict)
input?=?np.random.uniform(0.0,?1.0,?size=[32,?3,?224,?224]).astype(np.float32)
export(resnet,?Tensor(input),?file_name='resnet_cifar10-10_1562.mindir',?file_format='MINDIR')
不過這兩個(gè)在線案例導(dǎo)出之后的 MindIR 格式,我還沒來得及驗(yàn)證是否能正常使用。如果您知道快速驗(yàn)證的方法,請(qǐng)您分享與我,感謝大家多多指教!
在線體驗(yàn) MindIR 格式模型生成
眾所周知,人工智能能有今天的發(fā)展離不開數(shù)據(jù)、算力和算法。作為普通的Copy攻城獅,手頭沒有良好的硬件支撐AI的學(xué)習(xí),焦頭爛額,還好有她--ModelArts 。ModelArts是華為云的一站式AI開發(fā)平臺(tái),其中有個(gè)「我的筆記本」功能,是即開即用、用于機(jī)器學(xué)習(xí)的在線集成開發(fā)環(huán)境,可以輕松的構(gòu)建、訓(xùn)練、調(diào)試、部署機(jī)器學(xué)習(xí)算法與模型。關(guān)鍵是免費(fèi)!免費(fèi)!免費(fèi)!
關(guān)于 MindIR
此次 MindSpore 第五期集訓(xùn)營的第一節(jié)課主要講的就是 MindIR 。MindIR是MindSpore提供的中間表達(dá)形式,可以幫助我們實(shí)現(xiàn)一次訓(xùn)練多處部署,實(shí)現(xiàn)端云互通。比如我們可以在Ascend AI處理器、GPU、CPU等不同平臺(tái)上訓(xùn)練并導(dǎo)出MindIR文件,然后快速部署到手機(jī)端或者用MindSpore Serving服務(wù)等環(huán)境上,體驗(yàn)到MindSpore的全場景能力。MindIR的具體實(shí)現(xiàn)細(xì)節(jié)請(qǐng)閱讀《AI框架中圖層IR的分析》。因?yàn)?,Copy攻城獅只關(guān)心如何應(yīng)用:
接下來通過兩個(gè)具體的在線案例了解一下 MindIR 格式的模型是如何生成的。
導(dǎo)出LeNet網(wǎng)絡(luò)的MindIR格式模型
官方文檔:保存模型
這是一個(gè)可以在 CPU 環(huán)境運(yùn)行的案例,使用的是 LeNet 網(wǎng)絡(luò) 和 MNIST 數(shù)據(jù)集。具體的實(shí)現(xiàn)本文不再贅述,總之這個(gè)案例詳細(xì)介紹了 MindSpore 中數(shù)據(jù)處理、網(wǎng)絡(luò)定義、模型訓(xùn)練、模型保存、模型驗(yàn)證等相關(guān)知識(shí)點(diǎn)。本文關(guān)注點(diǎn)在「導(dǎo)出MindIR格式文件」。 點(diǎn)擊上邊或者官方文檔的 「Run in ModelArts」 就可跳轉(zhuǎn)到華為云一站式AI開發(fā)平臺(tái),我們進(jìn)入的其實(shí)是 ModelArts 的 「我的筆記本」功能--一個(gè)基于 JupyterLab 構(gòu)建的在線集成開發(fā)環(huán)境,還可以快速切換不同環(huán)境平臺(tái)。當(dāng)前案例使用的是 GPU 環(huán)境,MindSpore 版本為 1.0.1 。根據(jù)文檔并執(zhí)行代碼,我們很快就能實(shí)現(xiàn)一個(gè) LeNet 網(wǎng)絡(luò)并得到訓(xùn)練之后的模型。
目前導(dǎo)出 MINDIR 格式模型文件基于前置步驟生成的 CheckPoint 文件。官方文檔建議使用.mindir作為MINDIR格式文件的后綴名。導(dǎo)出 MINDIR 格式文件的代碼如下:
from?mindspore.train.serialization?import?export,?load_checkpoint,?load_param_into_net
from?mindspore?import?Tensor
import?numpy?as?np
lenet?=?LeNet5()
#?返回模型的參數(shù)字典
param_dict?=?load_checkpoint("./models/ckpt/mindspore_save_model/lenet-1_1875.ckpt")
#?加載參數(shù)到網(wǎng)絡(luò)
load_param_into_net(lenet,?param_dict)
input?=?np.random.uniform(0.0,?1.0,?size=[32,?1,?32,?32]).astype(np.float32)
#?以指定的名稱和格式導(dǎo)出文件
export(lenet,?Tensor(input),?file_name='lenet-1_1875.mindir',?file_format='MINDIR',)
導(dǎo)出完成之后,在當(dāng)前目錄下會(huì)生成一個(gè)MINDIR格式文件,如下圖中名為lenet-1_1875.mindir的文件。
當(dāng)然如果您想將 LeNet 模型導(dǎo)出為不同格式的文件,建議您進(jìn)行封裝,具體實(shí)踐請(qǐng)參考mindspore/model_zoo/official/cv/lenet/export.py
訓(xùn)練ResNet50網(wǎng)絡(luò)導(dǎo)出MindIR格式模型
官方文檔:使用ResNet-50網(wǎng)絡(luò)實(shí)現(xiàn)圖像分類
有了上一次的在線體驗(yàn),在進(jìn)行訓(xùn)練ResNet50網(wǎng)絡(luò)導(dǎo)出MindIR格式模型的時(shí)候,可謂“輕車熟路”,同樣的點(diǎn)擊「Run in ModelArts」開始我們的云端AI開發(fā)之旅。這次我們使用的是ResNet-50網(wǎng)絡(luò),CIFAR-10數(shù)據(jù)集,依舊是 MIndSpore 1.0.1 版本,不過是 GPU 環(huán)境的。
目前, ModelArts 中 「我的筆記本」要想使用 GPU 版本的 MIndSpore,好像暫時(shí)只有這個(gè)入口。 當(dāng)然,這個(gè)案例中并沒有實(shí)現(xiàn)將模型導(dǎo)出為 MindIR 格式,需要我們手動(dòng)添加,唯一值得注意的是 MindSpore 1.0.1 和 MIndSpore 1.1.0 中 導(dǎo)出的方法「export」放在不同的命名空間下,1.1.0版本的引入方法是
from?mindspore?import?Tensor,?export,?load_checkpoint,?load_param_into_net
而 1.1.0版本中的引入方法是
from?mindspore.train.serialization?import?export,?load_checkpoint,?load_param_into_net
因此,這里導(dǎo)出ResNet50網(wǎng)絡(luò) MindIR 格式的代碼為:
from?resnet?import?resnet50
from?mindspore.train.serialization?import?export,?load_checkpoint,?load_param_into_net
from?mindspore?import?Tensor
import?numpy?as?np
resnet?=?resnet50(batch_size=32,?num_classes=10)
#?return?a?parameter?dict?for?model
param_dict?=?load_checkpoint("./models/ckpt/mindspore_vision_application/train_resnet_cifar10-10_1562.ckpt")
#?load?the?parameter?into?net
load_param_into_net(resnet,?param_dict)
input?=?np.random.uniform(0.0,?1.0,?size=[32,?3,?224,?224]).astype(np.float32)
export(resnet,?Tensor(input),?file_name='resnet_cifar10-10_1562.mindir',?file_format='MINDIR')
不過這兩個(gè)在線案例導(dǎo)出之后的 MindIR 格式,我還沒來得及驗(yàn)證是否能正常使用。如果您知道快速驗(yàn)證的方法,請(qǐng)您分享與我,感謝大家多多指教!
MindSpore 機(jī)器學(xué)習(xí) 深度學(xué)習(xí)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。