Skip to content

Commit b9d8e10

Browse files
authored
Fix progress bar estimation for FT Jobs (#415)
* Fix progress bar estimation * fix tests * proper fix * rm
1 parent eba5e5f commit b9d8e10

File tree

3 files changed

+11
-9
lines changed

3 files changed

+11
-9
lines changed

src/together/cli/api/utils.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,13 +103,13 @@ def generate_progress_bar(
103103
progress = "Progress: [bold red]unavailable[/bold red]"
104104
if finetune_job.status in COMPLETED_STATUSES:
105105
progress = "Progress: [bold green]completed[/bold green]"
106-
elif finetune_job.updated_at is not None:
106+
elif finetune_job.started_at is not None:
107107
# Replace 'Z' with '+00:00' for Python 3.10 compatibility
108-
updated_at_str = finetune_job.updated_at.replace("Z", "+00:00")
109-
update_at = datetime.fromisoformat(updated_at_str).astimezone()
108+
started_at_str = finetune_job.started_at.replace("Z", "+00:00")
109+
started_at = datetime.fromisoformat(started_at_str).astimezone()
110110

111111
if finetune_job.progress is not None:
112-
if current_time < update_at:
112+
if current_time < started_at:
113113
return progress
114114

115115
if not finetune_job.progress.estimate_available:
@@ -118,7 +118,7 @@ def generate_progress_bar(
118118
if finetune_job.progress.seconds_remaining <= 0:
119119
return progress
120120

121-
elapsed_time = (current_time - update_at).total_seconds()
121+
elapsed_time = (current_time - started_at).total_seconds()
122122
ratio_filled = min(
123123
elapsed_time / finetune_job.progress.seconds_remaining, 1.0
124124
)

src/together/types/finetune.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,7 @@ class FinetuneResponse(BaseModel):
286286
# created/updated datetime stamps
287287
created_at: str | None = None
288288
updated_at: str | None = None
289+
started_at: str | None = None
289290
# job status
290291
status: FinetuneJobStatus | None = None
291292
# job id

tests/unit/test_cli_utils.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
def create_finetune_response(
1414
status: FinetuneJobStatus = FinetuneJobStatus.STATUS_RUNNING,
15-
updated_at: str = "2024-01-01T12:00:00Z",
15+
started_at: str = "2024-01-01T12:00:00Z",
1616
progress: FinetuneProgress | None = None,
1717
job_id: str = "ft-test-123",
1818
) -> FinetuneResponse:
@@ -30,7 +30,8 @@ def create_finetune_response(
3030
return FinetuneResponse(
3131
id=job_id,
3232
progress=progress,
33-
updated_at=updated_at,
33+
updated_at=started_at,
34+
started_at=started_at,
3435
status=status,
3536
)
3637

@@ -359,7 +360,7 @@ def test_timezone_aware_datetime(self):
359360
"""Test with different timezone for updated_at."""
360361
current_time = datetime(2024, 1, 1, 12, 0, 30, tzinfo=timezone.utc)
361362
finetune_job = create_finetune_response(
362-
updated_at="2024-01-01T07:00:00-05:00", # Same as 12:00:00 UTC (EST = UTC-5)
363+
started_at="2024-01-01T07:00:00-05:00", # Same as 12:00:00 UTC (EST = UTC-5)
363364
progress=FinetuneProgress(estimate_available=True, seconds_remaining=60.0),
364365
)
365366

@@ -385,7 +386,7 @@ def test_negative_elapsed_time_scenario(self):
385386
"""Test unusual case where current time appears before updated_at."""
386387
current_time = datetime(2024, 1, 1, 12, 0, 0, tzinfo=timezone.utc)
387388
finetune_job = create_finetune_response(
388-
updated_at="2024-01-01T12:00:30Z", # In the "future"
389+
started_at="2024-01-01T12:00:30Z", # In the "future"
389390
progress=FinetuneProgress(estimate_available=True, seconds_remaining=100.0),
390391
)
391392

0 commit comments

Comments
 (0)