Open
0 of 1 issue completedDescription
I think it is time we invest into the developer experience before adding more features. To open the issue I am sharing my thoughts on where we should put our effort, but I welcome feedback and suggestions! I do not propose to halt all effort in other directions, but I think contributors that want to focus on the longevity of the benchmark should ideally focus their efforts here first. My hope is that by addressing these issues, future features and frameworks will be easier to add and quicker to review.
In my opinion, this project is missing several aspects that I would expect from a modern Python project:
- Type hints
- pre-commit for auto-formatting and linting (e.g.,
ruff
,black
) - Good unit test coverage. Fast isolated tests for things like data ingestion, configuration parsing, and result processing. Due to the stochasticity and time consuming process of installing framework tools, full integration tests are probably left for CI by default.
- Clear contribution guidelines
- Step-by-step tutorials for different ways to extend the benchmark (meaning benchmark, constraint, framework)
With that in place (or at least the first three), I think the following refactorings should be highest priority:
- Break down large functions and modules that contain multiple classes and responsibilities (e.g.,
amlb/runners/aws.py
oramlb/datasets/file.py
into multiple submodules to make the code easier to navigate. - Prefer immutable to mutable.
- Define abstractions for framework integration #279 which also allows things like recording intermediate results. E.g., train->save artifacts->test->inference time, would more reliably provide results while still attempting to measure inference time.