Feat/feasibility check#291
Conversation
- proposal: introduce 3-phase framing (resource/data/config), add resource-phase refinements (warm cache, n_jobs × VRAM, refit_after, Hub reachability, CatBoost GPU sanity), data-quality phase (token truncation, split readiness, partial descriptions, embedder dim), config sanity phase, updated example output, CLI surface, out-of- scope deferrals - _advisor package: hardware detection (CUDA/MPS/CPU with broken-CUDA fallback), HF Hub metadata + warm-cache probe + offline heuristics, three-phase run_preflight returning structured PreflightReport, text + JSON renderers - autointent-advisor CLI: inspect <preset|config> and recommend subcommands; placeholder dataset stats when no --dataset given - 88 offline tests covering hardware fallbacks, every bundled preset, severity routing, report serialization, name-pattern heuristics, AMP invariant, dump_modules / refit_after, CLI flows Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
| SearchSpacePreset = Literal[ | ||
| "classic-heavy", | ||
| "classic-light", | ||
| "classic-medium", | ||
| "nn-heavy", | ||
| "nn-medium", | ||
| "transformers-heavy", | ||
| "transformers-light", | ||
| "transformers-no-hpo", | ||
| "nn-heavy", | ||
| "zero-shot-llm", | ||
| "nn-medium", | ||
| "classic-heavy", | ||
| "transformers-no-hpo", | ||
| "classic-medium", | ||
| "zero-shot-encoders", | ||
| "classic-light", | ||
| ] | ||
| """Some presets that our library supports.""" | ||
| """Bundled search-space presets, listed in descending quality order. | ||
|
|
||
| The order is consumed by ``autointent._advisor.recommend`` to pick the | ||
| highest-quality feasible preset (lower index = higher quality).""" |
There was a problem hiding this comment.
это к сожалению неправда - выстроить пресеты в какой-то один порядок нельзя потому что под разные задачи нужны разные пресеты
например transformers-heavy будет ужасно работать если выборка маленькая
There was a problem hiding this comment.
Тут скорее по времени выполнения
There was a problem hiding this comment.
тогда надо докстринг изменить, сейчас он вводит в заблуждение читателей документации
| if mixed_precision: | ||
| bytes_per_sample //= 2 |
There was a problem hiding this comment.
тут не совсем такая формула, там же куча мастер копий еще - мне кажется стоит уточнить этот момент
такое сокращение может быть, но это слишком оптимистичная оценка - а мы хотим оценить затраты сверху а не снизу
There was a problem hiding this comment.
немного странно что цпу никак не влияет на оценки времени
voorhs
left a comment
There was a problem hiding this comment.
в целом по методике и алгоритам ок за исключением мелочей которые прокомментил (посмотрел не прямо все но пока это стоит исправить)
есть два пожелания:
- наверное стоит добавить какой-то обоснованности всем используемым формулам (ссылки на внешние ресурсы, бенчмарки, статьи в которых исследуется такое) - вообще с этого стоило начать выполнение этой задачи)
- очень неудобно ревьюить когда в одном бульоне приватные утилиты и публичные функции, мне кажется стоит руками самому как-то разнести все это на подфайлы и подпапки, потому что иишке это ок, а человечески очень тяжело когда файл на 800 строк и в нем центральный публичный метод с главным алгоритмом спрятан где-то посередине или в конце
# Conflicts: # pyproject.toml
| # rare class x linear-CV (LogisticRegressionCV cv=3 needs >=3 samples/class; | ||
| # multilabel path uses one-vs-rest without CV so the failure can't occur there) | ||
| has_linear = any(e.get("module_name") == "linear" for _, e in _walk_modules(search_space)) | ||
| if has_linear and stats.rare_classes and not stats.multilabel: | ||
| report.add( | ||
| "data", | ||
| Severity.OVER, | ||
| f"LogisticRegressionCV (cv=3) will fail: classes {stats.rare_classes[:5]} have <3 samples.", | ||
| ) |
There was a problem hiding this comment.
я не знаю есть ли тут баг, но на всякий случай перепроверь пожалуйста что эта проверка использует нужные сплиты (train/val/test) и не противоречит check_split_readiness в подмодуле data_handler
There was a problem hiding this comment.
а еще тут полагается что cv=3, но это же не всегда так
voorhs
left a comment
There was a problem hiding this comment.
норм! концептуально и по коду лучше, теперь это надо встроить в Pipeline.fit()
а еще надо провести эксперимент который оценивает насколько хорошо эта штука работает. у меня в голове такой дизайн: берешь как можно больше разных машин (нашу виртуалку, узел нашего кластера, свой ноутбук, свой другой ноутбук, свой пк), берешь разные серч спейсы и 2-3 датасета - и смотришь фолз/тру позитивы, фолз/тру негативы
если оформишь код в AutoIntent-experiments, то я на своих машинах тоже запущу и добавлю тебе кейсов в отчет
|
еще кстати есть такой вопрос: текущая реализация как-то учитывает кеширование эмбедингов? я могу потом как нибудь у клодика спросить, написал сюда чтобы не забыть (ну или может ты ответишь) |
No description provided.