Перейти к содержанию

mlango и альтернативы

Инструменты для этого у вас почти наверняка уже есть. Эта страница нужна, чтобы решить: заменяет ли mlango что-то из них, стоит рядом или вообще не подходит под вашу задачу.

Отличие в одном предложении

Большинство ML-инструментов решают одну задачу: трекинг, оркестрацию, версионирование данных, сервинг или агентов. Ставка mlango в том, что проблема — это шов между ними, а закрывается шов общей декларацией.

class Sentiment(Model):
    C = fields.FloatField(default=1.0, tunable=True)

    class Meta:
        dataset = Reviews
        trainer = "sklearn"

Это тело класса одновременно является: страницей в админке, эндпоинтом POST /api/predict/ с OpenAPI-схемой, строкой в миграции, целью для manage.py train, пространством поиска для manage.py sweep и версионируемой записью в реестре моделей. Вы ничего из этого не связывали руками. Это и есть приём Django — объявил один раз, а всё универсальное читает объявление, — применённый к машинному обучению.

Второе отличие: агенты — полноправное семейство рядом с моделями. LLM-агент и градиентный бустинг — оба объявленные классы с _meta, оба пишутся в один метастор, оба видны в одной админке, оба оцениваются одним Eval. Почти каждый инструмент в этой области — либо ML-инструмент, либо LLM-инструмент. А большинство команд в 2026 делают и то и другое.

Где на самом деле находится каждый инструмент

Инструмент Что это Пересечение с mlango
MLflow Трекинг экспериментов, реестр моделей, упаковка Реальное пересечение по трекингу и реестру. Нет структуры проекта, нет админки над вашими данными, нет декларативных классов, нет агентов
Weights & Biases Хостовый трекинг с отличным UI Пересекается по трекингу. Это сервис, а не фреймворк; он не говорит, как разложить проект
Kedro Структура проекта и пайплайны для data science Ближе всех по духу. Мыслит узлами и пайплайнами, а не декларативными классами; нет админки, нет сервинга, нет агентов
ZenML / Metaflow / Flyte Оркестрация пайплайнов, обычно cloud-first Пересечение небольшое. Они гоняют шаги по инфраструктуре; mlango объявляет объекты и по умолчанию работает локально
Airflow / Dagster / Prefect Общая оркестрация и расписания Пересечения нет. Они планируют работу; mlango — это работа, которую планируют
DVC Версионирование данных и моделей поверх git Дополняет. mlango версионирует данные по хешу содержимого в своё хранилище; DVC — в модели git
LangChain / LlamaIndex Разработка LLM-приложений Пересекается по циклу агента и инструментам. У них нет обучения, версионирования датасетов, реестра моделей и админки
FastAPI Веб-фреймворк Нет — mlango его использует. Ваши эндпоинты выводятся из деклараций, а не пишутся

Честные ответы на очевидные вопросы

«Почему не просто MLflow?»

Если единственное, чего вам не хватает, — трекинг, то MLflow проще внедрить, и экосистема у него несопоставимо больше. Берите его.

На mlango стоит смотреть, когда дело не в трекинге: когда каждый проект в команде разложен по-своему, никто не может сказать, какая версия данных дала цифру, сервинг — это отдельный написанный руками сервис, а работа с LLM живёт в репозитории, у которого нет ничего общего с ML-частью. Это структурные проблемы, а библиотека трекинга структурных проблем не решает.

Одно другому не мешает: логировать в MLflow из колбэка никто не запрещает.

«Почему не Kedro?»

Kedro — самое похожее здесь, и если вам нравятся пайплайны из узлов, это хороший ответ. Разница в том, что является единицей объявления. В Kedro вы объявляете пайплайн; в mlango — объект: датасет, модель, агента, оценку, — а пайплайн, страницу админки, API и миграцию фреймворк выводит из него.

Практическое следствие: mlango даёт работающую админку и документированный API, не написав ни того ни другого, а Kedro этого и не ставит целью. Взамен модель пайплайнов Kedro выразительнее для сложной многошаговой инженерии данных — mlango сознательно не пытается ею быть.

«Почему не просто scikit-learn и пара скриптов?»

Для одной модели, которую сопровождает один человек, скрипты — это нормально, а фреймворк — накладные расходы. Цена скриптов проявляется на второй модели, на втором человеке и в первый раз, когда спрашивают, какие данные дали цифру в презентации.

«Обязательно ли использовать агентскую половину?»

Нет. Четыре семейства независимы. Проект, объявляющий только датасеты и модели, никогда не импортирует агентский код, а соответствующие extras не ставятся, пока вы их не попросите.

«А ML-половину обязательно?»

Тоже нет. mlango — вполне разумный способ собрать агентское приложение само по себе: схемы инструментов из аннотаций типов, трейсинг в админке, бэкенды памяти, декларативные оценки качества агента и SSE-эндпоинт. А если однажды обучите модель — она окажется в той же системе.

Когда mlango — неправильный выбор

Пишем прямо, потому что фреймворк, заявляющий, что подходит для всего, не подходит ни для чего:

  • Нужно распределённое обучение на многих машинах. mlango ведёт цикл обучения; он не планировщик и ничего не знает про кластеры. Возьмите Ray или облачный сервис обучения, а mlango пусть при желании запишет результат.
  • Ваша задача — большой DAG инженерии данных. Это территория Dagster или Airflow. QuerySet в mlango — для данных, которые читает модель, а не для пайплайна над хранилищем.
  • Нужна зрелая экосистема плагинов уже сегодня. mlango — версия 0.2.0. У MLflow за плечами десятилетие и сотни интеграций. Этот разрыв реален, и закрывать его долго.
  • Нужен хостовый дашборд для небольшой команды. С W&B вы будете счастливы быстрее.
  • Вам и так продуктивно. Если текущая связка не болит, фреймворк — это затраты без выгоды.

Что взято у Django намеренно

Стоит назвать: это объясняет несколько решений, которые иначе выглядят произвольными.

Django mlango Зачем
models.py datasets.py, models.py, agents.py, evals.py Находятся автоматически в каждом приложении — объявить достаточно
ModelAdmin ObjectAdmin Всё объявленное появляется без регистрации; регистрируют, чтобы настроить вид
Миграции То же, но для схем датасетов Изменение схемы полугодовой давности должно читаться сегодня
manage.py То же, расширяется приложениями Команды проекта стоят рядом с командами фреймворка
settings.py То же, но неизвестная настройка — ошибка Опечатка должна падать, а не молча ничего не делать
Сторонние приложения Пакеты mlango-* Экосистема и есть цель; см. Участие

И что намеренно не взято: здесь нет ORM. Dataset описывает записи, которые лежат в файлах, хранилище или на Hugging Face — mlango не хочет владеть вашими данными, ему достаточно знать их форму.