paint-brush
چگونه زیرساخت هوش مصنوعی را با Kubernetes و Docker مقیاس بندی کنیمتوسط@dataengonline
تاریخ جدید

چگونه زیرساخت هوش مصنوعی را با Kubernetes و Docker مقیاس بندی کنیم

توسط Natapong Sornprom6m2025/02/15
Read on Terminal Reader

خیلی طولانی؛ خواندن

شرکت ها به طور فزاینده ای از زیرساخت های هوش مصنوعی (AI) برای میزبانی و مدیریت بارهای کاری مستقل استفاده می کنند. مقیاس‌پذیری تضمین می‌کند که سیستم‌های هوش مصنوعی می‌توانند با افزایش حجم کار بدون از دست دادن کارایی مقابله کنند. سازمان ها از Docker و Kubernetes برای رفع چنین نیازهایی استفاده می کنند.
featured image - چگونه زیرساخت هوش مصنوعی را با Kubernetes و Docker مقیاس بندی کنیم
Natapong Sornprom HackerNoon profile picture
0-item
1-item

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


استقرار زیرساخت هوش مصنوعی معمولاً قدرت محاسباتی کافی برای اجرا و پردازش مجموعه داده های بزرگ را فراهم می کند. این خواسته‌ها می‌تواند به نیاز به روش‌های مقیاس‌پذیری تبدیل شود که مدل‌های هوش مصنوعی را قادر می‌سازد در حجم‌های کاری بزرگ بدون آسیب رساندن به عملکرد اجرا شوند.

چرا شرکت ها باید زیرساخت هوش مصنوعی خود را افزایش دهند؟

سیستم های هوش مصنوعی با این وجود، منابع فشرده نیز هستند و معمولاً هم ظرفیت محاسباتی بالا و هم توانایی پردازش سطوح بالای داده را می طلبند. با نیاز به کاربردهای پیشرفته‌تر هوش مصنوعی و مقیاس بزرگ‌تر، مقیاس‌پذیری حیاتی‌تر می‌شود. مقیاس‌پذیری تضمین می‌کند که سیستم‌های هوش مصنوعی می‌توانند با افزایش حجم کاری بدون از دست دادن کارایی مقابله کنند.

افزایش حجم داده ها

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

عملکرد بهینه شده

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

مدیریت منابع موثر

استفاده کارآمد از منابع، کلید استقرار هوش مصنوعی مقرون به صرفه و پایدار است. درخواست‌ها و محدودیت‌های منبع Kubernetes امکان مدیریت دقیق CPU و منابع حافظه را با اجتناب از تامین ناکافی و بیش از حد فراهم می‌کند. مدیریت منابع Docker این شکاف را با جداسازی منابع کانتینر پر می کند.

مقیاس سازی زیرساخت هوش مصنوعی با Kubernetes و Docker

Containerization یکی از نقاط عطف در تکامل زیرساخت های هوش مصنوعی مقیاس پذیر است. کانتینری‌سازی برنامه هوش مصنوعی و وابستگی‌های آن در ظرف Docker، سازگاری در سراسر محیط‌های توسعه، آزمایش و استقرار را تضمین می‌کند.


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


 # Use an official Python runtime as a parent image FROM python:3.9-slim # Set the working directory in the container WORKDIR /usr/src/app # Copy the current directory contents into the container COPY . . # Install any needed packages specified in requirements.txt RUN pip install --no-cache-dir -r requirements.txt # Expose the port the app runs on EXPOSE 5000 # Define environment variable ENV NAME World # Run the app CMD ["python", "./app.py"]


اگر Dockerfile آماده است، می توانید تصویر Docker را بسازید و کانتینر را اجرا کنید. دستورات زیر را اجرا کنید:

 # Build the Docker image docker build -t ml-model:latest . # Run the container docker run -p 5000:5000 ml-model:latest


استقرار مدل هوش مصنوعی Dockerized در Kubernetes

کوبرنتیس طیف گسترده ای از ویژگی های ارکستراسیون را ارائه می دهد که مدیریت برنامه های کاربردی کارآمد را در زیرساخت کانتینری امکان پذیر می کند. استقرار تصویر Docker در Kubernetes تضمین می کند که تعداد مشخصی از نسخه های تکراری برنامه همیشه در حال اجرا هستند. نمونه زیر نمونه ای از فایل deployment.yaml است که می توانید از آن استفاده کنید مدل یادگیری ماشین Dockerized خود را مستقر کنید :


 apiVersion: apps/v1 kind: Deployment metadata: name: ml-model-deployment spec: replicas: 3 selector: matchLabels: app: ml-model template: metadata: labels: app: ml-model spec: containers: - name: ml-model-container image: ml-model:latest ports: - containerPort: 5000


قطعه کد بالا نحوه استقرار مدل هوش مصنوعی را نشان می دهد، اما همچنین باید مدل را در دسترس خارجی قرار دهید. شما باید آن را با تعریف سرویس Kubernetes افشا کنید. service.yaml زیر یک مثال را نشان می دهد:


 apiVersion: v1 kind: Service metadata: name: ml-model-service spec: selector: app: ml-model ports: - protocol: TCP port: 80 targetPort: 5000 type: LoadBalancer


از ابزار خط فرمان kubectl برای اعمال تنظیمات استقرار و سرویس استفاده کنید:


 # Deploy the application kubectl apply -f deployment.yaml # Expose the service kubectl apply -f service.yaml


مقیاس بندی با Kubernetes

Kubernetes قابلیت‌های مقیاس‌بندی عالی را برای محیط‌های هوش مصنوعی فراهم می‌کند و استفاده از منابع و عملکرد را به حداکثر می‌رساند. مقیاس بندی افقی با افزودن کانتینرهای اضافی انجام می شود و مقیاس بندی عمودی شامل افزودن منابع اضافی مانند CPU یا حافظه به یک ظرف است.

مقیاس بندی افقی

مقیاس بندی افقی برای افزایش تعداد کپی ها (Pods) یک سیستم هوش مصنوعی برای رسیدگی به حجم کاری بالاتر استفاده می شود. این فرآیند مستلزم فعال کردن مقیاس بندی پویا بسته به تعداد کپی ها است. دستوری که برای فعال کردن چنین فرآیندی استفاده می‌شود «مقیاس kubectl» است. دستور خاص برای تنظیم استقرار برای عملکرد حداکثر تا پنج نسخه استفاده می شود:


"مقیاس kubectl --replicas=5 استقرار/ml-model-deployment".


دستور، پیاده‌سازی ml-model را برای استفاده از پنج کپی از ظرف مدل یادگیری ماشینی افزایش می‌دهد. سیستم به صورت پویا Pods بیشتری را برای برآورده کردن تعداد مورد نیاز پس از آن فراهم می کند.

مقیاس بندی خودکار با استفاده از مقیاس کننده خودکار غلاف افقی (HPA)

Kubernetes مقیاس خودکار را با استفاده از Horizontal Pod Autoscaler (HPA) تسهیل می کند. HPA به صورت پویا تعداد کپی ها را بر اساس استفاده از منابع، یعنی CPU یا حافظه، در رابطه با محدودیت های تعیین شده تنظیم می کند. پیکربندی YAML نشان داده شده در زیر یک مثال مرتبط از یک HPA است که به صورت پویا برای استقرار مدل ml در پاسخ به استفاده از CPU مقیاس می‌شود:


 apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: ml-model-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: ml-model-deployment minReplicas: 2 maxReplicas: 10 targetCPUUtilizationPercentage: 50


در این تنظیمات، scaleTargetRef برای تعریف Deployment مورد استفاده قرار می گیرد، یعنی ml-model-deployment. حداقل تعداد ماکت با استفاده از MinReplicas تنظیم می شود، در حالی که حداکثر تعداد ماکت با استفاده از maxReplicas کنترل می شود. علاوه بر این، درصد استفاده از CPU با استفاده از targetCPUUtilizationPercentage تنظیم می شود، یعنی تا 50%.


استفاده از CPU بیش از 50٪ در همه Pods منجر به افزایش خودکار تعداد ماکت به حداکثر 10 می شود. به محض اینکه استفاده از CPU به زیر درصد تعیین شده کاهش یابد، Kubernetes به طور خودکار تعداد ماکت ها را کاهش می دهد تا منابع را آزاد کند.

مقیاس بندی عمودی

مقیاس افقی عمدتاً برای مقابله با ترافیک بیشتر است، در حالی که مقیاس عمودی منابع بیشتری (مانند CPU یا حافظه) برای کانتینرهای موجود فراهم می کند. این فرآیند به این صورت است که درخواست‌ها و محدودیت‌های منابع در استقرار Kubernetes را افزایش یا کاهش می‌دهد. برای افزایش مقیاس CPU و محدودیت حافظه در ml-model-deployment، باید فایل deployment.yaml را باز کنید:


 apiVersion: apps/v1 kind: Deployment metadata: name: ml-model-deployment spec: replicas: 3 selector: matchLabels: app: ml-model template: metadata: labels: app: ml-model spec: containers: - name: ml-model-container image: ml-model:latest ports: - containerPort: 5000 resources: requests: cpu: "1" memory: "2Gi" limits: cpu: "2" memory: "4Gi"


در این پیکربندی به روز شده:

  • درخواست ها حداقل منابع مورد نیاز برای کانتینر را مشخص می کنند.
  • محدودیت ها حداکثر منابعی را که ظرف می تواند استفاده کند را مشخص می کند.


L O A D I N G
. . . comments & more!

About Author

Natapong Sornprom HackerNoon profile picture
Natapong Sornprom@dataengonline
Data Engineering, Business Intelligence, Cloud Solution Architecture and AI

برچسب ها را آویزان کنید

این مقاله در ارائه شده است...