Exafunction поддерживает AWS Inferentia, чтобы обеспечить наилучшее соотношение цены и качества для машинного обучения PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Exafunction поддерживает AWS Inferentia, чтобы обеспечить наилучшее соотношение цены и качества для логического вывода на основе машинного обучения.

Во всех отраслях модели машинного обучения (ML) становятся все более глубокими, рабочие процессы усложняются, а рабочие нагрузки выполняются в больших масштабах. Значительные усилия и ресурсы направлены на то, чтобы сделать эти модели более точными, поскольку эти инвестиции напрямую приводят к улучшению продуктов и опыта. С другой стороны, обеспечение эффективной работы этих моделей в производственной среде — нетривиальная задача, которую часто упускают из виду, несмотря на то, что она является ключом к достижению целей по производительности и бюджету. В этом посте мы расскажем, как Exafunction и Вывод AWS работать вместе, чтобы обеспечить простое и экономичное развертывание моделей машинного обучения в производственной среде.

Экзафункция — это стартап, нацеленный на то, чтобы помочь компаниям максимально эффективно выполнять машинное обучение в масштабе. Одним из их продуктов является ЭксаДеплой, простое в использовании решение SaaS для обслуживания рабочих нагрузок машинного обучения в масштабе. ExaDeploy эффективно координирует рабочие нагрузки машинного обучения для смешанных ресурсов (ЦП и аппаратных ускорителей) для максимального использования ресурсов. Он также заботится об автоматическом масштабировании, совместном размещении вычислений, проблемах с сетью, отказоустойчивости и многом другом, чтобы обеспечить эффективное и надежное развертывание. На базе AWS Inferentia Инстансы Amazon EC2 Inf1 специально созданы для обеспечения наименьшей стоимости вывода в облаке. ExaDeploy теперь поддерживает экземпляры Inf1, что позволяет пользователям экономить как на аппаратном уровне за счет ускорителей, так и на программном обеспечении за счет оптимизированной виртуализации ресурсов и оркестровки в масштабе.

Обзор решения

Как ExaDeploy помогает повысить эффективность развертывания

Чтобы обеспечить эффективное использование вычислительных ресурсов, необходимо учитывать правильное распределение ресурсов, автоматическое масштабирование, совместное размещение вычислений, управление сетевыми затратами и задержками, отказоустойчивость, управление версиями и воспроизводимость и многое другое. В масштабе любая неэффективность существенно влияет на затраты и задержки, и многие крупные компании справились с этой неэффективностью путем создания внутренних команд и опыта. Однако большинству компаний нецелесообразно брать на себя эти финансовые и организационные накладные расходы на создание универсального программного обеспечения, которое не является желаемой основной компетенцией компании.

ExaDeploy предназначен для решения этих проблем с эффективностью развертывания, в том числе тех, которые наблюдаются в некоторых из наиболее сложных рабочих нагрузок, таких как приложения для автономных транспортных средств и обработки естественного языка (NLP). При выполнении некоторых больших пакетных рабочих нагрузок машинного обучения ExaDeploy сократил расходы более чем на 85 %, не жертвуя задержкой или точностью, а время интеграции составляет всего один инженерно-день. Доказано, что ExaDeploy автоматически масштабируется и управляет тысячами одновременных экземпляров ресурсов аппаратного ускорителя без какого-либо снижения производительности системы.

Ключевые особенности ExaDeploy включают в себя:

  • Работает в вашем облаке: ни одна из ваших моделей, входов или выходов никогда не покидает вашу частную сеть. Продолжайте использовать скидки вашего поставщика облачных услуг.
  • Общие ресурсы ускорителя: ExaDeploy оптимизирует используемые ускорители, позволяя нескольким моделям или рабочим нагрузкам совместно использовать ресурсы ускорителя. Он также может определять, развертывается ли одна и та же модель несколькими рабочими нагрузками, а затем совместно использовать модель для этих рабочих нагрузок, тем самым оптимизируя используемый ускоритель. Его возможности автоматической перебалансировки и слива узлов максимизируют использование и минимизируют затраты.

Exafunction поддерживает AWS Inferentia, чтобы обеспечить наилучшее соотношение цены и качества для машинного обучения PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

  • Масштабируемая бессерверная модель развертывания: ExaDeploy автоматически масштабируется в зависимости от насыщения ресурсов ускорителя. Динамическое масштабирование до 0 или до тысяч ресурсов.
  • Поддержка различных типов вычислений: вы можете выгрузить модели глубокого обучения из всех основных платформ машинного обучения, а также из произвольного кода C++, ядер CUDA, пользовательских операций и функций Python.
  • Регистрация динамической модели и управление версиями: новые модели или версии моделей могут быть зарегистрированы и запущены без перестройки или повторного развертывания системы.
  • Точечное выполнение: клиенты подключаются напрямую к удаленным ресурсам ускорителя, что обеспечивает низкую задержку и высокую пропускную способность. Они даже могут хранить состояние удаленно.
  • Асинхронное выполнение: ExaDeploy поддерживает асинхронное выполнение моделей, что позволяет клиентам распараллеливать локальные вычисления с работой удаленных ресурсов ускорителя.
  • Отказоустойчивые удаленные конвейеры: ExaDeploy позволяет клиентам динамически объединять удаленные вычисления (модели, предварительная обработка и т. д.) в конвейеры с гарантией отказоустойчивости. Система ExaDeploy обрабатывает сбои модулей или узлов с помощью автоматического восстановления и воспроизведения, поэтому разработчикам никогда не приходится думать об обеспечении отказоустойчивости.
  • Готовый мониторинг: ExaDeploy предоставляет метрики Prometheus и информационные панели Grafana для визуализации использования ресурсов ускорителя и других системных метрик.

ExaDeploy поддерживает AWS Inferentia

Инстансы Amazon EC2 Inf1 на базе AWS Inferentia предназначены для специальных рабочих нагрузок для глубокого обучения. Эти экземпляры обеспечивают до 2.3-кратного увеличения пропускной способности и до 70% экономии средств по сравнению с текущим поколением экземпляров логических выводов на GPU.

ExaDeploy теперь поддерживает AWS Inferentia, и вместе они позволяют повысить производительность и сократить расходы, достигаемые благодаря специально разработанному аппаратному ускорению и оптимизированному управлению ресурсами в масштабе. Давайте посмотрим на совместные преимущества ExaDeploy и AWS Inferentia, рассмотрев очень распространенную современную рабочую нагрузку машинного обучения: пакетные, смешанные рабочие нагрузки.

Характеристики гипотетической рабочей нагрузки:

  • 15 мс предварительной/постпроцессной обработки только для ЦП
  • Вывод модели (15 мс на GPU, 5 мс на AWS Inferentia)
  • 10 клиентов, каждый делает запрос каждые 20 мс
  • Приблизительная относительная стоимость CPU:Inferentia:GPU составляет 1:2:4 (на основе цен Amazon EC2 On-Demand для c5.xlarge, inf1.xlarge и g4dn.xlarge).

В таблице ниже показано, как формируется каждый из вариантов:

Установка Необходимые ресурсы Цена Задержка
GPU без ExaDeploy 2 ЦП, 2 ГП на клиент (всего 20 ЦП, 20 ГП) 100 30 мс
GPU с ExaDeploy 8 GPU совместно используются 10 клиентами, 1 CPU на клиент 42 30 мс
AWS Inferentia без ExaDeploy 1 ЦП, 1 AWS Inferentia на клиент (всего 10 ЦП, 10 Inferentia) 30 20 мс
AWS Inferentia с ExaDeploy 3 AWS Inferentia совместно используются 10 клиентами, 1 ЦП на клиент 16 20 мс

ExaDeploy на примере AWS Inferentia

В этом разделе мы рассмотрим шаги по настройке ExaDeploy на примере с узлами inf1 в модели BERT PyTorch. Мы увидели среднюю пропускную способность 1140 выборок в секунду для базовой модели bert, что демонстрирует, что ExaDeploy практически не вносил накладные расходы для этой единственной модели и сценария с одной рабочей нагрузкой.

Шаг 1: настроить Амазон Эластик Кубернетес Сервис (Amazon EKS) кластер

Кластер Amazon EKS можно создать с помощью нашего Модуль Terraform AWS. Для нашего примера мы использовали inf1.xlarge для AWS Inferentia.

Шаг 2: Настроить ExaDepoy

Второй шаг — настроить ExaDeploy. В целом развертывание ExaDeploy на инстансах inf1 не вызывает затруднений. Установка в основном выполняется той же процедурой, что и для экземпляров графического процессора (GPU). Основное отличие заключается в изменении тега модели с GPU на AWS Inferentia и повторной компиляции модели. Например, для перехода с экземпляров g4dn на экземпляры inf1 с использованием интерфейсов прикладного программирования (API) ExaDeploy потребовалось изменить всего около 10 строк кода.

  • Одним из простых способов является использование Exafunction's Модуль Terraform AWS Kubernetes or диаграмма руля. Они развертывают основные компоненты ExaDeploy для работы в кластере Amazon EKS.
  • Скомпилируйте модель в сериализованный формат (например, TorchScript, сохраненные модели TF, ONNX и т. д.). Для AWS Inferentia мы следовали этот учебник.
  • Зарегистрируйте скомпилированную модель в репозитории модулей ExaDeploy.
    with exa.ModuleRepository(MODULE_REPOSITORY_ADDRESS) as repo:
       repo.register_py_module(
           "BertInferentia",
           module_class="TorchModule",
           context_data=BERT_NEURON_TORCHSCRIPT_AS_BYTES,
           config={
               "_torchscript_input_names": ",".join(BERT_INPUT_NAMES).encode(),
               "_torchscript_output_names": BERT_OUTPUT_NAME.encode(),
               "execution_type": "inferentia".encode(),
           },
       )

  • Подготовьте данные для модели (т.е. не ExaDeploy-specific).
    tokenizer = transformers.AutoTokenizer.from_pretrained(
       "bert-base-cased-finetuned-mrpc"
    )
    
    batch_encoding = tokenizer.encode_plus(
       "The company Exafunction is based in the Bay Area",
       "Exafunction’s headquarters are situated in Mountain View",
       max_length=MAX_LENGTH,
       padding="max_length",
       truncation=True,
       return_tensors="pt",
    )

  • Запустите модель удаленно из клиента.
    with exa.Session(
       scheduler_address=SCHEDULER_ADDRESS,
       module_tag="BertInferentia",
       constraint_config={
           "KUBERNETES_NODE_SELECTORS": "role=runner-inferentia",
           "KUBERNETES_ENV_VARS": "AWS_NEURON_VISIBLE_DEVICES=ALL",
       },
    ) as sess:
       bert = sess.new_module("BertInferentia")
       classification_logits = bert.run(
           **{
               key: value.numpy()
               for key, value in batch_encoding.items()
           }
       )[BERT_OUTPUT_NAME].numpy()
    
       # Assert that the model classifies the two statements as paraphrase.
       assert classification_logits[0].argmax() == 1

ExaDeploy и AWS Inferentia: лучше вместе

AWS Inferentia расширяет границы пропускной способности для вывода моделей и обеспечивает самую низкую стоимость вывода в облаке. При этом компаниям требуется надлежащее согласование, чтобы воспользоваться преимуществами соотношения цены и качества Inf1 в масштабе. Обслуживание машинного обучения — это сложная проблема, которая, если ее решать собственными силами, требует опыта, не связанного с целями компании, и часто приводит к задержке сроков выпуска продукта. ExaDeploy, программное решение Exafunction для развертывания машинного обучения, стало лидером отрасли. Он обслуживает даже самые сложные рабочие нагрузки машинного обучения, обеспечивая плавную интеграцию и поддержку со стороны команды мирового класса. Вместе ExaDeploy и AWS Inferentia обеспечивают повышение производительности и экономию средств для рабочих нагрузок логических выводов в масштабе.

Заключение

В этом посте мы показали, как Exafunction поддерживает AWS Inferentia для машинного обучения производительности. Для получения дополнительной информации о создании приложений с помощью Exafunction посетите веб-сайт Экзафункция. Рекомендации по созданию рабочих нагрузок глубокого обучения на Inf1 см. на странице Инстансы Amazon EC2 Inf1.


Об авторах

Николас Цзян, инженер-программист, Exafunction

Джонатан Ма, инженер-программист, Exafunction

Прем Наир, инженер-программист, Exafunction

Аншул Рамачандран, инженер-программист, Exafunction

Шрути Копаркар, старший менеджер по маркетингу продуктов, AWS

Отметка времени:

Больше от Машинное обучение AWS