Tutorial

Project: AI On-Premise Ecosystem (Production Ready)

· 2 min read
Laravel DevOps Docker

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:

  1. Backup data secara berkala
  2. Update driver GPU setiap ada security patch
  3. Monitor resource usage secara realtime
  4. Optimasi model sesuai kebutuhan inference

Share this article