Ζούμε σε συναρπαστικές εποχές, με ανακοινώσεις για τεχνολογία αιχμής κάθε εβδομάδα. Η OpenAI μόλις κυκλοφόρησε το πρωτοποριακό μοντέλο κειμένου σε εικόνα DALLE 2.
Μόνο λίγοι άνθρωποι απέκτησαν έγκαιρη πρόσβαση σε ένα νέο σύστημα AI που μπορεί να δημιουργήσει ρεαλιστικά γραφικά από περιγραφές φυσικής γλώσσας. Είναι ακόμα κλειστό για το κοινό.
Το Stability AI κυκλοφόρησε στη συνέχεια το Σταθερή Διάχυση μοντέλο, μια παραλλαγή ανοιχτού κώδικα του DALLE2. Αυτή η εκτόξευση άλλαξε τα πάντα. Οι άνθρωποι σε όλο το διαδίκτυο δημοσίευαν γρήγορα αποτελέσματα και εκπλήσσονταν από τη ρεαλιστική τέχνη.
Τι είναι η Σταθερή Διάχυση;
Σταθερή Διάχυση είναι ένα μοντέλο μηχανικής εκμάθησης ικανό να δημιουργεί εικόνες από κείμενο, να αλλάζει εικόνες ανάλογα με το κείμενο και να συμπληρώνει λεπτομέρειες σε εικόνες χαμηλής ανάλυσης ή χαμηλής λεπτομέρειας.
Εκπαιδεύτηκε σε δισεκατομμύρια φωτογραφίες και μπορεί να προσφέρει αποτελέσματα ισοδύναμα με DALL-E2 και MidJourney. Σταθερότητα AI το εφηύρε και δημοσιοποιήθηκε στις 22 Αυγούστου 2022.
Αλλά με περιορισμένους τοπικούς υπολογιστικούς πόρους, το μοντέλο Stable Diffusion χρειάζεται πολύ χρόνο για να δημιουργήσει εικόνες υψηλής ποιότητας. Η εκτέλεση του μοντέλου στο διαδίκτυο χρησιμοποιώντας έναν πάροχο cloud μας παρέχει σχεδόν άπειρους υπολογιστικούς πόρους και μας επιτρέπει να αποκτούμε εξαιρετικά αποτελέσματα πολύ πιο γρήγορα.
Η φιλοξενία του μοντέλου ως μικρουπηρεσία επιτρέπει επίσης σε άλλες δημιουργικές εφαρμογές να εκμεταλλεύονται πιο εύκολα τις δυνατότητες του μοντέλου χωρίς να χρειάζεται να αντιμετωπίσουν την πολυπλοκότητα της εκτέλεσης μοντέλων ML στο διαδίκτυο.
Σε αυτήν την ανάρτηση, θα προσπαθήσουμε να δείξουμε πώς να αναπτύξουμε ένα σταθερό μοντέλο διάχυσης και να το αναπτύξουμε στο AWS.
Δημιουργία και ανάπτυξη σταθερής διάχυσης
BentoML και το Amazon Web Services EC2 είναι δύο επιλογές για τη διαδικτυακή φιλοξενία του μοντέλου Stable Diffusion. Το BentoML είναι ένα πλαίσιο ανοιχτού κώδικα για κλιμάκωση μάθηση μηχανής Υπηρεσίες. Με την BentoML, θα δημιουργήσουμε μια αξιόπιστη υπηρεσία διασποράς και θα την αναπτύξουμε στο AWS EC2.
Προετοιμασία του περιβάλλοντος και λήψη μοντέλου σταθερής διάχυσης
Εγκαταστήστε τις απαιτήσεις και κλωνοποιήστε το αποθετήριο.
Μπορείτε να επιλέξετε και να κατεβάσετε το μοντέλο Stable Diffusion. Το Single Precision είναι κατάλληλο για CPU ή GPU με VRAM άνω των 10 GB. Η μισή ακρίβεια είναι ιδανική για GPU με λιγότερο από 10 GB VRAM.
Δόμηση Σταθερής Διάχυσης
Θα δημιουργήσουμε μια υπηρεσία BentoML για να εξυπηρετήσουμε το μοντέλο πίσω από ένα RESTful API. Το παρακάτω παράδειγμα χρησιμοποιεί το ενιαίο μοντέλο ακριβείας για την πρόβλεψη και τη λειτουργική μονάδα service.py για τη σύνδεση της υπηρεσίας με την επιχειρηματική λογική. Μπορούμε να εκθέσουμε τις συναρτήσεις ως API προσθέτοντάς τους ετικέτα με το @svc.api.
Επιπλέον, μπορούμε να ορίσουμε τους τύπους εισόδου και εξόδου των API στις παραμέτρους. Το τελικό σημείο txt2img, για παράδειγμα, λαμβάνει μια είσοδο JSON και παράγει μια έξοδο εικόνας, ενώ το τελικό σημείο img2img δέχεται μια είσοδο εικόνας και JSON και επιστρέφει μια έξοδο εικόνας.
Ένα StableDiffusionRunnable ορίζει τη βασική λογική εξαγωγής συμπερασμάτων. Το runnable είναι υπεύθυνο για την εκτέλεση των μεθόδων σωλήνα txt2img του μοντέλου και την αποστολή των σχετικών εισόδων. Για την εκτέλεση της λογικής συμπερασμάτων μοντέλου στα API, δημιουργείται ένας προσαρμοσμένος Runner από το StableDiffusionRunnable.
Στη συνέχεια, χρησιμοποιήστε την ακόλουθη εντολή για να ξεκινήσετε μια υπηρεσία BentoML για δοκιμή. Τοπικά τρέχει το Μοντέλο σταθερής διάχυσης Το συμπέρασμα για τις CPU είναι μάλλον αργό. Η επεξεργασία κάθε αιτήματος θα διαρκέσει περίπου 5 λεπτά.
Κείμενο σε εικόνα
Έξοδος κειμένου σε εικόνα
Το αρχείο bentofile.yaml ορίζει τα απαιτούμενα αρχεία και τις εξαρτήσεις.
Χρησιμοποιήστε την παρακάτω εντολή για να δημιουργήσετε ένα bento. Το Bento είναι η μορφή διανομής για μια υπηρεσία BentoML. Είναι ένα αυτόνομο αρχείο που περιέχει όλα τα δεδομένα και τις διαμορφώσεις που απαιτούνται για την εκκίνηση της υπηρεσίας.
Το Stable Diffusion bento έχει ολοκληρωθεί. Εάν δεν μπορέσατε να δημιουργήσετε σωστά το bento, μην πανικοβληθείτε. μπορείτε να κάνετε λήψη του προκατασκευασμένου μοντέλου χρησιμοποιώντας τις εντολές που αναφέρονται στην επόμενη ενότητα.
Μοντέλα προκατασκευής
Ακολουθούν τα μοντέλα προκατασκευής:
Αναπτύξτε το μοντέλο Stable Diffusion στο EC2
Για να αναπτύξουμε το bento στο EC2, θα χρησιμοποιήσουμε το bentoctl. Το bentoctl μπορεί να σας επιτρέψει να αναπτύξετε τα bento σας σε οποιοδήποτε πλατφόρμα του cloud χρησιμοποιώντας Terraform. Για να δημιουργήσετε και να εφαρμόσετε αρχεία Terraform, εγκαταστήστε τον τελεστή AWS EC2.
Στο αρχείο deployment config.yaml, η ανάπτυξη έχει ήδη ρυθμιστεί. Μη διστάσετε να επεξεργαστείτε τις απαιτήσεις σας. Το Bento αναπτύσσεται από προεπιλογή σε έναν κεντρικό υπολογιστή g4dn.xlarge με το Βαθιά μάθηση AMI GPU PyTorch 1.12.0 (Ubuntu 20.04) AMI στην περιοχή us-west-1.
Δημιουργήστε τα αρχεία Terraform τώρα. Δημιουργήστε την εικόνα Docker και μεταφορτώστε την στο AWS ECR. Ανάλογα με το εύρος ζώνης σας, η μεταφόρτωση εικόνων μπορεί να διαρκέσει πολύ. Κατά την ανάπτυξη του bento στο AWS EC2, χρησιμοποιήστε τα αρχεία Terraform.
Για πρόσβαση στο Swagger UI, συνδεθείτε στην κονσόλα EC2 και ανοίξτε τη δημόσια διεύθυνση IP σε ένα πρόγραμμα περιήγησης. Τέλος, εάν δεν απαιτείται πλέον η υπηρεσία Stable Diffusion BentoML, καταργήστε την ανάπτυξη.
Συμπέρασμα
Θα πρέπει να μπορείτε να δείτε πόσο συναρπαστικό και ισχυρό είναι το SD και τα συνοδευτικά του μοντέλα. Ο χρόνος θα δείξει αν θα επαναλάβουμε περαιτέρω την έννοια ή θα προχωρήσουμε σε πιο εξελιγμένες προσεγγίσεις.
Ωστόσο, επί του παρόντος βρίσκονται σε εξέλιξη πρωτοβουλίες για την εκπαίδευση μεγαλύτερων μοντέλων με προσαρμογές ώστε να κατανοούν καλύτερα το περιβάλλον και τις οδηγίες. Προσπαθήσαμε να αναπτύξουμε την υπηρεσία Stable Diffusion χρησιμοποιώντας BentoML και την αναπτύξαμε στο AWS EC2.
Μπορέσαμε να εκτελέσουμε το μοντέλο Stable Diffusion σε πιο ισχυρό υλικό, να δημιουργήσουμε εικόνες με χαμηλή καθυστέρηση και να επεκταθούμε πέρα από έναν μόνο υπολογιστή, αναπτύσσοντας την υπηρεσία στο AWS EC2.
Αφήστε μια απάντηση