# Как развернуть Kimi K3 на Cerebras: пошаговая настройка и сравнение с локальным запуском

> AI Release · @ai_release1 · https://ai-release.org/guides/kak-razvernut-kimi-k3-na-cerebras-poshagovaya-nastroyka.html

## TL;DR

- **Время выполнения:** 45 минут (при уже созданном аккаунте Cerebras)
- **Уровень сложности:** Intermediate
- **Понадобится:**
  - Python 3.11+ и `pip`
  - `curl` и `jq`
  - виртуальное окружение (`python -m venv`)
  - API-ключ Cerebras с доступом к Kimi K3
  - пакеты `openai`, `python-dotenv`
  - ~500 МБ свободного места

Cerebras — облачный провайдер инференса: он выполняет запросы к модели на своих ускорителях, а вы обращаетесь к нему по HTTP. Точные идентификаторы моделей, лимиты и цены в этом гайде не фиксируются — они меняются, сверьтесь с документацией Cerebras и Moonshot в момент настройки.

## Требования и подготовка
![Иллюстрация к разделу «Требования и подготовка»](https://ai-release.org/guides/img/kak-razvernut-kimi-k3-na-cerebras-poshagovaya-nastroyka-ru-1.jpg?v=1792962271)


- **ОС:** Linux (Ubuntu 22.04/24.04), macOS 13+, Windows 11 через WSL2.
- **Python 3.11+** — проверьте `python3 --version`.
- **curl и jq** — нужны для проверки API без кода.
- **Аккаунт Cerebras и API-ключ** — создаётся в консоли провайдера; ключ показывается один раз, сохраните его сразу.
- **Права:** запись в домашний каталог (создадим папку проекта).
- **Место на диске:** ~500 МБ (venv + зависимости).
- **Сеть:** исходящий HTTPS до эндпоинта провайдера, без корпоративного прокси-фильтра.

Проверка инструментов одной командой:

```bash
python3 --version && curl --version | head -n1 && jq --version
```

**Пример:** ожидаемый вывод — три строки, например `Python 3.11.9`, `curl 8.5.0`, `jq-1.7.1`. Если `jq` не найден: `sudo apt install jq` (Debian/Ubuntu) или `brew install jq` (macOS).

**Зачем:** без `jq` вы будете читать сырой JSON глазами, а без Python 3.11 не встанет актуальная версия SDK. Проверка на этом этапе отсекает половину будущих ошибок.

## Шаг 1. Получить ключ и убедиться, что модель доступна

**Что сделать:** создать API-ключ в консоли Cerebras, положить его в переменную окружения и запросить список доступных моделей.

**Зачем:** пока вы не увидели идентификатор Kimi K3 в ответе `GET /models`, нет смысла писать код — все запросы упадут на 401 (неверный ключ) или 404 (неверный `model`).

**Как проверить:** команда ниже возвращает JSON со списком моделей; в нём должна быть строка с Kimi K3.

```bash
export CEREBRAS_API_KEY="csk-..."          # значение из консоли провайдера
export CEREBRAS_BASE_URL="https://<эндпоинт-из-документации>/v1"

curl -s "$CEREBRAS_BASE_URL/models" \
  -H "Authorization: Bearer $CEREBRAS_API_KEY" | jq -r '.data[].id'
```

**Пример:** вывод вида

```
<model-id-1>
<model-id-2>
```

Скопируйте строку с Kimi K3 целиком (без кавычек и пробелов) и сохраните её:

```bash
export MODEL_ID="<идентификатор-из-вывода-выше>"
```

Почему это работает: `/models` — стандартный эндпоинт OpenAI-совместимого API, он отдаёт список `id`, которые аккаунт имеет право вызывать. Если список пуст или запрос вернул 401 — проблема в ключе, а не в модели.

Сразу зафиксируйте ключ в файле `.env` (см. Шаг 2) и не коммитьте его в git.

## Шаг 2. Создать проект, окружение и первый запрос
![Иллюстрация к разделу «Шаг 2. Создать проект, окружение и первый запрос»](https://ai-release.org/guides/img/kak-razvernut-kimi-k3-na-cerebras-poshagovaya-nastroyka-ru-2.jpg?v=1792962277)


**Что сделать:** развернуть рабочий каталог, поставить SDK и отправить первый диалоговый запрос к модели.

**Зачем:** `openai` — универсальный Python-клиент; он работает с любым OpenAI-совместимым эндпоинтом, если правильно указать `base_url`. Это избавляет от ручной сборки HTTP-запросов.

**Как проверить:** скрипт печатает ответ модели и строку с расходом токенов.

```bash
mkdir -p ~/kimi-cerebras && cd ~/kimi-cerebras
python3 -m venv .venv
source .venv/bin/activate          # Windows/WSL: source .venv/bin/activate
pip install --upgrade pip
pip install openai python-dotenv
```

Создайте `.env` в каталоге проекта:

```
CEREBRAS_API_KEY=csk-...
CEREBRAS_BASE_URL=https://<эндпоинт-из-документации>/v1
MODEL_ID=<идентификатор-из-шага-1>
```

И `.gitignore`, чтобы ключ не утёк в репозиторий:

```
.env
.venv/
```

Файл `chat.py`:

```python
import os
from dotenv import load_dotenv
from openai import OpenAI

load_dotenv()

client = OpenAI(
    base_url=os.environ["CEREBRAS_BASE_URL"],
    api_key=os.environ["CEREBRAS_API_KEY"],
)

resp = client.chat.completions.create(
    model=os.environ["MODEL_ID"],
    messages=[
        {"role": "system", "content": "Отвечай кратко, только по делу."},
        {"role": "user", "content": "Перечисли три шага проверки API-подключения."},
    ],
    temperature=0.2,
    max_tokens=256,
)

print(resp.choices[0].message.content)
print("tokens:", resp.usage.prompt_tokens, "+", resp.usage.completion_tokens)
```

Запуск и проверка:

```bash
python chat.py
```

**Пример:** на экране — нумерованный список из трёх пунктов и строка `tokens: 42 + 118` (числа будут другими). Если видите текст ответа и строку `tokens:` — связка «ключ → эндпоинт → модель» собрана верно.

Тот же запрос без Python, для быстрой диагностики:

```bash
curl -s "$CEREBRAS_BASE_URL/chat/completions" \
  -H "Authorization: Bearer $CEREBRAS_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"model\":\"$MODEL_ID\",\"messages\":[{\"role\":\"user\",\"content\":\"ping\"}],\"max_tokens\":32}"
```

Ожидаемый результат — JSON с полем `"choices"` и непустым `"message": {"content": ...}`, а также блок `"usage"`.

Почему это работает: путь `/chat/completions` и схема сообщений `role`/`content` совпадают со спецификацией OpenAI, поэтому один и тот же код подходит для разных провайдеров — меняется только `base_url` и `model`. Если вы позже захотите работать с Kimi напрямую, порядок получения ключей и разбор цен описан в гайде [Как подключить Kimi K3.1 Pro через API: ключи, цены и настройка в OpenAI-совместимых клиентах](https://ai-release.org/guides/kak-podklyuchit-kimi-k3-1-pro-cherez-api-klyuchi-tseny.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

## Шаг 3. Проверка работы и сравнение с локальным запуском
![Иллюстрация к разделу «Шаг 3. Проверка работы и сравнение с локальным запуском»](https://ai-release.org/guides/img/kak-razvernut-kimi-k3-na-cerebras-poshagovaya-nastroyka-ru-3.jpg?v=1792962282)


**Что сделать:** прогнать приёмочный чек-лист, замерить время ответа и сравнить облачный вариант с локальным запуском той же модели.

**Зачем:** «ответ пришёл» и «сервис готов к работе» — разные вещи. Чек-лист фиксирует, что проверены авторизация, выбор модели и обработка ошибок.

**Как проверить:** все пункты ниже должны быть отмечены.

- [ ] `GET /models` возвращает 200 и содержит нужный `id`
- [ ] `python chat.py` печатает ответ и строку `tokens: N + M`
- [ ] в выводе нет кодов 401, 404, 429
- [ ] время ответа зафиксировано в логе
- [ ] ключ лежит в `.env`, а `.env` — в `.gitignore`

Замер времени делайте сами, на своём канале:

```bash
time python chat.py
```

**Пример:** `real 0m2.431s`. Готовых цифр по задержкам в этом гайде нет — они зависят от региона, размера промпта и текущей загрузки провайдера; сравнивайте только свои замеры между двумя запусками.

Локальный запуск — это когда модель крутится на вашем железе, а не у провайдера. Минимальная проверка локального рантайма (пример на Ollama — локальный сервер моделей с OpenAI-совместимым эндпоинтом на порту 11434):

```bash
curl -s http://localhost:11434/v1/models | jq -r '.data[].id'
```

Если команда вернула список — рантайм жив. Есть ли в нём веса Kimi K3 и хватает ли вам VRAM (видеопамяти) — сверьтесь с карточкой модели и документацией рантайма: требования к памяти там указаны для конкретной квантизации.

| Параметр | Cerebras (облако) | Локальный запуск (Ollama / llama.cpp) |
|---|---|---|
| Железо | не нужно, считает провайдер | GPU/CPU с достаточной памятью — сверьтесь с карточкой модели |
| Что нужно для старта | API-ключ и сеть | файлы весов на диске |
| Протокол | HTTP, OpenAI-совместимый | HTTP, OpenAI-совместимый (локальный порт) |
| Стоимость | по тарифу провайдера — сверьтесь с прайсом | железо и электричество |
| Данные | уходят провайдеру | не покидают машину |
| Масштабирование | ограничено лимитами аккаунта — сверьтесь с документацией | ограничено вашим железом |

Правило выбора: облако — когда нужен результат сегодня и нет GPU; локально — когда данные нельзя выпускать за периметр. Пошаговая настройка приватной автоматизации на локальной модели разобрана в гайде [Как подключить n8n к локальной языковой модели: пошаговая настройка приватной автоматизации через Ollama](https://ai-release.org/guides/kak-podklyuchit-n8n-k-lokalnoy-yazykovoy-modeli-poshago.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

## Возможные проблемы и решения

**Проблема. Запрос падает сразу после запуска, ответа модели нет**

- Ошибка: `openai.AuthenticationError: Error code: 401 - Unauthorized`
- Причина: ключ не подхватился. Типичные варианты — `.env` лежит не в каталоге запуска, в значении остались кавычки или пробел, ключ отозван, либо `export` сделан в другом терминале.
- Решение: проверьте, что переменная видна процессу, и сравните первые символы:

```bash
cd ~/kimi-cerebras && source .venv/bin/activate
python -c "import os; from dotenv import load_dotenv; load_dotenv(); print(os.environ['CEREBRAS_API_KEY'][:6])"
```

Если команда падает с `KeyError` — файла `.env` нет или в нём опечатка в имени переменной. Если печатает не те символы — пересоздайте ключ в консоли и обновите `.env`.

**Проблема. Ключ верный, но модель не находится**

- Ошибка: `openai.NotFoundError: Error code: 404 - model not found`
- Причина: в `MODEL_ID` попало неполное имя, имя другой модели или лишние пробелы при копировании из списка.
- Решение: возьмите идентификатор заново и подставьте без ручного редактирования:

```bash
curl -s "$CEREBRAS_BASE_URL/models" -H "Authorization: Bearer $CEREBRAS_API_KEY" | jq -r '.data[].id'
MODEL_ID="$(curl -s "$CEREBRAS_BASE_URL/models" -H "Authorization: Bearer $CEREBRAS_API_KEY" | jq -r '.data[].id' | grep -i kimi | head -n1)"
echo "$MODEL_ID"
```

Затем пропишите это значение в `.env` и перезапустите `python chat.py`.

**Проблема. Скрипт работает, но под нагрузкой начинает падать**

- Ошибка: `openai.RateLimitError: Error code: 429 - rate limit exceeded`
- Причина: превышен лимит запросов или токенов на аккаунте; лимиты зависят от тарифа — сверьтесь с документацией.
- Решение: добавьте повтор с нарастающей паузой вместо мгновенного ретрая:

```python
import time
from openai import RateLimitError

for attempt in range(5):
    try:
        resp = client.chat.completions.create(
            model=os.environ["MODEL_ID"],
            messages=[{"role": "user", "content": "ping"}],
            max_tokens=32,
        )
        break
    except RateLimitError:
        time.sleep(2 ** attempt)   # 1s, 2s, 4s, 8s
```

## Резюме и следующие шаги

Вы получили рабочий канал «ваш код → OpenAI-совместимый эндпоинт Cerebras → Kimi K3» и чек-лист, который подтверждает его работоспособность. Дальше перенесите `chat.py` в свой сервис, вынесите ключ в секрет-хранилище и сравните свои замеры с локальным запуском по таблице из Шага 3.

## FAQ

**Нужна ли видеокарта, чтобы работать с Kimi K3 через Cerebras?**
Нет. Вычисления идут на стороне провайдера, у вас достаточно Python и сетевого доступа. Видеокарта нужна только для локального варианта запуска.

**Чем облачный запуск отличается от локального на практике?**
Облако — это API-ключ и HTTP-запросы, локально — файлы весов и ваш собственный рантайм. Данные в облачном варианте уходят провайдеру, в локальном остаются на машине.

**Подойдёт ли этот код для других OpenAI-совместимых клиентов и библиотек?**
Да, если клиент умеет задавать `base_url`. Меняются только адрес эндпоинта и идентификатор модели, схема сообщений остаётся той же.

**Сколько стоят запросы и какие у аккаунта лимиты?**
Тарифы и лимиты задаёт провайдер и меняет их без предупреждения — сверьтесь с прайсом и разделом ограничений в документации Cerebras. Сравнить модели по возможностям и стоимости можно в обзоре [ChatGPT, Claude, Gemini, DeepSeek: сравнение ИИ-ассистентов](https://ai-release.org/guides/sravnenie-ii-assistentov.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).
