> For the complete documentation index, see [llms.txt](https://docs.clore.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.clore.ai/guides/guides_v2-ru/yazykovye-modeli/aphrodite-engine.md).

# Aphrodite Engine

Aphrodite Engine — это оптимизированный сервер вывода LLM, построенный поверх vLLM и специально адаптированный для сообщества творческого письма и ролевых игр. Он поддерживает широкий спектр GPU начиная с Pascal (серия GTX 1000), что делает его идеальным выбором для запуска языковых моделей на старых или бюджетных GPU-серверах CLORE.AI, где другие фреймворки не справляются. Aphrodite добавляет совместимые с Kobold API, сэмплинг Mirostat и продвинутые алгоритмы выборки текста, отсутствующие в основных фреймворках для сервинга.

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

## Требования к серверу

| Параметр | Минимум                    | Рекомендуется  |
| -------- | -------------------------- | -------------- |
| ОЗУ      | 16 ГБ                      | 32 ГБ+         |
| VRAM     | 6 ГБ                       | 16 ГБ+         |
| Диск     | 40 ГБ                      | 150 ГБ+        |
| GPU      | NVIDIA Pascal+ (GTX 1060+) | RTX 3090, A100 |

{% hint style="info" %}
Aphrodite Engine — один из немногих серверов LLM, поддерживающий GPU поколения Pascal (серия GTX 10xx). Это делает его идеальным для бюджетных серверов на CLORE.AI с более старыми видеокартами, у которых низкие цены аренды.
{% endhint %}

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

**Docker-образ:** `alpindale/aphrodite-engine:latest`

**Порты:** `22/tcp`, `2242/http`

**Переменные окружения:**

| Переменная        | Пример                               | Описание                            |
| ----------------- | ------------------------------------ | ----------------------------------- |
| `HF_TOKEN`        | `hf_xxx...`                          | Токен HuggingFace для gated-моделей |
| `APHRODITE_MODEL` | `mistralai/Mistral-7B-Instruct-v0.3` | Модель для загрузки                 |

## Пошаговая настройка

### 1. Арендуйте GPU-сервер на CLORE.AI

Широкая поддержка GPU в Aphrodite позволяет арендовать бюджетные серверы на [CLORE.AI Маркетплейс](https://clore.ai/marketplace):

* **Pascal (GTX 1060–1080 Ti)**: 6–11 ГБ видеопамяти — запускать небольшие модели 3B-7B с квантованием
* **Turing (серия RTX 2000)**: 8–24 ГБ видеопамяти — модели 7B-13B, лучшая производительность
* **Ampere (RTX 3000/A100)**: 24–80 ГБ видеопамяти — модели 30B-70B, на полной скорости
* **Ada (серия RTX 4000)**: 16–24 ГБ видеопамяти — лучшее соотношение производительность/цена

### 2. Подключитесь по SSH

```bash
ssh -p <PORT> root@<SERVER_IP>
```

### 3. Загрузите образ Aphrodite Engine

```bash
docker pull alpindale/aphrodite-engine:latest
```

### 4. Запустите Aphrodite Engine

**Базовый запуск с моделью 7B:**

```bash
docker run -d \
  --name aphrodite \
  --gpus all \
  --ipc host \
  -p 2242:2242 \
  -v /root/models:/root/.cache/huggingface \
  alpindale/aphrodite-engine:latest \
  python3 -m aphrodite.endpoints.openai.api_server \
    --model mistralai/Mistral-7B-Instruct-v0.3 \
    --host 0.0.0.0 \
    --port 2242 \
    --max-model-len 4096
```

**С HuggingFace-токеном (Llama 3):**

```bash
docker run -d \
  --name aphrodite \
  --gpus all \
  --ipc host \
  -p 2242:2242 \
  -v /root/models:/root/.cache/huggingface \
  -e HF_TOKEN=hf_your_token_here \
  alpindale/aphrodite-engine:latest \
  python3 -m aphrodite.endpoints.openai.api_server \
    --model meta-llama/Meta-Llama-3-8B-Instruct \
    --host 0.0.0.0 \
    --port 2242 \
    --dtype bfloat16 \
    --max-model-len 8192
```

**С квантованием GPTQ (для ограниченной видеопамяти):**

```bash
docker run -d \
  --name aphrodite \
  --gpus all \
  --ipc host \
  -p 2242:2242 \
  -v /root/models:/root/.cache/huggingface \
  alpindale/aphrodite-engine:latest \
  python3 -m aphrodite.endpoints.openai.api_server \
    --model TheBloke/Mistral-7B-Instruct-v0.2-GPTQ \
    --host 0.0.0.0 \
    --port 2242 \
    --quantization gptq \
    --max-model-len 4096
```

**С квантованием AWQ:**

```bash
docker run -d \
  --name aphrodite \
  --gpus all \
  --ipc host \
  -p 2242:2242 \
  -v /root/models:/root/.cache/huggingface \
  alpindale/aphrodite-engine:latest \
  python3 -m aphrodite.endpoints.openai.api_server \
    --model casperhansen/mistral-7b-instruct-v0.2-awq \
    --host 0.0.0.0 \
    --port 2242 \
    --quantization awq \
    --max-model-len 4096
```

**Запуск модели в формате GGUF (Aphrodite нативно поддерживает GGUF):**

```bash
# Сначала скачайте файл GGUF
docker exec -it aphrodite bash -c "
pip install huggingface_hub
python3 -c \"from huggingface_hub import hf_hub_download; hf_hub_download(
    repo_id='TheBloke/Mistral-7B-Instruct-v0.2-GGUF',
    filename='mistral-7b-instruct-v0.2.Q4_K_M.gguf',
    local_dir='/root/models/mistral-gguf'
)\"
"

# Затем запустите с GGUF
docker run -d \
  --name aphrodite \
  --gpus all \
  --ipc host \
  -p 2242:2242 \
  -v /root/models:/models \
  alpindale/aphrodite-engine:latest \
  python3 -m aphrodite.endpoints.openai.api_server \
    --model /models/mistral-gguf/mistral-7b-instruct-v0.2.Q4_K_M.gguf \
    --host 0.0.0.0 \
    --port 2242 \
    --tokenizer mistralai/Mistral-7B-Instruct-v0.2
```

### 5. Проверьте сервер

```bash
# Проверьте логи
docker logs -f aphrodite

# Проверка состояния
curl http://localhost:2242/health

# Список загруженных моделей
curl http://localhost:2242/v1/models
```

### 6. Доступ через HTTP‑прокси CLORE.AI

Панель заказов CLORE.AI предоставляет `http_pub` URL для порта 2242. Используйте его в ваших клиентских приложениях:

```
https://<order-id>-2242.clore.ai/v1
```

***

## Примеры использования

### Пример 1: Chat, совместимый с OpenAI

```bash
curl http://localhost:2242/v1/chat/completions \
  -X POST \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "mistralai/Mistral-7B-Instruct-v0.3",
    "messages": [
      {"role": "system", "content": "Вы — креативный писатель, специализирующийся на фэнтези."},
      {"role": "user", "content": "Начните короткий рассказ о драконе, который научился рисовать."}
    ],
    "max_tokens": 500,
    "temperature": 0.9,
    "top_p": 0.95
  }'
```

### Пример 2: Продвинутый сэмплинг с Mirostat

Aphrodite поддерживает сэмплинг Mirostat для более связного длинного текста:

```bash
curl http://localhost:2242/v1/completions \
  -X POST \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "mistralai/Mistral-7B-Instruct-v0.3",
    "prompt": "Однажды в киберпанковом городе,",
    "max_tokens": 400,
    "mirostat_mode": 2,
    "mirostat_tau": 5.0,
    "mirostat_eta": 0.1
  }'
```

### Пример 3: API, совместимое с Kobold

Aphrodite включает конечную точку, совместимую с Kobold, для использования с фронтендами на основе KoboldAI:

```bash
# Конечная точка генерации для Kobold
curl http://localhost:2242/api/v1/generate \
  -X POST \
  -H 'Content-Type: application/json' \
  -d '{
    "prompt": "Корабль вошёл в гиперпространство,",
    "max_length": 200,
    "temperature": 0.8,
    "top_p": 0.92,
    "rep_pen": 1.15
  }'
```

### Пример 4: Python-клиент с пользовательскими сэмплерами

```python
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:2242/v1",
    api_key="none",
)

# Творческое письмо с подобранными сэмплерами
response = client.chat.completions.create(
    model="mistralai/Mistral-7B-Instruct-v0.3",
    messages=[
        {
            "role": "user",
            "content": "Напишите стихотворение о тишине между звёздами.",
        }
    ],
    max_tokens=300,
    temperature=1.1,
    top_p=0.95,
    frequency_penalty=0.3,
    presence_penalty=0.2,
)

print(response.choices[0].message.content)
```

### Пример 5: Пакетные (batch) дописки

```python
import requests

BASE_URL = "http://localhost:2242"

prompts = [
    "Древний маг открыл свою книгу, и",
    "В неоновом переулке детектив заметил",
    "Последний ИИ на Земле сказал роботу:",
]

for prompt in prompts:
    response = requests.post(
        f"{BASE_URL}/v1/completions",
        json={
            "model": "mistralai/Mistral-7B-Instruct-v0.3",
            "prompt": prompt,
            "max_tokens": 150,
            "temperature": 0.85,
            "top_k": 50,
            "top_p": 0.95,
            "repetition_penalty": 1.1,
        },
    )
    result = response.json()
    print(f"Prompt: {prompt}")
    print(f"Continuation: {result['choices'][0]['text']}\n")
```

***

## Конфигурация

### Ключевые параметры запуска

| Параметр                   | По умолчанию    | Описание                                            |
| -------------------------- | --------------- | --------------------------------------------------- |
| `--model`                  | обязательно     | ID модели или локальный путь                        |
| `--host`                   | `127.0.0.1`     | Адрес привязки                                      |
| `--port`                   | `2242`          | Порт сервера                                        |
| `--dtype`                  | `auto`          | `float16`, `bfloat16`, `float32`                    |
| `--quantization`           | none            | `awq`, `gptq`, `squeezellm`, `fp8`                  |
| `--max-model-len`          | максимум модели | Переопределить макс. длину контекста                |
| `--gpu-memory-utilization` | `0.90`          | Доля видеопамяти GPU                                |
| `--tensor-parallel-size`   | `1`             | Количество GPU для тензорного параллелизма          |
| `--max-num-seqs`           | `256`           | Максимальное число параллельных последовательностей |
| `--trust-remote-code`      | false           | Разрешить пользовательский код модели               |
| `--api-keys`               | none            | API-ключи, разделённые запятыми, для аутентификации |
| `--served-model-name`      | имя модели      | Пользовательское имя для ответов API                |

### Добавление аутентификации по API-ключу

```bash
python3 -m aphrodite.endpoints.openai.api_server \
  --model mistralai/Mistral-7B-Instruct-v0.3 \
  --host 0.0.0.0 \
  --port 2242 \
  --api-keys "mysecretkey1,mysecretkey2"
```

Затем используйте `Authorization: Bearer mysecretkey1` в запросах.

### Загрузка локальных моделей

```bash
# Подмонтируйте каталог с моделью и укажите его
docker run -d \
  --name aphrodite \
  --gpus all \
  --ipc host \
  -p 2242:2242 \
  -v /path/to/your/model:/model \
  alpindale/aphrodite-engine:latest \
  python3 -m aphrodite.endpoints.openai.api_server \
    --model /model \
    --host 0.0.0.0 \
    --port 2242
```

***

## Советы по производительности

### 1. Выберите подходящее квантование для вашего GPU

| VRAM GPU | Модель 7B   | Модель 13B        | Модель 30B |
| -------- | ----------- | ----------------- | ---------- |
| 6 ГБ     | GPTQ/AWQ Q4 | ❌                 | ❌          |
| 8 ГБ     | GPTQ Q4     | GPTQ Q4 (плотный) | ❌          |
| 12 ГБ    | Float16     | GPTQ Q4           | ❌          |
| 16 ГБ    | Float16     | Float16           | GPTQ Q4    |
| 24 ГБ    | Float16     | Float16           | GPTQ Q4    |
| 48 ГБ    | Float16     | Float16           | Float16    |

### 2. Настройте использование видеопамяти GPU

```bash
--gpu-memory-utilization 0.93  # Выжмите больше KV-кеша
```

Начните с меньших значений и увеличивайте, если не возникает ошибок OOM.

### 3. Используйте bfloat16 на GPU Ampere+

```bash
--dtype bfloat16
```

Лучшая численная стабильность, чем у float16, та же скорость.

### 4. Оптимизация для ролевых игр/творческого письма

Эти сэмплеры хорошо подходят для повествовательного текста:

```json
{
  "temperature": 0.85,
  "top_p": 0.92,
  "top_k": 40,
  "repetition_penalty": 1.12,
  "mirostat_mode": 2,
  "mirostat_tau": 5.0
}
```

### 5. Советы для Pascal GPU (GTX 10xx)

Для Pascal GPU избегайте Flash Attention (не поддерживается):

```bash
--dtype float16  # float32, если появляются ошибки NaN
--max-model-len 2048  # Уменьшите контекст для экономии памяти
```

***

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

### Проблема: "CUDA capability sm\_6x not supported"

GPU Pascal требуют особой обработки. Используйте:

```bash
--dtype float16
```

Если всё ещё не работает, проверьте, поддерживает ли версия образа Pascal:

```bash
docker pull alpindale/aphrodite-engine:v0.5.4  # Попробуйте конкретную версию
```

### Проблема: "out of memory" на маленьких GPU

```bash
--gpu-memory-utilization 0.85
--max-model-len 2048
--quantization gptq  # Или awq
```

### Проблема: Медленная генерация токенов

* Проверьте, действительно ли используется GPU: `nvidia-smi` внутри контейнера
* Включите большие размеры батчей: `--max-num-seqs 64`
* Используйте AWQ вместо GPTQ (быстрее инференс)

### Проблема: Модель не найдена / ошибки 404

Всегда проверяйте, что имя модели совпадает точно:

```bash
curl http://localhost:2242/v1/models
```

Используйте точное имя модели из ответа в ваших запросах.

### Проблема: Повторяющийся вывод

Добавьте штраф за повторение:

```json
{
  "repetition_penalty": 1.15,
  "frequency_penalty": 0.3
}
```

### Проблема: Docker-контейнер завершается без вывода

```bash
docker logs aphrodite 2>&1 | tail -100
# Частые причины: недостаток VRAM, неверный путь к модели
```

***

## Ссылки

* [GitHub](https://github.com/PygmalionAI/aphrodite-engine)
* [Документация](https://aphrodite.pygmalion.chat)
* [Docker Hub](https://hub.docker.com/r/alpindale/aphrodite-engine)
* [Поддерживаемые модели](https://github.com/PygmalionAI/aphrodite-engine?tab=readme-ov-file#supported-models)
* [CLORE.AI Маркетплейс](https://clore.ai/marketplace)

***

## Рекомендации Clore.ai по GPU

| Сценарий использования  | Рекомендуемый GPU | Примерная стоимость на Clore.ai |
| ----------------------- | ----------------- | ------------------------------- |
| Разработка/Тестирование | RTX 3090 (24GB)   | \~$0.12/gpu/hr                  |
| Продакшен (7B–13B)      | RTX 4090 (24GB)   | \~$0.70/gpu/hr                  |
| Крупные модели (70B+)   | A100 80GB / H100  | \~$1.20/gpu/hr                  |

> 💡 Все примеры в этом руководстве можно развернуть на [Clore.ai](https://clore.ai/marketplace) GPU-серверах. Просматривайте доступные GPU и арендуйте по часам — без обязательств, с полным root-доступом.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.clore.ai/guides/guides_v2-ru/yazykovye-modeli/aphrodite-engine.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
