Logo Zephyrnet

Phiên bản Amazon EC2 DL2q dành cho suy luận AI hiệu suất cao, tiết kiệm chi phí hiện đã có sẵn rộng rãi | Dịch vụ web của Amazon

Ngày:

Đây là bài đăng của khách bởi AK Roy từ Qualcomm AI.

Đám mây điện toán đàn hồi Amazon (Amazon EC2) Các phiên bản DL2q, được hỗ trợ bởi bộ tăng tốc tiêu chuẩn Qualcomm AI 100, có thể được sử dụng để triển khai khối lượng công việc deep learning (DL) trên đám mây một cách tiết kiệm chi phí. Chúng cũng có thể được sử dụng để phát triển và xác thực hiệu suất cũng như độ chính xác của khối lượng công việc DL sẽ được triển khai trên các thiết bị Qualcomm. Phiên bản DL2q là phiên bản đầu tiên đưa công nghệ thông minh nhân tạo (AI) của Qualcomm lên đám mây.

Với tám bộ tăng tốc Qualcomm AI 100 Standard và tổng bộ nhớ tăng tốc 128 GiB, khách hàng cũng có thể sử dụng phiên bản DL2q để chạy các ứng dụng AI tổng hợp phổ biến, như tạo nội dung, tóm tắt văn bản và trợ lý ảo, cũng như các ứng dụng AI cổ điển để xử lý ngôn ngữ tự nhiên và thị giác máy tính. Ngoài ra, bộ tăng tốc Qualcomm AI 100 có cùng công nghệ AI được sử dụng trên điện thoại thông minh, xe tự lái, máy tính cá nhân và tai nghe thực tế mở rộng, do đó, phiên bản DL2q có thể được sử dụng để phát triển và xác thực các khối lượng công việc AI này trước khi triển khai.

Điểm nổi bật của phiên bản DL2q mới

Mỗi phiên bản DL2q kết hợp tám bộ tăng tốc Qualcomm Cloud AI100, với hiệu suất tổng hợp hơn 2.8 PetaOps hiệu năng suy luận Int8 và 1.4 PetaFlops hiệu suất suy luận FP16. Phiên bản này có tổng cộng 112 lõi AI, dung lượng bộ nhớ tăng tốc là 128 GB và băng thông bộ nhớ là 1.1 TB mỗi giây.

Mỗi phiên bản DL2q có 96 vCPU, dung lượng bộ nhớ hệ thống là 768 GB và hỗ trợ băng thông mạng 100 Gbps cũng như Cửa hàng khối đàn hồi Amazon (Amazon EBS) lưu trữ 19 Gbps.

Tên phiên bản vCPU Bộ tăng tốc đám mây AI100 Bộ nhớ tăng tốc Bộ nhớ tăng tốc BW (tổng hợp) Bộ nhớ phiên bản Mạng cá thể Băng thông lưu trữ (Amazon EBS)
DL2q.24xlarge 96 8 128 GB 1.088 TB / giây 768 GB 100 Gbps 19 Gbps

Đổi mới bộ tăng tốc Qualcomm Cloud AI100

Hệ thống trên chip (SoC) tăng tốc Cloud AI100 là kiến ​​trúc đa lõi có mục đích mở rộng, hỗ trợ nhiều trường hợp sử dụng deep learning trải dài từ trung tâm dữ liệu đến biên. SoC sử dụng các lõi điện toán vô hướng, vectơ và tenxơ với dung lượng SRAM tích hợp dẫn đầu ngành là 126 MB. Các lõi được kết nối với nhau bằng lưới mạng trên chip (NoC) băng thông cao, độ trễ thấp.

Bộ tăng tốc AI100 hỗ trợ nhiều mô hình và trường hợp sử dụng rộng rãi và toàn diện. Bảng dưới đây nêu bật phạm vi hỗ trợ của mô hình.

danh mục người mẫu Số mô hình Ví dụ​
NLP​ 157 BERT, BART, FasterTransformer, T5, mã Z MOE
AI sáng tạo – NLP 40 LLaMA, CodeGen, GPT, OPT, BLOOM, Jais, Luminous, StarCoder, XGen
AI sáng tạo – Hình ảnh 3 Khuếch tán ổn định v1.5 và v2.1, OpenAI CLIP
CV – Phân loại hình ảnh 45 ViT, ResNet, ResNext, MobileNet, EfficiencyNet
CV – Phát hiện đối tượng 23 YOLO v2, v3, v4, v5 và v7, SSD-ResNet, RetinaNet
CV – Khác 15 LPRNet, Siêu phân giải/SRGAN, ByteTrack
Mạng ô tô* 53 Nhận thức và phát hiện LIDAR, người đi bộ, làn đường và đèn giao thông
Toàn bộ > 300 â € < â € <

* Hầu hết các mạng ô tô là mạng tổng hợp bao gồm sự hợp nhất của các mạng riêng lẻ.

SRAM trên khuôn lớn trên máy gia tốc DL2q cho phép triển khai hiệu quả các kỹ thuật hiệu suất nâng cao như độ chính xác theo số mũ vi mô MX6 để lưu trữ trọng lượng và độ chính xác theo số mũ vi mô MX9 để giao tiếp giữa máy gia tốc với máy gia tốc. Công nghệ số mũ vi mô được mô tả trong thông báo ngành của Dự án Điện toán Mở (OCP) sau đây: AMD, Arm, Intel, Meta, Microsoft, NVIDIA và Qualcomm chuẩn hóa các định dạng dữ liệu chính xác hẹp thế hệ tiếp theo cho AI » Dự án điện toán mở.

Người dùng phiên bản có thể sử dụng chiến lược sau để tối đa hóa hiệu suất trên mỗi chi phí:

  • Lưu trữ trọng số bằng cách sử dụng độ chính xác theo cấp số nhân MX6 trong bộ nhớ DDR của bộ tăng tốc. Việc sử dụng độ chính xác MX6 sẽ tối đa hóa việc sử dụng dung lượng bộ nhớ sẵn có và băng thông bộ nhớ để mang lại thông lượng và độ trễ tốt nhất trong phân khúc.
  • Tính toán trong FP16 để mang lại độ chính xác cần thiết cho trường hợp sử dụng, đồng thời sử dụng SRAM trên chip ưu việt và TOP dự phòng trên thẻ, để triển khai các hạt nhân MX6 đến FP16 có độ trễ thấp hiệu suất cao.
  • Sử dụng chiến lược phân khối được tối ưu hóa và kích thước lô cao hơn bằng cách sử dụng SRAM lớn trên chip có sẵn để tối đa hóa việc tái sử dụng trọng số, đồng thời duy trì kích hoạt trên chip ở mức tối đa có thể.

Chuỗi công cụ và ngăn xếp AI DL2q

Phiên bản DL2q đi kèm với Qualcomm AI Stack mang lại trải nghiệm nhất quán cho nhà phát triển trên Qualcomm AI trên đám mây và các sản phẩm khác của Qualcomm. Công nghệ AI cơ bản và ngăn xếp AI của Qualcomm tương tự chạy trên các phiên bản DL2q và thiết bị biên Qualcomm, mang đến cho khách hàng trải nghiệm nhà phát triển nhất quán, với API hợp nhất trên đám mây, ô tô, máy tính cá nhân, thực tế mở rộng và môi trường phát triển điện thoại thông minh.

Chuỗi công cụ cho phép người dùng phiên bản nhanh chóng triển khai mô hình đã được đào tạo trước đó, biên dịch và tối ưu hóa mô hình cho các khả năng của phiên bản, sau đó triển khai các mô hình đã biên dịch cho các trường hợp sử dụng suy luận sản xuất theo ba bước được hiển thị trong hình dưới đây.

Để tìm hiểu thêm về việc điều chỉnh hiệu suất của một mô hình, hãy xem phần Các thông số hiệu suất chính của Cloud AI 100 Tài liệu.

Bắt đầu với phiên bản DL2q

Trong ví dụ này, bạn biên dịch và triển khai một chương trình được đào tạo trước Mô hình BERT từ Ôm mặt trên phiên bản EC2 DL2q bằng cách sử dụng DL2q AMI dựng sẵn, theo bốn bước.

Bạn có thể sử dụng một bản dựng sẵn Qualcomm DLAMI trên phiên bản này hoặc bắt đầu với Amazon Linux2 AMI và xây dựng DL2q AMI của riêng bạn với Nền tảng Cloud AI 100 và SDK ứng dụng có sẵn trong này Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3) Gầu múc: s3://ec2-linux-qualcomm-ai100-sdks/latest/.

Các bước tiếp theo sử dụng DL2q AMI dựng sẵn, Cơ sở Qualcomm AL2 DLAMI.

Sử dụng SSH để truy cập phiên bản DL2q của bạn bằng Qualcomm Base AL2 DLAMI AMI và làm theo các bước từ 1 đến 4.

Bước 1. Thiết lập môi trường và cài đặt các gói cần thiết

  1. Cài đặt Python 3.8.
    sudo amazon-linux-extras install python3.8

  2. Thiết lập môi trường ảo Python 3.8.
    python3.8 -m venv /home/ec2-user/userA/pyenv

  3. Kích hoạt môi trường ảo Python 3.8.
    source /home/ec2-user/userA/pyenv/bin/activate

  4. Cài đặt các gói cần thiết, hiển thị trong tài liệu require.txt có sẵn tại trang Github công cộng của Qualcomm.
    pip3 install -r requirements.txt

  5. Nhập các thư viện cần thiết.
    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

Bước 2. Nhập mô hình

  1. Nhập và mã hóa mô hình.
    model_card = 'bert-base-cased'
    model = AutoModelForMaskedLM.from_pretrained(model_card)
    tokenizer = AutoTokenizer.from_pretrained(model_card)

  2. Xác định đầu vào mẫu và trích xuất 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. Chuyển đổi mô hình thành ONNX, sau đó có thể được chuyển tới trình biên dịch.
    # 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. Bạn sẽ chạy mô hình với độ chính xác FP16. Vì vậy, bạn cần kiểm tra xem mô hình có chứa bất kỳ hằng số nào ngoài phạm vi FP16 hay không. Truyền mô hình cho fix_onnx_fp16 để tạo tệp ONNX mới với các bản sửa lỗi cần thiết.
    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)

Bước 3. Biên dịch mô hình

Sản phẩm qaic-exec Công cụ biên dịch giao diện dòng lệnh (CLI) được sử dụng để biên dịch mô hình. Đầu vào của trình biên dịch này là tệp ONNX được tạo ở bước 2. Trình biên dịch tạo ra một tệp nhị phân (được gọi là QPC, Cho Vùng chứa chương trình Qualcomm) trong đường dẫn được xác định bởi -aic-binary-dir tranh luận.

Trong lệnh biên dịch bên dưới, bạn sử dụng bốn lõi điện toán AI và kích thước lô của một lõi để biên dịch mô hình.

/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 được tạo ra trong bert-base-cased/generatedModels/bert-base-cased_fix_outofrange_fp16_qpc thư mục.

Bước 4. Chạy mô hình

Thiết lập phiên để chạy suy luận trên bộ tăng tốc Qualcomm Cloud AI100 trong phiên bản DL2q.

Thư viện Qualcomm qaic Python là một bộ API cung cấp hỗ trợ cho việc chạy suy luận trên bộ tăng tốc Cloud AI100.

  1. Sử dụng lệnh gọi API phiên để tạo một phiên bản của phiên. Lệnh gọi API phiên là điểm bắt đầu để sử dụng thư viện 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. Cơ cấu lại dữ liệu từ bộ đệm đầu ra với output_shapeoutput_type.
    token_logits = np.frombuffer(output['logits'], dtype=output_type).reshape(output_shape)

  3. Giải mã đầu ra được tạo ra.
    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)})")

Đây là kết quả đầu ra của câu đầu vào “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)

Đó là nó. Chỉ với vài bước, bạn đã biên dịch và chạy mô hình PyTorch trên phiên bản Amazon EC2 DL2q. Để tìm hiểu thêm về việc triển khai và biên dịch các mô hình trên phiên bản DL2q, hãy xem phần Tài liệu hướng dẫn về Cloud AI100.

Để tìm hiểu thêm về kiến ​​trúc mô hình DL nào phù hợp với phiên bản AWS DL2q và ma trận hỗ trợ mô hình hiện tại, hãy xem phần Tài liệu Qualcomm Cloud AI100.

Sẵn ngay bây giờ

Bạn có thể khởi chạy các phiên bản DL2q ngay hôm nay tại các Khu vực AWS Miền Tây Hoa Kỳ (Oregon) và Châu Âu (Frankfurt) với tư cách là Theo yêu cầuKín đáovà Trường hợp tại chỗhoặc như một phần của Kế hoạch tiết kiệm. Như thường lệ với Amazon EC2, bạn chỉ trả tiền cho những gì bạn sử dụng. Để biết thêm thông tin, xem Định giá Amazon EC2.

Các phiên bản DL2q có thể được triển khai bằng cách sử dụng AMI học sâu của AWS (DLAMI)và hình ảnh vùng chứa có sẵn thông qua các dịch vụ được quản lý như Amazon SageMaker, Dịch vụ Kubernetes đàn hồi của Amazon (Amazon EKS), Dịch vụ Amazon Elastic Container (Amazon ECS)Cụm song song AWS.

Để tìm hiểu thêm, hãy ghé thăm Phiên bản Amazon EC2 DL2q trang và gửi phản hồi tới AWS re:Post cho EC2 hoặc thông qua các liên hệ Hỗ trợ AWS thông thường của bạn.


Giới thiệu về tác giả

AK Roy là Giám đốc Quản lý Sản phẩm tại Qualcomm, phụ trách các sản phẩm và giải pháp AI trên Đám mây và Trung tâm dữ liệu. Ông có hơn 20 năm kinh nghiệm về chiến lược và phát triển sản phẩm, với trọng tâm hiện tại là hiệu suất và hiệu suất tốt nhất trong ngành/các giải pháp đầu cuối $ cho suy luận AI trong Đám mây, cho nhiều trường hợp sử dụng, bao gồm GenAI, LLM, Auto và Hybrid AI.

Kiến Anh Lang là Kiến trúc sư giải pháp chính tại Tổ chức chuyên gia toàn cầu AWS (WWSO). Bà có hơn 15 năm kinh nghiệm làm việc trong lĩnh vực HPC và AI. Tại AWS, cô tập trung vào việc giúp khách hàng triển khai, tối ưu hóa và mở rộng quy mô khối lượng công việc AI/ML của họ trên các phiên bản điện toán tăng tốc. Cô đam mê kết hợp các kỹ thuật trong lĩnh vực HPC và AI. Jianying có bằng Tiến sĩ về Vật lý tính toán của Đại học Colorado ở Boulder.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img