উদাহরণসহ GPU ব্যবহার করে Model Training

LightGBM এবং GPU ব্যবহার - লাইটজিবিএম (LightGBM) - Latest Technologies

194

GPU (Graphics Processing Unit) ব্যবহার করে মডেল প্রশিক্ষণ মেশিন লার্নিং এবং ডীপ লার্নিং প্রকল্পগুলিতে প্রশিক্ষণ সময় উল্লেখযোগ্যভাবে কমাতে সাহায্য করে। এখানে একটি উদাহরণের মাধ্যমে দেখানো হলো কিভাবে GPU ব্যবহার করে মডেল প্রশিক্ষণ করা যায়।

প্রজেক্টের উদ্দেশ্য: MNIST Dataset ব্যবহার করে হাতের লেখা সংখ্যা শনাক্তকরণ মডেল তৈরি

আমরা PyTorch ব্যবহার করে একটি সিম্পল নিউরাল নেটওয়ার্ক তৈরি করবো যা MNIST ডেটাসেট থেকে হাতের লেখা সংখ্যা শনাক্ত করবে। এই উদাহরণে, GPU ব্যবহার করার জন্য আপনার সিস্টেমে CUDA ইনস্টল করা থাকতে হবে।

ধাপ ১: লাইব্রেরি ইনস্টল করা

প্রয়োজনীয় লাইব্রেরিগুলি ইনস্টল করুন:

pip install torch torchvision matplotlib

ধাপ ২: লাইব্রেরি লোড করা

import torch
import torchvision.transforms as transforms
import torchvision.datasets as datasets
import torch.nn as nn
import torch.optim as optim
import matplotlib.pyplot as plt

ধাপ ৩: ডেটাসেট লোড করা

MNIST ডেটাসেট লোড করুন এবং প্রিপ্রসেস করুন।

# ডেটা ট্রান্সফরমেশন
transform = transforms.Compose([transforms.ToTensor()])

# ট্রেনিং এবং টেস্ট ডেটাসেট লোড
train_dataset = datasets.MNIST(root='./data', train=True, transform=transform, download=True)
test_dataset = datasets.MNIST(root='./data', train=False, transform=transform, download=True)

# ডেটা লোডার তৈরি
train_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=64, shuffle=True)
test_loader = torch.utils.data.DataLoader(dataset=test_dataset, batch_size=64, shuffle=False)

ধাপ ৪: নিউরাল নেটওয়ার্ক মডেল তৈরি করা

class SimpleNN(nn.Module):
    def __init__(self):
        super(SimpleNN, self).__init__()
        self.fc1 = nn.Linear(28 * 28, 128)  # ইনপুট: 28x28 ইমেজ
        self.fc2 = nn.Linear(128, 64)
        self.fc3 = nn.Linear(64, 10)  # আউটপুট: 10 ক্লাস (0-9)

    def forward(self, x):
        x = x.view(-1, 28 * 28)  # ফ্ল্যাট করা
        x = torch.relu(self.fc1(x))
        x = torch.relu(self.fc2(x))
        x = self.fc3(x)
        return x

ধাপ ৫: GPU ব্যবহার নিশ্চিত করা

GPU উপলব্ধ কিনা তা নিশ্চিত করুন এবং মডেল এবং ডেটা সেটআপ করুন।

# GPU চেক করুন
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

# মডেল তৈরি
model = SimpleNN().to(device)

# লস ফাংশন এবং অপটিমাইজার নির্ধারণ করুন
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)

ধাপ ৬: মডেল প্রশিক্ষণ

# প্রশিক্ষণ ফাংশন
def train_model(num_epochs):
    model.train()  # মডেলকে প্রশিক্ষণ মোডে সেট করুন
    for epoch in range(num_epochs):
        for images, labels in train_loader:
            images, labels = images.to(device), labels.to(device)  # ডেটা GPU তে পাঠানো

            # ফরোয়ার্ড পাস
            outputs = model(images)
            loss = criterion(outputs, labels)

            # ব্যাকওয়ার্ড পাস এবং অপটিমাইজেশন
            optimizer.zero_grad()
            loss.backward()
            optimizer.step()

        print(f'Epoch [{epoch + 1}/{num_epochs}], Loss: {loss.item():.4f}')

# মডেল প্রশিক্ষণ
train_model(num_epochs=5)

ধাপ ৭: মডেল মূল্যায়ন

# টেস্ট ফাংশন
def test_model():
    model.eval()  # মডেলকে মূল্যায়ন মোডে সেট করুন
    with torch.no_grad():
        correct = 0
        total = 0
        for images, labels in test_loader:
            images, labels = images.to(device), labels.to(device)
            outputs = model(images)
            _, predicted = torch.max(outputs.data, 1)
            total += labels.size(0)
            correct += (predicted == labels).sum().item()

        print(f'Accuracy of the model on the test images: {100 * correct / total:.2f}%')

# মডেল মূল্যায়ন
test_model()

সারসংক্ষেপ

এই উদাহরণে, আমরা MNIST ডেটাসেট ব্যবহার করে একটি সিম্পল নিউরাল নেটওয়ার্ক তৈরি করেছি এবং GPU ব্যবহার করে মডেলটি প্রশিক্ষণ এবং মূল্যায়ন করেছি। GPU ব্যবহার করে মডেল প্রশিক্ষণের সময় উল্লেখযোগ্যভাবে উন্নতি করা সম্ভব, বিশেষ করে যখন বৃহৎ ডেটাসেট এবং জটিল মডেলগুলি ব্যবহার করা হয়।

Promotion

Are you sure to start over?

Loading...