2022年5月19日 星期四

PyTorch 線上課程筆記 : 機器學習與深度學習 (一)

今天是在家上班 Day 2, 昨天下班時上司電話通知, 說觀看公司線上教學網站上的課程也是在家上班的工作項目之一, 所以早上做完例行工作後挑選了胡嘉璽老師 18 小時的 PyTorch 課程, 以下是今天聽課筆記 :
  1. 只要熟悉 Numpy 與具備機器學習的數學基礎, 即使不使用框架也能自己手刻各式神經網路. 
  2. Python 支援各種主流的 AI 格式, 例如 pt, pth, pbf, checkpoint, ONNX 等. 
  3. 機器學習測試環境建議在本機使用 Jupyter Lab, 若本機無 GPU 可使用 Colab, 生產環境建議使用 nvidia-docker.
  4. 如何在 Linux 下安裝 cuda/cudnn 環境 :
    https://hackmd.io/@joshhu/SyZwyhODB


  5. 機器學習框架 (framework) 的功能 :
    (1). 實作張量的圖模型 (靜態圖 or 動態圖)
    (2). 處理 CPU/GPU 張量與其梯度計算 (自動微分)
    (3). 內建可直接套用的神經網路結構 (AlexNet, ResNet ...)
    (4). 提供機器學習與深度學習函式庫與各程式語言之 API
    (5). 處理電腦視覺
  6. 機器學習框架的四大派系 :
    (1). Google 系 : TensorFlow + Keras
    (2). FaceBook 系 : Torch, PyTorch, Caffe2
    (3). Microsoft 系 : CNTK, Gluon
    (4). Amazon 系 : MXNet
    TensorFlow 支援各種程式語言 API 介面與 Google 專用加速硬體 TPU, 但其靜態圖需要更多程式碼, 學習者需熟悉 ML 先備知識, 適合有經驗的工程師.
    MXNet 並非 Amazon 所開發, 它事實上是 Apache 的一項頂級專案, 具有跨平台平行處理特色, 執行速度極快, 被 Amazon 大量用在 AWS 上. 
    PyTorch 是臉書以 Lua 語言開發的 Torch 框架之 Python 版, 特色是寫法非常 Pythonic, 使用動態計算圖可隨時修改模型, 支援分散式學習與多個育訓練模型, 比 TensorFlow 容易上手. 
    目前市場的兩大主流架構是 TensorFlow 2 與 PyTorch, 兩者都朝向對方的優點演進 (有人說 TensorFlow 2 是 PyTorch 1.5).
    開發 ML 商用產品建議使用 TensorFlow 2, 因為用 tf.keras 即使不懂原理也可快速上手. 但若熟悉機器學習的數學原理則建議使用更有彈性的 PyTorch, 能更快速做出原型 (prototype). 參考 :
    https://deepsense.ai/keras-or-pytorch/ 
  7. 學習 PyTorch 必須熟悉 Python 的 (generator (產生器), decorator (裝飾器), 與 data loader 等用法.  
  8. 2017 年美國知名的線上 AI 教學網站 fast.ai 宣布放棄 Keras 改用 PyTorch, 因為 Keras 不夠彈性, 使 PyTorch 一砲而紅, 參考 :
    https://www.fast.ai/2017/09/08/introducing-pytorch-for-fastai/
  9. 雖然 Anaconda 很龐大, 但用它來學習 PyTorch 有非常多優點, 其中最重要的是它內建了很多資料科學與機器學習所需之套件, 避免自行安裝常遇到的版本匹配問題, 其次是內建方便好用的 Jupyter Lab. 
  10. Jupyter Lab 是 Notebook 的加強版 (具有檔案瀏覽器, 可與 Git 整合, 也可安裝外掛), 都是使用瀏覽器來執行 (任何) 程式 (只要安裝該語言之 kernel), 也可以用 Markdown 語法撰寫文件, 用過它就回不去了. 但因為 Jupyter Lab 是用 Node.js 開發的, 對版本較敏感, 常在某些部分升級後無法, 所以最好要鎖住版本.
  11. 解決版本不匹配問題的方法是採用 docker, 它會將執行環境內各程式套件的版本鎖在 image 內. 使用 GPU 可採用 nvidia-docker, 系統只要安裝 nvidia driver, docker, 以及 nvidia-docker 後再 pull image 即可, 但要注意這樣每個檔案都會變成 root 權限, 每次重啟 container 時很多模組要重新安裝, 參考 :
    https://hackmd.io/@joshhu/Sy8MQetvS
  12. Colab 是 Google 用 Ubuntu 18 打造的一個類似 Jupyter Notebook 的執行環境, 提供 12GB DRAM 與 380GB 硬碟, 且可免費使用 GPU (提供 Nvidia Tesla K80 12GB GPU) 與 TPU (程式碼需修改), 能夠連接 GitHub, 但只能連續執行 12 小時. 
  13. Colab 的缺點 :
    (1). 上傳與執行速度慢
    (2). 只有簡體 (註:殘體) 中文與英文介面 (目前已有繁體)
    (3). 只能連續執行 12 小時
    (4). 只能開啟 GitHub 上的筆記檔, 無法開啟整個 Repo
參考 :


沒有留言 :