Hyperparameter tuning হল মেশিন লার্নিং মডেলের পারফরম্যান্স উন্নত করার একটি গুরুত্বপূর্ণ প্রক্রিয়া। এটি মডেলের হাইপারপ্যারামিটারগুলির মান নির্বাচন করার মাধ্যমে করা হয়। PyTorch Lightning ব্যবহার করে Hyperparameter tuning করার জন্য একটি সাধারণ প্রক্রিয়া নিচে বর্ণনা করা হলো, যেখানে আমরা Optuna ব্যবহার করব।
প্রয়োজনীয় লাইব্রেরি ইমপোর্ট করা
প্রথমে প্রয়োজনীয় লাইব্রেরিগুলি ইমপোর্ট করুন।
import pytorch_lightning as pl
import torch
from torch import nn, optim
from torch.utils.data import DataLoader, TensorDataset
import optuna
১. Lightning Module তৈরি করা
Lightning Module তৈরি করতে, আপনাকে pl.LightningModule শ্রেণীকে হেরিটেজ করতে হবে।
class LitModel(pl.LightningModule):
def __init__(self, learning_rate=0.001, hidden_size=64):
super(LitModel, self).__init__()
self.model = nn.Sequential(
nn.Linear(10, hidden_size),
nn.ReLU(),
nn.Linear(hidden_size, 1)
)
self.criterion = nn.MSELoss()
self.learning_rate = learning_rate
def forward(self, x):
return self.model(x)
def training_step(self, batch, batch_idx):
x, y = batch
y_hat = self.forward(x)
loss = self.criterion(y_hat, y)
self.log('train_loss', loss)
return loss
def configure_optimizers(self):
return optim.Adam(self.model.parameters(), lr=self.learning_rate)
২. ডেটাসেট তৈরি করা
একটি কাস্টম ডেটাসেট তৈরি করুন এবং DataLoader ব্যবহার করুন।
# ডেটা তৈরি করা
x_train = torch.randn(1000, 10) # 1000 টির মধ্যে 10টি বৈশিষ্ট্য
y_train = torch.randn(1000, 1) # লক্ষ্য পরিবর্তনশীল
train_dataset = TensorDataset(x_train, y_train)
train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True)
৩. Optuna সেটআপ করা
Optuna ব্যবহার করে হাইপারপ্যারামিটার টিউনিং করতে নিচের কোডটি ব্যবহার করুন।
def objective(trial):
# হাইপারপ্যারামিটার সংজ্ঞায়িত করা
learning_rate = trial.suggest_loguniform('learning_rate', 1e-5, 1e-1)
hidden_size = trial.suggest_int('hidden_size', 32, 128)
# Lightning model তৈরি
model = LitModel(learning_rate=learning_rate, hidden_size=hidden_size)
# Trainer সেটআপ
trainer = pl.Trainer(max_epochs=10, logger=False)
# মডেল প্রশিক্ষণ
trainer.fit(model, train_loader)
# ভ্যালিডেশন লস রিটার্ন করুন
return trainer.callback_metrics['train_loss'].item()
৪. Hyperparameter Tuning শুরু করা
Optuna স্টাডি তৈরি করুন এবং টিউনিং শুরু করুন।
# Optuna স্টাডি তৈরি
study = optuna.create_study(direction='minimize')
study.optimize(objective, n_trials=20) # 20টি ট্রায়াল চালান
# সেরা হাইপারপ্যারামিটার এবং মেট্রিক্স প্রিন্ট করা
print("Best hyperparameters: ", study.best_params)
print("Best trial value: ", study.best_value)
৫. সেরা মডেল প্রশিক্ষণ
সেরা হাইপারপ্যারামিটার ব্যবহার করে মডেল পুনরায় প্রশিক্ষণ দিন।
# সেরা হাইপারপ্যারামিটার থেকে মডেল তৈরি করুন
best_model = LitModel(learning_rate=study.best_params['learning_rate'],
hidden_size=study.best_params['hidden_size'])
# পুনরায় প্রশিক্ষণ
trainer = pl.Trainer(max_epochs=10)
trainer.fit(best_model, train_loader)
উপসংহার
এই নির্দেশিকাগুলি অনুসরণ করে, আপনি PyTorch Lightning এবং Optuna ব্যবহার করে একটি কার্যকরী Hyperparameter tuning প্রক্রিয়া তৈরি করতে পারেন। এই পদ্ধতি ব্যবহার করে, আপনি আপনার মডেলের পারফরম্যান্স বৃদ্ধি করতে পারবেন এবং মডেলের জন্য সেরা হাইপারপ্যারামিটার নির্বাচন করতে পারবেন।
Read more