راه‌اندازی و پیکربندی پیشرفته سرور هوش مصنوعی

راه‌اندازی و پیکربندی پیشرفته سرور هوش مصنوعی

فهرست مطالب

راه‌‌اندازی و پیکربندی پیشرفته سرور هوش مصنوعی

کلمهٔ کلیدی اصلی: راه‌اندازی سرور هوش مصنوعی کلمات کلیدی (تگ‌ها): هوش مصنوعی، راه‌‌اندازی سرور، پیکربندی سرور، GPU سرور، کانتینرسازی، Docker AI، Kubernetes، نصب CUDA، تنظیم شبکه، امنیت سرور، مجازی‌سازی، لینوکس AI، به‌روز‌رسانی سیستم، مدیریت منابع، شتاب‌دهی سخت‌افزاری, آموزش مدل‌های AI, مانیتورینگ, Dorfakit IT, Dorfakit.ir

Abstract: در این مقالهٔ جامع و تخصصی، از انتخاب سخت‌افزار و توزیع لینوکس تا نصب درایور GPU، پیکربندی ابزارهای یادگیری عمیق، کانتینرسازی با Docker و ارکستراسیون با Kubernetes، امنیت، مانیتورینگ و بهینه‌سازی عملکرد سرور هوش مصنوعی را گام‌به‌گام شرح می‌دهیم. مثال‌های عملی، نکات حرفه‌ای و اسکریپت‌های مفید هر فصل را همراهی می‌کند. همچنین به خدمات مشاوره‌ای درفک IT در Dorfakit.ir اشاره شده است.

1. مقدمه

قبل از هر اقدامی، باید بدانید چرا امروزه زیرساخت‌های اختصاصی هوش مصنوعی یک ضرورت است. حجم داده‌ها و پیچیدگی مدل‌ها به سرعت رشد می‌کند و اگر از ابتدا طراحی سرور بهینه نباشد، هزینه و زمان زیادی هدر می‌رود. یک سرور AI باید کارایی بالا، قابلیت مقیاس‌پذیری و امنیت را به طور همزمان فراهم آورد تا تیم تحقیق و توسعه بدون دغدغهٔ منابع، روی مدل‌های خود تمرکز کند.

در این فصل، جریان کلی مقاله را ترسیم می‌کنیم: از انتخاب سخت‌افزار مناسب گرفته تا استقرار پروژه‌های عملی و دریافت مشاوره در Dorfakit.ir. . هر فصل با مقدمه‌ای کوتاه آغاز و سپس جزییات فنی، دستورالعمل‌ها و مثال‌های واقعی ارائه می‌شود تا بتوانید با مطالعهٔ کامل این راهنما، یک سرور AI استاندارد بسازید.

2. پیش‌نیازها

قبل از شروع هر مرحله، چک‌لیستی از تجهیزات و نرم‌افزارهای مورد نیاز خود تهیه کنید تا در میانهٔ کار به مشکل نخورید.

2.1 سخت‌افزار

۱. CPU: پردازنده‌های چند هسته‌ای (۸ هسته به بالا) با پشتیبانی از مجازی‌سازی (VT-x/AMD-V). ۲. GPU: کارت‌های NVIDIA A100/V100 یا RTX۳۰۸۰/۳۰۹۰ با حداقل ۱۶–۲۴ گیگابایت حافظهٔ گرافیکی. ۳. RAM: حداقل ۶۴ گیگابایت؛ برای پروژه‌های بزرگ‌تر ۱۲۸ یا ۲۵۶ گیگابایت. ۴. ذخیره‌سازی:

  • SSD NVMe 1 ترابایت برای سیستم‌عامل و کانتینرها
  • SSD/Optane برای داده‌های آموزش
  • HDD یا NAS با RAID6 برای بکاپ ۵. شبکه: کارت شبکه ۱۰/۲۵/۴۰ گیگابیت با قابلیت RDMA یا SR-IOV.

2.2 نرم‌افزار

۱. توزیع لینوکس سرور: اوبونتو ۲۲.۰۴ LTS یا Rocky Linux ۹ ۲. درایور NVIDIA مطابق با نسخهٔ CUDA ۳. CUDA Toolkit نسخهٔ سازگار با TensorFlow/PyTorch ۴. Docker Engine و NVIDIA Container Toolkit ۵. Kubernetes (kubeadm, kubectl, kubelet) ۶. Python 3.9+ و Conda/virtualenv ۷. ابزارهای مانیتورینگ: Prometheus, Grafana ۸. ابزارهای لاگ‌برداری: ELK Stack (Elasticsearch, Logstash, Kibana)

2.3 شبکه

  • آی‌پی استاتیک یا DHCP رزروشده
  • سوییچ با پشتیبانی از VLAN و QoS
  • لینک uplink حداقل ۱۰ گیگابیت برای خوشه‌های GPU
  • دسترسی VPN یا SSH Bastion

3. طراحی و انتخاب سخت‌افزار

در این فصل با یک مثال واقعی، روند تصمیم‌گیری برای خرید سخت‌افزار را نشان می‌دهیم.

فرض کنید قصد دارید مدل‌های BERT را با بار ۱۰۰۰ درخواست همزمان روی سرور استقرار دهید. تست‌های اولیه CPU-only حدود 2 ثانیه latency نشان می‌دهد؛ اما با یک GPU A100 latency به 200 میلی‌ثانیه سقوط می‌کند. برای نگه‌داری حاشیهٔ ایمنی، سه کارت A100 پیشنهاد می‌شود.

۱. مقایسه CPU:

معیارAMD EPYC 7763Intel Xeon Gold 6338
هسته‌ها6432
فرکانس پایه2.45 GHz2.0 GHz
کش L3256 MB48 MB
TDP280 W205 W
قیمت7,000 دلار4,500 دلار

۲. انتخاب GPU:

  • A100: 40–80GB، MIG، high-end
  • V100: 16–32GB، مناسب research
  • RTX3090: 24GB، budget-friendly

۳. ذخیره‌سازی:

  • SSD NVMe برای OS
  • Optane لبه‌های سرعت I/O بالا
  • CephFS برای دسترسی توزیع‌شده

۴. خنک‌سازی:

  • Liquid Cooling برای TDP بالا
  • مدیریت کابل‌بندی رک برای airflow
  • UPS و PDU با مانیتورینگ

4. نصب سیستم‌عامل و پیکربندی لینوکس

۱. آماده‌سازی USB بوت:

sudo dd if=ubuntu-22.04-live-server-amd64.iso of=/dev/sdX bs=4M status=progress

۲. تنظیمات BIOS/UEFI:

  • فعال‌سازی VT-x یا AMD-V
  • فعال‌سازی SR-IOV برای کارت شبکه
  • Secure Boot (به‌دلخواه) ۳. نصب اوبونتو ۲۲.۰۴ Server:
  • زبان و منطقه
  • شبکه (استاتیک یا DHCP)
  • پارتیشن‌بندی با LVM:
    • /boot: 1GB ext4
    • /: 50GB XFS
    • swap: برابر با RAM
    • /home: باقی‌مانده ۴. پیکربندی اولیه:
sudo apt update && sudo apt upgrade -y
sudo apt install -y tmux htop git ufw fail2ban

۵. تنظیمات اتصال SSH:

sudo ufw allow ssh
sudo ufw enable

5. نصب درایورهای GPU و CUDA

5.1 حذف نسخه‌های قدیمی

sudo apt remove --purge '^nvidia-.*'
sudo apt autoremove -y

5.2 افزودن مخازن NVIDIA

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/7fa2af80.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /"
sudo apt update

5.3 نصب درایور و CUDA

sudo apt install -y nvidia-driver-525 cuda-toolkit-11-7

5.4 تنظیم متغیرهای محیطی

در /etc/profile.d/cuda.sh اضافه کنید:

export PATH=/usr/local/cuda-11.7/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64:$LD_LIBRARY_PATH

سپس:

source /etc/profile.d/cuda.sh
nvidia-smi

5.5 تست عملکرد

یک مثال C ساده با nvcc کامپایل و اجرا کنید تا کارکرد صحیح GPU و CUDA تأیید شود.

6. نصب و پیکربندی کتابخانه‌های AI

6.1 مدیریت محیط با Conda

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
conda create -n ai_env python=3.9 -y
conda activate ai_env

6.2 فایل محیط (environment.yml)


6.3 نصب با pip


6.4 مثال تست JupyterLab

۱. راه‌اندازی JupyterLab با jupyter lab --ip=0.0.0.0 --port=8888 ۲. بارگذاری مدل ResNet50 و اجرای inference روی یک تصویر sample ۳. نمایش دقت و زمان اجرای مدل برای اطمینان از عملکرد GPU

7. کانتینرسازی با Docker

7.1 نصب Docker

sudo apt install -y docker.io
sudo systemctl enable --now docker
sudo usermod -aG docker $USER

7.2 نصب NVIDIA Container Toolkit

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list \
  | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt update && sudo apt install -y nvidia-docker2
sudo systemctl restart docker

7.3 نمونه Dockerfile

FROM nvidia/cuda:11.7.0-runtime-ubuntu22.04
RUN apt-get update && apt-get install -y python3 python3-pip git \
    && rm -rf /var/lib/apt/lists/*
COPY requirements.txt /app/
WORKDIR /app
RUN pip3 install --upgrade pip && pip3 install -r requirements.txt
COPY . /app
CMD ["python3", "app.py"]

7.4 Build & Run

docker build -t ai-app:latest .
docker run --gpus all -d -p 8888:8888 ai-app:latest

8. ارکستراسیون با Kubernetes

8.1 نصب ابزارها

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg \
  | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" \
  | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

8.2 ایجاد خوشه

sudo kubeadm init --pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube && sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

اعمال شبکهٔ Flannel:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

8.3 افزودن NVIDIA Device Plugin

kubectl apply -f \
  https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.13.0/nvidia-device-plugin.yml

8.4 نمونه Pod با GPU

apiVersion: v1
kind: Pod
metadata:
  name: gpu-test
spec:
  containers:
  - name: cuda-container
    image: nvidia/cuda:11.7.0-base
    resources:
      limits:
        nvidia.com/gpu: 1
    command: ["nvidia-smi","-L"]

9. تنظیمات شبکه و دسترسی از راه دور

9.1 آی‌پی استاتیک با Netplan

فایل /etc/netplan/01-netcfg.yaml:

network:
  version: 2
  ethernets:
    eth0:
      addresses: [192.168.10.10/24]
      gateway4: 192.168.10.1
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]

sudo netplan apply

9.2 امن‌سازی SSH

sudo sed -i 's/#Port 22/Port 2222/' /etc/ssh/sshd_config
sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sudo systemctl reload sshd

  • فعال‌سازی کلید عمومی و غیرفعال‌کردن رمز
  • نصب و پیکربندی fail2ban برای محافظت از پورت SSH

9.3 VPN با WireGuard

sudo apt install -y wireguard
wg genkey | tee privatekey | wg pubkey > publickey

تنظیم فایل /etc/wireguard/wg0.conf و فعال‌سازی:

sudo wg-quick up wg0

10. مجازی‌سازی و جداسازی محیط‌ها

10.1 Docker vs VM

  • Docker: سبک، سریع، ایزوله
  • VM: سنگین، کامل، سخت‌افزار مجازی در محیط‌های enterprise ترکیب هر دو توصیه می‌شود.

10.2 استفاده از NVIDIA vCompute

  • پیکربندی vGPU در سرورهای HPE/Dell
  • اشتراک GPU بین چند VM برای پروژه‌های داخلی

10.3 ابزار مدیریت مجازی‌سازی

  • Proxmox VE: رایگان، مبتنی بر KVM/LXC
  • VMware ESXi: تجاری، امکانات پیشرفته
  • oVirt: متن‌باز، دارای GUI قوی

11. امنیت و سخت‌سازی سرور

۱. پیکربندی UFW:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp
sudo ufw enable

۲. fail2ban برای محافظت از SSH و سایر سرویس‌ها ۳. TLS داخلی Kubernetes (cert-manager) ۴. تعریف Pod Security Policies: اطمینان از اجرای کانتینرها با حداقل مجوز ۵. اسکن دوره‌ای با OpenSCAP یا CIS Benchmark

12. ذخیره‌سازی داده و پشتیبان‌گیری

  • CephFS برای اشتراک‌دهی فایل میان نودها
  • GlusterFS به‌عنوان جایگزین ساده
  • DVC (Data Version Control) برای نسخه‌بندی دیتاست‌ها
  • اسکریپت rsync برای بکاپ روزانه:
rsync -az --delete /data/ /backup/data-$(date +%F)/

استفاده از ZFS snapshot برای rollback سریع

13. مانیتورینگ و لاگ‌برداری

13.1 Prometheus & Grafana

  • نصب Node Exporter
  • نصب GPU Exporter
  • پیکربندی داشبورد‌های پیش‌فرض

13.2 ELK Stack

  • نصب Elasticsearch, Logstash, Kibana
  • جمع‌آوری لاگ‌های کانتینر با Filebeat
  • تعریف pipelines در Logstash

13.3 نمونه Alertmanager Rule

groups:
- name: gpu_alerts
  rules:
  - alert: GpuMemoryHigh
    expr: nvidia_gpu_memory_used_bytes / nvidia_gpu_memory_total_bytes > 0.9
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "GPU memory usage over 90%"

14. بهینه‌سازی عملکرد

۱. تنظیم HugePages در /etc/sysctl.conf:

vm.nr_hugepages = 1024

۲. NUMA affinity برای تخصیص صحیح CPU/GPU ۳. NVMe-oF یا RDMA برای I/O کم‌تاخیر ۴. Triton Inference Server: Dynamic Batching و model consolidation

15. مثال عملی: استقرار یک پروژه AI

در این مثال، مدل BERT برای سرویس Q&A استقرار می‌یابد:

  1. آماده‌سازی دیتاست SQuAD و تبدیل به TFRecord
  2. ساخت Docker image با Triton:
docker build -t bert-triton .

تعریف Deployment و Service در Kubernetes:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: bert-deploy
spec:
  replicas: 3
  template:
    spec:
      containers:
      - name: bert
        image: bert-triton:latest
        resources:
          limits:
            nvidia.com/gpu: 1

تنظیم HPA:

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: bert-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: bert-deploy
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70

  1. Load test با Locust و تحلیل نتایج latency و throughput.

16. مشاوره و خدمات درفک IT

اگر در هر مرحله نیاز به راهنمایی حرفه‌ای داشتید، به وب‌سایت Dorfakit.ir مراجعه کنید. درفک IT با تیم متخصص در زمینهٔ راه‌‌اندازی، پیکربندی و بهینه‌سازی سرورهای هوش مصنوعی آمادهٔ ارائهٔ خدمات مشاوره و اجراست.

17. نتیجه‌گیری

در این راهنما، از پایه‌ترین پیش‌نیازها تا پیشرفته‌ترین تکنیک‌های امنیت، مقیاس‌پذیری و مانیتورینگ را پوشش دادیم. اکنون زیرساخت شما آمادهٔ میزبانی پروژه‌های تحقیقاتی و صنعتی AI است. گام بعدی، پیاده‌سازی MLOps برای خودکارسازی چرخهٔ زندگی مدل‌ها و ادغام با CI/CD است.

18. سوالات متداول

  1. چه GPU مناسبی برای آموزش مدل‌های بزرگ است؟ کارت‌های NVIDIA A100 با MIG بهترین کارایی و انعطاف‌پذیری را ارائه می‌دهند.
  2. آیا برای پروژهٔ کوچک Docker Compose کافی است؟ بله، برای تست و توسعه تک‌نودی می‌توانید از Docker Compose بهره ببرید.
  3. بهترین روش بکاپ‌گیری از دیتاست چیست؟ ترکیب DVC برای نسخه‌بندی همراه با rsync یا snapshot ZFS مناسب است.
  4. چگونه SSH را امن کنم؟ تغییر پورت، غیرفعال‌کردن رمز، استفاده از کلیدهای SSH و fail2ban توصیه می‌شود.
  5. روش اشتراک GPU میان چند تیم چیست؟ از NVIDIA vCompute یا قابلیت MIG در A100 برای تقسیم منطقی GPU استفاده کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *