iT邦幫忙

2024 iThome 鐵人賽

0
AI/ ML & Data

從「這次不會壞吧」到自動化的未來:從 DevOps 到 MLOps,改造模型佈署之旅系列 第 13

從「這次不會壞吧」到自動化的未來:13 以 HPE MLDM 實作 MLOps 資料版本控制 - 1

  • 分享至 

  • xImage
  •  

今天的文章將接續昨天的內容,說明具體來說,如何透過 HPE MLDM 讓資料前處理工作自動化,以及使用內建的版控功能,管理大量資料與前處理程式。

實作

接著我們就實際使用 MLDM,對股票的歷史資料進行前處理,來計算出幾項技術指標,並善用其版控功能來還原不同版本的資料。在範例中我們從證交所下載元大台灣卓越50證券投資信託基金(就是臺灣老字號的 ETF 0050)的日成交資訊,來計算出幾個常用的技術指標,操作以下 6 個步驟:

  1. 建立 Project
  2. 建立 Pipeline
  3. 上傳資料到 Repository
  4. 自動執行前處理
  5. 還原到不同版本的資料
  6. 從 Repository 下載資料

在操作前請先到 GitHub 下載操作需要的檔案,並且依照 HPE MLDM 的安裝流程進行完整的安裝。

建立 Project

開啟瀏覽器,進入 http://localhost:80 (如果在安裝過程中,有將 httpPort 設定為其他值,請將 80 改成實際使用的值)。畫面中看到的就是 MLDM console UI,也就是其提供的使用者介面(User Interface, UI),如下圖。

https://ithelp.ithome.com.tw/upload/images/20241015/20169475tCU73VhK15.png

圖 1:MLDM console UI。因為還沒加入 Project,這邊只看到預設的「default」,每個 Project 的卡片都顯示其狀態、建立時間以及描述。

MLDM 有三個最重要,同時也是一定會使用的元素:

  • Project:專案,一個 Project 底下可以有數個 Pipeline 以及 Repository,不過如果非企業版的用戶最多只能建立 16 個 Pipeline
  • Pipeline:資料處理的流程,例如將圖片進行縮放、隨機旋轉等等的前處理,就是一個 Pipeline
  • Repository:可進行版控的資料存放處,像是大家比較熟知的 GitHub repository,存放在裡面的資料都能進行版控

接著開啟終端機,輸入並執行以下指令:

(mldm) aif@aif % pachctl create project stock-price-preprocess
(mldm) aif@aif % pachctl config update context --project stock-price-preprocess
editing the currently active context "http://localhost:80"

接著回到 MLDM console UI 頁面,就會看到名為「stock-price-preprocess」的專案出現在畫面中,當然也可以透過按下 Console 頁面右上方的「Create Project」,透過圖形化介面來建立。

https://ithelp.ithome.com.tw/upload/images/20241015/20169475eLsvMwnvcH.png

圖 2:MLDM console UI 的 Projects 頁面。
建立好 Project 之後,我們還需要建立一個名為「raw」,用來存放原始資料的 Repository,建立方式如下:

(mldm) aif@aif % pachctl create repo raw

一樣回到 MLDM console UI,點擊「stock-price-preprocess」卡片右上方的「View Project」,在左側點一下「Repositories」,就能看到目前 Project 底下有哪些 Repository。左側欄位還有許多不同功能,比較常用的有:

  • DAG:整個 Project 的流程圖,並且能自由的縮放以及平移,如果要展示給其他人看時很好用
  • Create:建立 Repository 或 Pipeline
  • Pipelines:列出全部的 Pipeline
  • Repositories:列出全部的 Repository

https://ithelp.ithome.com.tw/upload/images/20241015/20169475epBghLJtjb.png

圖 3:Project 底下的 Repositories 頁面。

建立 Pipeline

執行以下指令來建立 Pipeline:

(mldm) aif@aif % pachctl create pipeline -f preprocess.yaml

指令執行後不會輸出資訊,所以我們回到 MLDM console UI,在左側點一下「DAG」就會看到名為「preprocess」的 Pipeline。每個 Pipeline 的卡片呈現了目前這個 Pipeline 的任務以及狀態,另外還有一個重要的「Output」,專門用來存放這個 Pipeline 輸出的資料的 Repository,這個 Repository 也可以是其他 Pipeline 的輸入 Repository。

MLDM 的 Pipeline 藉由 JSON 或 YAML 檔來設定,例如指令的後段指定的「preprocess.yaml」。我們看一下這份檔案的內容:

pipeline:  # Pipeline 設定
  name: preprocess  # Pipeline 名稱
input:  # 輸入資料的設定
  pfs:  # Pachyderm File System 的設定
    repo: raw  # 輸入的 Repository 名稱
    glob: "/*"  # 檔名的篩選邏輯,同 Python 的 glob 用法
transform:  # 要做的前處理
  image: yusiangwu/mldm-talib:1.0  # 使用的映像檔
  cmd:  # 要執行的指令與參數
    - python
    - /work/preprocess.py
autoscaling: true  # 是否允許自動擴展

MLDM 也提供 Pachyderm Pipeline System (PPS) 對 Pipeline 進行版控,關於這方面的說明請見 MLDM 官方文件的「Intro to Pipelines」章節

明天的文章會再聊聊從 Repository 上傳、下載資料和自動化的細節,如果想要一次看完也可以下方點選完整內容搶先看,今天就先做到這裡!

完整內容 >> https://bit.ly/3Yl8WEx
Line 官方帳號,看最新技術文章:https://user137910.pse.is/aif2024ironman

參考資料
MLOps 工具介紹(一):常見的三種模型實驗管理工具 /mlops-model-management-tools/
Pachyderm Docs/Home/Latest/Get Started/First-Time Setup https://mldm.pachyderm.com/latest/get-started/first-time-setup/
Pachyderm Docs/Home/Latest/Learn/Intro to Pipelines https://docs.pachyderm.com/latest/learn/intro-pipelines/
用 MLDE 平台實作 PyTorch 卷積神經網路模型 /hpe-mlde-unboxing1/
Pachyderm Docs/Home/Latest/Integrate/JupyterLab https://docs.pachyderm.com/latest/integrate/jupyterlab-extension/
Pachyderm Docs/Home/Latest/Integrate/Determined https://docs.pachyderm.com/latest/integrate/determined/


上一篇
從「這次不會壞吧」到自動化的未來:12 為什麼我們需要資料版本控制?
下一篇
從「這次不會壞吧」到自動化的未來:14 以 HPE MLDM 實作 MLOps 資料版本控制 - 2
系列文
從「這次不會壞吧」到自動化的未來:從 DevOps 到 MLOps,改造模型佈署之旅22
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言