Multi-GPU সমর্থন ব্যবহারের মাধ্যমে মডেল প্রশিক্ষণ এবং ডীপ লার্নিং কাজের পারফরম্যান্স অনেকটাই বৃদ্ধি পেতে পারে। বিশেষ করে, যখন ডেটাসেট বিশাল এবং মডেল জটিল, তখন একাধিক GPU ব্যবহার করা মডেল প্রশিক্ষণকে অনেক দ্রুততর এবং দক্ষ করে তোলে। TensorFlow এবং Keras এর মাধ্যমে Multi-GPU সমর্থন কনফিগার করা সহজ এবং এটি আপনার সিস্টেমের সমস্ত GPU একসাথে ব্যবহার করতে সহায়তা করে।
Multi-GPU কনফিগারেশন টুল: TensorFlow MirroredStrategy
TensorFlow এ MirroredStrategy হলো Multi-GPU সমর্থনের জন্য ব্যবহৃত সবচেয়ে জনপ্রিয় কনফিগারেশন। এটি সহজেই একাধিক GPU তে সমান্তরালভাবে মডেল প্রশিক্ষণ করতে সক্ষম।
১. MirroredStrategy ব্যবহারের জন্য প্রস্তুতি:
- CUDA এবং cuDNN ইনস্টলেশন: আপনার সিস্টেমে CUDA এবং cuDNN ইনস্টল থাকতে হবে, যেগুলি NVIDIA GPU এর জন্য প্রয়োজনীয়। আপনার GPU এর জন্য সঠিক CUDA এবং cuDNN সংস্করণ নির্বাচন করুন।
- CUDA এবং cuDNN ডাউনলোড করতে NVIDIA Developer ওয়েবসাইটে যান।
TensorFlow GPU ইনস্টলেশন: Multi-GPU সমর্থন ব্যবহারের জন্য TensorFlow GPU ইনস্টল করা থাকতে হবে।
- TensorFlow GPU ইনস্টল করতে:
pip install tensorflow-gpuGPU যাচাই: আপনার সিস্টেমে GPU সঠিকভাবে কাজ করছে কিনা তা যাচাই করার জন্য, নিম্নলিখিত Python কোডটি চালান:
import tensorflow as tf print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))এটি আপনার সিস্টেমে উপলব্ধ GPU এর সংখ্যা প্রদর্শন করবে।
২. MirroredStrategy ব্যবহার করে Multi-GPU কনফিগারেশন:
MirroredStrategy ব্যবহারের মাধ্যমে, TensorFlow আপনার সমস্ত GPU তে সমান্তরালভাবে মডেল প্রশিক্ষণ করবে। এটি মডেলের প্যারামিটারগুলির একটি কপি প্রতিটি GPU তে রাখে এবং তাদের মধ্যে আপডেটগুলি সমন্বয় করে।
নিচে MirroredStrategy ব্যবহার করার উদাহরণ দেওয়া হয়েছে:
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam
# GPU সনাক্তকরণ
strategy = tf.distribute.MirroredStrategy()
print('Number of devices: {}'.format(strategy.num_replicas_in_sync))
# MirroredStrategy এর মধ্যে মডেল তৈরি করা
with strategy.scope():
model = Sequential([
Dense(64, activation='relu', input_shape=(784,)),
Dense(64, activation='relu'),
Dense(10, activation='softmax')
])
model.compile(loss='sparse_categorical_crossentropy',
optimizer=Adam(),
metrics=['accuracy'])
# ডেটাসেট লোড করা
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
# মডেল প্রশিক্ষণ করা
model.fit(x_train, y_train, epochs=5, batch_size=64)
কোডের ব্যাখ্যা:
- MirroredStrategy তৈরি করা:
tf.distribute.MirroredStrategy()আপনার সিস্টেমে উপলব্ধ সমস্ত GPU গুলিকে সনাক্ত এবং তাদের মধ্যে কাজ ভাগ করে দেয়। - strategy.scope(): মডেল এবং প্রশিক্ষণ কনফিগারেশনগুলো
strategy.scope()এর মধ্যে রাখতে হয়, যাতে এটি সমস্ত GPU তে সমান্তরালভাবে কার্যকর হয়। - model.fit(): প্রশিক্ষণের সময় মডেলটি GPU গুলোর মধ্যে সঠিকভাবে সমান্তরালভাবে প্রশিক্ষিত হবে।
৩. Multiple GPUs তে মডেল প্রশিক্ষণ:
এটি তখন কার্যকরী যখন আপনার সিস্টেমে একাধিক GPU রয়েছে এবং আপনি সেগুলি ব্যবহার করে প্রশিক্ষণ করতে চান। এই কনফিগারেশন স্বয়ংক্রিয়ভাবে GPU গুলোর মধ্যে ভারসাম্য তৈরি করে, ফলে প্রশিক্ষণ দ্রুত হয়।
৪. GPU Allocation কনফিগারেশন (Optional):
আপনি মডেল প্রশিক্ষণের জন্য নির্দিষ্ট GPU allocate করতে পারেন, যদি আপনার সিস্টেমে একাধিক GPU থাকে। উদাহরণস্বরূপ, আপনি চাইলে প্রথম GPU অথবা দ্বিতীয় GPU ব্যবহার করতে পারেন:
physical_devices = tf.config.list_physical_devices('GPU')
tf.config.set_visible_devices(physical_devices[0], 'GPU') # 0 মানে প্রথম GPU, 1 হলে দ্বিতীয় GPU
এটি নির্দিষ্ট GPU তে কাজ করার জন্য TensorFlow কে নির্দেশ দেয়।
৫. কিছু গুরুত্বপূর্ণ বিষয়:
- Batch Size: Multi-GPU ব্যবহারের সময় batch size বাড়ানো উচিত, কারণ প্রতিটি GPU নিজের নিজস্ব batch প্রসেস করবে।
- Overhead: যখন আপনি একাধিক GPU ব্যবহার করেন, তখন কিছু সমন্বয় এবং প্যারামিটার আপডেটের জন্য অতিরিক্ত সময় এবং মেমরি প্রয়োজন হতে পারে। এটি মডেলের প্রশিক্ষণকে কিছুটা ধীর করতে পারে।
- FP16 Training (Mixed Precision): আপনি Mixed Precision Training ব্যবহার করতে পারেন, যাতে মেমরি কম ব্যবহৃত হয় এবং প্রশিক্ষণ দ্রুত হয়। এটি GPU গুলোর কার্যক্ষমতা আরও বাড়ায়।
সারাংশ
Multi-GPU Support কনফিগার করা মডেলের প্রশিক্ষণ প্রক্রিয়াকে দ্রুততর করতে সাহায্য করে, বিশেষ করে বৃহৎ ডেটাসেট এবং জটিল মডেল ট্রেনিংয়ের ক্ষেত্রে। TensorFlow MirroredStrategy সহজেই একাধিক GPU তে মডেল প্রশিক্ষণ করতে সহায়তা করে, এবং এটি আপনার সিস্টেমের সমস্ত GPU গুলোর মধ্যে কাজ ভাগ করে দেয়। CUDA এবং cuDNN ইনস্টল থাকা দরকার, এবং batch size এবং GPU allocation এর মতো কনফিগারেশন গুলি প্রশিক্ষণের সময় সঠিকভাবে সেট করতে হবে।
Read more