Екземпляр Amazon EC2 DL2q для рентабельного, високопродуктивного штучного інтелекту тепер загальнодоступний | Веб-сервіси Amazon

Екземпляр Amazon EC2 DL2q для рентабельного, високопродуктивного штучного інтелекту тепер загальнодоступний | Веб-сервіси Amazon

Вихідний вузол: 2974534

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

Amazon Elastic Compute Cloud (Amazon EC2) Екземпляри DL2q на базі прискорювачів Qualcomm AI 100 Standard можна використовувати для економічно ефективного розгортання робочих навантажень глибокого навчання (DL) у хмарі. Їх також можна використовувати для розробки та перевірки продуктивності та точності робочих навантажень DL, які будуть розгорнуті на пристроях Qualcomm. Екземпляри DL2q — це перші екземпляри, які перенесли технологію штучного інтелекту (AI) Qualcomm у хмару.

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

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

Кожен екземпляр DL2q включає вісім прискорювачів Qualcomm Cloud AI100 із сукупною продуктивністю понад 2.8 PetaOps продуктивності логічного висновку Int8 і 1.4 PetaFlop продуктивності висновку FP16. Екземпляр має сукупність 112 ядер ШІ, ємність пам’яті прискорювача 128 ГБ і пропускну здатність пам’яті 1.1 ТБ в секунду.

Кожен екземпляр DL2q має 96 vCPU, ємність системної пам’яті 768 ГБ і підтримує пропускну здатність мережі 100 Гбіт/с, а також Amazon Elastic Block Store (Amazon EBS) зберігання 19 Гбіт/с.

Ім'я екземпляра vCPU Хмарні прискорювачі AI100 Прискорювач пам'яті Прискорювач пам'яті BW (агрегований) Пам'ять примірників Мережа екземплярів Пропускна здатність сховища (Amazon EBS).
DL2q.24xlarge 96 8 128 GB 1.088 TB / с 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
Generative AI – Image 3 Стабільна дифузія 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, Супер-роздільна здатність/SRGAN, ByteTrack
Автомобільні мережі* 53 Сприйняття та LIDAR, виявлення пішоходів, смуг і світлофорів
Всього > 300 

* Більшість автомобільних мереж є складеними мережами, що складаються із злиття окремих мереж.

Велика вбудована пам’ять SRAM на прискорювачі DL2q дозволяє ефективно впроваджувати передові методи продуктивності, такі як точність мікроекспоненти MX6 для збереження вагових коефіцієнтів і точність мікроекспоненти MX9 для зв’язку між прискорювачем. Технологія micro-exponent описана в наступному галузевому оголошенні Open Compute Project (OCP): AMD, Arm, Intel, Meta, Microsoft, NVIDIA та Qualcomm стандартизують вузькі формати даних наступного покоління для штучного інтелекту » Open Compute Project.

Користувач екземпляра може використовувати таку стратегію, щоб максимізувати ефективність за вартість:

  • Зберігайте ваги за допомогою точності мікроекспоненти MX6 у вбудованій пам’яті DDR прискорювача. Використання MX6 precision максимізує використання доступної ємності та пропускної здатності пам’яті, щоб забезпечити найкращу в своєму класі пропускну здатність і затримку.
  • Обчислюйте в FP16, щоб забезпечити необхідну точність варіантів використання, використовуючи чудову вбудовану SRAM і запасні TOP на карті, щоб реалізувати високопродуктивні ядра з низькою затримкою від MX6 до FP16.
  • Використовуйте оптимізовану стратегію пакетування та більший розмір пакету, використовуючи доступну велику вбудовану пам’ять SRAM, щоб максимізувати повторне використання вагових коефіцієнтів, максимально зберігаючи активації на кристалі.

Стек і інструментальний ланцюжок DL2q AI

Екземпляр DL2q супроводжується Qualcomm AI Stack, який забезпечує узгоджену роботу розробника в Qualcomm AI у хмарі та інших продуктах Qualcomm. Той самий стек і базова технологія штучного інтелекту Qualcomm працюють на екземплярах DL2q і крайніх пристроях Qualcomm, забезпечуючи клієнтам узгоджену роботу розробника з уніфікованим API для хмарних середовищ, середовищ розробки автомобілів, персональних комп’ютерів, розширеної реальності та смартфонів.

Ланцюжок інструментів дозволяє користувачеві екземпляра швидко ввімкнути попередньо навчену модель, скомпілювати та оптимізувати модель для можливостей екземпляра, а потім розгорнути скомпільовані моделі для сценаріїв використання виробничого висновку за три етапи, показані на малюнку нижче.

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

Почніть роботу з екземплярами DL2q

У цьому прикладі ви компілюєте та розгортаєте попередньо навчений Модель BERT від Обіймати обличчя на екземплярі EC2 DL2q, використовуючи попередньо зібраний доступний DL2q AMI, у чотири кроки.

Ви можете використовувати будь-який готовий Qualcomm DLAMI на екземплярі або почніть з Amazon Linux2 AMI і створіть власний DL2q AMI за допомогою Cloud AI 100 Platform and Apps SDK, доступного в цьому Служба простого зберігання Amazon (Amazon S3) відро: s3://ec2-linux-qualcomm-ai100-sdks/latest/.

У наступних кроках використовується попередньо зібраний DL2q AMI, База 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. Встановіть необхідні пакети, показані в документ requirements.txt доступний на загальнодоступному сайті Github Qualcomm.
    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 аргумент.

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

/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. Запустіть модель

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

Бібліотека Qualcomm qaic Python — це набір API, який забезпечує підтримку запуску висновків у прискорювачі Cloud AI100.

  1. Використовуйте виклик API сеансу, щоб створити екземпляр сеансу. Виклик 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 як На вимогуЗарезервований та  Точкові екземпляри, або як частина a План заощаджень. Як завжди з Amazon EC2, ви платите лише за те, що використовуєте. Для отримання додаткової інформації див Ціни на Amazon EC2.

Екземпляри DL2q можна розгорнути за допомогою AWS Deep Learning AMI (DLAMI), а зображення контейнерів доступні через керовані служби, такі як Amazon SageMaker, Служба Amazon Elastic Kubernetes (Amazon EKS), Amazon Elastic Container Service (Amazon ECS) та AWS ParallelCluster.

Щоб дізнатися більше, відвідайте сторінку Екземпляр Amazon EC2 DL2q і надішліть відгук на AWS re:Post для EC2 або через звичайні контакти служби підтримки AWS.


Про авторів

А. К. Рой є директором із управління продуктами компанії Qualcomm для продуктів і рішень для хмарних технологій і центрів обробки даних. Він має більш ніж 20-річний досвід у стратегії та розробці продукту, приділяючи особливу увагу кращим у своєму класі наскрізним рішенням щодо продуктивності та ефективності/$ для висновків ШІ в хмарі для широкого спектру випадків використання, включаючи GenAI, LLMs, Auto та Hybrid AI.

Цзяньїн Ланг є головним архітектором рішень у Всесвітній спеціалізованій організації AWS (WWSO). Вона має понад 15 років досвіду роботи в галузі HPC та AI. В AWS вона зосереджується на допомозі клієнтам розгортати, оптимізувати та масштабувати робочі навантаження AI/ML на прискорених обчислювальних пристроях. Вона захоплена поєднанням технологій HPC та AI. Цзяньїн має ступінь доктора філософії з обчислювальної фізики в Університеті Колорадо в Боулдері.

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

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