PyTorch-এ CUDA এবং Torch এর ইন্টিগ্রেশন ব্যবহার করে GPU তে মডেল ট্রেনিং এবং ইনফারেন্স করা যায়। PyTorch স্বয়ংক্রিয়ভাবে CUDA ডিভাইস সাপোর্ট করে, এবং যদি GPU উপস্থিত থাকে, তাহলে তা ব্যবহার করা সহজ। নিচে CUDA এবং Torch এর ইন্টিগ্রেশন করার একটি উদাহরণ দেওয়া হয়েছে।
১. CUDA ডিভাইস চেক করা
প্রথমে, আপনার সিস্টেমে CUDA ডিভাইস (GPU) আছে কিনা তা চেক করা উচিৎ।
import torch
# CUDA ডিভাইস আছে কিনা তা চেক করা
cuda_available = torch.cuda.is_available()
print(f"CUDA available: {cuda_available}")
torch.cuda.is_available(): যদি GPU এবং CUDA সাপোর্টেড ড্রাইভার ইনস্টল থাকে, তাহলে এটিTrueরিটার্ন করে।
২. মডেল এবং টেন্সরকে GPU তে মুভ করা
GPU তে মডেল এবং ডেটা মুভ করতে .to(device) বা .cuda() ব্যবহার করা হয়।
# ডিভাইস সেট করা (CUDA থাকলে GPU, নাহলে CPU)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# মডেল ইনস্ট্যানশিয়েট করা এবং GPU তে মুভ করা
model = CustomModel().to(device)
# ইনপুট টেন্সর তৈরি করা এবং GPU তে মুভ করা
dummy_input = torch.randn(1, 1, 28, 28).to(device)
# মডেলের মাধ্যমে আউটপুট পাওয়া
output = model(dummy_input)
print(output)
torch.device(): এটি ডিভাইস (CPU বা GPU) সিলেক্ট করার জন্য ব্যবহার করা হয়।.to(device): মডেল এবং টেন্সরকে নির্দিষ্ট ডিভাইসে (GPU বা CPU) মুভ করে।.cuda()একই কাজ করে, কিন্তু.to(device)ব্যবহার করা ভালো কারণ এটি ডিভাইস ডাইনামিকভাবে সিলেক্ট করতে দেয়।
৩. ট্রেনিং লুপে CUDA ব্যবহার করা
GPU তে মডেল ট্রেনিং করার জন্য ট্রেনিং লুপেও ডিভাইস সেট করা প্রয়োজন। নিচে একটি উদাহরণ দেওয়া হলো:
# ট্রেনিং লুপ
for epoch in range(num_epochs):
for images, labels in train_loader:
# ইমেজ এবং লেবেলকে ডিভাইসে মুভ করা
images = images.to(device)
labels = labels.to(device)
# ফরওয়ার্ড পাস
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}")
ব্যাখ্যা:
ডিভাইস সেট করা:
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")দ্বারা ডিভাইস সিলেক্ট করা হয়েছে। যদি GPU উপস্থিত থাকে, তাহলে এটিcuda, নাহলেcpuসিলেক্ট হবে।
ডেটা এবং মডেল মুভ করা:
images.to(device)এবংlabels.to(device)দ্বারা ডেটা মুভ করা হয়েছে।- মডেলও
model.to(device)দ্বারা GPU তে মুভ করা হয়েছে।
ফরওয়ার্ড এবং ব্যাকওয়ার্ড পাস:
- GPU তে ট্রেনিং করার সময় সমস্ত টেন্সর এবং মডেলকে GPU তে স্থানান্তর করা হয় যাতে কম্পিউটেশন দ্রুত হয়।
টিপস:
- GPU তে ডেটা লোডিং প্যারালালাইজ করতে PyTorch এর
DataLoader-এnum_workersপ্যারামিটার ব্যবহার করতে পারেন। - কোডের শুরুতে
torch.backends.cudnn.benchmark = Trueব্যবহার করলে CUDA অপ্টিমাইজেশন সক্ষম হয়, যা ট্রেনিং পারফরম্যান্স বাড়াতে পারে।
এভাবে CUDA এবং Torch ইন্টিগ্রেশন করে GPU তে মডেল ট্রেনিং ও ইনফারেন্স করা যায়, যা মডেল ট্রেনিংকে দ্রুত এবং ইফিশিয়েন্ট করে তোলে।
Read more