Docker একটি ওপেন সোর্স প্ল্যাটফর্ম যা আপনাকে অ্যাপ্লিকেশন এবং এর ডিপেনডেন্সি একটি কনটেইনারে প্যাকেজ করার সুবিধা দেয়, যার মাধ্যমে আপনি সেই অ্যাপ্লিকেশনটি যেকোনো সিস্টেমে সহজেই চালাতে পারেন। Model Deployment এর ক্ষেত্রে, Docker মডেলটি একটি কনটেইনারের মধ্যে প্যাকেজ করে প্রদান করে, যার ফলে মডেলটি সহজে ডিপ্লয় এবং স্কেল করা যায়। Docker এর মাধ্যমে মডেল ডেপ্লয়মেন্ট প্রক্রিয়া সহজ, দ্রুত এবং পুনরায় ব্যবহারযোগ্য হয়।
এখানে Docker ব্যবহার করে Keras বা TensorFlow মডেল ডেপ্লয়মেন্টের একটি সাধারণ পদ্ধতি ব্যাখ্যা করা হলো।
Docker মডেল ডেপ্লয়মেন্টের স্টেপস
১. প্রস্তুতি:
Docker ব্যবহার করে মডেল ডেপ্লয় করতে, প্রথমে আপনার Python মডেল (যেমন Keras/TensorFlow) ডিপেনডেন্সি সহ প্রস্তুত করতে হবে। এজন্য আপনাকে Docker ইমেজ তৈরি করতে হবে যা মডেলটি চালাতে সক্ষম।
২. Dockerfile তৈরি করা:
Dockerfile একটি টেক্সট ফাইল যা Docker কনটেইনার তৈরির জন্য প্রয়োজনীয় ইনস্ট্রাকশন এবং কনফিগারেশন ধারণ করে। এই ফাইলে আপনি আপনার প্রজেক্টের জন্য প্রয়োজনীয় সব প্যাকেজ এবং ডিপেনডেন্সি নির্ধারণ করবেন।
Dockerfile উদাহরণ (Keras মডেল ডেপ্লয়মেন্টের জন্য):
# বেস ইমেজ হিসাবে Python ব্যবহার
FROM python:3.8-slim
# কাজের ডিরেক্টরি তৈরি
WORKDIR /app
# requirements.txt ফাইল কপি করা এবং প্রয়োজনীয় প্যাকেজ ইনস্টল করা
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# প্রোজেক্ট ফাইল কপি করা
COPY . .
# কনটেইনার চালানোর জন্য কমান্ড
CMD ["python", "app.py"]
৩. requirements.txt তৈরি করা:
আপনার মডেল এবং অ্যাপ্লিকেশন চালানোর জন্য প্রয়োজনীয় সব প্যাকেজ এই ফাইলে উল্লেখ করতে হবে। উদাহরণস্বরূপ, requirements.txt ফাইলে আপনার প্রোজেক্টের জন্য প্রয়োজনীয় লাইব্রেরি যেমন TensorFlow, Flask ইত্যাদি থাকতে পারে।
requirements.txt উদাহরণ:
flask==2.1.1
tensorflow==2.8.0
numpy==1.21.0
৪. Flask অ্যাপ তৈরি করা:
মডেল ডেপ্লয় করার জন্য একটি সিম্পল Flask অ্যাপ তৈরি করা হয়। Flask একটি মাইক্রো ওয়েব ফ্রেমওয়ার্ক যা মডেল ইন্টারফেসের জন্য ব্যবহৃত হয়। মডেলটি কনটেইনারের মধ্যে পরিবেশন (serve) করতে Flask API ব্যবহার করা হয়।
Flask অ্যাপ উদাহরণ (app.py):
from flask import Flask, request, jsonify
import tensorflow as tf
import numpy as np
# Flask অ্যাপ তৈরি
app = Flask(__name__)
# মডেল লোড করা
model = tf.keras.models.load_model('your_model.h5')
# API রুট তৈরি
@app.route('/predict', methods=['POST'])
def predict():
data = request.get_json() # ইনপুট ডেটা সংগ্রহ করা
input_data = np.array(data['input']).reshape(1, -1) # ডেটা প্রসেসিং
prediction = model.predict(input_data) # মডেল দিয়ে পূর্বাভাস
return jsonify({'prediction': prediction.tolist()})
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
৫. Docker ইমেজ তৈরি করা:
Dockerfile এবং অন্যান্য প্রয়োজনীয় ফাইলগুলোর সাথে একে একে একটি Docker ইমেজ তৈরি করতে হবে।
Docker ইমেজ তৈরি করার জন্য কমান্ড:
docker build -t my-model-app .
এখানে my-model-app আপনার Docker ইমেজের নাম।
৬. Docker কনটেইনার রান করা:
Docker ইমেজ তৈরি হয়ে গেলে, সেই ইমেজ থেকে একটি কনটেইনার রান করতে হবে।
Docker কনটেইনার রান করার জন্য কমান্ড:
docker run -p 5000:5000 my-model-app
এটি my-model-app নামের ইমেজ থেকে একটি কনটেইনার তৈরি করবে এবং কনটেইনারের 5000 পোর্টে Flask অ্যাপটি চালাবে, যা বাইরের 5000 পোর্টে অ্যাক্সেসযোগ্য হবে।
৭. API মাধ্যমে মডেল ব্যবহার:
এখন আপনার মডেল একটি API মাধ্যমে ব্যবহারযোগ্য। আপনি API রিকোয়েস্ট পাঠিয়ে মডেল থেকে পূর্বাভাস নিতে পারেন। উদাহরণস্বরূপ, আপনি curl বা Postman ব্যবহার করে Flask অ্যাপকে HTTP POST রিকোয়েস্ট পাঠাতে পারেন।
API রিকোয়েস্ট উদাহরণ (curl ব্যবহার করে):
curl -X POST -H "Content-Type: application/json" \
-d '{"input": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]}' \
http://localhost:5000/predict
এটি আপনার Flask অ্যাপের /predict রুটে JSON ডেটা পাঠাবে এবং মডেল থেকে পূর্বাভাস নিয়ে ফিরে আসবে।
সারাংশ
Docker ব্যবহার করে মডেল ডেপ্লয়মেন্টের মাধ্যমে আপনি আপনার মডেলকে একটি কনটেইনারে প্যাকেজ করতে পারেন, যা পরিবেশগত ডিপেনডেন্সি নিয়ে চিন্তা না করে যেকোনো পরিবেশে (যেমন প্রোডাকশন সিস্টেম, ক্লাউড) মডেলটি ডিপ্লয় করা সম্ভব হয়। Docker কনটেইনারের মধ্যে আপনার মডেলটি চালানো, আপডেট করা এবং স্কেল করা অনেক সহজ হয়ে ওঠে।
এই প্রক্রিয়ায়, আমরা Dockerfile ব্যবহার করে পরিবেশ কনফিগার করেছি, Flask ব্যবহার করে মডেলকে API হিসাবে এক্সপোজ করেছি এবং Docker ইমেজ তৈরি করে কনটেইনারে চালিয়েছি।
Read more