iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 4
0
AI & Data

從零開始或許曾經想過但想想還是算了的深度雜技系列 第 4

[DAY 04] 自己刻底層Function?不存在的 : Pytorch 簡介

  • 分享至 

  • xImage
  •  

前言


例行性的、不免俗先來個阿峻語錄;

想要吃泡麵不需要先去劈根竹子作筷子
--- 阿峻 20190920

在我們建構我們的想法過程中,我們常常會陷入一種瘋狂的思維中,那便是盡可能鉅細靡遺的實作出自己的想法, "From Scratch的那種",可能是因為這樣一步一步的建構起來我們才有一種腳踏實地的感覺,知道自己的想法有確確實實的被實作在電腦上並準確地執行著。但其實就想我們建造一量車子一樣,其實我們不需要重新發明輪子也可以把我們對車子的設計付諸實現。在學習一項新的技能時,這種從 "Bottom UP" 一步步往上、堅實地成長的想法固然非常好,但我們先可以使用現成的工具們先組出一個能動的模型或者系統,從 "Top Down" 的方式先取得一個 Big Picture 在逐步把每個細節填滿也是一個不錯的自我修練方式喔 ~

Pytorch


阿講了這麼多,阿峻怎麼沒講要用甚麼已經有的 Tool 呢XDDDDD
啊我這不就來了嗎 >< 在本系列會用的 Deep Learning 的 Library 就是 Pytorch,是一個支援 Python 且語法接近在寫 Python 那樣方便的函式庫喔~
附上官網連結:
URL : (https://pytorch.org/)
https://ithelp.ithome.com.tw/upload/images/20190920/20120549sEraDwo0Pl.png

簡介背景

在很久很久其實也沒很久的以前,各路先鋒大神為了更加有效的研究深度學習以及更好更有效地實作出深度學習網路,開始了製作深度學習 Library 以供研究員或者工程師使用,像是 Berkely 的Caffe 以及 Facebook 研究員的 Torch
https://ithelp.ithome.com.tw/upload/images/20190920/20120549Xulnex14ul.jpg
- 圖片來源 : https://makerpro.cc/2018/06/deep-learning-frameworks/
但之前提出的框架在語言的選取上或者語法較為複雜又或者選擇了 Lua 這個較不像 Python 更方便簡單簡潔書寫的語言,對於使用者換句話來說便是易用性較不是那麼的高。在2017時, 由 Adam Paszke、Sam Gross 與 Soumith Chintala 等人帶頭開發了PyTorch,其成員來自 Facebook FAIR 和其他多家實驗室。正如它官網的主打口號,它是一種 Python 優先的深度學習框架,意即他是針對 Python 這個語言特性去作設計,因此你在使用它時,會發現它對 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加速計算喔
https://ithelp.ithome.com.tw/upload/images/20190920/20120549YT7bsISnVi.png
按下 Setting 修改 Hardware Accelerator 成 "GPU" 並記得一定要按下 "SAVE"
https://ithelp.ithome.com.tw/upload/images/20190920/20120549MiPQG5cCfu.png
接者我們在Code block中使用 "nvdia-smi" 來檢查是否已經成功抓到GPU資源即可

!nvidia-smi

https://ithelp.ithome.com.tw/upload/images/20190920/20120549aAr1UqYx8C.png
上面我們是抓到 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可能更有練習效果!
但我們還是貼一下我覺得不錯的連結啦 ><

  1. Pytorch 官網 tutorial
    URL : (https://pytorch.org/tutorials/?source=Google&medium=PaidSearch&utm_campaign=1711272647&utm_adgroup=67277775336&utm_keyword=pytorch%20tutorials&utm_offering=AI&utm_Product=PYTorch&gclid=CjwKCAjw8ZHsBRA6EiwA7hw_scpYOsJnHNCVb2CfC1FaJ6QOfJypFiklcU9rgR4Ql80LXnxYszfFOhoCnRYQAvD_BwE)
  2. 莫凡 Pytorch
    URL : (https://morvanzhou.github.io/tutorials/machine-learning/torch/)
  3. Pyladies 系列文整理
    URL : (https://medium.com/pyladies-taiwan/%E6%B7%B1%E5%BA%A6%E5%AD%B8%E7%BF%92%E6%96%B0%E6%89%8B%E6%9D%91-pytorch%E5%85%A5%E9%96%80-511df3c1c025)

後語

在練習、熟練完Python、Pytorch的基本語法之後,我們就可以開始嘗試性的去組model來玩玩、練習以及觀察一下效果並做一些實務的練習來跟上潮潮的世界潮流XDDDD


上一篇
[DAY 03] 描述心中藍圖的語言 : Python
下一篇
[DAY 05] 從頭訓練大Model?想多了 : Torchvision 簡介
系列文
從零開始或許曾經想過但想想還是算了的深度雜技30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言