> 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 добавляет API, совместимые с Kobold, сэмплирование 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 со старыми GPU, у которых низкая стоимость аренды.
{% endhint %}

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

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

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

**Переменные среды:**

| Переменная        | Пример                               | Описание                                               |
| ----------------- | ------------------------------------ | ------------------------------------------------------ |
| `HF_TOKEN`        | `hf_xxx...`                          | Токен Hugging Face для моделей с ограниченным доступом |
| `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 ГБ VRAM — запускайте небольшие модели 3B–7B с квантизацией
* **Turing (серия RTX 2000)**: 8–24 ГБ VRAM — модели 7B–13B, лучшая производительность
* **Ampere (RTX 3000/A100)**: 24–80 ГБ VRAM — модели 30B–70B, полная скорость
* **Ada (серия RTX 4000)**: 16–24 ГБ VRAM — лучшее соотношение производительности и стоимости

### 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
```

**С токеном Hugging Face (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 (при ограниченном объёме VRAM):**

```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: чат, совместимый с 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: Пакетные завершения

```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}")
    print(f"Продолжение: {result['choices'][0]['text']}\n")
```

***

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

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

| Параметр                   | По умолчанию    | Описание                                             |
| -------------------------- | --------------- | ---------------------------------------------------- |
| `--model`                  | обязательно     | ID модели или локальный путь                         |
| `--host`                   | `127.0.0.1`     | Адрес привязки                                       |
| `--port`                   | `2242`          | Порт сервера                                         |
| `--dtype`                  | `авто`          | `float16`, `bfloat16`, `float32`                     |
| `--quantization`           | нет             | `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`               | нет             | 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. Выберите подходящую квантизацию для вашей видеокарты

| 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. Советы для GPU Pascal (GTX 10xx)

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

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

***

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

### Проблема: "CUDA capability sm\_6x не поддерживается"

Для 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)

***

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

| Сценарий использования  | Рекомендуемый GPU | Оценочная стоимость на Clore.ai |
| ----------------------- | ----------------- | ------------------------------- |
| Разработка/тестирование | RTX 3090 (24 ГБ)  | $0.07–0.21/гпу/ч                |
| Продакшн (7B–13B)       | RTX 4090 (24 ГБ)  | $0.14–0.42/гпу/ч                |
| Крупные модели (70B+)   | A100 80GB / H100  | \~$1.04/GPU/ч                   |

> 💡 Все примеры в этом руководстве можно развернуть на [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.
