探索MLOps:提升機器學習專案品質的入門指南

Yanwei Liu
7 min readAug 23, 2024

最近在Coursera上看到DevOps, DataOps, MLOps這一門課程。裡面介紹了有關GitHub workflow, Copilot, AWS, GCP以及Azure的一些工具使用。

課程當中讓我了解到,原來機器學習除了演算法開發之外,還有很多CI/CD的技術可以學習。

對我而言,除了在線上課程中看到的內容外,我也整理了一些我覺的可以使用的工具與一些方法:

requirements.txt

對於一個python專案來說,requirements.txt是相當重要的存在,它告訴了開發者需要安裝哪些套件以及套件版本,才能順利使用這個專案的程式碼。很多時候,即使是相同的套件,不同的版本號可能都會造成實驗無法重製,或是程式執行上出錯。這時候,可以用pipreqs套件,它可以針對特定目錄底下所使用到的套件,產生一份requirements.txt

安裝並使用pipreqs:

pip install pipreqs
pipreqs /path/to/your/project

範例requirements.txt:

matplotlib>=3.3
numpy>=1.23.5
opencv-python>=4.1.1
pillow>=10.3.0
PyYAML>=5.3.1
requests>=2.32.0
scipy>=1.4.1
thop>=0.1.1
torch>=1.8.0
torchvision>=0.9.0
tqdm>=4.64.0
tensorboard>=2.4.1
pandas>=1.1.4
seaborn>=0.11.0

.gitignore

.gitignore用來告訴git哪些檔案不要在commit的過程中,一起被commit進去。例如PyTorch的權重檔案(*.pt or *.pth)或是訓練的資料集圖片(*.jpg, *.png, etc,.)。原因是Git的用意還是希望大家用於管理程式碼的版本,而不是作為雲端硬碟的儲存空間來保存這些檔案。

除此之外,GitHub提供給用戶的repo空間相當有限,若檔案太大,是無法push上去的,需要使用Git Large File Storage才能push。因此在專案剛建立好的初期,就先把.gitignore修改好就相當重要。個人認為YOLOv5專案的.gitignore就寫得還蠻不錯的,有興趣的讀者可以參考。

Makefile

原始文件

--

--