فرمیں خود مختار کام کے بوجھ کی میزبانی اور انتظام کرنے کے لیے مصنوعی ذہانت (AI) کے بنیادی ڈھانچے کا تیزی سے استعمال کرتی ہیں۔ نتیجتاً،
AI انفراسٹرکچر کی تعیناتی عام طور پر بڑے ڈیٹا سیٹس کو عمل میں لانے اور اس پر کارروائی کرنے کے لیے مناسب حسابی طاقت فراہم کرتی ہے۔ یہ مطالبات توسیع پذیر طریقوں کی ضرورت میں ترجمہ کر سکتے ہیں جو AI ماڈلز کو کارکردگی کو نقصان پہنچائے بغیر بڑے کام کے بوجھ پر چلانے کے قابل بناتے ہیں۔
ڈیٹا کی بڑھتی ہوئی مقدار بہت سے پہلوؤں میں AI سسٹمز کے لیے تشویش کا باعث ہے۔ زیادہ تر AI ماڈلز، خاص طور پر وہ جو گہری سیکھنے پر مبنی ہیں، تربیت اور تخمینہ کے دوران بہت زیادہ ڈیٹا پر انحصار کرتے ہیں۔ تاہم، مناسب توسیع پذیر انفراسٹرکچر کے بغیر، اس طرح کی پروسیسنگ اور تشریح
قابل توسیع AI ہارڈویئر انتہائی حد سے زیادہ کمپیوٹیشنل بوجھ کے باوجود قابل اعتماد اور مستحکم کارکردگی کو سپورٹ کرتا ہے۔ Kubernetes کے ساتھ، AI ملازمتوں کی افقی اسکیلنگ ایک ہوا کا جھونکا ہے، اور ریپلیکا نمبرز کی ڈائنامک ری سائزنگ ضرورت کے کام کے طور پر کی جا سکتی ہے۔ اس کے برعکس، ڈوکر کنٹینرز AI ماڈلز کو چلانے کے لیے دبلی پتلی، الگ تھلگ ماحول کی حمایت کرتے ہیں جہاں وسائل کا تنازعہ کارکردگی میں رکاوٹ نہیں ہے۔
وسائل کا موثر استعمال سرمایہ کاری مؤثر اور پائیدار AI تعیناتی کی کلید ہے۔ Kubernetes کی وسائل کی درخواستیں اور حدود کم فراہمی اور ضرورت سے زیادہ پروویژننگ سے گریز کرتے ہوئے عمدہ CPU اور میموری ریسورس مینجمنٹ کی اجازت دیتی ہیں۔ ڈوکر کے وسائل کا انتظام کنٹینر کے وسائل کو الگ کر کے خلا کو پُر کرتا ہے۔
کنٹینرائزیشن قابل توسیع مصنوعی ذہانت کے بنیادی ڈھانچے کے ارتقاء میں سنگ میلوں میں سے ایک ہے۔ ڈوکر کنٹینر میں AI ایپلیکیشن اور اس کے انحصار کا کنٹینرائزیشن ترقی، جانچ، اور تعیناتی کے ماحول میں مستقل مزاجی کو یقینی بناتا ہے۔
سب سے پہلے، آپ کو ماحول کو انسٹال کرنے کے لیے ایک Dockerfile کی وضاحت کرنی ہوگی۔ ڈاکر فائل ایک ڈوکر امیج بنانے کے طریقہ کے بارے میں ہدایات کا ایک سلسلہ ہے۔ یہ ایک بنیادی تصویر، مطلوبہ انحصار، اور ابتدائی سیٹ اپ کمانڈز کا اعلان کرتا ہے جو آپ کی ایپ پر لاگو ہوتے ہیں۔ Python مشین لرننگ ماڈل کے لیے درج ذیل ایک بنیادی ڈاکر فائل ہے:
# 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
مندرجہ بالا کوڈ کا ٹکڑا دکھاتا ہے کہ AI ماڈل کو کیسے تعینات کیا جائے، لیکن آپ کو ماڈل کو بیرونی طور پر قابل رسائی بنانے کی بھی ضرورت ہے۔ آپ کو کبرنیٹس سروس کی وضاحت کرکے اسے بے نقاب کرنے کی ضرورت ہوگی۔ ذیل میں 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 AI ماحولیات کو اسکیلنگ کی بہترین صلاحیتیں فراہم کرتا ہے، وسائل کا زیادہ سے زیادہ استعمال اور کارکردگی۔ افقی اسکیلنگ اضافی کنٹینرز کو شامل کرکے کی جاتی ہے، اور عمودی اسکیلنگ میں اضافی وسائل جیسے CPU یا میموری کو کنٹینر میں شامل کرنا شامل ہے۔
افقی اسکیلنگ کا استعمال زیادہ کام کے بوجھ کو سنبھالنے کے لیے AI سسٹم کی نقلوں (پڈز) کی تعداد کو بڑھانے کے لیے کیا جاتا ہے۔ اس عمل کے لیے نقل کی تعداد کے لحاظ سے متحرک اسکیلنگ کو فعال کرنے کی ضرورت ہے۔ اس طرح کے عمل کو فعال کرنے کے لیے استعمال ہونے والی کمانڈ ہے `kubectl سکیل`۔ خاص کمانڈ کا استعمال زیادہ سے زیادہ پانچ نقل تک کام کرنے کے لیے تعیناتی کو ترتیب دینے کے لیے کیا جاتا ہے:
`kubectl پیمانے --replicas=5 deployment/ml-model-deployment`
کمانڈ مشین لرننگ ماڈل کنٹینر کی پانچ نقلیں استعمال کرنے کے لیے ml-model-deployment کو بڑھاتی ہے۔ بعد میں مطلوبہ تعداد کو پورا کرنے کے لیے نظام متحرک طور پر مزید پوڈ فراہم کرتا ہے۔
Kubernetes Horizontal Pod Autoscaler (HPA) کا استعمال کرتے ہوئے آٹو اسکیلنگ کی سہولت فراہم کرتا ہے۔ HPA متحرک طور پر وسائل کے استعمال کی بنیاد پر نقل کی تعداد کو ایڈجسٹ کرتا ہے، یعنی CPU یا میموری، مقررہ حدود کے سلسلے میں۔ ذیل میں دکھایا گیا YAML کنفیگریشن HPA کی ایک متعلقہ مثال ہے جو CPU کے استعمال کے جواب میں ml-model-deployment کے لیے متحرک طور پر پیمانہ بناتی ہے:
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
اس سیٹ اپ میں، سکیل ٹارگٹ ریف کا استعمال کیا جاتا ہے تاکہ اسکیل کی جانے والی تعیناتی کی وضاحت کی جائے، یعنی ml-model-deployment۔ کم از کم نقل کی گنتی MinReplicas کا استعمال کرتے ہوئے سیٹ کی جاتی ہے، جبکہ زیادہ سے زیادہ نقل کی گنتی کو maxReplicas کا استعمال کرتے ہوئے کنٹرول کیا جاتا ہے۔ اس کے علاوہ، CPU کے استعمال کی فیصد کو targetCPUUtilizationPercentage کا استعمال کرتے ہوئے، یعنی 50% پر سیٹ کیا گیا ہے۔
تمام پوڈز میں 50% سے زیادہ کے CPU کے استعمال کے نتیجے میں نقل کی گنتی کو خود بخود زیادہ سے زیادہ 10 تک بڑھا دیا جاتا ہے۔ جیسے ہی CPU کا استعمال مقررہ فیصد سے نیچے آتا ہے، Kubernetes وسائل کو جاری کرنے کے لیے نقل کی گنتی کو خود بخود کم کر دیتا ہے۔
افقی اسکیلنگ بنیادی طور پر زیادہ ٹریفک سے نمٹنے کے لیے ہے، جب کہ عمودی اسکیلنگ موجودہ کنٹینرز کو زیادہ وسائل (جیسے سی پی یو یا میموری) فراہم کرتی ہے۔ یہ عمل Kubernetes کی تعیناتی میں وسائل کی درخواستوں اور حدود کو بڑھانا یا کم کرنا ہے۔ ml-model-deployment کی CPU اور میموری کی حد کو بڑھانے کے لیے، 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"
اس اپ ڈیٹ کردہ ترتیب میں: