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

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

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

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

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

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

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

提供免費的GPU

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

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

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

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

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

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

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

什么是GPU?

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

Nvidia P100 GPU

為什么要使用GPU?

使用大顯存的GPU來訓(xùn)練深度學(xué)習(xí)網(wǎng)絡(luò),比單純用CPU來訓(xùn)練要快得多。想象一下,使用GPU能夠在十幾分鐘或者幾個小時內(nèi),獲得所訓(xùn)練網(wǎng)絡(luò)的反饋信息,而使用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來訓(xùn)練模型,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é))相似但并不等同。通過谷歌搜索相應(yīng)信息,可以將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就會將你踢掉。

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

計算機視覺任務(wù)下的速度比較

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

Cat and dog images from the dataset

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

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

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

Batch Size

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

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

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

當我將Colab上的batch size設(shè)為256,然后開始訓(xùn)練模型時,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設(shè)為256,可能就是該任務(wù)下Colab的極限了。

混合精度訓(xùn)練

接下來,我們使用了混合精度訓(xùn)練,該訓(xùn)練方式能夠有效地降低訓(xùn)練時間?;旌暇扔?xùn)練在某些可能的情況下,會使用16位精度的數(shù)值代替32位的數(shù)值,來進行計算。Nvidia聲稱使用16位精度,可以使P100的吞吐量翻倍。

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

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

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

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

前文提到的硬件差異,似乎并不是導(dǎo)致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的深度學(xué)習(xí)原型庫。根據(jù)Nvidia的這篇文章,Kaggle的軟件應(yīng)該可以提高P100的速度。但是,正如cuDNN更改說明(https://docs.nvidia.com/deeplearning/sdk/cudnn-release-notes/rel_750.html#rel_750)中所示,阻止加速的bug是定期排查和修復(fù)的,那么kaggle在混合精度訓(xùn)練上表現(xiàn)不佳,可能是因為bug修復(fù)不及時所導(dǎo)致的吧。

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

優(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ū)有利于學(xué)習(xí)和展示你的技能

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

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

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

缺點

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

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

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

結(jié)論

Colab和Kaggle都是開展云端深度學(xué)習(xí)的重要資源。我們可以同時使用兩者,例如在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)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 谷歌
    +關(guān)注

    關(guān)注

    27

    文章

    6176

    瀏覽量

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

    關(guān)注

    28

    文章

    4760

    瀏覽量

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

    關(guān)注

    8

    文章

    1699

    瀏覽量

    46050

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    《CST Studio Suite 2024 GPU加速計算指南》

    GPU Computing Guide》是由Dassault Systèmes Deutschland GmbH發(fā)布的有關(guān)CST Studio Suite 2024的GPU計算指南。涵蓋GPU計算
    發(fā)表于 12-16 14:25

    智慧路燈哪家?看完這些案例你就心里有數(shù)了

    智慧路燈哪家?看完這些案例你就心里有數(shù)了
    的頭像 發(fā)表于 11-14 18:05 ?344次閱讀
    智慧路燈<b class='flag-5'>哪家</b><b class='flag-5'>強</b>?看完這些案例你就心里有數(shù)了

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

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

    TI TDA2x SoC上基于GPU的環(huán)視優(yōu)化

    電子發(fā)燒友網(wǎng)站提供《TI TDA2x SoC上基于GPU的環(huán)視優(yōu)化.pdf》資料免費下載
    發(fā)表于 10-10 09:14 ?0次下載
    TI TDA2x SoC上基于<b class='flag-5'>GPU</b>的環(huán)視優(yōu)化

    暴漲預(yù)警!NVIDIA GPU供應(yīng)大跳水

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

    大模型發(fā)展下,國產(chǎn)GPU的機會和挑戰(zhàn)

    電子發(fā)燒友網(wǎng)站提供《大模型發(fā)展下,國產(chǎn)GPU的機會和挑戰(zhàn).pdf》資料免費下載
    發(fā)表于 07-18 15:44 ?10次下載
    大模型發(fā)展下,國產(chǎn)<b class='flag-5'>GPU</b>的機會和挑戰(zhàn)

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

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

    VS680芯片基礎(chǔ)介紹

    VS680是一款高性能的片上多媒體系統(tǒng)(SoC),用于新一代智能顯示器消費類物聯(lián)網(wǎng)設(shè)備。它結(jié)合了增強人工智能功能的智能揚聲器/本地觸摸顯示器,集成了高性能四CPU子系統(tǒng)以及最新一代GPU、超高清視頻編解碼器處理器、顯示管道和安全處理器,以實現(xiàn)具有內(nèi)容保護功能的強大視頻/音
    的頭像 發(fā)表于 05-09 09:25 ?1093次閱讀
    <b class='flag-5'>VS</b>680芯片基礎(chǔ)介紹

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

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

    深蕾半導(dǎo)體智能顯示SoC芯片 VS680產(chǎn)品簡介

    電子發(fā)燒友網(wǎng)站提供《深蕾半導(dǎo)體智能顯示SoC芯片 VS680產(chǎn)品簡介.pdf》資料免費下載
    發(fā)表于 03-27 09:06 ?3次下載

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

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

    FPGA在深度學(xué)習(xí)應(yīng)用中或?qū)⑷〈?b class='flag-5'>GPU

    現(xiàn)場可編程門陣列 (FPGA) 解決了 GPU 在運行深度學(xué)習(xí)模型時面臨的許多問題 在過去的十年里,人工智能的再一次興起使顯卡行業(yè)受益匪淺。英偉達 (Nvidia) 和 AMD 等公司的股價也大幅
    發(fā)表于 03-21 15:19

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

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

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

    Groq推出了大模型推理芯片,以每秒500tokens的速度引起轟動,超越了傳統(tǒng)GPU谷歌TPU。
    的頭像 發(fā)表于 02-26 10:24 ?1078次閱讀
    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 ?1937次閱讀
    <b class='flag-5'>VS</b> Code和<b class='flag-5'>VS</b> Codium之間的區(qū)別有哪些?你選哪個?