Успіх генеративних програм штучного інтелекту в багатьох галузях привернув увагу та інтерес компаній у всьому світі, які прагнуть відтворити та перевершити досягнення конкурентів або розв’язати нові та захоплюючі випадки використання. Ці клієнти шукають базові моделі, такі як TII Falcon, Stable Diffusion XL або OpenAI GPT-3.5, як механізми, що забезпечують генеративні інновації ШІ.
Основні моделі — це клас генеративних моделей штучного інтелекту, які здатні розуміти та генерувати людський вміст завдяки величезній кількості неструктурованих даних, на яких їх навчали. Ці моделі революціонізували різні завдання комп’ютерного зору (CV) і обробки природної мови (NLP), включаючи створення зображень, переклад і відповіді на запитання. Вони служать будівельними блоками для багатьох додатків AI і стали вирішальним компонентом у розробці передових інтелектуальних систем.
Однак розгортання базових моделей може стикатися зі значними труднощами, особливо з точки зору витрат і вимог до ресурсів. Ці моделі відомі своїм розміром, який часто варіюється від сотень мільйонів до мільярдів параметрів. Їхній великий розмір вимагає великих обчислювальних ресурсів, включаючи потужне апаратне забезпечення та значний обсяг пам’яті. Насправді для розгортання основних моделей зазвичай потрібен принаймні один (часто більше) графічний процесор для ефективної обробки обчислювального навантаження. Наприклад, модель TII Falcon-40B Instruct вимагає принаймні екземпляра ml.g5.12xlarge для успішного завантаження в пам’ять, але найкраще працює з більшими екземплярами. Як наслідок, рентабельність інвестицій (ROI) від розгортання та підтримки цих моделей може бути занадто низькою, щоб підтвердити цінність для бізнесу, особливо під час циклів розробки або при різких навантаженнях. Це пов’язано з експлуатаційними витратами на наявність екземплярів із живленням графічного процесора для тривалих сеансів, потенційно 24/7.
На початку цього року ми оголосили Amazon Bedrock, безсерверний API для доступу до базових моделей від Amazon і наших партнерів із створення AI. Незважаючи на те, що наразі він знаходиться в режимі приватного попереднього перегляду, його безсерверний API дозволяє використовувати базові моделі від Amazon, Anthropic, Stability AI та AI21, не розгортаючи будь-які кінцеві точки самостійно. Однак моделі з відкритим кодом від таких спільнот, як Hugging Face, значно розширюються, і не кожна з них стала доступною через Amazon Bedrock.
У цьому дописі ми розглянемо ці ситуації та вирішимо проблему ризику високих витрат шляхом розгортання великих фундаментальних моделей для Amazon SageMaker асинхронні кінцеві точки від Amazon SageMaker JumpStart. Це може допомогти скоротити витрати на архітектуру, дозволяючи кінцевій точці працювати лише тоді, коли запити знаходяться в черзі та протягом короткого часу життя, одночасно зменшуючи масштаб до нуля, коли жодних запитів не чекає на обслуговування. Це звучить чудово для багатьох випадків використання; однак кінцева точка, яка зменшена до нуля, запровадить час холодного запуску, перш ніж вона зможе обслуговувати висновки.
Огляд рішення
Наступна схема ілюструє нашу архітектуру рішення.
Архітектура, яку ми розгортаємо, дуже проста:
- Інтерфейс користувача — це блокнот, який можна замінити веб-інтерфейсом, створеним на основі Streamlit або подібної технології. У нашому випадку це зошит Студія Amazon SageMaker ноутбук, що працює на примірнику ml.m5.large із ядром ЦП PyTorch 2.0 Python 3.10.
- Блокнот запитує кінцеву точку трьома способами: SageMaker Python SDK, AWS SDK для Python (Boto3) і LangChain.
- Кінцева точка працює асинхронно на SageMaker, і на кінцевій точці ми розгортаємо модель Falcon-40B Instruct. На даний момент це сучасні моделі з інструкціями та доступні в SageMaker JumpStart. Один виклик API дозволяє нам розгорнути модель на кінцевій точці.
Що таке асинхронний висновок SageMaker
Асинхронний висновок SageMaker є одним із чотирьох варіантів розгортання в SageMaker разом із кінцевими точками реального часу, пакетним висновком і безсерверним висновком. Щоб дізнатися більше про різні варіанти розгортання, див Розгортання моделей для висновків.
Асинхронний висновок SageMaker ставить вхідні запити в чергу та обробляє їх асинхронно, що робить цей параметр ідеальним для запитів із великими розмірами корисного навантаження до 1 ГБ, тривалим часом обробки та вимогами до затримки майже в реальному часі. Однак основною перевагою, яку він надає при роботі з великими базовими моделями, особливо під час перевірки концепції (POC) або під час розробки, є можливість налаштувати асинхронний висновок для масштабування до нульової кількості екземплярів, коли немає запитів до процесу, тим самим заощаджуючи витрати. Додаткову інформацію про асинхронний висновок SageMaker див Асинхронний висновок. Наступна діаграма ілюструє цю архітектуру.
Щоб розгорнути кінцеву точку асинхронного висновку, вам потрібно створити AsyncInferenceConfig
об'єкт. Якщо ви створюєте AsyncInferenceConfig
без вказівки своїх аргументів, за замовчуванням S3OutputPath
буде s3://sagemaker-{REGION}-{ACCOUNTID}/async-endpoint-outputs/{UNIQUE-JOB-NAME}
та S3FailurePath
буде s3://sagemaker-{REGION}-{ACCOUNTID}/async-endpoint-failures/{UNIQUE-JOB-NAME}
.
Що таке SageMaker JumpStart
Наша модель походить від SageMaker JumpStart, функції SageMaker, яка прискорює процес машинного навчання (ML), пропонуючи попередньо підготовлені моделі, шаблони рішень і приклади блокнотів. Він надає доступ до широкого спектру попередньо підготовлених моделей для різних типів проблем, дозволяючи вам починати виконання завдань ML із міцної основи. SageMaker JumpStart також пропонує шаблони рішень для типових випадків використання та приклади зошитів для навчання. За допомогою SageMaker JumpStart ви можете скоротити час і зусилля, необхідні для запуску ваших проектів ML, запустивши рішення одним клацанням миші та вичерпні ресурси для практичного досвіду ML.
На наступному знімку екрана показано приклад лише деяких моделей, доступних в інтерфейсі користувача SageMaker JumpStart.
Розгортання моделі
Наш перший крок — це розгортання моделі в SageMaker. Для цього ми можемо використати UI для SageMaker JumpStart або SageMaker Python SDK, який надає API, який ми можемо використовувати для розгортання моделі в асинхронній кінцевій точці:
Цей виклик може тривати приблизно 10 хвилин. Протягом цього часу кінцева точка розгортається, контейнер разом із артефактами моделі завантажується в кінцеву точку, конфігурація моделі завантажується з SageMaker JumpStart, а потім асинхронна кінцева точка відкривається через кінцеву точку DNS. Щоб переконатися, що наша кінцева точка може зменшити масштаб до нуля, нам потрібно налаштувати автоматичне масштабування на асинхронній кінцевій точці за допомогою автоматичного масштабування програми. Спершу вам потрібно зареєструвати свій варіант кінцевої точки в програмі Auto Scaling, визначити політику масштабування, а потім застосувати політику масштабування. У цій конфігурації ми використовуємо спеціальну метрику за допомогою CustomizedMetricSpecification
, Називаний ApproximateBacklogSizePerInstance
, як показано в наступному коді. Для детального переліку Amazon CloudWatch метрики, доступні з кінцевою точкою асинхронного висновку, див Моніторинг за допомогою CloudWatch.
Ви можете переконатися, що цю політику встановлено успішно, перейшовши до консолі SageMaker, вибравши Кінцеві точки при Висновок на панелі навігації та шукаємо кінцеву точку, яку ми щойно розгорнули.
Викликати асинхронну кінцеву точку
Щоб викликати кінцеву точку, потрібно розмістити корисне навантаження запиту Служба простого зберігання Amazon (Amazon S3) і надайте вказівник на це корисне навантаження як частину InvokeEndpointAsync
запит. Після виклику SageMaker ставить запит у чергу на обробку та повертає ідентифікатор і місце виведення як відповідь. Після обробки SageMaker розміщує результат у розташуванні Amazon S3. Додатково можна вибрати сповіщення про успіх або помилку Служба простих сповіщень Amazon (Amazon SNS).
SageMaker Python SDK
Після завершення розгортання він поверне AsyncPredictor
об'єкт. Щоб виконати асинхронний висновок, вам потрібно завантажити дані в Amazon S3 і використовувати predict_async()
метод із S3 URI як вхід. Він поверне an AsyncInferenceResponse
і ви можете перевірити результат за допомогою get_response()
метод.
Крім того, якщо ви хочете періодично перевіряти результат і повертати його після генерації, використовуйте predict()
метод. Ми використовуємо цей другий метод у наступному коді:
Бото3
Давайте тепер вивчимо invoke_endpoint_async
метод від Boto3 sagemaker-runtime
клієнт. Це дозволяє розробникам асинхронно викликати кінцеву точку SageMaker, надаючи маркер для відстеження прогресу та отримання відповіді пізніше. Boto3 не пропонує спосіб очікування завершення асинхронного висновку, як SageMaker Python SDK get_result()
операція. Тому ми користуємося тим фактом, що Boto3 зберігатиме вихідні дані в Amazon S3 у response["OutputLocation"]
. Ми можемо використати таку функцію, щоб дочекатися, поки файл висновків буде записаний в Amazon S3:
За допомогою цієї функції тепер ми можемо запитувати кінцеву точку:
LangChain
LangChain — це фреймворк із відкритим вихідним кодом, запущений Харрісоном Чейзом у жовтні 2022 року. Він спрощує розробку додатків з використанням великих мовних моделей (LLM), забезпечуючи інтеграцію з різними системами та джерелами даних. LangChain дозволяє аналізувати документи, підсумовувати, створювати чат-ботів, аналізувати код тощо. Він набув популярності завдяки внескам сотень розробників і значному фінансуванню венчурними фірмами. LangChain дозволяє підключати LLM до зовнішніх джерел, що дозволяє створювати динамічні додатки, що реагують на дані. Він пропонує бібліотеки, API та документацію для спрощення процесу розробки.
LangChain надає бібліотеки та приклади використання кінцевих точок SageMaker зі своєю структурою, що полегшує використання моделей ML, розміщених на SageMaker як «мозку» ланцюжка. Щоб дізнатися більше про те, як LangChain інтегрується з SageMaker, зверніться до Кінцева точка SageMaker у документації LangChain.
Одним із обмежень поточної реалізації LangChain є те, що вона не підтримує асинхронні кінцеві точки. Щоб використовувати асинхронну кінцеву точку для LangChain, нам потрібно визначити новий клас, SagemakerAsyncEndpoint
, що розширює SagemakerEndpoint
клас вже доступний у LangChain. Додатково ми надаємо наступну інформацію:
- Відро S3 і префікс, де асинхронний висновок зберігатиме вхідні дані (і виходи)
- Максимальна кількість секунд очікування перед тайм-аутом
- An
updated _call()
функція для запиту кінцевої точкиinvoke_endpoint_async()
замістьinvoke_endpoint()
- Спосіб пробудження асинхронної кінцевої точки, якщо вона перебуває в режимі холодного запуску (зменшено до нуля)
Для перегляду новоствореного SagemakerAsyncEndpoint
, ви можете перевірити sagemaker_async_endpoint.py
файл доступно на GitHub.
Прибирати
Закінчивши тестування створення висновків із кінцевої точки, не забудьте видалити кінцеву точку, щоб уникнути додаткових витрат:
Висновок
Під час розгортання великих базових моделей, таких як TII Falcon, оптимізація витрат є надзвичайно важливою. Для цих моделей потрібне потужне апаратне забезпечення та значний обсяг пам’яті, що призводить до високих витрат на інфраструктуру. Асинхронний висновок SageMaker, варіант розгортання, який обробляє запити асинхронно, зменшує витрати, масштабуючи кількість екземплярів до нуля, коли немає запитів, що очікують на розгляд. У цій публікації ми продемонстрували, як розгортати великі базові моделі SageMaker JumpStart на асинхронних кінцевих точках SageMaker. Ми надали приклади коду з використанням SDK SageMaker Python, Boto3 і LangChain, щоб проілюструвати різні методи виклику асинхронних кінцевих точок і отримання результатів. Ці методи дозволяють розробникам і дослідникам оптимізувати витрати, використовуючи можливості базових моделей для передових систем розуміння мови.
Щоб дізнатися більше про асинхронний висновок і SageMaker JumpStart, перегляньте такі публікації:
Про автора
Давіде Галлітеллі є спеціалістом архітектора рішень для AI/ML у регіоні EMEA. Він базується в Брюсселі і тісно співпрацює з клієнтами по всьому Бенілюксу. Він був розробником з самого дитинства, почавши кодувати у віці 7 років. Він почав вивчати AI/ML в університеті і з тих пір закохався в нього.
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoData.Network Vertical Generative Ai. Додайте собі сили. Доступ тут.
- PlatoAiStream. Web3 Intelligence. Розширення знань. Доступ тут.
- ПлатонЕСГ. Автомобільні / електромобілі, вуглець, CleanTech, Енергія, Навколишнє середовище, Сонячна, Поводження з відходами. Доступ тут.
- PlatoHealth. Розвідка про біотехнології та клінічні випробування. Доступ тут.
- ChartPrime. Розвивайте свою торгову гру за допомогою ChartPrime. Доступ тут.
- BlockOffsets. Модернізація екологічної компенсаційної власності. Доступ тут.
- джерело: https://aws.amazon.com/blogs/machine-learning/optimize-deployment-cost-of-amazon-sagemaker-jumpstart-foundation-models-with-amazon-sagemaker-asynchronous-endpoints/
- : має
- :є
- : ні
- :де
- $UP
- 1
- 10
- 100
- 12
- 13
- 15%
- 1M
- 2022
- 25
- 7
- a
- Здатний
- МЕНЮ
- прискорюється
- Приймає
- доступ
- Досягнення
- через
- діяльність
- Додатково
- просунутий
- Перевага
- після
- вік
- AI
- Моделі AI
- AI / ML
- Дозволити
- дозволяє
- вже
- Також
- хоча
- Amazon
- Amazon SageMaker
- Amazon SageMaker JumpStart
- Amazon Web Services
- кількість
- суми
- an
- аналіз
- та
- оголошений
- Інший
- Антропний
- будь-який
- API
- Інтерфейси
- додаток
- застосування
- Застосовувати
- архітектура
- ЕСТЬ
- аргументація
- Art
- AS
- At
- увагу
- приваблюваний
- автоматичний
- доступний
- середній
- уникнути
- AWS
- заснований
- BE
- ставати
- було
- перед тим
- буття
- КРАЩЕ
- більший
- мільярди
- блоки
- тіло
- Перерва
- Брюссель
- Створюємо
- побудований
- бізнес
- але
- by
- call
- званий
- CAN
- можливості
- можливості
- здатний
- потужність
- випадок
- випадків
- ланцюг
- ланцюга
- проблеми
- вантажі
- погоня
- Chatbot
- перевірка
- Вибирати
- Вибираючи
- клас
- клієнт
- тісно
- код
- холодний
- Приходити
- приходить
- загальний
- спільноти
- Компанії
- конкурентів
- повний
- Зроблено
- Завершує
- компонент
- всеосяжний
- комп'ютер
- Комп'ютерне бачення
- концепція
- конфігурація
- зв'язку
- Консоль
- Контейнер
- зміст
- внески
- Коштувати
- витрати
- створювати
- створений
- створення
- вирішальне значення
- Поточний
- В даний час
- виготовлений на замовлення
- Клієнти
- Вирізати
- скоротити витрати
- циклів
- дані
- справу
- дефолт
- визначати
- запити
- продемонстрований
- розгортання
- розгорнути
- розгортання
- розгортання
- докладно
- DEV
- Розробник
- розробників
- розробка
- DICT
- різний
- радіомовлення
- розміри
- інвалід
- DNS
- do
- документ
- документація
- Ні
- зроблений
- вниз
- два
- під час
- динамічний
- e
- легше
- продуктивно
- зусилля
- ще
- в регіоні EMEA
- включіть
- дозволяє
- Кінцева точка
- Двигуни
- досить
- помилка
- особливо
- Кожен
- приклад
- Приклади
- Крім
- виняток
- захоплюючий
- витрати
- досвід
- дослідити
- піддаватися
- продовжується
- обширний
- зовнішній
- додатково
- Face
- факт
- Fallen
- false
- особливість
- філе
- фірми
- Перший
- після
- для
- фонд
- чотири
- Рамки
- від
- функція
- фінансування
- отримала
- генерується
- породжує
- покоління
- генеративний
- Генеративний ШІ
- GitHub
- добре
- Графічні процесори
- великий
- Зростання
- обробляти
- апаратні засоби
- Мати
- має
- he
- допомога
- тут
- Високий
- відбувся
- Як
- How To
- Однак
- HTML
- HTTP
- HTTPS
- Сотні
- сотні мільйонів
- ідеальний
- ідентифікатор
- if
- ілюструє
- зображення
- реалізація
- імпорт
- in
- У тому числі
- Вхідний
- вказує
- промисловості
- інформація
- Інфраструктура
- інновація
- вхід
- витрати
- екземпляр
- замість
- Інтеграція
- інтеграцій
- Розумний
- інтерес
- інтерфейс
- в
- вводити
- інвестиції
- IT
- ЙОГО
- подорож
- JPG
- json
- просто
- відомий
- мова
- великий
- Затримка
- пізніше
- запущений
- запуски
- провідний
- УЧИТЬСЯ
- вивчення
- найменш
- libraries
- як
- рамки
- список
- загрузка
- розташування
- Довго
- шукати
- серія
- любов
- низький
- машина
- навчання за допомогою машини
- made
- головний
- Підтримка
- зробити
- Робить
- багато
- Макс
- максимальний
- пам'ять
- метод
- методика
- метрика
- Метрика
- мільйони
- хвилин
- ML
- модель
- Моделі
- більше
- ім'я
- Природний
- Обробка природних мов
- навігація
- навігація
- Необхідність
- Нові
- нещодавно
- наступний
- nlp
- немає
- ноутбук
- сповіщення
- Повідомлення
- зараз
- номер
- об'єкт
- жовтень
- of
- пропонувати
- пропонує
- Пропозиції
- часто
- on
- ONE
- тільки
- з відкритим вихідним кодом
- операція
- Оптимізувати
- оптимізуючий
- варіант
- Опції
- or
- наші
- з
- вихід
- pane
- параметри
- частина
- особливо
- партнери
- в очікуванні
- Виконувати
- виступає
- картина
- місце
- місця
- plato
- Інформація про дані Платона
- PlatoData
- PoC
- політика
- популярність
- це можливо
- пошта
- Пости
- потенційно
- влада
- потужний
- Практичний
- прогноз
- Прогноз
- попередній перегляд
- друк
- приватний
- Проблема
- процес
- процеси
- обробка
- прогрес
- проектів
- доказ
- доказ концепції
- Доведіть
- забезпечувати
- за умови
- забезпечує
- забезпечення
- Python
- піторх
- запити
- питання
- підвищення
- діапазон
- ранжування
- Читати
- готовий
- реального часу
- отримати
- зменшити
- знижує
- регіон
- реєструвати
- запам'ятати
- видаляти
- замінити
- запросити
- запитів
- вимагати
- вимагається
- Вимога
- Вимагається
- Дослідники
- ресурс
- ресурси
- відповідь
- результат
- результати
- повертати
- Умови повернення
- огляд
- революціонізували
- ризикуючи
- ROI
- прогін
- біг
- мудрець
- економія
- масштабовані
- шкала
- Масштабування
- Sdk
- другий
- seconds
- SELF
- служити
- Без сервера
- обслуговування
- Послуги
- сесіях
- комплект
- Короткий
- показаний
- Шоу
- значний
- аналогічний
- простий
- з
- один
- ситуацій
- Розмір
- розміри
- solid
- рішення
- Рішення
- ВИРІШИТИ
- деякі
- Джерела
- спеціаліст
- крутився
- Стабільність
- стабільний
- старт
- почалася
- Починаючи
- стан
- Крок
- Стоп
- зберігання
- зберігати
- просто
- раціоналізувати
- істотний
- успіх
- Успішно
- такі
- підтримка
- Опори
- Переконайтеся
- перевершувати
- Systems
- Приймати
- Мета
- завдання
- методи
- Технологія
- Шаблони
- terms
- Тестування
- Дякую
- Що
- Команда
- Держава
- їх
- Їх
- потім
- Там.
- тим самим
- отже
- Ці
- вони
- це
- У цьому році
- три
- через
- по всьому
- час
- times
- синхронізація
- до
- разом
- знак
- занадто
- Відстеження
- навчений
- Переклад
- правда
- намагатися
- Типи
- ui
- при
- розуміння
- університет
- до
- на
- us
- використання
- користувач
- Інтерфейс користувача
- використання
- зазвичай
- значення
- варіант
- різний
- величезний
- підприємство
- перевірити
- дуже
- через
- бачення
- чекати
- Очікування
- послуга
- Прокидайся
- хотіти
- було
- шлях..
- способи
- we
- Web
- веб-сервіси
- коли
- Чи
- який
- в той час як
- ВООЗ
- широкий
- Широкий діапазон
- волі
- з
- без
- Виграв
- працює
- світовий
- б
- письмовий
- рік
- Ти
- молодий
- вашу
- себе
- зефірнет
- нуль