Serverless Deployment এবং API Integration প্রজেক্ট
Serverless architecture হল একটি কনসেপ্ট যেখানে সার্ভার পরিচালনার সমস্ত দায়িত্ব ক্লাউড পরিষেবাদাতার উপর থাকে। AWS Lambda, Azure Functions, এবং Google Cloud Functions এর মতো সার্ভারলেস প্ল্যাটফর্ম ব্যবহার করে দ্রুত এবং স্কেলযোগ্য অ্যাপ্লিকেশন তৈরি করা যায়। এই প্রকল্পে আমরা AWS Lambda ব্যবহার করে একটি মেশিন লার্নিং মডেল ডিপ্লয় করব এবং API Gateway এর মাধ্যমে তা ইন্টিগ্রেট করব।
প্রকল্পের উদ্দেশ্য
- একটি মেশিন লার্নিং মডেল তৈরি করা এবং সেটি AWS Lambda তে ডিপ্লয় করা।
- AWS API Gateway ব্যবহার করে Lambda ফাংশনকে API এর মাধ্যমে এক্সেস করা।
পদক্ষেপ
- মডেল তৈরি করা: একটি সহজ মেশিন লার্নিং মডেল তৈরি করুন।
- AWS S3 এ মডেল আপলোড করা: মডেলটি S3 তে আপলোড করুন।
- Lambda ফাংশন তৈরি করা: মডেল লোড এবং ইনফারেন্স করার জন্য Lambda ফাংশন তৈরি করুন।
- API Gateway সেট আপ করা: Lambda ফাংশনের জন্য API তৈরি করুন।
- API টেস্ট করা: API কল করে ফাংশনটি পরীক্ষা করুন।
১. মডেল তৈরি করা
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
import joblib
# ডেটা লোড করুন
data = pd.read_csv('data.csv') # আপনার ডেটা ফাইলের নাম
X = data.drop('target', axis=1)
y = data['target']
# ট্রেনিং এবং টেস্ট ডেটা বিভক্ত করুন
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# মডেল প্রশিক্ষণ
model = RandomForestClassifier()
model.fit(X_train, y_train)
# মডেল সংরক্ষণ করুন
joblib.dump(model, 'model.pkl')
২. AWS S3 এ মডেল আপলোড করা
import boto3
# S3 ক্লায়েন্ট তৈরি করুন
s3 = boto3.client('s3')
# মডেল আপলোড করুন
s3.upload_file('model.pkl', 'your-bucket-name', 'model.pkl')
৩. AWS Lambda ফাংশন তৈরি করা
৩.১. Lambda ফাংশন তৈরি করুন
- AWS Management Console এ যান।
- Lambda সার্ভিসে একটি নতুন ফাংশন তৈরি করুন (যেমন
ModelPredictionFunction)। - Python 3.x নির্বাচন করুন এবং IAM রোল নির্বাচন করুন।
৩.২. Lambda ফাংশনের কোড লেখা
import json
import joblib
import boto3
import numpy as np
# S3 থেকে মডেল লোড করুন
s3 = boto3.client('s3')
def load_model():
response = s3.get_object(Bucket='your-bucket-name', Key='model.pkl')
model = joblib.load(response['Body'])
return model
model = load_model()
def lambda_handler(event, context):
# ইনপুট ডেটা গ্রহণ করুন
data = json.loads(event['body'])
# ডেটাকে NumPy অ্যারেতে রূপান্তর করুন
input_data = np.array(data['input']).reshape(1, -1) # reshape করে 2D অ্যারেতে রূপান্তর করুন
# পূর্বাভাস করা
prediction = model.predict(input_data)
# ফলাফল ফিরিয়ে দিন
return {
'statusCode': 200,
'body': json.dumps({'prediction': prediction[0]})
}
৪. API Gateway সেট আপ করা
৪.১. API Gateway সার্ভিসে যান
- AWS Management Console-এ API Gateway নির্বাচন করুন।
- একটি নতুন API তৈরি করুন (REST API নির্বাচন করুন)।
- API এর নাম এবং অন্যান্য সেটিংস পূরণ করুন এবং API তৈরি করুন।
৪.২. API Resource এবং Method তৈরি করা
- Resources ট্যাবে যান এবং একটি নতুন Resource তৈরি করুন (যেমন
/predict)। - নতুন Resource-এ একটি Method তৈরি করুন (যেমন POST)।
- Method Integration হিসেবে Lambda Function নির্বাচন করুন এবং আপনার Lambda ফাংশনের নাম দিন।
৫. API টেস্ট করা
৫.১. API ডিপ্লয় করা
- Actions থেকে Deploy API নির্বাচন করুন।
- একটি নতুন Deployment Stage তৈরি করুন (যেমন
dev)।
৫.২. API Endpoint ব্যবহার করা
- API ডিপ্লয় করার পর একটি URL পাবেন, যা API Endpoint হিসেবে কাজ করবে।
৫.৩. API কল করা
এখন আপনি Postman বা একটি Python স্ক্রিপ্ট ব্যবহার করে API কল করতে পারেন।
import requests
# API URL
url = 'https://your-api-id.execute-api.region.amazonaws.com/dev/predict'
# ইনপুট ডেটা
input_data = {
'input': [value1, value2, value3] # আপনার মডেলের ইনপুট অনুযায়ী
}
# POST অনুরোধ করুন
response = requests.post(url, json=input_data)
# ফলাফল দেখুন
print(response.json())
সারসংক্ষেপ
- Model Training: একটি মডেল তৈরি এবং প্রশিক্ষণ দেওয়া হয়।
- S3 Upload: মডেলটি S3 তে আপলোড করা হয়।
- Lambda Function: Lambda ফাংশনে মডেলটি লোড করা হয় এবং পূর্বাভাস তৈরির জন্য API তৈরি করা হয়।
- API Gateway: API Gateway ব্যবহার করে REST API তৈরি করা হয়।
- API Testing: API Endpoint ব্যবহার করে টেস্ট করা হয়।
এই প্রকল্পের মাধ্যমে, আপনি একটি সার্ভারলেস আর্কিটেকচার ব্যবহার করে একটি মেশিন লার্নিং মডেল সফলভাবে ডিপ্লয় করতে পারবেন এবং API-এর মাধ্যমে এটি এক্সেস করতে পারবেন, যা বিভিন্ন অ্যাপ্লিকেশন থেকে সহজে ব্যবহারের জন্য প্রস্তুত।
Read more