مقارنة أداء نماذج ستابيليتي إيه آي للانتشار: دليل عملي باستخدام جوجل كولاب

في هذا البرنامج التعليمي العملي، سنستكشف الإمكانات الإبداعية لنماذج الانتشار الرائدة من ستابيليتي إيه آي، وهي: ستابل ديفيوجن 1.5، وستابيليتي إيه آي v2-base، ونظام ستابل ديفيوجن 3 المتطور (SD3-Medium). سنقوم بتوليد صور جذابة باستخدام جوجل كولاب مع واجهة جراديو، مما يسمح لنا بمقارنة ثلاث أنظمة قوية جنبًا إلى جنب، مع إمكانية تكرار طلبات سريعة واستنتاج مُعجل بمعالجة الرسومات (GPU).

سواء كنت مسوقًا تسعى لتعزيز القصة المرئية لعلامتك التجارية، أو مطورًا متحمسًا لبناء نماذج أولية لسير العمل التي تعتمد على الذكاء الاصطناعي، فإن هذا البرنامج التعليمي يُظهر لك كيف يمكن نشر نماذج ستابيليتي إيه آي مفتوحة المصدر على الفور ودون أي تكلفة للبنية التحتية، مما يسمح لك بالتركيز على سرد القصص، والتفاعل، وتحقيق نتائج ملموسة في العالم الحقيقي.

تثبيت المكتبات اللازمة

قبل البدء، سنقوم بتثبيت المكتبات الضرورية لتشغيل هذا البرنامج التعليمي:

  1. تسجيل الدخول إلى Hugging Face:
pip install huggingface_hub
from huggingface_hub import notebook_login
notebook_login()

هذا الأمر يقوم بتثبيت مكتبة huggingface_hub ثم يُطلب منك تسجيل الدخول إلى حسابك على Hugging Face للوصول إلى النماذج ومجموعات البيانات والموارد الأخرى.

  1. تثبيت وتحديث المكتبات:
pip uninstall -y torchvision
!pip install --upgrade torch torchvision --index-url https://download.pytorch.org/whl/cu118
!pip install --upgrade diffusers transformers accelerate safetensors gradio pillow

نقوم أولاً بإزالة تثبيت torchvision لتجنب أي تعارضات محتملة، ثم نقوم بتثبيت وتحديث torch و torchvision مع دعم CUDA 11.8، وأخيرًا نقوم بتحديث المكتبات الأساسية الأخرى مثل diffusers, transformers, accelerate, safetensors, gradio, و pillow.

تحميل وتجهيز نماذج ستابل ديفيوجن

بعد تثبيت المكتبات، سنقوم بتحميل نماذج ستابل ديفيوجن الثلاثة وتجهيزها للعمل:

import torch
from diffusers import StableDiffusionPipeline, StableDiffusion3Pipeline
import gradio as gr
device = "cuda" if torch.cuda.is_available() else "cpu"

نقوم هنا باستيراد المكتبات الضرورية، بما في ذلك torch, StableDiffusionPipeline, StableDiffusion3Pipeline, و gradio. ثم نحدد جهاز المعالجة (GPU إن وجد، وإلا فإنها ستستخدم وحدة المعالجة المركزية CPU).

  1. تحميل وتجهيز Stable Diffusion v1.5:
pipe1 = StableDiffusionPipeline.from_pretrained(
    "runwayml/stable-diffusion-v1-5", torch_dtype=torch.float16, safety_checker=None
).to(device)
pipe1.enable_attention_slicing()

نقوم بتحميل نموذج Stable Diffusion v1.5 بدقة نصفية (float16) بدون مُراجع السلامة، وننقله إلى الجهاز المحدد، ونُمَكّن تقسيم الانتباه (attention slicing) لتقليل استخدام ذاكرة الوصول العشوائي (VRAM).

  1. تحميل وتجهيز Stable Diffusion v2-base:
pipe2 = StableDiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-2-base", torch_dtype=torch.float16, safety_checker=None
).to(device)
pipe2.enable_attention_slicing()

نقوم بتحميل نموذج Stable Diffusion v2-base بنفس الطريقة.

  1. تحميل وتجهيز Stable Diffusion 3-medium:
pipe3 = StableDiffusion3Pipeline.from_pretrained(
    "stabilityai/stable-diffusion-3-medium-diffusers", torch_dtype=torch.float16, safety_checker=None
).to(device)
pipe3.enable_attention_slicing()

نقوم بتحميل نموذج Stable Diffusion 3-medium بنفس الطريقة.

إنشاء الصور ومقارنتها

بعد تحميل النماذج، سنقوم بإنشاء دالة لتوليد الصور ومقارنتها:

def generate(prompt, steps, scale):
    img1 = pipe1(prompt, num_inference_steps=steps, guidance_scale=scale).images[0]
    img2 = pipe2(prompt, num_inference_steps=steps, guidance_scale=scale).images[0]
    img3 = pipe3(prompt, num_inference_steps=steps, guidance_scale=scale).images[0]
    return img1, img2, img3

هذه الدالة تأخذ نص الطلب وعدد خطوات الاستنتاج ومقياس التوجيه كمدخلات، وتُرجع صورة واحدة من كل نموذج.

واجهة المستخدم الرسومية (Gradio)

باستخدام مكتبة Gradio، سننشئ واجهة مستخدم بسيطة لمقارنة النتائج:

def choose(selection):
    return f" لقد اخترت: **{selection}**"

with gr.Blocks() as demo:
    gr.Markdown("## مُنشئ منشورات التواصل الاجتماعي باستخدام الذكاء الاصطناعي مع 3 نماذج")
    with gr.Row():
        prompt = gr.Textbox(label="الطلب", placeholder="غروب شمس ساحلي نابض بالحياة...")
        steps = gr.Slider(1, 100, value=50, step=1, label="خطوات الاستنتاج")
        scale = gr.Slider(1.0, 20.0, value=7.5, step=0.1, label="مقياس التوجيه")
        btn = gr.Button("توليد الصور")
    with gr.Row():
        out1 = gr.Image(label="النموذج 1: SD v1.5")
        out2 = gr.Image(label="النموذج 2: SD v2-base")
        out3 = gr.Image(label="النموذج 3: SD v3-medium")
    sel = gr.Radio(["النموذج 1: SD v1.5", "النموذج 2: SD v2-base", "النموذج 3: SD v3-medium"], label="اختر النموذج المفضل لديك")
    txt = gr.Markdown()
    btn.click(fn=generate, inputs=[prompt, steps, scale], outputs=[out1, out2, out3])
    sel.change(fn=choose, inputs=sel, outputs=txt)
demo.launch(share=True)

هذه القطعة من الكود تُنشئ واجهة Gradio تسمح للمستخدم بإدخال طلب نصي، وضبط معلمات توليد الصورة، ومقارنة نتائج النماذج الثلاثة.

الخاتمة

من خلال دمج أنظمة ستابيليتي إيه آي المتطورة للانتشار في تطبيق جراديو سهل الاستخدام، رأيتَ كيف يمكنك بسهولة إنشاء نماذج أولية، ومقارنة، ونشر صور مذهلة تناسب منصات اليوم. من اختبار الإصدارات A/B للتوجهات الإبداعية إلى أتمتة أصول الحملات على نطاق واسع، توفر ستابيليتي إيه آي الأداء والمرونة ودعم المجتمع النشط لتحويل سير عمل المحتوى الخاص بك.

المصدر: MarkTechPost