تصویر اصلی مقاله: لوگوی Kind
تصویر اصلی مقاله: لوگوی Kind

آموزش: راه‌اندازی بستر تست پردازنده گرافیکی ابری نیتیو با Nvkind Kubernetes

این آموزش شما را در نصب nvKind از انویدیا راهنمایی می‌کند؛ یک خوشه kind آگاه از پردازنده گرافیکی برای اجرای بارهای کاری هوش مصنوعی ابری نیتیو در محیط توسعه یا تست.

دیاگرام نشان‌دهنده معماری nvkind و دسترسی به GPU میزبان
معماری nvkind: دسترسی خوشه کوبرنتیز به GPU میزبان
خروجی ترمینال نشان‌دهنده تست دسترسی داکر به GPU انویدیا
تأیید دسترسی کانتینر داکر به GPU با استفاده از nvidia-smi
خروجی ترمینال هنگام اجرای دستور nvkind برای بررسی نصب
خروجی دستور nvkind نشان‌دهنده نصب موفق
خروجی ترمینال در حین ایجاد خوشه nvkind
مراحل ایجاد خوشه nvkind در ترمینال
خروجی دستور kubectl get nodes برای نمایش گره‌های خوشه
بررسی وضعیت گره‌های خوشه با kubectl
خروجی دستور kubectl get pods در فضای نام gpu-operator
بررسی وضعیت پادهای اپراتور GPU انویدیا
خروجی لاگ‌های پاد cuda-vectoradd نشان‌دهنده اجرای موفق تست
لاگ‌های پاد cuda-vectoradd نشان‌دهنده تست موفقیت‌آمیز GPU

مهندسان DevOps و توسعه‌دهندگان با kind آشنا هستند، یک محیط توسعه کوبرنتیز که بر پایه داکر ساخته شده است. در

kind
، کنترل‌پِلِین (control plane) و گره‌های (nodes) خوشه به عنوان کانتینرهای مجزا عمل می‌کنند. در حالی که استفاده از
kind
آسان است، دسترسی به پردازنده‌های گرافیکی (GPU) از درون خوشه می‌تواند چالش‌برانگیز باشد.

این آموزش شما را در نصب

nvkind
از انویدیا راهنمایی می‌کند، یک خوشه
kind
آگاه از پردازنده گرافیکی برای اجرای بارهای کاری هوش مصنوعی ابری نیتیو در محیط توسعه یا تست.

محیط من شامل یک ماشین میزبان (host machine) مجهز به یک پردازنده گرافیکی Nvidia H100 است. هدف ما استقرار یک پاد (pod) در خوشه

nvkind
با دسترسی به همین پردازنده گرافیکی است.

پیش‌نیازها

لطفاً اطمینان حاصل کنید که داکر به درستی پیکربندی شده و Nvidia runtime به عنوان پیش‌فرض تنظیم شده باشد. در این صورت می‌توانید از داخل یک کانتینر داکر به GPU دسترسی پیدا کنید.

کامپایل و نصب باینری Nvkind

مخزن GitHub مربوط به

nvkind
را کلون کرده و باینری آن را بسازید.

git clone https://github.com/NVIDIA/nvkind.git
cd nvkind
make
sudo cp ./nvkind /usr/local/bin/

باینری

nvkind
را اجرا کنید تا بررسی کنید که ساخت با موفقیت انجام شده است.

تعریف یک قالب و ایجاد خوشه

Nvkind یک فایل پیکربندی را می‌پذیرد که کنترل دقیقی بر نحوه در اختیار قرار دادن GPUها به گره‌های کارگر (worker nodes) می‌دهد. از آنجایی که ما فقط یک GPU داریم، آن را در اختیار گره کارگر قرار خواهیم داد.

یک فایل YAML به نام

nvkind-cluster.yaml
با محتوای زیر ایجاد کنید:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
  extraMounts:
  - hostPath: /dev/null
    containerPath: /var/run/nvidia-container-devices/all

در نهایت، بر اساس قالب بالا یک خوشه ایجاد خواهیم کرد.

nvkind cluster create --config-template=nvkind-cluster.yaml

اکنون می‌توانید با استفاده از ابزار خط فرمان

kubectl
به خوشه دسترسی پیدا کنید.

نصب اپراتور GPU انویدیا

با آماده شدن خوشه، اپراتور GPU را برای دسترسی به شتاب‌دهنده هوش مصنوعی زیرین نصب خواهیم کرد.

helm repo add nvidia https://helm.ngc.nvidia.com/nvidia
helm repo update
helm install --wait --generate-name \
 -n gpu-operator --create-namespace \
 nvidia/gpu-operator --set driver.enabled=false

اطمینان حاصل کنید که تمام پادها در فضای نام (namespace)

gpu-operator
سالم هستند.

اجرای یک بار کاری برای تست دسترسی به GPU

بیایید یک پاد آزمایشی برای تأیید دسترسی به GPU ایجاد کنیم.

kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: cuda-vectoradd
spec:
  restartPolicy: OnFailure
  containers:
  - name: cuda-vectoradd
    image: "nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda11.7.1-ubuntu20.04"
    resources:
      limits:
        nvidia.com/gpu: 1
EOF

پس از اجرای پاد، لاگ‌های آن را بررسی کنید تا مطمئن شوید که با موفقیت اجرا شده و به GPU دسترسی داشته است.

ما با موفقیت خوشه

nvkind
را روی یک GPU H100 نصب، پیکربندی و تست کردیم.