Tutorial Docker untuk Data Science & ML: Containerisasi Model

# Tutorial 15: Docker untuk Data Science dan Machine Learning ## Daftar Isi 1. [Pendahuluan](#pendahuluan) 2. [Prasyarat](#prasyarat) 3. [Dasar-Dasar Docker untuk Insinyur ML](#dasar-dasar-docker-un...

By Ruby Abdullah · · tutorial
DockerData ScienceMLContainerizationGPUDocker Compose

Tutorial 15: Docker untuk Data Science dan Machine Learning

Daftar Isi

  • Pendahuluan
  • Prasyarat
  • Dasar-Dasar Docker untuk Insinyur ML
  • Menulis Dockerfile untuk Proyek ML
  • Multi-Stage Build untuk Image yang Dioptimasi
  • Dukungan GPU dengan NVIDIA Docker
  • Docker Compose untuk Stack ML
  • Volume Mount untuk Data dan Model
  • Manajemen Environment dan Dependensi
  • Integrasi CI/CD
  • Praktik Terbaik
  • Kesimpulan

  • Pendahuluan

    Reprodusibilitas adalah salah satu tantangan terbesar dalam data science dan machine learning. Masalah terkenal "berjalan di mesin saya" semakin diperparah ketika proyek bergantung pada versi spesifik Python, CUDA, cuDNN, library sistem, dan puluhan paket Python. Model yang berlatih dengan sempurna di laptop Anda mungkin gagal total di workstation rekan kerja atau di lingkungan cloud.

    Docker menyelesaikan masalah ini dengan mengemas kode, dependensi, dan lingkungan runtime Anda ke dalam unit portabel dan mandiri yang disebut container. Dengan Docker, Anda dapat menjamin bahwa pipeline ML Anda berjalan identik di mana saja — dari pengembangan lokal hingga CI/CD hingga penyajian produksi.

    Tutorial ini mencakup semua yang Anda butuhkan untuk mengontainerisasi alur kerja ML: menulis Dockerfile yang efisien, memanfaatkan multi-stage build, mengaktifkan akselerasi GPU, mengorkestrasi stack multi-layanan dengan Docker Compose, dan mengintegrasikan container ke dalam pipeline CI/CD.


    Prasyarat

    • Docker Engine 24.0 atau lebih baru sudah terinstal
    • Docker Compose v2 sudah terinstal
    • Familiar dengan baris perintah Linux
    • Python 3.9+ dan pip
    • (Opsional) GPU NVIDIA dengan driver terinstal untuk bagian GPU

    # Verifikasi instalasi Docker
    

    docker --version

    docker compose version


    Dasar-Dasar Docker untuk Insinyur ML

    Konsep Utama

    Images adalah template read-only yang mendefinisikan lingkungan. Mereka dibangun dari Dockerfile dan disimpan di registry (Docker Hub, AWS ECR, GCP Artifact Registry). Containers adalah instance yang berjalan dari image. Mereka adalah proses terisolasi dan sementara dengan filesystem, jaringan, dan ruang proses sendiri. Layers adalah blok bangunan dari image. Setiap instruksi di Dockerfile membuat layer baru. Docker meng-cache layer, sehingga layer yang tidak berubah digunakan kembali saat rebuild — ini sangat penting untuk iterasi cepat. Registries menyimpan dan mendistribusikan image Docker. Registry publik termasuk Docker Hub, sementara registry privat digunakan untuk model ML dan kode proprietary.

    Mengapa Docker Penting untuk ML

    | Tantangan | Solusi Docker |

    |-----------|--------------|

    | Konflik dependensi | Lingkungan terisolasi per proyek |

    | Ketidakcocokan versi Python | Tentukan versi Python eksak di image |

    | Kompatibilitas CUDA/cuDNN | Gunakan image dasar NVIDIA dengan versi yang cocok |

    | Pelatihan yang dapat direproduksi | Image yang sama menghasilkan hasil yang sama di mana saja |

    | Konsistensi deployment | Dev, staging, dan produksi menggunakan image yang sama |


    Dockerfile ML Dasar

    # Gunakan runtime Python resmi sebagai image dasar
    

    FROM python:3.11-slim

    Atur variabel lingkungan

    ENV PYTHONDONTWRITEBYTECODE=1 \

    PYTHONUNBUFFERED=1 \

    PIPNOCACHEDIR=1 \

    PIPDISABLEPIPVERSIONCHECK=1

    Atur direktori kerja

    WORKDIR /app

    Instal dependensi sistem (umum untuk library ML)

    RUN apt-get update && apt-get install -y --no-install-recommends \

    build-essential \

    libgomp1 \

    libglib2.0-0 \

    libsm6 \

    libxext6 \

    libxrender-dev \

    libgl1-mesa-glx \

    curl \

    && rm -rf /var/lib/apt/lists/

    Salin dan instal dependensi Python terlebih dahulu (untuk caching layer)

    COPY requirements.txt .

    Artikel Terkait