[air] Add training ETA for running runs in air get and air list - #6381
Open
vinchenzo-db wants to merge 3 commits into
Open
[air] Add training ETA for running runs in air get and air list#6381vinchenzo-db wants to merge 3 commits into
vinchenzo-db wants to merge 3 commits into
Conversation
Surface an estimated time-remaining for in-flight `air run` GPU jobs, derived from MLflow progress signals. MLflow has no native ETA and AIR itself logs only system heartbeat metrics, so a genuine estimate is only computable for HuggingFace Trainer runs: its MLflow integration logs `max_steps` / `num_train_epochs` params and an `epoch` metric carrying the global step and fractional epoch. The new eta.go gates on those params, then projects the remaining time from a trailing window of the `epoch` metric's history (step-based when max_steps is set, else epoch-based). Everything is best-effort: any missing signal or API error yields no estimate rather than failing the command, so non-Trainer runs simply show nothing. `air get` shows an "ETA" row for a running run (and est_remaining_seconds in JSON); `air list` adds an "ETA" column computed per running row in the existing parallel MLflow enrichment. Co-authored-by: Isaac <no-reply@databricks.com>
Contributor
Approval status: pending
|
# Conflicts: # experimental/air/cmd/list.go # experimental/air/cmd/list_tui_test.go
Replace forbidden sort.SliceStable with slices.SortStableFunc (forbidigo), and regenerate the air get / get-ai-runtime / list acceptance goldens for the new est_remaining_seconds JSON field and the ETA list column. Co-authored-by: Isaac <no-reply@databricks.com>
Collaborator
Integration test reportCommit: 4ee8293
Top 3 slowest tests (at least 2 minutes):
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Surface an estimated time-remaining for in-flight
air runGPU jobs, derived from MLflow progress signals.MLflow has no native ETA and AIR itself logs only system heartbeat metrics, so a genuine estimate is only computable for HuggingFace Trainer runs: its MLflow integration logs
max_steps/num_train_epochsparams and anepochmetric carrying the global step and fractional epoch. The new eta.go gates on those params, then projects the remaining time from a trailing window of theepochmetric's history (step-based when max_steps is set, else epoch-based). Everything is best-effort: any missing signal or API error yields no estimate rather than failing the command, so non-Trainer runs simply show nothing.air getshows an "ETA" row for a running run (and est_remaining_seconds in JSON);air listadds an "ETA" column computed per running row in the existing parallel MLflow enrichment.Changes
Why
Tests
Repro Steps:
Env:
Dummy Training Script:
Yaml:
Run:
Model hasn't started training yet so don't display ETA:

Model starts training:
