Запустіть генерацію тексту за допомогою моделей GPT і Bloom на Amazon SageMaker JumpStart

У грудні 2020, AWS оголосив загальна доступність Amazon SageMaker JumpStart, здатність Amazon SageMaker який допоможе вам швидко та легко розпочати роботу з машинним навчанням (ML). JumpStart забезпечує тонке налаштування одним кліком і розгортання широкого спектру попередньо навчених моделей для популярних завдань ML, а також вибір наскрізних рішень, які вирішують типові бізнес-проблеми. Ці функції знімають важку роботу з кожного кроку процесу ML, полегшуючи розробку високоякісних моделей і скорочуючи час до розгортання.

Ця публікація є четвертою в серії про використання JumpStart для конкретних завдань ML. В перший пост, ми показали, як запускати випадки використання класифікації зображень на JumpStart. В друга посада, ми продемонстрували, як запускати випадки використання класифікації тексту. В третій пост, ми запустили сценарії використання сегментації зображень.

У цій публікації ми надаємо покрокові інструкції щодо розгортання попередньо навчених моделей генерації тексту. Ми досліджуємо два способи отримання того самого результату: через графічний інтерфейс JumpStart Студія Amazon SageMaker, і програмно через API JumpStart.

Якщо ви хочете відразу перейти до коду JumpStart API, який ми розглядаємо в цій публікації, ви можете звернутися до наступного зразка блокнота Jupyter: Вступ до JumpStart – генерування тексту.

Огляд JumpStart

JumpStart допоможе вам розпочати роботу з моделями ML для різноманітних завдань без написання жодного рядка коду. Наразі JumpStart дає вам змогу робити наступне:

  • Розгортайте попередньо навчені моделі для поширених завдань ML – JumpStart дає змогу вирішувати звичайні завдання ML без зусиль розробки, забезпечуючи просте розгортання моделей, попередньо навчених на великих загальнодоступних наборах даних. Дослідницьке співтовариство ML доклало багато зусиль, щоб зробити більшість нещодавно розроблених моделей загальнодоступними для використання. JumpStart містить колекцію з понад 300 моделей, що охоплюють 15 найпопулярніших завдань ML, таких як виявлення об’єктів, класифікація тексту та генерація тексту, що полегшує їх використання для початківців. Ці моделі створено з популярних центрів моделей, таких як TensorFlow, PyTorch, Hugging Face і MXNet.
  • Точна настройка попередньо навчених моделей – JumpStart дозволяє точніше налаштовувати попередньо навчені моделі без необхідності писати власний алгоритм навчання. У ML це називається здатність передавати знання, отримані в одній області, в іншу трансферне навчання. Ви можете використовувати передачу навчання для створення точних моделей на невеликих наборах даних із значно нижчими витратами на навчання, ніж витрати на навчання вихідної моделі. JumpStart також включає популярні навчальні алгоритми на основі LightGBM, CatBoost, XGBoost і Scikit-learn, які можна навчити з нуля для табличної регресії та класифікації.
  • Використовуйте готові рішення – JumpStart надає набір із 17 рішень для типових випадків використання машинного навчання, таких як прогнозування попиту та промислові та фінансові програми, які можна розгорнути лише кількома клацаннями. Рішення — це наскрізні програми ML, які об’єднують різноманітні служби AWS для вирішення конкретного бізнес-випадку використання. Вони використовують AWS CloudFormation шаблони та еталонні архітектури для швидкого розгортання, що означає, що вони повністю настроюються.
  • Зверніться до прикладів блокнотів для алгоритмів SageMaker – SageMaker надає набір вбудованих алгоритмів, щоб допомогти фахівцям із обробки даних і практикам ML розпочати навчання та швидко розгортати моделі ML. JumpStart надає зразки блокнотів, які можна використовувати для швидкого використання цих алгоритмів.
  • Перегляньте навчальні відео та блоги – JumpStart також надає численні публікації в блозі та відео, які навчають вас, як використовувати різні функції в SageMaker.

JumpStart приймає користувацькі налаштування VPC і Служба управління ключами AWS (AWS KMS) ключі шифрування, щоб ви могли безпечно використовувати доступні моделі та рішення в корпоративному середовищі. Ви можете передати свої параметри безпеки в JumpStart в Studio або через SageMaker Python SDK.

Генерація тексту, GPT-2 і Bloom

Генерація тексту — це завдання генерування тексту, який є вільним і виглядає невідрізним від тексту, написаного людиною. Він також відомий як породження природної мови.

GPT-2 — популярна модель генерації тексту на основі трансформатора. Його попередньо навчено на великому корпусі необробленого тексту англійською мовою без людського маркування. Він навчається на завданні, де, задана часткова послідовність (речення або фрагмент тексту), модель повинна передбачити наступне слово або лексему в послідовності.

Bloom також є моделлю генерації тексту на основі трансформатора, яка навчається подібно до GPT-2. Однак Блум попередньо навчений 46 різних мов і 13 мов програмування. Нижче наведено приклад запуску генерації тексту за допомогою моделі Bloom:

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,"

Огляд рішення

У наступних розділах наведено покрокову демонстрацію для виконання висновків як через інтерфейс користувача Studio, так і через JumpStart API. Ми проходимо наступні кроки:

  1. Отримайте доступ до JumpStart через користувальницький інтерфейс Studio, щоб розгорнути та виконати висновок на попередньо навченій моделі.
  2. Використовуйте JumpStart програмно з SageMaker Python SDK, щоб розгорнути попередньо навчену модель і запустити висновок.

Отримайте доступ до JumpStart через користувальницький інтерфейс Studio та запустіть висновок із попередньо навченою моделлю

У цьому розділі ми демонструємо, як навчати та розгортати моделі JumpStart за допомогою інтерфейсу користувача Studio.

У наступному відео показано, як знайти попередньо навчену модель генерації тексту на JumpStart і розгорнути її. Сторінка моделі містить цінну інформацію про модель і способи її використання. Ви можете розгорнути будь-яку з попередньо навчених моделей, доступних у JumpStart. Для висновку ми вибираємо тип екземпляра ml.p3.2xlarge, оскільки він забезпечує прискорення GPU, необхідне для низької затримки висновку за низькою ціною. Після налаштування екземпляра хостингу SageMaker виберіть Розгортання. Може знадобитися 20–25 хвилин, перш ніж ваша постійна кінцева точка запрацює.

Коли ваша кінцева точка запрацює, вона готова відповідати на запити висновків!

Щоб прискорити ваш час, щоб зробити висновок, JumpStart надає зразок блокнота, який показує вам, як виконувати висновки на вашій щойно розгорнутій кінцевій точці. Виберіть Відкрийте Блокнот при Використовуйте Endpoint із Studio.

Використовуйте JumpStart програмно з SageMaker SDK

У попередньому розділі ми показали, як можна використовувати інтерфейс користувача JumpStart для розгортання попередньо навченої моделі в інтерактивному режимі за кілька кліків. Однак ви також можете використовувати моделі JumpStart програмно за допомогою API, інтегрованих у SDK SageMaker.

У цьому розділі ми розглянемо короткий приклад того, як ви можете відтворити попередній процес за допомогою SDK SageMaker. Ми вибираємо відповідну попередньо навчену модель у JumpStart, розгортаємо цю модель на кінцевій точці SageMaker і запускаємо висновок на розгорнутій кінцевій точці. Усі кроки цієї демонстрації доступні в блокноті, що додається Вступ до JumpStart – генерування тексту.

Розгорніть попередньо навчену модель

SageMaker — це платформа, яка широко використовує контейнери Docker для завдань побудови та виконання. JumpStart використовує доступний фреймворк Контейнери глибокого навчання SageMaker (DLC). Спочатку ми отримуємо будь-які додаткові пакети, а також сценарії для обробки навчання та висновків для вибраного завдання. Нарешті, попередньо підготовлені артефакти моделі вибираються окремо model_uris, що забезпечує гнучкість платформи. Ви можете використовувати будь-яку кількість моделей, попередньо навчених для того самого завдання за допомогою одного сценарію висновку. Перегляньте наступний код:

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 — дуже велика модель, її розгортання може зайняти 20–25 хвилин. Ви також можете використовувати меншу модель, наприклад GPT-2. Щоб розгорнути попередньо навчену модель GPT-2, ви можете встановити model_id = huggingface-textgeneration-gpt2. Список інших доступних моделей у JumpStart див JumpStart Таблиця доступних моделей.

Далі ми подаємо ресурси в a Модель SageMaker створити екземпляр і розгорнути кінцеву точку:

# 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,
)

Після розгортання нашої моделі ми можемо отримувати прогнози з неї в режимі реального часу!

Виконайте висновок

Наступний фрагмент коду дає вам уявлення про те, як виглядають результати. Щоб надіслати запити до розгорнутої моделі, вхідний текст має бути наданий у a utf-8 закодований формат.

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

Відповідь кінцевої точки – це об’єкт JSON, який містить вхідний текст, за яким слідує згенерований текст:

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)

Наш результат такий:

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

Висновок

У цій публікації ми показали, як розгорнути попередньо навчену модель генерації тексту за допомогою JumpStart. Ви можете зробити це без необхідності писати код. Спробуйте рішення самостійно та надішліть нам свої коментарі. Щоб дізнатися більше про JumpStart і про те, як ви можете використовувати попередньо навчені моделі з відкритим кодом для багатьох інших завдань ML, перегляньте наступне Відео AWS re:Invent 2020.


Про авторів

Запустіть генерацію тексту за допомогою моделей GPT і Bloom на Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Доктор Вівек Мадан є прикладним науковцем у команді Amazon SageMaker JumpStart. Він отримав ступінь доктора філософії в Університеті Іллінойсу в Урбана-Шампейн і був науковим співробітником у технічному університеті Джорджії. Він є активним дослідником машинного навчання та розробки алгоритмів і публікував статті на конференціях EMNLP, ICLR, COLT, FOCS і SODA.

Запустіть генерацію тексту за допомогою моделей GPT і Bloom на Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Сантош Кулкарні є архітектором корпоративних рішень в Amazon Web Services, який працює зі спортивними клієнтами в Австралії. Він захоплений створенням масштабних розподілених додатків для вирішення бізнес-завдань, використовуючи свої знання в області ШІ/ML, великих даних і розробки програмного забезпечення.

Запустіть генерацію тексту за допомогою моделей GPT і Bloom на Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Доктор Ашиш Хетан є старшим прикладним науковим співробітником із вбудованими алгоритмами Amazon SageMaker і допомагає розробляти алгоритми машинного навчання. Він отримав ступінь доктора філософії в Університеті Іллінойсу Урбана Шампейн. Він активно досліджує машинне навчання та статистичні висновки та опублікував багато статей на конференціях NeurIPS, ICML, ICLR, JMLR, ACL та EMNLP.

Часова мітка:

Більше від AWS Машинне навчання