--- tags: Python,Fast.ai author: Lai-Chun-Jing date: 2019/9/12 --- **<font color=Blue>【Fast.ai學習筆記(一)】</font>** # 如何建立Fast.ai環境 **<font color=Black size=4>September, 12, 2019</font>** **<font color=Black size=4>Lai-Chun-Jing</font>** &ensp;&ensp;&ensp;&ensp;因緣際會下,有幸參加 ***台北敏捷AI社群*** 的第四次Workshop。在這次小聚當中,發起人**Jason**講的主題是 —— **Fast.ai深度學習課程**。Fast.ai是一套對非程式開發人員十分友善的入門課程,這次小聚中,我們透過Google所開發的雲端Jupyter Notebook環境,拆解成幾個簡單的步驟來完成一個基礎的ResNet模型。 ### <font color =Blue>1. Fast.ai課程簡介</font> &ensp;&ensp;&ensp;&ensp;Fast.ai是KaJeremy Howard(同時也是Kaggle的總裁&首席科學家)所創辦。**.ai**其實是英國海外屬地安圭拉(Anguilla)國家及地區頂級域(ccTLD)的網域名稱,管理者為安圭拉政府,如果想要讓自己有AI的感覺也可以去註冊,不過據說不便宜就是了。Fast.ai不僅僅是一門課程,他更建立一套基於Pytorch的函數庫(**Library**),有點類似**TensorFlow與Keras**的關係。 | Type |Library | Library | |:--------:|:--------: |:--------: | |Interface |[Keras ](https://keras.io/) |[Fast.ai](https://www.fast.ai/)| |Base |[TensorFlow](https://www.tensorflow.org/)|[Pytorch](https://pytorch.org/) | (**如果對這幾個Library感興趣可以點進去連結**) 在正式進入Fast.ai課程之前,可能要先對幾個名詞簡單的了解一下: * **Python** Python是近幾年,最為熱門的程式語言。Python的設計是直譯式、進階編程、通用型程式語言,其強調**程式碼的可讀性和簡潔的語法**,是許多非程式開發人員入門的首選。 * **Jupyter Notebook** Jupyter Notebook它的前身是**IPython**,是一個以**Web**為基礎的交互式計算環境,主要用來創建Jupyter Notebook文檔(**.ipynb**)。Jupyter Notebook因為其簡潔、直覺的介面設計,對新手非常友善。近年來,十分受到資料科學等相關研究者的歡迎。 * **Colab** Colab是一個由Google所設計的免費雲端**Jupyter Notebook**環境。透過Colab可以使用Google所提供的虛擬**GPU(Tesla K80 GPU)**以及**TPU(TPUv2)**,來訓練你所設計的深度學習模型。目前提供Python2與Python3在Colab上面編碼。 今天所學習的Fast.ai的課程是【**Practical Deep Learning for Coders, v3**】的**Lessons1 - What's your pet**。 ![](https://i.imgur.com/k7UWzH8.png) **<center>Fast.ai官方說明首頁</center>** ### <font color =Blue>2. 載入Fast.ai教材</font> &ensp;&ensp;&ensp;&ensp;首先要建立開發環境,所以我們可以參考Fast.ai所提供的[簡易Colab設定](https://course.fast.ai/start_colab.html)文件。可以從文件上的連結打開Colab,或是在gooogle上搜尋(很好找!)。不過因為Colab是Google的服務,所以記得準備好你的Google帳號以供登入。 ![](https://i.imgur.com/5qqHQqW.png) **<center>Colab歡迎畫面</center>** &ensp;&ensp;&ensp;&ensp;從Colab的歡迎頁面可以看到,他提供**GitHub**、**GoogleDrive**...等五種匯入資源的方式。而Fast.ai就將教材學習的程式碼放在GitHub上供人使用,點選GitHub輸入`Fastai/course-v3`進行搜尋,找到這次上課所需要的教材,這次要上的課程是**Lessons1 - What's your pet**,所以選取**Lessons1(紅色匡)**。(**<font color=red>※如果發現輸入`Fastai/course-v3`後,找不到nbs/d1/lesson1-pets.ipynb的話。請把下拉式選單Repository**點開,找到***Fastai/course-v3**點入即可找到。</font>**) ![](https://i.imgur.com/E6sAJ0I.png) **<center>選擇【Lesson - What's your pet】課程</center>** **(※由於這邊是使用GitHub匯入課程教材,所以也需要準備一組GitHub帳號,等等會用到。)** &ensp;&ensp;&ensp;&ensp;接下來就可以看到正式的教材畫面了。*順帶一提,如果發現使用介面是簡體中文,但你比較喜歡~~原味~~英文的話,可以在Colab上方的 <kbd>**幫助**</kbd> 欄位中,找到 <kbd>**查看英文版**</kbd> ,點下去就能夠轉換成英文介面了。* ![](https://i.imgur.com/G9v4Upz.png) **<center>進入【Lesson - What's your pet】課程教材畫面</center>** &ensp;&ensp;&ensp;&ensp;在這裏我們可以發現,上方有一個被🚫的磁碟圖示,這代表你並沒有這個教材文件的所有權限。所以建議從<kbd>**File**</kbd>選取<kbd>**Save a copy in Drive...**</kbd>,將Fast.ai教材文件轉移到自己的**Google Drive**上,這樣就可以隨自己的想法編輯Jupyther Notebook了。 ### <font color =Blue>3. 啟用GPU</font> &ensp;&ensp;&ensp;&ensp;最後一項調整就是先前提到過的**GPU與TPU**。Colab十分佛心的提供免費GPU、TPU給初學者使用,如果要開啟可以從上方欄位找到<kbd>**Runtime**</kbd>選擇<kbd>**Change runtime type**</kbd>就可以看到下面這個畫面: ![](https://i.imgur.com/RVDagug.png) 這裡不僅可以選擇自己要使用<kbd>**GPU**</kbd>還是<kbd>**TPU**</kbd>,還可以設定你的**Jupyter Notebook**要用<kbd>**Python2**</kbd>或是<kbd>**Python3**</kbd>來編譯。我是使用GPU的選項,保存好設定後,可以在右上角的<kbd>**Connect**</kbd>點選<kbd>**Connect hosted runtime**</kbd>,你會發現原本的Connect變成<img width="90" height="30" src="https://i.imgur.com/wVZYi4e.png"/>這個圖示,接下來可以透過輸入`!nvidia-smi`查看我們所使用的GPU型號:(※這個步驟可以先省略) ``` Thu Sep 12 03:30:56 2019 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 430.40 Driver Version: 418.67 CUDA Version: 10.1 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla K80 Off | 00000000:00:04.0 Off | 0 | | N/A 34C P8 28W / 149W | 0MiB / 11441MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+ ``` 至於Colab上TPU的相關訊息,可以參考這篇[《Using a TPU in Google Colab》](https://medium.com/@jannik.zuern/using-a-tpu-in-google-colab-54257328d7da),裡面寫的不錯,有興趣可以自己去研究研究。 ### <font color =Blue>4. 小結</font> &ensp;&ensp;&ensp;&ensp;一開始其實只是單純覺得這個課程很棒,想說紀錄一下可以順便複習小聚所學到的東西。可是在寫這篇的過程當中,不知不覺越寫越多,為了不要讓讀者看起來有大雜燴的感覺,所以決定多分幾篇來寫。這麼做不但可以讓知識點比較系統化,也能夠寫得比較清晰一點。**我不敢保證我所Search到的100%正確,如果發現有誤歡迎來交流一下。我認爲多交流,比起自己封閉的學習更加來得有效率,每個人都是我的導師**。下一篇[**【入門文】Fast.ai學習筆記(二)Practical Deep Learning for Coders, v3**將會介紹Fast.ai的第一門深度學習課程**Lessons1 - What’s your pet**,可以想像我的雞婆個性,應該會補充更多的知識點吧哈哈哈,敬請期待吧。 ### <font color =Blue>5. 資料來源</font> [1]https://en.wikipedia.org/wiki/Collaboratory [2]https://www.fast.ai [3]https://en.wikipedia.org/wiki/.ai [4]https://en.wikipedia.org/wiki/Project_Jupyter [5]https://medium.com/@jannik.zuern/using-a-tpu-in-google-colab-54257328d7da ### [回首頁](https://hackmd.io/@s97wzpzMREOn_q9CTUtCDg/LaiChunJing)