谷歌云初始頁面

首先需要?jiǎng)?chuàng)建一個(gè)VM實(shí)例,在選項(xiàng)中進(jìn)行現(xiàn)存、內(nèi)存數(shù)量、系統(tǒng)鏡像等配置。

二:創(chuàng)建VM實(shí)例的界面

 在該頁面的選項(xiàng)中,有幾個(gè)是比較重要的。

1.    Machinetype。該選項(xiàng)決定了VM實(shí)例的線程數(shù)和內(nèi)存數(shù)量的配置。一般來說,在配置系統(tǒng)階段,只選用最小的線程數(shù)和內(nèi)存數(shù)量即可。而如果開始租用TPU,由于讀寫TensorFlowcheckpoint由CPU完成,且網(wǎng)絡(luò)帶寬與線程數(shù)成正比,在TPU開始訓(xùn)練后,不宜選用過小的線程數(shù)。

2.    BootDisk。該選項(xiàng)指定了系統(tǒng)的鏡像。如果需要使用TPU進(jìn)行計(jì)算,則要選擇支持TPU的鏡像。目前而言,TPU支持兩種深度學(xué)習(xí)框架,即TensorFlow和PyTorch。相比較而言,TensorFlow的支持會(huì)更為成熟,而PyTorch的支持則具有一定的實(shí)驗(yàn)性。建議目前還是選用TensorFlow框架。

3.    在Identityand API access一項(xiàng)中,如果不存在部署的問題,建議選擇Allow full access to all Cloud APIs一項(xiàng)。

接下來創(chuàng)建TPU界面:

圖三:創(chuàng)建TPU界面

在創(chuàng)建TPU的頁面,有幾個(gè)選項(xiàng)值得說明:

1.       TPUtype一項(xiàng)中,會(huì)出現(xiàn)v2-8,v3-8,v3-32等選項(xiàng)的說明(注意不同的區(qū)域提供不同型號的TPU)。其中v2或v3為tpu的型號,-8或-32則為核心數(shù)量。最小的核心數(shù)量為8核心。在該模式下,我們可以選用搶占式的模式。而對于大于8核心的選項(xiàng),則意味著TPUpod。該模式尚不支持搶占式(但是搶占式正在谷歌內(nèi)部進(jìn)行內(nèi)測)。

2.       IPaddress range一項(xiàng)中,如不涉及到部署,則可以填寫10.1.x.0,其中x為大于101的數(shù)字(如102,103等)。值得注意的是,如果之前已有TPU填寫了某范疇,而新創(chuàng)建的TPU的IP地址范疇和之也有重疊,則新創(chuàng)建的TPU會(huì)覆蓋掉原先的實(shí)例。

3.       Preemptibility一項(xiàng)為是否采用搶占式實(shí)例的選項(xiàng)。如前文所述,只有V2-8和V3-8兩種型號支持創(chuàng)建搶占式實(shí)例。

如果以上選項(xiàng)均已設(shè)定完畢,則可以點(diǎn)擊CREATE按鈕創(chuàng)建TPU實(shí)例,然后就可以順利運(yùn)行TPU程序了。

實(shí)驗(yàn)室使用TPU的心得

我們在上文中介紹的VM實(shí)例和TPU實(shí)例的管理方式為眾多方法中的一種,除去以上辦法外,還可以通過命令行模型ctpuup等創(chuàng)建TPU實(shí)例,對此我們不再做詳細(xì)介紹。下面我們重點(diǎn)結(jié)合實(shí)驗(yàn)室在此期間使用TPU的經(jīng)驗(yàn),和大家分享心得,幫助大家排雷。

首先大家需要注意的是TPU創(chuàng)建完畢并開始運(yùn)行,即使沒有實(shí)際的程序運(yùn)行也會(huì)發(fā)生扣費(fèi)。我們實(shí)驗(yàn)室建議在開啟TPU之前,就先將代碼在本地環(huán)境中調(diào)通,避免沒有必要的費(fèi)用流失。從實(shí)驗(yàn)室運(yùn)行TPU的實(shí)戰(zhàn)經(jīng)歷來看,我們建議使用TensorFlow的Estimator框架,因?yàn)槲覀冎恍柙趧?chuàng)建Estimator時(shí)將普通的Estimator改為TPU Estimator,即可使用TPU進(jìn)行BERT神經(jīng)網(wǎng)絡(luò)預(yù)訓(xùn)練。這樣大大減少了實(shí)驗(yàn)室的工作量。

在進(jìn)行BERT模型訓(xùn)練過程中,batch_size的大小直接影響模型訓(xùn)練的性能,通過對google TPU了解得知,每個(gè)TPU包含了8個(gè)core,建議設(shè)置batch_size大小為8的倍數(shù)。同時(shí)google 推出了TPU 的pod模式以滿足用戶對更大算力的追求,實(shí)際上就是將多個(gè)TPU進(jìn)行封裝成一個(gè)整體供用戶使用,比如V3-32,就是用4個(gè)V3的TPU,因此我們建議batch_size的大小能被整體core的數(shù)目整除即可,這樣可以最大效率的利用TPU。

當(dāng)然除此之外,在實(shí)戰(zhàn)中我們還需要處理較大的文件在VM中的問題,因?yàn)檫@樣會(huì)消耗大量硬盤資源以及增加運(yùn)算成本,實(shí)驗(yàn)室用到了Buckets—一個(gè)價(jià)格相對親民的存儲方式來提升資源運(yùn)用的效率,我們建議將較大的文件(如BERT文件的初始權(quán)重)存儲在bucket當(dāng)中,該步驟較為簡單,故我們省略詳細(xì)介紹,有需要可以進(jìn)一步閱讀https://cloud.google.com/storage/docs/creating-buckets。

實(shí)驗(yàn)室對TPU的建議

實(shí)驗(yàn)室在經(jīng)過一段時(shí)間的使用后,TPU雖然在多個(gè)方面上完勝GPU,但是我們認(rèn)為TPU還是有很多可改進(jìn)的地方:

1. TPU的使用門檻很高,TPU自開發(fā)以來,擁有較少的代碼示例和文檔,官方提供的實(shí)例也不夠完善,對于初學(xué)者不夠友好。尤其由于TensorFlow靜態(tài)圖的本質(zhì),這使得基于TPU的Debug比較困難;

2.  究其根本TPU是圍繞TensorFlow框架設(shè)計(jì)的硬件,實(shí)際使用過程中TPU硬件和TensorFlow版本具有較大的相互依賴性,大大減少了其可兼容性,使得使用其他人工智能框架的項(xiàng)目很難高效低成本地運(yùn)用TPU進(jìn)行運(yùn)算;

3.  由于TensorFlow本身是基于靜態(tài)圖的,而TPU從本質(zhì)上也只能支持靜態(tài)圖,這使得需要依賴于動(dòng)態(tài)圖的應(yīng)用難以在TPU上運(yùn)行。這類應(yīng)用包括semantic parsing和圖網(wǎng)絡(luò)等。

當(dāng)然在TPU新技術(shù)的引進(jìn)下,實(shí)驗(yàn)室會(huì)迎來新的轉(zhuǎn)機(jī)和工作模式。隨著計(jì)算效率的提高,實(shí)驗(yàn)室的算法研究員可以將冗長的計(jì)算等待時(shí)間極大縮短,并且提升整體實(shí)驗(yàn)室的研究效率,增強(qiáng)實(shí)驗(yàn)項(xiàng)目的可控性。之前,研究員因?yàn)榭紤]到時(shí)間成本問題,會(huì)采用多個(gè)假設(shè)并行驗(yàn)證的工作方式。因?yàn)槊總€(gè)實(shí)驗(yàn)都有風(fēng)險(xiǎn)出現(xiàn)問題,并行實(shí)驗(yàn)會(huì)使得研究員無法估測每個(gè)驗(yàn)證的具體成功率,很有可能耗費(fèi)大量算力后空手而歸。如今,研究員可以將所有假設(shè)串聯(lián)并一一快速驗(yàn)證,顯著提高實(shí)驗(yàn)的效率,大大降低了項(xiàng)目的成本風(fēng)險(xiǎn),增加可預(yù)測性。

整體上來說,實(shí)驗(yàn)室認(rèn)為TPU結(jié)合BERT模型是一個(gè)不錯(cuò)的開始,大大減少了我們預(yù)訓(xùn)練模型的時(shí)間,顯著提升了BERT模型整體運(yùn)算的效率,大幅度降低了硬件資源的算力成本。在這方面實(shí)驗(yàn)室還會(huì)進(jìn)一步研究和探索,讓我們期待未來更多的實(shí)踐成果。

來源: 認(rèn)知智能實(shí)驗(yàn)室 

分享到

xiesc

相關(guān)推薦