在機器學習專案中,部署模型是一個關鍵環節,確保模型可以在不同的環境中穩定運作非常重要。 Docker作為一個容器化平台,可以幫助我們將機器學習模型和它的所有依賴打包成容器,確保模型在各種環境下都能以一致的方式運作。
安裝Docker。
建構並訓練機器學習模型。
建立requirements.txt
檔案列出依賴項。
編寫Dockerfile
,建構鏡像。
使用docker build
建置映像。
使用docker run
運行容器。
將映像推送到Docker Hub,實現共用。
首先,你需要在本機上安裝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
是建置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.txt
和model.py
檔案複製到容器中。
RUN
:安裝requirements.txt
中列出的依賴。
CMD
:指定容器啟動時執行的指令,這裡是執行model.py
。
在終端機中進入Dockerfile
所在的目錄,然後執行以下命令來建立Docker 映像:
docker build -t ml-model .
-t ml-model
:為鏡像指定一個標籤(名字),這裡我們將其命名為ml-model
。
.
:指示Dockerfile所在的目前目錄。
建置過程完成後,你將看到類似如下的輸出:
Successfully built <鏡像ID> Successfully tagged ml-model:latest
現在,你可以執行建置好的Docker 映像,並查看模型的輸出。使用以下命令啟動容器:
docker run ml-model
這將啟動容器並執行model.py
腳本。你應該會看到類似以下的輸出:
模型已訓練並保存為 model.pkl 預測結果: [5.1, 3.5, 1.4, 0.2] => 0
如果你想將建置的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需要一定的數學基礎(如線性代數、概率論、微積分等),以及編程知識(Python是最常用的編程語言)。
將學習自然語言處理、計算機視覺、數據分析等領域的核心概念和技術,掌握使用AI工具和框架進行實際開發。
您可以從事數據科學家、機器學習工程師、AI研究員、或者在各行各業應用AI技術進行創新。