شرکت ها به طور فزاینده ای از زیرساخت های هوش مصنوعی (AI) برای میزبانی و مدیریت بارهای کاری مستقل استفاده می کنند. در نتیجه،
استقرار زیرساخت هوش مصنوعی معمولاً قدرت محاسباتی کافی برای اجرا و پردازش مجموعه داده های بزرگ را فراهم می کند. این خواستهها میتواند به نیاز به روشهای مقیاسپذیری تبدیل شود که مدلهای هوش مصنوعی را قادر میسازد در حجمهای کاری بزرگ بدون آسیب رساندن به عملکرد اجرا شوند.
حجم فزاینده داده ها در بسیاری از جنبه ها برای سیستم های هوش مصنوعی نگران کننده است. بیشتر مدلهای هوش مصنوعی، بهویژه مدلهایی که مبتنی بر یادگیری عمیق هستند، به شدت به مقادیر زیادی داده در طول آموزش و استنتاج بستگی دارند. با این حال، بدون زیرساخت های مقیاس پذیر کافی، پردازش و تفسیر آن
سخت افزار مقیاس پذیر هوش مصنوعی علیرغم بارهای محاسباتی بسیار زیاد، از عملکرد قابل اعتماد و پایدار پشتیبانی می کند. با Kubernetes، مقیاس افقی کارهای هوش مصنوعی بسیار آسان است، و تغییر اندازه پویا اعداد مشابه را می توان به عنوان تابعی از ضرورت انجام داد. در مقابل، کانتینرهای Docker از محیط های ناب و ایزوله برای اجرای مدل های هوش مصنوعی پشتیبانی می کنند که در آن تضاد منابع یک گلوگاه عملکردی نیست.
استفاده کارآمد از منابع، کلید استقرار هوش مصنوعی مقرون به صرفه و پایدار است. درخواستها و محدودیتهای منبع Kubernetes امکان مدیریت دقیق CPU و منابع حافظه را با اجتناب از تامین ناکافی و بیش از حد فراهم میکند. مدیریت منابع 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
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 قابلیتهای مقیاسبندی عالی را برای محیطهای هوش مصنوعی فراهم میکند و استفاده از منابع و عملکرد را به حداکثر میرساند. مقیاس بندی افقی با افزودن کانتینرهای اضافی انجام می شود و مقیاس بندی عمودی شامل افزودن منابع اضافی مانند CPU یا حافظه به یک ظرف است.
مقیاس بندی افقی برای افزایش تعداد کپی ها (Pods) یک سیستم هوش مصنوعی برای رسیدگی به حجم کاری بالاتر استفاده می شود. این فرآیند مستلزم فعال کردن مقیاس بندی پویا بسته به تعداد کپی ها است. دستوری که برای فعال کردن چنین فرآیندی استفاده میشود «مقیاس kubectl» است. دستور خاص برای تنظیم استقرار برای عملکرد حداکثر تا پنج نسخه استفاده می شود:
"مقیاس kubectl --replicas=5 استقرار/ml-model-deployment".
دستور، پیادهسازی ml-model را برای استفاده از پنج کپی از ظرف مدل یادگیری ماشینی افزایش میدهد. سیستم به صورت پویا Pods بیشتری را برای برآورده کردن تعداد مورد نیاز پس از آن فراهم می کند.
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"
در این پیکربندی به روز شده: