با استفاده از Amazon SageMaker | یک آواتار شخصی سازی شده با هوش مصنوعی مولد بسازید خدمات وب آمازون

با استفاده از Amazon SageMaker | یک آواتار شخصی سازی شده با هوش مصنوعی مولد بسازید خدمات وب آمازون

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

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

در این پست، نشان می‌دهیم که چگونه می‌توانید از مدل‌های هوش مصنوعی مانند Stable Diffusion برای ایجاد یک راه‌حل آواتار شخصی‌سازی شده استفاده کنید. آمازون SageMaker و همزمان با استفاده از نقاط پایانی چند مدلی (MME) در هزینه استنتاج صرفه جویی کنید. راه حل نشان می دهد که چگونه، با آپلود 10 تا 12 تصویر از خود، می توانید یک مدل شخصی سازی شده را تنظیم کنید که سپس می تواند آواتارها را بر اساس هر پیام متنی، همانطور که در تصاویر زیر نشان داده شده است، ایجاد کند. اگرچه این مثال آواتارهای شخصی سازی شده را تولید می کند، اما می توانید با تنظیم دقیق اشیاء یا سبک های خاص، این تکنیک را برای هر نسل هنری خلاقانه اعمال کنید.

با استفاده از Amazon SageMaker | یک آواتار شخصی سازی شده با هوش مصنوعی مولد بسازید خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai. با استفاده از Amazon SageMaker | یک آواتار شخصی سازی شده با هوش مصنوعی مولد بسازید خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.

بررسی اجمالی راه حل

نمودار معماری زیر راه حل انتها به انتها برای مولد آواتار ما را تشریح می کند.

با استفاده از Amazon SageMaker | یک آواتار شخصی سازی شده با هوش مصنوعی مولد بسازید خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.

محدوده این پست و مثال کد GitHub ما فقط بر روی آموزش مدل و ارکستراسیون استنتاج تمرکز می کنیم (بخش سبز در نمودار قبل). می‌توانید به معماری راه‌حل کامل اشاره کنید و بر روی نمونه‌ای که ما ارائه می‌دهیم، بسازید.

آموزش مدل و استنتاج را می توان به چهار مرحله تقسیم کرد:

  1. آپلود تصاویر به سرویس ذخیره سازی ساده آمازون (Amazon S3). در این مرحله از شما می خواهیم حداقل 10 تصویر با وضوح بالا از خود ارائه دهید. هرچه تعداد تصاویر بیشتر باشد، نتیجه بهتری حاصل می شود، اما زمان بیشتری برای آموزش لازم است.
  2. یک مدل پایه Stable Diffusion 2.1 را با استفاده از استنتاج ناهمزمان SageMaker تنظیم کنید. در ادامه این پست دلیل استفاده از نقطه پایانی استنتاج برای آموزش را توضیح می دهیم. فرآیند تنظیم دقیق با آماده سازی تصاویر، از جمله برش چهره، تغییر پس زمینه و تغییر اندازه برای مدل شروع می شود. سپس ما از تطبیق با رتبه پایین (LoRA)، یک تکنیک تنظیم دقیق پارامترهای کارآمد برای مدل‌های زبان بزرگ (LLM) برای تنظیم دقیق مدل استفاده می‌کنیم. در نهایت، در پس پردازش، وزن‌های LoRA تنظیم‌شده را با اسکریپت استنتاج و فایل‌های پیکربندی (tar.gz) بسته‌بندی می‌کنیم و آن‌ها را در یک مکان سطل S3 برای MMEهای SageMaker آپلود می‌کنیم.
  3. با استفاده از SageMaker MME با GPU، مدل‌های تنظیم‌شده را میزبانی کنید. SageMaker به صورت پویا مدل را از محل آمازون S3 بر اساس ترافیک استنتاج به هر مدل بارگیری و ذخیره می کند.
  4. برای استنباط از مدل دقیق تنظیم شده استفاده کنید. بعد از سرویس اطلاع رسانی ساده آمازون اعلان (Amazon SNS) که نشان می دهد تنظیم دقیق ارسال شده است، می توانید بلافاصله با ارائه یک مدل از آن استفاده کنید. target_model پارامتر هنگام فراخوانی MME برای ایجاد آواتار شما.

هر مرحله را با جزئیات بیشتری در بخش‌های بعدی توضیح می‌دهیم و برخی از نمونه‌های کد کد را مرور می‌کنیم.

تصاویر را آماده کنید

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

تصاویر زیر نمونه ای از تصاویر سلفی در زوایای مختلف با حالات چهره متفاوت هستند.

با استفاده از Amazon SageMaker | یک آواتار شخصی سازی شده با هوش مصنوعی مولد بسازید خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.

یک مدل انتشار پایدار را تنظیم دقیق کنید

پس از آپلود تصاویر در آمازون S3، می‌توانیم آن را فراخوانی کنیم استنتاج ناهمزمان SageMaker نقطه پایانی برای شروع فرآیند آموزشی ما. نقاط پایانی ناهمزمان برای موارد استفاده استنتاج با بارهای بزرگ (تا 1 گیگابایت) و زمان پردازش طولانی (تا 1 ساعت) در نظر گرفته شده است. همچنین یک مکانیسم صف داخلی برای قرار دادن درخواست‌ها در صف و یک مکانیسم اعلان تکمیل کار از طریق Amazon SNS، علاوه بر سایر ویژگی‌های بومی میزبانی SageMaker مانند مقیاس‌بندی خودکار، ارائه می‌کند.

اگرچه تنظیم دقیق یک مورد استفاده از استنتاج نیست، ما به دلیل مکانیسم‌های صف و اعلان داخلی آن، به جای مشاغل آموزشی SageMaker از آن استفاده کردیم. مقیاس خودکار مدیریت شده، از جمله توانایی کوچک کردن تا 0 مواردی که از سرویس استفاده نمی شود. این به ما اجازه می دهد تا به راحتی سرویس تنظیم دقیق را برای تعداد زیادی از کاربران همزمان مقیاس کنیم و نیاز به پیاده سازی و مدیریت اجزای اضافی را از بین می برد. با این حال، این مشکل با ظرفیت 1 گیگابایتی و حداکثر زمان پردازش 1 ساعت است. در آزمایش ما متوجه شدیم که 20 دقیقه زمان کافی برای به دست آوردن نتایج نسبتا خوب با تقریباً 10 تصویر ورودی در یک نمونه ml.g5.2xlarge است. با این حال، آموزش SageMaker رویکرد توصیه شده برای کارهای تنظیم دقیق مقیاس بزرگتر خواهد بود.

برای میزبانی نقطه پایانی ناهمزمان، باید چندین مرحله را انجام دهیم. اولین مورد این است که سرور مدل خود را تعریف کنیم. برای این پست از ظرف استنتاج مدل بزرگ (LMI). LMI توسط DJL Serving، که یک راه حل ارائه مدل زبان برنامه نویسی با عملکرد بالا است، ارائه می شود. ما این گزینه را انتخاب کردیم زیرا محفظه استنتاج مدیریت شده SageMaker در حال حاضر بسیاری از کتابخانه های آموزشی مورد نیاز ما را دارد، مانند Hugging Face پخش کننده و شتاب دادن. این مقدار کار مورد نیاز برای سفارشی کردن ظرف برای کار تنظیم دقیق ما را تا حد زیادی کاهش می دهد.

قطعه کد زیر نسخه کانتینر LMI را نشان می دهد که در مثال خود استفاده کرده ایم:

inference_image_uri = ( f"763104351884.dkr.ecr.{region}.amazonaws.com/djl-inference:0.21.0-deepspeed0.8.3-cu117"
)
print(f"Image going to be used is ---- > {inference_image_uri}")

علاوه بر آن، ما باید یک serving.properties فایلی که ویژگی‌های سرویس، از جمله موتور استنتاج مورد استفاده، مکان آرتیفکت مدل و دسته‌بندی پویا را پیکربندی می‌کند. در نهایت، ما باید یک model.py فایلی که مدل را در موتور استنتاج بارگذاری می کند و ورودی و خروجی داده را از مدل آماده می کند. در مثال ما از model.py فایل برای چرخش کار تنظیم دقیق، که در بخش بعدی با جزئیات بیشتر توضیح خواهیم داد. هر دو serving.properties و model.py فایل ها در training_service پوشه.

گام بعدی پس از تعریف سرور مدل ما، ایجاد یک پیکربندی نقطه پایانی است که نحوه ارائه استنتاج ناهمزمان ما را مشخص می کند. برای مثال، ما فقط حداکثر حد فراخوانی همزمان و محل خروجی S3 را تعریف می کنیم. با ml.g5.2xlarge به عنوان مثال، ما دریافتیم که می‌توانیم تا دو مدل را به طور همزمان تنظیم کنیم، بدون اینکه با یک استثنای خارج از حافظه (OOM) مواجه شویم، و بنابراین تنظیم کردیم max_concurrent_invocations_per_instance به 2. اگر از مجموعه پارامترهای تنظیم متفاوت یا نوع نمونه کوچکتری استفاده می کنیم، ممکن است این عدد نیاز به تنظیم داشته باشد. توصیه می کنیم ابتدا این را روی 1 تنظیم کنید و میزان استفاده از حافظه GPU را در آن نظارت کنید CloudWatch آمازون.

# create async endpoint configuration
async_config = AsyncInferenceConfig( output_path=f"s3://{bucket}/{s3_prefix}/async_inference/output" , # Where our results will be stored max_concurrent_invocations_per_instance=2, notification_config={   "SuccessTopic": "...",   "ErrorTopic": "...", }, #  Notification configuration
)

در نهایت یک مدل SageMaker ایجاد می کنیم که اطلاعات کانتینر، فایل های مدل و هویت AWS و مدیریت دسترسی (IAM) نقش یک شیء واحد. مدل با استفاده از پیکربندی نقطه پایانی که قبلا تعریف کردیم مستقر می شود:

model = Model( image_uri=image_uri, model_data=model_data, role=role, env=env
) model.deploy( initial_instance_count=1, instance_type=instance_type, endpoint_name=endpoint_name, async_inference_config=async_inference_config
) predictor = sagemaker.Predictor( endpoint_name=endpoint_name, sagemaker_session=sagemaker_session
)

وقتی نقطه پایانی آماده شد، از کد نمونه زیر برای فراخوانی نقطه پایانی ناهمزمان و شروع فرآیند تنظیم دقیق استفاده می‌کنیم:

sm_runtime = boto3.client("sagemaker-runtime") input_s3_loc = sess.upload_data("data/jw.tar.gz", bucket, s3_prefix) response = sm_runtime.invoke_endpoint_async( EndpointName=sd_tuning.endpoint_name, InputLocation=input_s3_loc)

برای جزئیات بیشتر در مورد LMI در SageMaker، مراجعه کنید استقرار مدل های بزرگ در Amazon SageMaker با استفاده از استنتاج موازی مدل DJLServing و DeepSpeed.

پس از فراخوانی، نقطه پایانی ناهمزمان شروع به صف‌بندی کار تنظیم دقیق ما می‌کند. هر کار مراحل زیر را طی می‌کند: آماده‌سازی تصاویر، تنظیم دقیق Dreambooth و LoRA، و آماده‌سازی آرتیفکت‌های مدل. بیایید عمیق تر به فرآیند تنظیم دقیق شیرجه بزنیم.

تصاویر را آماده کنید

همانطور که قبلاً اشاره کردیم، کیفیت تصاویر ورودی مستقیماً بر کیفیت مدل تنظیم شده تأثیر می گذارد. برای مورد استفاده از آواتار، ما می خواهیم مدل روی ویژگی های صورت تمرکز کند. به جای اینکه از کاربران بخواهیم تصاویری با اندازه و محتوای دقیق ارائه دهند، ما یک مرحله پیش پردازش را با استفاده از تکنیک های بینایی کامپیوتری برای کاهش این بار اجرا می کنیم. در مرحله پیش پردازش، ابتدا از یک مدل تشخیص چهره برای جداسازی بزرگترین چهره در هر تصویر استفاده می کنیم. سپس تصویر را به اندازه مورد نیاز 512×512 پیکسل برای مدل خود برش و پد می زنیم. در نهایت، صورت را از پس زمینه جدا می کنیم و تغییرات پس زمینه تصادفی را اضافه می کنیم. این به برجسته کردن ویژگی‌های صورت کمک می‌کند و به مدل ما اجازه می‌دهد تا از خود چهره به جای پس‌زمینه یاد بگیرد. تصاویر زیر سه مرحله این فرآیند را نشان می دهد.

با استفاده از Amazon SageMaker | یک آواتار شخصی سازی شده با هوش مصنوعی مولد بسازید خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai. با استفاده از Amazon SageMaker | یک آواتار شخصی سازی شده با هوش مصنوعی مولد بسازید خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai. با استفاده از Amazon SageMaker | یک آواتار شخصی سازی شده با هوش مصنوعی مولد بسازید خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.
مرحله 1: تشخیص چهره با استفاده از بینایی کامپیوتری مرحله 2: تصویر را برش داده و به اندازه ۵۱۲ در ۵۱۲ پیکسل قرار دهید مرحله 3 (اختیاری): تقسیم بندی و تنوع پس زمینه اضافه کنید

تنظیم دقیق Dreambooth و LoRA

برای تنظیم دقیق، تکنیک‌های Dreambooth و LoRA را با هم ترکیب کردیم. Dreambooth به شما این امکان را می دهد که مدل Stable Diffusion خود را شخصی کنید، یک موضوع را با استفاده از یک شناسه منحصر به فرد در دامنه خروجی مدل جاسازی کنید و فرهنگ لغت بینایی زبان مدل را گسترش دهید. از روشی به نام استفاده می کند نگهداری قبلی برای حفظ دانش معنایی مدل از کلاس موضوع، در این مورد یک شخص، و استفاده از اشیاء دیگر در کلاس برای بهبود خروجی تصویر نهایی. بدین ترتیب Dreambooth می تواند تنها با چند عکس ورودی از سوژه به نتایج باکیفیتی دست یابد.

قطعه کد زیر ورودی های ما را نشان می دهد trainer.py کلاس برای راه حل آواتار ما. توجه کنید که ما انتخاب کردیم <<TOK>> به عنوان شناسه منحصر به فرد این کار عمداً برای جلوگیری از انتخاب نامی که ممکن است قبلاً در فرهنگ لغت مدل وجود داشته باشد انجام می شود. اگر نام از قبل وجود داشته باشد، مدل باید موضوع را حذف کند و سپس دوباره یاد بگیرد، که ممکن است منجر به نتایج تنظیم دقیق ضعیف شود. کلاس موضوعی تنظیم شده است “a photo of person”، که با ایجاد اولین عکس از افراد برای تغذیه به عنوان ورودی های اضافی در طول فرآیند تنظیم دقیق، امکان حفظ قبلی را فراهم می کند. این به کاهش بیش از حد برازش کمک می کند زیرا مدل سعی می کند دانش قبلی فرد را با استفاده از روش حفظ قبلی حفظ کند.

status = trn.run(base_model="stabilityai/stable-diffusion-2-1-base", resolution=512, n_steps=1000, concept_prompt="photo of <<TOK>>", # << unique identifier of the subject learning_rate=1e-4, gradient_accumulation=1, fp16=True, use_8bit_adam=True, gradient_checkpointing=True, train_text_encoder=True, with_prior_preservation=True, prior_loss_weight=1.0, class_prompt="a photo of person", # << subject class num_class_images=50, class_data_dir=class_data_dir, lora_r=128, lora_alpha=1, lora_bias="none", lora_dropout=0.05, lora_text_encoder_r=64, lora_text_encoder_alpha=1, lora_text_encoder_bias="none", lora_text_encoder_dropout=0.05
)

تعدادی از گزینه های ذخیره حافظه در پیکربندی فعال شده اند، از جمله fp16, use_8bit_adam، و تجمع گرادیان. این کار باعث کاهش حافظه به کمتر از 12 گیگابایت می شود که امکان تنظیم دقیق حداکثر دو مدل را به طور همزمان در یک ml.g5.2xlarge نمونه.

LoRA یک تکنیک تنظیم دقیق کارآمد برای LLM ها است که بیشتر وزنه ها را منجمد می کند و یک شبکه آداپتور کوچک را به لایه های خاصی از LLM از پیش آموزش دیده متصل می کند و امکان آموزش سریعتر و ذخیره سازی بهینه را فراهم می کند. برای انتشار پایدار، آداپتور به رمزگذار متن و اجزای U-Net خط لوله استنتاج متصل است. رمزگذار متن، اعلان ورودی را به فضای پنهانی تبدیل می‌کند که توسط مدل U-Net قابل درک است، و مدل U-Net از معنای پنهان برای تولید تصویر در فرآیند انتشار بعدی استفاده می‌کند. خروجی تنظیم دقیق فقط text_encoder و وزن آداپتور U-Net. در زمان استنتاج، این وزن ها را می توان مجدداً به مدل پایه انتشار پایدار وصل کرد تا نتایج تنظیم دقیق را بازتولید کند.

شکل های زیر نمودار جزئیات تنظیم دقیق LoRA است که توسط نویسنده اصلی ارائه شده است: چنگ هان چیانگ، یونگ سونگ چوانگ، هونگ یی لی، «AACL_2022_tutorial_PLMs»، 2022

با استفاده از Amazon SageMaker | یک آواتار شخصی سازی شده با هوش مصنوعی مولد بسازید خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai. با استفاده از Amazon SageMaker | یک آواتار شخصی سازی شده با هوش مصنوعی مولد بسازید خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.

با ترکیب هر دو روش، ما توانستیم یک مدل شخصی سازی شده ایجاد کنیم و در عین حال پارامترهای مرتبه‌ای کمتری را تنظیم کنیم. این منجر به زمان آموزش بسیار سریعتر و کاهش استفاده از GPU شد. علاوه بر این، فضای ذخیره سازی با وزن آداپتور تنها 70 مگابایت در مقایسه با 6 گیگابایت برای یک مدل پخش پایدار کامل بهینه شده است که نشان دهنده کاهش 99 درصدی اندازه است.

مصنوعات مدل را آماده کنید

پس از تکمیل تنظیم دقیق، مرحله پس پردازش وزن‌های LoRA را با بقیه فایل‌های ارائه‌شده مدل برای NVIDIA Triton TAR می‌کند. ما از یک Backend پایتون استفاده می کنیم، به این معنی که فایل پیکربندی تریتون و اسکریپت پایتون مورد استفاده برای استنتاج مورد نیاز است. توجه داشته باشید که اسکریپت پایتون باید نامگذاری شود model.py. فایل TAR مدل نهایی باید ساختار فایل زیر را داشته باشد:

|--sd_lora |--config.pbtxt |--1 |--model.py |--output #LoRA weights |--text_encoder |--unet |--train.sh

با استفاده از SageMaker MME با GPU، مدل‌های تنظیم‌شده را میزبانی کنید

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

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

با استفاده از Amazon SageMaker | یک آواتار شخصی سازی شده با هوش مصنوعی مولد بسازید خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.

این به طور قابل توجهی فایل مدل TAR را از تقریباً 6 گیگابایت به 70 مگابایت کاهش می دهد و بنابراین بارگذاری و بازکردن آن بسیار سریعتر است. برای انجام پیش بارگذاری در مثال ما، یک مدل باطن پایتون ابزاری ایجاد کردیم models/model_setup. این اسکریپت به سادگی مدل پایه Stable Diffusion و محیط Conda را از Amazon S3 در یک مکان مشترک کپی می کند تا در تمام مدل های تنظیم شده به اشتراک گذاشته شود. در زیر قطعه کدی است که وظیفه را انجام می دهد:

def initialize(self, args): #conda env setup self.conda_pack_path = Path(args['model_repository']) / "sd_env.tar.gz" self.conda_target_path = Path("/tmp/conda") self.conda_env_path = self.conda_target_path / "sd_env.tar.gz" if not self.conda_env_path.exists(): self.conda_env_path.parent.mkdir(parents=True, exist_ok=True) shutil.copy(self.conda_pack_path, self.conda_env_path) #base diffusion model setup self.base_model_path = Path(args['model_repository']) / "stable_diff.tar.gz" try: with tarfile.open(self.base_model_path) as tar: tar.extractall('/tmp') self.response_message = "Model env setup successful." except Exception as e: # print the exception message print(f"Caught an exception: {e}") self.response_message = f"Caught an exception: {e}"

سپس هر مدل تنظیم شده به مکان مشترک روی ظرف اشاره می کند. به محیط Conda اشاره شده است config.pbtxt.

name: "pipeline_0"
backend: "python"
max_batch_size: 1 ... parameters: { key: "EXECUTION_ENV_PATH", value: {string_value: "/tmp/conda/sd_env.tar.gz"}
}

مدل پایه انتشار پایدار از بارگذاری می شود initialize() عملکرد هر کدام model.py فایل. سپس وزن‌های LoRA شخصی‌شده را به unet و اعمال می‌کنیم text_encoder مدلی برای بازتولید هر مدل با تنظیم دقیق:

... class TritonPythonModel: def initialize(self, args): self.output_dtype = pb_utils.triton_string_to_numpy( pb_utils.get_output_config_by_name(json.loads(args["model_config"]), "generated_image")["data_type"]) self.model_dir = args['model_repository'] device='cuda' self.pipe = StableDiffusionPipeline.from_pretrained('/tmp/stable_diff', torch_dtype=torch.float16, revision="fp16").to(device) # Load the LoRA weights self.pipe.unet = PeftModel.from_pretrained(self.pipe.unet, unet_sub_dir) if os.path.exists(text_encoder_sub_dir): self.pipe.text_encoder = PeftModel.from_pretrained(self.pipe.text_encoder, text_encoder_sub_dir)

برای استنباط از مدل دقیق تنظیم شده استفاده کنید

اکنون می‌توانیم مدل دقیق خود را با فراخوانی نقطه پایانی MME امتحان کنیم. پارامترهای ورودی که در مثال خود در معرض دید قرار دادیم شامل prompt, negative_promptو gen_args، همانطور که در قطعه کد زیر نشان داده شده است. نوع داده و شکل هر مورد ورودی را در فرهنگ لغت تنظیم می کنیم و آنها را به یک رشته JSON تبدیل می کنیم. در نهایت، payload رشته و TargetModel به درخواست ایجاد تصویر آواتار شما منتقل می شوند.

import random prompt = """<<TOK>> epic portrait, zoomed out, blurred background cityscape, bokeh, perfect symmetry, by artgem, artstation ,concept art,cinematic lighting, highly detailed, octane, concept art, sharp focus, rockstar games, post processing, picture of the day, ambient lighting, epic composition""" negative_prompt = """
beard, goatee, ugly, tiling, poorly drawn hands, poorly drawn feet, poorly drawn face, out of frame, extra limbs, disfigured, deformed, body out of frame, blurry, bad anatomy, blurred, watermark, grainy, signature, cut off, draft, amateur, multiple, gross, weird, uneven, furnishing, decorating, decoration, furniture, text, poor, low, basic, worst, juvenile, unprofessional, failure, crayon, oil, label, thousand hands """ seed = random.randint(1, 1000000000) gen_args = json.dumps(dict(num_inference_steps=50, guidance_scale=7, seed=seed)) inputs = dict(prompt = prompt, negative_prompt = negative_prompt, gen_args = gen_args) payload = { "inputs": [{"name": name, "shape": [1,1], "datatype": "BYTES", "data": [data]} for name, data in inputs.items()]
} response = sm_runtime.invoke_endpoint( EndpointName=endpoint_name, ContentType="application/octet-stream", Body=json.dumps(payload), TargetModel="sd_lora.tar.gz",
)
output = json.loads(response["Body"].read().decode("utf8"))["outputs"]
original_image = decode_image(output[0]["data"][0])
original_image

پاک کردن

دستورالعمل‌های بخش پاک‌سازی نوت‌بوک را دنبال کنید تا منابع ارائه‌شده به عنوان بخشی از این پست را حذف کنید تا از هزینه‌های غیرضروری جلوگیری کنید. رجوع شود به قیمت گذاری آمازون SageMaker برای جزئیات مربوط به هزینه نمونه های استنتاج.

نتیجه

در این پست، نحوه ایجاد یک راه حل آواتار شخصی شده با استفاده از Stable Diffusion در SageMaker را نشان دادیم. با تنظیم دقیق یک مدل از پیش آموزش‌دیده تنها با چند تصویر، می‌توانیم آواتارهایی تولید کنیم که منعکس کننده فردیت و شخصیت هر کاربر است. این تنها یکی از نمونه های متعددی است که نشان می دهد چگونه می توانیم از هوش مصنوعی مولد برای ایجاد تجربیات سفارشی و منحصر به فرد برای کاربران استفاده کنیم. امکانات بی‌پایان است و ما شما را تشویق می‌کنیم که با این فناوری آزمایش کنید و پتانسیل آن را برای تقویت فرآیند خلاقانه کشف کنید. امیدواریم این پست آموزنده و الهام بخش بوده باشد. ما شما را تشویق می کنیم که این مثال را امتحان کنید و خلاقیت های خود را با استفاده از هشتگ های #sagemaker #mme #genai در پلتفرم های اجتماعی با ما به اشتراک بگذارید. ما دوست داریم ببینیم شما چه چیزی درست می کنید.

علاوه بر Stable Diffusion، بسیاری از مدل‌های مولد هوش مصنوعی دیگر نیز در دسترس هستند Amazon SageMaker JumpStart. رجوع شود به شروع کار با Amazon SageMaker JumpStart تا توانایی های خود را کشف کنند.


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

با استفاده از Amazon SageMaker | یک آواتار شخصی سازی شده با هوش مصنوعی مولد بسازید خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.جیمز وو یک معمار ارشد راه حل متخصص AI/ML در AWS است. کمک به مشتریان در طراحی و ساخت راه حل های AI/ML. کار جیمز طیف گسترده‌ای از موارد استفاده از ML را پوشش می‌دهد، با علاقه اولیه به بینایی رایانه، یادگیری عمیق، و مقیاس‌بندی ML در سراسر سازمان. قبل از پیوستن به AWS، جیمز بیش از 10 سال معمار، توسعه‌دهنده و رهبر فناوری بود، از جمله 6 سال در مهندسی و 4 سال در صنایع بازاریابی و تبلیغات.

با استفاده از Amazon SageMaker | یک آواتار شخصی سازی شده با هوش مصنوعی مولد بسازید خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.سیمون زامارین یک معمار راه حل های AI/ML است که تمرکز اصلی آن کمک به مشتریان برای استخراج ارزش از دارایی های داده خود است. سایمون در اوقات فراغت خود از گذراندن وقت با خانواده، خواندن علمی تخیلی و کار بر روی پروژه های مختلف خانه DIY لذت می برد.

با استفاده از Amazon SageMaker | یک آواتار شخصی سازی شده با هوش مصنوعی مولد بسازید خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.ویکرام الانگو یک معمار راه حل های تخصصی AI/ML در خدمات وب آمازون، مستقر در ویرجینیا ایالات متحده آمریکا است. Vikram به مشتریان صنعت مالی و بیمه با طراحی و رهبری فکری کمک می کند تا برنامه های یادگیری ماشین را در مقیاس بسازند و به کار گیرند. او در حال حاضر روی پردازش زبان طبیعی، هوش مصنوعی مسئول، بهینه‌سازی استنتاج و مقیاس‌بندی ML در سراسر سازمان متمرکز است. او در اوقات فراغت خود از سفر، پیاده روی، آشپزی و کمپینگ با خانواده لذت می برد.

با استفاده از Amazon SageMaker | یک آواتار شخصی سازی شده با هوش مصنوعی مولد بسازید خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.لانا ژانگ یک معمار ارشد راه حل در تیم خدمات هوش مصنوعی AWS WWSO است که در AI و ML برای تعدیل محتوا، بینایی کامپیوتر و پردازش زبان طبیعی تخصص دارد. او با تخصص خود به ترویج راه حل های AWS AI/ML و کمک به مشتریان در تغییر راه حل های تجاری خود در صنایع مختلف، از جمله رسانه های اجتماعی، بازی، تجارت الکترونیک، و تبلیغات و بازاریابی اختصاص دارد.

با استفاده از Amazon SageMaker | یک آواتار شخصی سازی شده با هوش مصنوعی مولد بسازید خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.ساوراب تریکاند مدیر محصول ارشد Amazon SageMaker Inference است. او مشتاق کار با مشتریان است و هدفش دموکراتیک کردن یادگیری ماشین است. او بر چالش‌های اصلی مربوط به استقرار برنامه‌های کاربردی پیچیده ML، مدل‌های ML چند مستاجر، بهینه‌سازی هزینه‌ها و در دسترس‌تر کردن استقرار مدل‌های یادگیری عمیق تمرکز می‌کند. Saurabh در اوقات فراغت خود از پیاده روی، یادگیری در مورد فن آوری های نوآورانه، دنبال کردن TechCrunch و گذراندن وقت با خانواده خود لذت می برد.

تمبر زمان:

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