5টি ধাপে PyTorch দিয়ে শুরু করা - KDnuggets

5টি ধাপে PyTorch-এর সাথে শুরু করা - KDnuggets

উত্স নোড: 2909439

5টি ধাপে PyTorch দিয়ে শুরু করা

5টি ধাপে PyTorch দিয়ে শুরু করা
 

পাইটর্চ পাইথনের উপর ভিত্তি করে একটি জনপ্রিয় ওপেন-সোর্স মেশিন লার্নিং ফ্রেমওয়ার্ক এবং GPU-এক্সিলারেটেড কম্পিউটিংয়ের জন্য অপ্টিমাইজ করা হয়েছে। মূলত 2016 সালে মেটা এআই দ্বারা বিকাশিত এবং এখন লিনাক্স ফাউন্ডেশনের অংশ, পাইটর্চ গভীর শিক্ষার গবেষণা এবং অ্যাপ্লিকেশনগুলির জন্য দ্রুত বহুল ব্যবহৃত ফ্রেমওয়ার্কগুলির মধ্যে একটি হয়ে উঠেছে।

TensorFlow এর মত কিছু অন্যান্য ফ্রেমওয়ার্কের বিপরীতে, PyTorch ডায়নামিক কম্পিউটেশন গ্রাফ ব্যবহার করে যা বৃহত্তর নমনীয়তা এবং ডিবাগিং ক্ষমতার জন্য অনুমতি দেয়। PyTorch এর মূল সুবিধাগুলির মধ্যে রয়েছে:

  • নিউরাল নেটওয়ার্ক তৈরির জন্য সহজ এবং স্বজ্ঞাত পাইথন API
  • GPU/TPU ত্বরণের জন্য বিস্তৃত সমর্থন
  • স্বয়ংক্রিয় পার্থক্যের জন্য অন্তর্নির্মিত সমর্থন
  • বিতরণ প্রশিক্ষণ ক্ষমতা
  • NumPy-এর মতো অন্যান্য পাইথন লাইব্রেরির সাথে আন্তঃঅপারেবিলিটি

পাইটর্চ লাইটনিং PyTorch-এর উপরে নির্মিত একটি লাইটওয়েট র‍্যাপার যা গবেষকের কর্মপ্রবাহ এবং মডেল ডেভেলপমেন্টের প্রক্রিয়াকে আরও সহজ করে। লাইটনিংয়ের সাহায্যে, ডেটা বিজ্ঞানীরা বয়লারপ্লেট কোডের পরিবর্তে মডেল ডিজাইন করার দিকে বেশি মনোযোগ দিতে পারেন। বজ্রপাতের মূল সুবিধার মধ্যে রয়েছে:

  • PyTorch কোড সংগঠিত করার জন্য কাঠামো প্রদান করে
  • প্রশিক্ষণ লুপ বয়লারপ্লেট কোড পরিচালনা করে
  • হাইপারপ্যারামিটার টিউনিং সহ গবেষণা পরীক্ষাগুলিকে ত্বরান্বিত করে
  • মডেল স্কেলিং এবং স্থাপনা সহজ করে

Lightning এর উচ্চ-স্তরের API-এর সাথে PyTorch-এর শক্তি এবং নমনীয়তা একত্রিত করে, বিকাশকারীরা দ্রুত মাপযোগ্য গভীর শিক্ষার সিস্টেম তৈরি করতে পারে এবং দ্রুত পুনরাবৃত্তি করতে পারে।

PyTorch এবং Lightning ব্যবহার শুরু করতে, আপনাকে প্রথমে কয়েকটি পূর্বশর্ত ইনস্টল করতে হবে:

  • Python 3.6 বা উচ্চতর
  • পিপ প্যাকেজ ইনস্টলার
  • ত্বরিত ক্রিয়াকলাপগুলির জন্য একটি NVidia GPU সুপারিশ করা হয় (সিপিইউ-শুধুমাত্র সেটআপ সম্ভব তবে ধীর)

পাইথন এবং পাইটর্চ ইনস্টল করা হচ্ছে

ডেটা সায়েন্স এবং ডিপ লার্নিং ওয়ার্কলোডের জন্য একটি পাইথন পরিবেশ স্থাপনের জন্য Anaconda ব্যবহার করার পরামর্শ দেওয়া হচ্ছে। নীচের পদক্ষেপগুলি অনুসরণ করুন:

  • থেকে আপনার OS এর জন্য Anaconda ডাউনলোড এবং ইনস্টল করুন এখানে
  • একটি কনডা পরিবেশ তৈরি করুন (বা অন্য পাইথন পরিবেশ ব্যবস্থাপক ব্যবহার করে): conda create -n pytorch python=3.8
  • পরিবেশ সক্রিয় করুন: conda activate pytorch
  • PyTorch ইনস্টল করুন: conda install pytorch torchvision torchaudio -c pytorch

পাইথনে একটি দ্রুত পরীক্ষা চালিয়ে PyTorch সঠিকভাবে ইনস্টল করা হয়েছে তা যাচাই করুন:

import torch
x = torch.rand(3, 3)
print(x)

এটি একটি এলোমেলো 3×3 টেনসর প্রিন্ট করবে, নিশ্চিত করবে যে PyTorch সঠিকভাবে কাজ করছে।

পাইটর্চ লাইটনিং ইনস্টল করা হচ্ছে

PyTorch ইনস্টল করার সাথে, আমরা এখন পাইপ ব্যবহার করে লাইটনিং ইনস্টল করতে পারি:

pip install lightning-ai

আসুন নিশ্চিত করি যে লাইটনিং সঠিকভাবে সেট আপ হয়েছে:

import lightning_ai
print(lightning_ai.__version__)

এটি সংস্করণ নম্বর প্রিন্ট করা উচিত, যেমন 0.6.0.

এখন আমরা গভীর শিক্ষার মডেল তৈরি শুরু করতে প্রস্তুত।

PyTorch এর মূল ডেটা স্ট্রাকচার হিসাবে NumPy অ্যারেগুলির মতো টেনসর ব্যবহার করে। টেনসরগুলি জিপিইউ দ্বারা পরিচালিত হতে পারে এবং নিউরাল নেটওয়ার্ক তৈরির জন্য স্বয়ংক্রিয় পার্থক্য সমর্থন করে।

আসুন চিত্র শ্রেণীবিভাগের জন্য একটি সাধারণ নিউরাল নেটওয়ার্ক সংজ্ঞায়িত করি:

import torch
import torch.nn as nn
import torch.nn.functional as F class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(3, 6, 5) self.pool = nn.MaxPool2d(2, 2) self.conv2 = nn.Conv2d(6, 16, 5) self.fc1 = nn.Linear(16 * 5 * 5, 120) self.fc2 = nn.Linear(120, 84) self.fc3 = nn.Linear(84, 10) def forward(self, x): x = self.pool(F.relu(self.conv1(x))) x = self.pool(F.relu(self.conv2(x))) x = torch.flatten(x, 1) x = F.relu(self.fc1(x)) x = F.relu(self.fc2(x)) x = self.fc3(x) return x net = Net()

এটি 10টি শ্রেণীবদ্ধ করার জন্য দুটি কনভোলিউশনাল স্তর এবং তিনটি সম্পূর্ণভাবে সংযুক্ত স্তর সহ একটি কনভোলিউশনাল নিউরাল নেটওয়ার্ককে সংজ্ঞায়িত করে। দ্য forward() মেথড সংজ্ঞায়িত করে কিভাবে ডেটা নেটওয়ার্কের মধ্য দিয়ে যায়।

আমরা এখন লাইটনিং ব্যবহার করে নমুনা ডেটাতে এই মডেলটিকে প্রশিক্ষণ দিতে পারি।

বজ্রপাত একটি প্রদান করে LightningModule PyTorch মডেল কোড এবং প্রশিক্ষণ লুপ বয়লারপ্লেট এনক্যাপসুলেট করার জন্য ক্লাস। আমাদের মডেল রূপান্তর করা যাক:

import pytorch_lightning as pl class LitModel(pl.LightningModule): def __init__(self): super().__init__() self.model = Net() def forward(self, x): return self.model(x) def training_step(self, batch, batch_idx): x, y = batch y_hat = self.forward(x) loss = F.cross_entropy(y_hat, y) return loss def configure_optimizers(self): return torch.optim.Adam(self.parameters(), lr=0.02) model = LitModel()

সার্জারির training_step() ফরোয়ার্ড পাস এবং ক্ষতি গণনা সংজ্ঞায়িত করে। আমরা শেখার হার 0.02 সহ একটি অ্যাডাম অপ্টিমাইজার কনফিগার করি।

এখন আমরা এই মডেলটিকে সহজেই প্রশিক্ষণ দিতে পারি:

trainer = pl.Trainer()
trainer.fit(model, train_dataloader, val_dataloader)

প্রশিক্ষক epoch looping, বৈধতা, লগিং স্বয়ংক্রিয়ভাবে পরিচালনা করে। আমরা পরীক্ষার ডেটাতে মডেলটি মূল্যায়ন করতে পারি:

result = trainer.test(model, test_dataloader)
print(result)

তুলনা করার জন্য, এখানে বিশুদ্ধ পাইটর্চে নেটওয়ার্ক এবং প্রশিক্ষণ লুপ কোড রয়েছে:

import torch
import torch.nn.functional as F
from torch.utils.data import DataLoader # Assume Net class and train_dataloader, val_dataloader, test_dataloader are defined class Net(torch.nn.Module): # Define your network architecture here pass # Initialize model and optimizer
model = Net()
optimizer = torch.optim.Adam(model.parameters(), lr=0.02) # Training Loop
for epoch in range(10): # Number of epochs for batch_idx, (x, y) in enumerate(train_dataloader): optimizer.zero_grad() y_hat = model(x) loss = F.cross_entropy(y_hat, y) loss.backward() optimizer.step() # Validation Loop
model.eval()
with torch.no_grad(): for x, y in val_dataloader: y_hat = model(x) # Testing Loop and Evaluate
model.eval()
test_loss = 0
with torch.no_grad(): for x, y in test_dataloader: y_hat = model(x) test_loss += F.cross_entropy(y_hat, y, reduction='sum').item()
test_loss /= len(test_dataloader.dataset)
print(f"Test loss: {test_loss}")

বজ্রপাত PyTorch মডেলের বিকাশকে অবিশ্বাস্যভাবে দ্রুত এবং স্বজ্ঞাত করে তোলে।

লাইটনিং হাইপারপ্যারামিটার টিউনিং, ওভারফিটিং প্রতিরোধ এবং মডেল পরিচালনার জন্য অনেক অন্তর্নির্মিত ক্ষমতা প্রদান করে।

হাইপারপ্যারামিটার টিউনিং

আমরা লাইটনিংস ব্যবহার করে শেখার হারের মতো হাইপারপ্যারামিটারগুলি অপ্টিমাইজ করতে পারি tuner মডিউল:

tuner = pl.Tuner(trainer)
tuner.fit(model, train_dataloader)
print(tuner.results)

এটি হাইপারপ্যারামিটার স্থানের উপর একটি বায়েসিয়ান অনুসন্ধান করে।

ওভারফিটিং হ্যান্ডলিং

ড্রপআউট স্তর এবং তাড়াতাড়ি বন্ধ করার মতো কৌশলগুলি ওভারফিটিং কমাতে পারে:

model = LitModel()
model.add_module('dropout', nn.Dropout(0.2)) # Regularization trainer = pl.Trainer(early_stop_callback=True) # Early stopping

মডেল সংরক্ষণ এবং লোড হচ্ছে

বজ্রপাত মডেলগুলি সংরক্ষণ এবং পুনরায় লোড করা সহজ করে তোলে:

# Save
trainer.save_checkpoint("model.ckpt") # Load
model = LitModel.load_from_checkpoint(checkpoint_path="model.ckpt")

এটি সম্পূর্ণ মডেল অবস্থা এবং হাইপারপ্যারামিটার সংরক্ষণ করে।

PyTorch এবং PyTorch Lightning উভয়ই গভীর শিক্ষার জন্য শক্তিশালী লাইব্রেরি, কিন্তু তারা বিভিন্ন উদ্দেশ্যে কাজ করে এবং অনন্য বৈশিষ্ট্যগুলি অফার করে। পাইটর্চ ডিপ লার্নিং মডেল ডিজাইন ও বাস্তবায়নের জন্য ফাউন্ডেশনাল ব্লক প্রদান করে, পাইটর্চ লাইটনিং এর লক্ষ্য হল মডেল প্রশিক্ষণের পুনরাবৃত্তিমূলক অংশগুলিকে সহজ করা, যার ফলে উন্নয়ন প্রক্রিয়াকে ত্বরান্বিত করা।

মূল পার্থক্য

এখানে PyTorch এবং PyTorch লাইটনিংয়ের মধ্যে মূল পার্থক্যগুলির একটি সারসংক্ষেপ রয়েছে:

বৈশিষ্ট্য পাইটর্চ পাইটর্চ লাইটনিং
প্রশিক্ষণ লুপ ম্যানুয়ালি কোডেড অটোমেটেড
বয়লারপ্লেট কোড প্রয়োজনীয় যত্সামান্য
হাইপারপ্যারামিটার টিউনিং ম্যানুয়াল সেটআপ অন্তর্নির্মিত সমর্থন
বিতরণ করা প্রশিক্ষণ উপলব্ধ কিন্তু ম্যানুয়াল সেটআপ অটোমেটেড
কোড সংস্থা নির্দিষ্ট কাঠামো নেই মডুলার ডিজাইনকে উৎসাহিত করে
মডেল সংরক্ষণ এবং লোড হচ্ছে কাস্টম বাস্তবায়ন প্রয়োজন চেকপয়েন্ট দিয়ে সরলীকৃত
ডিবাগ করা উন্নত কিন্তু ম্যানুয়াল বিল্ট-ইন লগ সহ সহজ
GPU/TPU সমর্থন সহজলভ্য আরও সহজ সেটআপ

নমনীয়তা বনাম সুবিধা

PyTorch তার নমনীয়তার জন্য বিখ্যাত, বিশেষ করে গতিশীল গণনা গ্রাফের সাথে, যা গবেষণা এবং পরীক্ষা-নিরীক্ষার জন্য চমৎকার। যাইহোক, এই নমনীয়তা প্রায়শই বেশি বয়লারপ্লেট কোড লেখার খরচে আসে, বিশেষ করে ট্রেনিং লুপ, ডিস্ট্রিবিউটেড ট্রেনিং এবং হাইপারপ্যারামিটার টিউনিংয়ের জন্য। অন্যদিকে, PyTorch Lightning এই বয়লারপ্লেটের অনেক অংশকে বিমূর্ত করে দেয় যখন এখনও প্রয়োজনের সময় নিম্ন-স্তরের PyTorch APIগুলিতে সম্পূর্ণ কাস্টমাইজেশন এবং অ্যাক্সেসের অনুমতি দেয়।

উন্নয়নের গতি

আপনি যদি স্ক্র্যাচ থেকে একটি প্রকল্প শুরু করেন বা জটিল পরীক্ষা-নিরীক্ষা পরিচালনা করেন, পাইটর্চ লাইটনিং আপনার অনেক সময় বাঁচাতে পারে। LightningModule ক্লাস প্রশিক্ষণ প্রক্রিয়াকে স্ট্রীমলাইন করে, লগিং স্বয়ংক্রিয় করে এবং এমনকি বিতরণ করা প্রশিক্ষণকে সহজ করে। এটি আপনাকে আপনার মডেল আর্কিটেকচারে আরও বেশি ফোকাস করতে এবং মডেল প্রশিক্ষণ এবং বৈধতার পুনরাবৃত্তিমূলক দিকগুলিতে কম ফোকাস করতে দেয়।

রায়

সংক্ষেপে, PyTorch আরও দানাদার নিয়ন্ত্রণ অফার করে এবং সেই গবেষকদের জন্য চমৎকার যাদের সেই স্তরের বিশদ প্রয়োজন। PyTorch Lightning, যাইহোক, PyTorch যে শক্তি এবং নমনীয়তা প্রদান করে তা কেড়ে না নিয়ে গবেষণা-থেকে-উৎপাদন চক্রকে মসৃণ এবং দ্রুত করার জন্য ডিজাইন করা হয়েছে। আপনি PyTorch বা PyTorch Lightning বেছে নেবেন কিনা তা আপনার নির্দিষ্ট চাহিদার উপর নির্ভর করবে, কিন্তু ভাল খবর হল যে আপনি সহজেই দুটির মধ্যে স্যুইচ করতে পারেন বা এমনকি আপনার প্রকল্পের বিভিন্ন অংশের জন্য তাদের ব্যবহার করতে পারেন।

এই নিবন্ধে, আমরা গভীর শিক্ষার জন্য PyTorch এবং PyTorch Lightning ব্যবহার করার মৌলিক বিষয়গুলি কভার করেছি:

  • PyTorch নিউরাল নেটওয়ার্ক নির্মাণের জন্য একটি শক্তিশালী এবং নমনীয় কাঠামো প্রদান করে
  • PyTorch Lightning প্রশিক্ষণ এবং মডেল উন্নয়ন কর্মপ্রবাহকে সহজ করে
  • হাইপারপ্যারামিটার অপ্টিমাইজেশান এবং মডেল ম্যানেজমেন্টের মতো মূল বৈশিষ্ট্যগুলি গভীর শিক্ষার গবেষণাকে ত্বরান্বিত করে

এই ফাউন্ডেশনগুলির সাহায্যে আপনি CNN, RNN, GAN এবং আরও অনেক কিছুর মতো উন্নত মডেল তৈরি এবং প্রশিক্ষণ শুরু করতে পারেন। সক্রিয় ওপেন সোর্স সম্প্রদায় লাইটনিং সমর্থন এবং বোল্ট, একটি উপাদান এবং অপ্টিমাইজেশান লাইব্রেরির মতো সংযোজনও অফার করে।

শুভ গভীর শিক্ষা!

 
 
ম্যাথু মায়ো (@mattmayo13) কম্পিউটার বিজ্ঞানে স্নাতকোত্তর ডিগ্রি এবং ডেটা মাইনিংয়ে স্নাতক ডিপ্লোমা রয়েছে। KDnuggets-এর এডিটর-ইন-চীফ হিসাবে, ম্যাথিউ জটিল ডেটা সায়েন্স ধারণাগুলিকে অ্যাক্সেসযোগ্য করে তোলার লক্ষ্য রাখেন। তার পেশাগত আগ্রহের মধ্যে রয়েছে প্রাকৃতিক ভাষা প্রক্রিয়াকরণ, মেশিন লার্নিং অ্যালগরিদম এবং উদীয়মান এআই অন্বেষণ। তিনি ডেটা সায়েন্স সম্প্রদায়ের জ্ঞানকে গণতন্ত্রীকরণের একটি মিশন দ্বারা চালিত। ম্যাথিউ 6 বছর বয়স থেকে কোডিং করছেন।
 

সময় স্ট্যাম্প:

থেকে আরো কেডনুগেটস