Setup MLflow rồi để đó
Ăn Tết xong rồi, thử cài MLflow khởi động năm mới thôi 🐧. Một công cụ mạnh mẽ giúp quản lý và theo dõi quá trình huấn luyện mô hình Machine Learning.
1. Giới thiệu
Tổng quan về MLOps và MLflow, có thể tham khảo các tài liệu sau:
TL;DR:
- MLOps (Machine Learning Operations) giống như cách chăm sóc cây cối. Khi trồng cây (tạo model ML), bạn không chỉ gieo hạt rồi để đó, mà còn phải tưới nước, bón phân và cắt tỉa để cây phát triển khỏe mạnh. MLOps giúp các mô hình AI hoạt động tốt bằng cách tự động hóa việc huấn luyện, kiểm tra, triển khai và bảo trì, giống như một hệ thống tưới nước tự động cho cây.
- MLflow giống như một quyển sổ tay ghi chép về cách bạn trồng cây. Bạn có thể ghi lại loại hạt giống nào (model ML nào), tưới bao nhiêu nước (tham số mô hình), và cây phát triển thế nào (hiệu suất mô hình). Nhờ MLflow ta có thể kiểm tra và cải thiện mô hình dễ dàng.
2. Setup MLflow trên máy Ubuntu local
Yêu cầu:
- Python >= 3.6
- Pip (Python package installer)
- Ubuntu
1
2
sudo apt update
sudo apt install python3 python3-pip
Bước 1: Tạo user (optional)
Thiết lập người dùng cho MLflow và môi trường Python riêng biệt để đảm bảo MLflow hoạt động an toàn và tách biệt với các tiến trình hệ thống khác.
- Tạo user
1
sudo adduser mlflow - Cấp quyền Sudo:
1
sudo usermod -aG sudo mlflow
- Chuyển sang user mlflow vừa tạo:
1
su - mlflow
Bước 2: Tạo môi trường (environment)
- Install Virtualenv: Virtualenv là công cụ để tạo môi trường Python riêng biệt.
1
pip3 install virtualenv - Tạo Virtual Environment: Tạo một thư mục mới cho MLflow server và cd vào thư mục đó. Sau đó, tạo một môi trường ảo.
1 2 3
mkdir ~/mlflow_server cd ~/mlflow_server virtualenv mlflow_env
- Kích hoạt Virtual Environment:
1
source mlflow_env/bin/activate
Bước 3: Install MLflow
1
pip install mlflow==2.7.1
Bước 4: Install Backend Store (Optional)
MLflow sử dụng một máy chủ theo dõi (tracking server) để ghi lại dữ liệu các experiment. Mặc định, nó lưu trữ dữ liệu trên hệ thống tệp cục bộ, nhưng để sử dụng ổn định và mạnh mẽ hơn mình sẽ thiết lập SQLite.
- SQLite thường được cài đặt sẵn trên Ubuntu.
- Chỉ cần xác định một thư mục muốn lưu trữ cơ sở dữ liệu SQLite, mình sẽ tạo thư mục
metrics_store1 2
cd ~/mlflow_server mkdir metrics_store
- Thiết lập Backend Store cho MLflow ở bước sau, chỉ cần sử dụng URI
sqlite:////home/mlflow/mlflow_server/metrics_store/mlflow.db
Bước 5: Install Artifact Store
Kho lưu trữ artifact (artifact store) là nơi MLflow lưu các tài liệu mô hình như mô hình đã huấn luyện và biểu đồ. Bạn có thể sử dụng S3, Azure Blob Storage, Google Cloud Storage…
- Ở đây mình sẽ sử dụng local storage (vì nó dễ =D). Chỉ cần tạo một thư mục
artifact_store1 2
cd ~/mlflow_server mkdir artifact_store
Bước 6: Launch MLflow Tracking Server
Sau khi hoàn tất các bước trên ta đã có thể chạy MLflow server:
1
mlflow server --backend-store-uri sqlite:///mlflow.db --default-artifact-root ./mlflow-artifacts
Thay thế sqlite:///mlflow.db bằng URI MySQL của bạn, và ./mlflow-artifacts bằng đường dẫn nơi bạn muốn lưu trữ các artifact. Phía dưới là câu lệnh mình chạy trên máy của mình:
1
mlflow server --backend-store-uri sqlite:////home/mlflow/mlflow_server/metrics_store/mlflow.db --default-artifact-root /home/mlflow/mlflow_server/artifact_store/
Truy cập MLflow UI, mặc định MLflow chạy ở port 5000: http://127.0.0.1:5000. Bạn có thể sử dụng giao diện để xem các thí nghiệm, lần chạy, số liệu và các artifact đã lưu trữ.
Nếu bạn chạy MLflow server trên cloud VM, nhớ tạo SSH Tunel để truy cập được MLflow UI:
1
ssh -L 5000:localhost:5000 remote




