PyTorch Lightning মডেল সেভ এবং পুনরায় লোড করা একটি সহজ এবং কার্যকরী প্রক্রিয়া। এটি মডেলের ট্রেনিং সম্পন্ন হলে সেটিকে সেভ করার এবং পরবর্তী সময়ে ব্যবহারের জন্য পুনরায় লোড করার সুযোগ দেয়। নিচে এই প্রক্রিয়া সম্পর্কে বিস্তারিত আলোচনা করা হলো।
মডেল সেভ করা
PyTorch Lightning-এ মডেল সেভ করার জন্য ModelCheckpoint Callback ব্যবহার করা হয়। এটি স্বয়ংক্রিয়ভাবে সেরা মডেলটি সংরক্ষণ করে।
১. ModelCheckpoint Callback তৈরি করা
from pytorch_lightning.callbacks import ModelCheckpoint
checkpoint_callback = ModelCheckpoint(
monitor='val_loss', # কোন মেট্রিক নিরীক্ষণ করবেন
save_top_k=1, # সেরা 1 মডেল সংরক্ষণ করবেন
mode='min', # কম হলে সেরা হবে
dirpath='checkpoints/', # ফোল্ডারের পাথ
filename='best-model-{epoch:02d}-{val_loss:.2f}' # নামের টেম্পলেট
)
২. Trainer এ Callback যুক্ত করা
from pytorch_lightning import Trainer
trainer = Trainer(callbacks=[checkpoint_callback], max_epochs=10)
মডেল পুনরায় লোড করা
মডেলটি সেভ করার পরে, আপনি পরে সেটি পুনরায় লোড করতে পারেন। PyTorch Lightning-এ মডেল পুনরায় লোড করার জন্য LightningModule.load_from_checkpoint মেথড ব্যবহার করা হয়।
৩. মডেল পুনরায় লোড করার কোড
from my_model import MyModel # আপনার মডেল ক্লাস ইম্পোর্ট করুন
# চেকপয়েন্ট ফাইলের পাথ
checkpoint_path = 'checkpoints/best-model-epoch=00-val_loss=0.23.ckpt'
# মডেল লোড করুন
model = MyModel.load_from_checkpoint(checkpoint_path)
৪. মডেল ব্যবহার করা
একবার মডেলটি লোড হয়ে গেলে, আপনি এটি ইনফারেন্সের জন্য ব্যবহার করতে পারেন।
# ডেটা প্রস্তুত করুন (ধরি input_tensor হলো ইনপুট ডেটা)
input_tensor = torch.randn(1, 10) # উদাহরণস্বরূপ, 10 ডাইমেনশন
# মডেলের মাধ্যমে ইনফারেন্স
model.eval() # মডেলকে ইভ্যালুয়েশন মোডে সেট করুন
with torch.no_grad():
output = model(input_tensor)
print("Output:", output)
উপসংহার
PyTorch Lightning-এ মডেল সেভ এবং পুনরায় লোড করা একটি সহজ এবং কার্যকরী প্রক্রিয়া। ModelCheckpoint ব্যবহার করে মডেলটি স্বয়ংক্রিয়ভাবে সেভ করা যায় এবং load_from_checkpoint মেথডের মাধ্যমে পরে সেটিকে পুনরায় লোড করা যায়। এটি আপনাকে আপনার মডেলের কাজকে অব্যাহত রাখতে এবং পুনরায় ব্যবহার করতে সক্ষম করে।
Read more