Αυτή είναι μια guest post που γράφτηκε από κοινού με την ηγετική ομάδα της Iambic Therapeutics.
Iambic Therapeutics είναι μια startup ανακάλυψης φαρμάκων με αποστολή να δημιουργήσει καινοτόμες τεχνολογίες με γνώμονα την τεχνητή νοημοσύνη για να προσφέρει καλύτερα φάρμακα στους καρκινοπαθείς, πιο γρήγορα.
Τα προηγμένα εργαλεία παραγωγής και πρόβλεψης τεχνητής νοημοσύνης (AI) μας επιτρέπουν να αναζητούμε τον τεράστιο χώρο των πιθανών μορίων φαρμάκων ταχύτερα και πιο αποτελεσματικά. Οι τεχνολογίες μας είναι ευέλικτες και εφαρμόζονται σε θεραπευτικούς τομείς, κατηγορίες πρωτεϊνών και μηχανισμούς δράσης. Πέρα από τη δημιουργία διαφοροποιημένων εργαλείων τεχνητής νοημοσύνης, έχουμε δημιουργήσει μια ολοκληρωμένη πλατφόρμα που συγχωνεύει λογισμικό τεχνητής νοημοσύνης, δεδομένα που βασίζονται σε σύννεφο, κλιμακούμενη υποδομή υπολογιστών και δυνατότητες χημείας και βιολογίας υψηλής απόδοσης. Η πλατφόρμα επιτρέπει τόσο την τεχνητή νοημοσύνη μας—παρέχοντας δεδομένα για να βελτιώσουμε τα μοντέλα μας—και ενεργοποιείται από αυτήν, αξιοποιώντας ευκαιρίες για αυτοματοποιημένη λήψη αποφάσεων και επεξεργασία δεδομένων.
Μετράμε την επιτυχία με την ικανότητά μας να παράγουμε ανώτερους κλινικούς υποψηφίους για την αντιμετώπιση επειγουσών αναγκών ασθενών, με πρωτοφανή ταχύτητα: προχωρήσαμε από την έναρξη του προγράμματος σε κλινικούς υποψήφιους σε μόλις 24 μήνες, πολύ πιο γρήγορα από τους ανταγωνιστές μας.
Σε αυτήν την ανάρτηση, εστιάζουμε στον τρόπο που χρησιμοποιήσαμε Ξυλουργός on Υπηρεσία Amazon Elastic Kubernetes (Amazon EKS) για να κλιμακώσει την εκπαίδευση και τα συμπεράσματα AI, τα οποία αποτελούν βασικά στοιχεία της πλατφόρμας ανακάλυψης Iambic.
Η ανάγκη για επεκτάσιμη εκπαίδευση και εξαγωγή συμπερασμάτων AI
Κάθε εβδομάδα, η Iambic εκτελεί συμπεράσματα AI σε δεκάδες μοντέλα και εκατομμύρια μόρια, εξυπηρετώντας δύο περιπτώσεις κύριας χρήσης:
- Οι φαρμακοποιοί και άλλοι επιστήμονες χρησιμοποιούν την διαδικτυακή μας εφαρμογή, το Insight, για να εξερευνήσουν τον χημικό χώρο, να αποκτήσουν πρόσβαση και να ερμηνεύσουν πειραματικά δεδομένα και να προβλέψουν τις ιδιότητες των πρόσφατα σχεδιασμένων μορίων. Όλη αυτή η εργασία γίνεται διαδραστικά σε πραγματικό χρόνο, δημιουργώντας την ανάγκη για συμπέρασμα με χαμηλή καθυστέρηση και μεσαία απόδοση.
- Ταυτόχρονα, τα παραγωγικά μας μοντέλα τεχνητής νοημοσύνης σχεδιάζουν αυτόματα μόρια που στοχεύουν στη βελτίωση σε πολυάριθμες ιδιότητες, αναζητούν εκατομμύρια υποψηφίους και απαιτούν τεράστια απόδοση και μεσαία καθυστέρηση.
Καθοδηγούμενη από τεχνολογίες τεχνητής νοημοσύνης και ειδικούς κυνηγούς φαρμάκων, η πειραματική πλατφόρμα μας δημιουργεί χιλιάδες μοναδικά μόρια κάθε εβδομάδα και το καθένα υποβάλλεται σε πολλαπλές βιολογικές αναλύσεις. Τα σημεία δεδομένων που δημιουργούνται υποβάλλονται σε αυτόματη επεξεργασία και χρησιμοποιούνται για τη βελτιστοποίηση των μοντέλων AI κάθε εβδομάδα. Αρχικά, η λεπτομέρεια του μοντέλου μας χρειάστηκε ώρες χρόνου CPU, επομένως ήταν επιβεβλημένο ένα πλαίσιο για την κλιμάκωση του μικροσυντονισμού μοντέλων στις GPU.
Τα μοντέλα βαθιάς εκμάθησής μας έχουν μη τετριμμένες απαιτήσεις: έχουν μέγεθος gigabyte, είναι πολυάριθμα και ετερογενή και απαιτούν GPU για γρήγορη εξαγωγή συμπερασμάτων και τελειοποίηση. Όσον αφορά την υποδομή cloud, χρειαζόμασταν ένα σύστημα που μας επιτρέπει να έχουμε πρόσβαση σε GPU, να αυξομειώνουμε και να μειώνουμε γρήγορα για να χειριζόμαστε αιχμηρούς, ετερογενείς φόρτους εργασίας και να εκτελούμε μεγάλες εικόνες Docker.
Θέλαμε να δημιουργήσουμε ένα επεκτάσιμο σύστημα για την υποστήριξη της εκπαίδευσης και των συμπερασμάτων AI. Χρησιμοποιούμε το Amazon EKS και αναζητούσαμε την καλύτερη λύση για την αυτόματη κλίμακα των κόμβων των εργαζομένων μας. Επιλέξαμε το Karpenter για την αυτόματη κλίμακα κόμβων Kubernetes για διάφορους λόγους:
- Ευκολία ενσωμάτωσης με το Kubernetes, χρησιμοποιώντας τη σημασιολογία Kubernetes για τον καθορισμό των απαιτήσεων κόμβων και των προδιαγραφών pod για κλιμάκωση
- Αποκλιμάκωση κόμβων χαμηλής καθυστέρησης
- Ευκολία ενσωμάτωσης με την υποδομή μας ως εργαλείο κώδικα (Terraform)
Οι πάροχοι κόμβων υποστηρίζουν την αβίαστη ενσωμάτωση με το Amazon EKS και άλλους πόρους AWS όπως Amazon Elastic Compute Cloud (Amazon EC2) περιπτώσεις και Κατάστημα Amazon Elastic Block τόμους. Η σημασιολογία Kubernetes που χρησιμοποιείται από τους παρόχους υποστηρίζει τον κατευθυνόμενο προγραμματισμό χρησιμοποιώντας κατασκευές Kubernetes, όπως κηλίδες ή ανοχές και προδιαγραφές συγγένειας ή κατά της συγγένειας. διευκολύνουν επίσης τον έλεγχο του αριθμού και των τύπων παρουσιών GPU που μπορεί να προγραμματιστούν από το Karpenter.
Επισκόπηση λύσεων
Σε αυτήν την ενότητα, παρουσιάζουμε μια γενική αρχιτεκτονική παρόμοια με αυτήν που χρησιμοποιούμε για τους δικούς μας φόρτους εργασίας, η οποία επιτρέπει την ελαστική ανάπτυξη μοντέλων χρησιμοποιώντας αποτελεσματική αυτόματη κλιμάκωση με βάση προσαρμοσμένες μετρήσεις.
Το παρακάτω διάγραμμα απεικονίζει την αρχιτεκτονική λύσεων.
Η αρχιτεκτονική αναπτύσσει ένα απλή εξυπηρέτηση σε ένα λοβό Kubernetes μέσα σε ένα Σύμπλεγμα EKS. Αυτό θα μπορούσε να είναι συμπέρασμα μοντέλου, προσομοίωση δεδομένων ή οποιαδήποτε άλλη υπηρεσία κοντέινερ, προσβάσιμη με αίτημα HTTP. Η υπηρεσία εκτίθεται πίσω από έναν αντίστροφο διακομιστή μεσολάβησης χρησιμοποιώντας Traefik. Ο αντίστροφος διακομιστής μεσολάβησης συλλέγει μετρήσεις σχετικά με κλήσεις προς την υπηρεσία και τις εκθέτει μέσω ενός τυπικού API μετρήσεων σε Προμηθέας. Το Kubernetes Event Driven Autoscaler (ΚΕΔΑ) έχει διαμορφωθεί ώστε να κλιμακώνει αυτόματα τον αριθμό των ομάδων υπηρεσιών, με βάση τις προσαρμοσμένες μετρήσεις που είναι διαθέσιμες στον Prometheus. Εδώ χρησιμοποιούμε τον αριθμό των αιτημάτων ανά δευτερόλεπτο ως προσαρμοσμένη μέτρηση. Η ίδια αρχιτεκτονική προσέγγιση ισχύει εάν επιλέξετε διαφορετική μέτρηση για τον φόρτο εργασίας σας.
Το Karpenter παρακολουθεί τυχόν εκκρεμείς ομάδες που δεν μπορούν να εκτελεστούν λόγω έλλειψης επαρκών πόρων στο σύμπλεγμα. Εάν εντοπιστούν τέτοιες ομάδες, το Karpenter προσθέτει περισσότερους κόμβους στο σύμπλεγμα για να παρέχει τους απαραίτητους πόρους. Αντίθετα, εάν υπάρχουν περισσότεροι κόμβοι στο σύμπλεγμα από ό,τι χρειάζονται οι προγραμματισμένες ομάδες ομάδων, το Karpenter αφαιρεί ορισμένους από τους κόμβους εργαζομένων και οι ομάδες ομάδων επαναπρογραμματίζονται, ενοποιώντας τους σε λιγότερες περιπτώσεις. Ο αριθμός των αιτημάτων HTTP ανά δευτερόλεπτο και ο αριθμός των κόμβων μπορούν να οπτικοποιηθούν χρησιμοποιώντας α Γκράφανα ταμπλό. Για να δείξουμε την αυτόματη κλιμάκωση, εκτελούμε ένα ή περισσότερα απλοί λοβοί παραγωγής φορτίου, τα οποία στέλνουν αιτήματα HTTP στην υπηρεσία χρησιμοποιώντας μπούκλα.
Ανάπτυξη λύσης
Στο βήμα προς βήμα περιήγηση, χρησιμοποιούμε AWS Cloud9 ως περιβάλλον για την ανάπτυξη της αρχιτεκτονικής. Αυτό επιτρέπει την ολοκλήρωση όλων των βημάτων από ένα πρόγραμμα περιήγησης ιστού. Μπορείτε επίσης να αναπτύξετε τη λύση από έναν τοπικό υπολογιστή ή μια παρουσία EC2.
Για να απλοποιήσουμε την ανάπτυξη και να βελτιώσουμε την αναπαραγωγιμότητα, ακολουθούμε τις αρχές του do-πλαίσιο και η δομή του πρότυπο εξαρτώμενο από το docker. Κλωνοποιούμε το αυς-ντο-εκς έργο και, χρησιμοποιώντας Λιμενεργάτης, κατασκευάζουμε μια εικόνα κοντέινερ που είναι εξοπλισμένη με τα απαραίτητα εργαλεία και σενάρια. Εντός του κοντέινερ, περνάμε από όλα τα βήματα της διαδρομής από άκρο σε άκρο, από τη δημιουργία ενός συμπλέγματος EKS με το Karpenter έως την κλιμάκωση Περιπτώσεις EC2.
Για το παράδειγμα σε αυτήν την ανάρτηση, χρησιμοποιούμε τα ακόλουθα Εκδήλωση συμπλέγματος EKS:
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: do-eks-yaml-karpenter
version: '1.28'
region: us-west-2
tags:
karpenter.sh/discovery: do-eks-yaml-karpenter
iam:
withOIDC: true
addons:
- name: aws-ebs-csi-driver
version: v1.26.0-eksbuild.1
wellKnownPolicies:
ebsCSIController: true
managedNodeGroups:
- name: c5-xl-do-eks-karpenter-ng
instanceType: c5.xlarge
instancePrefix: c5-xl
privateNetworking: true
minSize: 0
desiredCapacity: 2
maxSize: 10
volumeSize: 300
iam:
withAddonPolicies:
cloudWatch: true
ebs: true
Αυτό το μανιφέστο ορίζει ένα σύμπλεγμα με όνομα do-eks-yaml-karpenter
με το πρόγραμμα οδήγησης EBS CSI εγκατεστημένο ως πρόσθετο. Μια διαχειριζόμενη ομάδα κόμβων με δύο c5.xlarge
Περιλαμβάνονται κόμβοι για την εκτέλεση ομάδων συστήματος που απαιτούνται από το σύμπλεγμα. Οι κόμβοι εργαζόμενοι φιλοξενούνται σε ιδιωτικά υποδίκτυα και το τελικό σημείο API του συμπλέγματος είναι δημόσιο από προεπιλογή.
Θα μπορούσατε επίσης να χρησιμοποιήσετε ένα υπάρχον σύμπλεγμα EKS αντί να δημιουργήσετε ένα. Αναπτύσσουμε το Karpenter ακολουθώντας το οδηγίες στην τεκμηρίωση του Karpenter ή εκτελώντας τα παρακάτω γραφή, που αυτοματοποιεί τις οδηγίες ανάπτυξης.
Ο παρακάτω κώδικας δείχνει τη διαμόρφωση του Karpenter που χρησιμοποιούμε σε αυτό το παράδειγμα:
apiVersion: karpenter.sh/v1beta1
kind: NodePool
metadata:
name: default
spec:
template:
metadata: null
labels:
cluster-name: do-eks-yaml-karpenter
annotations:
purpose: karpenter-example
spec:
nodeClassRef:
apiVersion: karpenter.k8s.aws/v1beta1
kind: EC2NodeClass
name: default
requirements:
- key: karpenter.sh/capacity-type
operator: In
values:
- spot
- on-demand
- key: karpenter.k8s.aws/instance-category
operator: In
values:
- c
- m
- r
- g
- p
- key: karpenter.k8s.aws/instance-generation
operator: Gt
values:
- '2'
disruption:
consolidationPolicy: WhenUnderutilized
#consolidationPolicy: WhenEmpty
#consolidateAfter: 30s
expireAfter: 720h
---
apiVersion: karpenter.k8s.aws/v1beta1
kind: EC2NodeClass
metadata:
name: default
spec:
amiFamily: AL2
subnetSelectorTerms:
- tags:
karpenter.sh/discovery: "do-eks-yaml-karpenter"
securityGroupSelectorTerms:
- tags:
karpenter.sh/discovery: "do-eks-yaml-karpenter"
role: "KarpenterNodeRole-do-eks-yaml-karpenter"
tags:
app: autoscaling-test
blockDeviceMappings:
- deviceName: /dev/xvda
ebs:
volumeSize: 80Gi
volumeType: gp3
iops: 10000
deleteOnTermination: true
throughput: 125
detailedMonitoring: true
Ορίζουμε ένα προεπιλεγμένο Karpenter NodePool με τις ακόλουθες απαιτήσεις:
- Το Karpenter μπορεί να εκκινήσει περιπτώσεις και από τα δύο
spot
καιon-demand
πισίνες χωρητικότητας - Οι περιπτώσεις πρέπει να προέρχονται από το "
c
" (βελτιστοποιημένος υπολογισμός), "m
" (γενικού σκοπού), "r
" (βελτιστοποιημένη μνήμη) ή "g
"Και"p
Οι οικογένειες υπολογιστών (επιταχυνόμενες με GPU). - Η δημιουργία παρουσιών πρέπει να είναι μεγαλύτερη από 2. για παράδειγμα,
g3
είναι αποδεκτό, αλλάg2
δεν είναι
Το προεπιλεγμένο NodePool ορίζει επίσης πολιτικές διακοπής. Οι υποχρησιμοποιημένοι κόμβοι θα αφαιρεθούν, ώστε τα pods να μπορούν να ενοποιηθούν ώστε να εκτελούνται σε λιγότερους ή μικρότερους κόμβους. Εναλλακτικά, μπορούμε να διαμορφώσουμε κενούς κόμβους ώστε να αφαιρούνται μετά την καθορισμένη χρονική περίοδο. ο expireAfter
Η ρύθμιση καθορίζει τη μέγιστη διάρκεια ζωής οποιουδήποτε κόμβου, προτού διακοπεί και αντικατασταθεί εάν είναι απαραίτητο. Αυτό βοηθά στη μείωση των τρωτών σημείων ασφαλείας καθώς και στην αποφυγή προβλημάτων που είναι τυπικά για κόμβους με μεγάλους χρόνους λειτουργίας, όπως κατακερματισμός αρχείων ή διαρροές μνήμης.
Από προεπιλογή, το Karpenter παρέχει κόμβους με μικρό ριζικό όγκο, ο οποίος μπορεί να είναι ανεπαρκής για την εκτέλεση φόρτου εργασίας AI ή μηχανικής εκμάθησης (ML). Μερικές από τις εικόνες κοντέινερ βαθιάς εκμάθησης μπορεί να είναι δεκάδες GB σε μέγεθος και πρέπει να βεβαιωθούμε ότι υπάρχει αρκετός αποθηκευτικός χώρος στους κόμβους για την εκτέλεση λοβών χρησιμοποιώντας αυτές τις εικόνες. Για να το κάνουμε αυτό, ορίζουμε EC2NodeClass
με blockDeviceMappings
, όπως φαίνεται στον προηγούμενο κώδικα.
Η Karpenter είναι υπεύθυνη για την αυτόματη κλιμάκωση σε επίπεδο συμπλέγματος. Για να διαμορφώσουμε την αυτόματη κλιμάκωση σε επίπεδο pod, χρησιμοποιούμε το KEDA για να ορίσουμε έναν προσαρμοσμένο πόρο που ονομάζεται ScaledObject
, όπως φαίνεται στον ακόλουθο κώδικα:
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: keda-prometheus-hpa
namespace: hpa-example
spec:
scaleTargetRef:
name: php-apache
minReplicaCount: 1
cooldownPeriod: 30
triggers:
- type: prometheus
metadata:
serverAddress: http://prometheus- server.prometheus.svc.cluster.local:80
metricName: http_requests_total
threshold: '1'
query: rate(traefik_service_requests_total{service="hpa-example-php-apache-80@kubernetes",code="200"}[2m])
Η προηγούμενη δήλωση ορίζει α ScaledObject
το όνομά του keda-prometheus-hpa
, το οποίο είναι υπεύθυνο για την κλιμάκωση της ανάπτυξης του php-apache και διατηρεί πάντα τουλάχιστον ένα αντίγραφο σε λειτουργία. Κλιμακώνει τα pods αυτής της ανάπτυξης με βάση τη μέτρηση http_requests_total
Διατίθεται στο Prometheus που λαμβάνεται από το καθορισμένο ερώτημα και στοχεύει στην κλιμάκωση των ομάδων έτσι ώστε κάθε ομάδα να εξυπηρετεί όχι περισσότερο από ένα αίτημα ανά δευτερόλεπτο. Μειώνει τα αντίγραφα αφού το φορτίο αιτήματος είναι κάτω από το όριο για περισσότερο από 30 δευτερόλεπτα.
Η προδιαγραφή ανάπτυξης για παράδειγμα, η υπηρεσία μας περιέχει τα ακόλουθα αιτήματα και όρια πόρων:
resources:
limits:
cpu: 500m
nvidia.com/gpu: 1
requests:
cpu: 200m
nvidia.com/gpu: 1
Με αυτήν τη ρύθμιση παραμέτρων, κάθε ένα από τα pods υπηρεσίας θα χρησιμοποιεί ακριβώς μία GPU NVIDIA. Όταν δημιουργηθούν νέα pods, θα βρίσκονται σε κατάσταση εκκρεμότητας μέχρι να είναι διαθέσιμη μια GPU. Η Karpenter προσθέτει κόμβους GPU στο σύμπλεγμα όπως απαιτείται για να φιλοξενήσει τα εκκρεμή pods.
A λοβό παραγωγής φορτίου στέλνει αιτήματα HTTP στην υπηρεσία με προκαθορισμένη συχνότητα. Αυξάνουμε τον αριθμό των αιτημάτων αυξάνοντας τον αριθμό των αντιγράφων στο ανάπτυξη γεννήτριας φορτίου.
Ένας πλήρης κύκλος κλιμάκωσης με ενοποίηση κόμβων που βασίζεται στη χρήση απεικονίζεται σε έναν πίνακα εργαλείων Grafana. Ο παρακάτω πίνακας εργαλείων δείχνει τον αριθμό των κόμβων στο σύμπλεγμα ανά τύπο παρουσίας (επάνω), τον αριθμό των αιτημάτων ανά δευτερόλεπτο (κάτω αριστερά) και τον αριθμό των ομάδων (κάτω δεξιά).
Ξεκινάμε μόνο με τις δύο περιπτώσεις CPU c5.xlarge με τις οποίες δημιουργήθηκε το σύμπλεγμα. Στη συνέχεια, αναπτύσσουμε μία παρουσία υπηρεσίας, η οποία απαιτεί μία μόνο GPU. Ο Karpenter προσθέτει μια παρουσία g4dn.xlarge για να καλύψει αυτήν την ανάγκη. Στη συνέχεια, αναπτύσσουμε τη γεννήτρια φορτίου, η οποία αναγκάζει το KEDA να προσθέσει περισσότερα τμήματα υπηρεσιών και το Karpenter προσθέτει περισσότερες παρουσίες GPU. Μετά τη βελτιστοποίηση, η κατάσταση ρυθμίζεται σε μία παρουσία p3.8xlarge με 8 GPU και μία παρουσία g5.12xlarge με 4 GPU.
Όταν κλιμακώνουμε την ανάπτυξη που δημιουργεί φορτίο σε 40 αντίγραφα, το KEDA δημιουργεί πρόσθετες ομάδες υπηρεσιών για να διατηρήσει το απαιτούμενο φορτίο αιτήματος ανά ομάδα. Η Karpenter προσθέτει κόμβους g4dn.metal και g4dn.12xlarge στο σύμπλεγμα για να παρέχει τις απαραίτητες GPU για τα πρόσθετα pods. Στην κατάσταση κλίμακας, το σύμπλεγμα περιέχει 16 κόμβους GPU και εξυπηρετεί περίπου 300 αιτήματα ανά δευτερόλεπτο. Όταν μειώνουμε τη γεννήτρια φορτίου σε 1 αντίγραφο, λαμβάνει χώρα η αντίστροφη διαδικασία. Μετά την περίοδο ψυχρής λειτουργίας, το KEDA μειώνει τον αριθμό των ομάδων υπηρεσιών. Στη συνέχεια, καθώς εκτελούνται λιγότερα pods, το Karpenter αφαιρεί τους υποχρησιμοποιούμενους κόμβους από το σύμπλεγμα και οι ομάδες υπηρεσιών ενοποιούνται για να εκτελούνται σε λιγότερους κόμβους. Όταν αφαιρεθεί η ομάδα φόρτωσης της γεννήτριας, παραμένει σε λειτουργία μία μονάδα υπηρεσίας σε μία παρουσία g4dn.xlarge με 1 GPU. Όταν αφαιρέσουμε και το service pod, το σύμπλεγμα μένει στην αρχική κατάσταση με μόνο δύο κόμβους CPU.
Μπορούμε να παρατηρήσουμε αυτή τη συμπεριφορά όταν το NodePool
έχει τη ρύθμιση consolidationPolicy: WhenUnderutilized
.
Με αυτήν τη ρύθμιση, το Karpenter διαμορφώνει δυναμικά το σύμπλεγμα με όσο το δυνατόν λιγότερους κόμβους, παρέχοντας παράλληλα επαρκείς πόρους για την εκτέλεση όλων των pod και ελαχιστοποιώντας επίσης το κόστος.
Η συμπεριφορά κλιμάκωσης που εμφανίζεται στον παρακάτω πίνακα εργαλείων παρατηρείται όταν το NodePool
η πολιτική εξυγίανσης ορίζεται σε WhenEmpty
, μαζί με consolidateAfter: 30s
.
Σε αυτό το σενάριο, οι κόμβοι σταματούν μόνο όταν δεν υπάρχουν ομάδες που εκτελούνται σε αυτούς μετά την περίοδο ανάπαυσης. Η καμπύλη κλιμάκωσης εμφανίζεται ομαλή, σε σύγκριση με την πολιτική ενοποίησης βάσει της χρήσης. Ωστόσο, μπορεί να φανεί ότι περισσότεροι κόμβοι χρησιμοποιούνται στην κατάσταση κλίμακας (22 έναντι 16).
Συνολικά, ο συνδυασμός της αυτόματης κλιμάκωσης pod και συμπλέγματος διασφαλίζει ότι το σύμπλεγμα κλιμακώνεται δυναμικά με τον φόρτο εργασίας, κατανέμοντας πόρους όταν χρειάζεται και αφαιρώντας τους όταν δεν χρησιμοποιούνται, μεγιστοποιώντας έτσι τη χρήση και ελαχιστοποιώντας το κόστος.
Αποτελέσματα
Το Iambic χρησιμοποίησε αυτήν την αρχιτεκτονική για να επιτρέψει την αποτελεσματική χρήση των GPU στο AWS και τη μετεγκατάσταση φόρτου εργασίας από CPU σε GPU. Χρησιμοποιώντας παρουσίες που τροφοδοτούνται από EC2 GPU, Amazon EKS και Karpenter, μπορέσαμε να επιτρέψουμε ταχύτερη εξαγωγή συμπερασμάτων για τα μοντέλα μας που βασίζονται στη φυσική και γρήγορους χρόνους επανάληψης πειραμάτων για εφαρμοσμένους επιστήμονες που βασίζονται στην εκπαίδευση ως υπηρεσία.
Ο παρακάτω πίνακας συνοψίζει ορισμένες από τις χρονικές μετρήσεις αυτής της μετεγκατάστασης.
Έργο | CPUs | GPU |
Συμπεράσματα χρησιμοποιώντας μοντέλα διάχυσης για μοντέλα ML που βασίζονται στη φυσική | 3,600 δευτερόλεπτα |
100 δευτερόλεπτα (λόγω εγγενούς παρτίδας των GPU) |
Η εκπαίδευση μοντέλου ML ως υπηρεσία | 180 λεπτά | 4 λεπτά |
Ο παρακάτω πίνακας συνοψίζει ορισμένες από τις μετρήσεις χρόνου και κόστους μας.
Έργο | Απόδοση/Κόστος | |
CPUs | GPU | |
Εκπαίδευση μοντέλου ML |
240 λεπτά κατά μέσο όρο 0.70 $ ανά εκπαιδευτική εργασία |
20 λεπτά κατά μέσο όρο 0.38 $ ανά εκπαιδευτική εργασία |
Χαρακτηριστικά
Σε αυτήν την ανάρτηση, παρουσιάσαμε πώς η Iambic χρησιμοποίησε το Karpenter και το KEDA για να κλιμακώσει την υποδομή EKS του Amazon για να καλύψει τις απαιτήσεις λανθάνουσας κατάστασης του φόρτου εργασίας συμπερασμάτων AI και εκπαίδευσης. Το Karpenter και το KEDA είναι ισχυρά εργαλεία ανοιχτού κώδικα που βοηθούν στην αυτόματη κλιμάκωση συμπλεγμάτων EKS και φόρτου εργασίας που εκτελούνται σε αυτά. Αυτό βοηθά στη βελτιστοποίηση του κόστους υπολογισμού ενώ πληροί τις απαιτήσεις απόδοσης. Μπορείτε να ελέγξετε τον κώδικα και να αναπτύξετε την ίδια αρχιτεκτονική στο δικό σας περιβάλλον ακολουθώντας την πλήρη περιγραφή σε αυτό GitHub repo.
Σχετικά με τους Συγγραφείς
Μάθιου Γουέλμπορν είναι διευθυντής Μηχανικής Μάθησης στην Iambic Therapeutics. Αυτός και η ομάδα του αξιοποιούν την τεχνητή νοημοσύνη για να επιταχύνουν τον εντοπισμό και την ανάπτυξη νέων θεραπευτικών μεθόδων, φέρνοντας φάρμακα που σώζουν ζωές στους ασθενείς γρηγορότερα.
Paul Whittemore είναι Κύριος Μηχανικός στην Iambic Therapeutics. Υποστηρίζει την παράδοση της υποδομής για την πλατφόρμα ανακάλυψης φαρμάκων που βασίζεται στο Iambic AI.
Άλεξ Ιανκούλσκι είναι ένας Principal Solutions Architect, ML/AI Frameworks, ο οποίος εστιάζει στο να βοηθά τους πελάτες να ενορχηστρώνουν τον φόρτο εργασίας τους με τεχνητή νοημοσύνη χρησιμοποιώντας κοντέινερ και ταχεία υπολογιστική υποδομή στο AWS.
- SEO Powered Content & PR Distribution. Ενισχύστε σήμερα.
- PlatoData.Network Vertical Generative Ai. Ενδυναμώστε τον εαυτό σας. Πρόσβαση εδώ.
- PlatoAiStream. Web3 Intelligence. Ενισχύθηκε η γνώση. Πρόσβαση εδώ.
- PlatoESG. Ανθρακας, Cleantech, Ενέργεια, Περιβάλλον, Ηλιακός, Διαχείριση των αποβλήτων. Πρόσβαση εδώ.
- PlatoHealth. Ευφυΐα βιοτεχνολογίας και κλινικών δοκιμών. Πρόσβαση εδώ.
- πηγή: https://aws.amazon.com/blogs/machine-learning/scale-ai-training-and-inference-for-drug-discovery-through-amazon-eks-and-karpenter/
- :έχει
- :είναι
- :δεν
- ][Π
- $UP
- 1
- 10
- 100
- 125
- 16
- 200
- 200m
- 22
- 24
- 26%
- 28
- 30
- 300
- 40
- 600
- 7
- 70
- 8
- 80
- a
- ικανότητα
- Ικανός
- Σχετικα
- επιταχύνουν
- επιτάχυνση
- αποδεκτό
- πρόσβαση
- προσιτός
- φιλοξενώ
- απέναντι
- Ενέργειες
- προσθέτω
- Πρόσθετο
- Πρόσθετος
- διεύθυνση
- Προσθέτει
- προηγμένες
- συγγένεια
- Μετά το
- AI
- Μοντέλα AI
- Εκπαίδευση AI
- Όλα
- επιτρέπει
- κατά μήκος
- Επίσης
- πάντοτε
- Amazon
- Amazon EC2
- Amazon υπηρεσίες Web
- an
- και
- κάθε
- api
- app
- εμφανίζεται
- εφαρμόσιμος
- Εφαρμογή
- εφαρμοσμένος
- ισχύει
- πλησιάζω
- αρχιτεκτονική
- αρχιτεκτονική
- ΕΙΝΑΙ
- περιοχές
- τεχνητός
- τεχνητή νοημοσύνη
- Τεχνητή νοημοσύνη (AI)
- AS
- At
- αυτόματη
- Αυτοματοποιημένη
- αυτοκίνητα
- αυτομάτως
- διαθέσιμος
- αποφύγετε
- AWS
- βασίζονται
- δοσοληψία
- BE
- ήταν
- πριν
- συμπεριφορά
- πίσω
- παρακάτω
- ΚΑΛΎΤΕΡΟΣ
- Καλύτερα
- Πέρα
- βιολογία
- Αποκλεισμός
- και οι δύο
- Κάτω μέρος
- φέρω
- Φέρνοντας
- πρόγραμμα περιήγησης
- χτίζω
- αλλά
- by
- που ονομάζεται
- κλήσεις
- CAN
- ΚΑΡΚΙΝΟΣ
- υποψηφίους
- δυνατότητες
- Χωρητικότητα
- κεφαλαιοποίηση
- περιπτώσεις
- αίτια
- έλεγχος
- χημική ουσία
- χημεία
- Επιλέξτε
- επέλεξε
- τάξεις
- Κλινικός
- Backup
- cloud infrastructure
- συστάδα
- κωδικός
- συλλέγει
- συνδυάζοντας
- σύγκριση
- ανταγωνιστές
- πλήρης
- Ολοκληρώθηκε το
- υπολογισμός
- Υπολογίστε
- υπολογιστή
- χρήση υπολογιστή
- διαμόρφωση
- έχει ρυθμιστεί
- ενοποίηση
- ενοποίηση
- κατασκευές
- Δοχείο
- Εμπορευματοκιβώτια
- Περιέχει
- έλεγχος
- αντίστροφως
- cooldown
- πυρήνας
- Κόστος
- Δικαστικά έξοδα
- θα μπορούσε να
- δημιουργία
- δημιουργήθηκε
- δημιουργεί
- δημιουργία
- CSI
- καμπύλη
- έθιμο
- Πελάτες
- κύκλος
- ταμπλό
- ημερομηνία
- σημεία δεδομένων
- επεξεργασία δεδομένων
- Λήψη Αποφάσεων
- βαθύς
- βαθιά μάθηση
- Προεπιλογή
- ορίζεται
- Ορίζει
- διανομή
- αποδεικνύουν
- παρατάσσω
- ανάπτυξη
- αναπτύσσεται
- Υπηρεσίες
- σχεδιασμένα
- εντοπιστεί
- Ανάπτυξη
- διάγραμμα
- διαφορετικές
- διαφοροποιημένη
- Διάχυση
- κατευθύνθηκε
- Διευθυντής
- ανακάλυψη
- Αναστάτωση
- do
- Λιμενεργάτης
- τεκμηρίωση
- γίνεται
- κάτω
- δεκάδες
- οδηγείται
- οδηγός
- φάρμακο
- δυο
- δυναμικά
- κάθε
- αποτελεσματικά
- αποτελεσματικός
- ΧΩΡΙΣ κοπο
- στοιχεία
- ενεργοποιήσετε
- ενεργοποιημένη
- δίνει τη δυνατότητα
- από άκρη σε άκρη
- Τελικό σημείο
- μηχανικός
- τεράστιος
- αρκετά
- Περιβάλλον
- εξοπλισμένο
- εγκατεστημένος
- Συμβάν
- Κάθε
- ακριβώς
- παράδειγμα
- υφιστάμενα
- πείραμα
- πειραματικός
- εμπειρογνώμονας
- διερευνήσει
- εκτεθειμένος
- διευκολύνω
- FAST
- γρηγορότερα
- λίγοι
- λιγότερα
- Αρχεία
- Συγκέντρωση
- εστιάζει
- ακολουθήστε
- Εξής
- Για
- θρυμματισμός
- Πλαίσιο
- πλαισίων
- Συχνότητα
- από
- πλήρη
- General
- παράγεται
- δημιουργεί
- γενεά
- γενετική
- Παραγωγική τεχνητή νοημοσύνη
- γεννήτρια
- παίρνω
- GPU
- GPU
- μεγαλύτερη
- Group
- Επισκέπτης
- Κείμενο
- λαβή
- Έχω
- he
- βοήθεια
- βοήθεια
- βοηθά
- εδώ
- του
- φιλοξενείται
- ΩΡΕΣ
- Πως
- Ωστόσο
- http
- HTTPS
- Αναγνώριση
- if
- απεικονίζει
- εικόνα
- εικόνες
- επιτακτικός
- βελτίωση
- βελτίωση
- in
- περιλαμβάνονται
- Αυξάνουν
- αύξηση
- Υποδομή
- συμφυής
- αρχικός
- αρχικά
- καινοτόμες
- διορατικότητα
- εγκατασταθεί
- παράδειγμα
- αντί
- οδηγίες
- ενσωματωθεί
- ολοκλήρωση
- Νοημοσύνη
- ερμηνεύω
- θέματα
- IT
- επανάληψη
- jpg
- μόλις
- κρατά
- Κλειδί
- Είδος
- Ετικέτες
- Έλλειψη
- large
- Αφάνεια
- ξεκινήσει
- Ηγεσία
- Διαρροές
- μάθηση
- ελάχιστα
- αριστερά
- Επίπεδο
- Μόχλευση
- Διάρκεια Ζωής
- όρια
- φορτίο
- τοπικός
- Μακριά
- πλέον
- κοιτάζοντας
- Χαμηλός
- μηχανή
- μάθηση μηχανής
- διατηρήσουν
- κάνω
- ΚΑΝΕΙ
- διαχειρίζεται
- μεγιστοποιώντας
- ανώτατο όριο
- Ενδέχεται..
- μέτρο
- μηχανισμούς
- medium
- Γνωρίστε
- συνάντηση
- Μνήμη
- συγχωνεύεται
- Μεταδεδομένα
- μέταλλο
- μετρικός
- Metrics
- μεταναστεύσουν
- μετανάστευση
- εκατομμύρια
- ελαχιστοποιώντας
- Αποστολή
- ML
- μοντέλο
- μοντέλα
- οθόνες
- μήνες
- περισσότερο
- πολλαπλούς
- πρέπει
- όνομα
- Ονομάστηκε
- απαραίτητος
- Ανάγκη
- που απαιτούνται
- Νέα
- πρόσφατα
- Όχι.
- κόμβος
- κόμβων
- μυθιστόρημα
- αριθμός
- πολυάριθμες
- Nvidia
- παρατηρούμε
- λαμβάνεται
- of
- on
- Κατα παραγγελια
- ONE
- αποκλειστικά
- ανοίξτε
- ανοικτού κώδικα
- χειριστής
- Ευκαιρίες
- βελτιστοποίηση
- Βελτιστοποίηση
- βελτιστοποιημένη
- or
- ΑΛΛΑ
- δικός μας
- έξω
- επί
- δική
- ασθενής
- pacientes
- εκκρεμής
- για
- επίδοση
- εκτελεί
- περίοδος
- Μέρος
- πλατφόρμες
- Πλάτων
- Πληροφορία δεδομένων Plato
- Πλάτωνα δεδομένα
- σημεία
- Πολιτικές
- πολιτική
- δυνατός
- Θέση
- τροφοδοτείται
- ισχυρός
- προηγείται
- προβλέψει
- παρόν
- πρωταρχικός
- Κύριος
- αρχές
- ιδιωτικός
- διαδικασια μας
- Επεξεργασμένο
- μεταποίηση
- παράγει
- Πρόγραμμα
- σχέδιο
- ιδιότητες
- Πρωτεΐνη
- παρέχουν
- χορήγηση
- πληρεξούσιο
- δημόσιο
- σκοπός
- απορία
- γρήγορα
- R
- πραγματικός
- σε πραγματικό χρόνο
- λόγους
- μείωση
- μειώνει
- τελειοποίηση
- περιοχή
- βασίζονται
- λείψανα
- αφαιρέστε
- Καταργήθηκε
- Αφαιρεί
- αφαίρεση
- αντικατασταθούν
- απάντηση
- ζητήσει
- αιτήματα
- απαιτούν
- απαιτείται
- απαιτήσεις
- Απαιτεί
- πόρος
- Υποστηρικτικό υλικό
- υπεύθυνος
- αντιστρέψει
- δεξιά
- Ρόλος
- ρίζα
- τρέξιμο
- τρέξιμο
- ίδιο
- επεκτάσιμη
- Κλίμακα
- κλίμακα αι
- λεπιδωτός
- Ζυγός
- απολέπιση
- σενάριο
- προγραμματιστεί
- προγραμματισμός
- επιστήμονες
- Εφαρμογές
- Αναζήτηση
- αναζήτηση
- Δεύτερος
- δευτερόλεπτα
- Τμήμα
- ασφάλεια
- δει
- σημασιολογία
- στείλετε
- αποστέλλει
- διακομιστής
- εξυπηρετεί
- υπηρεσία
- Υπηρεσίες
- εξυπηρετούν
- σειρά
- τον καθορισμό
- εγκαθίσταται
- παρουσιάστηκε
- παρουσιάζεται
- Δείχνει
- σημαντικά
- παρόμοιες
- απλοποίηση
- προσομοίωση
- ενιαίας
- Μέγεθος
- small
- μικρότερος
- εξομαλύνουν
- So
- λογισμικό
- λύση
- Λύσεις
- μερικοί
- Πηγή
- Χώρος
- προδιαγραφές
- καθορίζεται
- specs
- ταχύτητα
- Spot
- πρότυπο
- Εκκίνηση
- εκκίνηση
- Κατάσταση
- Βήματα
- σταμάτησε
- χώρος στο δίσκο
- δομή
- υποδίκτυα
- επιτυχία
- τέτοιος
- επαρκής
- ανώτερος
- προμήθεια
- υποστήριξη
- Υποστηρίζει
- βέβαιος
- SVC
- σύστημα
- τραπέζι
- παίρνει
- στόχευση
- στόχους
- Τεχνολογίες
- πρότυπο
- δεκάδες
- Terraform
- από
- ότι
- Η
- Το κράτος
- τους
- Τους
- τότε
- θεραπευτική
- Εκεί.
- εκ τούτου
- Αυτοί
- αυτοί
- αυτό
- χιλιάδες
- κατώφλι
- Μέσω
- διακίνηση
- ώρα
- φορές
- προς την
- πήρε
- εργαλεία
- κορυφή
- Εκπαίδευση
- αληθής
- δύο
- τύπος
- τύποι
- τυπικός
- μοναδικός
- πρωτοφανής
- μέχρι
- χρόνους λειτουργίας
- επείγων
- us
- χρήση
- μεταχειρισμένος
- χρησιμοποιώντας
- v1
- Αξίες
- Σταθερή
- πολύπλευρος
- εκδοχή
- μέσω
- τόμος
- όγκους
- vs
- Θέματα ευπάθειας
- περιδιάβαση
- ήθελε
- ήταν
- we
- ιστός
- Εφαρμογή Web
- πρόγραμμα περιήγησης στο Web
- διαδικτυακές υπηρεσίες
- εβδομάδα
- ΛΟΙΠΌΝ
- ήταν
- Τι
- Τι είναι
- πότε
- Ποιό
- ενώ
- Ο ΟΠΟΊΟΣ
- θα
- με
- εντός
- Εργασία
- εργάτης
- γιαμ
- Εσείς
- Σας
- zephyrnet