মাল্টি-GPU প্রশিক্ষণ এবং মডেল ডিপ্লয়মেন্ট একটি শক্তিশালী কৌশল, যা বড় মডেলগুলিকে দ্রুত প্রশিক্ষণ করতে এবং বাস্তব সময়ে ব্যবহারের জন্য প্রস্তুত করতে সহায়ক। এখানে একটি প্রকল্পের মাধ্যমে মাল্টি-GPU প্রশিক্ষণ এবং মডেল ডিপ্লয়মেন্টের পুরো প্রক্রিয়া ব্যাখ্যা করা হলো।
প্রকল্পের উদাহরণ: MNIST ডেটাসেট ব্যবহার করে মাল্টি-GPU প্রশিক্ষণ এবং Flask ব্যবহার করে মডেল ডিপ্লয়মেন্ট
অংশ ১: মাল্টি-GPU প্রশিক্ষণ
পদক্ষেপ ১: প্রয়োজনীয় লাইব্রেরি ইনস্টল করা
pip install torch torchvision flask
পদক্ষেপ ২: ডেটা লোড এবং প্রস্তুতি
import torch
from torch import nn
from torch.utils.data import DataLoader, Dataset
import torchvision.transforms as transforms
import torchvision.datasets as datasets
# MNIST ডেটাসেট লোড করুন
transform = transforms.Compose([transforms.ToTensor()])
train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
train_loader = DataLoader(dataset=train_dataset, batch_size=64, shuffle=True)
পদক্ষেপ ৩: মডেল তৈরি করা
class SimpleModel(nn.Module):
def __init__(self):
super(SimpleModel, self).__init__()
self.fc1 = nn.Linear(28 * 28, 128)
self.fc2 = nn.Linear(128, 10)
def forward(self, x):
x = x.view(-1, 28 * 28)
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x
পদক্ষেপ ৪: মাল্টি-GPU প্রশিক্ষণের জন্য প্রস্তুতি
# মাল্টি-GPU ব্যবহার করুন
device = 'cuda' if torch.cuda.is_available() else 'cpu'
model = SimpleModel().to(device)
# মাল্টি-GPU প্রশিক্ষণ
if torch.cuda.device_count() > 1:
model = nn.DataParallel(model)
# অপটিমাইজার এবং লস ফাংশন
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
loss_function = nn.CrossEntropyLoss()
পদক্ষেপ ৫: প্রশিক্ষণ লুপ
# প্রশিক্ষণ লুপ
num_epochs = 5
for epoch in range(num_epochs):
for batch_idx, (data, target) in enumerate(train_loader):
data, target = data.to(device), target.to(device)
optimizer.zero_grad() # গ্রেডিয়েন্ট শূন্য করুন
output = model(data) # মডেল প্রেডিকশন
loss = loss_function(output, target) # লস হিসাব করুন
loss.backward() # ব্যাকওয়ার্ড পাস
optimizer.step() # অপটিমাইজার স্টেপ
print(f'Epoch {epoch+1}/{num_epochs}, Loss: {loss.item():.4f}')
অংশ ২: মডেল ডিপ্লয়মেন্ট
পদক্ষেপ ৬: Flask অ্যাপ্লিকেশন তৈরি করা
from flask import Flask, request, jsonify
app = Flask(__name__)
# মডেল লোড করা
model.eval()
@app.route('/predict', methods=['POST'])
def predict():
data = request.json['data'] # JSON থেকে ডেটা নিন
input_tensor = torch.tensor(data).float().to(device)
with torch.no_grad():
prediction = model(input_tensor)
predicted_class = prediction.argmax(dim=1).item()
return jsonify({'predicted_class': predicted_class})
if __name__ == '__main__':
app.run(port=5000)
পদক্ষেপ ৭: Flask অ্যাপ্লিকেশন চালানো
python your_flask_app.py
পদক্ষেপ ৮: মডেল থেকে পূর্বাভাস নেয়া
Flask সার্ভারে POST অনুরোধ পাঠিয়ে আপনার মডেল থেকে পূর্বাভাস নিন। উদাহরণস্বরূপ, curl ব্যবহার করে:
curl -X POST -H "Content-Type: application/json" -d '{"data": [[...]]}' http://127.0.0.1:5000/predict
উপসংহার
এই প্রকল্পে, আপনি MNIST ডেটাসেট ব্যবহার করে মাল্টি-GPU প্রশিক্ষণ করেছেন এবং Flask ব্যবহার করে মডেল ডিপ্লয় করেছেন। মাল্টি-GPU প্রশিক্ষণের মাধ্যমে প্রশিক্ষণের গতি বৃদ্ধি পায় এবং Flask অ্যাপ্লিকেশন তৈরি করার মাধ্যমে আপনার মডেলকে API হিসেবে ব্যবহার করা যায়। এই ধরণের ডিপ্লয়মেন্ট উন্নত মেশিন লার্নিং অ্যাপ্লিকেশন তৈরি করতে সহায়ক।
Read more