Modal: Serverless GPU Cloud untuk Deploy Model ML
Salah satu tantangan terbesar dalam machine learning bukan membuat model, melainkan men-deploy-nya ke production. Anda perlu mengelola server, mengkonfigurasi GPU driver, mengatur auto-scaling, dan banyak lagi. Modal hadir untuk menghilangkan semua kompleksitas tersebut.
Modal adalah platform serverless cloud yang memungkinkan Anda menjalankan kode Python di cloud dengan akses GPU, tanpa perlu mengelola infrastruktur sama sekali. Cukup tulis fungsi Python biasa, tambahkan decorator, dan Modal akan mengurus sisanya.
Mengapa Modal?
Perbandingan dengan pendekatan tradisional:
Tanpa Modal (Tradisional):- Setup server EC2/GCE dengan GPU
- Install CUDA, cuDNN, driver
- Konfigurasi Docker, Kubernetes
- Setup load balancer, auto-scaling
- Monitoring, logging, alerting
- Total waktu setup: berhari-hari hingga berminggu-minggu
- Tulis fungsi Python
- Tambahkan decorator
@app.function(gpu="A100") - Deploy dengan
modal deploy - Total waktu: hitungan menit
Modal menawarkan pricing pay-per-second, artinya Anda hanya membayar saat kode benar-benar berjalan. Tidak ada biaya idle.
Instalasi dan Autentikasi
Install Modal
pip install modal
Setup Autentikasi
modal setup
Perintah ini akan membuka browser untuk login dan mengkonfigurasi token API secara otomatis. Setelah selesai, Anda bisa langsung menggunakan Modal dari terminal.
Verifikasi instalasi:
modal --version
Basic Functions dengan @app.function
Konsep dasar Modal sangat sederhana: Anda mendefinisikan fungsi Python biasa dan menandainya dengan decorator agar berjalan di cloud.
import modal
app = modal.App("hello-modal")
@app.function()
def hello(name: str) -> str:
return f"Hello, {name}! This is running on Modal cloud."
@app.localentrypoint()
def main():
# Memanggil fungsi yang berjalan di cloud
result = hello.remote("World")
print(result)
Jalankan dengan:
modal run helloapp.py
Fungsi hello akan dieksekusi di cloud Modal, bukan di mesin lokal Anda. Decorator @app.localentrypoint() menandai fungsi yang berjalan secara lokal sebagai entry point.
GPU Selection
Kekuatan utama Modal adalah kemudahan mengakses GPU. Anda tinggal menentukan tipe GPU yang diinginkan:
import modal
app = modal.App("gpu-example")
Menggunakan NVIDIA T4 (budget-friendly, inferensi)
@app.function(gpu="T4")
def inferencet4():
import torch
print(f"GPU available: {torch.cuda.isavailable()}")
print(f"GPU name: {torch.cuda.getdevicename(0)}")
return "T4 inference complete"
Menggunakan NVIDIA A10G (balance performa/harga)
@app.function(gpu="A10G")
def traina10g():
import torch
print(f"GPU: {torch.cuda.getdevicename(0)}")
print(f"Memory: {torch.cuda.getdeviceproperties(0).totalmem / 1e9:.1f} GB")
return "A10G training complete"
Menggunakan NVIDIA A100 (high-performance training)
@app.function(gpu="A100")
def traina100():
import torch
print(f"GPU: {torch.cuda.getdevicename(0)}")
return "A100 training complete"
Menggunakan NVIDIA H100 (cutting-edge, LLM training)
@app.function(gpu="H100")
def trainh100():
import torch
print(f"GPU: {torch.cuda.getdevicename(0)}")
return "H100 training complete"
Multiple GPU
@app.function(gpu=modal.gpu.A100(count=2))
def multigputraining():
import torch
print(f"Number of GPUs: {torch.cuda.devicecount()}")
return "Multi-GPU training complete"
Pilih GPU berdasarkan kebutuhan:
- T4: Inferensi, model kecil-menengah, paling hemat biaya
- A10G: Balance antara performa dan biaya, fine-tuning
- A100: Training model besar, fine-tuning LLM
- H100: Performa tertinggi, training LLM skala besar