Stable Diffusion ইন্সটল এবং সেটআপ করার জন্য আপনার একটি GPU এবং CUDA সাপোর্টেড সিস্টেম থাকতে হবে। Stable Diffusion একটি শক্তিশালী মডেল যা PyTorch ফ্রেমওয়ার্ক এবং ডিফিউশন মডেল ব্যবহার করে ইমেজ জেনারেশন করে। নিচে ধাপে ধাপে ইন্সটলেশন এবং সেটআপ গাইড দেওয়া হলো:
Stable Diffusion এর জন্য একটি আলাদা Python পরিবেশ তৈরি করা ভালো, যাতে অন্যান্য লাইব্রেরির সাথে সংঘর্ষ এড়ানো যায়। আপনি Anaconda বা Virtualenv ব্যবহার করতে পারেন।
conda create -n stable_diffusion python=3.9
conda activate stable_diffusion
python -m venv stable_diffusion_env
source stable_diffusion_env/bin/activate # Linux/ Mac
stable_diffusion_env\Scripts\activate # Windows
PyTorch এবং CUDA ইন্সটল করুন। PyTorch-এর অফিসিয়াল ওয়েবসাইটে ইনস্টলেশন কমান্ড দেওয়া আছে। সাধারণভাবে, নিচের মতো একটি কমান্ড PyTorch এবং CUDA ইন্সটল করতে পারেন:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
নোট: উপরের কমান্ডে cu118
নির্দেশ করছে যে এটি CUDA 11.8 এর জন্য PyTorch ইনস্টল করছে। আপনার GPU এবং CUDA ভার্সনের সাথে এটি সামঞ্জস্যপূর্ণ কিনা তা নিশ্চিত করুন।
Stable Diffusion চালাতে কয়েকটি অতিরিক্ত লাইব্রেরি প্রয়োজন:
pip install transformers diffusers accelerate scipy ftfy
Hugging Face-এর Diffusers লাইব্রেরি ব্যবহার করে Stable Diffusion মডেল ডাউনলোড করা যায়। প্রথমে আপনাকে Hugging Face-এ একটি একাউন্ট তৈরি করতে হবে এবং API টোকেন সংগ্রহ করতে হবে।
pip install huggingface_hub
huggingface-cli login
আপনার API টোকেনটি ইনপুট করুন এবং লগইন সম্পন্ন করুন।
Stable Diffusion মডেল লোড করতে নিচের কোড ব্যবহার করুন:
import torch
from diffusers import StableDiffusionPipeline
# মডেল লোড করা
pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4").to("cuda")
CompVis/stable-diffusion-v1-4
হলো মডেলের নাম যা Hugging Face-এর ডিফিউজার লাইব্রেরি থেকে পাওয়া যায়। আপনি চাইলে অন্য সংস্করণও ব্যবহার করতে পারেন।.to("cuda")
দিয়ে মডেলটিকে GPU তে পাঠানো হচ্ছে।Stable Diffusion দিয়ে একটি ইমেজ জেনারেট করতে নিচের কোড ব্যবহার করুন:
prompt = "A futuristic cityscape at sunset, cyberpunk style"
image = pipe(prompt).images[0]
# ইমেজ সেভ করা
image.save("generated_image.png")
এই কোডে:
.save()
ফাংশনের মাধ্যমে সেভ করা হয়।মডেলটির পারফরম্যান্স উন্নত করার জন্য আপনি half-precision (fp16) ব্যবহার করতে পারেন, যা GPU মেমোরি কম ব্যবহার করে এবং ইনফারেন্স দ্রুত করে:
pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", torch_dtype=torch.float16).to("cuda")
Stable Diffusion সেটআপ করতে:
diffusers
, transformers
ইন্সটল করুন।এভাবে, আপনি সহজেই আপনার সিস্টেমে Stable Diffusion সেটআপ করতে পারবেন এবং এটি দিয়ে সৃজনশীল ইমেজ তৈরি করতে পারবেন।
Stable Diffusion একটি শক্তিশালী ডিফিউশন মডেল যা উচ্চমানের ইমেজ জেনারেশন করতে ব্যবহৃত হয়। এটি Windows, Linux, এবং macOS-এ ইন্সটল করা যায়। নিচে প্রতিটি প্ল্যাটফর্মের জন্য ইন্সটলেশন প্রক্রিয়া আলোচনা করা হলো:
Stable Diffusion Windows-এ ইন্সটল করার জন্য আপনাকে Python এবং কিছু নির্দিষ্ট লাইব্রেরি ইন্সটল করতে হবে।
git clone https://github.com/CompVis/stable-diffusion.git
cd stable-diffusion
python -m venv venv
এখন ভার্চুয়াল এনভায়রনমেন্টটি সক্রিয় করুন:
venv\Scripts\activate
pip install -r requirements.txt
Stable Diffusion এর জন্য প্রি-ট্রেন করা মডেল ওজন (weights) ডাউনলোড করুন। এর জন্য model.ckpt
ফাইলটি Hugging Face বা অন্যান্য উৎস থেকে ডাউনলোড করে stable-diffusion/models/ldm/stable-diffusion-v1
ডিরেক্টরিতে রাখুন।
python scripts/txt2img.py --prompt "a beautiful landscape" --plms
এভাবে আপনি Stable Diffusion Windows-এ সফলভাবে ইন্সটল এবং রান করতে পারবেন।
Linux-এ Stable Diffusion ইন্সটল করার প্রক্রিয়া Windows-এর মতোই, তবে এখানে কিছু Linux-specific কমান্ড ব্যবহার করতে হবে।
sudo apt update
sudo apt install python3 python3-venv python3-pip git
git clone https://github.com/CompVis/stable-diffusion.git
cd stable-diffusion
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
ডাউনলোড করা মডেল ওজন (model.ckpt
) stable-diffusion/models/ldm/stable-diffusion-v1
ডিরেক্টরিতে রাখুন।
python scripts/txt2img.py --prompt "a futuristic cityscape" --plms
macOS-এ Stable Diffusion ইন্সটল করার জন্য Homebrew এবং Python ব্যবহার করতে হবে। তবে macOS-এ GPU সাপোর্ট সীমিত হওয়ায় মডেলটি CPU মোডে রান করবে, যা ধীর হতে পারে।
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install python git
git clone https://github.com/CompVis/stable-diffusion.git
cd stable-diffusion
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
ডাউনলোড করা মডেল ওজন (model.ckpt
) stable-diffusion/models/ldm/stable-diffusion-v1
ডিরেক্টরিতে রাখুন।
python scripts/txt2img.py --prompt "a colorful sunset" --plms --device cpu
নোট: macOS-এ GPU সাপোর্ট সীমিত, তাই যদি আপনার কাছে একটি Apple Silicon (M1 বা M2) চিপ থাকে, তাহলে আপনি GPU ব্যবহার করে রান করতে পারবেন
--device mps
প্যারামিটার দিয়ে। তবে Intel ভিত্তিক Mac-এ শুধুমাত্র CPU মোডে রান করতে হবে।
এই পদ্ধতিতে আপনি Windows, Linux, এবং macOS-এ Stable Diffusion ইন্সটল এবং রান করতে পারবেন। মনে রাখবেন যে, GPU সাপোর্ট (যেমন NVIDIA GPU) থাকলে মডেলটি দ্রুত চলবে। Mac-এ GPU সাপোর্ট না থাকলে, CPU ব্যবহার করতে হবে যা তুলনামূলকভাবে ধীর হতে পারে।
Stable Diffusion সেটআপ করতে Python এবং PyTorch ব্যবহার করা হয়। এটি করার জন্য, Python পরিবেশ তৈরি করা এবং PyTorch ও অন্যান্য নির্ভরশীল লাইব্রেরিগুলো ইনস্টল করা প্রয়োজন। নিচে ধাপে ধাপে Stable Diffusion সেটআপের নির্দেশনা দেওয়া হলো:
প্রথমে, একটি ভার্চুয়াল পরিবেশ তৈরি করা সেরা পদ্ধতি যাতে নির্ভরশীলতা গুলো আলাদা রাখা যায়।
# ভার্চুয়াল এনভায়রনমেন্ট তৈরি করা
python -m venv stable_diffusion_env
# ভার্চুয়াল এনভায়রনমেন্ট অ্যাক্টিভেট করা
# Windows:
stable_diffusion_env\Scripts\activate
# macOS/Linux:
source stable_diffusion_env/bin/activate
Stable Diffusion রান করার জন্য PyTorch প্রয়োজন। GPU সাপোর্ট পেতে হলে, CUDA সহ PyTorch ইনস্টল করতে হবে।
# PyTorch ইনস্টল করা (CUDA 11.7 সাপোর্ট সহ) - আপনার সিস্টেমের জন্য কনফিগারেশন মিলিয়ে নিন
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117
diffusers
লাইব্রেরি ইনস্টল করাHugging Face-এর diffusers
লাইব্রেরি Stable Diffusion এবং অন্যান্য ডিফিউশন মডেল পরিচালনার জন্য ব্যবহৃত হয়। এটি ইনস্টল করতে:
pip install diffusers
Stable Diffusion পরিচালনা করতে প্রয়োজনীয় আরও কিছু লাইব্রেরি ইনস্টল করতে হবে, যেমন: transformers
, accelerate
, এবং scipy
।
pip install transformers accelerate scipy
এখন মডেল লোড করার জন্য কোড লিখতে হবে। নিচে একটি সিম্পল উদাহরণ দেওয়া হল যেখানে Stable Diffusion মডেল লোড এবং ইমেজ জেনারেশন করা হয়েছে:
import torch
from diffusers import StableDiffusionPipeline
# ডিভাইস সেট করা (GPU থাকলে CUDA ব্যবহার করা হবে)
device = "cuda" if torch.cuda.is_available() else "cpu"
# Stable Diffusion মডেল লোড করা
pipeline = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4").to(device)
# একটি প্রম্পট ডিফাইন করা
prompt = "A fantasy landscape with mountains and rivers, digital art"
# ইমেজ জেনারেট করা
with torch.autocast("cuda"):
image = pipeline(prompt).images[0]
# ইমেজ সেভ করা
image.save("generated_image.png")
মডেল লোড করা:
StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4")
ব্যবহার করে মডেল লোড করা হয়েছে। এটি Hugging Face-এর মডেল হাব থেকে লোড করে।.to(device)
ব্যবহার করে মডেলকে GPU তে মুভ করা হয়েছে, যদি GPU উপস্থিত থাকে।প্রম্পট দিয়ে ইমেজ জেনারেশন:
pipeline(prompt)
দ্বারা প্রম্পট ইনপুট দেওয়া হয়েছে, এবং এটি ইমেজ জেনারেট করেছে।torch.autocast("cuda")
ব্যবহৃত হয়েছে যাতে অটোমেটিকভাবে মডেলটি CUDA অপ্টিমাইজেশনের সুবিধা নেয়।ইমেজ সংরক্ষণ:
image.save("generated_image.png")
দিয়ে জেনারেট করা ইমেজ .png
ফরম্যাটে সেভ করা হয়েছে।এইভাবে, আপনি Python এবং PyTorch ব্যবহার করে Stable Diffusion সেটআপ করতে পারেন এবং ইমেজ জেনারেশন শুরু করতে পারেন।
Pre-trained মডেল ব্যবহার করে কাজ করা হলো একটি দ্রুত এবং কার্যকরী পদ্ধতি, বিশেষ করে যখন আমাদের কাছে পর্যাপ্ত ডেটা বা কম্পিউটেশনাল রিসোর্স নেই। PyTorch এবং অন্যান্য ডিপ লার্নিং ফ্রেমওয়ার্কে অনেক প্রি-ট্রেইনড মডেল পাওয়া যায়, যেমন ResNet, VGG, Inception, ইত্যাদি। এই মডেলগুলো সাধারণত বড় ডেটাসেট (যেমন ImageNet) দিয়ে ট্রেনিং করা হয়, এবং সেগুলো থেকে শেখা ফিচারগুলো বিভিন্ন কাজে পুনঃব্যবহার করা যায়।
নিচে PyTorch ব্যবহার করে প্রি-ট্রেইনড মডেল ব্যবহার করার ধাপগুলো বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে।
import torch
import torch.nn as nn
from torchvision import models, transforms
from PIL import Image
import requests
from io import BytesIO
PyTorch-এর torchvision.models মডিউল থেকে সহজেই প্রি-ট্রেইনড মডেল লোড করা যায়।
# ResNet18 প্রি-ট্রেইনড মডেল লোড করা (ImageNet ডেটাসেটের উপর প্রি-ট্রেইনড)
model = models.resnet18(pretrained=True)
# মডেলকে ইভ্যালুয়েশন মোডে সেট করা
model.eval()
ইমেজকে মডেলের জন্য প্রস্তুত করতে হলে কিছু ট্রান্সফর্মেশন করতে হয়, যেমন রিসাইজ, টেনসর কনভার্সন, এবং নরমালাইজেশন।
# ইমেজ ট্রান্সফর্ম সেট করা
preprocess = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])
# একটি উদাহরণ ইমেজ লোড করা
url = "https://example.com/path/to/your/image.jpg" # এখানে আপনার ইমেজের URL দিন
response = requests.get(url)
img = Image.open(BytesIO(response.content))
# ইমেজ প্রিপ্রসেস করা
img_t = preprocess(img)
batch_t = torch.unsqueeze(img_t, 0) # ব্যাচ সাইজ হিসেবে ১ সেট করা
# মডেলের মাধ্যমে ইমেজ প্রেডিক্ট করা
with torch.no_grad():
output = model(batch_t)
# আউটপুট লেবেল খুঁজে বের করা
_, predicted = torch.max(output, 1)
print(f'Predicted class: {predicted.item()}')
PyTorch মডেলের আউটপুট সাধারণত লজিট আকারে আসে, যা পরে ক্লাসে রূপান্তর করা হয়। আপনি ImageNet ডেটাসেটের লেবেল ম্যাপিং ডাউনলোড করে আউটপুট ক্লাসকে সহজেই ইন্টারপ্রেট করতে পারেন।
# লেবেল ম্যাপিং ডাউনলোড করা
LABELS_URL = "https://raw.githubusercontent.com/pytorch/hub/master/imagenet_classes.txt"
labels = requests.get(LABELS_URL).text.splitlines()
# প্রেডিক্টেড ক্লাস প্রিন্ট করা
print(f'Predicted label: {labels[predicted.item()]}')
Pre-trained মডেল ব্যবহার করে ট্রেনিং করার সময়, আপনি সম্পূর্ণ মডেল বা শুধু শেষের কয়েকটি লেয়ার ফাইন-টিউন করতে পারেন। উদাহরণস্বরূপ, ResNet18 মডেলের ফুলি কানেক্টেড লেয়ার পরিবর্তন করে আমাদের নির্দিষ্ট কাজের জন্য ফাইন-টিউন করতে পারি।
# লাস্ট লেয়ার পরিবর্তন করে দুটি ক্লাসে আউটপুট সেট করা
num_ftrs = model.fc.in_features
model.fc = nn.Linear(num_ftrs, 2) # 2 টি ক্লাস উদাহরণস্বরূপ
# মডেলকে GPU তে স্থানান্তর করা (যদি GPU থাকে)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = model.to(device)
# Loss function এবং optimizer সেট করা
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.001, momentum=0.9)
# মডেল ট্রেনিং লুপ (সংক্ষেপে)
for epoch in range(5):
model.train()
# ট্রেনিং ডেটালোডার ব্যবহার করে ব্যাচ লোড করা
for inputs, labels in train_loader:
inputs, labels = inputs.to(device), labels.to(device)
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
এভাবে, PyTorch ব্যবহার করে প্রি-ট্রেইনড মডেল খুব সহজে ব্যবহার করা যায় এবং ফাইন-টিউন করা যায়। এটি বিশেষ করে ছোট ডেটাসেট বা সীমিত রিসোর্সের ক্ষেত্রে অত্যন্ত কার্যকরী।
Stable Diffusion মডেলের প্রাথমিক কনফিগারেশন এবং কাজের ধরণ নিয়ে বিস্তারিত উদাহরণসহ ব্যাখ্যা করা হলো। Stable Diffusion মডেল সেটআপ এবং রান করার জন্য কিছু নির্দিষ্ট কনফিগারেশন এবং লাইব্রেরি ইনস্টলেশন প্রয়োজন।
Stable Diffusion মডেল সেটআপ করার জন্য আপনার সিস্টেমে Python এবং PyTorch সহ কিছু নির্দিষ্ট লাইব্রেরি ইনস্টল করতে হবে।
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
pip install diffusers transformers accelerate scipy pillow
import torch
from diffusers import StableDiffusionPipeline
# GPU ডিভাইস সেট করা
device = "cuda" if torch.cuda.is_available() else "cpu"
# মডেল লোড করা
model_id = "CompVis/stable-diffusion-v1-4"
pipe = StableDiffusionPipeline.from_pretrained(model_id).to(device)
Stable Diffusion মডেল মূলত টেক্সট ইনপুট থেকে ইমেজ জেনারেট করে। নিচে এর কাজের ধরণ উদাহরণসহ দেখানো হলো।
# টেক্সট ইনপুট
prompt = "a fantasy landscape with mountains and a river during sunset"
# ইমেজ তৈরি করা
with torch.autocast("cuda"):
image = pipe(prompt).images[0]
# ইমেজ সংরক্ষণ করা
image.save("fantasy_landscape.png")
prompt
একটি টেক্সট ইনপুট যেখানে আপনি যা দেখতে চান তা বর্ণনা করবেন। উদাহরণস্বরূপ, আমরা একটি "ফ্যান্টাসি ল্যান্ডস্কেপ" এর বিবরণ দিয়েছি।torch.autocast("cuda")
ব্যবহার করা হয়েছে যাতে মডেলটি GPU তে দ্রুত এবং কার্যকরভাবে রান করে।Stable Diffusion মডেলের কার্যকারিতা উন্নত করার জন্য এবং এটি দ্রুত চালানোর জন্য কিছু অপ্টিমাইজেশন করা যেতে পারে:
যদি আপনি একাধিক ইমেজ তৈরি করতে চান, তাহলে ব্যাচ সাইজ ব্যবহার করতে পারেন:
prompts = ["a futuristic city", "a beautiful beach at sunrise", "a medieval castle"]
images = pipe(prompts).images
# প্রতিটি ইমেজ সংরক্ষণ করা
for i, img in enumerate(images):
img.save(f"image_{i}.png")
মডেল ট্রেনিং এবং ইনফারেন্সের সময় কম মেমরি ব্যবহার করতে এবং প্রসেসিং দ্রুত করতে, Half-precision ব্যবহার করা যায়:
pipe = pipe.to(device).half()
Stable Diffusion মডেল টেক্সট ইনপুট নিয়ে কাজ করে, তাই টেক্সট ইনপুটকে টোকেনাইজ করতে হয়। PyTorch এবং transformers
লাইব্রেরি ব্যবহার করে এটা করা হয়।
from transformers import CLIPTokenizer
tokenizer = CLIPTokenizer.from_pretrained("openai/clip-vit-base-patch32")
tokens = tokenizer(prompt, return_tensors="pt").to(device)
Diffusion প্রসেসের স্টেপ সংখ্যা পরিবর্তন করে ইমেজের ডিটেইলস এবং ক্ল্যারিটি কন্ট্রোল করা যায়। স্টেপ সংখ্যা বেশি হলে ইমেজ আরও ডিটেইলড হয়, তবে সময় বেশি লাগে।
image = pipe(prompt, num_inference_steps=50).images[0] # ডিফল্ট স্টেপ ৫০
কনফিগারেশন এবং টেক্সট ইনপুট অনুযায়ী মডেল যেভাবে ইমেজ তৈরি করে, তার কিছু উদাহরণ:
Stable Diffusion মডেল সেটআপ এবং রান করার জন্য প্রয়োজনীয় কনফিগারেশন এবং কাজের ধরণ সম্পর্কে এইভাবে আপনি একটি ধারণা পাবেন। এই ধাপগুলো অনুসরণ করে, আপনি বিভিন্ন টেক্সট ইনপুটের মাধ্যমে কাস্টম ইমেজ তৈরি করতে পারবেন এবং মডেল অপ্টিমাইজেশন করে দ্রুত ফলাফল পেতে পারবেন।
Read more