MXNet মডেল ডেপ্লয়মেন্ট একটি অত্যন্ত গুরুত্বপূর্ণ প্রক্রিয়া যা আপনাকে আপনার প্রশিক্ষিত মডেলটি প্রোডাকশন পরিবেশে চালাতে এবং ওয়েব অ্যাপ্লিকেশন বা সার্ভিসের মাধ্যমে ব্যবহার করতে সক্ষম করে। সাধারণত, Flask বা Django এর মতো ওয়েব ফ্রেমওয়ার্ক ব্যবহার করে মডেল ডেপ্লয় করা হয়।
এখানে আমরা দেখব কিভাবে MXNet মডেলটি Flask এবং Django ওয়েব অ্যাপ্লিকেশন ব্যবহার করে ডেপ্লয় করা যায়।
১. MXNet মডেল Flask অ্যাপ্লিকেশনে ডেপ্লয় করা
Flask একটি লাইটওয়েট ওয়েব ফ্রেমওয়ার্ক, যা মডেল ডেপ্লয়মেন্টের জন্য খুবই উপযোগী। Flask ব্যবহার করে আপনি REST API তৈরি করতে পারেন, যা মডেলকে সার্ভ করবে এবং ওয়েব ক্লায়েন্ট থেকে ইনপুট নেবে।
1.1 Flask অ্যাপ্লিকেশন সেটআপ
Flask ইনস্টলেশন: প্রথমে Flask ইনস্টল করতে হবে:
pip install FlaskMXNet মডেল লোড: Flask অ্যাপ্লিকেশনে MXNet মডেল লোড করার জন্য
mxnetইনস্টল করতে হবে:pip install mxnetFlask অ্যাপ্লিকেশন তৈরি: এখন Flask অ্যাপ তৈরি করতে হবে যা প্রি-ট্রেইনড MXNet মডেল ব্যবহার করবে।
from flask import Flask, request, jsonify import mxnet as mx from mxnet.gluon import model_zoo from mxnet import nd app = Flask(__name__) # Pre-trained মডেল লোড করা model = model_zoo.vision.resnet18_v2(pretrained=True) model.hybridize() # মডেলটি দ্রুততার জন্য হাইব্রিড করুন @app.route('/predict', methods=['POST']) def predict(): # রিকোয়েস্ট থেকে ইমেজ ডেটা গ্রহণ img = request.files['file'].read() # ইমেজ ফাইল গ্রহণ img = nd.array(img) # ইমেজ কনভার্ট করা MXNet অ্যারে-তে # ইমেজ প্রিপ্রসেসিং এবং ফিচার এক্সট্রাকশন img = img.astype('float32') img = img.reshape((1, 3, 224, 224)) # ইনপুট সাইজ সঠিক করতে # প্রেডিকশন করা output = model(img) # আউটপুট রিটার্ন করা return jsonify({'prediction': output.asnumpy().tolist()}) if __name__ == '__main__': app.run(debug=True)Flask অ্যাপ্লিকেশন চালানো: Flask অ্যাপ্লিকেশন চালাতে নিচের কমান্ডটি ব্যবহার করুন:
python app.py
1.2 API কল করা (Client-Side Request)
আপনার Flask সার্ভারটি এখন localhost:5000 এ চলবে এবং /predict এ POST রিকোয়েস্ট গ্রহণ করবে। ক্লায়েন্ট থেকে ইমেজ প্রেরণ করতে, আপনি যেমন curl বা Postman ব্যবহার করতে পারেন।
যেমন একটি curl কমান্ড হতে পারে:
curl -X POST -F "file=@image.jpg" http://localhost:5000/predict
এটি Flask অ্যাপ থেকে prediction রিটার্ন করবে।
২. MXNet মডেল Django অ্যাপ্লিকেশনে ডেপ্লয় করা
Django হল একটি পূর্ণাঙ্গ ওয়েব ফ্রেমওয়ার্ক এবং এটি খুবই শক্তিশালী। Django ব্যবহার করে আপনি একইভাবে REST API তৈরি করে MXNet মডেল ডেপ্লয় করতে পারেন।
2.1 Django অ্যাপ্লিকেশন সেটআপ
Django ইনস্টলেশন: প্রথমে Django ইনস্টল করতে হবে:
pip install DjangoDjango REST Framework ইনস্টলেশন: Django অ্যাপ্লিকেশনে API তৈরি করার জন্য Django REST Framework ইনস্টল করতে হবে:
pip install djangorestframeworkMXNet ইনস্টলেশন: MXNet মডেল লোড করার জন্য
mxnetইনস্টল করতে হবে:pip install mxnetDjango প্রজেক্ট তৈরি করা: Django প্রজেক্ট তৈরি করার জন্য:
django-admin startproject myproject cd myproject python manage.py startapp predictionDjango মডেল লোড এবং প্রেডিকশন ফাংশন তৈরি: Django অ্যাপ্লিকেশনে একটি API তৈরি করা হবে যা ইমেজ রিসিভ করবে এবং MXNet মডেলের মাধ্যমে প্রেডিকশন করবে।
views.pyফাইলে নিম্নলিখিত কোড লিখুন:from django.http import JsonResponse from rest_framework.decorators import api_view import mxnet as mx from mxnet.gluon import model_zoo from mxnet import nd from PIL import Image import numpy as np from io import BytesIO # Pre-trained মডেল লোড করা model = model_zoo.vision.resnet18_v2(pretrained=True) model.hybridize() @api_view(['POST']) def predict(request): file = request.FILES['file'] img = Image.open(file) img = img.resize((224, 224)) img = np.array(img) img = mx.nd.array(img) img = img.astype('float32') img = img.transpose((2, 0, 1)).expand_dims(axis=0) # সঠিক ইনপুট সাইজ নিশ্চিত করা # প্রেডিকশন output = model(img) result = output.asnumpy().tolist() return JsonResponse({'prediction': result})URL কনফিগারেশন: Django অ্যাপের
urls.pyফাইলে API রাউটিং যুক্ত করুন:from django.urls import path from . import views urlpatterns = [ path('predict/', views.predict, name='predict'), ]Django অ্যাপ চালানো: Django অ্যাপ চালাতে:
python manage.py runserver
2.2 Django API কল করা
আপনার Django সার্ভারটি এখন localhost:8000 এ চলবে এবং /predict/ রুটে POST রিকোয়েস্ট গ্রহণ করবে। ক্লায়েন্ট থেকে ইমেজ প্রেরণ করতে, আপনি curl বা Postman ব্যবহার করতে পারেন।
যেমন একটি curl কমান্ড হতে পারে:
curl -X POST -F "file=@image.jpg" http://localhost:8000/predict/
এটি Django অ্যাপ থেকে prediction রিটার্ন করবে।
সারাংশ
- Flask বা Django ব্যবহার করে আপনি খুব সহজেই MXNet মডেল ডেপ্লয় করতে পারেন এবং ওয়েব অ্যাপ্লিকেশন বা API তৈরি করতে পারেন।
- Flask সাধারণত দ্রুত এবং সহজ অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়, তবে Django একটি পূর্ণাঙ্গ ওয়েব ফ্রেমওয়ার্ক, যেখানে আপনাকে বেশি কনফিগারেশন এবং ফিচার পেতে সাহায্য করবে।
- আপনি MXNet মডেলকে ওয়েব সার্ভিসের মাধ্যমে ডেপ্লয় করতে পারেন এবং এতে prediction সার্ভ করা যায় ক্লায়েন্টদের ইনপুট ডেটার ভিত্তিতে।