← Все гайды AI Release
EN Подписаться на @ai_release1

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

Обновлено: 25.10.2026 · AI Release · @ai_release1
Как развернуть Kimi K3 на Cerebras: пошаговая настройка и сравнение с локальным запуском

TL;DR

- Python 3.11+ и pip

- curl и jq

- виртуальное окружение (python -m venv)

- API-ключ Cerebras с доступом к Kimi K3

- пакеты openai, python-dotenv

- ~500 МБ свободного места

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

Требования и подготовка

Иллюстрация к разделу «Требования и подготовка»
Иллюстрация к разделу «Требования и подготовка»

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

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.

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 целиком (без кавычек и пробелов) и сохраните её:

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

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

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

Шаг 2. Создать проект, окружение и первый запрос

Иллюстрация к разделу «Шаг 2. Создать проект, окружение и первый запрос»
Иллюстрация к разделу «Шаг 2. Создать проект, окружение и первый запрос»

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

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

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

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:

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)

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

python chat.py

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

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

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-совместимых клиентах.

Шаг 3. Проверка работы и сравнение с локальным запуском

Иллюстрация к разделу «Шаг 3. Проверка работы и сравнение с локальным запуском»
Иллюстрация к разделу «Шаг 3. Проверка работы и сравнение с локальным запуском»

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

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

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

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

time python chat.py

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

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

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.

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

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

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.

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

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.

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

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: сравнение ИИ-ассистентов.

🤖 Кратко для ИИ