Candle: машинное обучение на Rust без Python

· 2 мин · BadRabbit

Через пару недель будет большой пост про Еву, а сегодня разберу движок, на котором она считает модели. Это Candle — фреймворк машинного обучения на Rust от Hugging Face. Опираюсь на README проекта и свой опыт.

Зачем ещё один фреймворк

У PyTorch нет проблем с обучением. Проблемы начинаются при развёртывании:

  • Python тяжёлый. Интерпретатор, зависимости, пакеты на гигабайты. В serverless-функции такое стартует медленно.
  • GIL и накладные расходы. Для инференса маленьких моделей они заметны.
  • Сложная сборка. PyTorch тянет за собой огромные бинарные библиотеки.

Цель Candle — убрать Python из инференса: маленькие бинарники, быстрый старт, развёртывание где угодно.

Что умеет

  • API, похожий на PyTorch, но на Rust: тензоры, операции, модули candle-nn.
  • Бэкенды: оптимизированный CPU, CUDA, Metal и даже WebAssembly, то есть модели можно запускать прямо в браузере.
  • Форматы весов: safetensors, npz, PyTorch и квантованные GGUF/GGML.
  • Готовые реализации популярных моделей: LLaMA, Mistral, Qwen, Gemma, Whisper, Stable Diffusion и десятки других в candle-examples.

Чем отличается от соседей

  • tch-rs — это обёртка над libtorch, то есть тот же PyTorch под капотом, и тянет его зависимости.
  • Burn — полноценный фреймворк на Rust с упором на обучение и абстракцию бэкендов.
  • Candle — минимализм и инференс. Меньше возможностей, но и меньше всего, что может сломаться.

Мой комментарий

Для Евы Candle оказался идеальным по трём причинам:

  1. Один язык во всём проекте. Ядро, IPC и инференс на Rust. Никакой сериализации между Python и Rust, общая память работает напрямую.
  2. Песочница. Rust-бинарник без интерпретатора проще изолировать в bwrap: ему не нужен доступ к site-packages, кешам pip и прочему.
  3. GGUF из коробки. Я загружаю квантованные Q4_K_M веса и по метаданным general.architecture выбираю, какую реализацию модели создать.

Минус тоже есть: новые архитектуры появляются в Candle позже, чем в PyTorch. Иногда реализацию приходится дописывать самому, но это отличный способ понять модель изнутри.