MXNet মডেল ডেপ্লয় করা (Flask/Django এর মাধ্যমে)

Model Deployment এবং API Integration - অ্যাপাচি এমএক্সনেট (Apache mxnet) - Machine Learning

373

MXNet মডেল ডেপ্লয়মেন্ট একটি অত্যন্ত গুরুত্বপূর্ণ প্রক্রিয়া যা আপনাকে আপনার প্রশিক্ষিত মডেলটি প্রোডাকশন পরিবেশে চালাতে এবং ওয়েব অ্যাপ্লিকেশন বা সার্ভিসের মাধ্যমে ব্যবহার করতে সক্ষম করে। সাধারণত, Flask বা Django এর মতো ওয়েব ফ্রেমওয়ার্ক ব্যবহার করে মডেল ডেপ্লয় করা হয়।

এখানে আমরা দেখব কিভাবে MXNet মডেলটি Flask এবং Django ওয়েব অ্যাপ্লিকেশন ব্যবহার করে ডেপ্লয় করা যায়।


১. MXNet মডেল Flask অ্যাপ্লিকেশনে ডেপ্লয় করা

Flask একটি লাইটওয়েট ওয়েব ফ্রেমওয়ার্ক, যা মডেল ডেপ্লয়মেন্টের জন্য খুবই উপযোগী। Flask ব্যবহার করে আপনি REST API তৈরি করতে পারেন, যা মডেলকে সার্ভ করবে এবং ওয়েব ক্লায়েন্ট থেকে ইনপুট নেবে।

1.1 Flask অ্যাপ্লিকেশন সেটআপ

  1. Flask ইনস্টলেশন: প্রথমে Flask ইনস্টল করতে হবে:

    pip install Flask
    
  2. MXNet মডেল লোড: Flask অ্যাপ্লিকেশনে MXNet মডেল লোড করার জন্য mxnet ইনস্টল করতে হবে:

    pip install mxnet
    
  3. Flask অ্যাপ্লিকেশন তৈরি: এখন 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)
    
  4. Flask অ্যাপ্লিকেশন চালানো: Flask অ্যাপ্লিকেশন চালাতে নিচের কমান্ডটি ব্যবহার করুন:

    python app.py
    

1.2 API কল করা (Client-Side Request)

আপনার Flask সার্ভারটি এখন localhost:5000 এ চলবে এবং /predictPOST রিকোয়েস্ট গ্রহণ করবে। ক্লায়েন্ট থেকে ইমেজ প্রেরণ করতে, আপনি যেমন 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 অ্যাপ্লিকেশন সেটআপ

  1. Django ইনস্টলেশন: প্রথমে Django ইনস্টল করতে হবে:

    pip install Django
    
  2. Django REST Framework ইনস্টলেশন: Django অ্যাপ্লিকেশনে API তৈরি করার জন্য Django REST Framework ইনস্টল করতে হবে:

    pip install djangorestframework
    
  3. MXNet ইনস্টলেশন: MXNet মডেল লোড করার জন্য mxnet ইনস্টল করতে হবে:

    pip install mxnet
    
  4. Django প্রজেক্ট তৈরি করা: Django প্রজেক্ট তৈরি করার জন্য:

    django-admin startproject myproject
    cd myproject
    python manage.py startapp prediction
    
  5. Django মডেল লোড এবং প্রেডিকশন ফাংশন তৈরি: 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})
    
  6. URL কনফিগারেশন: Django অ্যাপের urls.py ফাইলে API রাউটিং যুক্ত করুন:

    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('predict/', views.predict, name='predict'),
    ]
    
  7. 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 সার্ভ করা যায় ক্লায়েন্টদের ইনপুট ডেটার ভিত্তিতে।
Content added By
Promotion

Are you sure to start over?

Loading...