DeepSpeed ব্যবহার করে PyTorch মডেল Training শুরু করার জন্য কিছু প্রাথমিক লাইব্রেরি ইমপোর্ট এবং কনফিগারেশন সেটআপ প্রয়োজন। নিচে DeepSpeed-এর জন্য প্রাথমিক লাইব্রেরি ইমপোর্ট এবং কনফিগারেশন করার ধাপগুলো আলোচনা করা হলো।
১. প্রাথমিক লাইব্রেরি ইমপোর্ট
DeepSpeed এবং PyTorch ব্যবহার করতে হলে কিছু গুরুত্বপূর্ণ লাইব্রেরি ইমপোর্ট করতে হবে।
# PyTorch এর প্রয়োজনীয় লাইব্রেরি
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset
# DeepSpeed ইমপোর্ট
import deepspeed
এখানে:
torchএবংtorch.nn: PyTorch ফ্রেমওয়ার্ক এবং নিউরাল নেটওয়ার্কের জন্য ব্যবহৃত।deepspeed: DeepSpeed লাইব্রেরি ইমপোর্ট, যা বড় মডেল Training এবং মেমোরি ব্যবস্থাপনা উন্নত করতে ব্যবহৃত।
২. মডেল কনফিগারেশন তৈরি করা
DeepSpeed-এর সাথে Training চালানোর জন্য একটি কনফিগারেশন ফাইল প্রয়োজন, যা .json ফরম্যাটে সংরক্ষিত থাকে। এই কনফিগারেশন ফাইলের মাধ্যমে Training সেটিংস এবং অপ্টিমাইজেশন অপশন উল্লেখ করা হয়।
নিচে একটি উদাহরণ দেওয়া হলো:
{
"train_batch_size": 16,
"gradient_accumulation_steps": 2,
"steps_per_print": 50,
"fp16": {
"enabled": true
},
"zero_optimization": {
"stage": 2
}
}
কনফিগারেশন ফাইলের বিবরণ:
- train_batch_size: Training-এর ব্যাচ সাইজ নির্ধারণ করে।
- gradient_accumulation_steps: গ্রেডিয়েন্ট একিউমুলেশন স্টেপ সংখ্যা নির্ধারণ করে, যা মেমোরি ব্যবস্থাপনা উন্নত করে।
- steps_per_print: কত স্টেপ পরপর Training তথ্য প্রদর্শিত হবে।
- fp16: Mixed Precision Training সক্রিয় করতে
enabled: trueসেট করা হয়। - zero_optimization: ZeRO Optimization স্টেজ নির্ধারণ করে, যা মেমোরি ব্যবস্থাপনা উন্নত করতে সহায়ক। স্টেজ ২ নির্ধারণ করা হলে এটি মডেল প্যারামিটারগুলিকে বিভিন্ন ডিভাইসে ভাগ করে Training পরিচালনা করে।
৩. কনফিগারেশন ফাইল লোড এবং ব্যবহার করা
DeepSpeed কনফিগারেশন ফাইল .json আকারে সংরক্ষণ করতে পারেন, উদাহরণস্বরূপ ds_config.json নামে। এরপর, এই ফাইলটি ব্যবহার করে DeepSpeed Training চালানো যায়।
# DeepSpeed কনফিগারেশন ফাইলের পাথ
ds_config = "ds_config.json"
# DeepSpeed ইনিশিয়ালাইজেশন
model_engine, optimizer, _, _ = deepspeed.initialize(model=model, config=ds_config)
৪. অপ্টিমাইজার তৈরি করা
PyTorch অপ্টিমাইজার DeepSpeed-এর সাথে ব্যবহার করা যায়। উদাহরণ হিসেবে Adam Optimizer ব্যবহার করা হয়েছে:
# অপ্টিমাইজার তৈরি করা
optimizer = optim.Adam(model.parameters(), lr=1e-4)
DeepSpeed অপ্টিমাইজারের জন্য PyTorch অপ্টিমাইজারকেও সাপোর্ট করে, যা Training স্পিড বৃদ্ধি ও মেমোরি ব্যবস্থাপনা উন্নত করতে সাহায্য করে।
৫. Training ডেটা লোডার সেটআপ করা
DeepSpeed Training চালানোর জন্য Training ডেটা এবং ডেটা লোডার তৈরি করতে হবে।
# Training ডেটা তৈরি
data = torch.randn(100, 10)
labels = torch.randint(0, 2, (100,))
# ডেটাসেট এবং ডেটা লোডার তৈরি
train_dataset = TensorDataset(data, labels)
train_loader = DataLoader(train_dataset, batch_size=8)
পূর্ণাঙ্গ উদাহরণ
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset
import deepspeed
# মডেল তৈরি
class SimpleModel(nn.Module):
def __init__(self):
super(SimpleModel, self).__init__()
self.fc1 = nn.Linear(10, 100)
self.relu = nn.ReLU()
self.fc2 = nn.Linear(100, 2)
def forward(self, x):
x = self.relu(self.fc1(x))
return self.fc2(x)
model = SimpleModel()
# DeepSpeed কনফিগারেশন ফাইলের পাথ
ds_config = "ds_config.json"
# অপ্টিমাইজার তৈরি
optimizer = optim.Adam(model.parameters(), lr=1e-4)
# DeepSpeed দিয়ে মডেল এবং অপ্টিমাইজার প্রস্তুত করা
model_engine, optimizer, _, _ = deepspeed.initialize(model=model, optimizer=optimizer, config=ds_config)
# Training ডেটা তৈরি
data = torch.randn(100, 10)
labels = torch.randint(0, 2, (100,))
# ডেটাসেট এবং ডেটা লোডার তৈরি
train_dataset = TensorDataset(data, labels)
train_loader = DataLoader(train_dataset, batch_size=8)
সারসংক্ষেপ
- লাইব্রেরি ইমপোর্ট: PyTorch এবং DeepSpeed ইমপোর্ট।
- কনফিগারেশন ফাইল তৈরি: Training এর জন্য
.jsonকনফিগারেশন ফাইল তৈরি। - অপ্টিমাইজার তৈরি: PyTorch-এর Adam Optimizer ব্যবহার।
- ডেটা লোডার তৈরি: Training ডেটা এবং ডেটা লোডার তৈরি।
এই কনফিগারেশন এবং প্রাথমিক সেটআপের মাধ্যমে DeepSpeed এবং PyTorch-এর সাথে বড় মডেল Training এবং মেমোরি ব্যবস্থাপনা আরও সহজ ও দ্রুত হয়।
Read more