Zephyrnet Logosu

Uygun maliyetli, yüksek performanslı yapay zeka çıkarımı için Amazon EC2 DL2q bulut sunucusu artık genel kullanıma sunuldu | Amazon Web Hizmetleri

Tarih:

Bu, Qualcomm AI'den AK Roy'un misafir yazısıdır.

Amazon Elastik Bilgi İşlem Bulutu (Amazon EC2) Qualcomm AI 2 Standard hızlandırıcıları tarafından desteklenen DL100q bulut sunucuları, bulutta derin öğrenme (DL) iş yüklerini uygun maliyetli bir şekilde dağıtmak için kullanılabilir. Ayrıca Qualcomm cihazlarına dağıtılacak DL iş yüklerinin performansını ve doğruluğunu geliştirmek ve doğrulamak için de kullanılabilirler. DL2q bulut sunucuları, Qualcomm'un yapay zeka (AI) teknolojisini buluta getiren ilk bulut sunucularıdır.

Sekiz Qualcomm AI 100 Standard hızlandırıcı ve 128 GiB toplam hızlandırıcı belleğiyle müşteriler, içerik oluşturma, metin özetleme ve sanal asistanlar gibi popüler üretken yapay zeka uygulamalarının yanı sıra doğal dil işlemeye yönelik klasik yapay zeka uygulamalarını çalıştırmak için DL2q örneklerini de kullanabilirler ve bilgisayar görüşü. Ek olarak, Qualcomm AI 100 hızlandırıcıları akıllı telefonlar, otonom sürüş, kişisel bilgisayarlar ve genişletilmiş gerçeklik kulaklıklarında kullanılan yapay zeka teknolojisinin aynısına sahiptir; böylece DL2q bulut sunucuları, bu yapay zeka iş yüklerini dağıtımdan önce geliştirmek ve doğrulamak için kullanılabilir.

Yeni DL2q örneğinin öne çıkanları

Her DL2q örneği, 100 PetaOps Int2.8 çıkarım performansı ve 8 PetaFlop FP1.4 çıkarım performansına sahip sekiz Qualcomm Cloud AI16 hızlandırıcıyı içerir. Örnekte toplam 112 AI çekirdeği, 128 GB hızlandırıcı bellek kapasitesi ve saniyede 1.1 TB bellek bant genişliği bulunuyor.

Her DL2q örneğinde 96 vCPU bulunur, sistem belleği kapasitesi 768 GB'dir ve 100 Gbps'lik ağ bant genişliğini destekler. Amazon Elastik Blok Mağazası (Amazon EBS) 19 Gbps depolama.

Örnek isim vCPU'lar Cloud AI100 hızlandırıcıları Hızlandırıcı hafızası Hızlandırıcı belleği BW (toplu) Örnek belleği Örnek ağ iletişimi Depolama (Amazon EBS) bant genişliği
DL2q.24xlarge 96 8 128 GB 1.088 TB / sn 768 GB 100 Gbps 19 Gbps

Qualcomm Cloud AI100 hızlandırıcı yeniliği

Cloud AI100 hızlandırıcı çip üzerinde sistem (SoC), veri merkezinden uca kadar geniş bir yelpazedeki derin öğrenme kullanım senaryolarını destekleyen, amaca yönelik olarak oluşturulmuş, ölçeklenebilir, çok çekirdekli bir mimaridir. SoC, 126 MB'lik sektör lideri kalıp içi SRAM kapasitesine sahip skaler, vektör ve tensör hesaplama çekirdeklerini kullanır. Çekirdekler, yüksek bant genişliğine sahip, düşük gecikmeli bir çip üzerinde ağ (NoC) ağıyla birbirine bağlanır.

AI100 hızlandırıcı, geniş ve kapsamlı bir model ve kullanım senaryosu yelpazesini destekler. Aşağıdaki tablo model desteğinin aralığını göstermektedir.

model kategorisi model sayısı Örnekler
NLP 157 BERT, BART, FasterTransformer, T5, Z-kodu MOE
Üretken Yapay Zeka – NLP 40 LLaMA, CodeGen, GPT, OPT, BLOOM, Jais, Aydınlık, StarCoder, XGen
Üretken Yapay Zeka – Görüntü 3 Kararlı difüzyon v1.5 ve v2.1, OpenAI CLIP
CV – Görüntü sınıflandırması 45 ViT, ResNet, ResNext, MobileNet, EfficientNet
CV – Nesne algılama 23 YOLO v2, v3, v4, v5 ve v7, SSD-ResNet, RetinaNet
CV – Diğer 15 LPRNet, Süper çözünürlük/SRGAN, ByteTrack
Otomotiv ağları* 53 Algılama ve LIDAR, yaya, şerit ve trafik ışığı algılama
Toplam > 300 

* Çoğu otomotiv ağı, bireysel ağların birleşiminden oluşan bileşik ağlardır.

DL2q hızlandırıcıdaki büyük kalıp üstü SRAM, ağırlıkların depolanması için MX6 mikro üs hassasiyeti ve hızlandırıcılar-hızlandırıcı iletişimi için MX9 mikro üs hassasiyeti gibi gelişmiş performans tekniklerinin verimli bir şekilde uygulanmasını sağlar. Mikro üs teknolojisi aşağıdaki Açık Hesaplama Projesi (OCP) sektör duyurusunda açıklanmıştır: AMD, Arm, Intel, Meta, Microsoft, NVIDIA ve Qualcomm Yapay Zeka için Yeni Nesil Dar Hassas Veri Formatlarını Standartlaştırıyor » Açık Hesaplama Projesi.

Örnek kullanıcısı, maliyet başına performansı en üst düzeye çıkarmak için aşağıdaki stratejiyi kullanabilir:

  • Ağırlıkları MX6 mikro üs hassasiyetini kullanarak hızlandırıcıdaki DDR belleğinde saklayın. MX6 hassasiyetinin kullanılması, sınıfının en iyisi verim ve gecikmeyi sunmak için mevcut bellek kapasitesinin ve bellek bant genişliğinin kullanımını en üst düzeye çıkarır.
  • Yüksek performanslı, düşük gecikme süreli MX16'dan FP6'ya kadar çekirdekleri uygulamak için üstün çip üzeri SRAM ve karttaki yedek TOP'ları kullanırken gerekli kullanım senaryosu doğruluğunu sağlamak için FP16'da hesaplama yapın.
  • Çip üzerindeki aktivasyonları mümkün olan maksimumda tutarken, ağırlıkların yeniden kullanımını en üst düzeye çıkarmak için mevcut büyük çip üzerindeki SRAM'ı kullanarak optimize edilmiş bir toplu işleme stratejisi ve daha yüksek bir toplu iş boyutu kullanın.

DL2q AI Yığını ve araç zinciri

DL2q örneğine, buluttaki Qualcomm AI ve diğer Qualcomm ürünleri genelinde tutarlı bir geliştirici deneyimi sunan Qualcomm AI Stack eşlik ediyor. Aynı Qualcomm AI yığını ve temel AI teknolojisi, DL2q bulut sunucularında ve Qualcomm uç cihazlarında çalışarak müşterilere bulut, otomotiv, kişisel bilgisayar, genişletilmiş gerçeklik ve akıllı telefon geliştirme ortamlarında birleşik bir API ile tutarlı bir geliştirici deneyimi sağlıyor.

Araç zinciri, örnek kullanıcısının önceden eğitilmiş bir modeli hızlı bir şekilde devreye almasına, örnek yetenekleri için modeli derlemesine ve optimize etmesine ve ardından aşağıdaki şekilde gösterilen üç adımda derlenmiş modelleri üretim çıkarımı kullanım durumları için dağıtmasına olanak tanır.

Bir modelin performansını ayarlama hakkında daha fazla bilgi edinmek için bkz. Cloud AI 100 Temel Performans Parametreleri Belgeler.

DL2q bulut sunucularını kullanmaya başlayın

Bu örnekte, önceden eğitilmiş bir programı derleyip dağıtacaksınız. BERT modeli itibaren Sarılma Yüz dört adımda önceden oluşturulmuş kullanılabilir bir DL2q AMI kullanarak bir EC2 DL2q örneğinde.

Önceden oluşturulmuş olanı kullanabilirsiniz Qualcomm DLAMI bulut sunucusunda veya bir Amazon Linux2 AMI ile başlayın ve bu sürümde bulunan Cloud AI 2 Platform ve Apps SDK ile kendi DL100q AMI'nızı oluşturun Amazon Basit Depolama Hizmeti (Amazon S3) Kova: s3://ec2-linux-qualcomm-ai100-sdks/latest/.

Aşağıdaki adımlarda önceden oluşturulmuş DL2q AMI kullanılır, Qualcomm Base AL2 DLAMI.

Qualcomm Base AL2 DLAMI AMI ile DL2q örneğinize erişmek için SSH'yi kullanın ve 1'den 4'e kadar olan adımları izleyin.

1. Adım. Ortamı kurun ve gerekli paketleri yükleyin

  1. Python 3.8'u yükleyin.
    sudo amazon-linux-extras install python3.8

  2. Python 3.8 sanal ortamını kurun.
    python3.8 -m venv /home/ec2-user/userA/pyenv

  3. Python 3.8 sanal ortamını etkinleştirin.
    source /home/ec2-user/userA/pyenv/bin/activate

  4. Şekilde gösterilen gerekli paketleri yükleyin. gereksinimler.txt belgesi Qualcomm'un herkese açık Github sitesinde mevcuttur.
    pip3 install -r requirements.txt

  5. Gerekli kitaplıkları içe aktarın.
    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

Adım 2. Modeli içe aktarın

  1. Modeli içe aktarın ve simgeleştirin.
    model_card = 'bert-base-cased'
    model = AutoModelForMaskedLM.from_pretrained(model_card)
    tokenizer = AutoTokenizer.from_pretrained(model_card)

  2. Örnek bir giriş tanımlayın ve inputIds ve 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. Modeli daha sonra derleyiciye aktarılabilecek ONNX'e dönüştürün.
    # 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. Modeli FP16 hassasiyetinde çalıştıracaksınız. Bu nedenle modelin FP16 aralığının ötesinde herhangi bir sabit içerip içermediğini kontrol etmeniz gerekir. Modeli şuraya iletin: fix_onnx_fp16 gerekli düzeltmeleri içeren yeni ONNX dosyasını oluşturma işlevini kullanın.
    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)

Adım 3. Modeli derleyin

The qaic-exec Modeli derlemek için komut satırı arayüzü (CLI) derleyici aracı kullanılır. Bu derleyicinin girişi, 2. adımda oluşturulan ONNX dosyasıdır. Derleyici, bir ikili dosya (adı verilen) üretir. QPC, Için Qualcomm program kapsayıcısı) tarafından tanımlanan yolda -aic-binary-dir argüman.

Aşağıdaki derleme komutunda, modeli derlemek için dört AI hesaplama çekirdeği ve bir toplu iş boyutu kullanırsınız.

/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 şu şekilde oluşturulur: bert-base-cased/generatedModels/bert-base-cased_fix_outofrange_fp16_qpc klasör.

Adım 4. Modeli çalıştırın

Çıkarımı DL100q örneğindeki Cloud AI2 Qualcomm hızlandırıcısında çalıştırmak için bir oturum ayarlayın.

Qualcomm qaic Python kitaplığı, Cloud AI100 hızlandırıcıda çıkarım çalıştırmaya yönelik destek sağlayan bir API kümesidir.

  1. Bir oturum örneği oluşturmak için Oturum API çağrısını kullanın. Oturum API çağrısı, qaic Python kitaplığını kullanmanın giriş noktasıdır.
    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. Çıkış arabelleğindeki verileri şununla yeniden yapılandırın: output_shape ve output_type.
    token_logits = np.frombuffer(output['logits'], dtype=output_type).reshape(output_shape)

  3. Üretilen çıktının kodunu çözün.
    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)})")

İşte "Mat üzerindeki köpek [MASK]." giriş cümlesinin çıktıları.

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)

Bu kadar. Yalnızca birkaç adımda bir Amazon EC2 DL2q bulut sunucusunda bir PyTorch modeli derleyip çalıştırdınız. DL2q örneğine model ekleme ve derleme hakkında daha fazla bilgi edinmek için bkz. Cloud AI100 Eğitim Belgeleri.

AWS DL2q bulut sunucularına hangi DL model mimarilerinin uygun olduğu ve mevcut model destek matrisi hakkında daha fazla bilgi edinmek için bkz. Qualcomm Cloud AI100 belgeleri.

Şu an müsait

DL2q bulut sunucularını bugün ABD Batı (Oregon) ve Avrupa (Frankfurt) AWS Bölgelerinde şu şekilde başlatabilirsiniz: Talep üzerinerezerve, ve Spot Örnekleriveya bir parçası olarak Tasarruf Planı. Amazon EC2'de her zamanki gibi yalnızca kullandığınız kadar ödersiniz. Daha fazla bilgi için bakınız Amazon EC2 fiyatlandırması.

DL2q örnekleri kullanılarak dağıtılabilir AWS Derin Öğrenme AMI'leri (DLAMI)ve kapsayıcı görüntülerine aşağıdakiler gibi yönetilen hizmetler aracılığıyla ulaşılabilir: Amazon Adaçayı Yapıcı, Amazon Elastic Kubernetes Hizmeti (Amazon EKS), Amazon Elastik Konteyner Hizmeti (Amazon ECS), ve AWS ParalelKüme.

Daha fazla bilgi edinmek için Amazon EC2 DL2q örneği sayfasına gidin ve geri bildirim gönderin EC2 için AWS re:Post veya her zamanki AWS Support iletişim bilgileriniz aracılığıyla.


yazarlar hakkında

AK Roy Qualcomm'da Bulut ve Veri Merkezi Yapay Zeka ürünleri ve çözümleri için Ürün Yönetimi Direktörüdür. Geniş bir kullanım senaryosu yelpazesi için Bulutta yapay zeka çıkarımına yönelik sınıfının en iyisi performans ve performans/$ uçtan uca çözümlere odaklanan ürün stratejisi ve geliştirme alanında 20 yılı aşkın deneyime sahiptir. GenAI, LLM'ler, Otomatik ve Hibrit AI dahil.

Jianying Lang AWS Dünya Çapında Uzman Kuruluşunda (WWSO) Baş Çözüm Mimarıdır. HPC ve AI alanında 15 yılı aşkın çalışma tecrübesine sahiptir. AWS'de müşterilerin AI/ML iş yüklerini hızlandırılmış bilgi işlem örneklerinde dağıtmalarına, optimize etmelerine ve ölçeklendirmelerine yardımcı olmaya odaklanıyor. HPC ve AI alanlarındaki teknikleri birleştirme konusunda tutkulu. Jianying, Boulder'daki Colorado Üniversitesi'nden Hesaplamalı Fizik alanında doktora derecesine sahiptir.

spot_img

En Son İstihbarat

spot_img