Docker হলো একটি ওপেন-সোর্স প্ল্যাটফর্ম যা অ্যাপ্লিকেশনগুলি দ্রুত এবং সহজে ডেভেলপ, ডিস্ট্রিবিউট এবং চালানোর জন্য ব্যবহৃত হয়। এটি containers নামক প্রযুক্তি ব্যবহার করে, যা ডেভেলপারদের কোড, লাইব্রেরি, এবং ডিপেনডেন্সিস একত্রে প্যাকেজ করতে সহায়ক। Docker এর মাধ্যমে মডেল ডেপ্লয়মেন্ট করা অনেক সহজ এবং এটি পরিবেশ নিরপেক্ষ (environment-agnostic) করে তোলে, যাতে মডেলটি যেকোনো সিস্টেমে বা সার্ভারে একীভূতভাবে চলতে পারে।
এখানে Docker ব্যবহার করে মেশিন লার্নিং মডেল ডেপ্লয়মেন্ট করার পদ্ধতি ব্যাখ্যা করা হলো।
Docker ব্যবহার করে মডেল ডেপ্লয়মেন্টের ধাপসমূহ:
- Docker ইনস্টলেশন:
- প্রথমে আপনার সিস্টেমে Docker ইনস্টল করা প্রয়োজন। আপনি Docker-এর অফিসিয়াল ওয়েবসাইট থেকে এটি ডাউনলোড এবং ইনস্টল করতে পারেন।
- ডিপেনডেন্সি প্যাকেজ তৈরি করা (Dependencies Setup):
- মডেল ডেপ্লয়মেন্টের জন্য আপনার মডেলটি যেকোনো লাইব্রেরি (যেমন
scikit-learn,tensorflow,keras,flask, ইত্যাদি) ব্যবহার করতে পারে। সেগুলির ডিপেনডেন্সিগুলো Docker কনটেইনারে ইনস্টল করতে হবে। এজন্য আপনাকে একটি
requirements.txtফাইল তৈরি করতে হবে, যেখানে সমস্ত প্যাকেজের নাম এবং ভার্সন থাকবে:flask==2.0.1 numpy==1.21.0 tensorflow==2.5.0 scikit-learn==0.24.2
- মডেল ডেপ্লয়মেন্টের জন্য আপনার মডেলটি যেকোনো লাইব্রেরি (যেমন
- Dockerfile তৈরি করা:
- Dockerfile হল একটি স্ক্রিপ্ট যা Docker কনটেইনার তৈরির জন্য ব্যবহৃত হয়। এখানে আপনি নির্দিষ্ট করবেন যে কিভাবে কনটেইনার তৈরি হবে, কোন অপারেটিং সিস্টেম ব্যবহৃত হবে, কোন প্যাকেজ এবং লাইব্রেরি ইনস্টল হবে ইত্যাদি।
একটি সাধারণ Dockerfile এর উদাহরণ:
# Base image FROM python:3.8-slim # Set the working directory inside the container WORKDIR /app # Copy the current directory contents into the container COPY . /app # Install dependencies RUN pip install --no-cache-dir -r requirements.txt # Expose the port Flask is running on EXPOSE 5000 # Command to run the application CMD ["python", "app.py"]- Dockerfile ব্যাখ্যা:
FROM python:3.8-slim: এটি একটি পাইটন ৩.৮ ভিত্তিক স্লিম ইমেজ ব্যবহার করবে।WORKDIR /app: কনটেইনারের ভিতরে/appনামে একটি ডিরেক্টরি তৈরি হবে এবং সেটি কার্যকরী ডিরেক্টরি হিসেবে ব্যবহার হবে।COPY . /app: আপনার বর্তমান ডিরেক্টরির সমস্ত ফাইল কনটেইনারের/appডিরেক্টরিতে কপি করবে।RUN pip install -r requirements.txt: সমস্ত প্রয়োজনীয় প্যাকেজ ইনস্টল করবে যাrequirements.txtএ আছে।EXPOSE 5000: কনটেইনারের ৫০০০ পোর্টটি খোলার জন্য নির্দেশনা।CMD ["python", "app.py"]: কনটেইনার চালু হলেapp.pyফাইলটি রান করবে (এখানে Flask বা অন্য কোনো মডেল ডিপ্লয়মেন্ট অ্যাপ্লিকেশন রান করবে)।
- Docker ইমেজ তৈরি করা (Build Docker Image):
Dockerfile তৈরি করার পর, আপনার কনটেইনার ইমেজ তৈরি করতে হবে:
docker build -t my_model_image .
- Docker কনটেইনার রান করা (Run Docker Container):
ইমেজ তৈরি হওয়ার পর, আপনাকে কনটেইনার রান করতে হবে:
docker run -p 5000:5000 my_model_imageএখানে,
5000:5000মানে হল, কনটেইনারের ৫০০০ পোর্টটি আপনার লোকাল মেশিনের ৫০০০ পোর্টের সাথে ম্যাপ করা হবে।
- মডেল ইন্টারফেস (Flask API তৈরি করা):
- মডেল ডিপ্লয়মেন্টের জন্য একটি API তৈরি করা হয় যা HTTP রিকোয়েস্টের মাধ্যমে মডেল থেকে আউটপুট প্রদান করবে।
Flask একটি জনপ্রিয় পাইথন ওয়েব ফ্রেমওয়ার্ক, যা সহজেই API তৈরি করতে সাহায্য করে। একটি সাধারণ Flask API এর উদাহরণ:
from flask import Flask, request, jsonify import numpy as np import tensorflow as tf app = Flask(__name__) # মডেল লোড করুন model = tf.keras.models.load_model('my_model.h5') @app.route('/predict', methods=['POST']) def predict(): data = request.get_json(force=True) prediction = model.predict(np.array([data['input']])) return jsonify(prediction.tolist()) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)- এখানে, Flask API একটি POST রিকোয়েস্টের মাধ্যমে ইনপুট নেবে এবং /predict রুটে মডেলের পূর্বানুমান পাঠাবে।
- Docker কনটেইনারের সাথে API টেস্ট করা:
কনটেইনার রান করার পর, আপনি API এর সাথে যোগাযোগ করতে পারেন। উদাহরণস্বরূপ, Postman বা CURL দিয়ে POST রিকোয়েস্ট পাঠিয়ে মডেলের আউটপুট দেখতে পারেন।
curl -X POST -H "Content-Type: application/json" \ -d '{"input": [1.5, 2.3, 3.1]}' \ http://localhost:5000/predict
উপসংহার:
- Docker ব্যবহার করে মডেল ডেপ্লয়মেন্ট আপনাকে মডেলটি যেকোনো পরিবেশে বা সার্ভারে সহজে ডিপ্লয় এবং রান করার সুযোগ দেয়, যাতে কোনো পরিবেশগত সমস্যা (dependency issues) বা কোডের দ্বন্দ্ব থাকে না।
- Pretrained models ব্যবহার করে, আপনি Docker কনটেইনারে সেই মডেলটি দ্রুত ডিপ্লয় করতে পারেন, যা কম্পিউটেশনাল রিসোর্সের অপচয় কমায়।
- Docker কনটেইনারগুলির মাধ্যমে ডেপ্লয়মেন্টের সময় কমানো, এবং পরিবেশ নিরপেক্ষ কাজ নিশ্চিত করা হয়, যা প্রোডাকশন এবং স্কেলেবিলিটির জন্য অত্যন্ত গুরুত্বপূর্ণ।
Read more