Versi: 1.0
Infrastruktur: Ubuntu 24.04 | 16 Core CPU | 48GB RAM | NVIDIA L40S (48GB)
1. Arsitektur Sistem
Sistem ini menggunakan pendekatan containerized microservices untuk memastikan isolasi data dan kemudahan skalabilitas.
Setiap layanan berjalan di dalam container Docker terpisah, yang memungkinkan:
- Isolasi — Setiap service memiliki environment sendiri
- Skalabilitas — Mudah di-scale horizontal maupun vertical
- Portabilitas — Dapat di-deploy di mana saja yang mendukung Docker
- Reproducibility — Environment yang konsisten di semua tahap development
2. Langkah Persiapan Server (Host)
Jalankan perintah ini pada terminal server Ubuntu Anda untuk menyiapkan driver GPU dan Docker.
# 1. Update & Driver L40S
sudo apt update && sudo apt upgrade -y
sudo apt install -y nvidia-driver-550-server nvidia-utils-550-server
# 2. Docker Installation
curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh
# 3. NVIDIA Container Toolkit (Agar Docker bisa akses GPU)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list |
sudo apt update && sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker
3. Konfigurasi Database
Buat file docker-compose.yml untuk PostgreSQL:
version: '3.8'
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_DB: myapp
POSTGRES_USER: admin
POSTGRES_PASSWORD: secret123
ports:
- "5432:5432"
volumes:
- pg_data:/var/lib/postgresql/data
volumes:
pg_data:
Koneksi ke Database
Gunakan konfigurasi berikut di Laravel .env:
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=myapp
DB_USERNAME=admin
DB_PASSWORD=secret123
4. API Endpoint Reference
| Endpoint | Method | Description |
|---|---|---|
/api/v1/models |
GET | List all available models |
/api/v1/predict |
POST | Run inference on a model |
/api/v1/status |
GET | Check server health |
/api/v1/logs |
GET | View inference logs |
5. Monitoring & Logging
Penting: Pastikan Anda selalu memantau penggunaan GPU dan memori untuk menghindari out-of-memory errors pada proses inference yang berat.
Gunakan perintah berikut untuk monitoring:
# Monitor GPU usage
watch -n 1 nvidia-smi
# Monitor Docker containers
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
Contoh Output
import torch
def check_gpu():
if torch.cuda.is_available():
device = torch.cuda.get_device_name(0)
memory = torch.cuda.get_device_properties(0).total_mem
print(f"GPU: {device}")
print(f"Memory: {memory / 1e9:.1f} GB")
else:
print("No GPU available")
check_gpu()
Kesimpulan
Dengan setup ini, Anda memiliki production-ready AI infrastructure yang siap digunakan. Pastikan untuk:
- Backup data secara berkala
- Update driver GPU setiap ada security patch
- Monitor resource usage secara realtime
- Optimasi model sesuai kebutuhan inference