寫在前面
經過探索,我們發現使用谷歌的TPU是一種可行的解決方案。通過實驗室的研究和實踐,相比GPU,TPU能顯著提高BERT模型運算的效率,且大幅度降低所需要的成本。
硬體配置 | 訓練步數 | 運算時間(天) | 總花費 |
TPU-V2(8核心) | 500k | 約1.2天 | $38.9 |
Tesla V100*8 | 500k | 約7天 | $978 |
硬體配置 | 運算時間(秒) | 總花費 |
TPU-V2(8核心) | 約610秒 | $0.23 |
Tesla V100*8 | 約4080秒 | $6.60 |
在該頁面的選項中,有幾個是比較重要的。
1. TPUtype一項中,會出現v2-8,v3-8,v3-32等選項的說明(注意不同的區域提供不同型號的TPU)。其中v2或v3為tpu的型號,-8或-32則為核心數量。最小的核心數量為8核心。在該模式下,我們可以選用搶佔式的模式。而對於大於8核心的選項,則意味著TPUpod。該模式尚不支援搶佔式(但是搶佔式正在谷歌內部進行內測)。
2. IPaddress range一項中,如不涉及到部署,則可以填寫10.1.x.0,其中x為大於101的數字(如102,103等)。值得注意的是,如果之前已有TPU填寫了某範疇,而新建立的TPU的IP地址範疇和之也有重疊,則新建立的TPU會覆蓋掉原先的例項。
5 實驗室使用TPU的心得
6 實驗室對TPU的建議
1. TPU的使用門檻很高,TPU自開發以來,擁有較少的程式碼示例和文件,官方提供的例項也不夠完善,對於初學者不夠友好。尤其由於TensorFlow靜態圖的本質,這使得基於TPU的Debug比較困難;
2. 究其根本TPU是圍繞TensorFlow框架設計的硬體,實際使用過程中TPU硬體和TensorFlow版本具有較大的相互依賴性,大大減少了其可相容性,使得使用其他人工智慧框架的專案很難高效低成本地運用TPU進行運算;
3. 由於TensorFlow本身是基於靜態圖的,而TPU從本質上也只能支援靜態圖,這使得需要依賴於動態圖的應用難以在TPU上執行。這類應用包括semantic parsing和圖網絡等。