中文(新加坡)

目前位置: 首頁> AI 課程> AI 強化學習

Docker化部署機器學習模型的完整步驟指南

作者: LoRA 時間: 2024年12月20日 1014

docker-default-meta-image-1110x583.jpg

在機器學習專案中,部署模型是一個關鍵環節,確保模型可以在不同的環境中穩定運作非常重要。 Docker作為一個容器化平台,可以幫助我們將機器學習模型和它的所有依賴打包成容器,確保模型在各種環境下都能以一致的方式運作。

關鍵步驟總結:

  1. 安裝Docker。

  2. 建構並訓練機器學習模型。

  3. 建立requirements.txt檔案列出依賴項。

  4. 編寫Dockerfile ,建構鏡像。

  5. 使用docker build建置映像。

  6. 使用docker run運行容器。

  7. 將映像推送到Docker Hub,實現共用。

安裝Docker

首先,你需要在本機上安裝Docker。可以從Docker官方網站下載並安裝適合你作業系統的Docker版本。安裝完成後,可以透過執行以下命令檢查是否成功安裝:

 docker --version

建構機器學習模型

我們將以scikit-learn和Python為例,訓練一個簡單的機器學習模型並保存。這裡,我們使用Iris資料集訓練一個隨機森林分類器。

model.py

 from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
import pickle

# 訓練並保存模型def train_model():
# 載入資料集 data = load_iris()
X, y = data.data, data.target

# 訓練模型 model = RandomForestClassifier()
model.fit(X, y)

# 保存模型 with open('model.pkl', 'wb') as f:
pickle.dump(model, f)
print("模型已訓練並儲存為 model.pkl")

# 載入模型並進行預測def predict():
# 載入訓練好的模型 with open('model.pkl', 'rb') as f:
model = pickle.load(f)

# 預測的測試資料 test_data = [5.1, 3.5, 1.4, 0.2] # 範例特徵 prediction = model.predict([test_data])

print(f"預測結果: {test_data} => {int(prediction[0])}")

if __name__ == '__main__':
train_model()
predict()

在這段程式碼中:

  • train_model()函數載入Iris資料集,訓練一個隨機森林分類器,並將訓練好的模型儲存為model.pkl

  • predict()函數載入已儲存的模型,並使用一個測試資料進行預測。

建立requirements.txt文件

為了讓Docker容器能夠安裝專案所需的所有依賴,我們需要建立一個requirements.txt文件,列出Python庫相依性。在這個例子中,我們只需要scikit-learn

requirements.txt

 scikit-learn

建立Dockerfile

Dockerfile是建置Docker 映像的腳本,它定義瞭如何配置和建置映像。以下是我們專案的Dockerfile範例:

Dockerfile

 # 使用Python基礎鏡像FROM python:3.11-slim

# 設定容器內的工作目錄WORKDIR /app

# 將requirements.txt和model.py檔案複製到容器中COPY requirements.txt requirements.txt
COPY model.py model.py

# 安裝依賴RUN pip install -r requirements.txt

# 容器啟動時執行的指令CMD ["python", "model.py"]
  • FROM :指定基本鏡像,我們使用了python:3.11-slim ,它是一個輕量級的Python環境。

  • WORKDIR :設定工作目錄為/app ,後續命令將在此目錄下執行。

  • COPY :將requirements.txtmodel.py檔案複製到容器中。

  • RUN :安裝requirements.txt中列出的依賴。

  • CMD :指定容器啟動時執行的指令,這裡是執行model.py

建置Docker 映像

在終端機中進入Dockerfile所在的目錄,然後執行以下命令來建立Docker 映像:

 docker build -t ml-model .
  • -t ml-model :為鏡像指定一個標籤(名字),這裡我們將其命名為ml-model

  • . :指示Dockerfile所在的目前目錄。

建置過程完成後,你將看到類似如下的輸出:

 Successfully built <鏡像ID>
Successfully tagged ml-model:latest

運行Docker 容器

現在,你可以執行建置好的Docker 映像,並查看模型的輸出。使用以下命令啟動容器:

 docker run ml-model

這將啟動容器並執行model.py腳本。你應該會看到類似以下的輸出:

模型已訓練並保存為 model.pkl
預測結果: [5.1, 3.5, 1.4, 0.2] => 0

標記鏡像並推送到Docker Hub

如果你想將建置的Docker 映像共用給他人或團隊成員,可以將其推送到Docker Hub。

首先,你需要登入Docker Hub:

 docker login

登入後,使用以下指令為映像打上標籤(標籤為yourdockerhubusername/ml-model ):

 docker tag ml-model yourdockerhubusername/ml-model

然後,將映像推送到Docker Hub:

 docker push yourdockerhubusername/ml-model

yourdockerhubusername替換為你的Docker Hub 使用者名稱。

推送完成後,其他人可以透過以下命令拉取並運行你的鏡像:

 docker pull yourdockerhubusername/ml-model
docker run yourdockerhubusername/ml-model

透過使用Docker,我們可以將機器學習模型與所有依賴打包成一個容器,確保在任何環境中都能夠一致地運作。 Docker不僅能簡化模型的部署流程,還能確保在不同的開發、測試和生產環境之間的一致性,進而提高模型部署的可靠性和可維護性。

常見問題

AI課程適合哪些人群?

AI課程適合對人工智能技術感興趣的人,包括但不限於學生、工程師、數據科學家、開發者以及AI技術的專業人士。

AI課程的學習難度如何?

課程內容從基礎到高級不等,初學者可以選擇基礎課程,逐步深入到更複雜的算法和應用。

學習AI需要哪些基礎?

學習AI需要一定的數學基礎(如線性代數、概率論、微積分等),以及編程知識(Python是最常用的編程語言)。

AI課程能學到什麼?

將學習自然語言處理、計算機視覺、數據分析等領域的核心概念和技術,掌握使用AI工具和框架進行實際開發。

AI課程學完後能做什麼工作?

您可以從事數據科學家、機器學習工程師、AI研究員、或者在各行各業應用AI技術進行創新。