谷歌云初始頁面
首先需要創(chuàng)建一個VM實例,在選項中進行現(xiàn)存、內(nèi)存數(shù)量、系統(tǒng)鏡像等配置。
二:創(chuàng)建VM實例的界面
在該頁面的選項中,有幾個是比較重要的。
1. Machinetype。該選項決定了VM實例的線程數(shù)和內(nèi)存數(shù)量的配置。一般來說,在配置系統(tǒng)階段,只選用最小的線程數(shù)和內(nèi)存數(shù)量即可。而如果開始租用TPU,由于讀寫TensorFlowcheckpoint由CPU完成,且網(wǎng)絡帶寬與線程數(shù)成正比,在TPU開始訓練后,不宜選用過小的線程數(shù)。
2. BootDisk。該選項指定了系統(tǒng)的鏡像。如果需要使用TPU進行計算,則要選擇支持TPU的鏡像。目前而言,TPU支持兩種深度學習框架,即TensorFlow和PyTorch。相比較而言,TensorFlow的支持會更為成熟,而PyTorch的支持則具有一定的實驗性。建議目前還是選用TensorFlow框架。
3. 在Identityand API access一項中,如果不存在部署的問題,建議選擇Allow full access to all Cloud APIs一項。
接下來創(chuàng)建TPU界面:
圖三:創(chuàng)建TPU界面
在創(chuàng)建TPU的頁面,有幾個選項值得說明:
1. TPUtype一項中,會出現(xiàn)v2-8,v3-8,v3-32等選項的說明(注意不同的區(qū)域提供不同型號的TPU)。其中v2或v3為tpu的型號,-8或-32則為核心數(shù)量。最小的核心數(shù)量為8核心。在該模式下,我們可以選用搶占式的模式。而對于大于8核心的選項,則意味著TPUpod。該模式尚不支持搶占式(但是搶占式正在谷歌內(nèi)部進行內(nèi)測)。
2. IPaddress range一項中,如不涉及到部署,則可以填寫10.1.x.0,其中x為大于101的數(shù)字(如102,103等)。值得注意的是,如果之前已有TPU填寫了某范疇,而新創(chuàng)建的TPU的IP地址范疇和之也有重疊,則新創(chuàng)建的TPU會覆蓋掉原先的實例。
3. Preemptibility一項為是否采用搶占式實例的選項。如前文所述,只有V2-8和V3-8兩種型號支持創(chuàng)建搶占式實例。
如果以上選項均已設定完畢,則可以點擊CREATE按鈕創(chuàng)建TPU實例,然后就可以順利運行TPU程序了。
實驗室使用TPU的心得
我們在上文中介紹的VM實例和TPU實例的管理方式為眾多方法中的一種,除去以上辦法外,還可以通過命令行模型ctpuup等創(chuàng)建TPU實例,對此我們不再做詳細介紹。下面我們重點結合實驗室在此期間使用TPU的經(jīng)驗,和大家分享心得,幫助大家排雷。
首先大家需要注意的是TPU創(chuàng)建完畢并開始運行,即使沒有實際的程序運行也會發(fā)生扣費。我們實驗室建議在開啟TPU之前,就先將代碼在本地環(huán)境中調(diào)通,避免沒有必要的費用流失。從實驗室運行TPU的實戰(zhàn)經(jīng)歷來看,我們建議使用TensorFlow的Estimator框架,因為我們只需在創(chuàng)建Estimator時將普通的Estimator改為TPU Estimator,即可使用TPU進行BERT神經(jīng)網(wǎng)絡預訓練。這樣大大減少了實驗室的工作量。
在進行BERT模型訓練過程中,batch_size的大小直接影響模型訓練的性能,通過對google TPU了解得知,每個TPU包含了8個core,建議設置batch_size大小為8的倍數(shù)。同時google 推出了TPU 的pod模式以滿足用戶對更大算力的追求,實際上就是將多個TPU進行封裝成一個整體供用戶使用,比如V3-32,就是用4個V3的TPU,因此我們建議batch_size的大小能被整體core的數(shù)目整除即可,這樣可以最大效率的利用TPU。
當然除此之外,在實戰(zhàn)中我們還需要處理較大的文件在VM中的問題,因為這樣會消耗大量硬盤資源以及增加運算成本,實驗室用到了Buckets—一個價格相對親民的存儲方式來提升資源運用的效率,我們建議將較大的文件(如BERT文件的初始權重)存儲在bucket當中,該步驟較為簡單,故我們省略詳細介紹,有需要可以進一步閱讀https://cloud.google.com/storage/docs/creating-buckets。
實驗室對TPU的建議
實驗室在經(jīng)過一段時間的使用后,TPU雖然在多個方面上完勝GPU,但是我們認為TPU還是有很多可改進的地方:
1. TPU的使用門檻很高,TPU自開發(fā)以來,擁有較少的代碼示例和文檔,官方提供的實例也不夠完善,對于初學者不夠友好。尤其由于TensorFlow靜態(tài)圖的本質(zhì),這使得基于TPU的Debug比較困難;
2. 究其根本TPU是圍繞TensorFlow框架設計的硬件,實際使用過程中TPU硬件和TensorFlow版本具有較大的相互依賴性,大大減少了其可兼容性,使得使用其他人工智能框架的項目很難高效低成本地運用TPU進行運算;
3. 由于TensorFlow本身是基于靜態(tài)圖的,而TPU從本質(zhì)上也只能支持靜態(tài)圖,這使得需要依賴于動態(tài)圖的應用難以在TPU上運行。這類應用包括semantic parsing和圖網(wǎng)絡等。
當然在TPU新技術的引進下,實驗室會迎來新的轉機和工作模式。隨著計算效率的提高,實驗室的算法研究員可以將冗長的計算等待時間極大縮短,并且提升整體實驗室的研究效率,增強實驗項目的可控性。之前,研究員因為考慮到時間成本問題,會采用多個假設并行驗證的工作方式。因為每個實驗都有風險出現(xiàn)問題,并行實驗會使得研究員無法估測每個驗證的具體成功率,很有可能耗費大量算力后空手而歸。如今,研究員可以將所有假設串聯(lián)并一一快速驗證,顯著提高實驗的效率,大大降低了項目的成本風險,增加可預測性。
整體上來說,實驗室認為TPU結合BERT模型是一個不錯的開始,大大減少了我們預訓練模型的時間,顯著提升了BERT模型整體運算的效率,大幅度降低了硬件資源的算力成本。在這方面實驗室還會進一步研究和探索,讓我們期待未來更多的實踐成果。
來源: 認知智能實驗室