Docker ile Makine Öğrenmesi Modellerini Konteynerleştirme
Çok aşamalı Dockerfile, CUDA temel görüntüleri, model yapıtı COPY, sağlık uç noktaları.
Docker ile Makine Öğrenmesi Modellerini Konteynerleştirme, CoddyKit'te ücretsiz bir Learn AI with Python dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn AI with Python öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn AI with Python kursu toplamda 4 dersten oluşur.
ML Modelleri Neden Konteynerleştirmeli?
Makine öğrenimi modelleri belirli bir Python sürümüne, sistem kütüphanelerine ve sabitlenmiş paket sürümlerine bağlıdır. Docker, tüm bunları tek bir değişmez imajda paketler; böylece model bir dizüstü bilgisayarda, CI çalıştırıcısında ve üretim kümesinde aynı şekilde çalışır.
ML için en büyük sorun bağımlılık kaymasıdır: numpy 1.24 sürümüne göre eğitilen bir model, numpy 2.0 üzerinde fark ettirmeden hatalı davranabilir. Bir konteyner bu sürümleri sabitler.
Naif Tek Aşamalı İmaj
İlk denemede her şey tek bir aşamaya kurulur. Bu yöntem çalışır; ancak derleme araçlarını (derleyiciler, önbellekler, geliştirme başlıkları) son imaja da taşır, bu da imajı büyütür ve saldırı yüzeyini genişletir.
FROM python:3.11
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "serve.py"]Çok Aşamalı Derlemeler: Fikir
Çok aşamalı derleme, bağımlılıkları derlemek ve kurmak için bir aşama (derleyici), ardından yalnızca tamamlanmış çıktıları temiz bir son aşamaya kopyalamak için kullanılır. Yalnızca derleme sırasında gereken araçlar üretime ulaşmaz.
- Derleyici aşaması: tam taban imajı,
pip installçalıştırır - Son aşama: minimal taban imajı, kurulu paketleri kopyalar
Derleyici Aşaması: pip install
Derleyici, paketleri kolayca kopyalanabilecekleri bilinen bir öneke kurar. --user kullanmak paketleri /root/.local altına yerleştirir; böylece daha sonra alabileceğimiz tek bir dizinde toplanırlar.
FROM python:3.11 AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user --no-cache-dir -r requirements.txtSon Minimal Aşama
Son aşama python:3.11-slim ile başlar ve kurulu paketleri derleyici aşamasından kopyalar. Minimal imaj, derleme araç zincirlerini içermez ve imaj boyutunu yüzlerce megabayt azaltır.
FROM python:3.11-slim
WORKDIR /app
COPY --from=builder /root/.local /root/.local
ENV PATH=/root/.local/bin:$PATH
COPY . .Model Ağırlıklarını Kopyalama
Büyük model ağırlıkları, Docker'ın bunları önbelleğe alabilmesi için ayrı bir katman olarak kopyalanmalıdır. Yalnızca kodunuz değişirse ağırlık katmanı yeniden kullanılır ve yeniden derlemeler hızlı gerçekleşir.
COPY model/ /app/model/
COPY src/ /app/src/Sunum Bağlantı Noktasını EXPOSE ile Belirtme
Çıkarım sunucuları (FastAPI, Triton, TorchServe) bir bağlantı noktasını dinler. EXPOSE 8000, kapsayıcının 8000 numaralı bağlantı noktasında hizmet verdiğini belgeler. Bağlantı noktasını tek başına yayımlamaz; çalışma zamanında -p 8000:8000 ile eşlemeniz gerekir.
EXPOSE 8000
CMD ["uvicorn", "src.serve:app", "--host", "0.0.0.0", "--port", "8000"]HEALTHCHECK Temelleri
Düzenleyicilerin model sunucusunun çalışır durumda olup olmadığını bilmesi gerekir. HEALTHCHECK yönergesi belirli aralıklarla bir komut çalıştırır; sıfır olmayan bir çıkış kodu kapsayıcıyı sağlıksız olarak işaretler. Böylece kapsayıcı yeniden başlatılabilir veya yük dengeleyiciden çıkarılabilir.
curl ile HEALTHCHECK
Yaygın bir yaklaşım, hafif bir /health uç noktasına istek göndermektir. curl -f, tüm HTTP hatalarında başarısız olur (sıfır olmayan bir çıkış kodu döndürür); HEALTHCHECK'in beklediği davranış tam olarak budur.
HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \
CMD curl -f http://localhost:8000/health || exit 1Basit Bir Sağlık Uç Noktası
Hizmet uygulamanız, tam bir çıkarım çalıştırmadan modelin yüklendiğini doğrulayan hızlı bir uç nokta sunmalıdır.
from fastapi import FastAPI
app = FastAPI()
model = None # loaded at startup
@app.get("/health")
def health():
return {"status": "ok", "model_loaded": model is not None}Eksiksiz Dockerfile
Her şeyi bir araya getirelim: bir oluşturucu aşaması bağımlılıkları kurar, yalın son aşama bunları modelle birlikte kopyalar, 8000 numaralı bağlantı noktasını açığa çıkarır ve bir sağlık denetimi tanımlar.
FROM python:3.11 AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user --no-cache-dir -r requirements.txt
FROM python:3.11-slim
WORKDIR /app
COPY --from=builder /root/.local /root/.local
ENV PATH=/root/.local/bin:$PATH
COPY model/ /app/model/
COPY src/ /app/src/
EXPOSE 8000
HEALTHCHECK --interval=30s --timeout=5s --retries=3 \
CMD curl -f http://localhost:8000/health || exit 1
CMD ["uvicorn", "src.serve:app", "--host", "0.0.0.0", "--port", "8000"]Hızlı Kontrol
Çok aşamalı derlemeleri anlayıp anlamadığınızı test edin.
Özet
Üretim kalitesinde bir Dockerfile ile bir makine öğrenimi modelini kapsayıcı hâline getirmeyi öğrendiniz:
- Çok aşamalı derleme: oluşturucu bağımlılıkları kurar, yalın son aşama bunları kopyalar
- EXPOSE 8000, hizmet sunum bağlantı noktasını belgeler
- HEALTHCHECK CMD curl, düzenleyicilerin çalışmayan kapsayıcıları algılamasını sağlar
- Ağırlıkları kendi önbelleklenebilir katmanları olarak kopyalayın
Sonraki adımda kapsayıcı hâline getirilmiş bir modeli yönetilen bir bulut hizmetine dağıtacaksınız.
Sıkça Sorulan Sorular
“Docker ile Makine Öğrenmesi Modellerini Konteynerleştirme” dersi ücretsiz mi?
Evet — “Docker ile Makine Öğrenmesi Modellerini Konteynerleştirme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn AI with Python kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn AI with Python kursu toplamda 4 dersten oluşur.
“Docker ile Makine Öğrenmesi Modellerini Konteynerleştirme” dersinde ne öğreneceğim?
Çok aşamalı Dockerfile, CUDA temel görüntüleri, model yapıtı COPY, sağlık uç noktaları. Learn AI with Python ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Learn AI with Python öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Learn AI with Python, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Docker ile Makine Öğrenmesi Modellerini Konteynerleştirme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Learn AI with Python dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Learn AI with Python dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Docker ile Makine Öğrenmesi Modellerini Konteynerleştirme
- Buluta Dağıtım: AWS SageMaker
- Triton Inference Server ile Yüksek Performanslı Sunum
- Model Uç Noktalarını Ölçeklendirme ve Otomatik Ölçeklendirme