چرا راهاندازی سرور GPU برای مدلهای هوش مصنوعی حیاتی است؟
اجرای مدلهای یادگیری عمیق روی CPU نهتنها کند است، بلکه برای مدلهای مدرن با میلیاردها پارامتر عملاً غیرممکن میشود. یک سرور GPU مجهز میتواند زمان آموزش یک مدل را از چند هفته به چند ساعت کاهش دهد. اما خرید یا اجاره سختافزار تنها بخش ماجراست؛ نصب صحیح درایور، CUDA Toolkit و کتابخانههای مرتبط، تعیینکننده موفقیت شماست. در این مقاله، مسیر کامل راهاندازی یک سرور GPU را از لحظهای که به سیستم دسترسی دارید تا اجرای اولین بار کاری، با جزئیات فنی و مثالهای واقعی دنبال میکنیم.
پیشنیازها و بررسی سختافزار
قبل از هر اقدامی، باید مطمئن شوید GPU شما توسط سیستمعامل شناسایی میشود و درایور مناسبی دارد. اگر از سرور ابری استفاده میکنید (مثلاً سرویسهای ابری ServerNet که امکان اجاره سرور GPU را فراهم میکنند)، معمولاً یک تصویر از پیش پیکربندیشده دریافت میکنید. اما اگر سرور اختصاصی دارید، مراحل زیر را دنبال کنید.
شناسایی GPU در لینوکس
بیشتر سرورهای GPU با اوبونتو ۲۰.۰۴ یا ۲۲.۰۴ LTS کار میکنند. ابتدا با دستور زیر بررسی کنید که GPU توسط سیستم شناسایی شده است:
lspci | grep -i nvidia
خروجی باید چیزی شبیه به این باشد:
01:00.0 3D controller: NVIDIA Corporation GA102 [GeForce RTX 3080] (rev a1)
اگر خروجی خالی بود، احتمالاً GPU به درستی در اسلات PCIe قرار نگرفته یا در BIOS غیرفعال است. در سرورهای ابری، این مرحله معمولاً انجام شده است.
بررسی درایور فعلی
برای مشاهده نسخه درایور نصبشده (در صورت وجود) از دستور زیر استفاده کنید:
nvidia-smi
اگر این دستور کار نکرد، یعنی درایور نصب نیست یا به درستی پیکربندی نشده است. خروجی موفق باید شامل نام GPU، نسخه درایور و نسخه CUDA (که معمولاً با درایور همراه است) باشد.
اشتباه رایج: بسیاری از کاربران تصور میکنند نصب CUDA Toolkit بهتنهایی کافی است. اما CUDA Toolkit بدون درایور مناسب کار نمیکند. درایور و CUDA دو لایه جداگانه هستند که باید با هم سازگار باشند.
نصب درایور انویدیا
دو روش اصلی برای نصب درایور وجود دارد: استفاده از مخزن رسمی انویدیا یا مخزن اوبونتو. روش اول توصیه میشود چون نسخه جدیدتری ارائه میدهد.
روش ۱: نصب از مخزن رسمی انویدیا
ابتدا مخزن رسمی را اضافه کنید:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
سپس نسخه درایور مناسب را نصب کنید. برای پیدا کردن آخرین نسخه پایدار، میتوانید جستجو کنید:
apt search nvidia-driver | grep -E '^nvidia-driver-[0-9]+'
خروجی معمولاً شامل نسخههایی مثل nvidia-driver-535 یا nvidia-driver-545 است. نسخه ۵۳۵ یا بالاتر را نصب کنید:
sudo apt install nvidia-driver-535
پس از نصب، سیستم را ریبوت کنید:
sudo reboot
روش ۲: نصب از مخزن اوبونتو
اگر روش بالا به هر دلیلی شکست خورد، میتوانید از مخزن پیشفرض استفاده کنید:
sudo apt install nvidia-driver-535-server
این نسخه برای سرورها بهینه شده و پایداری بیشتری دارد.
تأیید نصب درایور
پس از ریبوت، دوباره دستور nvidia-smi را اجرا کنید. خروجی باید شامل جدولی با مشخصات GPU و نسخه درایور باشد. اگر خطای NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver دریافت کردید، یعنی درایور به درستی بارگذاری نشده است. در این حالت، لاگها را بررسی کنید:
dmesg | grep -i nvidia
نکته عیبیابی: اگر Secure Boot فعال باشد، ممکن است درایور امضا نشده و بارگذاری نشود. در BIOS گزینه Secure Boot را غیرفعال کنید یا درایور را با کلید MOK امضا کنید.
نصب CUDA Toolkit
CUDA Toolkit شامل کامپایلر nvcc، کتابخانههای runtime و ابزارهای توسعه است. نسخه CUDA باید با نسخه درایور سازگار باشد. به عنوان مثال، درایور ۵۳۵ از CUDA 12.2 پشتیبانی میکند.
دانلود و نصب CUDA
به صفحه رسمی CUDA Toolkit مراجعه کنید و نسخه مناسب سیستمعامل خود را انتخاب کنید. برای اوبونتو ۲۲.۰۴، دستورات زیر را اجرا کنید:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update
sudo apt install cuda-toolkit-12-2
پس از نصب، مسیرهای CUDA را به متغیرهای محیطی اضافه کنید. این کار را با ویرایش فایل ~/.bashrc انجام دهید:
echo 'export PATH=/usr/local/cuda-12.2/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
تأیید نصب CUDA
نسخه CUDA را بررسی کنید:
nvcc --version
خروجی باید شامل نسخهای مثل Cuda compilation tools, release 12.2, V12.2.140 باشد.
نصب cuDNN برای بهینهسازی
cuDNN (CUDA Deep Neural Network library) شتابدهندهای برای عملیات شبکههای عصبی است. بدون آن، فریمورکهایی مثل TensorFlow و PyTorch از پیادهسازیهای کندتر استفاده میکنند.
نصب cuDNN
برای نصب cuDNN باید در سایت انویدیا ثبتنام کنید و فایلهای مناسب را دانلود کنید. پس از دانلود، مراحل زیر را انجام دهید:
tar -xzvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
sudo cp cudnn-linux-x86_64-8.9.7.29_cuda12-archive/include/cudnn*.h /usr/local/cuda-12.2/include/
sudo cp -P cudnn-linux-x86_64-8.9.7.29_cuda12-archive/lib/libcudnn* /usr/local/cuda-12.2/lib64/
sudo chmod a+r /usr/local/cuda-12.2/include/cudnn*.h /usr/local/cuda-12.2/lib64/libcudnn*
برای تأیید نصب، نسخه cuDNN را چک کنید:
cat /usr/local/cuda-12.2/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
نصب فریمورکهای یادگیری عمیق
حالا که درایور، CUDA و cuDNN آماده هستند، نوبت به نصب فریمورک میرسد. PyTorch و TensorFlow دو گزینه اصلی هستند.
نصب PyTorch با پشتیبانی CUDA
برای نصب PyTorch با CUDA 12.1 (که با CUDA 12.2 سازگار است)، از دستور زیر استفاده کنید:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
تأیید کنید که PyTorch GPU را میبیند:
python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"
خروجی باید True و نام GPU شما باشد.
نصب TensorFlow با پشتیبانی CUDA
برای TensorFlow، نسخه ۲.۱۵ به بعد بهصورت پیشفرض از CUDA 12 پشتیبانی میکند:
pip install tensorflow
تأیید نصب:
python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
اجرای اولین بار کاری
برای اطمینان از اینکه همه چیز به درستی کار میکند، یک بار کاری ساده اجرا کنید. یک فایل به نام test_gpu.py با محتوای زیر بسازید:
import torch
import time
# بررسی دسترسی به GPU
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(f"Using device: {device}")
# ایجاد یک تنسور بزرگ و انجام عملیات ماتریسی
a = torch.randn(10000, 10000, device=device)
b = torch.randn(10000, 10000, device=device)
start = time.time()
c = torch.matmul(a, b)
torch.cuda.synchronize()
end = time.time()
print(f"Matrix multiplication time: {end - start:.4f} seconds")
print(f"Result shape: {c.shape}")
اجرا کنید:
python test_gpu.py
اگر همه چیز درست باشد، خروجی شامل زمان محاسبه و شکل ماتریس خواهد بود. این زمان باید بسیار کمتر از اجرای مشابه روی CPU باشد.
عیبیابی مشکلات رایج
خطای CUDA out of memory
این خطا زمانی رخ میدهد که حافظه GPU پر است. راهحلها:
- کاهش اندازه batch در آموزش مدل
- استفاده از
torch.cuda.empty_cache()برای آزادسازی حافظه کش - استفاده از mixed precision training با
torch.cuda.amp
عدم شناسایی GPU توسط PyTorch
اگر torch.cuda.is_available() مقدار False برگرداند، احتمالاً نسخه PyTorch با CUDA نصبشده سازگار نیست. نسخه PyTorch را بررسی کنید:
python -c "import torch; print(torch.__version__)"
اگر نسخه با +cpu تمام شود، یعنی نسخه CPU نصب شده است. باید نسخه CUDA را نصب کنید.
کاهش عملکرد GPU
اگر GPU کار میکند اما عملکرد پایینی دارد، موارد زیر را بررسی کنید:
- دمای GPU: با
nvidia-smiدما را چک کنید. اگر بالای ۸۵ درجه سانتیگراد است، خنککنندگی را بهبود دهید. - مصرف برق: مطمئن شوید GPU در حالت حداکثر عملکرد است:
nvidia-smi -pm 1 - استفاده از PCIe Gen4: اگر مادربرد و GPU از PCIe Gen4 پشتیبانی میکنند، مطمئن شوید در BIOS فعال است.
جمعبندی
راهاندازی سرور GPU برای مدلهای هوش مصنوعی فرآیندی چندمرحلهای است که نیازمند دقت در نصب درایور، CUDA و cuDNN است. با دنبال کردن مراحل این مقاله، میتوانید یک محیط پایدار و بهینه برای آموزش و اجرای مدلهای خود ایجاد کنید. به یاد داشته باشید که همیشه نسخههای CUDA و درایور را با یکدیگر سازگار نگه دارید و قبل از اجرای پروژههای سنگین، عملکرد GPU را با یک بار کاری آزمایشی بررسی کنید. اگر به دنبال زیرساخت ابری با GPU هستید، سرویسهای ابری ServerNet میتوانند گزینه مناسبی برای شروع کار باشند، اما انتخاب نهایی به نیازهای محاسباتی و بودجه شما بستگی دارد.