비용 효율적인 고성능 AI 추론을 위한 Amazon EC2 DL2q 인스턴스 정식 출시 | 아마존 웹 서비스

비용 효율적인 고성능 AI 추론을 위한 Amazon EC2 DL2q 인스턴스 정식 출시 | 아마존 웹 서비스

Qualcomm AI의 AK Roy님의 게스트 포스트입니다.

Amazon Elastic Compute Cloud(Amazon EC2) Qualcomm AI 2 Standard 가속기로 구동되는 DL100q 인스턴스를 사용하면 클라우드에서 딥 러닝(DL) 워크로드를 비용 효율적으로 배포할 수 있습니다. 또한 Qualcomm 장치에 배포될 DL 워크로드의 성능과 정확성을 개발하고 검증하는 데에도 사용할 수 있습니다. DL2q 인스턴스는 Qualcomm의 인공 지능(AI) 기술을 클라우드에 도입한 최초의 인스턴스입니다.

100개의 Qualcomm AI 128 Standard 가속기와 2GiB의 총 가속기 메모리를 갖춘 고객은 DL100q 인스턴스를 사용하여 콘텐츠 생성, 텍스트 요약, 가상 비서 등 인기 있는 생성 AI 애플리케이션은 물론 자연어 처리를 위한 클래식 AI 애플리케이션도 실행할 수 있습니다. 그리고 컴퓨터 비전. 또한 Qualcomm AI 2 가속기는 스마트폰, 자율 주행, 개인용 컴퓨터 및 확장 현실 헤드셋 전반에 사용되는 것과 동일한 AI 기술을 갖추고 있으므로 배포 전에 DLXNUMXq 인스턴스를 사용하여 이러한 AI 워크로드를 개발하고 검증할 수 있습니다.

새로운 DL2q 인스턴스 하이라이트

각 DL2q 인스턴스에는 100개의 Qualcomm Cloud AI2.8 가속기가 통합되어 있으며, 총 성능은 Int8 추론 성능의 1.4 PetaOps 이상, FP16 추론 성능의 112 PetaFlops 이상입니다. 인스턴스에는 총 128개의 AI 코어, 1.1GB의 가속기 메모리 용량, 초당 XNUMXTB의 메모리 대역폭이 있습니다.

각 DL2q 인스턴스에는 96개의 vCPU, 768GB의 시스템 메모리 용량이 있으며 100Gbps의 네트워킹 대역폭과 Amazon 탄력적 블록 스토어(Amazon EBS) 19Gbps의 저장 공간.

인스턴스 이름 vCPU Cloud AI100 가속기 가속기 메모리 가속기 메모리 BW(집계) 인스턴스 메모리 인스턴스 네트워킹 스토리지(Amazon EBS) 대역폭
DL2q.24xlarge 96 8 128 GB 1.088 TB / 초 768 GB 100Gbps 19Gbps

Qualcomm Cloud AI100 가속기 혁신

Cloud AI100 가속기 SoC(시스템 온 칩)는 특수 목적으로 구축된 확장 가능한 멀티 코어 아키텍처로, 데이터센터에서 에지까지 광범위한 딥 러닝 사용 사례를 지원합니다. SoC는 업계 최고의 126MB 온다이 SRAM 용량을 갖춘 스칼라, 벡터 및 텐서 컴퓨팅 코어를 사용합니다. 코어는 고대역폭, 저지연 NoC(Network-On-Chip) 메시로 상호 연결됩니다.

AI100 가속기는 광범위하고 포괄적인 범위의 모델과 사용 사례를 지원합니다. 아래 표에는 모델 지원 범위가 강조되어 있습니다.

모델 카테고리 모델 번호 예시​
NLP​ 157 BERT, BART, FasterTransformer, T5, Z 코드 MOE
생성적 AI – NLP 40 LLaMA, CodeGen, GPT, OPT, BLOOM, Jais, Luminous, StarCoder, XGen
생성적 AI – 이미지 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
이력서 – 기타 15 LPRNet, 초고해상도/SRGAN, ByteTrack
자동차 네트워크* 53 인식 및 LIDAR, 보행자, 차선 및 신호등 감지
> 300 â € < â € <

* 대부분의 자동차 네트워크는 개별 네트워크의 융합으로 구성된 복합 네트워크입니다.

DL2q 가속기의 대형 온다이 SRAM을 사용하면 가중치 저장을 위한 MX6 마이크로 지수 정밀도와 가속기 간 통신을 위한 MX9 마이크로 지수 정밀도와 같은 고급 성능 기술을 효율적으로 구현할 수 있습니다. 마이크로 지수 기술은 다음 OCP(Open Compute Project) 업계 발표에 설명되어 있습니다. AMD, Arm, Intel, Meta, Microsoft, NVIDIA 및 Qualcomm, AI를 위한 차세대 협정밀 데이터 형식 표준화 » 개방형 컴퓨팅 프로젝트.

인스턴스 사용자는 다음 전략을 사용하여 비용당 성능을 극대화할 수 있습니다.

  • 온가속기 DDR 메모리에 MX6 마이크로 지수 정밀도를 사용하여 가중치를 저장합니다. MX6 정밀도를 사용하면 사용 가능한 메모리 용량과 메모리 대역폭의 활용도가 극대화되어 동급 최고의 처리량과 대기 시간을 제공합니다.
  • FP16에서 컴퓨팅하여 필요한 사용 사례 정확도를 제공하는 동시에 우수한 온칩 SRAM과 카드의 예비 TOP를 사용하여 지연 시간이 짧은 고성능 MX6~FP16 커널을 구현합니다.
  • 가중치 재사용을 최대화하는 동시에 온칩 활성화를 최대한 유지하기 위해 사용 가능한 대형 온칩 SRAM을 사용하여 최적화된 일괄 처리 전략과 더 높은 배치 크기를 사용합니다.

DL2q AI 스택 및 툴체인

DL2q 인스턴스에는 클라우드 및 기타 Qualcomm 제품의 Qualcomm AI 전반에 걸쳐 일관된 개발자 경험을 제공하는 Qualcomm AI 스택이 함께 제공됩니다. 동일한 Qualcomm AI 스택 및 기본 AI 기술이 DL2q 인스턴스 및 Qualcomm 엣지 장치에서 실행되어 클라우드, 자동차, 개인용 컴퓨터, 확장 현실 및 스마트폰 개발 환경 전반에 걸쳐 통합 API를 통해 고객에게 일관된 개발자 경험을 제공합니다.

툴체인을 사용하면 인스턴스 사용자는 이전에 훈련된 모델을 신속하게 온보딩하고, 인스턴스 기능에 맞게 모델을 컴파일 및 최적화한 다음, 다음 그림에 표시된 세 단계를 통해 프로덕션 추론 사용 사례를 위해 컴파일된 모델을 배포할 수 있습니다.

비용 효율적인 고성능 AI 추론을 위한 Amazon EC2 DL2q 인스턴스 정식 출시 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.

모델 성능 조정에 대한 자세한 내용은 다음을 참조하세요. Cloud AI 100 주요 성능 매개변수 선적 서류 비치.

DL2q 인스턴스 시작하기

이 예에서는 사전 학습된 BERT 모델 에 포옹하는 얼굴 사전 구축된 사용 가능한 DL2q AMI를 사용하여 EC2 DL2q 인스턴스에서 XNUMX단계로 진행합니다.

사전 구축된 제품 중 하나를 사용할 수 있습니다. 퀄컴 DLAMI 인스턴스에서 시작하거나 Amazon Linux2 AMI로 시작하고 여기에서 사용 가능한 Cloud AI 2 플랫폼 및 앱 SDK를 사용하여 자체 DL100q AMI를 구축하세요. Amazon Simple Storage Service(Amazon S3) 버킷: s3://ec2-linux-qualcomm-ai100-sdks/latest/.

다음 단계에서는 사전 구축된 DL2q AMI를 사용합니다. 퀄컴 베이스 AL2 DLAMI.

SSH를 사용하여 Qualcomm Base AL2 DLAMI AMI가 포함된 DL2q 인스턴스에 액세스하고 1~4단계를 수행하세요.

1단계. 환경 설정 및 필수 패키지 설치

  1. 파이썬 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. 샘플 입력을 정의하고 추출합니다. inputIdsattentionMask.
    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단계. 모델 컴파일

XNUMXD덴탈의 qaic-exec 명령줄 인터페이스(CLI) 컴파일러 도구는 모델을 컴파일하는 데 사용됩니다. 이 컴파일러에 대한 입력은 2단계에서 생성된 ONNX 파일입니다. 컴파일러는 이진 파일( QPC에 대한 Qualcomm 프로그램 컨테이너)에 의해 정의된 경로에서 -aic-binary-dir 논의.

아래 컴파일 명령에서는 XNUMX개의 AI 컴퓨팅 코어와 XNUMX개의 배치 크기를 사용하여 모델을 컴파일합니다.

/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단계. 모델 실행

DL100q 인스턴스의 Cloud AI2 Qualcomm 가속기에서 추론을 실행하도록 세션을 설정합니다.

Qualcomm qaic Python 라이브러리는 Cloud AI100 가속기에서 추론 실행을 지원하는 API 세트입니다.

  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_shapeoutput_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)})")

다음은 입력 문장 "The dog [MASK] on the mat"에 대한 출력입니다.

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)

그게 다야. 몇 단계만 거치면 Amazon EC2 DL2q 인스턴스에서 PyTorch 모델을 컴파일하고 실행할 수 있습니다. DL2q 인스턴스의 모델 온보딩 및 컴파일에 대한 자세한 내용은 다음을 참조하세요. Cloud AI100 튜토리얼 문서.

AWS DL2q 인스턴스에 적합한 DL 모델 아키텍처와 현재 모델 지원 매트릭스에 대해 자세히 알아보려면 다음을 참조하세요. Qualcomm Cloud AI100 문서.

지금 사용 가능

오늘부터 미국 서부(오레곤) 및 유럽(프랑크푸르트) AWS 리전에서 DL2q 인스턴스를 시작할 수 있습니다. 온 디맨드예약및 스팟 인스턴스또는 저축 계획. 평소와 마찬가지로 Amazon EC2에서는 사용한 만큼만 비용을 지불합니다. 자세한 내용은 다음을 참조하세요. Amazon EC2 요금.

DL2q 인스턴스는 다음을 사용하여 배포할 수 있습니다. AWS Deep Learning AMI(DLAMI), 컨테이너 이미지는 다음과 같은 관리형 서비스를 통해 제공됩니다. 아마존 세이지 메이커, Amazon Elastic Kubernetes 서비스(Amazon EKS), Amazon Elastic Container Service(Amazon ECS)AWS 병렬 클러스터.

자세한 내용은 Amazon EC2 DL2q 인스턴스 페이지로 피드백을 보내주세요. AWS re:EC2용 게시 또는 일반적인 AWS Support 연락처를 통해


저자 소개

비용 효율적인 고성능 AI 추론을 위한 Amazon EC2 DL2q 인스턴스 정식 출시 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.AK 로이 Qualcomm의 클라우드 및 데이터 센터 AI 제품 및 솔루션 제품 관리 이사입니다. 그는 제품 전략 및 개발 분야에서 20년 이상의 경험을 보유하고 있으며, 현재는 광범위한 사용 사례에 대해 클라우드 내 AI 추론을 위한 동급 최고의 성능 및 성능/$ 엔드투엔드 솔루션에 중점을 두고 있습니다. GenAI, LLM, 자동차 및 하이브리드 AI를 포함합니다.

비용 효율적인 고성능 AI 추론을 위한 Amazon EC2 DL2q 인스턴스 정식 출시 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함. 랑 지안잉 AWS Worldwide Specialist Organization(WWSO)의 수석 솔루션 아키텍트입니다. 그녀는 HPC 및 AI 분야에서 15년 이상의 업무 경험을 보유하고 있습니다. AWS에서 그녀는 고객이 가속화된 컴퓨팅 인스턴스에서 AI/ML 워크로드를 배포, 최적화 및 확장하도록 돕는 데 중점을 두고 있습니다. 그녀는 HPC와 AI 분야의 기술을 결합하는 데 열정을 갖고 있습니다. Jianying은 콜로라도 대학교 볼더 캠퍼스에서 전산 물리학 박사 학위를 취득했습니다.

타임 스탬프 :

더보기 AWS 기계 학습