Комментарии 10
Столько новых слов узнал
Получается rust хороший а другие языки проста треш
Не то чтобы Rust лучше всех. Просто для задач, где тысячи вызовов likelihood и градиента, удобно иметь AOT-компиляцию, контроль памяти и SIMD без overhead Python-рантайма.
Rust здесь оказался хорошим компромиссом. То же самое можно было бы сделать и на C++. Собственно, многие инструменты в HEP (например RooFit/RooStats) как раз написаны на C++ и долгое время были стандартом для таких задач
А что насчет языка R?
R отлично подходит для статистического анализа, но для тяжёлых вычислений обычно используют компилируемые языки, поэтому во многих R-пакетах эта часть реализована на C/C++ или Fortran. У нас вычислительный слой сделан на Rust, это архитектурное решение
просто есть мысли, что это все проблема архитектуры, а не библиотек или языка
Да, архитектура тут важнее самого названия языка. Но стек тоже имеет значение.
В R/Julia обычно вместе с “решением” приезжает отдельный рантайм, пачка пакетов и системных зависимостей. В итоге вопрос уже не только в вычислениях, а ещё и в установке, совместимости и сопровождении.
У нас идея была не просто ускорить hot path, а сделать инструмент, который ставится одной командой без dependency hell и нормально живёт в production. Так что здесь скорее связка: правильная архитектура + стек, который не тащит за собой лишний зоопарк
Отдельно стоит упомянуть что на Stan или Julia разработка такого статистического слоя, скорее всего, шла бы заметно быстрее. Особенно на этапе прототипирования и перебора моделей.
Но наши бенчи показывают, что итоговый выбор архитектуры всё равно даёт выигрыш по скорости даже относительно Stan, который де-факто считается индустриальным стандартом для статистических вычислений и по идее должен был бы нас обыгрывать. Поэтому здесь компромисс был такой: медленнее разработка, зато быстрее и проще в эксплуатации конечный вычислительный контур
Не, смысл не в том, что Rust хороший, а остальные языки мусор. Просто для таких задач он даёт очень сильный practical mix: безопасная работа с памятью без типичной C/C++ боли, высокая производительность за счёт нативной компиляции и нормальной работы в hot path, плюс заметно меньше dependency hell при сборке и переносе проекта. И для нас это особенно важно, потому что в HEP люди всё равно привыкли работать через Python-харнесы, ноутбуки и привычный analysis workflow, а Rust тут хорошо ложится как backend для тяжёлого вычислительного ядра, не ломая этот привычный слой
Топовый тред, без наездов с ии и прочим. Рад наконец почитать такое.

Одна Rust-библиотека вместо шести Python-пакетов — или как я перестала запускать фит и идти за кофе