Потокове передавання відповідей великої мовної моделі в Amazon SageMaker JumpStart | Веб-сервіси Amazon

Потокове передавання відповідей великої мовної моделі в Amazon SageMaker JumpStart | Веб-сервіси Amazon

Ми раді повідомити про це Amazon SageMaker JumpStart тепер може транслювати відповіді на висновок великої мовної моделі (LLM). Потокова передача маркерів дозволяє вам бачити вихідні дані відповіді моделі під час їх створення, замість того, щоб чекати, поки LLM завершить генерацію відповіді, перш ніж він стане доступним для використання або відображення. Можливість потокової передачі в SageMaker JumpStart може допомогти вам створювати програми з кращим користуванням, створюючи відчуття низької затримки для кінцевого користувача.

У цій публікації ми розглянемо, як розгорнути та передати відповідь від a Модель Falcon 7B Instruct кінцева точка.

На момент написання цієї статті такі LLM, доступні в SageMaker JumpStart, підтримують потокове передавання:

  • Містраль AI 7B, Містраль AI 7B Instruct
  • Falcon 180B, Falcon 180B Чат
  • Falcon 40B, Falcon 40B Instruct
  • Falcon 7B, Falcon 7B Instruct
  • Rinna Japanese GPT NeoX 4B Інструкція PPO
  • Rinna Japanese GPT NeoX 3.6B Інструкція PPO

Щоб перевірити наявність оновлень у списку моделей, які підтримують потокове передавання в SageMaker JumpStart, знайдіть «huggingface-llm» на сторінці Вбудовані алгоритми з попередньо навченою таблицею моделей.

Зауважте, що ви можете використовувати функція потокової передачі of Amazon SageMaker хостинг із коробки для будь-якої моделі, розгорнутої за допомогою SageMaker TGI Deep Learning Container (DLC), як описано в Оголошуємо про запуск нових контейнерів Hugging Face LLM Inference на Amazon SageMaker.

Моделі основи в SageMaker

SageMaker JumpStart надає доступ до ряду моделей із популярних центрів моделювання, зокрема Hugging Face, PyTorch Hub і TensorFlow Hub, які ви можете використовувати в процесі розробки ML у SageMaker. Нещодавні досягнення в ML дали початок новому класу моделей, відомих як моделі фундаменту, які зазвичай навчаються на мільярдах параметрів і можуть бути адаптовані до широкої категорії випадків використання, таких як узагальнення тексту, створення цифрового мистецтва та мовний переклад. Оскільки навчання цих моделей є дорогим, клієнти хочуть використовувати існуючі попередньо навчені базові моделі та налаштовувати їх за потреби, а не навчати ці моделі самостійно. SageMaker надає підібраний список моделей, які можна вибрати на консолі SageMaker.

Тепер ви можете знайти моделі основи від різних постачальників моделей у SageMaker JumpStart, що дає змогу швидко розпочати роботу з моделями основи. SageMaker JumpStart пропонує базові моделі на основі різних завдань або постачальників моделей, і ви можете легко переглянути характеристики моделі та умови використання. Ви також можете спробувати ці моделі за допомогою тестового віджета інтерфейсу користувача. Якщо ви хочете використовувати базову модель у великому масштабі, ви можете зробити це, не виходячи з SageMaker, використовуючи готові блокноти від постачальників моделей. Оскільки моделі розміщуються та розгортаються на AWS, ви вірите, що ваші дані, незалежно від того, чи використовуються вони для оцінки чи використання моделі в масштабі, не будуть передані третім особам.

Потік токенів

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

На момент написання цієї статті ви можете використовувати потокове передавання в SageMaker JumpStart для моделей, які використовують Hugging Face LLM Висновок про створення тексту DLC.

Відповідь без відпарювання Відповідь за допомогою потокового передавання

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

У цій публікації ми використовуємо модель Falcon 7B Instruct, щоб продемонструвати можливість потокової передачі SageMaker JumpStart.

Ви можете використовувати наступний код, щоб знайти інші моделі в SageMaker JumpStart, які підтримують потокове передавання:

from sagemaker.jumpstart.notebook_utils import list_jumpstart_models
from sagemaker.jumpstart.filters import And filter_value = And("task == llm", "framework == huggingface")
model_ids = list_jumpstart_models(filter=filter_value)
print(model_ids)

Ми отримуємо такі ідентифікатори моделі, які підтримують потокове передавання:

['huggingface-llm-bilingual-rinna-4b-instruction-ppo-bf16', 'huggingface-llm-falcon-180b-bf16', 'huggingface-llm-falcon-180b-chat-bf16', 'huggingface-llm-falcon-40b-bf16', 'huggingface-llm-falcon-40b-instruct-bf16', 'huggingface-llm-falcon-7b-bf16', 'huggingface-llm-falcon-7b-instruct-bf16', 'huggingface-llm-mistral-7b', 'huggingface-llm-mistral-7b-instruct', 'huggingface-llm-rinna-3-6b-instruction-ppo-bf16']

Передумови

Перш ніж запустити ноутбук, потрібно виконати деякі початкові кроки для налаштування. Виконайте такі команди:

%pip install --upgrade sagemaker –quiet

Розгортання моделі

Як перший крок, використовуйте SageMaker JumpStart для розгортання моделі Falcon 7B Instruct. Повні інструкції див Модель фундаменту Falcon 180B від TII тепер доступна через Amazon SageMaker JumpStart. Використовуйте наступний код:

from sagemaker.jumpstart.model import JumpStartModel my_model = JumpStartModel(model_id="huggingface-llm-falcon-7b-instruct-bf16")
predictor = my_model.deploy()

Запит кінцевої точки та відповідь потоку

Далі створіть корисне навантаження для виклику вашої розгорнутої кінцевої точки. Важливо, що корисне навантаження має містити пару ключ/значення "stream": True. Це вказує серверу висновку генерації тексту створити потокову відповідь.

payload = { "inputs": "How do I build a website?", "parameters": {"max_new_tokens": 256}, "stream": True
}

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

import io
import json class TokenIterator: def __init__(self, stream): self.byte_iterator = iter(stream) self.buffer = io.BytesIO() self.read_pos = 0 def __iter__(self): return self def __next__(self): while True: self.buffer.seek(self.read_pos) line = self.buffer.readline() if line and line[-1] == ord("n"): self.read_pos += len(line) + 1 full_line = line[:-1].decode("utf-8") line_data = json.loads(full_line.lstrip("data:").rstrip("/n")) return line_data["token"]["text"] chunk = next(self.byte_iterator) self.buffer.seek(0, io.SEEK_END) self.buffer.write(chunk["PayloadPart"]["Bytes"])

Тепер ви можете використовувати Boto3 invoke_endpoint_with_response_stream API на кінцевій точці, яку ви створили, і ввімкніть потокове передавання, переглянувши a TokenIterator примірник:

import boto3 client = boto3.client("runtime.sagemaker")
response = client.invoke_endpoint_with_response_stream( EndpointName=predictor.endpoint_name, Body=json.dumps(payload), ContentType="application/json",
) for token in TokenIterator(response["Body"]): print(token, end="")

Вказівка ​​пустого end параметр до print увімкне візуальний потік без вставлення символів нового рядка. Це дає такий результат:

Building a website can be a complex process, but it generally involves the following steps: 1. Determine the purpose and goals of your website
2. Choose a domain name and hosting provider
3. Design and develop your website using HTML, CSS, and JavaScript
4. Add content to your website and optimize it for search engines
5. Test and troubleshoot your website to ensure it is working properly
6. Maintain and update your website regularly to keep it running smoothly. There are many resources available online to guide you through these steps, including tutorials and templates. It may also be helpful to seek the advice of a web developer or designer if you are unsure about any of these steps.<|endoftext|>

Ви можете використовувати цей код у блокноті чи інших програмах, таких як Streamlit або Gradio, щоб побачити потокове передавання в дії та досвід, який він надає вашим клієнтам.

Прибирати

Нарешті, не забудьте очистити свою розгорнуту модель і кінцеву точку, щоб уникнути додаткових витрат:

predictor.delete_model()
predictor.delete_endpoint()

Висновок

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


Про авторів

Потокове передавання відповідей великої мовної моделі в Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Рачна Чадха є головним архітектором рішень AI/ML у Strategic Accounts в AWS. Рахна — оптиміст, який вірить, що етичне та відповідальне використання ШІ може покращити суспільство в майбутньому та принести економічне та соціальне процвітання. У вільний час Рачна любить проводити час з сім'єю, гуляти в походах і слухати музику.

Потокове передавання відповідей великої мовної моделі в Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Доктор Кайл Ульріх є прикладним науковцем з Вбудовані алгоритми Amazon SageMaker команда. Його дослідницькі інтереси включають масштабовані алгоритми машинного навчання, комп’ютерне бачення, часові ряди, байєсівські непараметричні процеси та процеси Гаусса. Його доктор філософії отримав в Університеті Дьюка, і він опублікував статті в NeurIPS, Cell і Neuron.

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

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

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