Uruchom generowanie tekstu za pomocą modeli GPT i Bloom w Amazon SageMaker JumpStart

W grudniu 2020, Ogłoszono AWS ogólna dostępność Amazon SageMaker JumpStart, zdolność Amazon Sage Maker który pomaga szybko i łatwo rozpocząć pracę z uczeniem maszynowym (ML). JumpStart zapewnia dostrajanie jednym kliknięciem i wdrażanie szerokiej gamy wstępnie przeszkolonych modeli w popularnych zadaniach ML, a także wybór kompleksowych rozwiązań, które rozwiązują typowe problemy biznesowe. Te funkcje eliminują konieczność podnoszenia ciężarów na każdym etapie procesu ML, ułatwiając opracowywanie modeli wysokiej jakości i skracając czas wdrażania.

Ten post jest czwartym z serii na temat używania JumpStart do określonych zadań ML. w pierwszy postpokazaliśmy, jak uruchamiać przypadki użycia klasyfikacji obrazów w programie JumpStart. w drugi post, pokazaliśmy, jak uruchomić przypadki użycia klasyfikacji tekstu. w trzeci post, przeprowadziliśmy przypadki użycia segmentacji obrazu.

W tym poście przedstawiamy przewodnik krok po kroku dotyczący wdrażania wstępnie przeszkolonych modeli generowania tekstu. Badamy dwa sposoby uzyskania tego samego wyniku: za pomocą interfejsu graficznego JumpStart Studio Amazon SageMakeri programowo przez Interfejsy API JumpStart.

Jeśli chcesz przejść bezpośrednio do kodu interfejsu API JumpStart, który omawiamy w tym poście, możesz zapoznać się z następującym przykładowym notatnikiem Jupyter: Wprowadzenie do JumpStart – generowanie tekstu.

Przegląd programu JumpStart

JumpStart pomaga rozpocząć pracę z modelami ML do różnych zadań bez pisania ani jednego wiersza kodu. Obecnie JumpStart umożliwia wykonanie następujących czynności:

  • Wdrażaj wstępnie wytrenowane modele do typowych zadań ML – JumpStart umożliwia rozwiązywanie typowych zadań ML bez wysiłku programistycznego, zapewniając łatwe wdrażanie modeli wstępnie wytrenowanych na dużych, publicznie dostępnych zestawach danych. Społeczność naukowa zajmująca się ML włożyła wiele wysiłku w publiczne udostępnienie do użytku większości niedawno opracowanych modeli. JumpStart zawiera kolekcję ponad 300 modeli, obejmującą 15 najpopularniejszych zadań ML, takich jak wykrywanie obiektów, klasyfikacja tekstu i generowanie tekstu, co ułatwia początkującym korzystanie z nich. Modele te pochodzą z popularnych hubów modelowych, takich jak TensorFlow, PyTorch, Hugging Face i MXNet.
  • Dostosuj wstępnie wytrenowane modele – JumpStart umożliwia precyzyjne dostrojenie wstępnie wytrenowanych modeli bez konieczności pisania własnego algorytmu treningowego. W ML umiejętność transferu wiedzy wyuczonej w jednej domenie do innej nazywa się przenieś naukę. Możesz użyć uczenia transferu do tworzenia dokładnych modeli na mniejszych zestawach danych, przy znacznie niższych kosztach uczenia niż te związane z trenowaniem oryginalnego modelu. JumpStart zawiera również popularne algorytmy szkoleniowe oparte na LightGBM, CatBoost, XGBoost i Scikit-learn, które można trenować od podstaw pod kątem regresji tabelarycznej i klasyfikacji.
  • Korzystaj z gotowych rozwiązań – JumpStart zapewnia zestaw 17 rozwiązań dla typowych przypadków użycia ML, takich jak prognozowanie popytu oraz aplikacje przemysłowe i finansowe, które można wdrożyć za pomocą kilku kliknięć. Rozwiązania to kompleksowe aplikacje ML, które łączą różne usługi AWS w celu rozwiązania określonego biznesowego przypadku użycia. Oni używają Tworzenie chmury AWS szablony i architektury referencyjne do szybkiego wdrażania, co oznacza, że ​​można je w pełni dostosować.
  • Zapoznaj się z przykładami z notatników, aby uzyskać informacje na temat algorytmów SageMaker – SageMaker zapewnia zestaw wbudowanych algorytmów, które pomagają naukowcom danych i praktykom ML w szybkim rozpoczęciu szkolenia i wdrażania modeli ML. JumpStart udostępnia przykładowe notesy, których można użyć do szybkiego wykorzystania tych algorytmów.
  • Przejrzyj filmy szkoleniowe i blogi – JumpStart udostępnia również liczne posty na blogu i filmy, które uczą, jak korzystać z różnych funkcji w SageMaker.

JumpStart akceptuje niestandardowe ustawienia VPC i Usługa zarządzania kluczami AWS (AWS KMS) klucze szyfrowania, dzięki którym możesz bezpiecznie korzystać z dostępnych modeli i rozwiązań w swoim środowisku korporacyjnym. Możesz przekazać swoje ustawienia bezpieczeństwa do JumpStart w Studio lub za pomocą pakietu SDK SageMaker Python.

Generowanie tekstu, GPT-2 i Bloom

Generowanie tekstu to zadanie generowania tekstu, który jest płynny i wydaje się nie do odróżnienia od tekstu napisanego przez człowieka. Jest również znany jako generowanie języka naturalnego.

GPT-2 to popularny model generowania tekstu oparty na transformatorze. Jest wstępnie przeszkolony na dużym zbiorze nieprzetworzonego tekstu w języku angielskim bez etykietowania przez ludzi. Jest przeszkolony w zadaniu, w którym na podstawie częściowej sekwencji (zdania lub fragmentu tekstu) model musi przewidzieć następne słowo lub token w sekwencji.

Bloom jest również modelem generowania tekstu opartym na transformatorach i wyszkolonym podobnie do GPT-2. Jednak Bloom jest wstępnie przeszkolony w zakresie 46 różnych języków i 13 języków programowania. Poniżej znajduje się przykład uruchamiania generowania tekstu za pomocą modelu Blooma:

Input: "Some people like dogs, some people like cats"
Output: "Some people like dogs, some people like cats some people like birds, some people like fish,"

Omówienie rozwiązania

Poniższe sekcje zawierają demonstrację krok po kroku, jak przeprowadzić wnioskowanie, zarówno za pośrednictwem interfejsu użytkownika Studio, jak i interfejsów API JumpStart. Przechodzimy przez następujące kroki:

  1. Uzyskaj dostęp do JumpStart za pośrednictwem interfejsu użytkownika Studio, aby wdrożyć i uruchomić wnioskowanie na wstępnie wytrenowanym modelu.
  2. Użyj programu JumpStart z pakietem SDK w języku SageMaker w języku Python, aby wdrożyć wstępnie wytrenowany model i uruchomić wnioskowanie.

Uzyskaj dostęp do JumpStart za pośrednictwem interfejsu użytkownika Studio i uruchom wnioskowanie za pomocą wstępnie wytrenowanego modelu

W tej sekcji pokazujemy, jak trenować i wdrażać modele JumpStart za pomocą interfejsu użytkownika Studio.

Poniższy film wideo pokazuje, jak znaleźć wstępnie przeszkolony model generowania tekstu w usłudze JumpStart i wdrożyć go. Strona modelu zawiera cenne informacje o modelu i sposobie jego używania. Możesz wdrożyć dowolny z wstępnie wyszkolonych modeli dostępnych w JumpStart. Do wnioskowania wybieramy typ instancji ml.p3.2xlarge, ponieważ zapewnia on akcelerację GPU potrzebną do niskiego opóźnienia wnioskowania w niskiej cenie. Po skonfigurowaniu instancji hostingowej SageMaker wybierz Rozmieścić. Uruchomienie trwałego punktu końcowego może zająć 20–25 minut.

Gdy punkt końcowy zacznie działać, będzie gotowy do odpowiadania na żądania wnioskowania!

Aby przyspieszyć Twój czas na wnioskowanie, JumpStart udostępnia przykładowy notes, który pokazuje, jak uruchomić wnioskowanie na świeżo wdrożonym punkcie końcowym. Wybierać Otwórz notatnik dla Użyj punktu końcowego ze Studio.

Używaj programu JumpStart z pakietem SDK SageMaker

W poprzedniej sekcji pokazaliśmy, jak można użyć interfejsu użytkownika JumpStart do interaktywnego wdrożenia wstępnie wytrenowanego modelu za pomocą kilku kliknięć. Można jednak również programowo używać modeli JumpStart, korzystając z interfejsów API zintegrowanych z pakietem SDK SageMaker.

W tej sekcji omówimy szybki przykład, w jaki sposób można zreplikować poprzedni proces za pomocą pakietu SageMaker SDK. 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. Wszystkie kroki opisane w tym demo są dostępne w dołączonym notatniku Wprowadzenie do JumpStart – generowanie tekstu.

Wdróż wstępnie wytrenowany model

SageMaker to platforma, która w szerokim zakresie wykorzystuje kontenery Docker do zadań kompilacji i wykonywania. JumpStart korzysta z dostępnej platformy specyficznej Kontenery do głębokiego uczenia SageMaker (DLC). W pierwszej kolejności pobieramy dodatkowe pakiety, a także skrypty do obsługi szkolenia i wnioskowania dla wybranego zadania. Na koniec wytrenowane artefakty modelu są osobno pobierane za pomocą model_uris, co zapewnia elastyczność platformy. Możesz użyć dowolnej liczby modeli wstępnie wytrenowanych w tym samym zadaniu za pomocą jednego skryptu wnioskowania. Zobacz następujący kod:

model_id, model_version = "huggingface-textgeneration-bloom-560m", "*"

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve(
    region=None,
    framework=None,  # automatically inferred from model_id
    image_scope="inference",
    model_id=model_id,
    model_version=model_version,
    instance_type=inference_instance_type,
)

# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="inference")

base_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="inference")

Bloom to bardzo duży model, a jego rozłożenie może zająć do 20–25 minut. Możesz także użyć mniejszego modelu, takiego jak GPT-2. Aby wdrożyć wstępnie przeszkolony model GPT-2, możesz ustawić model_id = huggingface-textgeneration-gpt2. Aby uzyskać listę innych modeli dostępnych w JumpStart, zobacz Tabela dostępnych modeli JumpStart.

Następnie wrzucamy zasoby do Model SageMakera instancję i wdrożyć punkt końcowy:

# Create the SageMaker model instance
model = Model(
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    model_data=base_model_uri,
    entry_point="inference.py",  # entry point file in source_dir and present in deploy_source_uri
    role=aws_role,
    predictor_cls=Predictor,
    name=endpoint_name,
)

# deploy the Model. Note that we need to pass Predictor class when we deploy model through Model class,
# for being able to run inference through the sagemaker API.
base_model_predictor = model.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    predictor_cls=Predictor,
    endpoint_name=endpoint_name,
)

Po wdrożeniu naszego modelu możemy uzyskać z niego prognozy w czasie rzeczywistym!

Uruchom wnioskowanie

Poniższy fragment kodu daje wgląd w to, jak wyglądają dane wyjściowe. Aby wysłać żądania do wdrożonego modelu, należy podać tekst wejściowy w formacie utf-8 zakodowany format.

def query(model_predictor, text):
    """Query the model predictor."""

    encoded_text = json.dumps(text).encode("utf-8")

    query_response = model_predictor.predict(
        encoded_text,
        {
            "ContentType": "application/x-text",
            "Accept": "application/json",
        },
    )
    return query_response

Odpowiedź punktu końcowego to obiekt JSON zawierający tekst wejściowy, po którym następuje wygenerowany tekst:

def parse_response(query_response):
    """Parse response and return the generated text."""

    model_predictions = json.loads(query_response)
    generated_text = model_predictions["generated_text"]
    return generated_text
    
text = "Some people like dogs, some people like cats"
query_response = query(model_predictor, text)
parse_response(query_response)

Nasze dane wyjściowe są następujące:

"Some people like dogs, some people like cats some people like birds, some people like fish,"

Wnioski

W tym poście pokazaliśmy, jak wdrożyć wstępnie wytrenowany model generowania tekstu za pomocą JumpStart. Możesz to zrobić bez konieczności pisania kodu. Wypróbuj rozwiązanie samodzielnie i prześlij nam swoje uwagi. Aby dowiedzieć się więcej o programie JumpStart i sposobach używania przeszkolonych modeli typu open source do różnych innych zadań ML, zapoznaj się z następującym artykułem AWS re:Wymyśl wideo 2020.


O autorach

Uruchom generowanie tekstu za pomocą modeli GPT i Bloom na Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.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.

Uruchom generowanie tekstu za pomocą modeli GPT i Bloom na Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Santosz Kulkarni jest architektem rozwiązań dla przedsiębiorstw w Amazon Web Services, który współpracuje z klientami sportowymi w Australii. Pasjonuje się budowaniem rozproszonych aplikacji na dużą skalę do rozwiązywania problemów biznesowych, wykorzystując swoją wiedzę z zakresu AI/ML, big data i tworzenia oprogramowania.

Uruchom generowanie tekstu za pomocą modeli GPT i Bloom na Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Dr Ashish Khetan jest starszym naukowcem z wbudowanymi algorytmami Amazon SageMaker i pomaga rozwijać algorytmy uczenia maszynowego. Doktoryzował się na University of Illinois Urbana Champaign. Jest aktywnym badaczem uczenia maszynowego i wnioskowania statystycznego oraz opublikował wiele artykułów na konferencjach NeurIPS, ICML, ICLR, JMLR, ACL i EMNLP.

Znak czasu:

Więcej z Uczenie maszynowe AWS