日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

MindSpore API编程概述

發(fā)布時(shí)間:2023/11/28 生活经验 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MindSpore API编程概述 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

MindSpore API編程概述
總體架構(gòu)
MindSpore是一個(gè)全場(chǎng)景深度學(xué)習(xí)框架,旨在實(shí)現(xiàn)易開(kāi)發(fā)、高效執(zhí)行、全場(chǎng)景覆蓋三大目標(biāo),其中易開(kāi)發(fā)表現(xiàn)為API友好、調(diào)試難度低,高效執(zhí)行包括計(jì)算效率、數(shù)據(jù)預(yù)處理效率和分布式訓(xùn)練效率,全場(chǎng)景則指框架同時(shí)支持云、邊緣以及端側(cè)場(chǎng)景。
MindSpore總體架構(gòu)分為前端表示層(Mind Expression,ME)、計(jì)算圖引擎(Graph Engine,GE)和后端運(yùn)行時(shí)三個(gè)部分。ME提供了用戶(hù)級(jí)應(yīng)用軟件編程接口(Application Programming Interface,API),用于科學(xué)計(jì)算以及構(gòu)建和訓(xùn)練神經(jīng)網(wǎng)絡(luò),并將用戶(hù)的Python代碼轉(zhuǎn)換為數(shù)據(jù)流圖。GE是算子和硬件資源的管理器,負(fù)責(zé)控制從ME接收的數(shù)據(jù)流圖的執(zhí)行。后端運(yùn)行時(shí)包含云、邊、端上不同環(huán)境中的高效運(yùn)行環(huán)境,例如CPU、GPU、Ascend AI處理器、 Android/iOS等。更多總體架構(gòu)的相關(guān)內(nèi)容請(qǐng)參見(jiàn)總體架構(gòu)。
設(shè)計(jì)理念
MindSpore源于全產(chǎn)業(yè)的最佳實(shí)踐,向數(shù)據(jù)科學(xué)家和算法工程師提供了統(tǒng)一的模型訓(xùn)練、推理和導(dǎo)出等接口,支持端、邊、云等不同場(chǎng)景下的靈活部署,推動(dòng)深度學(xué)習(xí)和科學(xué)計(jì)算等領(lǐng)域繁榮發(fā)展。
MindSpore目前提供了Python編程范式,用戶(hù)使用Python原生控制邏輯,即可構(gòu)建復(fù)雜的神經(jīng)網(wǎng)絡(luò)模型,AI編程變得簡(jiǎn)單,具體示例請(qǐng)參見(jiàn)實(shí)現(xiàn)一個(gè)圖片分類(lèi)應(yīng)用。
目前主流的深度學(xué)習(xí)框架的執(zhí)行模式有兩種,分別為靜態(tài)圖模式和動(dòng)態(tài)圖模式。靜態(tài)圖模式,擁有較高的訓(xùn)練性能,但難以調(diào)試。動(dòng)態(tài)圖模式相較于靜態(tài)圖模式,雖然易于調(diào)試,但難以高效執(zhí)行。MindSpore提供了動(dòng)態(tài)圖和靜態(tài)圖統(tǒng)一的編碼方式,大大增加了靜態(tài)圖和動(dòng)態(tài)圖的可兼容性,用戶(hù)無(wú)需開(kāi)發(fā)多套代碼,僅變更一行代碼便可切換動(dòng)態(tài)圖/靜態(tài)圖模式,例如設(shè)置context.set_context(mode=context.PYNATIVE_MODE)切換成動(dòng)態(tài)圖模式,設(shè)置context.set_context(mode=context.GRAPH_MODE),即可切換成靜態(tài)圖模式,用戶(hù)可擁有更輕松的開(kāi)發(fā)調(diào)試及性能體驗(yàn)。
神經(jīng)網(wǎng)絡(luò)模型通常基于梯度下降算法進(jìn)行訓(xùn)練,但手動(dòng)求導(dǎo)過(guò)程復(fù)雜,結(jié)果容易出錯(cuò)。MindSpore的基于源碼轉(zhuǎn)換(Source Code Transformation,SCT)的自動(dòng)微分(Automatic Differentiation)機(jī)制,采用函數(shù)式可微分編程架構(gòu),在接口層提供Python編程接口,包括控制流的表達(dá)。用戶(hù)可聚焦于模型算法的數(shù)學(xué)原生表達(dá),無(wú)需手動(dòng)進(jìn)行求導(dǎo),自動(dòng)微分的樣例代碼如下所示。
import mindspore as ms
from mindspore import ops
grad_all = ops.composite.GradOperation()
def func(x): return x * x * x
def df_func(x):
return grad_all(func)(x)
@ms.ms_function
def df2_func(x):
return grad_all(df_func)(x)
if name == “main”:
print(df2_func(ms.Tensor(2, ms.float32)))
其中,第一步定義了一個(gè)函數(shù)(計(jì)算圖),第二步利用MindSpore提供的反向接口進(jìn)行自動(dòng)微分,定義了一個(gè)一階導(dǎo)數(shù)函數(shù)(計(jì)算圖),第三步定義了一個(gè)二階導(dǎo)數(shù)函數(shù)(計(jì)算圖),最后給定輸入,就能獲取第一步定義的函數(shù)在指定處的二階導(dǎo)數(shù),二階導(dǎo)數(shù)求導(dǎo)結(jié)果為12。
此外,SCT能夠?qū)ython代碼轉(zhuǎn)換為MindSpore函數(shù)中間表達(dá)(Intermediate Representation,IR),該函數(shù)中間表達(dá),構(gòu)造出能夠在不同設(shè)備解析和執(zhí)行的計(jì)算圖,并且在執(zhí)行該計(jì)算圖前,應(yīng)用了多種軟硬件協(xié)同優(yōu)化技術(shù),端、邊、云等不同場(chǎng)景下的性能和效率得到針對(duì)性的提升。
如何提高數(shù)據(jù)處理能力,以匹配人工智能芯片的算力,是保證人工智能芯片發(fā)揮極致性能的關(guān)鍵。MindSpore為用戶(hù)提供了多種數(shù)據(jù)處理算子,通過(guò)自動(dòng)數(shù)據(jù)加速技術(shù)實(shí)現(xiàn)了高性能的流水線,包括數(shù)據(jù)加載、數(shù)據(jù)論證、數(shù)據(jù)轉(zhuǎn)換等,支持CV/NLP/GNN等全場(chǎng)景的數(shù)據(jù)處理能力。MindRecord是MindSpore的自研數(shù)據(jù)格式,具有讀寫(xiě)高效、易于分布式處理等優(yōu)點(diǎn),用戶(hù)可將非標(biāo)準(zhǔn)的數(shù)據(jù)集和常用的數(shù)據(jù)集轉(zhuǎn)換為MindRecord格式,從而獲得更好的性能體驗(yàn),轉(zhuǎn)換詳情請(qǐng)參見(jiàn)MindSpore數(shù)據(jù)格式轉(zhuǎn)換。MindSpore支持加載常用的數(shù)據(jù)集和多種數(shù)據(jù)存儲(chǔ)格式下的數(shù)據(jù)集,例如通過(guò)dataset=dataset.Cifar10Dataset(“Cifar10Data/”),即可完成CIFAR-10數(shù)據(jù)集的加載,其中Cifar10Data/為數(shù)據(jù)集本地所在目錄,用戶(hù)也可通過(guò)GeneratorDataset,自定義數(shù)據(jù)集的加載方式。數(shù)據(jù)增強(qiáng)是一種基于(有限)數(shù)據(jù)生成新數(shù)據(jù)的方法,能夠減少網(wǎng)絡(luò)模型過(guò)擬合的現(xiàn)象,從而提高模型的泛化能力。MindSpore除了支持用戶(hù)自定義數(shù)據(jù)增強(qiáng)外,還提供了自動(dòng)數(shù)據(jù)增強(qiáng)方式,使得數(shù)據(jù)增強(qiáng)更加靈活,詳情請(qǐng)見(jiàn)自動(dòng)數(shù)據(jù)增強(qiáng)。
深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)模型通常含有較多的隱藏層進(jìn)行特征提取,但特征提取隨機(jī)化、調(diào)試過(guò)程不可視限制了深度學(xué)習(xí)技術(shù)的可信和調(diào)優(yōu)。MindSpore支持可視化調(diào)試調(diào)優(yōu)(MindInsight),提供訓(xùn)練看板、溯源、性能分析和調(diào)試器等功能,幫助用戶(hù)發(fā)現(xiàn)模型訓(xùn)練過(guò)程中出現(xiàn)的偏差,輕松進(jìn)行模型調(diào)試和性能調(diào)優(yōu)。例如用戶(hù)可在初始化網(wǎng)絡(luò)前,通過(guò)profiler=Profiler()初始化Profiler對(duì)象,自動(dòng)收集訓(xùn)練過(guò)程中的算子耗時(shí)等信息并記錄到文件中,在訓(xùn)練結(jié)束后,調(diào)用profiler.analyse()停止收集,并生成性能分析結(jié)果,以可視化形式供用戶(hù)查看分析,從而更高效地調(diào)試網(wǎng)絡(luò)性能,更多調(diào)試調(diào)優(yōu)相關(guān)內(nèi)容請(qǐng)見(jiàn)訓(xùn)練過(guò)程可視化。
隨著神經(jīng)網(wǎng)絡(luò)模型和數(shù)據(jù)集的規(guī)模不斷增加,分布式并行訓(xùn)練成為了神經(jīng)網(wǎng)絡(luò)訓(xùn)練的常見(jiàn)做法,但分布式并行訓(xùn)練的策略選擇和編寫(xiě)十分復(fù)雜,這嚴(yán)重制約著深度學(xué)習(xí)模型的訓(xùn)練效率,阻礙深度學(xué)習(xí)的發(fā)展。MindSpore統(tǒng)一了單機(jī)和分布式訓(xùn)練的編碼方式,開(kāi)發(fā)者無(wú)需編寫(xiě)復(fù)雜的分布式策略,在單機(jī)代碼中添加少量代碼即可實(shí)現(xiàn)分布式訓(xùn)練,例如設(shè)置context.set_auto_parallel_context(parallel_mode=ParallelMode.AUTO_PARALLEL),便可自動(dòng)建立代價(jià)模型,為用戶(hù)選擇一種較優(yōu)的并行模式,提高神經(jīng)網(wǎng)絡(luò)訓(xùn)練效率,大大降低了AI開(kāi)發(fā)門(mén)檻,使用戶(hù)能夠快速實(shí)現(xiàn)模型思路,更多內(nèi)容請(qǐng)見(jiàn)分布式并行訓(xùn)練。
層次結(jié)構(gòu)
MindSpore向用戶(hù)提供了3個(gè)不同層次的API,支撐用戶(hù)進(jìn)行網(wǎng)絡(luò)構(gòu)建、整圖執(zhí)行、子圖執(zhí)行以及單算子執(zhí)行,從低到高分別為L(zhǎng)ow-Level Python API、Medium-Level Python API以及High-Level Python API。

? Low-Level Python API
第一層為低階API,主要包括張量定義、基礎(chǔ)算子、自動(dòng)微分等模塊,用戶(hù)可使用低階API輕松實(shí)現(xiàn)張量定義和求導(dǎo)計(jì)算,例如用戶(hù)可通過(guò)Tensor接口自定義張量,使用ops.composite模塊下的GradOperation算子計(jì)算函數(shù)在指定處的導(dǎo)數(shù)。
? Medium-Level Python API
第二層為中階API,其封裝了低價(jià)API,提供網(wǎng)絡(luò)層、優(yōu)化器、損失函數(shù)等模塊,用戶(hù)可通過(guò)中階API靈活構(gòu)建神經(jīng)網(wǎng)絡(luò)和控制執(zhí)行流程,快速實(shí)現(xiàn)模型算法邏輯,例如用戶(hù)可調(diào)用Cell接口,構(gòu)建神經(jīng)網(wǎng)絡(luò)模型和計(jì)算邏輯,通過(guò)使用loss模塊和Optimizer接口,為神經(jīng)網(wǎng)絡(luò)模型添加損失函數(shù)和優(yōu)化方式,利用dataset模塊對(duì)數(shù)據(jù)進(jìn)行處理,以供模型的訓(xùn)練和推導(dǎo)使用。
? High-Level Python API
第三層為高階API,其在中階API的基礎(chǔ)上,又提供了訓(xùn)練推理的管理、混合精度訓(xùn)練、調(diào)試調(diào)優(yōu)等高級(jí)接口,方便用戶(hù)控制整網(wǎng)的執(zhí)行流程和實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練推理及調(diào)優(yōu),例如用戶(hù)使用Model接口,指定要訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型和相關(guān)的訓(xùn)練設(shè)置,對(duì)神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,通過(guò)Profiler接口調(diào)試神經(jīng)網(wǎng)絡(luò)性能。

總結(jié)

以上是生活随笔為你收集整理的MindSpore API编程概述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。