Amazon EC2 DL2q -instanssi kustannustehokkaaseen ja suorituskykyiseen tekoälypäätelmään on nyt yleisesti saatavilla | Amazon Web Services

Amazon EC2 DL2q -instanssi kustannustehokkaaseen ja suorituskykyiseen tekoälypäätelmään on nyt yleisesti saatavilla | Amazon Web Services

Lähdesolmu: 2974534

Tämä on Qualcomm AI:n AK Royn vieraspostaus.

Amazon Elastic Compute Cloud (Amazon EC2) Qualcomm AI 2 Standard -kiihdyttimien tuottamia DL100q-instanssien avulla voidaan kustannustehokkaasti ottaa käyttöön syvän oppimisen (DL) työkuormia pilvessä. Niitä voidaan myös käyttää Qualcomm-laitteissa käyttöönotettavien DL-työkuormien suorituskyvyn ja tarkkuuden kehittämiseen ja vahvistamiseen. DL2q-instanssit ovat ensimmäiset esiintymät, jotka tuovat Qualcommin keinotekoisen älykkään (AI) -teknologian pilveen.

Kahdeksalla Qualcomm AI 100 Standard -kiihdyttimellä ja 128 gigatavulla kiihdytinmuistilla asiakkaat voivat myös käyttää DL2q-instanssia suosittujen luovien tekoälysovellusten, kuten sisällön luomiseen, tekstin yhteenvetoon ja virtuaaliassistenttien, sekä klassisten tekoälysovellusten suorittamiseen luonnollisen kielen käsittelyyn. ja tietokonenäkö. Lisäksi Qualcomm AI 100 -kiihdyttimissä on sama AI-tekniikka, jota käytetään älypuhelimissa, autonomisessa ajamisessa, henkilökohtaisissa tietokoneissa ja laajennetun todellisuuden kuulokkeissa, joten DL2q-instanssien avulla voidaan kehittää ja validoida näitä tekoälyn työkuormia ennen käyttöönottoa.

Uudet DL2q-esiintymän kohokohdat

Jokainen DL2q-esiintymä sisältää kahdeksan Qualcomm Cloud AI100 -kiihdytintä, joiden yhteenlaskettu suorituskyky on yli 2.8 PetaOps of Int8 -johtopäätössuorituskykyä ja 1.4 PetaFlops of FP16 -päätelmäsuorituskykyä. Instanssissa on yhteensä 112 AI-ydintä, kiihdytinmuistikapasiteetti 128 Gt ja muistin kaistanleveys 1.1 TB sekunnissa.

Jokaisessa DL2q-esiintymässä on 96 vCPU:ta, järjestelmämuistikapasiteetti 768 Gt ja se tukee 100 Gbps:n verkkokaistanleveyttä sekä Amazon Elastic Block Store (Amazon EBS) tallennus 19 Gbps.

Esineen nimi vCPU: t Cloud AI100 -kiihdytin Kiihdytin muisti Kiihdytinmuisti BW (aggregoitu) Esimerkkimuisti Esineiden verkostoituminen Tallennus (Amazon EBS) kaistanleveys
DL2q.24xsuuri 96 8 128 GB 1.088 TB / s 768 GB 100 Gbps 19 Gbps

Qualcomm Cloud AI100 -kiihdytininnovaatio

Cloud AI100 -kiihdytin system-on-chip (SoC) on tarkoitukseen rakennettu, skaalautuva moniytiminen arkkitehtuuri, joka tukee laajaa valikoimaa syvälle oppivia käyttötapauksia, jotka ulottuvat palvelinkeskuksesta reunaan. SoC käyttää skalaari-, vektori- ja tensorilaskentaytimiä alan johtavalla 126 Mt:n SRAM-muistilla. Ytimet on yhdistetty suuren kaistanleveyden matalan latenssin verkko-sirulla (NoC) -verkkoon.

AI100-kiihdytin tukee laajaa ja kattavaa valikoimaa malleja ja käyttötapauksia. Alla oleva taulukko korostaa mallituen valikoimaa.

Malliluokka Lukumäärä mallien Esimerkkejä
NLP 157 BERT, BART, FasterTransformer, T5, Z-koodi MOE
Generatiivinen AI – NLP 40 LLaMA, CodeGen, GPT, OPT, BLOOM, Jais, Luminous, StarCoder, XGen
Generatiivinen tekoäly – kuva 3 Vakaa diffuusio v1.5 ja v2.1, OpenAI CLIP
CV – Kuvaluokitus 45 ViT, ResNet, ResNext, MobileNet, EfficientNet
CV – Objektin tunnistus 23 YOLO v2, v3, v4, v5 ja v7, SSD-ResNet, RetinaNet
CV – muu 15 LPRnet, superresoluutio/SRGAN, ByteTrack
Autoalan verkostot* 53 Havainto ja LIDAR, jalankulkijan, kaistan ja liikennevalojen tunnistus
Kaikki yhteensä > 300 ---- ----

* Useimmat autoteollisuuden verkot ovat yhdistelmäverkkoja, jotka koostuvat yksittäisten verkkojen fuusiosta.

DL2q-kiihdyttimen suuri sisäänrakennettu SRAM mahdollistaa edistyneiden suorituskykytekniikoiden tehokkaan toteutuksen, kuten MX6-mikroeksponenttitarkkuuden painojen tallentamiseen ja MX9-mikroeksponentin tarkkuuden kiihdytin-kiihdytin-kommunikaatioon. Mikroeksponenttitekniikka on kuvattu seuraavassa Open Compute Project (OCP) -alan ilmoituksessa: AMD, Arm, Intel, Meta, Microsoft, NVIDIA ja Qualcomm standardoivat seuraavan sukupolven kapeita tarkkuusdatamuotoja tekoälylle » Open Compute Project.

Ilmentymän käyttäjä voi käyttää seuraavaa strategiaa maksimoidakseen tehokkuuden hintakohtaisesti:

  • Tallenna painot MX6-mikroeksponenttitarkkuudella kiihdyttimen DDR-muistiin. MX6-tarkkuuden käyttö maksimoi käytettävissä olevan muistikapasiteetin ja muistin kaistanleveyden käytön luokkansa parhaan suorituskyvyn ja latenssin saavuttamiseksi.
  • Laske FP16:ssa saadaksesi vaaditun käyttötapauksen tarkkuuden, samalla kun käytät ylivoimaista sirulla olevaa SRAM-muistia ja kortin vara-TOP-kortteja, jotta voit toteuttaa tehokkaat matalan latenssin MX6–FP16-ytimet.
  • Käytä optimoitua erästrategiaa ja suurempaa eräkokoa käyttämällä käytettävissä olevaa suurta sirulla olevaa SRAM-muistia painojen uudelleenkäytön maksimoimiseksi, samalla kun aktivoit sirulla mahdollisimman paljon.

DL2q AI pino ja työkaluketju

DL2q-esiintymän mukana tulee Qualcomm AI Stack, joka tarjoaa yhtenäisen kehittäjäkokemuksen Qualcomm AI:lle pilvessä ja muissa Qualcommin tuotteissa. Sama Qualcomm AI pino ja perus AI -tekniikka toimii DL2q-esiintymissä ja Qualcomm Edge -laitteissa, mikä tarjoaa asiakkaille yhtenäisen kehittäjäkokemuksen ja yhtenäisen APIn pilvi-, auto-, tietokone-, laajennetun todellisuuden ja älypuhelinkehitysympäristöissä.

Työkaluketjun avulla ilmentymän käyttäjä voi nopeasti omaksua aiemmin koulutetun mallin, koota ja optimoida mallin ilmentymien ominaisuuksien mukaan ja ottaa sen jälkeen käyttöön käännetyt mallit tuotantopäätelmien käyttötapauksissa seuraavassa kuvassa esitetyssä kolmessa vaiheessa.

Lisätietoja mallin suorituskyvyn säätämisestä on kohdassa Cloud AI 100 Key Performance Parameters Dokumentointi.

Aloita DL2q-esiintymien käyttö

Tässä esimerkissä käännät ja otat käyttöön esikoulutetun BERT malli alkaen Halaaminen kasvot EC2 DL2q -esiintymässä käyttämällä valmiiksi rakennettua saatavilla olevaa DL2q AMI:tä neljässä vaiheessa.

Voit käyttää joko valmiiksi rakennettua Qualcomm DLAMI tai aloita Amazon Linux2 AMI:llä ja rakenna oma DL2q AMI Cloud AI 100 -alustan ja Apps SDK:n avulla. Amazonin yksinkertainen tallennuspalvelu (Amazon S3) ämpäri: s3://ec2-linux-qualcomm-ai100-sdks/latest/.

Seuraavissa vaiheissa käytetään valmiiksi rakennettua DL2q AMI:tä, Qualcomm Base AL2 DLAMI.

Käytä SSH:ta päästäksesi DL2q-esiintymääsi Qualcomm Base AL2 DLAMI AMI:n avulla ja seuraa vaiheita 1–4.

Vaihe 1. Määritä ympäristö ja asenna tarvittavat paketit

  1. Asenna Python 3.8.
    sudo amazon-linux-extras install python3.8

  2. Asenna Python 3.8 -virtuaaliympäristö.
    python3.8 -m venv /home/ec2-user/userA/pyenv

  3. Aktivoi Python 3.8 -virtuaaliympäristö.
    source /home/ec2-user/userA/pyenv/bin/activate

  4. Asenna tarvittavat paketit, jotka näkyvät kohdassa követelmények.txt-tiedosto saatavilla Qualcommin julkiselta Github-sivustolta.
    pip3 install -r requirements.txt

  5. Tuo tarvittavat kirjastot.
    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

Vaihe 2. Tuo malli

  1. Tuo malli ja tokenoi se.
    model_card = 'bert-base-cased'
    model = AutoModelForMaskedLM.from_pretrained(model_card)
    tokenizer = AutoTokenizer.from_pretrained(model_card)

  2. Määritä näytesyöttö ja pura se inputIds ja 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. Muunna malli ONNX:ksi, joka voidaan sitten välittää kääntäjälle.
    # 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. Käytät mallia FP16-tarkkuudella. Joten sinun on tarkistettava, sisältääkö malli vakioita FP16-alueen ulkopuolella. Välitä malli fix_onnx_fp16 -toiminnolla luodaan uusi ONNX-tiedosto, jossa on tarvittavat korjaukset.
    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)

Vaihe 3. Kokoa malli

- qaic-exec Mallin kääntämiseen käytetään komentoriviliittymän (CLI) kääntäjätyökalua. Tämän kääntäjän syöte on vaiheessa 2 luotu ONNX-tiedosto. Kääntäjä tuottaa binääritiedoston (ns. QPCVarten Qualcomm-ohjelmasäiliö) määrittämällä polulla -aic-binary-dir Perustelu.

Alla olevassa käännöskomennossa käytät neljää tekoälylaskentaydintä ja yhden eräkokoa mallin kääntämiseen.

/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 luodaan bert-base-cased/generatedModels/bert-base-cased_fix_outofrange_fp16_qpc kansio.

Vaihe 4. Suorita malli

Määritä istunto suorittaaksesi päättelyn Cloud AI100 Qualcomm -kiihdyttimellä DL2q-instanssissa.

Qualcomm qaic Python -kirjasto on joukko API-liittymiä, jotka tukevat päättelyjen suorittamista Cloud AI100 -kiihdytinssä.

  1. Käytä Session API -kutsua istunnon esiintymän luomiseen. Session API -kutsu on aloituskohta qaic Python -kirjaston käyttöön.
    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. Järjestä tiedot uudelleen lähtöpuskurista käyttämällä output_shape ja output_type.
    token_logits = np.frombuffer(output['logits'], dtype=output_type).reshape(output_shape)

  3. Dekoodaa tuotettu tulos.
    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)})")

Tässä ovat ulostulot syöttölauseelle "Koira [MASKI] matolla".

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)

Se siitä. Muutamalla askeleella käänsit ja suoritit PyTorch-mallin Amazon EC2 DL2q -esiintymässä. Lisätietoja DL2q-esiintymän mallien käyttöönotosta ja kääntämisestä on kohdassa Cloud AI100 -opastusdokumentaatio.

Saat lisätietoja siitä, mitkä DL-malliarkkitehtuurit sopivat hyvin AWS DL2q -esiintymiin ja nykyiseen mallin tukimatriisiin, katso Qualcomm Cloud AI100 -dokumentaatio.

Saatavana nyt

Voit käynnistää DL2q-esiintymiä tänään Yhdysvaltain länsiosassa (Oregon) ja Euroopassa (Frankfurt) AWS-alueilla Tarpeen vaatiessavarattuja Paikalliset tapaukset, tai osana a Säästösuunnitelma. Kuten tavallista Amazon EC2:n kanssa, maksat vain siitä, mitä käytät. Katso lisätietoja Amazon EC2 -hinnoittelu.

DL2q-ilmentymiä voidaan ottaa käyttöön käyttämällä AWS Deep Learning AMI (DLAMI), ja säilökuvat ovat saatavilla hallittujen palveluiden, kuten Amazon Sage Maker, Amazon Elastic Kubernetes Service (Amazon EKS), Amazonin elastisten säiliöiden palvelu (Amazon ECS)ja AWS ParallelCluster.

Lisätietoja saat käymällä Amazon EC2 DL2q -esiintymä sivulle ja lähetä palautetta osoitteeseen AWS re:Post for EC2 tai tavallisten AWS-tukikontaktiesi kautta.


Tietoja kirjoittajista

AK Roy on Qualcommin tuotehallinnan johtaja pilvi- ja datakeskuksen tekoälytuotteista ja -ratkaisuista. Hänellä on yli 20 vuoden kokemus tuotestrategiasta ja -kehityksestä. Hän keskittyy tällä hetkellä luokkansa parhaaseen suorituskykyyn / $ päästä päähän -ratkaisuihin tekoälyn päättelyyn pilvessä, monenlaisiin käyttötapauksiin, mukaan lukien GenAI, LLM:t, Auto ja Hybrid AI.

Jianying Lang on pääratkaisuarkkitehti AWS Worldwide Specialist Organizationissa (WWSO). Hänellä on yli 15 vuoden työkokemus HPC- ja tekoälyalalta. AWS:ssä hän keskittyy auttamaan asiakkaita ottamaan käyttöön, optimoimaan ja skaalaamaan tekoälyn/ML-työkuormituksensa nopeutetuissa laskentatapauksissa. Hän on intohimoinen HPC:n ja tekoälyn tekniikoiden yhdistämisestä. Jianyingilla on tohtorin tutkinto laskennallisesta fysiikasta Coloradon yliopistosta Boulderissa.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen