type
status
date
slug
summary
tags
category
icon
password
 

本篇文章取用說明

本篇主要是『思路』的紀錄,也就是當我們遇到『部署』這個問題,我們要注意一些什麼,哪些可能是一個可能的路徑,請不要當作教學把它讀完,Wandb部分更建議去讀官方的文檔,此篇更希望的是了解
  1. 什麼是部署ML
  1. Wandb可能有哪些component可以去研究的
  1. Wandb不足之處
 
不過雖然如此,這篇文章可以帶給你什麼?為什麼我們需要看這樣一篇『不完整』的紀錄
  1. 對於『部署』ML這個議題,你可以有更多的切入點
  1. 不用一次突然要把wandb搞懂,有個fu更重要,並且壓力不會太大
  1. 釐清好自己的需求,不要盲目學東西
 

前言

在實驗的部分,Wandb感覺很好的滿足了我們要的東西,但在部屬的部分,似乎就不是Wandb的天下,當然有簡單的驗證結果,但是整套的可能沒那麼厲害
 

關於部署的定義

對於"部署"(Deployment)的概念,其實涵蓋範疇比較廣泛,並且具體的定義可能會根據不同的背景和需求有所變化。在機器學習的背景下,"部署"通常指的是將訓練好的模型整合到一個生產環境中,以便能在實際的業務流程中使用。這可能包括將模型轉化為一種可以在特定硬體或軟體環境下運行的格式,並且建立一個能讓其他系統或者用戶使用模型的接口。例如,你可能需要將你的模型轉化為一個 REST API 服務,以便其他的應用或者服務可以通過網路來使用你的模型。或者,你可能需要將你的模型轉化為一種可以在移動設備上運行的格式,以便在一個移動應用中使用。
你在 Python 中運行你的模型並且得到預測結果的過程,可以被看作是一種 "本地部署" 或者 "測試部署",因為你在本地的環境中直接運行了你的模型。然而,在生產環境中,你可能需要考慮更多的問題,例如如何在多個用戶或者請求之間共享你的模型的資源,如何確保你的模型的性能和可用性,以及如何保護你的模型的安全等等。
 

GPT建議區: 平台的選擇

確實有一些工具和平台提供了整套的機器學習系統部署方案,幫助用戶從模型開發到部署,再到監控和維護等全流程的工作。以下是一些你可以考慮的選擇:
  1. TensorFlow Extended (TFX):這是一個由 Google 提供的用於生產環境的端到端平台,它提供了一整套工具包括數據驗證、預處理、模型訓練、驗證、部署以及模型監控等。
  1. MLflow:這是一個開源平台,旨在管理整個機器學習生命週期,包括實驗跟蹤、包裝代碼成可重用的模型,以及在生產環境中部署模型。
  1. Seldon Core:這是一個開源平台,專為在 Kubernetes 上部署機器學習模型而設計。Seldon Core 提供了一種統一的方式來部署、擴展、監控和管理你的模型。
  1. Kubeflow:這是一個由 Google 開發的,專為 Kubernetes 設計的開源機器學習平台。Kubeflow 的目標是使得在 Kubernetes 上部署機器學習工作負載變得簡單、可攜和可擴展。
以上各個工具和平台各有特點,需要根據具體的需求和環境來選擇適合的工具。你可以根據自己的具體需求以及團隊的技術能力來選擇最合適的工具。
 
不過1只能用tensorflow,3,4 都要用到k8s,因此先來觀察一下2
詳細詢問區
當然,以下是對上述四種機器學習平台的詳細介紹:
  1. TensorFlow Extended (TFX)
    1. TensorFlow Extended (TFX) 是 Google 開發的一種端到端的機器學習平台,它提供了一套完整的流程,從數據驗證與預處理,到模型訓練與驗證,最後到模型部署與監控。TFX 的主要特點是其深度集成 TensorFlow,並提供了豐富的工具以支援大規模的機器學習應用。
      TFX 的強項在於其完整性和大規模的支援。然而,TFX 對 TensorFlow 的深度集成也是其弱點之一,如果你的模型並非使用 TensorFlow 構建,那麼使用 TFX 可能就會比較困難。另一個弱點是,TFX 可能過於複雜對於小規模的項目或者初學者。
  1. MLflow
    1. MLflow 是由 Databricks 開源的一個機器學習生命週期管理平台。MLflow 提供了實驗跟蹤,模型註冊,模型打包和部署等一系列功能。MLflow 的主要特點是其簡單和靈活,它支援各種主流的機器學習庫,並且可以輕鬆集成到現有的工作流程中。
      MLflow 的弱點可能在於其相對於其他平台來說較為基本的功能。對於一些更複雜或者特殊的需求,MLflow 可能無法直接支援。
  1. Seldon Core
    1. Seldon Core 是一個開源的機器學習部署平台,專為在 Kubernetes 上運行而設計。Seldon Core 提供了一種統一的方式來部署、擴展、監控和管理你的模型,並且支援多種不同的機器學習框架。
      Seldon Core 的強項在於其對 Kubernetes 的完整支援和擴展性,如果你已經在使用 Kubernetes,那麼使用 Seldon Core 可能會非常方便。然而,Seldon Core 的弱點是其對 Kubernetes 的依賴性,如果你不打算使用 Kubernetes,那麼 Seldon Core 可能就不是一個好的選擇。
  1. Kubeflow
    1. Kubeflow 是一個由 Google 開發的,專為 Kubernetes 設計的開源機器學習平台。Kubeflow 提供了一個完整的機器學習工作流程,包括數據預處理,模型訓練,模型調整,以及模型部署等。
      Kubeflow 的強項是其對 Kubernetes 的深度集成和完整的工作流程支援,這使得在 Kubernetes 上進行大規模的機器學習變得簡單。然而,Kubeflow 的弱點與 Seldon Core 相同,那就是其對 Kubernetes 的依賴性,如果你不打算使用 Kubernetes,那麼 Kubeflow 可能就不是一個好的選擇。
以上四個工具都有其各自的特色,選擇哪一個最合適取決於你的具體需求和使用的技術棧。
 

ML flow 的更多資訊

MLflow 是一個開源平台,由 Databricks 在 2018 年開發並開源。Databricks 是一家由創建 Apache Spark 的原創團隊所創立的公司,他們專注於大數據和機器學習解決方案。
MLflow 的目標是簡化機器學習的工作流程,並使其在多種環境中可重複使用。該平台旨在實現這一目標,主要提供以下四個主要組件:
  1. MLflow Tracking:提供了一種 API 和 UI 來記錄、查詢和可視化機器學習實驗。可以記錄參數、指標、標籤、工件、來源代碼和其他相關數據。
  1. MLflow Projects:是一種碼包格式,提供了一種標準化方式來分享可重現的機器學習代碼。每個專案都定義了其代碼需要的環境,以及如何在數據上運行代碼。
  1. MLflow Models:是一種標準化格式,用於打包機器學習模型,這些模型可以使用多種工具創建,並且可以在各種平台上部署。
  1. Model Registry:是一個中央模型存儲庫,提供了一個機制,可以管理模型的完整生命周期,包括模型版本控制、模型階段管理(如驗證、生產等)以及模型批准和部署流程。
由於 MLflow 的開放性和彈性,它已被廣泛應用在許多不同的場景和領域。比如,Uber 使用 MLflow 來管理他們的數千個模型和數百萬次的模型訓練過程。Comcast 也使用 MLflow 來提供內部的模型服務平台。除此之外,許多其他的公司,包括微軟、Netflix、和 Airbnb 等也在他們的機器學習工作流程中使用 MLflow。
在開源社區,MLflow 也獲得了廣泛的認可和支援。它已經有超過 200 萬次的下載,並且有超過 200 個貢獻者。此外,MLflow 也在持續的進行開發和改進,並且已經成為了 Linux 基金會的一部分,這也代表了它在未來將繼續得到支援並發展。
 

Wandb vs MLflow

當然,以下是對 MLflow 和 Weights & Biases (WandB) 兩個平台的比較:
  1. 開源與商業支援
      • MLflow 是一個完全開源的平台,由 Databricks 維護,並且有一個活躍的開源社區參與其中。你可以在自己的硬體上自由地部署和使用 MLflow,而無需擔心任何的使用費用。
      • Weights & Biases 是一個商業產品,但它提供了一個免費的版本,並且對於學術研究也提供了免費的使用方案。對於進階的功能,例如團隊協作、大規模的實驗跟蹤等,你需要購買他們的企業版。
  1. 集成與兼容性
      • MLflow 設計為可以輕鬆地與各種現有的機器學習工具和框架集成。它不直接提供模型訓練或評估的功能,而是集中於實驗跟蹤和模型管理。因此,你可以用你選擇的任何工具來訓練你的模型,然後用 MLflow 來跟蹤和管理你的實驗。
      • Weights & Biases 也支援各種主流的機器學習框架,包括 TensorFlow、PyTorch、Keras 等。除了基本的實驗跟蹤功能外,它還提供了一些額外的功能,例如實時視覺化、模型版本控制等。
  1. 功能與易用性
      • MLflow 提供了一個基礎的界面來跟蹤實驗,但它的主要功能是透過編程API來使用。你需要在你的代碼中顯式地添加跟蹤語句,然後 MLflow 將會自動收集並存儲這些數據。MLflow 提供了一些進階的功能,如模型註冊和部署,但這些可能需要一些額外的配置和安裝。
      • Weights & Biases 的界面設計得更加現代和直觀。你可以在他們的網站上直接查看和比較你的實驗結果,並且可以輕鬆地分享你的結果和模型。他們也提供一些進階的功能,例如超參數優化、模型版本控制等。
總的來說,MLflow 和 Weights & Biases 都是強大的機器學習實驗管理工具,但它們在設計哲學和功能上有一些區別。你應該根據你的需求和偏好來選擇最合適的工具。
 
 

Wandb 本地部屬的範例(GPT給的,超級不建議直接拿來用,三思)

不建議使用的原因

  1. 使用wandb的一些component具體有什麼好功能,以下的程式感受不到(例如Artifact有什麼其他的庫功能,run.log的方法,init搭配with的寫法)
  1. 非常的special case,也是接續第一點,因為你不知道其他component的更好用法
 

GPT詳細給了什麼

以下是使用 TensorFlow 在 Weights & Biases (WandB) 使用 Artifacts 的完整程式碼範例:
  1. 把我想要預測的數據集的metadata建立一個新的artifact
  1. 抓取以前訓練好的model參數
  1. 建立一個新的artifact,去紀錄剛剛的數據集跑進model的預測結果
 

可以延伸探討的部分

  1. RestAPI是什麼,為什麼對於ML的部屬那麼重要
  1. MLflow試用,更了解ML部屬的概念
  1. 實作這個部屬流程
 
ESP32 + micropython開發配置!伺服馬達SG90