W listopadzie 2022 r. my ogłosił za pomocą których klienci AWS mogą generować obrazy z tekstu Stabilna dyfuzja modele w Amazon SageMaker JumpStart. Dzisiaj ogłaszamy nową funkcję, która umożliwia skalowanie obrazów (zmiana rozmiaru obrazów bez utraty jakości) za pomocą modeli stabilnej dyfuzji w programie JumpStart. Obraz o niskiej rozdzielczości, rozmyty i zawierający piksele można przekonwertować na obraz o wysokiej rozdzielczości, który wydaje się gładszy, wyraźniejszy i bardziej szczegółowy. Proces ten, tzw skalowanie, można zastosować zarówno do rzeczywistych obrazów, jak i obrazów generowanych przez modele stabilnej dyfuzji tekstu na obraz. Można to wykorzystać do poprawy jakości obrazu w różnych branżach, takich jak handel elektroniczny i nieruchomości, a także dla artystów i fotografów. Ponadto skalowanie w górę może poprawić jakość wizualną obrazów o niskiej rozdzielczości wyświetlanych na ekranach o wysokiej rozdzielczości.
Stable Diffusion wykorzystuje algorytm sztucznej inteligencji do skalowania obrazów, eliminując potrzebę ręcznej pracy, która może wymagać ręcznego wypełniania luk w obrazie. Został przeszkolony na milionach obrazów i może dokładnie przewidywać obrazy o wysokiej rozdzielczości, co skutkuje znacznym wzrostem szczegółowości w porównaniu z tradycyjnymi skalerami obrazu. Dodatkowo, w przeciwieństwie do technik innych niż głębokie uczenie się, takich jak najbliższy sąsiad, stabilna dyfuzja uwzględnia kontekst obrazu, używając podpowiedzi tekstowych do kierowania procesem skalowania.
W tym poście przedstawiamy przegląd sposobów wdrażania i uruchamiania wnioskowania za pomocą modelu skalowania Stable Diffusion na dwa sposoby: za pośrednictwem interfejsu użytkownika (UI) programu JumpStart w Studio Amazon SageMakeri programowo przez Interfejsy API JumpStart dostępny w SageMaker SDK dla Pythona.
Omówienie rozwiązania
Poniższe obrazy przedstawiają przykłady skalowania w górę wykonanego przez model. Po lewej stronie znajduje się oryginalny obraz o niskiej rozdzielczości powiększony tak, aby pasował do rozmiaru obrazu generowanego przez model. Po prawej stronie znajduje się obraz generowany przez model.
Pierwszy wygenerowany obraz jest wynikiem obrazu kota o niskiej rozdzielczości i podpowiedzi „biały kot”.
Drugi wygenerowany obraz jest wynikiem obrazu motyla o niskiej rozdzielczości i monitu „motyl na zielonym liściu”.
Uruchamianie dużych modeli, takich jak stabilna dyfuzja, wymaga niestandardowych skryptów wnioskowania. Musisz przeprowadzić kompleksowe testy, aby upewnić się, że skrypt, model i żądana instancja wydajnie ze sobą współpracują. JumpStart upraszcza ten proces, udostępniając gotowe do użycia skrypty, które zostały gruntownie przetestowane. Dostęp do tych skryptów można uzyskać jednym kliknięciem w interfejsie Studio lub za pomocą kilku wierszy kodu w programie Interfejsy API JumpStart.
Poniższe sekcje zawierają omówienie sposobu wdrażania modelu i uruchamiania wnioskowania przy użyciu interfejsu użytkownika Studio lub interfejsów API JumpStart.
Pamiętaj, że korzystając z tego modelu, zgadzasz się na Licencja CreativeML Open RAIL++-M.
Uzyskaj dostęp do JumpStart przez interfejs użytkownika Studio
W tej sekcji pokazujemy, jak trenować i wdrażać modele JumpStart za pomocą interfejsu użytkownika programu Studio. Poniższy film pokazuje, jak znaleźć wstępnie przeszkolony model skalowania Stable Diffusion na JumpStart i wdrożyć go. Strona modelu zawiera cenne informacje o modelu i sposobie jego używania. Do wnioskowania używamy instancji typu ml.p3.2xlarge, ponieważ zapewnia ona akcelerację GPU potrzebną do niskiego opóźnienia wnioskowania w niskiej cenie. Po skonfigurowaniu instancji hostingowej SageMaker wybierz Rozmieścić. Zajmie to 5–10 minut, zanim punkt końcowy będzie działał i będzie gotowy do odpowiadania na żądania wnioskowania.
Aby przyspieszyć czas do wnioskowania, JumpStart udostępnia przykładowy notatnik, który pokazuje, jak uruchomić wnioskowanie na nowo utworzonym punkcie końcowym. Aby uzyskać dostęp do notesu w Studio, wybierz Otwórz notatnik Użyj punktu końcowego ze Studio sekcja strony punktu końcowego modelu.
Używaj programu JumpStart z pakietem SDK SageMaker
Możesz użyć interfejsu użytkownika JumpStart, aby interaktywnie wdrożyć wstępnie przeszkolony model za pomocą zaledwie kilku kliknięć. Można jednak również programowo używać modeli JumpStart, korzystając z interfejsów API zintegrowanych z zestawem SageMaker Python SDK.
W tej sekcji wybieramy odpowiedni wstępnie wytrenowany model w JumpStart, wdrażamy ten model w punkcie końcowym SageMaker i uruchamiamy wnioskowanie na wdrożonym punkcie końcowym, a wszystko to przy użyciu zestawu SageMaker Python SDK. Poniższe przykłady zawierają fragmenty kodu. Aby uzyskać pełny kod ze wszystkimi krokami w tej demonstracji, zobacz Wprowadzenie do JumpStart — Popraw jakość obrazu, kierując się monitami przykładowy notatnik.
Wdróż wstępnie wytrenowany model
SageMaker wykorzystuje kontenery Docker do różnych zadań kompilacji i wykonywania. JumpStart wykorzystuje Kontenery do głębokiego uczenia SageMaker (DLC), które są specyficzne dla platformy. Najpierw pobieramy wszelkie dodatkowe pakiety, a także skrypty do obsługi uczenia i wnioskowania dla wybranego zadania. Następnie wstępnie wytrenowane artefakty modelu są pobierane oddzielnie model_uris
, co zapewnia elastyczność platformy. Pozwala to na użycie wielu wstępnie wytrenowanych modeli z jednym skryptem wnioskowania. Poniższy kod ilustruje ten proces:
Następnie dostarczamy te zasoby do pliku a Model SageMakera instancję i wdrożyć punkt końcowy:
Po wdrożeniu naszego modelu możemy uzyskać z niego prognozy w czasie rzeczywistym!
Format wejściowy
Punkt końcowy akceptuje obraz o niskiej rozdzielczości jako surowe wartości RGB lub obraz zakodowany algorytmem Base64. Program obsługi wnioskowania dekoduje obraz na podstawie content_type
:
- W razie zamówieenia projektu
content_type = “application/json”
, wejściowy ładunek musi być słownikiem JSON z nieprzetworzonymi wartościami RGB, monitem tekstowym i innymi opcjonalnymi parametrami - W razie zamówieenia projektu
content_type = “application/json;jpeg”
, ładunek wejściowy musi być słownikiem JSON z obrazem zakodowanym w formacie base64, monitem tekstowym i innymi opcjonalnymi parametrami
Format wyjściowy
Poniższe przykłady kodu dają wgląd w to, jak wyglądają dane wyjściowe. Podobnie jak w przypadku formatu wejściowego, punkt końcowy może odpowiedzieć surowymi wartościami RGB obrazu lub obrazem zakodowanym w formacie base64. Można to określić przez ustawienie accept
do jednej z dwóch wartości:
- W razie zamówieenia projektu
accept = “application/json”
, punkt końcowy zwraca słownik JSON z wartościami RGB dla obrazu - W razie zamówieenia projektu
accept = “application/json;jpeg”
, punkt końcowy zwraca słownik JSON z obrazem JPEG w postaci bajtów zakodowanych z kodowaniem base64.b64
Należy pamiętać, że wysyłanie lub odbieranie ładunku z nieprzetworzonymi wartościami RGB może spowodować przekroczenie domyślnych limitów wejściowego ładunku i rozmiaru odpowiedzi. W związku z tym zalecamy użycie obrazu zakodowanego w formacie base64 przez ustawienie content_type = “application/json;jpeg”
i accept = “application/json;jpeg”
.
Poniższy kod jest przykładowym żądaniem wnioskowania:
Odpowiedź punktu końcowego to obiekt JSON zawierający wygenerowane obrazy i monit:
Obsługiwane parametry
Modele skalowania w górę ze stabilną dyfuzją obsługują wiele parametrów generowania obrazu:
- obraz – Obraz o niskiej rozdzielczości.
- podpowiedź – Monit, aby poprowadzić generowanie obrazu. Może to być ciąg znaków lub lista ciągów znaków.
- num_inference_steps (opcjonalnie) – Liczba kroków odszumiania podczas generowania obrazu. Więcej kroków prowadzi do wyższej jakości obrazu. Jeśli jest określony, musi być dodatnią liczbą całkowitą. Należy pamiętać, że więcej kroków wnioskowania prowadzi do dłuższego czasu odpowiedzi.
- skala_wskazówek (opcjonalnie) – Wyższa skala prowadzenia powoduje, że obraz jest bardziej zbliżony do monitu, kosztem jakości obrazu. Jeśli określono, musi to być liczba zmiennoprzecinkowa.
guidance_scale<=1
jest ignorowany. - negatywna_prompt (opcjonalnie) – To prowadzi generowanie obrazu do tego monitu. Jeśli jest określony, musi to być ciąg znaków lub lista ciągów znaków i używany z
guidance_scale
. Jeśliguidance_scale
jest wyłączone, to również jest wyłączone. Co więcej, jeśli zachęta jest listą ciągów znaków, to zmienna negatywna również musi być listą ciągów znaków. - nasiona (opcjonalnie) – To naprawia losowy stan dla odtwarzalności. Jeśli jest określony, musi być liczbą całkowitą. Ilekroć użyjesz tego samego monitu z tym samym materiałem siewnym, wynikowy obraz będzie zawsze taki sam.
- poziom_hałasu (opcjonalnie) – Powoduje to dodanie szumu do ukrytych wektorów przed skalowaniem w górę. Jeśli jest określony, musi być liczbą całkowitą.
Możesz rekurencyjnie skalować obraz w górę, wielokrotnie wywołując punkt końcowy, aby uzyskać obrazy o coraz wyższej jakości.
Rozmiar obrazu i typy instancji
Obrazy generowane przez model mogą być nawet czterokrotnie większe niż oryginalny obraz o niskiej rozdzielczości. Ponadto zapotrzebowanie na pamięć modelu (pamięć GPU) rośnie wraz z rozmiarem generowanego obrazu. Dlatego jeśli skalujesz już obraz o wysokiej rozdzielczości lub rekursywnie skalujesz obrazy, wybierz typ instancji z dużą pamięcią GPU. Na przykład ml.g5.2xlarge ma więcej pamięci GPU niż typ instancji ml.p3.2xlarge, którego używaliśmy wcześniej. Aby uzyskać więcej informacji na temat różnych typów instancji, zobacz Typy instancji Amazon EC2.
Skalowanie obrazów kawałek po kawałku
Aby zmniejszyć zapotrzebowanie na pamięć podczas skalowania dużych obrazów, można podzielić obraz na mniejsze sekcje, tzw Płytkii przeskaluj każdy kafelek z osobna. Po przeskalowaniu kafelków można je połączyć, aby uzyskać ostateczny obraz. Ta metoda wymaga dostosowania monitu dla każdego kafelka, aby model mógł zrozumieć zawartość kafelka i uniknąć tworzenia dziwnych obrazów. Część dotycząca stylu monitu powinna pozostać spójna dla wszystkich kafelków, aby ułatwić mieszanie. Podczas korzystania z wyższych ustawień usuwania szumów ważne jest, aby w monicie podać więcej szczegółów, ponieważ model ma większą swobodę w dostosowywaniu obrazu. Może to być trudne, gdy kafelek zawiera tylko tło lub nie jest bezpośrednio związany z główną treścią obrazu.
Ograniczenia i stronniczość
Mimo że Stable Diffusion ma imponującą wydajność w skalowaniu, ma kilka ograniczeń i uprzedzeń. Obejmują one między innymi:
- Model może nie generować dokładnych twarzy lub kończyn, ponieważ dane treningowe nie zawierają wystarczającej liczby obrazów z tymi funkcjami
- Model był szkolony na Zbiór danych LAION-5B, która zawiera treści dla dorosłych i może nie nadawać się do użytku w produkcie bez dalszych rozważań
- Model może nie działać dobrze z językami innymi niż angielski, ponieważ model został przeszkolony na tekście w języku angielskim
- Model nie może generować dobrego tekstu w obrazach
Aby uzyskać więcej informacji na temat ograniczeń i stronniczości, patrz Karta modelu upscalera Stable Difusion.
Sprzątać
Po zakończeniu uruchamiania notesu pamiętaj o usunięciu wszystkich zasobów utworzonych w procesie, aby mieć pewność, że rozliczenia zostaną zatrzymane. Kod służący do czyszczenia punktu końcowego jest dostępny w powiązanym pliku notatnik.
Wnioski
W tym poście pokazaliśmy, jak wdrożyć wstępnie wytrenowany model skalowania Stable Diffusion za pomocą funkcji JumpStart. W tym poście pokazaliśmy fragmenty kodu — pełny kod ze wszystkimi krokami w tej wersji demonstracyjnej jest dostępny w Wprowadzenie do JumpStart — Popraw jakość obrazu, kierując się monitami przykładowy notatnik. Wypróbuj rozwiązanie samodzielnie i prześlij nam swoje uwagi.
Aby dowiedzieć się więcej o modelu i sposobie jego działania, zobacz następujące zasoby:
Aby dowiedzieć się więcej o JumpStart, sprawdź następujące wpisy na blogu:
O autorach
Dr Vivek Madan jest naukowcem w zespole Amazon SageMaker JumpStart. Uzyskał doktorat na Uniwersytecie Illinois w Urbana-Champaign i był badaczem podoktoranckim w Georgia Tech. Jest aktywnym badaczem w dziedzinie uczenia maszynowego i projektowania algorytmów. Publikował artykuły na konferencjach EMNLP, ICLR, COLT, FOCS i SODA.
Heiko Hotza jest starszym architektem rozwiązań w zakresie sztucznej inteligencji i uczenia maszynowego, ze szczególnym uwzględnieniem przetwarzania języka naturalnego (NLP), dużych modeli językowych (LLM) i generatywnej sztucznej inteligencji. Przed objęciem tej roli był szefem działu Data Science w dziale obsługi klienta Amazon w UE. Heiko pomaga naszym klientom odnosić sukcesy w ich podróży AI/ML w AWS i współpracowała z organizacjami z wielu branż, w tym ubezpieczeń, usług finansowych, mediów i rozrywki, opieki zdrowotnej, użyteczności publicznej i produkcji. W wolnym czasie Heiko jak najwięcej podróżuje.
- Dystrybucja treści i PR oparta na SEO. Uzyskaj wzmocnienie już dziś.
- Platoblockchain. Web3 Inteligencja Metaverse. Wzmocniona wiedza. Dostęp tutaj.
- Źródło: https://aws.amazon.com/blogs/machine-learning/upscale-images-with-stable-diffusion-in-amazon-sagemaker-jumpstart/
- 100
- 2022
- 7
- a
- O nas
- przyśpieszyć
- Akceptuj
- Akceptuje
- dostęp
- Konto
- dokładny
- dokładnie
- osiągnięty
- aktywny
- przystosować
- Dodatkowy
- do tego
- Dodaje
- Dorosły
- Po
- przed
- AI
- AI i uczenie maszynowe
- AI / ML
- algorytm
- Wszystkie kategorie
- pozwala
- już
- zawsze
- Amazonka
- Amazon Sage Maker
- Amazon SageMaker JumpStart
- i
- Ogłosić
- api
- Pszczoła
- stosowany
- właściwy
- Artyści
- powiązany
- automatycznie
- dostępny
- AWS
- tło
- na podstawie
- bo
- zanim
- jest
- stronniczość
- billing
- Mieszanie
- Blog
- Najnowsze wpisy
- przerwa
- budować
- nazywa
- Może uzyskać
- CAT
- wyzwanie
- ZOBACZ
- Dodaj
- klasa
- jaśniejsze
- dokładnie
- kod
- komentarze
- w porównaniu
- konferencje
- zgodny
- Pojemnik
- Pojemniki
- zawiera
- zawartość
- kontekst
- przeliczone
- Stwórz
- stworzony
- Tworzenie
- zwyczaj
- klient
- Obsługa klienta
- Klientów
- dane
- nauka danych
- spadek
- głęboko
- głęboka nauka
- Domyślnie
- wykazać
- rozwijać
- wdrażane
- Wnętrze
- detal
- szczegółowe
- różne
- Transmitowanie
- bezpośrednio
- niepełnosprawny
- Doker
- Nie
- podczas
- każdy
- Wcześniej
- łatwiej
- ecommerce
- skutecznie
- bądź
- eliminując
- koniec końców
- Punkt końcowy
- Angielski
- zapewnić
- rozrywka
- wejście
- majątek
- EU
- przykład
- przykłady
- twarze
- Cecha
- Pobrano
- kilka
- filet
- finał
- budżetowy
- usługi finansowe
- Znajdź
- i terminów, a
- dopasować
- Elastyczność
- pływak
- Skupiać
- następujący
- format
- Wolność
- od
- pełny
- dalej
- Ponadto
- Generować
- wygenerowane
- generacja
- generatywny
- generatywna sztuczna inteligencja
- otrzymać
- Dać
- Dojrzeć
- dobry
- GPU
- Zielony
- Rośnie
- poprowadzi
- Przewodniki
- uchwyt
- głowa
- opieki zdrowotnej
- wysokość
- pomaga
- wysoka rozdzielczość
- wyższy
- Dobranie (Hit)
- Hosting
- W jaki sposób
- How To
- Jednak
- HTML
- HTTPS
- Illinois
- obraz
- zdjęcia
- ważny
- imponujący
- podnieść
- in
- zawierać
- Włącznie z
- Zwiększać
- Indywidualnie
- przemysłowa
- Informacja
- wkład
- przykład
- ubezpieczenie
- zintegrowany
- Interfejs
- IT
- podróż
- json
- znany
- język
- Języki
- duży
- Utajenie
- prowadzić
- UCZYĆ SIĘ
- nauka
- pozwala
- Ograniczenia
- Ograniczony
- Limity
- linie
- Lista
- dłużej
- Popatrz
- wygląda jak
- utraty
- niski
- maszyna
- uczenie maszynowe
- Główny
- robić
- podręcznik
- prace ręczne
- ręcznie
- produkcja
- wiele
- Mecz
- Media
- Pamięć
- metoda
- miliony
- minut
- ML
- model
- modele
- jeszcze
- wielokrotność
- Naturalny
- Przetwarzanie języka naturalnego
- Potrzebować
- Nowości
- nlp
- Hałas
- notatnik
- listopad
- numer
- przedmiot
- ONE
- koncepcja
- zamówienie
- organizacji
- oryginalny
- Inne
- przegląd
- własny
- Pakiety
- Papiery
- parametry
- część
- jest gwarancją najlepszej jakości, które mogą dostarczyć Ci Twoje monitory,
- obraz
- kawałek
- Platforma
- plato
- Analiza danych Platona
- PlatoDane
- punkt
- pozytywny
- możliwy
- Post
- Wiadomości
- uprawnienia
- przewidzieć
- Przewidywania
- Urządzenie prognozujące
- teraźniejszość
- Cena
- Wcześniejszy
- wygląda tak
- przetwarzanie
- Produkt
- zapewniać
- zapewnia
- że
- opublikowany
- Python
- jakość
- Randomizowane
- Surowy
- gotowy
- real
- nieruchomość
- odbieranie
- polecić
- związane z
- pozostawać
- WIELOKROTNIE
- zażądać
- wywołań
- wymagać
- wymaganie
- wymagania
- Wymaga
- badacz
- Rozkład
- Zasoby
- Odpowiadać
- odpowiedź
- dalsze
- wynikły
- Efekt
- powrót
- powraca
- RGB
- Rola
- run
- bieganie
- sagemaker
- taki sam
- Skala
- nauka
- Naukowiec
- Ekrany
- skrypty
- Sdk
- druga
- Sekcja
- działy
- nasienie
- wybrany
- wysyłanie
- senior
- usługa
- Usługi
- ustawienie
- w panelu ustawień
- kilka
- powinien
- pokazać
- Targi
- znaczący
- Podobnie
- pojedynczy
- Rozmiar
- mniejszy
- gładsze
- So
- rozwiązanie
- Rozwiązania
- specjalny
- specyficzny
- określony
- stabilny
- Stan
- Cel
- zatrzymany
- studio
- styl
- udany
- taki
- Cierpią
- wystarczający
- wsparcie
- Brać
- trwa
- Zadanie
- zadania
- zespół
- tech
- Techniki
- Testy
- Połączenia
- ich
- w związku z tym
- Przez
- czas
- czasy
- do
- już dziś
- razem
- tradycyjny
- Pociąg
- przeszkolony
- Trening
- podróże
- typy
- ui
- zrozumieć
- uniwersytet
- us
- posługiwać się
- Użytkownik
- Interfejs użytkownika
- Użytkowe
- wykorzystuje
- Cenny
- Wartości
- różnorodny
- przez
- Wideo
- sposoby
- Co
- który
- biały
- będzie
- w ciągu
- bez
- Praca
- pracować razem
- pracował
- działa
- You
- Twój
- zefirnet