در این آموزش، ما یک برنامه تولید تصویر از متن تعاملی را میسازیم که از طریق Google Colab و یک لینک عمومی با استفاده از کتابخانه Diffusers Hugging Face و Gradio قابل دسترسی است. شما یاد خواهید گرفت که چگونه با استفاده از مدل پیشرفته Stable Diffusion و شتابدهنده GPU، متنهای ساده را به تصاویر دقیق تبدیل کنید. ما مراحل راهاندازی محیط، نصب وابستگیها، ذخیرهسازی مدل در حافظه پنهان و ایجاد یک رابط کاربری بصری را که امکان تنظیم پارامترها در زمان واقعی را فراهم میکند، طی خواهیم کرد.
ابتدا، ما چهار بسته ضروری پایتون را با استفاده از pip نصب میکنیم. Diffusers ابزارهایی را برای کار با مدلهای انتشار فراهم میکند، Transformers مدلهای از پیش آموزشدیده را برای کارهای مختلف ارائه میدهد، Accelerate عملکرد را در تنظیمات سختافزاری مختلف بهینه میکند و Gradio امکان ایجاد رابطهای تعاملی یادگیری ماشین را فراهم میکند. این کتابخانهها ستون فقرات نسخه نمایشی تولید تصویر از متن ما در Google Colab را تشکیل میدهند. زمان اجرا را روی GPU تنظیم کنید.
اکنون، ما کتابخانههای ضروری را وارد میکنیم: torch برای محاسبات تانسور و شتابدهنده GPU، StableDiffusionPipeline از کتابخانه Diffusers برای بارگیری و اجرای مدل Stable Diffusion و gradio برای ساخت نسخههای نمایشی تعاملی. همچنین، یک متغیر سراسری pipe روی None مقداردهی اولیه میشود تا مدل بارگیریشده بعداً در حافظه پنهان ذخیره شود، که به جلوگیری از بارگیری مجدد مدل در هر فراخوانی استنتاج کمک میکند.
خط کد بالا نشان میدهد که آیا یک GPU با قابلیت CUDA در دسترس است یا خیر. این از تابع torch.cuda.is_available() PyTorch استفاده میکند که اگر یک GPU شناسایی شود و برای محاسبات آماده باشد، مقدار True و در غیر این صورت مقدار False را برمیگرداند، که به اطمینان از اینکه کد شما میتواند از شتابدهنده GPU استفاده کند، کمک میکند.
قطعه کد بالا خط لوله Stable Diffusion را با استفاده از یک مدل از پیش آموزشدیده از "runwayml/stable-diffusion-v1-5" بارگیری میکند. نوع داده آن را روی یک ممیز شناور 16 بیتی (torch.float16) تنظیم میکند تا استفاده از حافظه و عملکرد را بهینه کند. سپس کل خط لوله را به GPU ("cuda") منتقل میکند تا از شتابدهنده سختافزاری برای تولید سریعتر تصویر استفاده کند.
تابع فوق، generate_sd_image، یک متن را به همراه پارامترهایی برای مراحل استنتاج و مقیاس راهنمایی میگیرد تا با استفاده از Stable Diffusion یک تصویر تولید کند. بررسی میکند که آیا خط لوله مدل از قبل در متغیر سراسری pipe بارگیری شده است یا خیر. اگر نه، مدل را با دقت نیمه (FP16) بارگیری و در حافظه پنهان ذخیره میکند و آن را به GPU منتقل میکند. سپس از torch.autocast برای استنتاج با دقت ترکیبی کارآمد استفاده میکند و تصویر تولیدشده را برمیگرداند.
در اینجا، ما یک رابط Gradio تعریف میکنیم که تابع generate_sd_image را به یک UI وب تعاملی متصل میکند. این رابط سه ویجت ورودی، یک جعبه متن برای وارد کردن متن و لغزندهها برای تنظیم تعداد مراحل استنتاج و مقیاس راهنمایی را ارائه میدهد. در مقابل، ویجت خروجی تصویر تولیدشده را نمایش میدهد. این رابط همچنین شامل یک عنوان و متن توصیفی برای راهنمایی کاربران است و در نهایت نسخه نمایشی تعاملی راهاندازی میشود.
همچنین میتوانید از طریق یک URL عمومی به برنامه وب دسترسی پیدا کنید: https://7dc6833297cf83b160.gradio.live/ (به مدت 72 ساعت فعال است). یک لینک مشابه نیز برای کد شما تولید خواهد شد.
در خاتمه، این آموزش نشان داد که چگونه Diffusers Hugging Face را با Gradio ادغام کنید تا یک برنامه قدرتمند و تعاملی تولید تصویر از متن را در Google Colab و یک برنامه وب ایجاد کنید. از راهاندازی محیط شتابدهنده GPU و ذخیرهسازی مدل Stable Diffusion در حافظه پنهان گرفته تا ایجاد یک رابط برای تعامل پویای کاربر، شما یک پایه محکم برای آزمایش و توسعه بیشتر مدلهای تولیدی پیشرفته دارید.