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

Exafunction підтримує AWS Inferentia, щоб розблокувати найкращу цінову продуктивність для машинного навчання

У всіх галузях промисловості моделі машинного навчання (ML) стають глибшими, робочі процеси стають складнішими, а робочі навантаження працюють у більших масштабах. Докладено значних зусиль і ресурсів, щоб зробити ці моделі точнішими, оскільки ці інвестиції безпосередньо призводять до кращих продуктів і досвіду. З іншого боку, забезпечити ефективну роботу цих моделей у виробництві є нетривіальною справою, про яку часто не помічають, незважаючи на те, що вона є ключовою для досягнення продуктивності та бюджету. У цій публікації ми розглянемо, як Exafunction і AWS Inferentia працювати разом, щоб розблокувати просте та економічно ефективне розгортання моделей ML у виробництві.

Екзафункція – це стартап, який зосереджений на тому, щоб дати можливість компаніям якнайефективніше виконувати ML у великих масштабах. Одним із їхніх продуктів є ExaDeploy, просте у використанні рішення SaaS для обслуговування робочих навантажень машинного навчання в масштабі. ExaDeploy ефективно організовує ваші робочі навантаження ML на змішаних ресурсах (ЦП і апаратні прискорювачі), щоб максимізувати використання ресурсів. Він також піклується про автоматичне масштабування, колокацію обчислень, проблеми з мережею, відмовостійкість тощо, щоб забезпечити ефективне та надійне розгортання. На основі AWS Inferentia Екземпляри Amazon EC2 Inf1 створені спеціально для забезпечення найнижчої ціни за висновок у хмарі. ExaDeploy тепер підтримує екземпляри Inf1, що дозволяє користувачам отримати як апаратну економію прискорювачів, так і програмну економію оптимізованої віртуалізації ресурсів і оркестровки в масштабі.

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

Як ExaDeploy забезпечує ефективність розгортання

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

ExaDeploy розроблено для вирішення проблем, пов’язаних із ефективністю розгортання, включно з тими, що спостерігаються в деяких із найскладніших робочих навантажень, таких як автономні транспортні засоби та програми обробки природної мови (NLP). На деяких великих пакетних робочих навантаженнях ML ExaDeploy зменшив витрати на понад 85% без шкоди для затримки чи точності, а час інтеграції становить лише один інженер-день. Доведено, що ExaDeploy автоматично масштабується та керує тисячами одночасних екземплярів ресурсів апаратного прискорювача без погіршення системи.

Основні функції ExaDeploy включають:

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

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

  • Масштабована безсерверна модель розгортання: ExaDeploy автоматично масштабується на основі насиченості ресурсів прискорювача. Динамічно зменшуйте масштаб до 0 або до тисяч ресурсів.
  • Підтримка різноманітних типів обчислень: Ви можете розвантажити моделі глибокого навчання з усіх основних фреймворків ML, а також довільного коду 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)

У таблиці нижче показано, як виглядає кожен із варіантів:

Setup Необхідні ресурси Коштувати Затримка
GPU без ExaDeploy 2 CPU, 2 GPU на клієнта (всього 20 CPU, 20 GPU) 100 30 мс
GPU з ExaDeploy 8 графічних процесорів, спільних для 10 клієнтів, по 1 ЦП на клієнта 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 Elastic Kubernetes (Amazon EKS) кластер

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

крок 2: Налаштувати ExaDepoy

Другим кроком є ​​налаштування ExaDeploy. Загалом, розгортання ExaDeploy на примірниках inf1 є простим. Налаштування здебільшого відбувається за тією самою процедурою, що й на примірниках графічного процесора (GPU). Основна відмінність полягає в тому, щоб змінити тег моделі з GPU на AWS Inferentia та перекомпілювати модель. Наприклад, для переходу від екземплярів g4dn до inf1 за допомогою інтерфейсів прикладного програмування (API) ExaDeploy потрібно було змінити лише приблизно 10 рядків коду.

  • Одним із простих методів є використання Exafunction Модуль 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 у співвідношенні ціни та продуктивності в масштабі. Обслуговування ML є складною проблемою, яка, якщо її вирішувати всередині компанії, потребує експертних знань, які не належать до цілей компанії, і часто затримує терміни продукту. ExaDeploy, яке є програмним рішенням Exafunction для розгортання ML, стало лідером галузі. Він обслуговує навіть найскладніші робочі навантаження ML, забезпечуючи плавну інтеграцію та підтримку від команди світового рівня. Разом ExaDeploy і AWS Inferentia забезпечують підвищення продуктивності та економію коштів для масштабних робочих навантажень.

Висновок

У цій публікації ми показали вам, як Exafunction підтримує AWS Inferentia для продуктивності ML. Для отримання додаткової інформації про створення програм за допомогою Exafunction відвідайте веб-сайт Екзафункція. Щоб ознайомитися з передовими методами створення робочих навантажень глибокого навчання на Inf1, відвідайте веб-сайт Екземпляри Amazon EC2 Inf1.


Про авторів

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

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

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

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

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

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

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