«Экземпляр EC2 DL2q Amazon для экономичной и высокопроизводительной инференции искусственного интеллекта теперь доступен для всех».

Экземпляр EC2 DL2q Amazon новое решение для экономичной и высокопроизводительной инференции искусственного интеллекта теперь доступно для всех пользователей

Это гостевой пост от A.K Roy из Qualcomm AI.

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

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

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

Каждый экземпляр DL2q содержит восемь ускорителей Qualcomm Cloud AI100, с общей производительностью инференса Int8 более 2.8 ПетаОПС и производительностью инференса FP16 1.4 ПетаФлопс. У экземпляра имеется агрегированные 112 ядер искусственного интеллекта, память ускорителя объемом 128 ГБ и пропускная способность памяти 1.1 ТБ в секунду.

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

Название экземпляра Виртуальных ЦПУ Ускорители Cloud AI100 Память ускорителя Агрегированная пропускная способность памяти ускорителя Память экземпляра Сеть экземпляра Пропускная способность хранения (Amazon EBS)
DL2q.24xlarge 96 8 128 ГБ 1.088 ТБ/с 768 ГБ 100 Гбит/с 19 Гбит/с

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

Микросхема ускорителя Cloud AI100 является специально разработанной многоядерной архитектурой, поддерживающей широкий спектр применения глубокого обучения от центров обработки данных до решений на грани. Чип использует скалярные, векторные и тензорные вычислительные ядра с емкостью ОЗУ на микросхеме 126 МБ, что является лидером отрасли. Ядра соединены высокопропускной сетью на микросхеме (Network-on-Chip, NoC).

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

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

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

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

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

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

Стек DL2q AI и инструментарий

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

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

Чтобы узнать больше о настройке производительности модели, см.документацию Cloud AI 100-Key Performance Parameters.

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

В данном примере вы компилируете и развертываете предварительно обученную модель BERT из Hugging Face на экземпляре EC2 DL2q, используя предварительно созданную доступную AMI DL2q в четыре этапа.

Вы можете использовать предварительно созданную Qualcomm DLAMI на экземпляре или начать с AMI Amazon Linux2 и создать собственную AMI DL2q с использованием платформы Cloud AI 100 и SDK приложений, доступных в этой Шаг 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, который затем может быть передан компилятору.

    # Установите динамические размеры и оси.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_namefp16_model_name = fix_onnx_fp16(gen_models_path=gen_models_path, model_base_name=model_base_name)

Шаг 3. Компиляция модели

Для компиляции модели используется интерфейс командной строки (CLI) компиляторный инструмент qaic-exec. Входным файлом для этого компилятора является 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.

Библиотека Python Qualcomm qaic – это набор API, которые обеспечивают поддержку выполнения вывода на ускоритель Cloud AI100.

  1. Используйте вызов API Session для создания экземпляра сеанса. Вызов API Session является точкой входа для использования библиотеки Python qaic.

    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() # Загружает сеть на устройство. # Здесь мы считываем все формы/типы ввода и вывода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']#создаем словарь ввода для данного предложенияinput_dict = {"input_ids": inputIds.numpy().astype(input_type), "attention_mask" : attentionMask.numpy().astype(attn_type)}#выполним вывод на Cloud AI 100output = 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("Результат модели (первые 5) из Cloud AI 100 Qualcomm:")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}, индекс={idx}, логит={round(val,2)})")

Вот результаты для предложения “Собака [MASK] на коврике”.

1 :(слово=села, индекс=2068, логит=11.46)2 :(слово=приземлилась, индекс=4860, логит=11.11)3 :(слово=плюнула, индекс=15732, логит=10.95)4 :(слово=уселась, индекс=3035, логит=10.84)5 :(слово=была, индекс=1108, логит=10.75)

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

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

Теперь доступно

Экземпляры DL2q можно запускать уже сегодня в регионах AWS US West (Oregon) и Europe (Frankfurt) в качестве экземпляров по запросу, зарезервированных и Spot или в рамках плана экономии. Как обычно с Amazon EC2, вы платите только за использование. Дополнительную информацию см. в Amazon EC2 pricing.

Экземпляры DL2q могут быть задействованы с использованием AWS Deep Learning AMIs (DLAMI), а контейнерные образы доступны через управляемые сервисы, такие как Amazon SageMaker, Amazon Elastic Kubernetes Service (Amazon EKS), Amazon Elastic Container Service (Amazon ECS) и AWS ParallelCluster.

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