Docker Model Runner, Modellerinizi Dockerize Etme ve Çalıştırma Rehberi
Makine öğrenimi modellerinizi Docker konteynerleri içinde çalıştırmanın avantajları, kurulumu ve örnek kullanımları hakkında kapsamlı bir rehber.
Makine öğrenimi (ML) modellerini geliştirmek ve eğitmek karmaşık bir süreçtir. Bu modelleri güvenilir bir şekilde dağıtmak ve çalıştırmak da ayrı bir zorluktur. İşte bu noktada Docker devreye giriyor. Docker, modellerinizi ve bağımlılıklarını tutarlı bir şekilde paketlemenize, dağıtmanıza ve çalıştırmanıza olanak tanıyan güçlü bir araçtır. Bu makalede, Docker Model Runner'ın ne olduğunu, nasıl kurulduğunu ve örnek kullanımlarını inceleyeceğiz.
Docker Model Runner Nedir?
Docker Model Runner, makine öğrenimi modellerinizi Docker konteynerleri içinde çalıştırmanıza olanak sağlayan bir yaklaşımdır. Bu yaklaşım, modelin bağımlılıklarını, çalışma zamanı ortamını ve kodu tek bir taşınabilir birimde (Docker imajı) birleştirir. Bu sayede, modelinizin farklı ortamlarda (geliştirme, test, üretim) aynı şekilde çalışmasını garanti edebilirsiniz.
Docker Model Runner'ın Avantajları:
- Tutarlılık: Modeliniz her ortamda aynı şekilde çalışır, bağımlılık çatışmalarını ortadan kaldırır.
- İzolasyon: Her model kendi konteynerinde çalışır, diğer modelleri veya sistemleri etkilemez.
- Taşınabilirlik: Docker imajları, herhangi bir Docker destekli platformda (bulut, yerel sunucu, hatta Raspberry Pi) çalıştırılabilir.
- Ölçeklenebilirlik: Docker, modellerinizi kolayca ölçeklendirmenize olanak tanır. Kubernetes gibi konteyner orkestrasyon araçlarıyla entegre edilebilir.
- Versiyon Kontrolü: Modelin ve bağımlılıklarının farklı versiyonlarını kolayca yönetebilirsiniz.
- Reproducibility (Yeniden Üretilebilirlik): Modelin nasıl eğitildiğini ve nasıl çalıştığını tam olarak yeniden üretebilirsiniz.
Kurulum
Docker Model Runner'ı kullanmak için öncelikle Docker'ın kurulu olması gerekir.
Docker Kurulumu:
- Linux: Docker'ın resmi web sitesindeki talimatları izleyin: https://docs.docker.com/engine/install/
- macOS: Docker Desktop'ı indirin ve kurun: https://www.docker.com/products/docker-desktop/
- Windows: Docker Desktop'ı indirin ve kurun: https://www.docker.com/products/docker-desktop/
Kurulumdan sonra, Docker'ın düzgün çalıştığını doğrulamak için aşağıdaki komutu çalıştırın:
docker --version
Bu komut, Docker'ın kurulu sürümünü göstermelidir.
Örnek Kullanım
Bu örnekte, basit bir Python Flask uygulamasını ve scikit-learn ile eğitilmiş bir makine öğrenimi modelini Dockerize edeceğiz.
1. Modelin Oluşturulması (model.py):
# model.py
import pickle
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
import pandas as pd
# Veri kümesi oluştur veya yükle
data = {'X': [1, 2, 3, 4, 5], 'y': [2, 4, 5, 4, 5]}
df = pd.DataFrame(data)
# Veriyi eğitim ve test kümelerine ayır
X_train, X_test, y_train, y_test = train_test_split(df[['X']], df['y'], test_size=0.2, random_state=42)
# Lineer Regresyon modelini eğit
model = LinearRegression()
model.fit(X_train, y_train)
# Modeli kaydet
pickle.dump(model, open('model.pkl', 'wb'))
2. Flask API'sinin Oluşturulması (app.py):
# app.py
from flask import Flask, request, jsonify
import pickle
app = Flask(__name__)
# Modeli yükle
model = pickle.load(open('model.pkl', 'rb'))
@app.route('/predict', methods=['POST'])
def predict():
data = request.get_json(force=True)
prediction = model.predict([[data['X']]])
return jsonify(prediction[0])
if __name__ == '__main__':
app.run(port=5000, debug=True)
3. Gereksinimlerin Belirtilmesi (requirements.txt):
Flask
scikit-learn
pandas
gunicorn
4. Dockerfile Oluşturulması (Dockerfile):
FROM python:3.9-slim-buster
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["gunicorn", "app:app", "--bind", "0.0.0.0:5000"]
Dockerfile Açıklaması:
FROM python:3.9-slim-buster
: Python 3.9'un hafif bir sürümünü temel alır.WORKDIR /app
: Çalışma dizinini /app olarak ayarlar.COPY requirements.txt requirements.txt
: Gereksinimler dosyasını kopyalar.RUN pip install -r requirements.txt
: Bağımlılıkları yükler.COPY . .
: Tüm kaynak kodunu kopyalar.EXPOSE 5000
: 5000 portunu dışarıya açar.CMD ["gunicorn", "app:app", "--bind", "0.0.0.0:5000"]
: Uygulamayı Gunicorn ile başlatır. Gunicorn, üretim ortamları için daha uygun bir WSGI sunucusudur.
5. Docker İmajının Oluşturulması:
Terminalde Dockerfile'ın bulunduğu dizine gidin ve aşağıdaki komutu çalıştırın:
docker build -t ml-model-runner .
Bu komut, "ml-model-runner" adında bir Docker imajı oluşturur.
6. Docker Konteynerinin Çalıştırılması:
Aşağıdaki komutu kullanarak konteyneri çalıştırın:
docker run -p 5000:5000 ml-model-runner
Bu komut, 5000 portunu host makinenizdeki 5000 portuna eşler.
7. Modeli Test Etme:
Artık modelinizi test edebilirsiniz. Başka bir terminal penceresinde aşağıdaki curl komutunu çalıştırın:
curl -X POST -H "Content-Type: application/json" -d '{"X": 6}' http://localhost:5000/predict
Bu komut, modele X
değeri 6 olan bir istek gönderir ve modelin tahminini döndürür.
Ek Paketler:
Modelinizin ihtiyaçlarına göre ek paketler yüklemeniz gerekebilir. Örneğin, TensorFlow veya PyTorch kullanıyorsanız, ilgili paketleri requirements.txt
dosyasına eklemelisiniz. Resmi paketlere ait dokümantasyonlara aşağıdaki linklerden ulaşabilirsiniz:
- TensorFlow: https://www.tensorflow.org/install
- PyTorch: https://pytorch.org/get-started/locally/
Örnek Kod Blogları:
- Logging: Modelinizin performansını ve hatalarını izlemek için logging mekanizması ekleyin. Python'ın
logging
modülünü kullanabilirsiniz. - Health Check Endpoint: Konteynerinizin sağlıklı olup olmadığını kontrol etmek için bir health check endpoint'i oluşturun.
- Model Versiyonlama: Modelin farklı versiyonlarını yönetmek için bir versiyonlama stratejisi uygulayın. Git etiketlerini veya Docker imaj etiketlerini kullanabilirsiniz.
- Güvenlik: Konteynerinizi güvenlik açıklarına karşı korumak için güvenlik en iyi uygulamalarını izleyin.
Bu makalede, Docker Model Runner'ın ne olduğunu, nasıl kurulduğunu ve örnek kullanımlarını inceledik. Docker, makine öğrenimi modellerinizi dağıtmak ve çalıştırmak için güçlü bir araçtır. Bu rehberdeki adımları izleyerek, modellerinizi Dockerize etmeye ve avantajlarından yararlanmaya başlayabilirsiniz.