使用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/


<<:  Day 19 「完美不完美」TDD 的困难之处

>>:  Day4 制作草稿

Day26,Kubecost 体验,算钱好难......

正文 kubectl create ns kubecost wget https://raw.git...

Day19 Redis架构实战-持久化AOF

Redis持久化 Redis持久化模式->AOF AOF (Append Only File)...

Day19 订单 -- 写入订单

老样子让我们复习一下前几天的内容, 首先从订单的基础结构--Day13 订单 -- 基础结构, 到将...

[Day 4] Course 1_Foundation - 分析思维(Thinking analytically)

《30天带你上完 Google Data Analytics Certificate 课程》系列将...

【Day 04】 Data Analytics Pipeline 对应於 AWS 中的服务 ( 2 )

今天继续针对 Data Analytics Pipeline on AWS 中常见的 AWS 服务来...