0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

免費GPU哪家強?谷歌Kaggle vs和Colab

WpOh_rgznai100 ? 來源:yxw ? 2019-06-10 10:59 ? 次閱讀

谷歌有兩個平臺提供免費的云端GPU:Colab和Kaggle, 如果你想深入學習人工智能深度學習技術(shù),那么這兩款GPU將帶給你很棒學習的體驗。那么問題來了,我們該選擇哪個平臺進行學習和工作呢?接下來,本文將介紹如何比較硬件規(guī)格和探索優(yōu)缺點的差異;本文還將基于一個計算機視覺任務,比較在不同平臺下,使用遷移學習、混合精度訓練、學習率模擬退火以及測試時間增廣等操作時,所需的訓練時間?;谏鲜鰞?nèi)容,你將對這兩個平臺的GPU性能,有一個更加全面和清楚的了解。

Kaggle 和 Colab 是兩個非常相似的產(chǎn)品,它們都具有如下特性:

提供免費的GPU

在瀏覽器中使用Jupyter進行交互——但是它們都有自己獨特的風格

旨在促進機器學習的協(xié)作

都是谷歌的產(chǎn)品

不是十全十美,但是在多數(shù)場景下都適用,尤其是在入門深度學習的時候

官方文檔對硬件規(guī)格的描述較為簡略

最后一項是本文研究的重點,但不幸的是,Kaggle和Colab都不提供對使用環(huán)境的詳細描述,而且官方文檔(https://www.kaggle.com/docs/kernels#technical-specifications)往往很過時,跟不上平臺硬件更新的速度。除此之外,平臺IDE的小控件雖然提供了一些信息,但是這往往不是我們真正想要的。接下來,本文展示常用的profiler命令,該命令可以查看平臺環(huán)境的信息。

在正式開始之前,我們得先了解一些GPU的背景知識。

什么是GPU?

GPU是圖形處理單元的簡稱,最初GPU是為加速視頻游戲的圖形所開發(fā)的專用芯片,它們能夠快速的完成大量的矩陣運算。該特性也使得GPU在深度學習領域嶄露頭角,有趣的是,出于相同的原因,GPU也是挖掘加密貨幣的首選工具。

Nvidia P100 GPU

為什么要使用GPU?

使用大顯存的GPU來訓練深度學習網(wǎng)絡,比單純用CPU來訓練要快得多。想象一下,使用GPU能夠在十幾分鐘或者幾個小時內(nèi),獲得所訓練網(wǎng)絡的反饋信息,而使用CPU則要花費數(shù)天或者數(shù)周的時間,GPU簡直是棒呆了。

硬件規(guī)格

2019年三月初,kaggle將它的GPU芯片從Nvidia Tesla K80升級到了Nvida Tesla P100,然而Colab還在用K80。有關(guān)Nvidia 芯片類型的討論,可以參見這篇文章(https://towardsdatascience.com/maximize-your-gpu-dollars-a9133f4e546a)。

有很多不同方法可以查看硬件的信息,兩個比較常用的命令是!nvidia-smi和 !cat/proc/cpuinfo,分別用于查看GPU和CPU的信息。即使你想用GPU來訓練模型,CPU也是不必可少的,因此了解CPU的信息是必不可少的。

下圖所示為Kaggle和Colab的硬件配置信息,更多內(nèi)容可以參考谷歌官方文檔(https://docs.google.com/spreadsheets/d/1YBNlI9QxQTiPBOhsSyNg6EOO9LH2M3zF7ar88SeFQRk/edit?usp=sharing)。

兩個平臺上的內(nèi)存大小和磁盤空間,可能會存在一些令人疑惑的地方。一旦在Kaggle或者Colab上安裝軟件并開始進程,它的內(nèi)存和磁盤可用量就會發(fā)生變化了。我們可以用!cat/proc/meminfo 命令來測試這種容量變化,如下圖所示。

Total表示總內(nèi)存容量,Available表示啟動后,沒有任何其他進程運行的情況下,實際觀察到的內(nèi)存容量。從上圖可以看到,我們自己測量的值和Colab或Kaggle的IDE控件面板中顯示的很相似,但是并不完全匹配,如下圖所示。

Mouseover in Colab

Kaggle Sidebar

上圖顯示的是Kaggle的內(nèi)核和Colab Notebook中的硬件規(guī)格信息,請注意,在開始前一定要確保開啟了GPU的功能。

還有一點值得注意,使用命令行查看GPU的硬件規(guī)格時,系統(tǒng)返回值的單位是Mebibytes,該單位和Megabytes(兆字節(jié))相似但并不等同。通過谷歌搜索相應信息,可以將Mebibytes轉(zhuǎn)化為Megabytes。

Kaggle 的widget(小部件)顯示,實際使用的磁盤空間比前文調(diào)研的要小得多,這是因為,無論理論上的磁盤總量是多少,Kaggle都會限制實際能夠使用的磁盤空間。

在官方文檔中Kaggle聲明,用戶擁有9個小時的使用時間,然而,對于每個會話,內(nèi)核環(huán)境最多只會在窗口上顯示6個小時。值得注意的是,重新啟動內(nèi)核會重新啟動時鐘。此外,如果用戶在60分鐘內(nèi)沒有任何操作,Kaggle會將會話重啟。

Colab為用戶提供12小時的執(zhí)行時間,但是如果閑置時間超過90分鐘,Colab就會將你踢掉。

接下來就要進入本文的重點了:訓練一個深度學習網(wǎng)絡,到底會花費多少時間。

計算機視覺任務下的速度比較

本文用一個圖像分類的任務來比較Kaggle和Colab的計算性能。該任務的目標是構(gòu)建一個深度學習模型,對貓狗的圖像進行分類。數(shù)據(jù)集包含25000張圖像,貓和狗的樣本數(shù)是均衡的。將數(shù)據(jù)集分為兩部分,其中23000張圖像用于訓練,另外2000張用于驗證。

Cat and dog images from the dataset

本文用FastAI庫構(gòu)建了一個卷積神經(jīng)網(wǎng)絡,并以ResNet30為基礎運用遷移學習訓練該模型。模型的訓練使用了以下幾個技巧,分別是數(shù)據(jù)增廣和學習率退火。在模型的測試階段,本文使用測試時間增廣技術(shù)來構(gòu)建測試集。本節(jié)的代碼改編自FastAI的示例(https://github.com/fastai/fastai/blob/master/examples/dogs_cats.ipynb)。

代碼分別在Kaggle和Colab上的實施。Batch size 設為16,F(xiàn)astAI的版本是1.0.48。使用FastAI的內(nèi)置分析器,統(tǒng)計訓練和測試的總時間,兩平臺所用的時間如下。

在兩個平臺中,模型的驗證精度都超過了99%,三次迭代的時間在Kaggle中是11:17分鐘,而Colab中為19:54分鐘。Kaggle的運行環(huán)境性能,從速度上看,比Colab要快40%。

Batch Size

在Kaggle中,我們需要將batch size從64降低到16,才能使模型成功進行訓練。如果batch size過大,會導致運行錯誤,該錯誤似乎是由于Docker容器中的共享內(nèi)存設置得太低才引起的。有趣的是,作者在2018年底向Colab提出了這個問題(https://github.com/googlecolab/colabtools/issues/329),Colab在一周內(nèi)便修復了這個問題。然而,截止2019年3月中旬,Kaggle依然存在該問題。

接下來,我們將Colab中的batch size改為256,對模型進行兩次迭代訓練。上述的改變導致平均運行時間變成了18:38分鐘。將batch size改為64,同樣進行兩次迭代訓練,此時得到的平均運行時間為18:14分鐘。這表示,當batch size大于16的時候,Colab能夠縮減運行的時間。

盡管如此,對于本節(jié)中的任務而言,較小的batch size并不是一個值得深究的大問題,有關(guān)參數(shù)設置的討論,可以參見這篇文章(https://arxiv.org/abs/1804.07612)。

當我將Colab上的batch size設為256,然后開始訓練模型時,Colab拋出了一個警告,其中寫道:我正在使用的GPU具有11.17GB的顯存。具體如下圖所示。

這個警告非常棒,但是基于前文的分析,我們已經(jīng)了解了Gibibytes和Gigabytes(https://www.gbmb.org/gib-to-gb)之間的區(qū)別。前文中講到,Colab有11.17 Gibibytes(12 GB)的顯存,這顯然和警告中說的11.17GB矛盾。盡管如此,如果Colab提示你超出內(nèi)存了,那就是超出內(nèi)存了。因此batch size設為256,可能就是該任務下Colab的極限了。

混合精度訓練

接下來,我們使用了混合精度訓練,該訓練方式能夠有效地降低訓練時間?;旌暇扔柧氃谀承┛赡艿那闆r下,會使用16位精度的數(shù)值代替32位的數(shù)值,來進行計算。Nvidia聲稱使用16位精度,可以使P100的吞吐量翻倍。

有關(guān)混合精度FastAI模型的介紹可以參見這篇文章(https://docs.fast.ai/callbacks.fp16.html)。請注意,在使用測試時間增廣進行預測之前,我們需要將FastAI學習器對象設置為32位模式,這是因為torch.stack暫時不支持半精度。

通過在Colab上使用混合精度進行訓練,在batch size 為16的情況下,平均運行時間為16:37分鐘。顯然,我們成功的縮減了運行時間。

然而,在Kaggle上實施混合精度訓練,總的運行時間卻增加了一分半,達到了12:47分鐘。我們并沒有改變硬件規(guī)格,而且得到的驗證精度都達到了99%以上,這就很有趣了。

通過調(diào)查發(fā)現(xiàn),Kaggle的默認包中的torch和torchvision的版本都很老,將它們的版本更新到和Colab上的一樣后,Kaggle的運行時間并沒有改變。但是這一個發(fā)現(xiàn)表明,Colab上默認包的版本比Kaggle更新的要快。

前文提到的硬件差異,似乎并不是導致Kaggle混合精度性能不佳的原因。那么軟件差異似乎是答案,我們觀察到,兩平臺唯一的軟件差異就是,Kaggle使用CUDA 9.2.148 和 cuDNN 7.4.1,而Colab 使用CUDA 10.0.130 和 cuDNN 7.5.0。

CUDA是Nvidia的API,可以直接訪問GPU的虛擬指令集。cuDNN是Nvidia基于CUDA的深度學習原型庫。根據(jù)Nvidia的這篇文章,Kaggle的軟件應該可以提高P100的速度。但是,正如cuDNN更改說明(https://docs.nvidia.com/deeplearning/sdk/cudnn-release-notes/rel_750.html#rel_750)中所示,阻止加速的bug是定期排查和修復的,那么kaggle在混合精度訓練上表現(xiàn)不佳,可能是因為bug修復不及時所導致的吧。

既然如此,我們只好等待Kaggle升級CUDA和cuDNN,看看混合精度訓練是否會變得更快。如果使用Kaggle,還是推薦你采用混合精度訓練(雖然速度并不會得到提升)。如果使用Colab,當然采用混合精度訓練更佳,但是要注意batch size不要設置得太大。

優(yōu)缺點對比

谷歌是一家希望您支付GPU費用的公司,天下沒有免費的午餐。

Colab和Kaggle當然會有一些令人沮喪的問題。例如,兩個平臺運行時斷開連接的頻率太高,這令我們非常沮喪,因為我們不得不重啟會話。

在過去,這些平臺并不能總保證你有GPU可以用,但是現(xiàn)在卻可以了。接下來讓我們一起看看,Colab和Kaggle的各自的優(yōu)缺點吧。

Colab

優(yōu)點

能夠在Google Drive上保存notebook

可以在notebook中添加注釋

和GIthub的集成較好——可以直接把notebook保存到Github倉庫中

具有免費的TPU。TPU和GPU類似,但是比GPU更快。TPU是谷歌自行開發(fā)的一款芯片,但不幸的是,盡管Colab意在整合PyTotch和TPU,但TPU對PyTorch的支持仍不太友好。如果使用TensorFlow進行編程,而不是使用FastAI/Pytorch編程,那么在Colab上使用TPU可要比在Kaggle上使用GPU快多了。

缺點

部分用戶在Colab中的共享內(nèi)存較小。

谷歌云盤的使用較為麻煩。每個會話都需要進行身份驗證,而且在谷歌云盤中解壓文件較為麻煩。

鍵盤快捷鍵和Jupyter Notebook中不太一樣。具體對比可以參見這里。

Kaggle

優(yōu)點

Kaggle社區(qū)有利于學習和展示你的技能

在Kaggle上發(fā)布你的工作,能夠記錄一段美好的歷史

Kaggle和Jupyter notebook的鍵盤快捷鍵基本相同

Kaggle有很多免費數(shù)據(jù)集

缺點

Kaggle一般會自動保存你的工作,但是如果你沒有提交工作,然后重新加載你的頁面,你的工作很有可能丟失。

就像前面提到的,在Kaggle中,Docker容器中的PyTorch共享內(nèi)存較低。在本次圖像分類任務中,如果設置batch size的大小超過16,那么系統(tǒng)就會報錯: RuntimeError: DataLoader worker (pid 41) is killed by signal: Bus error。

Kaggle內(nèi)核通??雌饋碛行┻t鈍。

結(jié)論

Colab和Kaggle都是開展云端深度學習的重要資源。我們可以同時使用兩者,例如在Kaggle和Colab之間相互下載和上傳notebook。

Colab和Kaggle會不斷更新硬件資源,我們可以通過比較硬件資源的性能,以及對編程語言的支持,選擇最優(yōu)的平臺部署代碼。例如,如果我們要運行一個密集的PyTorch項目,并且期望提高精度,那么在Kaggle上開發(fā)可能更加適合。

如果我們希望更加靈活的調(diào)整batch size 的大小,Colab可能更加適用。使用Colab,我們可以將模型和數(shù)據(jù)都保存在谷歌云盤里。如果你用TensorFlow編程,那么Colab的TPU將會是一個很好的資源。

如果需要更多的時間來編寫代碼,或者代碼需要更長的運行時間,那么谷歌的云平臺的性價比可能更高。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 谷歌
    +關(guān)注

    關(guān)注

    27

    文章

    6103

    瀏覽量

    104780
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    27

    文章

    4632

    瀏覽量

    128442
  • 計算機視覺
    +關(guān)注

    關(guān)注

    8

    文章

    1689

    瀏覽量

    45874

原文標題:免費GPU哪家強?谷歌Kaggle vs. Colab

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    VS5700動態(tài)信號測試分析系統(tǒng)

    電子發(fā)燒友網(wǎng)站提供《VS5700動態(tài)信號測試分析系統(tǒng).docx》資料免費下載
    發(fā)表于 10-17 13:53 ?0次下載

    暴漲預警!NVIDIA GPU供應大跳水

    gpu
    jf_02331860
    發(fā)布于 :2024年07月26日 09:41:42

    Hugging Face提供1000萬美元免費共享GPU

    全球最大的開源AI社區(qū)Hugging Face近日宣布,將提供價值1000萬美元的免費共享GPU資源,以支持開發(fā)者創(chuàng)造新的AI技術(shù)。這一舉措旨在幫助小型開發(fā)者、研究人員和初創(chuàng)公司,對抗大型AI公司的市場壟斷,推動AI領域的公平競爭。
    的頭像 發(fā)表于 05-20 09:40 ?562次閱讀

    國內(nèi)哪家的FPGA適合初學者

    如題,想著手學習FPGA的話,國內(nèi)哪家的比較好,更適合初學者學習?這方面的經(jīng)驗,是一點都沒。
    發(fā)表于 04-14 19:17

    UHD智能顯示SoC VS680產(chǎn)品簡介

    電子發(fā)燒友網(wǎng)站提供《UHD智能顯示SoC VS680產(chǎn)品簡介.pdf》資料免費下載
    發(fā)表于 03-26 16:05 ?11次下載

    谷歌交互世界模型重磅發(fā)布

    谷歌模型
    北京中科同志科技股份有限公司
    發(fā)布于 :2024年02月28日 09:13:06

    Groq推出大模型推理芯片 超越了傳統(tǒng)GPU谷歌TPU

    Groq推出了大模型推理芯片,以每秒500tokens的速度引起轟動,超越了傳統(tǒng)GPU谷歌TPU。
    的頭像 發(fā)表于 02-26 10:24 ?891次閱讀
    Groq推出大模型推理芯片 超越了傳統(tǒng)<b class='flag-5'>GPU</b>和<b class='flag-5'>谷歌</b>TPU

    VS Code和VS Codium之間的區(qū)別有哪些?你選哪個?

    VS Codium 是一個 VS Code 的克隆版本,百分之百免費且開源。
    的頭像 發(fā)表于 02-23 15:28 ?1343次閱讀
    <b class='flag-5'>VS</b> Code和<b class='flag-5'>VS</b> Codium之間的區(qū)別有哪些?你選哪個?

    GPU是顯卡嗎 cpu和gpu哪個算力

    GPU(圖形處理器)是顯卡(顯像處理器)的一種,它是一種專門用于圖形計算的處理器。顯卡是計算機中的一個重要組件,負責處理和渲染圖形,使它們能夠在顯示屏上顯示出來。GPU與CPU在計算原理和結(jié)構(gòu)上有
    的頭像 發(fā)表于 01-10 15:45 ?4801次閱讀

    英偉達和華為/海思主流GPU型號性能參考

    一句話總結(jié),H100 vs. A100:3 倍性能,2 倍價格 值得注意的是,HCCS vs. NVLINK的GPU 間帶寬。 對于 8 卡 A800 和 910B 模塊而言,910B HCCS 的總帶寬為392GB/s
    發(fā)表于 12-29 11:43 ?4732次閱讀
    英偉達和華為/海思主流<b class='flag-5'>GPU</b>型號性能參考

    原理揭秘!骨傳導耳機哪家?盤點2024年骨傳導耳機排行榜前十

    原理揭秘!骨傳導耳機哪家?盤點2024年骨傳導耳機排行榜前十 骨傳導技術(shù)是一種獨特而創(chuàng)新的音頻傳輸方式,通過直接傳導聲音到顱骨,使得聽覺感知不再依賴傳統(tǒng)耳朵。這一技術(shù)的出現(xiàn)為人們帶來了全新的聽覺
    的頭像 發(fā)表于 11-21 16:25 ?645次閱讀
    原理揭秘!骨傳導耳機<b class='flag-5'>哪家</b><b class='flag-5'>強</b>?盤點2024年骨傳導耳機排行榜前十

    MCUXpresso for VS Code保姆式教程免費送!

    背景 NXP 在 2023 年 7 月 31 日正式發(fā)布了 MCUXpresso for VS Code? 插件,使得廣大的 VS Code 用戶可以在熟悉的代碼編輯環(huán)境中,快速開發(fā)基于 NXP
    的頭像 發(fā)表于 11-16 08:55 ?1115次閱讀
    MCUXpresso for <b class='flag-5'>VS</b> Code保姆式教程<b class='flag-5'>免費</b>送!

    pcb電路板打樣工廠哪家

    pcb電路板打樣工廠哪家
    的頭像 發(fā)表于 11-15 11:11 ?5953次閱讀

    基于LPC2214+VS1003的音頻處理方案

    電子發(fā)燒友網(wǎng)站提供《基于LPC2214+VS1003的音頻處理方案.rar》資料免費下載
    發(fā)表于 11-10 10:47 ?2次下載
    基于LPC2214+<b class='flag-5'>VS</b>1003的音頻處理方案

    基于VS1003B的語音通信方法研究

    電子發(fā)燒友網(wǎng)站提供《基于VS1003B的語音通信方法研究.pdf》資料免費下載
    發(fā)表于 11-07 08:31 ?3次下載
    基于<b class='flag-5'>VS</b>1003B的語音通信方法研究