iT邦幫忙

2021 iThome 鐵人賽

DAY 6
0
AI & Data

AI平台初學者工作坊: 從training、tracking到serving系列 第 6

使用jupyterhub執行MNIST training

在上一篇我們已經安裝好JupyterHub, 也說明config檔的參數內容, 現在我們使用admin這個user登入jupyterhub.

我們開啟JupyterHub首頁, 帳號輸入admin, 再點按Sign in
https://ithelp.ithome.com.tw/upload/images/20210919/20140792XmMr6OtVRZ.png

接下來, 我們要建立一個新的noteboobk, 請點按下圖的 New -> Python 3(ipykernel)
https://ithelp.ithome.com.tw/upload/images/20210919/20140792jJF4GcME35.png

看到這樣的畫面就可以開始寫notebook了.
https://ithelp.ithome.com.tw/upload/images/20210919/20140792KVLXczLB9V.png

上傳範例notebook

或著你可以上傳你已寫好的notebook檔案.

那我們就來上傳一個notebook檔案

  • 首先請先到這個網址下載 fastai_mnist.ipynb
  • 下載下來後在jupyterHub上點擊下圖的Upload
    https://ithelp.ithome.com.tw/upload/images/20210919/20140792d0Fv1dliFp.png
  • 然後選擇本機的 fastai_mnist.ipynb 檔, 然後點擊下圖的Upload
    https://ithelp.ithome.com.tw/upload/images/20210919/20140792I0L8iS75ID.png
  • 然後就可以看到已上傳完成的檔案
    https://ithelp.ithome.com.tw/upload/images/20210919/20140792EiUzfNtx0p.png
  • 在檔案列表上點擊剛上傳的檔案就會開啟notebook內容
    https://ithelp.ithome.com.tw/upload/images/20210919/20140792bR2WdtH8yE.png

安裝package

在執行notebook之後, 我們需要安裝所需的package
請在檔案列表頁面點擊 New -> Terminal
https://ithelp.ithome.com.tw/upload/images/20210919/201407926pkInekkzN.png

然後在Terminal頁面中輸入下列指令並執行

pip install fastai

如下圖
https://ithelp.ithome.com.tw/upload/images/20210919/20140792x3etpoCfQe.png

完成package安裝之後, 然後就可以執行notbook的內容

fastai小小簡介

fastai是一組基於pytorch所封裝而成的程式庫, 讓使用者可以更容易使用pytorch操作, 也就是pytorch是比較下層的程式庫, 而fastai對比pytorch是比較上層的程式庫.

這個關係就好像karas(上層)與tensorflow(下層)的關係,

notebook內容說明

這個notebook範例是以fastai執行MNIST資料集訓練手寫辨識功能, 完成訓練後會將訓練完成的mode匯出以做為之後部署在推論環境所使用,以下說明重點內容

  • 滙入全部的fastai.vision程式庫

    from fastai.vision.all import *
    
  • 下載MNIST資料集

    path = untar_data(URLs.MNIST)
    
  • ImageDataLoaders是fastai所提供的類別, 並且呼叫from_folder函式將圖像分為訓練資料與測試資料

    dls = ImageDataLoaders.from_folder(path,train='training', valid='testing')
    
  • 建立卷積神經網路(CNN)
    建立CNN時需要帶入下列參數

    • dls:用來訓練的資料(就是前一步驟的ImageDataLoaders)
    • resnet18: 指定架構, 也就是想要建立的模型種類, 在這個我們採用pre-trained好的resnet18(還有34、50、101、152)
    • pretrained:是否採用pre-trainedm模型中的權重值(原本預設值就是True)
    • metrics: 模型評估方式(metric), 這裡我們設定metrics為accuracy
    learn = cnn_learner(dls, resnet18, pretrained=True, metrics=accuracy)
    
  • 執行訓練
    執行訓練時我們呼叫 fine_tune函數, 進行微調. 函式中的參數是epoch的次數, 也就是每張照片要觀察多少次, 這裡我們設定為1

    learn.fine_tune(1)
    

    也可以使用 fit_one_cycle(epochs, learning_rate)執行訓練, 意思是不採用pre-trained好的權重值, 而是要重頭開始訓練模型, 那就要把pretrained參數設定為false (pretrained=False)

    完成訓練之後, 可以在notebook上看到訓練(微調)的結果
    https://ithelp.ithome.com.tw/upload/images/20210919/20140792v2ap1hxSxp.png

  • 將模型匯出
    完成訓練之後需要把模型儲存起來. 我們使用export函式將模型架構與模型參數儲存起來, 呼叫export函式之後會產生export.pkl的檔案, 這個模型檔的格式是pickle.

    learn.export()
    

    匯出模型後, 你會在Jupyter檔案列表中看到這個檔案, 如下圖
    https://ithelp.ithome.com.tw/upload/images/20210919/20140792m6oEOvdKbg.png

  • 下載模型
    因為我們之後會手動部署這個訓練好的模型, 所以請使用notebook下載功能將export.pkl 下載到本機存放.

到這裡我們已完成訓練並且取得模型檔

參考資料

https://docs.fast.ai/


上一篇
說明Jupyterhub config內容
下一篇
安裝MLFlow
系列文
AI平台初學者工作坊: 從training、tracking到serving30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言