Transformer ভিত্তিক মডেল তৈরি করার জন্য Amazon SageMaker এবং PyTorch এর মতো টুলস ও ফ্রেমওয়ার্ক ব্যবহার করে সহজেই একটি NLP মডেল তৈরি করা যায়। নিচে Transformer ভিত্তিক একটি মডেল তৈরি এবং ট্রেনিংয়ের প্রক্রিয়া উদাহরণসহ ব্যাখ্যা করা হলো।
উদাহরণ: Transformer ভিত্তিক ভাষা মডেল তৈরি (PyTorch এবং SageMaker)
এখানে, আমরা PyTorch এবং Amazon SageMaker ব্যবহার করে একটি ছোট Transformer মডেল তৈরি করব, যা একটি ভাষার টোকেনগুলির মধ্যে সম্পর্ক শিখতে সক্ষম। এই উদাহরণে, আমরা একটি বেসিক ভাষা মডেল তৈরি করছি যা একটি ইনপুট বাক্য নিতে এবং পরবর্তী শব্দ প্রেডিক্ট করতে সক্ষম হবে।
Step 1: প্রয়োজনীয় লাইব্রেরি ইনস্টল এবং ইম্পোর্ট
# যদি আপনার SageMaker নোটবুকে প্রয়োজনীয় লাইব্রেরি না থাকে, তাহলে ইনস্টল করুন
!pip install torch transformers boto3 sagemaker
Step 2: Transformer মডেল তৈরি (মডেল আর্কিটেকচার)
import torch
import torch.nn as nn
from transformers import BertTokenizer, BertModel
class TransformerLanguageModel(nn.Module):
def __init__(self, model_name="bert-base-uncased"):
super(TransformerLanguageModel, self).__init__()
self.tokenizer = BertTokenizer.from_pretrained(model_name)
self.bert_model = BertModel.from_pretrained(model_name)
self.fc = nn.Linear(self.bert_model.config.hidden_size, self.bert_model.config.vocab_size)
def forward(self, input_text):
inputs = self.tokenizer(input_text, return_tensors="pt", padding=True, truncation=True)
outputs = self.bert_model(**inputs)
logits = self.fc(outputs.last_hidden_state)
return logits
এই কোডে:
- BertTokenizer: ইনপুট টেক্সট টোকেনাইজ করে, যা মডেল ট্রেনিংয়ের জন্য টোকেন হিসেবে কাজ করে।
- BertModel: BERT মডেল লোড করে, যা Transformer আর্কিটেকচারে তৈরি।
- Linear Layer: মডেল আউটপুটকে শব্দের সম্ভাব্যতার স্কোরে রূপান্তর করে।
Step 3: SageMaker এ মডেল ট্রেনিং স্ক্রিপ্ট তৈরি করা (train.py)
Amazon SageMaker-এ মডেল ট্রেনিং করতে হলে train.py নামে একটি ট্রেনিং স্ক্রিপ্ট তৈরি করতে হবে। এই ট্রেনিং স্ক্রিপ্টে আমরা ডেটা লোড, ট্রেনিং লুপ এবং SageMaker এর ইনপুট/আউটপুট সংজ্ঞায়িত করব।
# train.py
import argparse
import os
import torch
from torch.utils.data import DataLoader
from transformers import AdamW
from transformers import get_linear_schedule_with_warmup
from torch.optim import Adam
from torch.nn import CrossEntropyLoss
from transformers import BertTokenizer
from model import TransformerLanguageModel # আমাদের মডেল
def main():
# Argument parsing
parser = argparse.ArgumentParser()
parser.add_argument('--epochs', type=int, default=3)
parser.add_argument('--batch-size', type=int, default=32)
args = parser.parse_args()
# মডেল, লস ফাংশন, এবং অপ্টিমাইজার সেটআপ
model = TransformerLanguageModel()
criterion = CrossEntropyLoss()
optimizer = AdamW(model.parameters(), lr=2e-5)
# ডেটা লোডার তৈরি
train_loader = DataLoader(...) # আপনার ডেটাসেট উল্লেখ করুন
# ট্রেনিং লুপ
for epoch in range(args.epochs):
model.train()
total_loss = 0
for batch in train_loader:
input_text = batch["text"] # ডেটা ফরম্যাট অনুযায়ী পরিবর্তন করুন
labels = batch["labels"]
optimizer.zero_grad()
logits = model(input_text)
loss = criterion(logits.view(-1, model.bert_model.config.vocab_size), labels.view(-1))
loss.backward()
optimizer.step()
total_loss += loss.item()
print(f"Epoch {epoch+1}/{args.epochs}, Loss: {total_loss / len(train_loader)}")
if __name__ == "__main__":
main()
Step 4: SageMaker ট্রেনিং শুরু করা
SageMaker ব্যবহার করে আমরা এই ট্রেনিং স্ক্রিপ্টটিকে ট্রেনিং এ চালাতে পারি। SageMaker PyTorch Estimator ব্যবহার করে আমরা train.py ফাইলটি SageMaker এ সাবমিট করতে পারি।
import sagemaker
from sagemaker.pytorch import PyTorch
# SageMaker সেশন এবং রোল
sagemaker_session = sagemaker.Session()
role = "your-sagemaker-role"
# SageMaker PyTorch Estimator সেটআপ
pytorch_estimator = PyTorch(
entry_point="train.py",
source_dir=".",
role=role,
instance_count=1,
instance_type="ml.p3.2xlarge",
framework_version="1.8.1",
py_version="py3",
hyperparameters={
"epochs": 3,
"batch-size": 16
}
)
# ট্রেনিং শুরু
pytorch_estimator.fit()
Step 5: মডেল ডিপ্লয়মেন্ট এবং Inference
ট্রেনিং সম্পন্ন হলে, SageMaker Endpoints ব্যবহার করে মডেলটি ডিপ্লয় করতে পারি এবং ইনফারেন্সের জন্য ব্যবহার করতে পারি।
# মডেল ডিপ্লয়মেন্ট
predictor = pytorch_estimator.deploy(
initial_instance_count=1,
instance_type="ml.m5.large"
)
# ইনফারেন্স
response = predictor.predict("The quick brown fox jumps over the")
print(response)
Step 6: মডেল মনিটরিং এবং টিউনিং
ট্রেনিং শেষে SageMaker Model Monitor ব্যবহার করে মডেল পারফরম্যান্স এবং ড্রিফট ট্র্যাক করতে পারি। SageMaker Hyperparameter Tuning করে মডেল পারফরম্যান্সের উন্নতি করতে পারি।
সংক্ষেপে
এই উদাহরণে Amazon SageMaker এবং PyTorch ব্যবহার করে Transformer ভিত্তিক একটি NLP মডেল তৈরি, ট্রেনিং এবং ডিপ্লয়মেন্টের জন্য ধাপসমূহ ব্যাখ্যা করা হয়েছে। SageMaker এর সুবিধা এবং PyTorch এর ফ্লেক্সিবিলিটি একত্রিত করে একটি কার্যকরী LLM ট্রেনিং এবং ডিপ্লয়মেন্ট প্রক্রিয়া তৈরি করা যায়।
Read more