Helio-Ray-LoRA / USAGE.md
HelioAI's picture
Upload 8 files
a55b428 verified
# 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**.
- Пишите желаемый текст в промпте **в одинарных кавычках** (например: `'МАГАЗИН'`).
- Добавьте описание стиля текста (например: "крупный шрифт, четкие буквы").
```