做影視網(wǎng)站關(guān)停不受限制的搜索瀏覽器
前言
MindSpore有兩種運(yùn)行模式:動(dòng)態(tài)圖模式和靜態(tài)圖模式。默認(rèn)情況下是動(dòng)態(tài)圖模式,也可以手工切換為靜態(tài)圖模式。
動(dòng)態(tài)圖模式
動(dòng)態(tài)圖的特點(diǎn)是計(jì)算圖的構(gòu)建和計(jì)算同時(shí)發(fā)生,符合Python的解釋執(zhí)行方式。在調(diào)試模型時(shí)較為方便,能夠?qū)崟r(shí)得到中間結(jié)果的值。但由于所有節(jié)點(diǎn)都需要被保存,導(dǎo)致難以對(duì)整個(gè)計(jì)算圖進(jìn)行優(yōu)化。在MindSpore中,動(dòng)態(tài)圖模式又被稱為PyNative模式,推薦在腳本開(kāi)發(fā)和網(wǎng)絡(luò)流程調(diào)試過(guò)程中使用。
靜態(tài)圖模式
相較于動(dòng)態(tài)圖而言,靜態(tài)圖的特點(diǎn)是將計(jì)算圖的構(gòu)建和實(shí)際計(jì)算分開(kāi)(Define and run)。
在MindSpore中,靜態(tài)圖模式又被稱為Graph模式,在Graph模式下,基于圖優(yōu)化、計(jì)算圖整圖下沉等技術(shù),編譯器可以針對(duì)圖進(jìn)行全局的優(yōu)化,獲得較好的性能,因此比較適合網(wǎng)絡(luò)固定且需要高性能的場(chǎng)景。
靜態(tài)圖模式的使用場(chǎng)景
MindSpore編譯器專注于Tensor數(shù)據(jù)的計(jì)算和微分處理,適合使用MindSpore API和基于Tensor對(duì)象的操作進(jìn)行靜態(tài)圖編譯優(yōu)化。靜態(tài)圖模式存在編譯耗時(shí),如果函數(shù)無(wú)需反復(fù)執(zhí)行,則使用靜態(tài)圖加速可能沒(méi)有價(jià)值。
靜態(tài)圖模式開(kāi)啟方式
MindSpore提供了jit裝飾器,可以通過(guò)修飾Python函數(shù)或者Python類的成員函數(shù)使其被編譯成計(jì)算圖,從而提高運(yùn)行速度。可以針對(duì)需要優(yōu)化的模塊進(jìn)行圖編譯加速,保持其他部分的動(dòng)態(tài)圖靈活性。jit修飾的部分始終以靜態(tài)圖模式運(yùn)行。當(dāng)需要對(duì)Tensor的某些運(yùn)算進(jìn)行編譯加速時(shí),可以在其定義的函數(shù)上使用jit修飾器。
基于裝飾器的開(kāi)啟方式
MindSpore提供了jit裝飾器,可以通過(guò)修飾Python函數(shù)或者Python類的成員函數(shù)使其被編譯成計(jì)算圖,從而提高運(yùn)行速度。通過(guò)對(duì)想要進(jìn)行性能優(yōu)化的部分進(jìn)行圖編譯加速,而保持其他部分仍使用解釋執(zhí)行方式,保持動(dòng)態(tài)圖的靈活性。被jit修飾的部分始終會(huì)以靜態(tài)圖模式進(jìn)行運(yùn)行。需要對(duì)Tensor的某些運(yùn)算進(jìn)行編譯加速時(shí),可以在其定義的函數(shù)上使用jit修飾器。
基于context的開(kāi)啟方式
靜態(tài)圖的語(yǔ)法約束
在MindSpore的Graph模式下,Python代碼會(huì)被編譯成靜態(tài)計(jì)算圖,然后執(zhí)行。靜態(tài)圖編譯器支持Python常用語(yǔ)法子集,以支持神經(jīng)網(wǎng)絡(luò)的構(gòu)建和訓(xùn)練。可以通過(guò)JitConfig配置選項(xiàng)來(lái)自定義編譯流程,包括控制優(yōu)化等級(jí)、模型執(zhí)行方式以及靜態(tài)圖語(yǔ)法支持級(jí)別。
總結(jié)
本文介紹了MindSpore中動(dòng)態(tài)圖(PyNative)和靜態(tài)圖(Graph)兩種運(yùn)行模式的特點(diǎn)和使用場(chǎng)景。動(dòng)態(tài)圖更適合模型調(diào)試和快速迭代,靜態(tài)圖則能提供更高的性能。詳細(xì)闡述了切換運(yùn)行模式的方法,包括使用jit裝飾器對(duì)部分函數(shù)進(jìn)行圖編譯加速,以及利用JitConfig選項(xiàng)進(jìn)一步優(yōu)化靜態(tài)圖的編譯和執(zhí)行。同時(shí)也提醒了靜態(tài)圖編程中的語(yǔ)法限制,并介紹了一些高級(jí)編程技巧以提高性能和穩(wěn)定性??偟膩?lái)說(shuō),MindSpore提供了靈活的動(dòng)態(tài)圖和高性能的靜態(tài)圖兩種選擇,開(kāi)發(fā)者可根據(jù)具體需求進(jìn)行合理選擇和應(yīng)用。