yazılımcılık sektörünün bitmesi

entry35 galeri
    29.
  1. sizin kavramakta zorlandığınız yeni bir yazılım sahasında, ben onlarca hatayı tek seferde çözdüm, model eğitimini python la basit birkaç kodla sınırlandırdım. tüm bu satırların ne anlam ifade ettiğini, kornia, torchvision, xformers, transformers gibi kütüphaneleri, çalışma mantıklarını da öğrendim.

    from pathlib import Path
    import subprocess

    # Dosya yollarını tanımla
    pretrained_model_path = Path("/home/kratertepesi/ComfyUI/models/Stable-diffusion/sd-v1-4.ckpt")
    train_data_dir = Path("/home/kratertepesi/veri/5_isa")
    output_dir = Path("/home/kratertepesi")

    # Komutu oluştur
    command = [
    "python",
    "/home/kratertepesi/ComfyUI/custom_nodes/Lora-Training-in-Comfy/train.py",
    f"--num_cpu_threads_per_process=16",
    f"--pretrained_model_name_or_path={pretrained_model_path}",
    f"--train_data_dir={train_data_dir}",
    f"--resolution=512,512",
    f"--output_dir={output_dir}",
    f"--use_8bit_adam",
    f"--xformers",
    f"--logging_dir=",
    f"--network_module=networks.lora",
    f"--text_encoder_lr=5e-5",
    f"--unet_lr=1e-3",
    f"--network_dim=8",
    f"--output_name=wny",
    f"--learning_rate=1e-5",
    f"--lr_scheduler=kosinüs",
    f"--lr_warmup_steps=70",
    f"--train_batch_size=1",
    f"--max_train_steps=700",
    f"--save_every_n_epochs=1",
    f"--mixed_precision=fp16",
    f"--save_precision=fp16",
    f"--seed=1234",
    f"--cache_latents",
    f"--max_data_loader_n_workers=1",
    f"--fp8_base"
    ]

    # Komutu çalıştır
    subprocess.run(command, check=True)

    bir diğer örnek:

    import os
    import PIL
    import torch
    from torch.utils.data import Dataset, DataLoader
    from transformers import CLIPTextModel, CLIPTokenizer
    from peft import get_peft_model, LoraConfig
    from diffusers import UNet2DConditionModel, StableDiffusionPipeline
    from transformers import TrainingArguments, Trainer

    # ROCm GPU bellek ayarları
    os.environ['PYTORCH_HIP_ALLOC_CONF'] = 'expandable_segments:True'

    # GPU cihazını seç
    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

    class CustomDataset(Dataset):
    def __init__(self, img_dir, txt_dir):
    self.img_dir = img_dir
    self.txt_dir = txt_dir
    self.img_files = sorted([f for f in os.listdir(img_dir) if f.endswith('.png'))
    self.txt_files = sorted([f for f in os.listdir(txt_dir) if f.endswith('.txt'))

    def __len__(self):
    return len(self.img_files)

    def __getitem__(self, idx):
    img_path = os.path.join(self.img_dir, self.img_files[idx])
    txt_path = os.path.join(self.txt_dir, self.txt_files[idx])
    with open(txt_path, 'r') as file:
    caption = file.read()
    image = PIL.Image.open(img_path).convert("RGB")
    return image, caption

    def main():
    model_name = "epicrealismXL_v8Kiss.safetensors"
    model_dir = "/home/kratertepesi/ComfyUI/models/checkpoints/"

    # Model ağırlık dosyalarının bulunduğu dizin
    model_path = os.path.join(model_dir, model_name)

    # Modeli yükle
    if not os.path.isfile(model_path):
    raise FileNotFoundError(f"Model file {model_name} not found in {model_dir}")

    # Ağırlıkları doğrudan yükle
    unet = UNet2DConditionModel.from_pretrained(model_path)
    text_encoder = CLIPTextModel.from_pretrained(model_path)
    tokenizer = CLIPTokenizer.from_pretrained(model_path) # Tokenizer yükle, eğer varsa
    pipe = StableDiffusionPipeline(unet=unet, text_encoder=text_encoder, tokenizer=tokenizer)

    pipe = pipe.to(device)

    # Lora konfigürasyonunu ayarla
    lora_config = LoraConfig(
    base_model=pipe.unet,
    target_modules=["cross_attention"], # Hedef modülleri kontrol edin
    lora_alpha=32,
    lora_dropout=0.1
    )

    lora_model = get_peft_model(pipe.unet, lora_config)

    # Eğitim ayarlarını yapın
    training_args = TrainingArguments(
    output_dir="./results",
    per_device_train_batch_size=2,
    num_train_epochs=3,
    logging_dir="./logs",
    logging_steps=10,
    )

    # Eğitim veri kümesini oluştur
    dataset = CustomDataset(img_dir="/home/kratertepesi/veri/", txt_dir="/home/kratertepesi/veri/")
    dataloader = DataLoader(dataset, batch_size=training_args.per_device_train_batch_size, shuffle=True)

    # Trainer'ı oluştur
    trainer = Trainer(
    model=lora_model,
    args=training_args,
    train_dataset=dataset
    )

    # Modeli eğit
    trainer.train()

    if __name__ == "__main__":
    main()
    1 ...