You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+55-2Lines changed: 55 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,6 +13,61 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/).
13
13
- Fixed for any bug fixes.
14
14
- Security in case of vulnerabilities.
15
15
16
+
17
+
## [v0.16.1]
18
+
19
+
### Additions
20
+
-`rapidfireai/utils/mode_utils.py`: `get_installed_mode()` and `assert_mode_matches()` helpers for validating the installed RapidFire mode (`$RF_HOME/rf_mode.txt`).
21
+
- New RF_API_WORKERS / RF_API_WORKER_CLASS / RF_API_THREADS / RF_API_TIMEOUT / RF_API_GRACEFUL_TIMEOUT / RF_API_KEEPALIVE env vars on DispatcherConfig to tune the dispatcher gunicorn server.
22
+
- New include_decoded_config flag on RFDatabase.get_pipeline* / get_all_pipelines so HTTP callers can skip the expensive (and SIGSEGV-prone) dill decode of FAISS / embedder blobs.
23
+
- Autopilot/chat-agent clone path now stamps requests with source: "autopilot" and refuses to launch a clone whose effective config duplicates an existing run.
24
+
- Per-step intermediate checkpoint folders (`checkpoint-<step>`) for `save_strategy="chunk"`, preserving one snapshot per chunk.
25
+
- Configurable eval generation via `generation_config`: `max_input_length`, `add_generation_prompt`, and `truncation_side`.
26
+
- New `Status` column on the experiment runs table (pinned left after Run Name) showing dispatcher-vocabulary lifecycle state with per-state color.
27
+
- New `Shards` column showing live shard / chunk progress (`current/total`) for both evals (per-shard) and fit (per-chunk-per-epoch) runs.
28
+
- New mutable MLflow tags `rapidfire.progress.current` and `rapidfire.progress.total` emitted by both the fit and evals controllers; `MetricLogger.set_tag()` API across all backends.
29
+
- Stranded-run recovery (`rf_db.py``reset_all_tables` path) now also terminates orphaned MLflow runs as `FAILED`.
30
+
- New unit-test suite `tests/test_mlflow_status_parity.py` covering every status-parity transition, idempotency path, and the new helpers.
31
+
32
+
### Changes
33
+
- Experiment now validates that the installed mode matches the requested mode at initialization — before Ray/DB setup — blocking early with a clear, actionable error on a mismatch instead of silently producing a dead IC Ops panel.
34
+
-`doctor` reads the installed mode via `get_installed_mode()` (single source of truth).
35
+
- Dispatcher gunicorn defaults switched from sync worker to gthread (4 threads, 120 s timeout, 5 s keepalive) for both evals/ and fit/ dispatchers to survive long-lived polling connections.
36
+
- HTTP polling endpoints (/get-all-pipelines, /get-all-runs, /get-pipeline, IC validate calls) no longer dill-decode the pipeline_config blob; get_all_runs recovers per-row instead of failing the whole poll.
37
+
- Frontend proxy strips hop-by-hop headers, returns 502 for upstream failures, and absorbs ChunkedEncodingError / ProtocolError mid-stream instead of logging tracebacks.
38
+
- Eval generation now left-pads and forwards an explicit `attention_mask`; input truncation length is derived from the tokenizer/model instead of a fixed 512 tokens.
39
+
- Worker reads the user's `save_strategy` as the single source of truth; training args use a shallow copy so the `"chunk"` sentinel is preserved on `config_leaf`.
40
+
- Changed default behavior for `rapidfireai init` to be `--evals`, to do training use `rapidfireai init --train`
41
+
- Pin datasets==3.6.0 and pyarrow>=18.1.0
42
+
- Remove output from rag-fiqa notebook
43
+
- Dashboard relabels MLflow's native enum to the dispatcher's vocabulary across the experiment runs table and the run detail page: `Finished` → `COMPLETED`, `Killed` → `STOPPED`, `Running` → `ONGOING`, `Scheduled` → `NEW`.
44
+
-`KILLED` (dispatcher `STOPPED`) now renders with a `StopCircleIcon` in warning amber instead of the red error icon used for `FAILED` — an intentional halt is no longer visually conflated with a failure.
45
+
-`DateCellRenderer` no longer prefixes the timestamp with the run-status icon (the new `Status` column owns that signal).
46
+
-`experiment_utils.create_experiment` / `end_experiment` and `MLflowMetricLogger.clear_context()` now read the active run's server-side status before calling `mlflow.end_run()` so a terminal state already set by the controller / worker / IC handler is preserved instead of being overwritten with `FINISHED`.
47
+
- RunFit Notebooks updated with param mode='fit'
48
+
49
+
### Fixes
50
+
- A missing `rf_mode.txt` no longer blocks `run_fit()`; it now defaults to fit mode, matching the dispatcher startup default (`run_evals()` remains correctly blocked in that case).
51
+
- Fixes dispatcher worker WORKER TIMEOUT / "no URI read" SIGKILLs caused by the sync worker blocking on keep-alive sockets.
52
+
- Fixes dispatcher worker SIGSEGVs when the autopilot polling loop re-hydrated ~25 FAISS-bearing pipeline blobs per poll.
53
+
- Fixes Converge autopilot launching byte-identical duplicate clones and silently dropping cloned runs because their flattened_config was empty.
54
+
- Fixes AttributeError in _transform_pipeline_to_run when SQLite returned NULL for string columns (.get(key, "") doesn't apply the default to None values).
55
+
- Optuna label building no longer crashes on `dict`/`None` categorical knob choices (#268).
56
+
- Optuna leaf configs now carry the `pipeline` key so the controller can launch them (#268).
57
+
- Query actor reuses its inference engine only when it actually exists, fixing `AttributeError` under sharding (#268).
58
+
- Replacement (relaunched) pipelines now inherit the parent's rate limiter and max-completion-tokens, fixing inference-engine init failures (#268).
59
+
- Fixed intermediate checkpoints overwriting each other every chunk save.
60
+
- Fixed `save_strategy="chunk"` being lost/mutated before the worker's save step.
61
+
- Fixed corrupted batched eval generation when `pad_token_id == eos_token_id` (missing attention mask + right padding).
62
+
- Fixed missing `add_generation_prompt` in eval chat templating, which degraded eval quality for instruction-tuned models.
63
+
- Dashboard MLflow status now matches the dispatcher status shown in the notebook progress table across all terminal transitions in both `run_fit()` and `run_evals()`: clean completion, IC-stop, Optuna prune, worker exception, runtime / init / dispatch failure, create-run failure, and stranded-run recovery after a crash.
64
+
- Reused query actors no longer mark a still-running pipeline as `FINISHED` on the MLflow server when switching to the next pipeline.
65
+
- Orphaned `ONGOING` / `NEW` runs left over from a crashed experiment no longer remain stuck as `RUNNING` in MLflow after recovery.
66
+
- Cloned pipelines (IC clone) and Optuna replacement runs now render shard progress in the `Shards` column instead of `-`.
67
+
- Failed run-creation paths now record the MLflow run as `FAILED` instead of letting it default to `FINISHED`.
68
+
- Downgrade `numpy` to 2.0.1 on Colab for SFT notebook issue with datasets
69
+
70
+
16
71
## [v0.16.0]
17
72
18
73
### Additions
@@ -98,8 +153,6 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/).
98
153
- Pins cupy-cuda12x to 14.0.1 to override issue in 14.1.0 that requires `pytest` the issue is fixed in `https://github.com/cupy/cupy/pull/9965` but there is not a current release with this fix.
0 commit comments