থিয়ানো (Theano) একটি শক্তিশালী গাণিতিক লাইব্রেরি যা সাধারণত ডিপ লার্নিং মডেল তৈরি করার জন্য ব্যবহৃত হয়। কিন্তু বর্তমানে থিয়ানো ডেভেলপমেন্ট এবং সাপোর্ট বেশ কমে গেছে, তাই নতুন প্রজেক্টে TensorFlow বা PyTorch ব্যবহার করার পরামর্শ দেওয়া হয়। তবে, যদি আপনার থিয়ানো মডেলকে প্রোডাকশন এনভায়রনমেন্টে ডেপ্লয় করতে চান, তবে এখানে কয়েকটি ধাপ উল্লেখ করা হলো যেগুলোর মাধ্যমে থিয়ানো মডেল ডেপ্লয় করা যেতে পারে।
থিয়ানো মডেল ডেপ্লয় করার ধাপ:
১. মডেল ট্রেনিং এবং কম্পাইল করা:
প্রথমে, আপনার থিয়ানো মডেল তৈরি করুন এবং তারপরে সেটিকে কম্পাইল করুন। এখানে একটি উদাহরণ দেয়া হলো যেখানে একটি নিউরাল নেটওয়ার্ক তৈরি করা হয়েছে:
import theano
import theano.tensor as T
import numpy as np
# ইনপুট ডেটা
X = T.dmatrix('X')
y = T.dmatrix('y')
# মডেল আর্কিটেকচার
W = theano.shared(np.random.randn(2, 2))
b = theano.shared(np.zeros(2))
# নিউরাল নেটওয়ার্কের ফাংশন
z = T.dot(X, W) + b
prediction = T.nnet.sigmoid(z)
# লস ফাংশন (Mean Squared Error)
loss = T.mean(T.sqr(y - prediction))
# গ্রেডিয়েন্ট এবং আপডেট
learning_rate = 0.01
dw = T.grad(loss, W)
db = T.grad(loss, b)
updates = [(W, W - learning_rate * dw), (b, b - learning_rate * db)]
# কম্পাইল করা ফাংশন
train_model = theano.function([X, y], loss, updates=updates)
এখানে, মডেল তৈরি করা হয়েছে এবং ফাংশন কম্পাইল করা হয়েছে, যা একে প্রশিক্ষণ দিবে।
২. মডেল সেভ করা:
একবার মডেল প্রশিক্ষিত হয়ে গেলে, এটি একটি ফাইল বা মডেল ফরম্যাট এ সেভ করা দরকার যাতে এটি প্রোডাকশন সিস্টেমে ব্যবহার করা যায়।
থিয়ানো মডেল সেভ করার জন্য, Pickle বা Joblib লাইব্রেরি ব্যবহার করা যেতে পারে। উদাহরণ:
import pickle
# মডেল সেভ করা
with open('theano_model.pkl', 'wb') as f:
pickle.dump([W.get_value(), b.get_value()], f)
এখানে, W.get_value() এবং b.get_value() ব্যবহার করা হচ্ছে যাতে থিয়ানো শেয়ারড ভ্যালুগুলির মান সংরক্ষণ করা যায়।
৩. মডেল লোড করা:
ডেপ্লয় করার সময়, মডেলটি লোড করতে হবে যাতে এটি ব্যবহার করা যেতে পারে। উদাহরণ:
with open('theano_model.pkl', 'rb') as f:
W_value, b_value = pickle.load(f)
# লোড করা ভ্যালু ব্যবহার করে মডেল ইনিশিয়ালাইজ
W.set_value(W_value)
b.set_value(b_value)
৪. ওয়েব সার্ভিসের মাধ্যমে মডেল ডেপ্লয়:
ডেপ্লয় করার জন্য, আপনি একটি ওয়েব সার্ভিস (যেমন Flask বা FastAPI) তৈরি করতে পারেন যা মডেলটি সার্ভ করবে।
Flask ব্যবহার করে ওয়েব API তৈরি করার উদাহরণ:
from flask import Flask, request, jsonify
import numpy as np
app = Flask(__name__)
# মডেল লোড করা
with open('theano_model.pkl', 'rb') as f:
W_value, b_value = pickle.load(f)
W.set_value(W_value)
b.set_value(b_value)
# ইনপুট নেওয়া এবং প্রেডিকশন করা
@app.route('/predict', methods=['POST'])
def predict():
data = request.get_json(force=True)
X_input = np.array(data['input']).reshape(1, -1)
# প্রেডিকশন
pred = theano.function([X], prediction)(X_input)
return jsonify({'prediction': pred.tolist()})
if __name__ == '__main__':
app.run(debug=True)
এখানে একটি Flask API তৈরি করা হয়েছে যেখানে POST রিকুয়েস্টের মাধ্যমে ইনপুট নেওয়া হচ্ছে এবং থিয়ানো মডেল দ্বারা প্রেডিকশন করা হচ্ছে।
৫. ডিপ্লয়মেন্ট পরিবেশে মডেল চালানো:
- একবার ওয়েব সার্ভিস ডেপ্লয় হয়ে গেলে, আপনি এটি Heroku, AWS, Google Cloud, Azure বা আপনার নিজস্ব সার্ভারে হোস্ট করতে পারেন।
- আপনি যদি AWS Lambda বা Google Cloud Functions ব্যবহার করতে চান, তবে সেগুলোর মাধ্যমে আপনার মডেলটি স্কেলেবল ওয়েব সার্ভিস হিসেবে রান করতে পারেন।
৬. মডেল API ট্রায়াল:
একবার ওয়েব সার্ভিস ডেপ্লয় হয়ে গেলে, আপনি API এর মাধ্যমে মডেলকে টেস্ট করতে পারেন। নিচে Postman বা cURL দিয়ে API কলের একটি উদাহরণ:
Postman:
- URL:
http://localhost:5000/predict - Method:
POST Body (JSON):
{ "input": [1.5, 2.3] }
cURL:
curl -X POST http://localhost:5000/predict -H "Content-Type: application/json" -d '{"input": [1.5, 2.3]}'
এটি আপনার ওয়েব সার্ভিসে ইনপুট পাঠাবে এবং প্রেডিকশন রিসিভ করবে।
সারাংশ:
থিয়ানো মডেল ডেপ্লয় করতে:
- মডেল ট্রেনিং: প্রথমে মডেল তৈরি এবং কম্পাইল করুন।
- মডেল সেভ: মডেলটি সেভ করার জন্য Pickle ব্যবহার করুন।
- মডেল লোড: প্রোডাকশন সার্ভারে মডেল লোড করুন।
- ওয়েব সার্ভিস তৈরি: Flask বা FastAPI ব্যবহার করে ওয়েব API তৈরি করুন।
- ডেপ্লয়মেন্ট: API বা ওয়েব সার্ভিসটি হোস্ট করে ডেপ্লয় করুন।
- API ট্রায়াল: Postman বা cURL ব্যবহার করে API টেস্ট করুন।
এইভাবে, আপনি থিয়ানো মডেলটিকে প্রোডাকশন সিস্টেমে ডেপ্লয় করতে পারেন।
Read more