Репост из: HypEx
Мы долго к этому шли… 👀
🚀 Hypex 2.0.0a1 — первая альфа второй мажорной версии!
Главное событие релиза: Hypex научился работать на Apache Spark. A/A, A/B, тесты однородности и Matching теперь можно запускать не только в pandas, но и на данных, которые давно не помещаются в память одной машины. И всё это заметно быстрее, чем в 1.0.x.
💡 Что нового:
⚡️ Spark-бэкенд. Dataset работает поверх pandas или Spark с одним и тем же API для AATest, ABTest, HomogeneityTest и Matching. Достаточно передать SparkSession и выбрать BackendsEnum.spark, а код эксперимента остаётся прежним.
🏎 Всё стало быстрее. Добавили векторизованное хэширование при сплитах и батчевый расчёт статтестов. Инварианты вынесены из циклов A/A, а на Spark работает checkpointing, поэтому DAG не разрастается от итерации к итерации. Сильнее всего ускорение видно на больших данных, в A/A-циклах и в Matching.
🤝 Распределённый Matching. У FAISS появился режим shuffle с кластерным партиционированием и co-partitioned поиск соседей. Индексы больше не стягиваются на драйвер, поэтому Matching справляется с объёмами, на которых раньше падал по памяти. Ещё добавили BiasExtension для линейной коррекции смещения и MatchingMetricsExtension для оценки эффектов. Оба корректно переживают пустые группы и NaN.
📐 U-тест Манна–Уитни. Новый StatsUTest считается по гистограммам, поэтому работает и на Spark. Он уже встроен в A/A, A/B и отчёты о качестве Matching.
📏 Доверительные интервалы в A/B. Для разницы между группами теперь сразу считается 95% ДИ, в результатах это колонки ci lower / ci upper.
🧪 Dry-test для A/A. С AATest(dry_test=True) можно проверить свою A/A-схему на данных без эффекта: распределение p-value должно быть равномерным, а FPR соответствовать alpha. Результат приходит с наглядным графиком.
🧹 Новые блоки пайплайна. NaDropper фильтрует строки с пропусками, а Float32Caster экономит память за счёт приведения к float32. Оба уже включены в стандартные A/A и A/B.
📚 Документация. В каждом модуле появился свой README, туториалы обновлены, и в каждом есть раздел про работу на Spark.
🐞 И, конечно, пачка багфиксов: детерминированный порядок групп на Spark, корректные id соседей FAISS при k=1, извлечение индексов в Matching, строки с _ в энкодерах, дублирование индекса в Chi2. Кроме того, ExperimentShell больше не мутирует пользовательские данные.
📦 Как установить:
pip install --pre -U hypex
Без --pre pip поставит последнюю стабильную 1.0.7.
⚠️ Важно для тех, кто переходит с 1.0.7:
- Python 3.13 пока не поддерживается (нужен >=3.8,
🚀 Hypex 2.0.0a1 — первая альфа второй мажорной версии!
Главное событие релиза: Hypex научился работать на Apache Spark. A/A, A/B, тесты однородности и Matching теперь можно запускать не только в pandas, но и на данных, которые давно не помещаются в память одной машины. И всё это заметно быстрее, чем в 1.0.x.
💡 Что нового:
⚡️ Spark-бэкенд. Dataset работает поверх pandas или Spark с одним и тем же API для AATest, ABTest, HomogeneityTest и Matching. Достаточно передать SparkSession и выбрать BackendsEnum.spark, а код эксперимента остаётся прежним.
🏎 Всё стало быстрее. Добавили векторизованное хэширование при сплитах и батчевый расчёт статтестов. Инварианты вынесены из циклов A/A, а на Spark работает checkpointing, поэтому DAG не разрастается от итерации к итерации. Сильнее всего ускорение видно на больших данных, в A/A-циклах и в Matching.
🤝 Распределённый Matching. У FAISS появился режим shuffle с кластерным партиционированием и co-partitioned поиск соседей. Индексы больше не стягиваются на драйвер, поэтому Matching справляется с объёмами, на которых раньше падал по памяти. Ещё добавили BiasExtension для линейной коррекции смещения и MatchingMetricsExtension для оценки эффектов. Оба корректно переживают пустые группы и NaN.
📐 U-тест Манна–Уитни. Новый StatsUTest считается по гистограммам, поэтому работает и на Spark. Он уже встроен в A/A, A/B и отчёты о качестве Matching.
📏 Доверительные интервалы в A/B. Для разницы между группами теперь сразу считается 95% ДИ, в результатах это колонки ci lower / ci upper.
🧪 Dry-test для A/A. С AATest(dry_test=True) можно проверить свою A/A-схему на данных без эффекта: распределение p-value должно быть равномерным, а FPR соответствовать alpha. Результат приходит с наглядным графиком.
🧹 Новые блоки пайплайна. NaDropper фильтрует строки с пропусками, а Float32Caster экономит память за счёт приведения к float32. Оба уже включены в стандартные A/A и A/B.
📚 Документация. В каждом модуле появился свой README, туториалы обновлены, и в каждом есть раздел про работу на Spark.
🐞 И, конечно, пачка багфиксов: детерминированный порядок групп на Spark, корректные id соседей FAISS при k=1, извлечение индексов в Matching, строки с _ в энкодерах, дублирование индекса в Chi2. Кроме того, ExperimentShell больше не мутирует пользовательские данные.
📦 Как установить:
pip install --pre -U hypex
Без --pre pip поставит последнюю стабильную 1.0.7.
⚠️ Важно для тех, кто переходит с 1.0.7:
- Python 3.13 пока не поддерживается (нужен >=3.8,