Открытый код · Python · MIT и Apache-2.0

Фреймворки и инструменты для машинного обучения, LLM-агентов и операционных решений.

Слой между результатом исследования и тем, что команда может запустить: структура проекта, трекинг, интерфейсы и тесты, которые удерживают цифру честной через полгода после замера.

Пять библиотек, бесплатный курс и открытые разборы. С 2026 года.

Проекты

Что мы делаем

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

praxis

Apache-2.0

Юридический ассистент, цитаты которого проверены, а не заявлены. Гибридный поиск с переранжированием кросс-энкодером и NLI-модель, которая сверяет, что норма подтверждает утверждение. Ответ по умолчанию — текст закона, галлюцинировать он не может.

$ docker compose up app

mlango

MIT

Философия Django, применённая к машинному обучению. Вы объявляете датасеты, модели, агентов и оценки; одно тело класса становится страницей админки, документированным эндпоинтом, миграцией и целью в CLI одновременно.

$ pip install "mlango[sklearn]"

glia

MIT

Агентный цикл, который читается за один вечер. Каждый вызов модели, вызов инструмента и переход состояния — обычный объект, который можно записать, снять снимком и воспроизвести. Ядро не импортирует ничего вне стандартной библиотеки.

$ pip install glia-agents

Обучение с подкреплением для решений, у которых есть функция издержек: цены, запасы, энергетика, очереди, цепочки поставок. Каждая прикладная среда идёт вместе с классической базовой линией из исследования операций.

$ pip install decisionrl

stadion

MIT

Полигон, где агент оценивается против точного оптимума. Шесть операционных решений, у каждого рядом настроенный классический метод и посчитанный оптимум, а на разности — бутстрап-интервал.

$ pip install stadion-rl

Стек

На чём это построено и почему

Список короткий намеренно. Каждая зависимость — это то, что читателю придётся поставить, изучить и поддерживать, поэтому каждая здесь оправдывает себя больше чем в одном проекте.

Python

3.9 – 3.13

Типизировано насквозь, проверяется mypy и ruff в CI. Нижние границы версий говорят, с чем читатель может прийти, а не на чём гоняется CI: поднять их — значит закрыть дверь, ничего при этом не проверив.

PyTorch

decisionrl

Все алгоритмы decisionrl. Целевая платформа по умолчанию — CPU: прикладные среды достаточно малы, чтобы читатель без GPU воспроизвёл цифры из документации. Ради этого их и публикуют.

FastAPI · NumPy

praxis

Одно API-ядро обслуживает всех клиентов. Плотный поиск — умножение матрицы на вектор по векторам в памяти с кэшем на диск, плюс запасной путь на чистой стандартной библиотеке, чтобы офлайн-образ и CI работали вообще без NumPy. Индекс на Postgres с pgvector спроектирован, но не подключён: схема в репозитории есть, ретривера нет.

Docker

praxis

Образ ставит extra api, поднимает офлайн-режим и несёт корпус внутри, так что docker compose up app работает без ключей, GPU и обращений наружу. Читатель, который не смог запустить, ничего проверить не сможет.

GitHub Actions

везде

Linux, macOS и Windows на каждый push, с одной агрегирующей проверкой для защиты ветки. Релизы публикуются через Trusted Publishing, а десктопные бинарники несут подписанную аттестацию происхождения.

MkDocs

документация

Сборка с --strict, которая падает на сломанной внутренней ссылке или странице вне навигации. Ни веб-шрифтов, ни аналитики ни на одном из сайтов, включая этот.

Замеры

Цифры с условиями, при которых они получены

Здесь нет логотипов клиентов и нет кейсов. Открытая организация может показать вместо них свои замеры и команды, которыми они воспроизводятся.

Запас между настроенным классическим методом и посчитанным оптимумом в stadion, с 95% бутстрап-интервалом на парной разности. Замер на 40 инстансах × 20 эпизодов; воспроизводится командой stadion run <task> --agent classical --instances 40 --episodes 20.
ЗадачаЗапас95% интервал
inventory+0.4%[+0.561, +1.031]
joint-pricing+4.3%[+3.794, +5.656]
pricing+6.2%[+1.265, +1.761]
queueing+16.9%[+3.418, +3.988]
supply-chain+17.3%[+5.505, +7.493]
energy+26.6%[+4.221, +4.690]

Разброс здесь и есть содержание. Там, где учебный ответ уже почти оптимален, выигрывать нечего; там, где он не умеет планировать вперёд, на столе остаётся четверть ценности. Бенчмарк, у которого все задачи оставляют щедрый запас, отобран под проблемы, на которых стандартный метод плох.

Алгоритмов
32В decisionrl, на 24 средах — девять из них прикладные, а не синтетические.
Обязательных зависимостей
0Ядро glia не импортирует ничего вне стандартной библиотеки. Провайдеры и расширения подключаются явно.
Покрытие строк
84%decisionrl, замер pytest-cov по быстрому набору в CI. Ниже 80% сборка падает, а не сообщает цифру.
Поиск, recall@5
0.92praxis, на золотом наборе по полному корпусу, отслеживается от запуска к запуску. MRR 0.94.

Разборы и обучение

Написано так, чтобы это можно было проверить

Статья сообщает, что она нашла. Разбор пишет, что она показала — это меньше, — и отмечает расстояние между первым и вторым.

·research·draft

Дофаминовые нейроны и ошибка предсказания награды

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

neurosciencereinforcement-learningdopamine

Открытое собрание·CC BY 4.0

research — открытые разборы статей

Машинное обучение, обучение с подкреплением, нейронауки и методы проверки утверждений. Каждый разбор объявляет источники, и CI отклоняет тот, который этого не делает.

Бесплатный курс·27 модулей·русский·английский

lemma — дорога в ML, DL и RL

От арифметики среднего до воспроизведения свежей статьи. Без регистрации и без «первый модуль бесплатно». Модуль первый — про базовые линии и доверительные интервалы, ещё до всякого машинного обучения: центральный навык здесь — проверить утверждение, а не запустить обучение.

Метод

Пять правил, которым подчиняется каждый репозиторий

Это критерии ревью, а не пожелания. Pull request, который нарушает одно из них, получает комментарии.

01

Ошибки учат

Сообщение читают в худший возможный момент и без открытого исходника. Оно должно сказать, что пошло не так и что делать дальше, и перечислить альтернативы, когда они есть.

02

Тест называется по гарантии, которую защищает

test_assignment_is_stable_when_rows_are_added, а не test_split. Тест, название которого не переживает чтения вслух, ничего не документирует.

03

Проверка важнее утверждения

Зелёный пайплайн на одной машине — не доказательство. Каждое публикуемое утверждение измеряется на том запуске, который описывает, а цифры в README закреплены тестами, потому что проза тихо портится, а падающий тест — нет.

04

Комментарий объясняет почему

Код уже говорит, что он делает. Комментарий нужен для ограничения, которого читатель не видит.

05

Никакого скрытого потока управления

Если фреймворк делает что-то за вас, должна быть возможность найти строку, где это происходит.

Работа вместе

Условия, в одном месте

Лицензии
mlango, glia, decisionrl и stadion — MIT. praxis — Apache-2.0. Текст курса и разборов — CC BY 4.0, код в них — MIT. Коммерческое использование разрешено всеми.
Коммерческие запросы
Интеграция, нужная вашей команде функция в апстриме или работа над смежным — denidrob138@gmail.com. Напишите, что вы строите и что мешает; для первого ответа этого достаточно.
Участие
Откройте issue с описанием изменения, затем pull request в ветку по умолчанию. В каждом репозитории есть CONTRIBUTING.md — свой или общий для организации — с проверками, которые запустит CI, поэтому неписаных правил нет.
Сообщение об уязвимости
Через приватный механизм GitHub в затронутом репозитории. Никогда через публичный issue.
Кодекс поведения
Contributor Covenant, общий для организации. Сообщения идут приватно на адрес выше.