Pengenalan MLOps dengan MLflow

Sistem yang digunakan

  • Sistem operasi Windows 10 64 bit.
  • Sudah terinstal Anaconda, ikuti panduan disini untuk instalasi.
  • Sudah terinstal Visual Studio Code, ikuti panduan disini untuk instalasi.
  • Sudah terinstal Jupyter Notebook dalam Visual Studio Code, ikuti panduan disini untuk instalasi (gunakan mode incognito pada browser chrome).

CARA INSTALL MLFLOW BACKEND SERVER

  1. Buka Anaconda Prompt:

alt text

  1. Buat anaconda environment baru beserta beberapa dependensi library:
conda create mlflow_env python==3.8.13 matplotlib scikit-learn
  1. Aktifkan conda environment yang telah dibuat:
conda activate mlflow_env
  1. Install postgresql:
conda install -y -c conda-forge postgresql

SETTING POSGRESQL DATABASE

  1. Buat PostgreSQL Database Cluster:
initdb --pgdata=<path untuk PostgreSQL>
  1. Start PostgreSQL Database:
pg_ctl -D "<path PostgreSQL>" start
  1. Start PostgreSQL di terminal dengan mengakses postgres database yang sudah ada dalam instalasi:
psql --dbname postgres

Note:

Dalam PostgreSQL interactive terminal (terdapat tulisan "postgres=#")=

  1. Buat database baru untuk mlflow, guna menyimpan registered model:
CREATE DATABASE mlflow_db;
  1. Buat user dan password baru untuk mengautentikasi ketika hendak mengakses database:
CREATE USER mlflow_user WITH ENCRYPTED PASSWORD 'mlflow_user';
GRANT ALL PRIVILEGES ON DATABASE mlflow_db TO mlflow_user;
  1. Cek User:
\du
  1. Cek Database:
\list
  1. Exit PostgreSQL interactive terminal:
\q
  1. Database yang baru saja kita buat akan memiliki data terkait dengan model yang sudah di register. Konten tersebut dapat dilihat dengan perintah:
psql --dbname mlflow_db
  1. Cek tabel yang telah dibuat MLflow:
\dt

INSTALL MLFLOW

  1. Install library MLflow:
pip install mlflow
  1. Install library psycopg2-binary, PostgreSQL adapter untuk Python:
pip install psycopg2-binary
  1. Membuat directory untuk menyimpan semua file yang dihasilkan:
md mlflow\mlruns
  1. Aktifkan PostgreSQL database:
pg_ctl -D "D:/postgresql" -l logfile start

Jika terdapat error seperti ini

pg_ctl: another server might be running; trying to start server anyway
waiting for server to start.... stopped waiting
pg_ctl: could not start server
Examine the log output.

maka lakukan stop postgresql db terlebih dahulu dengan menjalankan

pg_ctl -D "<path PostgreSQL>" stop
  1. Menjalankan MLflow Tracking Server. Guna menjalankan, gunakan perintah mlflow server yang diikuti dengan PostgreSQL melalui --backend-store-uri dengan argumen ://@:/ , kemudian diikuti oleh perintah --defaut-artifact-root yang diikuti oleh path dimana kita membuat directory mlruns sebelumnya, contoh:
mlflow server --backend-store-uri postgresql://mlflow_user:mlflow_user@localhost/mlflow_database --default-artifact-root file:/mlflow/mlruns -h localhost -p 8001
  1. Akses MLflow pada browser, sesuaikan dengan host dan port yang telah didefinisikan pada perintah sebelumnya:

    http://localhost:8001

alt text

Note:

  • MLflow UI dan MLflow backend server akan berhenti bekerja jika user keluar dari anaconda prompt, maka jika hendak mengaktifkan kembali MLflow UI dan MLflow backend server, user perlu mengulangi langkah ke 18 dan 19.
  • File yang tersimpan dalam MLflow tidak akan hilang walau sudah keluar dari anaconda prompt

PRAKTEK MLOPS MENGGUNAKAN MLFLOW

  1. Buka Visual Studio Code:

  2. Masuk ke dalam command pallete: Ctrl+Shift+P

  3. Copy paste Github URL kedalam command pallete untuk pull remote repository pengenalan_mlops_dengan_mlflow ke local repository:

    https://github.com/randi-source/Workshop_Pengenalan_MLOps_dengan_MLflow.git

  4. Setelah pull repository berhasil, buka repository dan buka train.py dalam folder sklearn_elasticnet_wine. Contoh kasus diambil dari link berikut:

    https://github.com/mlflow/mlflow/tree/master/examples/sklearn_elasticnet_wine

  5. Buka file customer_segmentation_kmeans.ipynb

  6. Pastikan kernel yang digunakan adalah mlflow_env:

alt text

  1. Jalankan Script

  2. Buka MLflow ui pada browser:

    http://localhost:8001

Sumber: