با AWS Inferentia2 | عملکرد انتشار پایدار و کاهش هزینه های استنتاج را به حداکثر برسانید خدمات وب آمازون

با AWS Inferentia2 | عملکرد انتشار پایدار و کاهش هزینه های استنتاج را به حداکثر برسانید خدمات وب آمازون

مدل‌های هوش مصنوعی مولد در ماه‌های اخیر به دلیل قابلیت‌های چشمگیر آن در ایجاد متن، تصاویر، کد و صدا واقعی، رشد سریعی را تجربه کرده‌اند. در بین این مدل ها، مدل های Stable Diffusion به دلیل قدرت منحصر به فرد خود در ایجاد تصاویر با کیفیت بالا بر اساس اعلان های متنی متمایز هستند. Stable Diffusion می‌تواند طیف گسترده‌ای از تصاویر با کیفیت بالا، از جمله پرتره‌های واقعی، مناظر، و حتی هنر انتزاعی را ایجاد کند. و مانند سایر مدل‌های مولد هوش مصنوعی، مدل‌های انتشار پایدار به محاسبات قدرتمند برای ارائه استنتاج با تأخیر کم نیاز دارند.

در این پست، ما نشان می دهیم که چگونه می توانید مدل های Stable Diffusion را اجرا کنید و با کمترین هزینه به عملکرد بالا دست پیدا کنید. ابر محاسبه الاستیک آمازون (Amazon EC2) با استفاده از نمونه های آمازون EC2 Inf2 طراحی توسط AWS Inferentia2. ما به معماری یک مدل انتشار پایدار نگاه می کنیم و مراحل تدوین یک مدل انتشار پایدار را با استفاده از نورون AWS و استقرار آن در یک نمونه Inf2. ما همچنین بهینه سازی هایی را که Neuron SDK به طور خودکار برای بهبود عملکرد انجام می دهد، مورد بحث قرار می دهیم. شما می توانید هر دو نسخه Stable Diffusion 2.1 و 1.5 را روی AWS Inferentia2 به صرفه اجرا کنید. در نهایت، ما نشان می دهیم که چگونه می توانید یک مدل انتشار پایدار را در یک نمونه Inf2 با آمازون SageMaker.

اندازه مدل Stable Diffusion 2.1 در ممیز شناور 32 (FP32) 5 گیگابایت و 2.5 گیگابایت در bfoat16 (BF16) است. یک نمونه inf2.xlarge دارای یک شتاب دهنده AWS Inferentia2 با 32 گیگابایت حافظه HBM است. مدل Stable Diffusion 2.1 می تواند روی یک نمونه inf2.xlarge قرار بگیرد. Stable Diffusion یک مدل متن به تصویر است که می توانید از آن برای ایجاد تصاویری از سبک ها و محتوای مختلف به سادگی با ارائه یک پیام متنی به عنوان ورودی استفاده کنید. برای آشنایی بیشتر با معماری مدل Stable Diffusion به ادامه مطلب مراجعه کنید با مدل‌های Stable Diffusion تصاویری با کیفیت بالا ایجاد کنید و آنها را با هزینه مقرون به صرفه با Amazon SageMaker اجرا کنید..

چگونه Neuron SDK عملکرد Stable Diffusion را بهینه می کند

قبل از اینکه بتوانیم مدل Stable Diffusion 2.1 را در نمونه های AWS Inferentia2 استقرار دهیم، باید اجزای مدل را با استفاده از Neuron SDK. Neuron SDK که شامل یک کامپایلر یادگیری عمیق، زمان اجرا و ابزار است، مدل‌های یادگیری عمیق را کامپایل کرده و به‌طور خودکار بهینه‌سازی می‌کند تا بتوانند به طور موثر بر روی نمونه‌های Inf2 اجرا شوند و عملکرد کامل شتاب‌دهنده AWS Inferentia2 را استخراج کنند. ما نمونه هایی برای مدل Stable Diffusion 2.1 در دسترس داریم GitHub repo. این نوت بوک یک مثال سرتاسری از نحوه کامپایل یک مدل انتشار پایدار، ذخیره مدل های نورون کامپایل شده و بارگذاری آن در زمان اجرا برای استنتاج ارائه می دهد.

استفاده می کنیم StableDiffusionPipeline از صورت در آغوش گرفته diffusers کتابخانه برای بارگیری و کامپایل مدل. سپس تمام اجزای مدل را با استفاده از نورون گردآوری می کنیم torch_neuronx.trace() و مدل بهینه شده را به عنوان TorchScript ذخیره کنید. فرآیندهای کامپایل می توانند کاملاً حافظه فشرده باشند و به مقدار قابل توجهی RAM نیاز دارند. برای دور زدن این موضوع، قبل از ردیابی هر مدل، a ایجاد می کنیم deepcopy بخشی از خط لوله که در حال ردیابی است. به دنبال این، شی pipeline را با استفاده از حافظه حذف می کنیم del pipe. این تکنیک به ویژه هنگام کامپایل در نمونه هایی با RAM کم مفید است.

علاوه بر این، ما همچنین بهینه‌سازی‌هایی را برای مدل‌های انتشار پایدار انجام می‌دهیم. UNet فشرده ترین جنبه محاسباتی استنتاج را دارد. مؤلفه UNet روی تانسورهای ورودی که اندازه دسته‌ای دو دارند کار می‌کند و یک تانسور خروجی متناظر با اندازه دسته‌ای دو تولید می‌کند تا یک تصویر واحد تولید کند. عناصر درون این دسته ها کاملاً مستقل از یکدیگر هستند. ما می‌توانیم با اجرای یک دسته بر روی هر هسته نورون از این رفتار برای به دست آوردن تاخیر بهینه استفاده کنیم. UNet را برای یک دسته (با استفاده از تانسورهای ورودی با یک دسته) کامپایل می کنیم، سپس از آن استفاده می کنیم torch_neuronx.DataParallel API برای بارگذاری این مدل تک دسته ای روی هر هسته. خروجی این API یک ماژول دو دسته ای بدون درز است: می توانیم ورودی های دو دسته را به UNet ارسال کنیم و خروجی دو دسته ای برگردانده می شود، اما در داخل، دو مدل تک دسته ای روی دو هسته Neuron اجرا می شوند. . این استراتژی استفاده از منابع را بهینه می کند و تاخیر را کاهش می دهد.

کامپایل و استقرار یک مدل انتشار پایدار در یک نمونه Inf2 EC2

برای کامپایل و استقرار مدل Stable Diffusion در یک نمونه Inf2 EC2، به کنسول مدیریت AWS و یک نمونه inf2.8xlarge ایجاد کنید. توجه داشته باشید که یک نمونه inf2.8xlarge فقط برای کامپایل مدل مورد نیاز است زیرا کامپایل به حافظه میزبان بالاتری نیاز دارد. مدل Stable Diffusion را می توان در یک نمونه inf2.xlarge میزبانی کرد. می توانید آخرین AMI را با کتابخانه های Neuron با استفاده از موارد زیر پیدا کنید رابط خط فرمان AWS دستور (AWS CLI):

aws ec2 describe-images --region us-east-1 --owners amazon --filters 'Name=name,Values=Deep Learning AMI Neuron PyTorch 1.13.? (Amazon Linux 2) ????????' 'Name=state,Values=available' --query 'reverse(sort_by(Images, &CreationDate))[:1].ImageId' --output text

برای این مثال، ما یک نمونه EC2 را با استفاده از Deep Learning AMI Neuron PyTorch 1.13 (Ubuntu 20.04) ایجاد کردیم. سپس می توانید با اتصال به نمونه و اجرای مراحل زیر یک محیط آزمایشگاه JupyterLab ایجاد کنید:

run source /opt/aws_neuron_venv_pytorch/bin/activate
pip install jupyterlab
jupyter-lab

دفترچه یادداشتی با تمامی مراحل کامپایل و میزبانی مدل بر روی آن قرار دارد GitHub.

بیایید به مراحل کامپایل برای یکی از بلوک های رمزگذار متن نگاه کنیم. بلوک های دیگری که بخشی از خط لوله انتشار پایدار هستند را می توان به طور مشابه کامپایل کرد.

اولین قدم این است که مدل از پیش آموزش دیده را از Hugging Face بارگیری کنید. را StableDiffusionPipeline.from_pretrained متد مدل از پیش آموزش دیده را در شیء خط لوله ما بارگذاری می کند، pipe. سپس یک را ایجاد می کنیم deepcopy رمزگذار متن از خط لوله ما، به طور موثر آن را شبیه سازی می کند. را del pipe سپس از دستور برای حذف شی اصلی خط لوله استفاده می شود و حافظه مصرف شده توسط آن آزاد می شود. در اینجا، ما مدل را به وزن BF16 کمی می کنیم:

model_id = "stabilityai/stable-diffusion-2-1-base"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.bfloat16)
text_encoder = copy.deepcopy(pipe.text_encoder)
del pipe

این مرحله شامل بسته بندی رمزگذار متن ما با کد است NeuronTextEncoder لفاف خروجی یک ماژول رمزگذار متن کامپایل شده از خواهد بود dict. آن را به a تبدیل می کنیم list با استفاده از این لفاف تایپ کنید:

text_encoder = NeuronTextEncoder(text_encoder)

تانسور PyTorch را مقداردهی اولیه می کنیم emb با برخی ارزش ها این emb تانسور به عنوان ورودی نمونه برای torch_neuronx.trace تابع. این تابع رمزگذار متن ما را ردیابی می کند و آن را در قالبی بهینه شده برای Neuron کامپایل می کند. مسیر دایرکتوری برای مدل کامپایل شده با اتصال ساخته می شود COMPILER_WORKDIR_ROOT با زیر شاخه text_encoder:

emb = torch.tensor([...])
text_encoder_neuron = torch_neuronx.trace(
        text_encoder.neuron_text_encoder,
        emb,
        compiler_workdir=os.path.join(COMPILER_WORKDIR_ROOT, 'text_encoder'),
        )

رمزگذار متن کامپایل شده با استفاده از آن ذخیره می شود torch.jit.save. تحت نام فایل model.pt در ذخیره می شود text_encoder دایرکتوری فضای کاری کامپایلر ما:

text_encoder_filename = os.path.join(COMPILER_WORKDIR_ROOT, 'text_encoder/model.pt')
torch.jit.save(text_encoder_neuron, text_encoder_filename)

La دفتر یادداشت شامل مراحل مشابه برای کامپایل سایر اجزای مدل است: UNet، رمزگشا VAE و VAE post_quant_conv. بعد از اینکه همه مدل ها را کامپایل کردید، می توانید مدل را طبق مراحل زیر بارگذاری و اجرا کنید:

  1. مسیرها را برای مدل های کامپایل شده تعریف کنید.
  2. یک از پیش آموزش دیده را بارگذاری کنید StableDiffusionPipeline مدل، با پیکربندی آن برای استفاده از نوع داده bfloat16 مشخص شده است.
  3. مدل UNet را روی دو هسته نورون با استفاده از بارگذاری کنید torch_neuronx.DataParallel API. این اجازه می دهد تا استنتاج موازی داده ها انجام شود، که می تواند به طور قابل توجهی سرعت عملکرد مدل را افزایش دهد.
  4. قسمت های باقیمانده مدل را بارگذاری کنید (text_encoder, decoderو post_quant_conv) روی یک هسته عصبی واحد.

سپس می توانید خط لوله را با ارائه متن ورودی به عنوان درخواست اجرا کنید. در زیر برخی از تصاویر تولید شده توسط مدل برای درخواست ها آورده شده است:

  • پرتره رنود سچان، قلم و جوهر، نقاشی های خطی پیچیده، توسط کریگ مولینز، روان جیا، کنتارو میورا، گرگ روتکوفسکی، لاندرا

با AWS Inferentia2 | عملکرد انتشار پایدار و کاهش هزینه های استنتاج را به حداکثر برسانید خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.

  • پرتره معدنچی قدیمی زغال سنگ در قرن 19، نقاشی زیبا، با نقاشی چهره بسیار دقیق توسط گرگ روتکوفسکی

با AWS Inferentia2 | عملکرد انتشار پایدار و کاهش هزینه های استنتاج را به حداکثر برسانید خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.

  • قلعه ای در میان جنگل

با AWS Inferentia2 | عملکرد انتشار پایدار و کاهش هزینه های استنتاج را به حداکثر برسانید خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.

Host Stable Diffusion 2.1 در AWS Inferentia2 و SageMaker

میزبانی مدل‌های انتشار پایدار با SageMaker نیز نیاز به کامپایل با Neuron SDK دارد. با استفاده از ظروف استنتاج مدل بزرگ (LMI) می‌توانید کامپایل را زودتر از موعد یا در طول زمان اجرا انجام دهید. کامپایل کردن زودتر از موعد زمان بارگذاری مدل را سریعتر می دهد و گزینه ترجیحی است.

کانتینرهای SageMaker LMI دو راه برای استقرار مدل ارائه می دهند:

  • یک گزینه بدون کد که در آن ما فقط یک را ارائه می دهیم serving.properties فایل با تنظیمات مورد نیاز
  • اسکریپت استنتاج خود را بیاورید

ما به هر دو راه حل نگاه می کنیم و تنظیمات و اسکریپت استنتاج را مرور می کنیم (model.py). در این پست، استقرار را با استفاده از یک مدل از پیش کامپایل شده ذخیره شده در یک نشان می دهیم سرویس ذخیره سازی ساده آمازون سطل (Amazon S3). می توانید از این مدل از پیش کامپایل شده برای استقرار خود استفاده کنید.

مدل را با یک اسکریپت ارائه شده پیکربندی کنید

در این بخش، نحوه پیکربندی کانتینر LMI برای میزبانی از مدل‌های انتشار پایدار را نشان می‌دهیم. نوت بوک SD2.1 در دسترس است گیتهاب. اولین قدم ایجاد بسته پیکربندی مدل بر اساس ساختار دایرکتوری زیر است. هدف ما استفاده از حداقل تنظیمات مدل مورد نیاز برای میزبانی مدل است. ساختار دایرکتوری مورد نیاز به شرح زیر است:

<config-root-directory> / 
    ├── serving.properties
    │   
    └── model.py [OPTIONAL]

بعد، ما ایجاد می کنیم خدمت.خواص فایل با پارامترهای زیر:

%%writefile code_sd/serving.properties
engine=Python
option.entryPoint=djl_python.transformers-neuronx
option.use_stable_diffusion=True
option.model_id=s3url
option.tensor_parallel_degree=2
option.dtype=bf16

پارامترها موارد زیر را مشخص می کنند:

  • option.model_id – کانتینرهای LMI از s5cmd برای بارگذاری مدل از محل S3 استفاده می کنند و بنابراین باید محل وزن های کامپایل شده خود را مشخص کنیم.
  • option.entryPoint – برای استفاده از هندلرهای داخلی، کلاس ترانسفورماتور-نورونکس را مشخص می کنیم. اگر یک اسکریپت استنتاج سفارشی دارید، باید آن را به جای آن ارائه دهید.
  • option.dtype – این مشخص می کند که وزنه ها در یک اندازه خاص بارگیری شوند. برای این پست، ما از BF16 استفاده می‌کنیم که بیشتر مورد نیاز حافظه ما را در مقایسه با FP32 کاهش می‌دهد و به همین دلیل تاخیر ما را کاهش می‌دهد.
  • option.tensor_parallel_degree – این پارامتر تعداد شتاب دهنده هایی را که برای این مدل استفاده می کنیم را مشخص می کند. شتاب دهنده تراشه AWS Inferentia2 دارای دو هسته Neuron است و بنابراین تعیین مقدار 2 به این معنی است که از یک شتاب دهنده (دو هسته) استفاده می کنیم. این بدان معناست که اکنون می توانیم چندین کارگر ایجاد کنیم تا توان عملیاتی نقطه پایانی را افزایش دهیم.
  • گزینه.موتور – این روی Python تنظیم شده است تا نشان دهد ما از کامپایلرهای دیگری مانند DeepSpeed ​​یا Faster Transformer برای این میزبانی استفاده نخواهیم کرد.

اسکریپت خودت رو بیار

اگر می خواهید اسکریپت استنتاج سفارشی خود را بیاورید، باید آن را حذف کنید option.entryPoint از جانب serving.properties. ظرف LMI در آن صورت به دنبال a خواهد بود model.py فایل در همان مکانی که serving.properties و از آن برای اجرای استنتاج استفاده کنید.

اسکریپت استنتاج خود را ایجاد کنید (model.py)

ایجاد اسکریپت استنتاج خود با استفاده از ظرف LMI نسبتاً ساده است. ظرف به شما نیاز دارد model.py فایل برای پیاده سازی روش زیر:

def handle(inputs: Input) which returns an object of type Outputs

بیایید برخی از مناطق بحرانی را بررسی کنیم دفترچه ضمیمه، که عملکرد اسکریپت خود را بیاورید را نشان می دهد.

به جای cross_attention ماژول با نسخه بهینه شده:

# Replace original cross-attention module with custom cross-attention module for better performance
    CrossAttention.get_attention_scores = get_attention_scores
Load the compiled weights for the following
text_encoder_filename = os.path.join(COMPILER_WORKDIR_ROOT, 'text_encoder.pt')
decoder_filename = os.path.join(COMPILER_WORKDIR_ROOT, 'vae_decoder.pt')
unet_filename = os.path.join(COMPILER_WORKDIR_ROOT, 'unet.pt')
post_quant_conv_filename =. os.path.join(COMPILER_WORKDIR_ROOT, 'vae_post_quant_conv.pt')

این ها نام فایل وزن های کامپایل شده ای است که هنگام ایجاد کامپایل ها استفاده می کنیم. به راحتی می توانید نام فایل ها را تغییر دهید، اما مطمئن شوید که نام فایل های وزن شما با آنچه در اینجا مشخص می کنید مطابقت دارد.

سپس باید آنها را با استفاده از Neuron SDK بارگذاری کنیم و آنها را در وزن های مدل واقعی تنظیم کنیم. هنگام بارگذاری وزن‌های بهینه‌سازی شده UNet، توجه داشته باشید که تعداد هسته‌های نورونی را نیز مشخص می‌کنیم که باید آنها را بارگذاری کنیم. در اینجا، ما روی یک شتاب دهنده با دو هسته بارگذاری می کنیم:

# Load the compiled UNet onto two neuron cores.
    pipe.unet = NeuronUNet(UNetWrap(pipe.unet))
    logging.info(f"Loading model: unet:created")
    device_ids = [idx for idx in range(tensor_parallel_degree)]
   
    pipe.unet.unetwrap = torch_neuronx.DataParallel(torch.jit.load(unet_filename), device_ids, set_dynamic_batching=False)
   
 
    # Load other compiled models onto a single neuron core.
 
    # - load encoders
    pipe.text_encoder = NeuronTextEncoder(pipe.text_encoder)
    clip_compiled = torch.jit.load(text_encoder_filename)
    pipe.text_encoder.neuron_text_encoder = clip_compiled
    #- load decoders
    pipe.vae.decoder = torch.jit.load(decoder_filename)
    pipe.vae.post_quant_conv = torch.jit.load(post_quant_conv_filename)

اجرای استنتاج با یک اعلان، شی لوله را برای تولید یک تصویر فراخوانی می کند.

نقطه پایانی SageMaker را ایجاد کنید

ما از API های Boto3 برای ایجاد یک نقطه پایانی SageMaker استفاده می کنیم. مراحل زیر را کامل کنید:

  1. تاربال را فقط با سرو و اختیاری درست کنید model.py فایل و آن را در آمازون S3 آپلود کنید.
  2. مدل را با استفاده از محفظه تصویر و مدل تربال آپلود شده قبلی ایجاد کنید.
  3. پیکربندی نقطه پایانی را با استفاده از پارامترهای کلیدی زیر ایجاد کنید:
    1. از یک ml.inf2.xlarge نمونه.
    2. تنظیم ContainerStartupHealthCheckTimeoutInSeconds به 240 برای اطمینان از شروع بررسی سلامت پس از استقرار مدل.
    3. تنظیم VolumeInGB به یک مقدار بزرگتر، بنابراین می توان از آن برای بارگذاری وزن های مدل با اندازه 32 گیگابایت استفاده کرد.

یک مدل SageMaker ایجاد کنید

پس از ایجاد فایل model.tar.gz و آپلود آن در Amazon S3، باید یک مدل SageMaker ایجاد کنیم. برای ایجاد مدل SageMaker از ظرف LMI و آرتیفکت مدل مرحله قبل استفاده می کنیم. SageMaker به ما امکان سفارشی سازی و تزریق متغیرهای محیطی مختلف را می دهد. برای این گردش کار، می توانیم همه چیز را به عنوان پیش فرض بگذاریم. کد زیر را ببینید:

inference_image_uri = (
    f"763104351884.dkr.ecr.{region}.amazonaws.com/djl-inference:0 djl-serving-inf2"
)

شی مدل را ایجاد کنید، که اساساً یک محفظه قفل ایجاد می کند که روی نمونه بارگذاری می شود و برای استنتاج استفاده می شود:

model_name = name_from_base(f"inf2-sd")
create_model_response = boto3_sm_client.create_model(
    ModelName=model_name,
    ExecutionRoleArn=role,
    PrimaryContainer={"Image": inference_image_uri, "ModelDataUrl": s3_code_artifact},
)

یک نقطه پایانی SageMaker ایجاد کنید

در این دمو از یک نمونه ml.inf2.xlarge استفاده می کنیم. ما باید تنظیم کنیم VolumeSizeInGB پارامترهایی برای فراهم کردن فضای دیسک لازم برای بارگذاری مدل و وزنه ها. این پارامتر برای نمونه هایی که از آن پشتیبانی می کنند قابل استفاده است فروشگاه بلوک الاستیک آمازون پیوست حجمی (Amazon EBS). می‌توانیم مهلت زمانی دانلود مدل و بررسی سلامت راه‌اندازی کانتینر را به مقدار بالاتری رها کنیم، که به ظرف زمان کافی می‌دهد تا وزنه‌ها را از Amazon S3 بکشد و در شتاب‌دهنده‌های AWS Inferentia2 بارگیری کند. برای جزئیات بیشتر مراجعه کنید CreateEndpointConfig.

endpoint_config_response = boto3_sm_client.create_endpoint_config( EndpointConfigName=endpoint_config_name,
    ProductionVariants=[
        {
            "VariantName": "variant1",
            "ModelName": model_name,
            "InstanceType": "ml.inf2.xlarge", # - 
            "InitialInstanceCount": 1,
            "ContainerStartupHealthCheckTimeoutInSeconds": 360, 
            "VolumeSizeInGB": 400
        },
    ],
)

در نهایت، یک نقطه پایانی SageMaker ایجاد می کنیم:

create_endpoint_response = boto3_sm_client.create_endpoint(
    EndpointName=f"{endpoint_name}", EndpointConfigName=endpoint_config_name
)

نقطه پایانی مدل را فراخوانی کنید

این یک مدل تولیدی است، بنابراین ما از اعلانی که مدل برای تولید تصویر استفاده می کند عبور می کنیم. محموله از نوع JSON است:

response_model = boto3_sm_run_client.invoke_endpoint( EndpointName=endpoint_name,
    Body=json.dumps(
        {
            "prompt": "Mountain Landscape", 
            "parameters": {} # 
        }
    ), 
    ContentType="application/json",
)

محک زدن مدل انتشار پایدار در Inf2

ما چند آزمایش را برای محک زدن مدل انتشار پایدار با نوع داده BF 16 در Inf2 انجام دادیم، و می‌توانیم اعداد تاخیری را استخراج کنیم که با برخی از شتاب‌دهنده‌های دیگر برای انتشار پایدار رقابت می‌کنند یا از آنها فراتر می‌روند. این، همراه با هزینه کمتر تراشه‌های AWS Inferentia2، این پیشنهاد را به یک پیشنهاد بسیار ارزشمند تبدیل می‌کند.

اعداد زیر مربوط به مدل Stable Diffusion است که در یک نمونه inf2.xl مستقر شده است. برای اطلاعات بیشتر در مورد هزینه ها مراجعه کنید موارد آمازون EC2 Inf2.

مدل وضوح نوع داده تکرار تأخیر P95 (ms) هزینه درخواستی Inf2.xl در ساعت Inf2.xl (هزینه هر تصویر)
انتشار پایدار 1.5 ۱۳۰۰ × ۶۰۰ bf16 50 2,427.4 $0.76 $0.0005125
انتشار پایدار 1.5 ۱۳۰۰ × ۶۰۰ bf16 50 8,235.9 $0.76 $0.0017387
انتشار پایدار 1.5 ۱۳۰۰ × ۶۰۰ bf16 30 1,456.5 $0.76 $0.0003075
انتشار پایدار 1.5 ۱۳۰۰ × ۶۰۰ bf16 30 4,941.6 $0.76 $0.0010432
انتشار پایدار 2.1 ۱۳۰۰ × ۶۰۰ bf16 50 1,976.9 $0.76 $0.0004174
انتشار پایدار 2.1 ۱۳۰۰ × ۶۰۰ bf16 50 6,836.3 $0.76 $0.0014432
انتشار پایدار 2.1 ۱۳۰۰ × ۶۰۰ bf16 30 1,186.2 $0.76 $0.0002504
انتشار پایدار 2.1 ۱۳۰۰ × ۶۰۰ bf16 30 4,101.8 $0.76 $0.0008659

نتیجه

در این پست، به کامپایل، بهینه‌سازی و استقرار مدل Stable Diffusion 2.1 با استفاده از نمونه‌های Inf2 پرداختیم. ما همچنین استقرار مدل‌های انتشار پایدار را با استفاده از SageMaker نشان دادیم. نمونه های Inf2 همچنین عملکرد قیمتی عالی را برای Stable Diffusion 1.5 ارائه می دهند. برای کسب اطلاعات بیشتر در مورد اینکه چرا نمونه‌های Inf2 برای هوش مصنوعی مولد و مدل‌های زبان بزرگ عالی هستند، مراجعه کنید نمونه‌های آمازون EC2 Inf2 برای استنباط هوش مصنوعی تولیدی کم‌هزینه و با کارایی بالا به‌طور کلی در دسترس هستند. برای جزئیات عملکرد، مراجعه کنید عملکرد Inf2. نمونه های اضافی را در مورد بررسی کنید GitHub repo.

تشکر ویژه از متیو مک‌کلین، بنی هگدوس، کامران خان، شروتی کوپارکار و چینگ لان برای بررسی و ارائه ورودی‌های ارزشمند.


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

با AWS Inferentia2 | عملکرد انتشار پایدار و کاهش هزینه های استنتاج را به حداکثر برسانید خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.ویوک گانگاسانی یک معمار ارشد راه حل های یادگیری ماشین در خدمات وب آمازون است. او با استارت‌آپ‌های یادگیری ماشینی کار می‌کند تا برنامه‌های AI/ML را روی AWS بسازد و استقرار دهد. او در حال حاضر بر ارائه راه‌حل‌هایی برای MLOps، استنتاج ML و ML با کد پایین متمرکز است. او روی پروژه هایی در حوزه های مختلف از جمله پردازش زبان طبیعی و بینایی کامپیوتری کار کرده است.

با AWS Inferentia2 | عملکرد انتشار پایدار و کاهش هزینه های استنتاج را به حداکثر برسانید خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.کی سی تونگ یک معمار ارشد راه حل در آزمایشگاه AWS Annapurna است. او در آموزش مدل های یادگیری عمیق بزرگ و استقرار در مقیاس در فضای ابری تخصص دارد. او دکتری دارد. در بیوفیزیک مولکولی از مرکز پزشکی جنوب غربی دانشگاه تگزاس در دالاس. او در AWS Summits و AWS Reinvent سخنرانی کرده است. امروز او به مشتریان کمک می کند تا مدل های بزرگ PyTorch و TensorFlow را در ابر AWS آموزش و استقرار دهند. وی نویسنده دو کتاب است: TensorFlow Enterprise را یاد بگیرید و مرجع جیبی تنسورفلو 2.

با AWS Inferentia2 | عملکرد انتشار پایدار و کاهش هزینه های استنتاج را به حداکثر برسانید خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.روپیند گروال یک معمار راه حل های تخصصی Sr Ai/ML با AWS است. او در حال حاضر روی ارائه مدل ها و MLO ها در SageMaker تمرکز دارد. قبل از این نقش، او به عنوان مهندس یادگیری ماشین، مدل‌های ساخت و میزبانی کار کرده است. خارج از محل کار او از بازی تنیس و دوچرخه سواری در مسیرهای کوهستانی لذت می برد.

تمبر زمان:

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