Add a context concept to the workflow #290
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This adds a new concept of a "context" and accompanying types for populating that context. Metrics declare which context dependencies they need and the workflow ensures that they're run.
The driver for this now is the lack of visibility into perf. Before this change, metrics that all needed the same embeddings to be computed would avoid wasted work recomputing them indirectly through @cache on the types that generate the embeddings. This meant that the first metric that happened to need the metric ended up looking pretty bad in terms of perf with the rest looking good.
The context formalizes this and avoid the caching by pulling common dependencies out and computing them once for everyone. If multiple metrics declare a dependency on something then those are deduped as well.