γ°οΈJS15 - Pipeline Machine Learning & Deployment
Pada Modul ini, mahasiswa akan mempelajari dan mempraktikan siklus lengkap pengembangan Machine Learning (MLOps sederhana). Mahasiswa akan memulai dari melatih model klasifikasi gambar (Day vs Night)
Tujuan
Setelah menyelesaikan praktikum ini, mahasiswa diharapkan mampu:
Mengimplementasikan pipeline preprocessing gambar (Resize, Grayscale, HOG).
Melatih dan menyimpan model Machine Learning beserta preprocessor-nya (
scaler).Membuat aplikasi web server menggunakan Flask.
Mengkonfigurasi Docker container untuk lingkungan ML.
Melakukan deployment aplikasi ke Hugging Face Spaces menggunakan Git CLI.
1. Machine Learning Pipeline
Dalam dunia pengembangan AI, kita tidak sekadar "menulis kode", melainkan membangun sebuah Pipeline. Pipeline adalah serangkaian langkah sistematis yang mengubah data mentah menjadi keputusan atau prediksi yang berguna.
Secara umum, pipeline sederhana terdiri dari tahapan berikut:
A. Data Ingestion (Pengumpulan Data)
Ini adalah tahap awal di mana data dikumpulkan dari berbagai sumber (file lokal, database, atau API).
B. Data Preprocessing (Pra-pemrosesan)
Data mentah jarang sekali bersih atau siap pakai. Tahap ini bertujuan menyeragamkan data.
Resizing: Mengubah ukuran gambar agar seragam (misal 256x256), karena Neural Network membutuhkan input vector yang konsisten.
Grayscaling: Mengubah warna menjadi abu-abu jika warna tidak terlalu berpengaruh pada klasifikasi, untuk mengurangi beban komputasi.
Dalam Praktikum Anda: Fungsi
resize_imagedan konversi kegray.
C. Feature Extraction (Ekstraksi Fitur)
Ini adalah bagian penting dari Machine Learning. Komputer tidak "melihat" gambar seperti manusia; mereka melihat angka. Sehingga diperlukan untuk mengubah pixel mentah menjadi fitur yang bermakna.
HOG (Histogram of Oriented Gradients): Teknik mendeteksi bentuk dan tepi objek dengan menghitung arah gradien cahaya.
Normalization (StandardScaler): Mengubah skala data agar memiliki rentang yang sama. Ini sangat krusial agar model tidak bias terhadap angka yang besar.
Penting: Parameter normalisasi (Mean & Standar Deviasi) yang dipelajari saat Training harus disimpan (
scaler.pkl) agar data Testing/Inference diperlakukan sama persis.
D. Modeling (Pelatihan Model)
Modelling adalah ahap di mana algoritma matematika mencari pola dari fitur yang sudah diekstrak untuk membedakan label (misal: Siang vs Malam).
Artifacts: Hasil dari tahap ini adalah file model (misal:
.h5atau.pkl) yang berisi bobot (weights) hasil pembelajaran.
2. Deployment Machine Learning: Berbagai Sudut Pandang
Deployment adalah proses memindahkan model dari lingkungan eksperimen (Laptop/Google Colab) ke lingkungan produksi (Server/Cloud) agar bisa digunakan oleh pengguna akhir.
Berikut adalah jenis dari deployment dilihat dari berbagai perspektif:
A. Perspektif Arsitektur: Monolithic vs Microservices
Monolithic: Kode aplikasi (frontend), logika bisnis, dan model ML digabung dalam satu paket besar. Sederhana tapi sulit di-scale.
Microservices (dalam praktikum ini): Model ML dibungkus sebagai layanan terpisah (Service). Aplikasi lain berkomunikasi dengan model ini melalui API. Jika model butuh update, aplikasi utama tidak perlu dimatikan.
B. Perspektif Infrastruktur
Masalah klasik programmer adalah kode berjalan lancar di laptop sendiri, tapi error saat dijalankan di server orang lain karena beda versi OS atau Library.
Solusi: Containerization (Docker).
Docker membungkus aplikasi beserta seluruh lingkungannya (OS minimal, Python, Library) ke dalam sebuah "Wadah" (Container). Container ini dijamin bisa jalan di mana saja (Laptop, Cloud, Server) dengan perilaku yang sama persis.
Namun yang sering menadi pertanyaan adalah mengapa Kita Menggunakan Docker? dan tidak langsung upload kode Python saja?
Tentu ada beberap alasan yang mendasari kenapa tidak dianjurkan untuk secara langsung deploy kode python ke server, diantaranya adalah:
Dependency Hell: Di laptop Anda mungkin terinstall
TensorFlow 2.10, tapi di server terinstallTensorFlow 2.5. Model Anda pasti error.Solusi Container, Docker membungkus:
Sistem Operasi Kecil (Debian Slim).
Library Sistem (libgl1 untuk OpenCV).
Library Python (requirements.txt).
Kode & Model Anda.
Portability: "Image" Docker yang dibangun di laptop dijamin akan berjalan sama persis di Hugging Face, di Google Cloud Run, atau di AWS ECS. Ini adalah standar industri saat ini.
C. Perspektif Serving: Batch vs Real-time
Batch Processing: Prediksi dilakukan sekaligus untuk banyak data pada malam hari (misal: rekomendasi produk harian).
Real-time Inference (Yang Anda Praktikkan): Prediksi dilakukan saat itu juga ketika user mengirim request. Latency (kecepatan respon) menjadi sangat penting di sini. Anda menggunakan Flask sebagai web server untuk melayani permintaan ini.
3. Strategi Deployment: Web vs Mobile vs Edge
Setelah model siap, pertanyaan selanjutnya adalah: "Di mana model ini akan bekerja?"
untuk menjawab hal tersebut, ada tiga opsi utama yang meliputi:
A. Web Service Deployment (Server-Side Inference)
Ini adalah metode yang akan di praktikkan dengan menggunakan Flask dan Hugging Face.
Cara Kerja: Model berada di server. Pengguna mengirim data (upload gambar), server memproses, lalu mengirim balik hasilnya (JSON/HTML).
Kelebihan:
Kekuatan komputasi tinggi (bisa menggunakan GPU server).
Model bisa di-update kapan saja tanpa pengguna perlu update aplikasi.
Kode model aman (tidak bisa dicuri pengguna).
Kekurangan: Membutuhkan koneksi internet. Ada latency (jeda waktu) pengiriman data.
B. Mobile/Edge Deployment (On-Device Inference)
Model ditanam langsung di dalam aplikasi HP atau perangkat IoT (Raspberry Pi/CCTV).
Konversi Model: Model
.h5(Keras) harus dikonversi menjadi TensorFlow Lite (.tflite) atau ONNX agar ringan dan kompatibel dengan HP.Cara Kerja: Aplikasi Android/iOS melakukan prediksi secara lokal tanpa internet.
Kelebihan:
Real-time: Sangat cepat (nol latency jaringan).
Privacy: Data gambar pengguna tidak pernah keluar dari HP mereka.
Offline: Bisa bekerja tanpa sinyal.
Kekurangan: Ukuran model terbatas (HP punya RAM kecil). Menguras baterai perangkat pengguna.
C. Hybrid Deployment
Aplikasi mobile tetap ada, tapi hanya mengirim gambar ke API server (Web Service) untuk diproses. Ini menggabungkan kemudahan akses mobile dengan kekuatan server.
4. Infrastruktur Cloud: The Big Three & Hugging Face
Deployment membutuhkan "rumah" (Server). Berikut adalah peta kekuatan penyedia layanan Cloud:
A. Google Cloud Platform (GCP)
Layanan Unggulan: Vertex AI.
Karakteristik: Ekosistem Google sangat kuat di AI (karena Google menciptakan TensorFlow). Vertex AI menyatukan seluruh pipeline dari pengelolaan data hingga deployment dalam satu dashboard.
Opsi Deployment:
Cloud Run: Menjalankan container Docker (seperti praktikum Anda) secara serverless (otomatis menyala saat ada request, mati saat sepi). Sangat hemat biaya.
B. Amazon Web Services (AWS)
Layanan Unggulan: Amazon SageMaker.
Karakteristik: Pemimpin pasar cloud dengan fitur paling lengkap. SageMaker memberikan kontrol penuh bagi developer untuk membangun infrastruktur ML skala raksasa.
Opsi Deployment:
AWS Lambda: Menjalankan fungsi kode kecil (serverless).
EC2: Menyewa komputer virtual (VM) kosong, lalu Anda install Python/Docker sendiri (IaaS).
C. Microsoft Azure
Layanan Unggulan: Azure Machine Learning Studio.
Karakteristik: Sangat ramah bagi pengguna korporat yang terbiasa dengan ekosistem Windows. Memiliki fitur Drag-and-Drop ML designer yang bagus untuk pemula.
D. Hugging Face (Platform Komunitas)
Jika GCP/AWS/Azure adalah "Supermarket Raksasa", Hugging Face adalah "Toko Spesialis Komunitas".
Spaces: Fokus pada kemudahan demo aplikasi. Di balik layar, Spaces sebenarnya berjalan di atas infrastruktur Cloud (seringkali AWS atau OVH Cloud), namun kerumitannya disembunyikan dari Anda.
Kelebihan: Gratis (untuk tier dasar), integrasi Git yang seamless, dan komunitas yang sangat aktif.
5. Hugging Face: The GitHub of AI
Hugging Face saat ini adalah platform komunitas terbesar untuk Machine Learning, khususnya di bidang Natural Language Processing (NLP) dan Computer Vision.
Mengapa Hugging Face Penting?
Model Hub: Tempat menyimpan jutaan model siap pakai (Pre-trained models). Mirip seperti GitHub, tapi khusus untuk menyimpan file model AI yang ukurannya besar.
Spaces (Layanan Cloud): Fitur yang Anda gunakan dalam praktikum. Spaces adalah layanan Hosting gratis/berbayar yang dirancang khusus untuk mendemokan aplikasi ML.
Mendukung Docker (untuk fleksibilitas penuh).
Mendukung Streamlit/Gradio (untuk UI cepat).
Kemudahan Deployment: Hugging Face Spaces mengabstraksi kerumitan server. Anda tidak perlu mengatur IP Address, Firewall, atau instalasi Linux manual. Cukup upload file (via Git), dan Hugging Face yang akan menjalankannya.
Hubungan Docker, Flask, dan Hugging Face dalam Proyek Anda:
Flask: Bertugas sebagai "Resepsionis" (menerima gambar upload, memanggil model, mengembalikan jawaban).
Docker: Bertugas sebagai "Rumah/Wadah" (memastikan Python, OpenCV, dan Tensorflow terinstall dengan benar).
Hugging Face: Bertugas sebagai "Tanah/Lahan" (menyediakan server fisik dan internet agar "Rumah" Docker tersebut bisa diakses orang lain via web).
Last updated