Οι εταιρείες χρησιμοποιούν όλο και περισσότερο υποδομές τεχνητής νοημοσύνης (AI) για να φιλοξενήσουν και να διαχειριστούν αυτόνομους φόρτους εργασίας. Κατά συνέπεια,
Η ανάπτυξη υποδομής AI παρέχει συνήθως επαρκή υπολογιστική ισχύ για την εκτέλεση και την επεξεργασία μεγάλων συνόλων δεδομένων. Αυτές οι απαιτήσεις μπορούν να μεταφραστούν στην ανάγκη για επεκτάσιμες μεθόδους που επιτρέπουν στα μοντέλα τεχνητής νοημοσύνης να εκτελούνται με μεγάλο φόρτο εργασίας χωρίς να βλάπτουν την απόδοση.
Ο αυξανόμενος όγκος δεδομένων προκαλεί ανησυχία για τα συστήματα τεχνητής νοημοσύνης σε πολλές πτυχές. Τα περισσότερα μοντέλα τεχνητής νοημοσύνης, ειδικά αυτά που βασίζονται στη βαθιά μάθηση, εξαρτώνται σε μεγάλο βαθμό από μεγάλο όγκο δεδομένων κατά τη διάρκεια της εκπαίδευσης και των συμπερασμάτων. Ωστόσο, χωρίς επαρκή επεκτάσιμη υποδομή, επεξεργασία και ερμηνεία τέτοιων
Το επεκτάσιμο υλικό AI υποστηρίζει αξιόπιστη και σταθερή απόδοση παρά τα δραστικά συντριπτικά υπολογιστικά φορτία. Με το Kubernetes, η οριζόντια κλιμάκωση των εργασιών τεχνητής νοημοσύνης είναι παιχνιδάκι και η δυναμική αλλαγή μεγέθους των αριθμών αντιγράφων μπορεί να γίνει ανάλογα με την ανάγκη. Αντίθετα, τα κοντέινερ Docker υποστηρίζουν λιτά, απομονωμένα περιβάλλοντα για την εκτέλεση μοντέλων τεχνητής νοημοσύνης όπου η σύγκρουση πόρων δεν αποτελεί εμπόδιο απόδοσης.
Η αποτελεσματική χρήση των πόρων είναι το κλειδί για μια οικονομικά αποδοτική και βιώσιμη ανάπτυξη της τεχνητής νοημοσύνης. Τα αιτήματα και τα όρια πόρων του Kubernetes επιτρέπουν τη λεπτομερή διαχείριση πόρων CPU και μνήμης, αποφεύγοντας την υποπαροχή και την υπερπαροχή. Η διαχείριση πόρων του Docker καλύπτει το κενό απομονώνοντας πόρους κοντέινερ.
Η μεταφορά εμπορευματοκιβωτίων είναι ένα από τα ορόσημα στην εξέλιξη της κλιμακούμενης υποδομής τεχνητής νοημοσύνης. Η δημιουργία κοντέινερ της εφαρμογής AI και των εξαρτήσεών της σε ένα κοντέινερ Docker διασφαλίζει τη συνέπεια σε όλα τα περιβάλλοντα ανάπτυξης, δοκιμών και ανάπτυξης.
Αρχικά, πρέπει να ορίσετε ένα Dockerfile για να εγκαταστήσετε το περιβάλλον. Το Dockerfile είναι μια σειρά οδηγιών σχετικά με τον τρόπο δημιουργίας μιας εικόνας Docker. Δηλώνει μια εικόνα βάσης, τις απαιτούμενες εξαρτήσεις και τις αρχικές εντολές εγκατάστασης που ισχύουν για την εφαρμογή σας. Το παρακάτω είναι ένα βασικό αρχείο Docker για ένα μοντέλο μηχανικής εκμάθησης 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, αλλά πρέπει επίσης να κάνετε το μοντέλο εξωτερικά προσβάσιμο. Θα χρειαστεί να το αποκαλύψετε ορίζοντας μια υπηρεσία 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 παρέχει εξαιρετικές δυνατότητες κλιμάκωσης σε περιβάλλοντα AI, μεγιστοποιώντας τη χρήση πόρων και την απόδοση. Η οριζόντια κλιμάκωση γίνεται με την προσθήκη επιπλέον κοντέινερ και η κατακόρυφη κλίμακα περιλαμβάνει την προσθήκη πρόσθετων πόρων όπως η CPU ή η μνήμη σε ένα κοντέινερ.
Η οριζόντια κλιμάκωση χρησιμοποιείται για την κλιμάκωση του αριθμού των αντιγράφων (Pods) ενός συστήματος τεχνητής νοημοσύνης για τη διαχείριση μεγαλύτερου φόρτου εργασίας. Η διαδικασία απαιτεί την ενεργοποίηση της δυναμικής κλιμάκωσης ανάλογα με τον αριθμό των αντιγράφων. Η εντολή που χρησιμοποιείται για την ενεργοποίηση μιας τέτοιας διαδικασίας είναι «κλίμακα kubectl». Η συγκεκριμένη εντολή χρησιμοποιείται για τη ρύθμιση της ανάπτυξης ώστε να λειτουργεί έως και πέντε αντίγραφα το πολύ:
«κλίμακα kubectl --replicas=5 deployment/ml-model-deployment».
Η εντολή κλιμακώνει το ml-model-deployment για να χρησιμοποιήσει πέντε αντίγραφα του κοντέινερ μοντέλου μηχανικής εκμάθησης. Το σύστημα παρέχει δυναμικά περισσότερα 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 χρησιμοποιείται για να ορίσει την ανάπτυξη που θα κλιμακωθεί, δηλαδή, 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"
Σε αυτήν την ενημερωμένη διαμόρφωση: