| # Helio-Ray-LoRA (v0.1 Experimental) — Руководство | |
| Этот документ описывает, как использовать экспериментальный LoRA-адаптер Helio-Ray поверх базовой модели Z-Image. | |
| ## Установка зависимостей | |
| ```bash | |
| pip install torch>=2.0.0 | |
| pip install diffusers>=0.30.0 | |
| pip install peft>=0.13.0 | |
| pip install transformers>=4.45.0 | |
| pip install accelerate safetensors | |
| ``` | |
| ## Базовая генерация | |
| Скрипт автоматически скачает базовую модель (Z-Image-Turbo), если она не установлена, и применит к ней наш адаптер. | |
| ```python | |
| import torch | |
| from diffusers import DiffusionPipeline | |
| from peft import PeftModel | |
| # 1. Загрузка базовой модели (Z-Image) | |
| # При первом запуске скачается ~10 ГБ | |
| pipe = DiffusionPipeline.from_pretrained( | |
| "Tongyi-MAI/Z-Image-Turbo", | |
| torch_dtype=torch.float16, # Используйте float16 для экономии памяти | |
| trust_remote_code=True | |
| ) | |
| pipe.to("cuda") | |
| # 2. Применение адаптера Helio-Ray | |
| # Загружается с Hugging Face (всего ~300 МБ) | |
| pipe.transformer = PeftModel.from_pretrained( | |
| pipe.transformer, | |
| "HelioAI/Helio-Ray-LoRA-v0.1", # Убедитесь, что имя репозитория совпадает | |
| is_trainable=False | |
| ) | |
| # 3. Функция установки силы влияния (Scale) | |
| def set_lora_scale(scale): | |
| for module in pipe.transformer.modules(): | |
| if hasattr(module, "scaling"): | |
| for key in module.scaling: | |
| module.scaling[key] = scale | |
| # Рекомендуемое значение: 0.5 - 0.7 | |
| set_lora_scale(0.5) | |
| # 4. Генерация (Строго 1024x1024) | |
| image = pipe( | |
| prompt="Реалистичное фото, вывеска магазина с надписью 'ПРОДУКТЫ', вечер, 8k", | |
| height=1024, | |
| width=1024, | |
| num_inference_steps=8, # Turbo-режим (быстро) | |
| guidance_scale=0.0 | |
| ).images[0] | |
| image.save("output.png") | |
| ``` | |
| ## Адаптивный scale (Умная настройка) | |
| Адаптер лучше всего работает с реализмом. Для пиксель-арта или стилизации рекомендуется снижать влияние адаптера. | |
| ```python | |
| def get_optimal_scale(prompt): | |
| """Автоматический выбор scale в зависимости от промпта""" | |
| stylized_keywords = ['майнкрафт', 'пиксел', 'anime', 'мультфильм', '8-bit'] | |
| prompt_lower = prompt.lower() | |
| for keyword in stylized_keywords: | |
| if keyword in prompt_lower: | |
| return 0.3 # Слабое влияние для стилизации | |
| return 0.5 # Стандартное влияние для фотореализма и текста | |
| # Использование | |
| prompt = "Картинка в стиле майнкрафта" | |
| scale = get_optimal_scale(prompt) | |
| set_lora_scale(scale) | |
| ``` | |
| ## Batch генерация (Пакетная) | |
| ```python | |
| prompts = [ | |
| "Кружка с надписью 'КОФЕ' на столе", | |
| "Вывеска 'АПТЕКА' на здании", | |
| "Книга с заголовком 'ИСТОРИЯ' крупным планом" | |
| ] | |
| for i, prompt in enumerate(prompts): | |
| image = pipe( | |
| prompt, | |
| height=1024, | |
| width=1024, | |
| num_inference_steps=8, | |
| guidance_scale=0.0 | |
| ).images[0] | |
| image.save(f"output_{i}.png") | |
| ``` | |
| ## Настройка качества | |
| Если результат кажется "мыльным", можно увеличить количество шагов, но это замедлит генерацию. | |
| ```python | |
| # Больше шагов = выше детализация | |
| image = pipe( | |
| prompt="...", | |
| num_inference_steps=12, # Стандарт: 8. Максимум: 15-20. | |
| height=1024, | |
| width=1024 | |
| ).images[0] | |
| ``` | |
| ## Системные требования | |
| Хотя сам адаптер весит мало, для запуска всей цепочки (Base + Adapter) требуется GPU. | |
| - **VRAM:** Минимум 12-16 GB (для комфортной работы). | |
| - **RAM:** 16 GB+. | |
| - **Python:** 3.10+. | |
| ## Troubleshooting (Решение проблем) | |
| ### OOM (Ошибка нехватки памяти) | |
| Если видеокарта слабая (менее 12 ГБ VRAM), включите выгрузку слоев на процессор: | |
| ```python | |
| pipe.enable_model_cpu_offload() | |
| ``` | |
| ### Артефакты на изображении | |
| - Попробуйте уменьшить scale до **0.3-0.4**. | |
| - Увеличьте `num_inference_steps` до **10-12**. | |
| ### Текст генерируется с ошибками | |
| - Убедитесь, что scale установлен на **0.5** или **0.6**. | |
| - Пишите желаемый текст в промпте **в одинарных кавычках** (например: `'МАГАЗИН'`). | |
| - Добавьте описание стиля текста (например: "крупный шрифт, четкие буквы"). | |
| ``` |