1 of 32

雲端 GPU 作業平台

2024/8/4

2 of 32

wycca1@gmail.com

3 of 32

about me(wycca1@gmail.com)

  • 參與早期 open source activity/conference
  • Linux 中文化
  • realtime OS/embedding system
  • 長庚人工智慧系

4 of 32

resources

Contact wycca1@gmail.com

5 of 32

document

user’s manual

manager manual

6 of 32

為什麼要開發這個平台

  • 我們現有 20 台 A5000 平台和九台 V100 平台和數十台 P4000 平台
  • 這些平台分散各地,使用率不佳,我們想要讓更多人可以使用這些資源
  • 在看了一輪各式商用平台後,這些平台最大的問題是無法滿足教學上的一些需求,但客制化費用太高。
  • 所以決定試看看能否用 OSS 平台自行組裝一套出來
  • 模擬 colab 功能
    • better local experience
  • 給學生一些實戰經驗
  • 除了教學外,也很適合一般個人或商用
    • standard kubernetes
    • microk8s

7 of 32

目前開發方向

  • 可以在單台電腦執行。
  • 使用開源系統平台
    • k8s/microk8s/k3s
    • kubeflow
  • 自行開發教學/實驗管理系統
    • 無需複雜的帳號計費管理系統
    • 提供教師自行管理帳號及資源能力
    • 提供各式軟體遠端使用功能,方便學生作業及專題的需求
    • 使用共享模式分享 GPU/CPU 資源,提高系統使用率

8 of 32

教學系統需求

  • 使用者工程能力不一定足夠,需有較易上手的平台。
  • 教學/助教需能協助使用
  • 部份圖形介面的教學軟體需要遠端桌面較方便使用
  • 需有能由助教或教師可用之帳號管理系統
  • 高效率分配 GPU/CPU 資源
  • 學生透過筆電、電腦教室的電腦遠端登入該系統,透過瀏覽器連入,只需一般文書規格的電腦即可做AI教學,降低教室的建置成本
  • 檔案集中控管,上課的教材、作業等資料,授課老師統一管理

9 of 32

10 of 32

使用者工程能力不一定足夠,需有較易上手的平台

  • 我們提供以 jupyterlab 為基礎的 web-based平台
  • 將大多數學生需要的套件預裝, 省去安裝時版本之問題
  • 管理員可以在 notebook 中用一般命令客製化系統,然後把它轉換成 template 讓其它人使用

11 of 32

remote desktop

  • 提供 remote-desktop 環境,給需要桌面的應用
    • VSCode, database, browser, R studio,...

12 of 32

13 of 32

儘量模擬桌面環境

  • copy/paste(use clipboard API)
  • serial port(Web Serial API)
  • File Manager(Web-based)
  • web USB???(not yet)
  • Window/Linux VM(kubevirt, in progress)

14 of 32

教學/助教需能協助使用

  • 學生可以將助教/教師設為共享者,將讓教師協助查看程式
  • 提供分享單一 notebook 的功能
    • 提供 read only 分享的功能
    • 提供暫時性分享,協助完成後便關閉權限(broadcast)

15 of 32

File Manager

  • 可以在 notebook 和本機中方便的交換檔案

16 of 32

高效率分配 GPU/CPU 資源

  • pros
    • 使用 kubernetes 將伺服器上的硬體資源分配給學生使用
    • 提供多人分享同一 GPU 的能力
    • 使用 MIG or MPS 強化分享效能
    • 增加即時系統負載顯示界面

17 of 32

降低教室的建置成本

  • pros
    • 電腦教室只需建置教師系統,並提供部份簡型筆電供學生借用即可
  • cons
    • 伺服器建置成本仍高
  • action
    • 探討如何使用更低成本且易於維護的平台
    • 使用 JETSON or ARM 平台降低建置及維護成本
  • status
    • NA檢討是否能用 jetson 當節點

18 of 32

檔案集中控管,上課的教材、作業等資料,授課老師統一管理

  • pros
    • 提供 notebook template 簡化教師學生使用的方便性
    • 提供將 notebook 中資料直接轉成 notebook template 的功能
    • 內建 NAS 讓教師方便讓資料放在 local NAS 分享的功能

19 of 32

目前使用現況

  • 目前使用的硬體為中心原本研究平台的硬體, 不太適合給教學系統使用
  • 己經有些影響到原有中心 research 的需求
  • 過去使用狀況
    • 人工智慧系深度學習
    • 人工智慧系深度學習應用
  • 目前有下列課程正在或預計使用
    • 醫學院 AI 程式課程
    • 資工資料庫設計
    • 人工智慧系電腦視覺
    • 人工智慧系智慧醫療

20 of 32

Demo

21 of 32

資源分享系統

  • 提供 GPU 分享功能
  • 資源長期未使用自動回收,避免少數人長期佔用資源
  • 當資源不足時,自動回收未使用的資源
  • 目標是提高資源的使用率
  • 減少 idle 時消耗的電力
  • 學生個人儲存空間,提供上課檔案的上傳/下載功能

22 of 32

減少教師系統設定管理負擔

  • 使用 k8s/docker 提供立即可用的平台,減少教師花費在系統設定及除錯的時間。
  • 提供教師為學生客製化標準系統,減輕上課時為學生除錯的負擔
  • 提供界面讓教師可以部署各式 Lab Session 或作業所需檔案的功能給學生,讓學生不必自行在網路下載造成的問題。
  • 教師可把系統做成模版,供每學期開課使用
  • http://kflow.cgu.edu.tw:31190/

23 of 32

2024 H1 版新增功能-1

  • Account Manager 新增功能
    • 自動設定使用者 profile
      • 使用者可以設定被成群組管理員
  • Quota 管理功能
    • 可以設定每一個使用者的 CPU/GPU/Memory 最大使用量
  • persisitent notebook 功能
    • 系統管理員可以把指定的 notebook 設定成可以永遠執行,不會因 idle 而自動停止。讓教師可以提供一些 demo website 給學生使用。
  • notebook 分享功能
    • 使用者可以將 notebook 分享給其它使用者,提供 readonly 和 editable 的權限

24 of 32

2024 H1 版新增功能-2

  • notebook 模版功能
    • 新的 notebook template 支援複製 home 目錄下檔案自動複製功能,可以讓教師將作業事先準備好讓學生一鍵完成設定。
  • 作業提交功能
    • 學生可以透過 teams 或其它平台提交一個可執行的作業給 TA。
  • 加速 notebook 開機速度
    • 目前大多數 notebook 都可以在一鐘內開啟完成
  • 新的資源監控面版
    • 可以監控整個系統和單一節點的使用狀況

25 of 32

2024H2 計畫

  • 支援 MPS/MIG 支援
    • 讓我們可以支援固定的硬體切分
    • 讓 gpu type 可以客制化(把 AMD 移除,加上 ½ 加 ¼ 等選項)
  • win10 虛擬機支援
  • 將 jupyterlab 分成 tensorflow 和 pytorch 版本,以減低系統大小
    • 新增 pytorchjob 多節點支援
  • 支援用 PyTorchJob 做多節點多 GPU 預約訓練,讓需要大量 GPU 訓練的工作可以使用排程式的方式使用。以提高資源使用率。
  • Add auto-startup support
  • 在 grafanna 上顯示每一個節點上正在執行的 notebook,和他們 CPU/memory 使用的情況。
  • Jupyter noteebok UI improvement
    • change resources allocation for existing notebook
    • Add filter for notebook and notebook template
    • Add custom image cache to list all images listed in the existing notebook
  • 將 POD killer 用 python kubernetes API 重寫,並支援 persistent notebook 在 k8s 上提供伺服器功能。
  • 競賽功能

26 of 32

MPS/MIG 支援

standard

premium

nvidia.com/gpu.share

nvidia.com/gpu

27 of 32

win10 虛擬機

  • 新增一個新型態的 notebook
  • 修改 notebook controller,產生一個 VMI 而不是 statefulset。
  • 修改啟動/停止

28 of 32

notebook 分享和自動啟動支援

  • 將用一般或唯讀模式分享 notebook
  • 提供自動啟動頁面,如果 notebook 沒有啟動,可以自動進入啟動頁面啟動 notebook。

29 of 32

更新監控面板

  • 顯示每一個節點目前資源使用狀態
  • 顯示全系統目前資源使用狀態
  • 查看資源是被那一個使用者使用

30 of 32

colab-like POD killer

  • 一個新的 controller,會根據設定將閒置的 notebook 自動停止
  • 可以設定停止的 policy
  • 可以設定特定的 notebook 不自動停止

31 of 32

Jupyter noteebok UI improvement

  • 新增修改 GPU/CPU/memory 數量的功能
  • Add notebook/template filter
  • 當選擇 custom image 時,也使用下拉選單,內容是目前 namespace 中所有 notebook 有用到的 image list 列表。

32 of 32

競賽伺服器