نمونه آمازون EC2 DL2q برای استنتاج هوش مصنوعی مقرون به صرفه و با کارایی بالا اکنون به طور کلی در دسترس است | خدمات وب آمازون

نمونه آمازون EC2 DL2q برای استنتاج هوش مصنوعی مقرون به صرفه و با کارایی بالا اکنون به طور کلی در دسترس است | خدمات وب آمازون

گره منبع: 2974534

این یک پست مهمان توسط AK Roy از Qualcomm AI است.

ابر محاسباتی الاستیک آمازون (Amazon EC2) نمونه‌های DL2q که توسط شتاب‌دهنده‌های Qualcomm AI 100 Standard ارائه می‌شوند، می‌توانند برای استقرار مقرون‌به‌صرفه بارهای کاری یادگیری عمیق (DL) در فضای ابری استفاده شوند. همچنین می‌توان از آنها برای توسعه و اعتبارسنجی عملکرد و دقت بارهای کاری DL که در دستگاه‌های Qualcomm مستقر می‌شوند، استفاده کرد. نمونه‌های DL2q اولین نمونه‌هایی هستند که فناوری هوش مصنوعی (AI) کوالکام را به فضای ابری آورده‌اند.

با هشت شتاب دهنده Qualcomm AI 100 Standard و 128 گیگا بایت حافظه کل شتاب دهنده، مشتریان همچنین می توانند از نمونه های DL2q برای اجرای برنامه های کاربردی AI مولد محبوب مانند تولید محتوا، خلاصه سازی متن و دستیارهای مجازی و همچنین برنامه های هوش مصنوعی کلاسیک برای پردازش زبان طبیعی استفاده کنند. و بینایی کامپیوتری علاوه بر این، شتاب‌دهنده‌های Qualcomm AI 100 از همان فناوری هوش مصنوعی استفاده شده در گوشی‌های هوشمند، رانندگی خودکار، رایانه‌های شخصی و هدست‌های واقعیت توسعه‌یافته بهره می‌برند، بنابراین می‌توان از نمونه‌های DL2q برای توسعه و اعتبارسنجی این حجم‌های کاری هوش مصنوعی قبل از استقرار استفاده کرد.

نکات برجسته نمونه جدید DL2q

هر نمونه DL2q دارای هشت شتاب‌دهنده Qualcomm Cloud AI100 است، با عملکرد کلی بیش از 2.8 PetaOps عملکرد استنتاج Int8 و 1.4 PetaFlops عملکرد استنتاج FP16. این نمونه دارای مجموع 112 هسته هوش مصنوعی، ظرفیت حافظه شتاب دهنده 128 گیگابایت و پهنای باند حافظه 1.1 ترابایت بر ثانیه است.

هر نمونه DL2q دارای 96 vCPU، ظرفیت حافظه سیستم 768 گیگابایت است و از پهنای باند شبکه 100 گیگابیت بر ثانیه و همچنین پشتیبانی می کند. فروشگاه بلوک الاستیک آمازون (Amazon EBS) ذخیره سازی 19 گیگابیت بر ثانیه

نام نمونه vCPU ها شتاب دهنده های Cloud AI100 حافظه شتاب دهنده حافظه شتاب دهنده BW (تجمیع شده) حافظه نمونه شبکه سازی نمونه پهنای باند ذخیره سازی (Amazon EBS).
DL2q.24xlarge 96 8 128 GB 1.088 TB / s 768 GB 100 Gbps 19 Gbps

نوآوری شتاب دهنده Qualcomm Cloud AI100

سیستم روی تراشه شتاب دهنده Cloud AI100 (SoC) یک معماری چند هسته ای مقیاس پذیر و هدفمند است که از طیف گسترده ای از موارد استفاده یادگیری عمیق از مرکز داده تا لبه پشتیبانی می کند. SoC از هسته‌های محاسباتی اسکالر، برداری، و تانسور با ظرفیت SRAM پیشرو در صنعت 126 مگابایت استفاده می‌کند. هسته ها با یک شبکه شبکه روی تراشه (NoC) با تاخیر کم با پهنای باند بالا به هم متصل می شوند.

شتاب دهنده AI100 از طیف گسترده و جامعی از مدل ها و موارد استفاده پشتیبانی می کند. جدول زیر دامنه پشتیبانی مدل را نشان می دهد.

دسته مدل تعدادی از مدل های نمونه ها
NLP 157 BERT، BART، FasterTransformer، T5، Z-code MOE
هوش مصنوعی مولد – NLP 40 LLaMA، CodeGen، GPT، OPT، BLOOM، Jais، Luminous، StarCoder، XGen
هوش مصنوعی مولد - تصویر 3 Stable diffusion 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 برای ارتباط شتاب دهنده به شتاب دهنده را امکان پذیر می کند. فناوری ریزنما در اعلامیه صنعتی پروژه محاسبات باز (OCP) زیر توضیح داده شده است: AMD، Arm، Intel، Meta، Microsoft، NVIDIA و Qualcomm فرمت‌های داده‌های دقیق باریک نسل بعدی را برای هوش مصنوعی استاندارد می‌کنند » Open Compute Project.

کاربر نمونه می تواند از استراتژی زیر برای به حداکثر رساندن عملکرد به ازای هزینه استفاده کند:

  • وزن ها را با استفاده از دقت ریزنما MX6 در حافظه DDR روی شتاب دهنده ذخیره کنید. استفاده از دقت MX6، استفاده از ظرفیت حافظه موجود و پهنای باند حافظه را برای ارائه بهترین توان عملیاتی و تأخیر در کلاس به حداکثر می‌رساند.
  • در FP16 محاسبه کنید تا دقت مورد نیاز مورد نیاز را ارائه کنید، در حالی که از SRAM روی تراشه برتر و TOPهای یدکی روی کارت استفاده می‌کنید، تا هسته‌های MX6 با تأخیر پایین با کارایی بالا را در FP16 پیاده‌سازی کنید.
  • با استفاده از SRAM روی تراشه بزرگ موجود برای به حداکثر رساندن استفاده مجدد از وزن ها، در حالی که فعال سازی های روی تراشه را تا حداکثر ممکن حفظ می کنید، از یک استراتژی دسته بندی بهینه و اندازه دسته بالاتر استفاده کنید.

پشته و زنجیره ابزار DL2q AI

نمونه DL2q با Qualcomm AI Stack همراه است که یک تجربه توسعه‌دهنده ثابت را در سراسر Qualcomm AI در فضای ابری و سایر محصولات Qualcomm ارائه می‌دهد. همان پشته و فناوری هوش مصنوعی پایه Qualcomm روی نمونه‌های DL2q و دستگاه‌های Qualcomm edge اجرا می‌شود و یک تجربه توسعه‌دهنده ثابت را با یک API یکپارچه در محیط‌های ابر، خودرو، رایانه شخصی، واقعیت توسعه‌یافته و محیط‌های توسعه گوشی‌های هوشمند به مشتریان ارائه می‌دهد.

زنجیره ابزار کاربر نمونه را قادر می‌سازد تا به سرعت مدلی را که قبلاً آموزش دیده است، کامپایل و مدل را برای قابلیت‌های نمونه بهینه‌سازی کند، و متعاقباً مدل‌های کامپایل‌شده را برای موارد استفاده استنتاج تولید در سه مرحله نشان‌داده شده در شکل زیر استقرار دهد.

برای کسب اطلاعات بیشتر در مورد تنظیم عملکرد یک مدل، به ادامه مطلب مراجعه کنید پارامترهای کلیدی عملکرد Cloud AI 100 مستندات.

با نمونه های DL2q شروع کنید

در این مثال، شما یک از پیش آموزش دیده را کامپایل و مستقر می کنید مدل BERT از جانب در آغوش کشیدن صورت در یک نمونه EC2 DL2q با استفاده از یک DL2q AMI از پیش ساخته شده، در چهار مرحله.

شما می توانید از هر یک از پیش ساخته شده استفاده کنید Qualcomm DLAMI به عنوان مثال یا با آمازون Linux2 AMI شروع کنید و DL2q AMI خود را با پلتفرم Cloud AI 100 و Apps SDK موجود در این بسازید. سرویس ذخیره سازی ساده آمازون (Amazon S3) سطل: s3://ec2-linux-qualcomm-ai100-sdks/latest/.

مراحل بعدی از DL2q AMI از پیش ساخته شده استفاده می کنند. Qualcomm Base AL2 DLAMI.

از SSH برای دسترسی به نمونه DL2q با Qualcomm Base AL2 DLAMI AMI استفاده کنید و مراحل 1 تا 4 را دنبال کنید.

مرحله 1. محیط را تنظیم و بسته های مورد نیاز را نصب کنید

  1. پایتون 3.8 را نصب کنید.
    sudo amazon-linux-extras install python3.8

  2. محیط مجازی پایتون 3.8 را راه اندازی کنید.
    python3.8 -m venv /home/ec2-user/userA/pyenv

  3. محیط مجازی پایتون 3.8 را فعال کنید.
    source /home/ec2-user/userA/pyenv/bin/activate

  4. بسته های مورد نیاز را که در نشان داده شده است نصب کنید سند requirement.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. مدل را کامپایل کنید

La qaic-exec ابزار کامپایلر رابط خط فرمان (CLI) برای کامپایل مدل استفاده می شود. ورودی این کامپایلر فایل ONNX تولید شده در مرحله 2 است. کامپایلر یک فایل باینری تولید می کند (به نام QPC، برای ظرف برنامه کوالکام) در مسیری که توسط -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. مدل را اجرا کنید

یک جلسه برای اجرای استنتاج بر روی یک شتاب دهنده Cloud AI100 Qualcomm در نمونه DL2q تنظیم کنید.

کتابخانه Qualcomm qaic Python مجموعه‌ای از API است که از اجرای استنتاج در شتاب‌دهنده Cloud AI100 پشتیبانی می‌کند.

  1. از فراخوانی Session API برای ایجاد یک نمونه از session استفاده کنید. فراخوانی Session 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 طرح پس انداز. طبق معمول آمازون EC2، شما فقط برای آنچه استفاده می کنید هزینه می پردازید. برای اطلاعات بیشتر ببین قیمت آمازون EC2.

نمونه های DL2q را می توان با استفاده از آن مستقر کرد AMI های یادگیری عمیق AWS (DLAMI)، و تصاویر کانتینر از طریق سرویس های مدیریت شده مانند آمازون SageMaker, Amazon Elastic Kubernetes Service (Amazon EKS), سرویس کانتینر الاستیک آمازون (Amazon ECS)و AWS ParallelCluster.

برای کسب اطلاعات بیشتر، از نمونه آمازون EC2 DL2q صفحه، و ارسال بازخورد به AWS re: ارسال برای EC2 یا از طریق مخاطبین معمولی پشتیبانی AWS شما.


درباره نویسندگان

ای کی روی مدیر مدیریت محصول در Qualcomm برای محصولات و راه حل های Cloud و Datacenter AI است. او بیش از 20 سال تجربه در استراتژی و توسعه محصول، با تمرکز فعلی بر بهترین عملکرد و عملکرد در کلاس / راه حل های انتها به انتها برای استنتاج هوش مصنوعی در فضای ابری، برای طیف وسیعی از موارد استفاده دارد. از جمله GenAI، LLMs، Auto و Hybrid AI.

جیانیینگ لانگ یک معمار اصلی راه حل در سازمان تخصصی جهانی AWS (WWSO) است. او بیش از 15 سال تجربه کاری در زمینه HPC و AI دارد. در AWS، او بر کمک به مشتریان برای استقرار، بهینه‌سازی و مقیاس‌بندی حجم کاری AI/ML خود بر روی نمونه‌های محاسباتی تسریع‌شده تمرکز می‌کند. او علاقه زیادی به ترکیب تکنیک ها در زمینه های HPC و AI دارد. جیانینگ دارای مدرک دکترا در فیزیک محاسباتی از دانشگاه کلرادو در بولدر است.

تمبر زمان:

بیشتر از آموزش ماشین AWS