Экземпляр Amazon EC2 DL2q для экономичного и высокопроизводительного вывода ИИ теперь общедоступен | Веб-сервисы Amazon

Экземпляр Amazon EC2 DL2q для экономичного и высокопроизводительного вывода ИИ теперь общедоступен | Веб-сервисы Amazon

Это гостевой пост АК Роя из Qualcomm AI.

Облако Amazon Elastic Compute (Amazon EC2) Экземпляры DL2q на базе ускорителей Qualcomm AI 100 Standard можно использовать для экономичного развертывания рабочих нагрузок глубокого обучения (DL) в облаке. Их также можно использовать для разработки и проверки производительности и точности рабочих нагрузок DL, которые будут развернуты на устройствах Qualcomm. Экземпляры DL2q — это первые экземпляры, которые перенесли технологию искусственного интеллекта (ИИ) Qualcomm в облако.

Благодаря восьми ускорителям Qualcomm AI 100 Standard и 128 ГиБ общей памяти ускорителя клиенты также могут использовать экземпляры DL2q для запуска популярных генеративных приложений искусственного интеллекта, таких как генерация контента, обобщение текста и виртуальные помощники, а также классических приложений искусственного интеллекта для обработки естественного языка. и компьютерное зрение. Кроме того, ускорители Qualcomm AI 100 используют ту же технологию искусственного интеллекта, которая используется в смартфонах, автономном вождении, персональных компьютерах и гарнитурах расширенной реальности, поэтому экземпляры DL2q можно использовать для разработки и проверки этих рабочих нагрузок искусственного интеллекта перед развертыванием.

Основные характеристики нового экземпляра DL2q

Каждый экземпляр DL2q включает восемь ускорителей Qualcomm Cloud AI100 с совокупной производительностью более 2.8 петаопс производительности вывода Int8 и 1.4 петафлопс производительности вывода FP16. Экземпляр имеет совокупность 112 AI-ядер, ускоритель памяти объемом 128 ГБ и пропускную способность памяти 1.1 ТБ в секунду.

Каждый экземпляр DL2q имеет 96 виртуальных ЦП, объем системной памяти 768 ГБ и поддерживает пропускную способность сети 100 Гбит/с, а также Магазин эластичных блоков Amazon (Amazon EBS) хранилище 19 Гбит/с.

Имя экземпляра VCPU будут Облачные ускорители AI100 Память ускорителя Память ускорителя BW (агрегированная) Память экземпляра Сеть экземпляра Пропускная способность хранилища (Amazon EBS)
DL2q.24xlarge 96 8 128 GB 1.088 TB / s 768 GB 100 Gbps 19 Gbps

Инновационный ускоритель Qualcomm Cloud AI100

Система-на-кристалле ускорителя Cloud AI100 (SoC) представляет собой специально созданную масштабируемую многоядерную архитектуру, поддерживающую широкий спектр вариантов использования глубокого обучения, от центра обработки данных до периферийных устройств. В SoC используются скалярные, векторные и тензорные вычислительные ядра с лучшей в отрасли встроенной SRAM емкостью 126 МБ. Ядра соединены между собой с помощью сети на кристалле (NoC) с высокой пропускной способностью и малой задержкой.

Ускоритель AI100 поддерживает широкий спектр моделей и вариантов использования. В таблице ниже показан диапазон поддержки модели.

Категория модели Количество моделей Примеры​
НЛП​ 157 BERT, BART, FasterTransformer, T5, Z-код MOE
Генеративный ИИ – НЛП 40 LLaMA, CodeGen, GPT, OPT, BLOOM, Jais, Luminous, StarCoder, XGen
Генеративный ИИ – Изображение 3 Стабильная диффузия v1.5 и v2.1, OpenAI CLIP
Резюме – Классификация изображений 45 ВиТ, ResNet, ResNext, MobileNet, EfficientNet
CV – Обнаружение объектов 23 YOLO v2, v3, v4, v5 и v7, SSD-ResNet, RetinaNet
Резюме – Другое 15 LPRNet, сверхвысокое разрешение/SRGAN, ByteTrack
Автомобильные сети* 53 Восприятие и LIDAR, обнаружение пешеходов, полос движения и светофоров
Общее > 300 

* Большинство автомобильных сетей представляют собой составные сети, состоящие из слияния отдельных сетей.

Большая встроенная SRAM ускорителя DL2q обеспечивает эффективную реализацию передовых методов повышения производительности, таких как точность микроэкспоненты MX6 для хранения весов и точность микроэкспоненты MX9 для связи между ускорителями. Технология микроэкспоненты описана в следующем отраслевом объявлении Open Compute Project (OCP): AMD, Arm, Intel, Meta, Microsoft, NVIDIA и Qualcomm стандартизируют форматы данных узкой точности следующего поколения для искусственного интеллекта » Open Compute Project.

Пользователь экземпляра может использовать следующую стратегию для максимизации соотношения производительности и затрат:

  • Сохраняйте веса, используя точность микроэкспоненты MX6 в памяти DDR с включенным ускорителем. Использование точности MX6 максимально эффективно использует доступный объем памяти и пропускную способность памяти, обеспечивая лучшую в своем классе пропускную способность и задержку.
  • Вычисляйте в FP16, чтобы обеспечить необходимую точность сценария использования, используя при этом превосходную встроенную SRAM и запасные TOP на карте для реализации высокопроизводительных ядер от MX6 до FP16 с малой задержкой.
  • Используйте оптимизированную стратегию пакетной обработки и увеличивайте размер пакета за счет использования большой встроенной SRAM, чтобы максимизировать повторное использование весов, сохраняя при этом активации на кристалле до максимально возможного уровня.

DL2q AI стек и набор инструментов

Экземпляр DL2q сопровождается стеком Qualcomm AI Stack, который обеспечивает единообразную работу разработчиков с использованием искусственного интеллекта Qualcomm в облаке и других продуктах Qualcomm. Один и тот же стек искусственного интеллекта Qualcomm и базовая технология искусственного интеллекта работают на экземплярах DL2q и периферийных устройствах Qualcomm, предоставляя клиентам единообразный опыт разработки с унифицированным API для облачных, автомобильных, персональных компьютеров, расширенной реальности и сред разработки смартфонов.

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

Экземпляр Amazon EC2 DL2q для экономичного и высокопроизводительного вывода ИИ теперь общедоступен | Веб-сервисы Amazon PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Чтобы узнать больше о настройке производительности модели, см. Ключевые параметры производительности Cloud AI 100 Документация.

Начало работы с экземплярами DL2q

В этом примере вы компилируете и развертываете предварительно обученный модель БЕРТ от Обнимая лицо на экземпляре EC2 DL2q с использованием предварительно созданного доступного AMI DL2q за четыре шага.

Вы можете использовать либо готовый Qualcomm ДЛАМИ на экземпляре или начните с AMI Amazon Linux2 и создайте собственный AMI DL2q с помощью платформы Cloud AI 100 и SDK приложений, доступных в этом документе. Сервис Amazon Simple Storage (Amazon S3) ведро: s3://ec2-linux-qualcomm-ai100-sdks/latest/.

В следующих шагах используется предварительно созданный AMI DL2q. База Qualcomm AL2 DLAMI.

Используйте SSH для доступа к вашему экземпляру DL2q с помощью Qualcomm Base AL2 DLAMI AMI и выполните шаги с 1 по 4.

Шаг 1. Настройте среду и установите необходимые пакеты.

  1. Установите Python 3.8.
    sudo amazon-linux-extras install python3.8

  2. Настройте виртуальную среду Python 3.8.
    python3.8 -m venv /home/ec2-user/userA/pyenv

  3. Активируйте виртуальную среду Python 3.8.
    source /home/ec2-user/userA/pyenv/bin/activate

  4. Установите необходимые пакеты, показанные в Документ «требования.txt» доступен на общедоступном сайте Qualcomm на Github.
    pip3 install -r requirements.txt

  5. Импортируйте необходимые библиотеки.
    import transformers from transformers import AutoTokenizer, AutoModelForMaskedLM
    import sys
    import qaic
    import os
    import torch
    import onnx
    from onnxsim import simplify
    import argparse
    import numpy as np

Шаг 2. Импортируйте модель

  1. Импортируйте и токенизируйте модель.
    model_card = 'bert-base-cased'
    model = AutoModelForMaskedLM.from_pretrained(model_card)
    tokenizer = AutoTokenizer.from_pretrained(model_card)

  2. Определите образец входных данных и извлеките inputIds и attentionMask.
    sentence = "The dog [MASK] on the mat."
    encodings = tokenizer(sentence, max_length=128, truncation=True, padding="max_length", return_tensors='pt')
    inputIds = encodings["input_ids"]
    attentionMask = encodings["attention_mask"]

  3. Преобразуйте модель в ONNX, который затем можно будет передать компилятору.
    # Set dynamic dims and axes.
    dynamic_dims = {0: 'batch', 1 : 'sequence'}
    dynamic_axes = { "input_ids" : dynamic_dims, "attention_mask" : dynamic_dims, "logits" : dynamic_dims
    }
    input_names = ["input_ids", "attention_mask"]
    inputList = [inputIds, attentionMask] torch.onnx.export( model, args=tuple(inputList), f=f"{gen_models_path}/{model_base_name}.onnx", verbose=False, input_names=input_names, output_names=["logits"], dynamic_axes=dynamic_axes, opset_version=11,
    )

  4. Вы запустите модель с точностью FP16. Итак, вам необходимо проверить, содержит ли модель какие-либо константы, выходящие за пределы диапазона FP16. Передайте модель в fix_onnx_fp16 функция для создания нового файла ONNX с необходимыми исправлениями.
    from onnx import numpy_helper def fix_onnx_fp16( gen_models_path: str, model_base_name: str,
    ) -> str: finfo = np.finfo(np.float16) fp16_max = finfo.max fp16_min = finfo.min model = onnx.load(f"{gen_models_path}/{model_base_name}.onnx") fp16_fix = False for tensor in onnx.external_data_helper._get_all_tensors(model): nptensor = numpy_helper.to_array(tensor, gen_models_path) if nptensor.dtype == np.float32 and ( np.any(nptensor > fp16_max) or np.any(nptensor < fp16_min) ): # print(f'tensor value : {nptensor} above {fp16_max} or below {fp16_min}') nptensor = np.clip(nptensor, fp16_min, fp16_max) new_tensor = numpy_helper.from_array(nptensor, tensor.name) tensor.CopyFrom(new_tensor) fp16_fix = True if fp16_fix: # Save FP16 model print("Found constants out of FP16 range, clipped to FP16 range") model_base_name += "_fix_outofrange_fp16" onnx.save(model, f=f"{gen_models_path}/{model_base_name}.onnx") print(f"Saving modified onnx file at {gen_models_path}/{model_base_name}.onnx") return model_base_name fp16_model_name = fix_onnx_fp16(gen_models_path=gen_models_path, model_base_name=model_base_name)

Шаг 3. Скомпилируйте модель

Ассоциация qaic-exec Для компиляции модели используется инструмент компилятора интерфейса командной строки (CLI). Входными данными для этого компилятора является файл ONNX, созданный на шаге 2. Компилятор создает двоичный файл (называемый QPC, Для Программный контейнер Qualcomm) на пути, определенном -aic-binary-dir аргумент.

В приведенной ниже команде компиляции вы используете четыре вычислительных ядра AI и размер пакета, равный одному, для компиляции модели.

/opt/qti-aic/exec/qaic-exec -m=bert-base-cased/generatedModels/bert-base-cased_fix_outofrange_fp16.onnx -aic-num-cores=4 -convert-to-fp16 -onnx-define-symbol=batch,1 -onnx-define-symbol=sequence,128 -aic-binary-dir=bert-base-cased/generatedModels/bert-base-cased_fix_outofrange_fp16_qpc -aic-hw -aic-hw-version=2.0 -compile-only

QPC генерируется в bert-base-cased/generatedModels/bert-base-cased_fix_outofrange_fp16_qpc папку.

Шаг 4. Запустите модель

Настройте сеанс для выполнения вывода на ускорителе Cloud AI100 Qualcomm в экземпляре DL2q.

Библиотека Qualcomm qaic Python — это набор API-интерфейсов, обеспечивающих поддержку выполнения логических выводов в ускорителе Cloud AI100.

  1. Используйте вызов API сеанса, чтобы создать экземпляр сеанса. Вызов Session API — это точка входа в использование библиотеки qaic Python.
    qpcPath = 'bert-base-cased/generatedModels/bert-base-cased_fix_outofrange_fp16_qpc' bert_sess = qaic.Session(model_path= qpcPath+'/programqpc.bin', num_activations=1) bert_sess.setup() # Loads the network to the device. # Here we are reading out all the input and output shapes/types
    input_shape, input_type = bert_sess.model_input_shape_dict['input_ids']
    attn_shape, attn_type = bert_sess.model_input_shape_dict['attention_mask']
    output_shape, output_type = bert_sess.model_output_shape_dict['logits'] #create the input dictionary for given input sentence
    input_dict = {"input_ids": inputIds.numpy().astype(input_type), "attention_mask" : attentionMask.numpy().astype(attn_type)} #run inference on Cloud AI 100
    output = bert_sess.run(input_dict)

  2. Реструктурируйте данные из выходного буфера с помощью output_shape и output_type.
    token_logits = np.frombuffer(output['logits'], dtype=output_type).reshape(output_shape)

  3. Расшифруйте полученный результат.
    mask_token_logits = torch.from_numpy(token_logits[0, mask_token_index, :]).unsqueeze(0)
    top_5_results = torch.topk(mask_token_logits, 5, dim=1)
    print("Model output (top5) from Qualcomm Cloud AI 100:")
    for i in range(5): idx = top_5_results.indices[0].tolist()[i] val = top_5_results.values[0].tolist()[i] word = tokenizer.decode([idx]) print(f"{i+1} :(word={word}, index={idx}, logit={round(val,2)})")

Вот результаты входного предложения «Собака [МАСКА] на коврике».

1 :(word=sat, index=2068, logit=11.46)
2 :(word=landed, index=4860, logit=11.11)
3 :(word=spat, index=15732, logit=10.95)
4 :(word=settled, index=3035, logit=10.84)
5 :(word=was, index=1108, logit=10.75)

Вот и все. Всего за несколько шагов вы скомпилировали и запустили модель PyTorch на экземпляре Amazon EC2 DL2q. Чтобы узнать больше об адаптации и компиляции моделей на экземпляре DL2q, см. Учебная документация по Cloud AI100.

Чтобы узнать больше о том, какие архитектуры моделей DL лучше всего подходят для экземпляров AWS DL2q, а также о текущей матрице поддержки моделей, см. Документация Qualcomm Cloud AI100.

Доступные в настоящее время

Вы можете запустить инстансы DL2q уже сегодня в регионах AWS Запад США (Орегон) и Европе (Франкфурт). По требованиюЗарезервированныйи Точечные экземплярыили как часть План сбережений. Как обычно в Amazon EC2, вы платите только за то, что используете. Для получения дополнительной информации см. Цены на Amazon EC2.

Экземпляры DL2q можно развернуть с помощью AMI AWS для глубокого обучения (DLAMI), а образы контейнеров доступны через управляемые службы, такие как Создатель мудреца Амазонки, Сервис Amazon Elastic Kubernetes (Amazon EKS), Amazon Elastic Container Service (Amazon ECS)и Параллельный кластер AWS.

Чтобы узнать больше, посетите Экземпляр Amazon EC2 DL2q страницу и отправьте отзыв на AWS re:Post для EC2 или через ваши обычные контакты службы поддержки AWS.


Об авторах

Экземпляр Amazon EC2 DL2q для экономичного и высокопроизводительного вывода ИИ теперь общедоступен | Веб-сервисы Amazon PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.АК Рой является директором по управлению продуктами Qualcomm в области продуктов и решений искусственного интеллекта для облачных вычислений и центров обработки данных. Он имеет более чем 20-летний опыт работы в области стратегии и разработки продуктов, в настоящее время уделяя особое внимание лучшим в своем классе производительности и производительности/$ комплексным решениям для вывода ИИ в облаке для широкого спектра вариантов использования. включая GenAI, LLM, Auto и Hybrid AI.

Экземпляр Amazon EC2 DL2q для экономичного и высокопроизводительного вывода ИИ теперь общедоступен | Веб-сервисы Amazon PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай. Цзяньин Лан — главный архитектор решений во Всемирной специализированной организации AWS (WWSO). Имеет более 15 лет опыта работы в сфере высокопроизводительных вычислений и искусственного интеллекта. В AWS она помогает клиентам развертывать, оптимизировать и масштабировать рабочие нагрузки искусственного интеллекта и машинного обучения на экземплярах ускоренных вычислений. Она увлечена объединением методов высокопроизводительных вычислений и искусственного интеллекта. Цзяньин имеет степень доктора философии в области вычислительной физики, полученную в Университете Колорадо в Боулдере.

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

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