今天是在家上班 Day 2, 昨天下班時上司電話通知, 說觀看公司線上教學網站上的課程也是在家上班的工作項目之一, 所以早上做完例行工作後挑選了胡嘉璽老師 18 小時的 PyTorch 課程, 以下是今天聽課筆記 :
- 只要熟悉 Numpy 與具備機器學習的數學基礎, 即使不使用框架也能自己手刻各式神經網路.
- Python 支援各種主流的 AI 格式, 例如 pt, pth, pbf, checkpoint, ONNX 等.
- 機器學習測試環境建議在本機使用 Jupyter Lab, 若本機無 GPU 可使用 Colab, 生產環境建議使用 nvidia-docker.
- 如何在 Linux 下安裝 cuda/cudnn 環境 :
# https://hackmd.io/@joshhu/SyZwyhODB - 機器學習框架 (framework) 的功能 :
(1). 實作張量的圖模型 (靜態圖 or 動態圖)
(2). 處理 CPU/GPU 張量與其梯度計算 (自動微分)
(3). 內建可直接套用的神經網路結構 (AlexNet, ResNet ...)
(4). 提供機器學習與深度學習函式庫與各程式語言之 API
(5). 處理電腦視覺 - 機器學習框架的四大派系 :
(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/ - 學習 PyTorch 必須熟悉 Python 的 (generator (產生器), decorator (裝飾器), 與 data loader 等用法.
- 2017 年美國知名的線上 AI 教學網站 fast.ai 宣布放棄 Keras 改用 PyTorch, 因為 Keras 不夠彈性, 使 PyTorch 一砲而紅, 參考 :
# https://www.fast.ai/2017/09/08/introducing-pytorch-for-fastai/ - 雖然 Anaconda 很龐大, 但用它來學習 PyTorch 有非常多優點, 其中最重要的是它內建了很多資料科學與機器學習所需之套件, 避免自行安裝常遇到的版本匹配問題, 其次是內建方便好用的 Jupyter Lab.
- Jupyter Lab 是 Notebook 的加強版 (具有檔案瀏覽器, 可與 Git 整合, 也可安裝外掛), 都是使用瀏覽器來執行 (任何) 程式 (只要安裝該語言之 kernel), 也可以用 Markdown 語法撰寫文件, 用過它就回不去了. 但因為 Jupyter Lab 是用 Node.js 開發的, 對版本較敏感, 常在某些部分升級後無法, 所以最好要鎖住版本.
- 解決版本不匹配問題的方法是採用 docker, 它會將執行環境內各程式套件的版本鎖在 image 內. 使用 GPU 可採用 nvidia-docker, 系統只要安裝 nvidia driver, docker, 以及 nvidia-docker 後再 pull image 即可, 但要注意這樣每個檔案都會變成 root 權限, 每次重啟 container 時很多模組要重新安裝, 參考 :
# https://hackmd.io/@joshhu/Sy8MQetvS - Colab 是 Google 用 Ubuntu 18 打造的一個類似 Jupyter Notebook 的執行環境, 提供 12GB DRAM 與 380GB 硬碟, 且可免費使用 GPU (提供 Nvidia Tesla K80 12GB GPU) 與 TPU (程式碼需修改), 能夠連接 GitHub, 但只能連續執行 12 小時.
- Colab 的缺點 :
(1). 上傳與執行速度慢
(2). 只有簡體 (註:殘體) 中文與英文介面 (目前已有繁體)
(3). 只能連續執行 12 小時
(4). 只能開啟 GitHub 上的筆記檔, 無法開啟整個 Repo
參考 :
沒有留言:
張貼留言