# Text Generation WebUI

Запустите самый популярный интерфейс LLM с поддержкой всех форматов моделей.

{% hint style="success" %}
Все примеры можно запускать на GPU-серверах, арендуемых через [CLORE.AI Marketplace](https://clore.ai/marketplace).
{% endhint %}

## Аренда на CLORE.AI

1. Посетите [CLORE.AI Marketplace](https://clore.ai/marketplace)
2. Отфильтруйте по типу GPU, объему VRAM и цене
3. Выберите **On-Demand** (фиксированная ставка) или **Spot** (цена по ставке)
4. Настройте ваш заказ:
   * Выберите Docker-образ
   * Установите порты (TCP для SSH, HTTP для веб-интерфейсов)
   * Добавьте переменные окружения при необходимости
   * Введите команду запуска
5. Выберите способ оплаты: **CLORE**, **BTC**, или **USDT/USDC**
6. Создайте заказ и дождитесь развертывания

### Доступ к вашему серверу

* Найдите данные для подключения в **Моих заказах**
* Веб-интерфейсы: используйте URL HTTP-порта
* SSH: `ssh -p <port> root@<proxy-address>`

## Почему Text Generation WebUI?

* Поддерживает форматы GGUF, GPTQ, AWQ, EXL2, HF
* Встроенные режимы: чат, блокнот и API
* Расширения: голос, персонажи, мультимодальность
* Поддержка дообучения
* Переключение моделей на лету

## Требования

| Размер модели | Мин. VRAM | Рекомендуется |
| ------------- | --------- | ------------- |
| 7B (Q4)       | 6 ГБ      | RTX 3060      |
| 13B (Q4)      | 10GB      | RTX 3080      |
| 30B (Q4)      | 20GB      | RTX 4090      |
| 70B (Q4)      | 40GB      | A100          |

## Быстрое развертывание

**Docker-образ:**

```
atinoda/text-generation-webui:default-nvidia
```

**Порты:**

```
22/tcp
7860/http
5000/http
5005/http
```

**Окружение:**

```
EXTRA_LAUNCH_ARGS=--listen --api
```

## Ручная установка

**Образ:**

```
nvidia/cuda:12.1.0-devel-ubuntu22.04
```

**Порты:**

```
22/tcp
7860/http
5000/http
```

**Команда:**

```bash
apt-get update && apt-get install -y git python3 python3-pip && \
cd /workspace && \
git clone https://github.com/oobabooga/text-generation-webui.git && \
cd text-generation-webui && \
pip install -r requirements.txt && \
python server.py --listen --api
```

## Доступ к вашему сервису

После развертывания найдите ваш `http_pub` URL в **Моих заказах**:

1. Перейдите на **Моих заказах** страницу
2. Нажмите на ваш заказ
3. Найдите `http_pub` URL (например, `abc123.clorecloud.net`)

Используйте `https://YOUR_HTTP_PUB_URL` вместо `localhost` в примерах ниже.

## Доступ к WebUI

1. Ожидайте развертывания
2. Найдите сопоставление порта 7860 в **Моих заказах**
3. Откройте: `http://<proxy>:<port>`

## Загрузка моделей

### С HuggingFace (в WebUI)

1. Перейдите на **Модель** вкладка
2. Введите имя модели: `bartowski/Meta-Llama-3.1-8B-Instruct-GGUF`
3. Нажмите **Скачать**

### Через командную строку

```bash
cd /workspace/text-generation-webui

# Скачать модель GGUF
python download-model.py bartowski/Meta-Llama-3.1-8B-Instruct-GGUF

# Скачать конкретный файл
python download-model.py bartowski/Meta-Llama-3.1-8B-Instruct-GGUF --specific-file Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf
```

### Рекомендуемые модели

**Для чата:**

```bash

# Llama 2 Chat (7B, быстро)
python download-model.py bartowski/Meta-Llama-3.1-8B-Instruct-GGUF

# Mistral Instruct (отлично)
python download-model.py bartowski/Mistral-7B-Instruct-v0.3-GGUF

# OpenHermes (хороший универсал)
python download-model.py bartowski/OpenHermes-2.5-Mistral-7B-GGUF
```

**Для программирования:**

```bash

# CodeLlama
python download-model.py bartowski/CodeLlama-13B-Instruct-GGUF

# DeepSeek Coder
python download-model.py bartowski/DeepSeek-Coder-V2-Lite-Instruct-GGUF
```

**Для ролевых игр:**

```bash

# MythoMax
python download-model.py bartowski/MythoMax-L2-13B-GGUF
```

## Загрузка моделей

### GGUF (Рекомендуется для большинства пользователей)

1. **Модель** вкладка → Выберите папку с моделью
2. **Загрузчик моделей:** llama.cpp
3. Установите **n-gpu-layers:**
   * RTX 3090: 35-40
   * RTX 4090: 45-50
   * A100: 80+
4. Нажмите **Загрузить**

### GPTQ (Быстро, квантизовано)

1. Скачать GPTQ модель
2. **Загрузчик моделей:** ExLlama\_HF или AutoGPTQ
3. Загрузить модель

### EXL2 (Лучшая скорость)

```bash

# Установить exllamav2
pip install exllamav2
```

1. Скачать модель EXL2
2. **Загрузчик моделей:** ExLlamav2\_HF
3. Загрузить

## Настройки чата

### Настройка персонажа

1. Перейдите на **Параметры** → **Персонаж**
2. Создать или загрузить карточку персонажа
3. Установить:
   * Имя
   * Контекст/персона
   * Пример диалога

### Режим инструкций

Для моделей, натренированных на инструкциях:

1. **Параметры** → **Шаблон инструкции**
2. Выберите шаблон, соответствующий вашей модели:
   * Llama-2-chat
   * Mistral
   * ChatML
   * Alpaca

## Использование API

### Включить API

Начните с `--api` flag (порт по умолчанию 5000)

### Совместимый с API OpenAI

```python
import openai

openai.api_base = "http://localhost:5000/v1"
openai.api_key = "not-needed"

response = openai.ChatCompletion.create(
    model="any",
    messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)
```

### Родной API

```python
import requests

response = requests.post(
    "http://localhost:5000/api/v1/generate",
    json={
        "prompt": "Напишите рассказ о",
        "max_new_tokens": 200,
        "temperature": 0.7
    }
)
print(response.json()["results"][0]["text"])
```

## Расширения

### Установка расширений

```bash
cd /workspace/text-generation-webui/extensions

# Silero TTS (голос)
git clone https://github.com/oobabooga/text-generation-webui-extensions

# SuperBoogav2 (RAG/долговременная память)

# Уже включено, включите в UI
```

### Включить расширения

1. **Сессия** вкладка → **Расширения**
2. Отметьте флажки для нужных расширений
3. Нажмите **Применить и перезапустить**

### Популярные расширения

| Расширение        | Назначение                 |
| ----------------- | -------------------------- |
| silero\_tts       | Голосовой вывод            |
| whisper\_stt      | Голосовой ввод             |
| superbooga        | Вопрос-ответ по документам |
| sd\_api\_pictures | Генерация изображений      |
| мультимодальность | Понимание изображений      |

## Настройка производительности

### Настройки GGUF

```
n_gpu_layers: 35    # Слои на GPU (больше = быстрее)
n_ctx: 4096         # Длина контекста
n_batch: 512        # Размер пакета
threads: 8          # Потоки CPU
```

### Оптимизация памяти

Для ограниченной VRAM:

```bash
python server.py --listen --n-gpu-layers 20 --no-mmap
```

### Оптимизация скорости

```bash

# Используйте llama.cpp с cuBLAS
python server.py --listen --loader llama.cpp --n-gpu-layers 50 --threads 8
```

## Тонкая настройка (LoRA)

### Вкладка обучения

1. Перейдите на **Обучение** вкладка
2. Загрузить базовую модель
3. Загрузить датасет (формат JSON)
4. Настроить:
   * Ранг LoRA: 8-32
   * Скорость обучения: 1e-4
   * Эпохи: 3-5
5. Запустите обучение

### Формат датасета

```json
[
  {"instruction": "Суммируйте это:", "input": "Длинный текст...", "output": "Резюме..."},
  {"instruction": "Перевести на французский:", "input": "Hello", "output": "Bonjour"}
]
```

## Сохранение вашей работы

```bash

# Сохранить модели
rsync -avz /workspace/text-generation-webui/models/ backup-server:/models/

# Сохранить персонажей
rsync -avz /workspace/text-generation-webui/characters/ backup-server:/characters/

# Сохранить LoRA
rsync -avz /workspace/text-generation-webui/loras/ backup-server:/loras/
```

## Устранение неполадок

### Модель не загружается

* Проверьте использование VRAM: `nvidia-smi`
* Уменьшите `n_gpu_layers`
* Используйте меньшую квантизацию (Q4\_K\_M → Q4\_K\_S)

### Медленная генерация

* Увеличьте `n_gpu_layers`
* Используйте EXL2 вместо GGUF
* Включите `--no-mmap`

{% hint style="danger" %}
**Недостаточно памяти**
{% endhint %}

во время генерации - Уменьшите \`n\_ctx\` (длину контекста) - Используйте \`--n-gpu-layers 0\` для работы только на CPU - Попробуйте меньшую модель

## Оценка стоимости

Типичные ставки на маркетплейсе CLORE.AI (по состоянию на 2024):

| GPU       | Почасовая ставка | Дневная ставка | Сессия 4 часа |
| --------- | ---------------- | -------------- | ------------- |
| RTX 3060  | \~$0.03          | \~$0.70        | \~$0.12       |
| RTX 3090  | \~$0.06          | \~$1.50        | \~$0.25       |
| RTX 4090  | \~$0.10          | \~$2.30        | \~$0.40       |
| A100 40GB | \~$0.17          | \~$4.00        | \~$0.70       |
| A100 80GB | \~$0.25          | \~$6.00        | \~$1.00       |

*Цены варьируются в зависимости от провайдера и спроса. Проверьте* [*CLORE.AI Marketplace*](https://clore.ai/marketplace) *для текущих тарифов.*

**Экономьте деньги:**

* Используйте **Spot** рынок для гибких рабочих нагрузок (часто на 30–50% дешевле)
* Платите с помощью **CLORE** токенов
* Сравнивайте цены у разных провайдеров
