在開始進入我們各式各樣的深度模型之前,我們要先來介紹一個非常 Powerful 的 Deep Learning Framework, 也就是之後我們會使用的 Pytorch
在我們依照 Paper 提出的模型架構或單純依照我們的想法去實現模型過程中,我們常常會陷入一種瘋狂的思維中,那便是希望盡可能完整的或者說鉅細靡遺的實作出自己的想法,因此常常會做的事情就是想要直接 " *Write From Scratch *",這個邏輯本身沒錯,因為確實按照理論的計算方式去直接寫成城市去 Run 一定可以達到我們要的目標,也是因為這樣一步一步的建構起來我們才有一種腳踏實地的感覺,知道自己的想法有確確實實的被實作在電腦上並準確地執行著。
但其實就想我們建造一量車子一樣,其實我們不需要重新發明輪子也可以把我們對車子的設計付諸實現。我們在學習一項新的技能時,從 "Bottom UP" 一步步往上想法固然非常好,但我們先可以使用現成的工具們先組出一個能動的模型或者系統,從 "Top Down" 的方式先取得一個 Big Picture ,知道這個模型的 Prototype 在運行會有甚麼結果,然後未來若是有需要我們在逐步把每個細節填滿這樣就好 ~
Pytorch
阿講了這麼多,阿峻怎麼沒講要用甚麼已經有的 Tool 呢XDDDDD
啊我這不就來了嗎 >< 在本系列會用的 Deep Learning 的 Library 就是 Pytorch,是一個支援 Python 且語法接近在寫 Python 那樣方便的函式庫喔~
附上官網連結:
URL : (https://pytorch.org/)
自從硬體的計算速度逐年往上升以來,Deep Learning 逐漸走出上一次的 AI 寒冬 重回人們的視野。在研究領域上逐漸開始有越來越多人投資人力以及財力進來,各路人馬為了更加有效的研究深度學習以及更好更有效地實作出深度學習網路,開始了陸續製作能夠提供深度學習計算的 Library 供使用者快速的實作出想法並加以觀察結果,著名的例子像是 Berkely 的Caffe 以及 Facebook 以前開源的 Torch
(儘管 Torch 已經不再支援更新了)
- 圖片來源 : https://makerpro.cc/2018/06/deep-learning-frameworks/
然而以前的 Library 在語法設計上較為複雜,使用者在使用並不是非常的方便以及易用,並且以前眾多的 Library 只支援 Lua 或者 C++,這些語言無法向 Python 簡單簡潔書寫,對於使用者來說並ˋ不是非常的友善。因此,在2017年由 Adam Paszke、Sam Gross 與 Soumith Chintala 以及眾多 Facebook 研究員或者工程師(主要成員來自 Facebook FAIR 和其他多家實驗室)所領導開發的PyTorch出現在大眾的視野裡。
Pytorch 如同其官網的主打口號,它是一種 Python 優先的深度學習框架,意即他是針對 Python 這個語言特性去作設計,因此你在使用它時會發現它對 Python 的支援性十分的高並且可以與多種 Library 作結合,你甚至有一種在如同使用其他 Python Library的感覺一樣簡單容易,它與Python完美結合的界面以及易用性是它為何能快速崛起的原因。
我們可以跟 Jupyter 安奘的方式一樣我們可以使用 pip 來簡單安奘
pip install torch torchvision
但詳情還是請參考官網準確地說明,一步一步貼即可,但因為安裝 GPU版本可能要考慮到CUDA版本是否與 Pytorch 版本合得起來(這一部分真的要參照官網文檔)所以比較稍微麻煩,後須若是有閒我來講講我怎麼建置我的 DL 開發環境好了XD
作為一個深度學習網路 Library 怎麼可能不支援使用 GPU 作加速計算XD,但打造一個支援GPU加速計算的環境並不是如此的方便以及可能要考慮到實體GPU的採買(經濟因素),當然這是一個好機會向媽媽以訓練深度網路的藉口買張 GTX 2080TI 來"順便"打奧德賽探索主角技能數成長的過程(大誤)。我們已經有了Python 的開發環境,但這個環境不見得已經可以支援GPU加速計算了,雖然Pytorch也是支援CPU計算,但用CPU計算怕是會算到天亮XDQQ當然有了Jupyter之後只需要灌好CUDA以及cuDNN就可以安裝Pytorch的GPU版本,但為了方便我們練習,是不是有個地方就像 Jupyter官網一樣讓我們可以是是使用一下有 GPU 的環境? 答案當然是肯定的齁XDD要不然我打啥 XDDDD 讓我們使用 Google 的 Colab 的平台來試試。啥?你說懶得Google !!來來來~ Let me google for you
它本質上你可以直接是作一種 Jupyter 來使用喔,使用起來十分直覺!
開好使用頁面之後也記得要改變 Setting 加入 GPU 資源才能使用 GPU加速計算喔
按下 Setting 修改 Hardware Accelerator 成 "GPU" 並記得一定要按下 "SAVE"
接者我們在Code block中使用 "nvdia-smi" 來檢查是否已經成功抓到GPU資源即可
!nvidia-smi
上面我們是抓到 Tesla K80 這張GPU,聽說幸運的話可以拿到 T4 GPU。但因為是雲端上的免費資源,所以google本身會對GPU作虛擬化,所以我們無法使用到完整的一張GPU,例如 colab 上的 T4大概只有 Nvidia GTX 1080 TI 計算速度的一半QQ
另外有人會許有發現有另一個 Hardware Accelerator 選項是 "TPU", TPU 本身是 google自行研發的硬體加速器,類似GPU對於DL計算的幫助一樣,它也可以加速DL計算,關於TPU的介紹在此不做多說,在硬體介紹那張有餘力也可以來介紹一下,附上Colab 上使用 TPU 的教學
你是不是以為這一次的基礎語法我總算會好好貼上給大家練習跟使用XDDD
Naive~
----阿峻20190920
關於基礎語法這件事我覺得幫大家挑選一下早已有的、優秀的、現成的整理或教學給你們參考就好,這邊我們就不把精力放在基礎語法的撰寫了,但它的語法與Python具有高度相似性,所以大家在使用上並不會感到太多的壓力。另外,關於Pytorch 的基礎語法使用上,我倒是覺得可以讓大家在實做的過程中逐漸熟悉就好,在能夠使用Python的情況倒是不用刻意去練習各別的基礎語法,組在一起練習寫一個具有完整功能的 Function 或者 Module可能更有練習效果!
但我們還是貼一下我覺得不錯的連結啦 ><
在練習、熟練完Python、Pytorch的基本語法之後,我們就可以開始嘗試性的去組model來玩玩、練習以及觀察一下效果並做一些實務的練習來跟上潮潮的世界潮流XDDDD