Google Cloud TPU使用流程
1 創(chuàng)建GCP project
點(diǎn)擊鏈接Google Cloud Platform之后會(huì)進(jìn)入這樣一個(gè)界面:
點(diǎn)擊創(chuàng)建項(xiàng)目耀怜,輸入項(xiàng)目名,等一會(huì)項(xiàng)目就會(huì)創(chuàng)建成功桐愉,有時(shí)可能需要刷新一下網(wǎng)頁項(xiàng)目才會(huì)出現(xiàn)财破。
2 創(chuàng)建Cloud Storage bucket
Cloud Storage 簡(jiǎn)單來說就是用來存儲(chǔ)模型訓(xùn)練數(shù)據(jù)和訓(xùn)練結(jié)果的。官方的解釋是它是適用于非結(jié)構(gòu)化對(duì)象的一種功能強(qiáng)大且經(jīng)濟(jì)有效的存儲(chǔ)解決方案从诲,非常適合托管實(shí)時(shí)網(wǎng)頁內(nèi)容左痢、存儲(chǔ)用于分析的數(shù)據(jù)、歸檔和備份等各種服務(wù)系洛。
注意:要想使用Cloud Storage俊性,需要啟用結(jié)算功能。
2.1 創(chuàng)建存儲(chǔ)分區(qū)
存儲(chǔ)分區(qū)用于保存您要在 Cloud Storage中存儲(chǔ)的對(duì)象(任何類型的文件)描扯。
首先在控制臺(tái)左側(cè)選擇 【存儲(chǔ)】(如下圖示(中英文))就能進(jìn)入Cloud Storage頁面了定页,
之后點(diǎn)擊 【創(chuàng)建存儲(chǔ)分區(qū)】
輸入storage名即可創(chuàng)建完成,注意名稱需要是unique的绽诚,否則無法創(chuàng)建成功典徊。
2.2 上傳和共享對(duì)象
要開始使用您的存儲(chǔ)分區(qū),只需上傳對(duì)象并開放其訪問權(quán)限即可恩够。
2.3 清理
在最后一步中卒落,您將刪除之前為本教程創(chuàng)建的存儲(chǔ)分區(qū)和對(duì)象。
3 打開Cloud Shell蜂桶,使用ctpu工具
Shell在控制臺(tái)右上角儡毕,如下圖示:
輸入ctpu print-config可以查看配置信息。我的輸入結(jié)果是這樣的:
ctpu configuration:
name: hkbuautoml
project: test01-219602
zone: us-central1-b
If you would like to change the configuration for a single command invocation, please use the command line flags.
3.1 創(chuàng)建Computer Engine VM和TPU
命令為:ctpu up [optional: --name --zone]
注意: name只能用小寫字母和數(shù)字組成扑媚,大寫字母或者其他字符都會(huì)報(bào)錯(cuò)腰湾。
這里我創(chuàng)建了一個(gè)名為tputest的tpu贾费。輸入y確認(rèn)創(chuàng)建。
上面的ctpu up命令主要做了如下幾件事:
- 開啟Computer Engine和Cloud TPU服務(wù)
- 創(chuàng)建預(yù)裝有最新穩(wěn)定版本TensorFlow的Computer Engine VM檐盟。其中默認(rèn)的Zone是us-central1-b。
- 使用TensorFlow的相應(yīng)版本創(chuàng)建Cloud TPU押桃,并將Cloud TPU的名稱作為環(huán)境變量( TPU _ NAME )傳遞給Computer Engine VM葵萎。
- 通過向Cloud TPU服務(wù)帳戶授予特定的IAM角色(見下圖),確保您的Cloud TPU可以從GCP項(xiàng)目中獲得所需的資源唱凯。
- 執(zhí)行其他的檢查羡忘。
- 將您登錄到新的Compute Engine VM。
3.2 檢查是否登錄成功
當(dāng)成功登錄VM后磕昼,我們可以看到shell prompt已經(jīng)由username@project 轉(zhuǎn)變成username@tpuname卷雕。
3.3 運(yùn)行一個(gè)TensorFlow程序
創(chuàng)建代碼文件
pico cloud-tpu.py
示例代碼如下
import os
import tensorflow as tf
from tensorflow.contrib import tpu
from tensorflow.contrib.cluster_resolver import TPUClusterResolver
def axy_computation(a, x, y):
return a * x + y
inputs = [
3.0,
tf.ones([3, 3], tf.float32),
tf.ones([3, 3], tf.float32),
]
tpu_computation = tpu.rewrite(axy_computation, inputs)
tpu_grpc_url = TPUClusterResolver(
tpu=[os.environ['TPU_NAME']]).get_master()
with tf.Session(tpu_grpc_url) as sess:
sess.run(tpu.initialize_system())
sess.run(tf.global_variables_initializer())
output = sess.run(tpu_computation)
print(output)
sess.run(tpu.shutdown_system())
print('Done!')
運(yùn)行代碼,結(jié)果如下:
[array([[4., 4., 4.],
[4., 4., 4.],
[4., 4., 4.]], dtype=float32)]
Done!
3.4 釋放資源
代碼跑完后切記要釋放資源票从,否則系統(tǒng)會(huì)繼續(xù)計(jì)費(fèi)漫雕。釋放資源方法如下:
- 斷開與Computer Engine VM的連接:
(vm)$ exit
成功斷開之后shell prompt會(huì)變成項(xiàng)目名而不是VM名。
- 刪除Computer Engine VM和Cloud TPU
$ ctpu delete
7灞伞=洹!特別注意:如果在創(chuàng)建VM的時(shí)候指定了name吟榴,name在刪除的時(shí)候同業(yè)也要指定name魁蒜。我在刪除的時(shí)候沒有加name,雖然命令行結(jié)果顯示刪除成功吩翻,但是后面我在控制臺(tái)查看資源使用情況兜看,發(fā)現(xiàn)VM實(shí)例依舊存在。所以最保險(xiǎn)的辦法是命令輸完后狭瞎,去控制臺(tái)看看實(shí)例是否還存在细移。
- 刪除Storage
命令為:gsutil rm -r gs://Your-storage-name
更詳細(xì)的資料可參考官方文檔。
部署流程:
https://cloud.google.com/tpu/docs/quickstart?hl=zh-cn
訓(xùn)練minist的例子:
https://cloud.google.com/tpu/docs/tutorials/mnist?hl=zh-cn