如何使用Kaggle?

Tensor Processing Units (TPUs)

現(xiàn)在可以在Kaggle上免費(fèi)使用TPU蔬将。 TPU是專門用于深度學(xué)習(xí)任務(wù)的硬件加速器。Tensorflow 2.1通過Keras高級(jí)API以及較低級(jí)別的使用自定義訓(xùn)練循環(huán)的模型都支持它們速勇。

您每個(gè)星期最多可以使用30個(gè)小時(shí)的TPU,一次最多可以使用3個(gè)小時(shí)桶良。

本頁(yè)說明如何: 1) 在Tensorflow和Keras中啟用TPU, 2) 調(diào)整批次大小和學(xué)習(xí)率, 3) 優(yōu)化數(shù)據(jù)管道以實(shí)現(xiàn)快速加速器

TPUs in Keras

將筆記本中的“ Accelerator”開關(guān)切換到“ TPU v3-8”后嗜侮,這就是在Tensorflow Keras中啟用TPU訓(xùn)練的方法:

# detect and init the TPU
tpu = tf.distribute.cluster_resolver.TPUClusterResolver()
tf.config.experimental_connect_to_cluster(tpu)
tf.tpu.experimental.initialize_tpu_system(tpu)

# instantiate a distribution strategy
tpu_strategy = tf.distribute.experimental.TPUStrategy(tpu)

# instantiating the model in the strategy scope creates the model on the TPU
with tpu_strategy.scope():
    model = tf.keras.Sequential( … ) # define your model normally
    model.compile( … )

# train model normally
model.fit(training_dataset, epochs=EPOCHS, steps_per_epoch=…)

TPU是網(wǎng)絡(luò)連接的加速器,您必須首先在網(wǎng)絡(luò)上找到它們淡喜。這就是TPUClusterResolver()所做的秕磷。

兩條額外的樣板行,您可以定義一個(gè)TPUStrategy炼团。該對(duì)象包含必要的分布式培訓(xùn)代碼澎嚣,這些代碼將在具有8個(gè)計(jì)算核心的TPU上工作(請(qǐng)參閱下面的硬件部分)疏尿。

最后,通過在策略范圍內(nèi)實(shí)例化模型來使用TPUStrategy易桃。這將在TPU上創(chuàng)建模型褥琐。模型大小僅受TPU RAM限制,不受運(yùn)行Python代碼的VM上可用的內(nèi)存量限制晤郑。模型創(chuàng)建和模型訓(xùn)練使用常規(guī)的Keras API敌呈。

Batch size, learning rate

要快速使用TPU,請(qǐng)?jiān)黾优未笮》泛骸=?jīng)驗(yàn)法則是每核使用128個(gè)元素的批處理(例如:對(duì)于具有8個(gè)核的TPU驱富,批處理大小為128 * 8 = 1024)。在這種尺寸下匹舞,TPU的128x128硬件矩陣乘法器(請(qǐng)參閱下面的硬件部分)最有可能保持忙碌狀態(tài)褐鸥。不過,您開始看到有趣的加速效果(批處理大小為每核8個(gè))赐稽。在上面的示例中叫榕,通過以下代碼行,批處理大小隨核心數(shù)量縮放:

BATCH_SIZE = 16 * tpu_strategy.num_replicas_in_sync

在單個(gè)TPU v3-8上運(yùn)行TPUStrategy時(shí)姊舵,核心數(shù)量為8晰绎。這是Kaggle上可用的硬件。在Google Cloud上可用的稱為TPU Pod的較大配置上可能更多括丁。

批量較大時(shí)荞下,TPU將更快地處理訓(xùn)練數(shù)據(jù)。這僅在較大的培訓(xùn)批次產(chǎn)生更多“培訓(xùn)工作”并使模型更快地達(dá)到所需精度時(shí)才有用史飞。這就是為什么經(jīng)驗(yàn)法則還要求隨著批次大小提高學(xué)習(xí)率尖昏。您可以從成比例的增加開始,但是可能需要進(jìn)行其他調(diào)整才能找到給定模型和加速器的最佳學(xué)習(xí)率時(shí)間表构资。

tf.data.Dataset and TFRecords

由于TPU的速度非吵樗撸快,因此許多移植到TPU的型號(hào)最終都會(huì)出現(xiàn)數(shù)據(jù)瓶頸吐绵。 TPU處于閑置狀態(tài)迹淌,等待每個(gè)訓(xùn)練時(shí)期的大部分時(shí)間的數(shù)據(jù)。 TPU僅從GCS(Google云存儲(chǔ))讀取培訓(xùn)數(shù)據(jù)己单。如果GCS持續(xù)并行地從多個(gè)文件中流式傳輸唉窃,則可以維持相當(dāng)大的吞吐量。遵循幾個(gè)最佳實(shí)踐將優(yōu)化吞吐量:

如果文件太少荷鼠,GCS將沒有足夠的流來獲得最大吞吐量句携。如果文件太多,訪問每個(gè)文件都會(huì)浪費(fèi)時(shí)間允乐。

用于TPU訓(xùn)練的數(shù)據(jù)通常會(huì)分?jǐn)偟竭m當(dāng)數(shù)量的較大文件中矮嫉。通常的容器格式是TFRecords削咆。您可以通過編寫以下內(nèi)容從TFRecords文件加載數(shù)據(jù)集:

# On Kaggle you can also use KaggleDatasets().get_gcs_path() to obtain the GCS path of a Kaggle dataset
filenames = tf.io.gfile.glob("gs://flowers-public/tfrecords-jpeg-512x512/*.tfrec") # list files on GCS
dataset = tf.data.TFRecordDataset(filenames)
dataset = dataset.map(...) # TFRecord decoding here...

要從多個(gè)TFRecord文件啟用并行流,請(qǐng)修改如下代碼:

AUTO = tf.data.experimental.AUTOTUNE
ignore_order = tf.data.Options()
ignore_order.experimental_deterministic = False

# On Kaggle you can also use KaggleDatasets().get_gcs_path() to obtain the GCS path of a Kaggle dataset
filenames = tf.io.gfile.glob("gs://flowers-public/tfrecords-jpeg-512x512/*.tfrec") # list files on GCS
dataset = tf.data.TFRecordDataset(filenames, num_parallel_reads=AUTO)
dataset = dataset.with_options(ignore_order)
dataset = dataset.map(...) # TFRecord decoding here...

這里有兩個(gè)設(shè)置:

  • num_parallel_reads = AUTO指示API從多個(gè)文件讀却浪瘛(如果有)拨齐。它會(huì)自動(dòng)計(jì)算出多少。
  • Experiment_deterministic = False禁用數(shù)據(jù)順序強(qiáng)制實(shí)施昨寞。無(wú)論如何瞻惋,我們將對(duì)數(shù)據(jù)進(jìn)行混洗,因此順序并不重要援岩。通過此設(shè)置歼狼,API可以在流入后立即使用任何TFRecord。

這些代碼段中省略了一些詳細(xì)信息享怀,因此請(qǐng)檢查樣本以獲取完整的數(shù)據(jù)管道代碼羽峰。在Keras和TensorFlow 2.1中,還可以將訓(xùn)練數(shù)據(jù)作為內(nèi)存中的numpy數(shù)組發(fā)送到TPU添瓷。盡管對(duì)內(nèi)存中適合的數(shù)據(jù)集來說梅屉,這可以,但它并不是最有效的方法鳞贷。

TPU hardware

TPU v3-8板約20英寸(50厘米)坯汤,是一塊相當(dāng)大的硬件。它具有4個(gè)雙核TPU芯片搀愧,總共8個(gè)TPU內(nèi)核惰聂。

每個(gè)TPU內(nèi)核都有一個(gè)傳統(tǒng)的矢量處理部分(VPU)以及能夠處理128x128矩陣的專用矩陣乘法硬件。這是專門加速機(jī)器學(xué)習(xí)工作負(fù)載的部分咱筛。

TPU配備128GB的高速內(nèi)存庶近,可以進(jìn)行更大批量,更大型號(hào)以及更大的訓(xùn)練輸入眷蚓。在上面的示例中,您可以嘗試使用數(shù)據(jù)集中也提供的512x512 px輸入圖像反番,并查看TPU v3-8輕松處理它們沙热。

TPU monitor

當(dāng)您在Kaggle上運(yùn)行TPU工作負(fù)載時(shí),單擊TPU標(biāo)尺時(shí)會(huì)出現(xiàn)性能監(jiān)視器罢缸。

MXU百分比表示TPU計(jì)算硬件的利用效率篙贸。越高越好。

“空閑時(shí)間”百分比衡量TPU空閑等待數(shù)據(jù)的頻率枫疆。您應(yīng)該優(yōu)化數(shù)據(jù)管道爵川,以使其盡可能低。

測(cè)量大約每10秒刷新一次息楔,僅在TPU運(yùn)行計(jì)算時(shí)才出現(xiàn)寝贡。

More information and tutorial

此處提供了包含更多信息扒披,最佳實(shí)踐和示例的動(dòng)手TPU教程:Keras and modern convnets, on TPUs

TPU playground competition

我們準(zhǔn)備了一個(gè)13,000張花朵圖像的數(shù)據(jù)集,供您使用圃泡。您可以在以下付費(fèi)競(jìng)賽中嘗試TPU:Flower Classification with TPUs

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末碟案,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子颇蜡,更是在濱河造成了極大的恐慌价说,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件风秤,死亡現(xiàn)場(chǎng)離奇詭異鳖目,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)缤弦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門领迈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人甸鸟,你說我怎么就攤上這事惦费。” “怎么了抢韭?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵薪贫,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我刻恭,道長(zhǎng)瞧省,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任鳍贾,我火速辦了婚禮鞍匾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘骑科。我一直安慰自己橡淑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布咆爽。 她就那樣靜靜地躺著梁棠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪斗埂。 梳的紋絲不亂的頭發(fā)上符糊,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音呛凶,去河邊找鬼男娄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的模闲。 我是一名探鬼主播建瘫,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼围橡!你這毒婦竟也來了暖混?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤翁授,失蹤者是張志新(化名)和其女友劉穎拣播,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體收擦,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贮配,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了塞赂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泪勒。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖宴猾,靈堂內(nèi)的尸體忽然破棺而出圆存,到底是詐尸還是另有隱情,我是刑警寧澤仇哆,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布沦辙,位于F島的核電站,受9級(jí)特大地震影響讹剔,放射性物質(zhì)發(fā)生泄漏油讯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一延欠、第九天 我趴在偏房一處隱蔽的房頂上張望陌兑。 院中可真熱鬧,春花似錦由捎、人聲如沸兔综。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)邻奠。三九已至,卻和暖如春为居,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背杀狡。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工蒙畴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓膳凝,卻偏偏與公主長(zhǎng)得像碑隆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蹬音,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359