Skill

DeepSpeed ইন্সটলেশন এবং সেটআপ

ডিপ স্পিড (DeepSpeed) - Latest Technologies

322

DeepSpeed ইন্সটলেশন এবং সেটআপ

DeepSpeed ইনস্টল ও সেটআপ করা বেশ সহজ এবং এটি PyTorch ভিত্তিক, তাই PyTorch ইন্সটল করা থাকলে DeepSpeed ইন্সটল করা যাবে। DeepSpeed মূলত বড় মডেল Training এবং Distributed Training পরিচালনা করতে ব্যবহৃত হয়। নিচে DeepSpeed ইন্সটল এবং সেটআপ করার ধাপগুলো আলোচনা করা হলো।


ধাপ ১: প্রয়োজনীয় লাইব্রেরি ইন্সটল করা

DeepSpeed ব্যবহার করতে হলে আপনার সিস্টেমে PyTorch ইনস্টল থাকতে হবে। যদি PyTorch ইনস্টল না থাকে, তাহলে প্রথমে PyTorch ইন্সটল করুন।

pip install torch

ধাপ ২: DeepSpeed ইন্সটল করা

DeepSpeed ইনস্টল করার জন্য pip কমান্ড ব্যবহার করা হয়।

pip install deepspeed

এটি সরাসরি PyPI থেকে DeepSpeed লাইব্রেরিটি ইন্সটল করবে।

গুরুত্বপূর্ণ: DeepSpeed ইনস্টল করার সময় নিশ্চিত করুন যে আপনার সিস্টেমে CUDA সমর্থন রয়েছে যদি আপনি GPU ব্যবহার করতে চান।

ধাপ ৩: DeepSpeed কম্পাইলেশন চেক করা (ঐচ্ছিক)

DeepSpeed-এর CUDA অপ্টিমাইজেশন ফিচারগুলো নিশ্চিত করতে কম্পাইলেশন চেক করতে পারেন।

ds_report

এটি আপনার সিস্টেমের CUDA, PyTorch, এবং DeepSpeed-এর কনফিগারেশন রিপোর্ট করবে। এটি বিশেষত GPU ও CUDA-এর সাথে DeepSpeed এর কম্প্যাটিবিলিটি নিশ্চিত করার জন্য গুরুত্বপূর্ণ।

ধাপ ৪: DeepSpeed কনফিগারেশন ফাইল তৈরি করা

DeepSpeed Training-এর জন্য একটি কনফিগারেশন ফাইল প্রয়োজন, যেখানে Training প্যারামিটার এবং অপ্টিমাইজেশন অপশনগুলো উল্লেখ করা থাকে। এই ফাইলটি .json ফরম্যাটে হতে পারে।

{
  "train_batch_size": 16,
  "steps_per_print": 100,
  "fp16": {
    "enabled": true
  },
  "zero_optimization": {
    "stage": 2
  }
}

উদাহরণে:

  • train_batch_size: Training এর জন্য ব্যাচ সাইজ।
  • steps_per_print: প্রতি কত স্টেপ পর Training তথ্য প্রদর্শিত হবে।
  • fp16: Mixed Precision Training সক্ষম করতে enabled: true সেট করা হয়েছে।
  • zero_optimization: ZeRO Optimization স্টেজ ২ ব্যবহার করা হয়েছে, যা বড় মডেল Training-এর মেমোরি খরচ কমায়।

ধাপ ৫: মডেল Training এর জন্য DeepSpeed ব্যবহার

DeepSpeed ব্যবহার করে Training চালানোর জন্য deepspeed কমান্ডটি ব্যবহার করা হয়। উদাহরণ হিসেবে, যদি আপনার Training স্ক্রিপ্ট train.py হয়, তাহলে এটি DeepSpeed দিয়ে চালানো যাবে:

deepspeed train.py --deepspeed_config ds_config.json

এখানে:

  • train.py: আপনার Training স্ক্রিপ্ট।
  • --deepspeed_config ds_config.json: DeepSpeed কনফিগারেশন ফাইল যা Training-এর জন্য প্রয়োজনীয় সেটিংস সরবরাহ করে।

ধাপ ৬: কোডের মধ্যে DeepSpeed ইন্টিগ্রেশন করা

DeepSpeed ব্যবহার করে আপনার কোডে সরাসরি Training চালানো সম্ভব। নিচে PyTorch মডেলের সাথে DeepSpeed ইন্টিগ্রেশন উদাহরণ দেয়া হলো:

import deepspeed
import torch
import torch.nn as nn

# একটি সাধারণ মডেল তৈরি করা
class SimpleModel(nn.Module):
    def __init__(self):
        super(SimpleModel, self).__init__()
        self.linear = nn.Linear(10, 2)

    def forward(self, x):
        return self.linear(x)

model = SimpleModel()

# DeepSpeed কনফিগারেশন ফাইলের পাথ
ds_config = "ds_config.json"

# DeepSpeed দিয়ে মডেল প্রস্তুত করা
model_engine, optimizer, _, _ = deepspeed.initialize(model=model, config=ds_config)

# Training লুপ
for step, batch in enumerate(data_loader):
    outputs = model_engine(batch)
    loss = criterion(outputs, labels)
    model_engine.backward(loss)
    model_engine.step()

সারসংক্ষেপ

  1. PyTorch ইন্সটল করা: PyTorch ইনস্টল করুন যদি না থাকে।
  2. DeepSpeed ইন্সটল করা: pip install deepspeed কমান্ড ব্যবহার।
  3. DeepSpeed কম্পাইলেশন চেক: ds_report দিয়ে কনফিগারেশন চেক।
  4. কনফিগারেশন ফাইল তৈরি: Training প্যারামিটার ও অপ্টিমাইজেশন সেটিংস নির্দিষ্ট করে .json ফাইল তৈরি।
  5. Training স্ক্রিপ্ট চালানো: deepspeed train.py --deepspeed_config ds_config.json ব্যবহার করে Training চালানো।

DeepSpeed ইনস্টলেশন এবং সেটআপ শেষে আপনি বড় মডেল Training এর জন্য একটি দক্ষ পরিবেশ পাবেন, যা GPU ও মেমোরি ব্যবহারে খরচ সাশ্রয়ী ও দ্রুততর হবে।

Content added By

DeepSpeed ইন্সটল করার পদ্ধতি Windows, Linux, এবং macOS-এ কিছুটা ভিন্ন হতে পারে। এখানে প্রতিটি অপারেটিং সিস্টেমে DeepSpeed ইন্সটল করার ধাপগুলো উল্লেখ করা হলো।


১. Linux এ DeepSpeed ইন্সটলেশন

Linux-এ DeepSpeed ইন্সটল করা সবচেয়ে সহজ, কারণ এটি মূলত Linux পরিবেশের জন্য অপ্টিমাইজ করা হয়েছে।

ধাপ ১: PyTorch ইন্সটল করা

DeepSpeed PyTorch-এর ওপর ভিত্তি করে কাজ করে, তাই প্রথমে PyTorch ইন্সটল করতে হবে।

pip install torch torchvision torchaudio

ধাপ ২: CUDA সংস্করণ চেক করা (ঐচ্ছিক)

আপনার GPU যদি CUDA সমর্থন করে, তাহলে nvidia-smi কমান্ড ব্যবহার করে CUDA সংস্করণ চেক করতে পারেন।

ধাপ ৩: DeepSpeed ইন্সটল করা

Linux-এ pip ব্যবহার করে সহজেই DeepSpeed ইন্সটল করা যায়।

pip install deepspeed

ধাপ ৪: DeepSpeed রিপোর্ট চেক করা

DeepSpeed ইনস্টল হয়েছে কিনা তা যাচাই করতে ds_report কমান্ডটি ব্যবহার করা যেতে পারে।

ds_report

২. Windows এ DeepSpeed ইন্সটলেশন

Windows-এ DeepSpeed ইন্সটল করা কিছুটা জটিল হতে পারে, কারণ DeepSpeed Windows পরিবেশে সরাসরি সমর্থন করে না। তবে Windows Subsystem for Linux (WSL) ব্যবহার করে Linux পরিবেশে DeepSpeed চালানো সম্ভব।

পদ্ধতি ১: WSL ব্যবহার করে DeepSpeed ইন্সটল করা

WSL সেটআপ: WSL ইনস্টল করতে নিচের কমান্ডটি PowerShell (Admin) ব্যবহার করে রান করুন।

wsl --install

Ubuntu ইন্সটল করা: WSL এর মাধ্যমে Ubuntu ইন্সটল করুন, তারপর সেটি ওপেন করুন।

PyTorch এবং DeepSpeed ইন্সটল করা: WSL-এর Ubuntu টার্মিনালে Linux-এর মত করে PyTorch এবং DeepSpeed ইন্সটল করুন।

pip install torch torchvision torchaudio
pip install deepspeed

DeepSpeed পরীক্ষা: ds_report কমান্ডটি দিয়ে DeepSpeed রিপোর্ট চেক করুন।

পদ্ধতি ২: Docker ব্যবহার করে DeepSpeed ইন্সটল করা

  1. Docker ইন্সটল করা: প্রথমে Windows এ Docker ইন্সটল করুন।
  2. DeepSpeed Docker Image: DeepSpeed-এর অফিসিয়াল Docker ইমেজ ব্যবহার করে একটি কনটেইনার তৈরি করুন।
docker pull deepspeed/deepspeed
docker run -it deepspeed/deepspeed

৩. macOS এ DeepSpeed ইন্সটলেশন

macOS-এ DeepSpeed ইন্সটল করা সম্ভব হলেও GPU সমর্থনের অভাবের কারণে এটি শুধুমাত্র CPU-এর ওপর কাজ করবে। এটি মডেল Training-এর জন্য তুলনামূলকভাবে কম কার্যকর হতে পারে।

ধাপ ১: PyTorch ইন্সটল করা (CPU ভার্সন)

macOS-এ PyTorch এর CPU ভার্সন ইন্সটল করুন।

pip install torch torchvision torchaudio

ধাপ ২: DeepSpeed ইন্সটল করা

macOS-এ pip ব্যবহার করে DeepSpeed ইনস্টল করা যাবে।

pip install deepspeed

ধাপ ৩: DeepSpeed রিপোর্ট চেক করা (ঐচ্ছিক)

DeepSpeed ইনস্টলেশন সফল হয়েছে কিনা তা নিশ্চিত করতে ds_report কমান্ডটি ব্যবহার করা যেতে পারে।

ds_report

সারসংক্ষেপ

অপারেটিং সিস্টেমইন্সটলেশন পদ্ধতি
Linuxpip install deepspeed ব্যবহার করে সরাসরি ইন্সটলেশন।
Windowsপদ্ধতি ১: WSL (Ubuntu) ব্যবহার করে ইন্সটল করা।
পদ্ধতি ২: Docker ইমেজ ব্যবহার করা।
macOSpip install deepspeed দিয়ে ইন্সটল, তবে এটি শুধুমাত্র CPU-এর ওপর কাজ করবে।

DeepSpeed ইন্সটল শেষে, যেকোনো সিস্টেমে ds_report কমান্ড ব্যবহার করে নিশ্চিত হতে পারেন যে এটি সঠিকভাবে ইন্সটল হয়েছে।

Content added By

Python এবং PyTorch এর সাথে DeepSpeed ইন্টিগ্রেশন বড় মডেল Training এর জন্য সহজেই করা যায়, যা Training স্পিড বৃদ্ধি ও মেমোরি ব্যবস্থাপনা উন্নত করে। DeepSpeed-এর বিভিন্ন ফিচার যেমন ZeRO Optimization, Mixed Precision Training ইত্যাদি PyTorch মডেলের Training প্রক্রিয়ায় সরাসরি যুক্ত করা যায়।

নিচে PyTorch মডেলের সাথে DeepSpeed ইন্টিগ্রেশন করার ধাপগুলো বিস্তারিতভাবে দেখানো হলো।


ধাপ ১: প্রয়োজনীয় লাইব্রেরি ইমপোর্ট করা

DeepSpeed এবং PyTorch লাইব্রেরি ইনস্টল এবং ইমপোর্ট করুন।

import torch
import torch.nn as nn
import deepspeed

ধাপ ২: PyTorch মডেল তৈরি করা

একটি সিম্পল মডেল তৈরি করা হয়েছে, যা DeepSpeed-এর সাথে Training করা হবে।

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 কনফিগারেশন ফাইল তৈরি করা

DeepSpeed Training চালানোর জন্য একটি কনফিগারেশন ফাইল প্রয়োজন, যা JSON ফরম্যাটে থাকবে। এই ফাইলের মাধ্যমে Training-এর বিভিন্ন সেটিংস ও অপ্টিমাইজেশন নির্ধারণ করা হয়।

{
  "train_batch_size": 16,
  "gradient_accumulation_steps": 2,
  "steps_per_print": 100,
  "fp16": {
    "enabled": true
  },
  "zero_optimization": {
    "stage": 2
  }
}

এই কনফিগারেশন ফাইলটির কিছু সেটিংস:

  • train_batch_size: Training-এর জন্য ব্যাচ সাইজ নির্ধারণ।
  • gradient_accumulation_steps: গ্রেডিয়েন্ট একিউমুলেশন স্টেপ সংখ্যা।
  • fp16: Mixed Precision Training সক্রিয় করার জন্য enabled: true
  • zero_optimization: ZeRO Optimization স্টেজ ২, যা মডেল Training এর মেমোরি খরচ কমায়।

ধাপ ৪: DeepSpeed দিয়ে PyTorch মডেল Training এর জন্য প্রস্তুত করা

DeepSpeed দিয়ে মডেল প্রস্তুত করতে deepspeed.initialize ফাংশন ব্যবহার করা হয়। এই ফাংশন মডেল, অপ্টিমাইজার, এবং কনফিগারেশন ফাইলকে একত্রিত করে Training চালানোর জন্য প্রস্তুত করে।

# DeepSpeed কনফিগারেশন ফাইলের পাথ
ds_config = "ds_config.json"

# অপ্টিমাইজার তৈরি করা
optimizer = torch.optim.Adam(model.parameters(), lr=1e-4)

# DeepSpeed দিয়ে মডেল এবং অপ্টিমাইজার প্রস্তুত করা
model_engine, optimizer, _, _ = deepspeed.initialize(model=model, optimizer=optimizer, config=ds_config)

ধাপ ৫: Training ডেটাসেট এবং ডেটা লোডার তৈরি করা

Training ডেটাসেট এবং ডেটা লোডার তৈরি করতে হবে, যাতে মডেল Training চালানো যায়।

from torch.utils.data import DataLoader, TensorDataset

# উদাহরণস্বরূপ 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)

ধাপ ৬: Training লুপ তৈরি করা

Training লুপে মডেল ইনপুট, লস গণনা, এবং অপ্টিমাইজেশন প্রক্রিয়া যুক্ত করতে হবে।

# Training লুপ
for epoch in range(3):  # প্রতিটি ইপক-এ Training
    for step, (batch_data, batch_labels) in enumerate(train_loader):
        # ডেটা মডেলে পাঠানো
        batch_data = batch_data.to(model_engine.local_rank)  # GPU তে পাঠানো
        batch_labels = batch_labels.to(model_engine.local_rank)

        # মডেলের পূর্বাভাস
        outputs = model_engine(batch_data)
        
        # লস গণনা
        loss = nn.CrossEntropyLoss()(outputs, batch_labels)
        
        # গ্রেডিয়েন্ট ব্যাকপ্রোপাগেশন
        model_engine.backward(loss)
        
        # অপ্টিমাইজার আপডেট
        model_engine.step()
        
        # Training তথ্য প্রিন্ট করা
        if step % 10 == 0:
            print(f"Epoch {epoch+1}, Step {step}, Loss: {loss.item()}")

ধাপ ৭: Training চালানো

Training লুপ চালালে মডেল Training শুরু হবে এবং DeepSpeed-এর সাহায্যে Training প্রক্রিয়া দ্রুত ও মেমোরি-সাশ্রয়ী হবে।

সম্পূর্ণ কোড

import torch
import torch.nn as nn
import deepspeed
from torch.utils.data import DataLoader, TensorDataset

# মডেল তৈরি
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 = torch.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)

# Training লুপ
for epoch in range(3):  # প্রতিটি ইপক-এ Training
    for step, (batch_data, batch_labels) in enumerate(train_loader):
        # ডেটা মডেলে পাঠানো
        batch_data = batch_data.to(model_engine.local_rank)
        batch_labels = batch_labels.to(model_engine.local_rank)

        # মডেলের পূর্বাভাস
        outputs = model_engine(batch_data)
        
        # লস গণনা
        loss = nn.CrossEntropyLoss()(outputs, batch_labels)
        
        # গ্রেডিয়েন্ট ব্যাকপ্রোপাগেশন
        model_engine.backward(loss)
        
        # অপ্টিমাইজার আপডেট
        model_engine.step()
        
        # Training তথ্য প্রিন্ট করা
        if step % 10 == 0:
            print(f"Epoch {epoch+1}, Step {step}, Loss: {loss.item()}")

সারসংক্ষেপ

DeepSpeed-এর সাহায্যে PyTorch মডেল Training চালানো খুব সহজ। উপরের উদাহরণে DeepSpeed এর সাথে PyTorch এর ইন্টিগ্রেশন দেখানো হয়েছে:

  1. মডেল ও অপ্টিমাইজার তৈরি করা
  2. DeepSpeed কনফিগারেশন ফাইল ব্যবহার করে Training-এর জন্য DeepSpeed ইন্টিগ্রেট করা
  3. Training লুপে মডেল Training চালানো

DeepSpeed এর সাহায্যে বড় মডেল Training এর সময় কমে যায় এবং মেমোরি ব্যবহারের দক্ষতা বৃদ্ধি পায়।

Content added By

DeepSpeed মডেল training এর জন্য CUDA এবং GPU কনফিগারেশন অত্যন্ত গুরুত্বপূর্ণ কারণ DeepSpeed মূলত GPU তে large-scale distributed training এবং memory optimization এর জন্য ডিজাইন করা হয়েছে। GPU এর computational power এবং CUDA API ব্যবহার করে DeepSpeed মডেল training কে দ্রুত এবং দক্ষতাসম্পন্ন করে তোলে।

DeepSpeed এর সাথে CUDA এবং GPU কনফিগারেশন এর ধাপসমূহ

১. CUDA এবং GPU ড্রাইভার ইনস্টল করা

DeepSpeed ব্যবহার করার জন্য প্রথমে NVIDIA GPU এবং CUDA Toolkit ইনস্টল করা প্রয়োজন।

  • NVIDIA Driver: DeepSpeed সঠিকভাবে কাজ করার জন্য NVIDIA ড্রাইভার ইনস্টল করতে হবে, যা GPU কম্পিউটিং সক্ষম করে।
  • CUDA Toolkit: DeepSpeed CUDA তে নির্ভর করে, তাই নির্দিষ্ট CUDA ভার্সন (যেমন 10.2, 11.0, 11.1) এবং cuDNN ইনস্টল করা প্রয়োজন।
# Ubuntu এ NVIDIA ড্রাইভার ইনস্টল
sudo apt update
sudo apt install nvidia-driver-460

# CUDA Toolkit ইনস্টল
# নিচের লিংক থেকে নির্দিষ্ট CUDA ভার্সনের জন্য ইনস্টলেশন নির্দেশনা অনুসরণ করুন: https://developer.nvidia.com/cuda-toolkit

২. DeepSpeed ইনস্টল করা এবং CUDA কনফিগারেশন নিশ্চিত করা

DeepSpeed ইনস্টল করার আগে CUDA সঠিকভাবে কনফিগার করা হয়েছে কি না, তা নিশ্চিত করতে হবে।

pip install deepspeed

৩. GPU কনফিগারেশন যাচাই করা

DeepSpeed মডেল training এর জন্য GPU সঠিকভাবে কনফিগার হয়েছে কিনা তা যাচাই করা যেতে পারে torch.cuda.is_available() ফাংশন ব্যবহার করে। এটি নিশ্চিত করে যে GPU সিস্টেমে সঠিকভাবে কাজ করছে।

import torch

# GPU কনফিগারেশন যাচাই করা
if torch.cuda.is_available():
    print("CUDA is available. GPU is ready for training.")
else:
    print("CUDA is not available. Please check your GPU configuration.")

৪. DeepSpeed কনফিগারেশন ফাইল সেটআপ করা

DeepSpeed এর জন্য কনফিগারেশন ফাইল তৈরি করতে হয়, যেখানে CUDA এবং GPU সম্পর্কিত বিভিন্ন সেটিংস উল্লেখ করতে হয়। এই কনফিগারেশন ফাইলটি মডেল training এর সময় DeepSpeed কে নির্দেশনা দেয়।

উদাহরণস্বরূপ, একটি DeepSpeed কনফিগারেশন ফাইল:

{
  "train_batch_size": 16,
  "gradient_accumulation_steps": 4,
  "fp16": {
    "enabled": true
  },
  "zero_optimization": {
    "stage": 2
  },
  "optimizer": {
    "type": "Adam",
    "params": {
      "lr": 0.0001
    }
  },
  "scheduler": {
    "type": "WarmupLR",
    "params": {
      "warmup_min_lr": 0,
      "warmup_max_lr": 0.0001,
      "warmup_num_steps": 1000
    }
  }
}

৫. GPU Memory এবং Mixed Precision কনফিগার করা

DeepSpeed মডেল training এর জন্য GPU memory এবং precision configuration করা যায়:

  • FP16 Precision Training: fp16 enabled করে মডেলটিকে mixed precision এ train করানো যায়, যা memory efficiency বৃদ্ধি করে।
  • ZeRO Optimization: zero_optimization enable করে ZeRO optimization ব্যবহার করা যায়, যা মেমোরি কমায় এবং GPU তে বড় মডেল training সহজ করে।
import deepspeed
import torch
import torch.nn as nn
from transformers import GPT2LMHeadModel

# GPT2 মডেল লোড করা
model = GPT2LMHeadModel.from_pretrained("gpt2")

# DeepSpeed কনফিগারেশন ফাইল লোড করা
deepspeed_config = "ds_config.json"

# DeepSpeed ইনিশিয়ালাইজ করা
model_engine, optimizer, _, _ = deepspeed.initialize(
    config=deepspeed_config,
    model=model,
    model_parameters=model.parameters()
)

৬. Multi-GPU Configuration এবং Data Parallelism

DeepSpeed Multi-GPU configuration এবং Data Parallelism সমর্থন করে। একাধিক GPU ব্যবহার করে training প্রক্রিয়া দ্রুততর এবং মেমোরি ব্যবহারে দক্ষ করা যায়। Multi-GPU configuration নিশ্চিত করতে নিচের নির্দেশনা অনুসরণ করা যায়।

deepspeed --num_gpus=4 training_script.py

DeepSpeed এর GPU Configuration এর সুবিধা

  1. High Memory Efficiency: ZeRO Optimization এবং Mixed Precision Training এর মাধ্যমে GPU মেমোরি ব্যবহারে দক্ষতা বাড়ায়।
  2. High Throughput: Multi-GPU এবং Data Parallelism ব্যবহার করে training process এর throughput বৃদ্ধি করা সম্ভব।
  3. Cost-effective Training: CUDA এবং GPU optimization এর ফলে training cost কম হয় এবং training দ্রুততর হয়।
  4. Scalability: DeepSpeed বড় মডেল এবং বড় ডেটাসেটের জন্য সহজে scale করা যায়, যা distributed training কে কার্যকরী করে।

উদাহরণ: DeepSpeed CUDA ও GPU কনফিগারেশনের মাধ্যমে মডেল Training

import deepspeed
import torch
import torch.nn as nn
from transformers import GPT2LMHeadModel, GPT2Tokenizer

# GPT2 মডেল লোড করা
model = GPT2LMHeadModel.from_pretrained("gpt2")
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")

# DeepSpeed কনফিগারেশন ফাইল লোড করা
deepspeed_config = {
    "train_batch_size": 8,
    "fp16": {
        "enabled": True  # Mixed Precision Training
    },
    "zero_optimization": {
        "stage": 2  # ZeRO Optimization
    },
    "optimizer": {
        "type": "Adam",
        "params": {
            "lr": 0.0001
        }
    }
}

# DeepSpeed ইনিশিয়ালাইজ করা এবং GPU তে মডেল পাঠানো
model_engine, optimizer, _, _ = deepspeed.initialize(
    config=deepspeed_config,
    model=model,
    model_parameters=model.parameters()
)

# GPU এ Training Loop
train_dataloader = ...  # DataLoader তৈরি করা হয়েছে ধরে নিচ্ছি
for epoch in range(5):
    for batch in train_dataloader:
        inputs = tokenizer(batch, return_tensors="pt", padding=True)
        inputs = inputs.to(model_engine.local_rank)  # GPU তে ইনপুট লোড

        outputs = model_engine(**inputs)
        loss = outputs.loss

        model_engine.backward(loss)
        model_engine.step()
    
    print(f"Epoch {epoch + 1} completed")

উপসংহার

CUDA এবং GPU কনফিগারেশন DeepSpeed এর সাথে মডেল training এর জন্য অত্যন্ত গুরুত্বপূর্ণ। CUDA ব্যবহার করে DeepSpeed GPU তে মডেলের memory efficiency এবং computation efficiency বাড়ায়, যা বড় মডেল train করতে এবং distributed environment এ training প্রক্রিয়া দ্রুততর করতে সহায়ক। Mixed precision, ZeRO Optimization, এবং Multi-GPU configuration এর মাধ্যমে DeepSpeed training process কে কার্যকর করে তোলে।

Content added By

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)

সারসংক্ষেপ

  1. লাইব্রেরি ইমপোর্ট: PyTorch এবং DeepSpeed ইমপোর্ট।
  2. কনফিগারেশন ফাইল তৈরি: Training এর জন্য .json কনফিগারেশন ফাইল তৈরি।
  3. অপ্টিমাইজার তৈরি: PyTorch-এর Adam Optimizer ব্যবহার।
  4. ডেটা লোডার তৈরি: Training ডেটা এবং ডেটা লোডার তৈরি।

এই কনফিগারেশন এবং প্রাথমিক সেটআপের মাধ্যমে DeepSpeed এবং PyTorch-এর সাথে বড় মডেল Training এবং মেমোরি ব্যবস্থাপনা আরও সহজ ও দ্রুত হয়।

Content added By
Promotion

Are you sure to start over?

Loading...