rapidfireai 0.10.2rc4__tar.gz → 0.10.3rc1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rapidfireai might be problematic. Click here for more details.
- {rapidfireai-0.10.2rc4/rapidfireai.egg-info → rapidfireai-0.10.3rc1}/PKG-INFO +7 -4
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/README.md +2 -2
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/pyproject.toml +5 -2
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/backend/controller.py +29 -16
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/backend/worker.py +14 -7
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/cli.py +28 -1
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/db/rf_db.py +1 -1
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/db/tables.sql +1 -1
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/dispatcher/dispatcher.py +3 -1
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/dispatcher/gunicorn.conf.py +1 -1
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/experiment.py +75 -7
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/asset-manifest.json +3 -3
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/index.html +1 -1
- rapidfireai-0.10.2rc4/rapidfireai/frontend/build/static/js/main.3ff1e37d.js → rapidfireai-0.10.3rc1/rapidfireai/frontend/build/static/js/main.e7d3b759.js +3 -3
- rapidfireai-0.10.2rc4/rapidfireai/frontend/build/static/js/main.3ff1e37d.js.map → rapidfireai-0.10.3rc1/rapidfireai/frontend/build/static/js/main.e7d3b759.js.map +1 -1
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/proxy_middleware.py +1 -1
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/ml/callbacks.py +78 -38
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/ml/trainer.py +6 -6
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/start.sh +117 -34
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/utils/constants.py +20 -1
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/utils/experiment_utils.py +87 -43
- rapidfireai-0.10.3rc1/rapidfireai/utils/interactive_controller.py +494 -0
- rapidfireai-0.10.3rc1/rapidfireai/utils/metric_logger.py +346 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/utils/mlflow_manager.py +0 -2
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/utils/worker_manager.py +16 -6
- rapidfireai-0.10.3rc1/rapidfireai/version.py +6 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1/rapidfireai.egg-info}/PKG-INFO +7 -4
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai.egg-info/SOURCES.txt +9 -4
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai.egg-info/requires.txt +4 -1
- rapidfireai-0.10.3rc1/tests/test_metric_logger.py +486 -0
- rapidfireai-0.10.3rc1/tests/test_notebooks.py +113 -0
- rapidfireai-0.10.3rc1/tutorial_notebooks/rf-colab-tensorboard-tutorial.ipynb +314 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/tutorial_notebooks/rf-tutorial-dpo-alignment-lite.ipynb +6 -6
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/tutorial_notebooks/rf-tutorial-dpo-alignment.ipynb +6 -6
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/tutorial_notebooks/rf-tutorial-grpo-mathreasoning-lite.ipynb +6 -6
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/tutorial_notebooks/rf-tutorial-grpo-mathreasoning.ipynb +6 -6
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/tutorial_notebooks/rf-tutorial-sft-chatqa-lite.ipynb +6 -6
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/tutorial_notebooks/rf-tutorial-sft-chatqa.ipynb +6 -6
- rapidfireai-0.10.2rc4/rapidfireai/version.py +0 -6
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/LICENSE +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/MANIFEST.in +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/__init__.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/automl/__init__.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/automl/base.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/automl/datatypes.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/automl/grid_search.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/automl/model_config.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/automl/random_search.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/backend/__init__.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/backend/chunks.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/backend/scheduler.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/db/__init__.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/db/db_interface.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/favicon.ico +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/lib/notebook-trace-renderer/index.html +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/lib/notebook-trace-renderer/js/ml-model-trace-renderer.5490ebc325fe0f300ad9.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/lib/notebook-trace-renderer/js/ml-model-trace-renderer.5490ebc325fe0f300ad9.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/manifest.json +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/1570.21d39143.chunk.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/1570.21d39143.chunk.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/1810.b886c467.chunk.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/1810.b886c467.chunk.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/1998.182efef5.chunk.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/1998.182efef5.chunk.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/2061.c07e2d0d.chunk.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/2061.c07e2d0d.chunk.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/301.ca66900f.chunk.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/301.ca66900f.chunk.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/3044.41bf106c.chunk.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/3044.41bf106c.chunk.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/5009.e39511b7.chunk.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/5009.e39511b7.chunk.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/505.1c6f09d6.chunk.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/505.1c6f09d6.chunk.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/5275.766cab72.chunk.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/5275.766cab72.chunk.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/6279.4898ad7a.chunk.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/6279.4898ad7a.chunk.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/6724.817f39a9.chunk.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/6724.817f39a9.chunk.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/7166.2660bfa4.chunk.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/7166.2660bfa4.chunk.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/7774.51471f49.chunk.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/7774.51471f49.chunk.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/8165.edc59d12.chunk.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/8165.edc59d12.chunk.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/8649.cfa704f2.chunk.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/8649.cfa704f2.chunk.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/8655.a1aab422.chunk.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/8655.a1aab422.chunk.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/9059.cccf5f9b.chunk.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/9059.cccf5f9b.chunk.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/961.a1aab422.chunk.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/961.a1aab422.chunk.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/9801.c9632c36.chunk.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/9801.c9632c36.chunk.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/9831.2fd713ad.chunk.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/9831.2fd713ad.chunk.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/experimentPage.b886c467.chunk.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/experimentPage.b886c467.chunk.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/main.702595df.css +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/css/main.702595df.css.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/1107.3b7eb241.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/1107.3b7eb241.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/1130.8c8328e9.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/1130.8c8328e9.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/1570.e6a5ccf7.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/1570.e6a5ccf7.chunk.js.LICENSE.txt +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/1570.e6a5ccf7.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/1810.7b0d2aa5.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/1810.7b0d2aa5.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/1841.54c56f45.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/1841.54c56f45.chunk.js.LICENSE.txt +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/1841.54c56f45.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/1998.52257a5d.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/1998.52257a5d.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2008.7734bf52.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2008.7734bf52.chunk.js.LICENSE.txt +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2008.7734bf52.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2013.ebec35d3.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2013.ebec35d3.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2025.fccf596b.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2025.fccf596b.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2061.43748e5b.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2061.43748e5b.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2149.2b521c18.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2149.2b521c18.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2231.5a7fbe5e.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2231.5a7fbe5e.chunk.js.LICENSE.txt +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2231.5a7fbe5e.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2402.1c147bbf.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2402.1c147bbf.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2608.3e80e7b0.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2608.3e80e7b0.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2633.7a14dc7e.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2633.7a14dc7e.chunk.js.LICENSE.txt +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2633.7a14dc7e.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/278.ef0f3856.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/278.ef0f3856.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2999.16056eb5.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/2999.16056eb5.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/301.be95b5c5.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/301.be95b5c5.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/3044.833a108e.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/3044.833a108e.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/3334.aa15c4e1.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/3334.aa15c4e1.chunk.js.LICENSE.txt +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/3334.aa15c4e1.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/3464.83ee62c8.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/3464.83ee62c8.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/3835.5817b6a4.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/3835.5817b6a4.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/3885.6631331e.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/3885.6631331e.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/4175.8b841372.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/4175.8b841372.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/4588.d69c50d6.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/4588.d69c50d6.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/47.436aaeb8.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/47.436aaeb8.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/4765.afb39d4e.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/4765.afb39d4e.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/4850.b10d3c24.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/4850.b10d3c24.chunk.js.LICENSE.txt +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/4850.b10d3c24.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/5009.73d4294a.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/5009.73d4294a.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/505.92c8a2ab.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/505.92c8a2ab.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/5194.721c2975.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/5194.721c2975.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/5265.c79d9911.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/5265.c79d9911.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/5275.e848bc22.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/5275.e848bc22.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/532.327a6d70.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/532.327a6d70.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/571.1ca4d1b2.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/571.1ca4d1b2.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/5879.8c03c3a7.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/5879.8c03c3a7.chunk.js.LICENSE.txt +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/5879.8c03c3a7.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6019.9025341e.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/618.c43acc34.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/618.c43acc34.chunk.js.LICENSE.txt +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/618.c43acc34.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6279.b98153c9.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6279.b98153c9.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6336.8153bc1c.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6336.8153bc1c.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6386.95210fd8.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6386.95210fd8.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6450.c16333e6.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6450.c16333e6.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6674.568e5d25.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6674.568e5d25.chunk.js.LICENSE.txt +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6674.568e5d25.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6724.109a403e.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6724.109a403e.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6742.957d9f66.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6742.957d9f66.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6791.64608625.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6791.64608625.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6931.db3e086e.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6931.db3e086e.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6991.0e98e62b.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/6991.0e98e62b.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/7021.21cfd230.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/7021.21cfd230.chunk.js.LICENSE.txt +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/7021.21cfd230.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/7027.6961c163.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/7027.6961c163.chunk.js.LICENSE.txt +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/7027.6961c163.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/7166.9761fb8a.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/7166.9761fb8a.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/7262.504f3f63.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/7262.504f3f63.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/7544.ccd817ff.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/7544.ccd817ff.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/7774.ba2d7341.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/7774.ba2d7341.chunk.js.LICENSE.txt +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/7774.ba2d7341.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/7863.7f2f62cc.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/7863.7f2f62cc.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/8048.bdbecbb6.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/8048.bdbecbb6.chunk.js.LICENSE.txt +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/8048.bdbecbb6.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/8165.40e9a465.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/8165.40e9a465.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/8229.ba907d90.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/8229.ba907d90.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/8238.657b5a23.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/8238.657b5a23.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/847.de5af26a.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/847.de5af26a.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/8521.23f1b86b.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/8521.23f1b86b.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/8649.c727bd23.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/8649.c727bd23.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/8846.2cec14c5.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/8846.2cec14c5.chunk.js.LICENSE.txt +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/8846.2cec14c5.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/9059.aa80078d.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/9059.aa80078d.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/939.e6c5459d.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/939.e6c5459d.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/9478.cbf55ef3.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/9478.cbf55ef3.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/961.632f8737.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/961.632f8737.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/9800.2d34e2e9.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/9800.2d34e2e9.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/9801.039b9950.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/9801.039b9950.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/9831.43bfa1a6.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/9831.43bfa1a6.chunk.js.map +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/experimentPage.230db0b3.chunk.js +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/js/experimentPage.230db0b3.chunk.js.map +0 -0
- /rapidfireai-0.10.2rc4/rapidfireai/frontend/build/static/js/main.3ff1e37d.js.LICENSE.txt → /rapidfireai-0.10.3rc1/rapidfireai/frontend/build/static/js/main.e7d3b759.js.LICENSE.txt +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/404-overflow.fad9a31861b0afba6f921ebb8e769688.svg +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/RapidFire_Square_Bug.27ceb48296314a4bc0d4.png +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/chart-bar.0fd4a63680fba840a7b69fbf07969f79.svg +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/chart-contour.0d4b306f2669f3ad25375568935e3ce3.svg +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/chart-difference.16174216d6f3b7c24f40e3541fe0ca2c.svg +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/chart-image.cc434c4dc50780966344e2385a15f8fe.svg +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/chart-line.0adaa2036bb4eb5956db6d0c7e925a3d.svg +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/chart-parallel.da7dedf539b2af4b654d377c679173e4.svg +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/chart-scatter.69118d0023a6ff3973f7fa913834ac47.svg +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/default-error.f246ddf367c6fbd67942e5a13382a7f1.svg +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/fontawesome-webfont.1e59d2330b4c6deb84b3.ttf +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/fontawesome-webfont.20fd1704ea223900efa9.woff2 +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/fontawesome-webfont.8b43027f47b20503057d.eot +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/fontawesome-webfont.c1e38fd9e0e74ba58f7a.svg +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/fontawesome-webfont.f691f37e57f04c152e23.woff +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/icon-visible-fill.8d34cd35303828fdfc15154f5536e63b.svg +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/parallel-chart-placeholder.234ef0c5b220ef2a5a6fa5bafff173f7.svg +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/pdf.worker.min.1e04b97855d3d1d0937e.mjs +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/pdf.worker.min.1e04b97855d3d1d0937e.mjs.LICENSE.txt +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/promo-modal-content.e3b2c6c568ac192b9bec54b838b54850.svg +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/registered-model-grey-ok.8274b58d39504c8d1b8c358aa1c9aa35.svg +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/versions-empty.3e2d8bb8c5b8ddd0a19a34890b36ad41.svg +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/static/media/warning.290a3b14118933547965e91ea61c5a61.svg +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/package.json +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/server.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/ml/__init__.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/ml/checkpoint_utils.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/utils/__init__.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/utils/automl_utils.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/utils/datapaths.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/utils/exceptions.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/utils/logging.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/utils/ping.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/utils/serialize.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/utils/shm_manager.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/utils/trainer_config.py +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai.egg-info/dependency_links.txt +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai.egg-info/entry_points.txt +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai.egg-info/top_level.txt +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/setup.cfg +0 -0
- {rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/tests/test_chunks.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rapidfireai
|
|
3
|
-
Version: 0.10.
|
|
3
|
+
Version: 0.10.3rc1
|
|
4
4
|
Summary: RapidFire AI: Rapid Experimentation Engine for Customizing LLMs
|
|
5
5
|
Author-email: "RapidFire AI Inc." <support@rapidfire.ai>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -22,6 +22,7 @@ Requires-Python: >=3.12
|
|
|
22
22
|
Description-Content-Type: text/markdown
|
|
23
23
|
License-File: LICENSE
|
|
24
24
|
Requires-Dist: pandas>=2.3.1
|
|
25
|
+
Requires-Dist: psutil>=5.9.0
|
|
25
26
|
Requires-Dist: torch>=2.8.0
|
|
26
27
|
Requires-Dist: transformers>=4.55.2
|
|
27
28
|
Requires-Dist: peft>=0.17.0
|
|
@@ -40,11 +41,13 @@ Requires-Dist: requests>=2.32.5
|
|
|
40
41
|
Requires-Dist: loguru>=0.7.3
|
|
41
42
|
Requires-Dist: ipython>=8.37.0
|
|
42
43
|
Requires-Dist: jupyter>=1.1.1
|
|
43
|
-
Requires-Dist: ipywidgets
|
|
44
|
+
Requires-Dist: ipywidgets<9.0.0,>=7.3.4
|
|
44
45
|
Requires-Dist: uv>=0.8.14
|
|
46
|
+
Requires-Dist: tensorboard>=2.11.0
|
|
45
47
|
Provides-Extra: dev
|
|
46
48
|
Requires-Dist: pytest>=6.0; extra == "dev"
|
|
47
49
|
Requires-Dist: pytest-cov>=2.0; extra == "dev"
|
|
50
|
+
Requires-Dist: pytest-mock>=3.10.0; extra == "dev"
|
|
48
51
|
Requires-Dist: black>=21.0; extra == "dev"
|
|
49
52
|
Requires-Dist: flake8>=3.8; extra == "dev"
|
|
50
53
|
Requires-Dist: mypy>=0.800; extra == "dev"
|
|
@@ -147,7 +150,7 @@ If you encounter port conflicts, you can kill existing processes:
|
|
|
147
150
|
|
|
148
151
|
```bash
|
|
149
152
|
lsof -t -i:5002 | xargs kill -9 # mlflow
|
|
150
|
-
lsof -t -i:
|
|
153
|
+
lsof -t -i:8081 | xargs kill -9 # dispatcher
|
|
151
154
|
lsof -t -i:3000 | xargs kill -9 # frontend server
|
|
152
155
|
```
|
|
153
156
|
|
|
@@ -292,7 +295,7 @@ chmod +x ./rapidfireai/start_dev.sh
|
|
|
292
295
|
# VSCode can port-forward localhost:3000 where the rf-frontend server will be running
|
|
293
296
|
|
|
294
297
|
# for port clash issues -
|
|
295
|
-
lsof -t -i:
|
|
298
|
+
lsof -t -i:8081 | xargs kill -9 # dispatcher
|
|
296
299
|
lsof -t -i:5002 | xargs kill -9 # mlflow
|
|
297
300
|
lsof -t -i:3000 | xargs kill -9 # frontend
|
|
298
301
|
```
|
|
@@ -88,7 +88,7 @@ If you encounter port conflicts, you can kill existing processes:
|
|
|
88
88
|
|
|
89
89
|
```bash
|
|
90
90
|
lsof -t -i:5002 | xargs kill -9 # mlflow
|
|
91
|
-
lsof -t -i:
|
|
91
|
+
lsof -t -i:8081 | xargs kill -9 # dispatcher
|
|
92
92
|
lsof -t -i:3000 | xargs kill -9 # frontend server
|
|
93
93
|
```
|
|
94
94
|
|
|
@@ -233,7 +233,7 @@ chmod +x ./rapidfireai/start_dev.sh
|
|
|
233
233
|
# VSCode can port-forward localhost:3000 where the rf-frontend server will be running
|
|
234
234
|
|
|
235
235
|
# for port clash issues -
|
|
236
|
-
lsof -t -i:
|
|
236
|
+
lsof -t -i:8081 | xargs kill -9 # dispatcher
|
|
237
237
|
lsof -t -i:5002 | xargs kill -9 # mlflow
|
|
238
238
|
lsof -t -i:3000 | xargs kill -9 # frontend
|
|
239
239
|
```
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "rapidfireai"
|
|
7
|
-
version = "0.10.
|
|
7
|
+
version = "0.10.3rc1"
|
|
8
8
|
authors = [
|
|
9
9
|
{name = "RapidFire AI Inc.", email = "support@rapidfire.ai"},
|
|
10
10
|
]
|
|
@@ -27,6 +27,7 @@ classifiers = [
|
|
|
27
27
|
]
|
|
28
28
|
dependencies = [
|
|
29
29
|
"pandas>=2.3.1",
|
|
30
|
+
"psutil>=5.9.0",
|
|
30
31
|
"torch>=2.8.0",
|
|
31
32
|
"transformers>=4.55.2",
|
|
32
33
|
"peft>=0.17.0",
|
|
@@ -45,14 +46,16 @@ dependencies = [
|
|
|
45
46
|
"loguru>=0.7.3",
|
|
46
47
|
"ipython>=8.37.0",
|
|
47
48
|
"jupyter>=1.1.1",
|
|
48
|
-
"ipywidgets>=
|
|
49
|
+
"ipywidgets>=7.3.4,<9.0.0", # Support both v7 (Colab) and v8 (Jupyter)
|
|
49
50
|
"uv>=0.8.14",
|
|
51
|
+
"tensorboard>=2.11.0",
|
|
50
52
|
]
|
|
51
53
|
|
|
52
54
|
[project.optional-dependencies]
|
|
53
55
|
dev = [
|
|
54
56
|
"pytest>=6.0",
|
|
55
57
|
"pytest-cov>=2.0",
|
|
58
|
+
"pytest-mock>=3.10.0",
|
|
56
59
|
"black>=21.0",
|
|
57
60
|
"flake8>=3.8",
|
|
58
61
|
"mypy>=0.800",
|
|
@@ -9,7 +9,6 @@ from pathlib import Path
|
|
|
9
9
|
from pprint import pformat
|
|
10
10
|
from typing import Any
|
|
11
11
|
|
|
12
|
-
import mlflow
|
|
13
12
|
import torch
|
|
14
13
|
from torch.utils.data import Dataset
|
|
15
14
|
|
|
@@ -20,6 +19,7 @@ from rapidfireai.db.rf_db import RfDb
|
|
|
20
19
|
from rapidfireai.utils.automl_utils import get_flattened_config_leaf, get_runs
|
|
21
20
|
from rapidfireai.utils.constants import (
|
|
22
21
|
MLFLOW_URL,
|
|
22
|
+
TENSORBOARD_LOG_DIR,
|
|
23
23
|
ControllerTask,
|
|
24
24
|
ExperimentTask,
|
|
25
25
|
RunEndedBy,
|
|
@@ -27,11 +27,12 @@ from rapidfireai.utils.constants import (
|
|
|
27
27
|
RunStatus,
|
|
28
28
|
TaskStatus,
|
|
29
29
|
WorkerTask,
|
|
30
|
+
get_tracking_backend,
|
|
30
31
|
)
|
|
31
32
|
from rapidfireai.utils.datapaths import DataPath
|
|
32
33
|
from rapidfireai.utils.exceptions import ControllerException, NoGPUsFoundException
|
|
33
34
|
from rapidfireai.utils.logging import RFLogger
|
|
34
|
-
from rapidfireai.utils.
|
|
35
|
+
from rapidfireai.utils.metric_logger import create_metric_logger
|
|
35
36
|
from rapidfireai.utils.serialize import encode_payload
|
|
36
37
|
from rapidfireai.utils.shm_manager import SharedMemoryManager
|
|
37
38
|
from rapidfireai.utils.worker_manager import WorkerManager
|
|
@@ -79,9 +80,20 @@ class Controller:
|
|
|
79
80
|
self.num_workers, registry, process_lock
|
|
80
81
|
)
|
|
81
82
|
|
|
82
|
-
# create
|
|
83
|
-
|
|
84
|
-
self.
|
|
83
|
+
# create metric logger
|
|
84
|
+
# Initialize DataPath temporarily to get experiment path for tensorboard logs
|
|
85
|
+
experiment_path = self.db.get_experiments_path(self.experiment_name)
|
|
86
|
+
DataPath.initialize(self.experiment_name, experiment_path)
|
|
87
|
+
tensorboard_log_dir = TENSORBOARD_LOG_DIR or str(DataPath.experiments_path / "tensorboard_logs")
|
|
88
|
+
|
|
89
|
+
self.metric_logger = create_metric_logger(
|
|
90
|
+
backend=get_tracking_backend(),
|
|
91
|
+
mlflow_tracking_uri=MLFLOW_URL,
|
|
92
|
+
tensorboard_log_dir=tensorboard_log_dir,
|
|
93
|
+
)
|
|
94
|
+
# Get experiment if using MLflow
|
|
95
|
+
if hasattr(self.metric_logger, 'get_experiment'):
|
|
96
|
+
self.metric_logger.get_experiment(self.experiment_name)
|
|
85
97
|
|
|
86
98
|
self.logger.debug("Controller initialized")
|
|
87
99
|
|
|
@@ -148,20 +160,20 @@ class Controller:
|
|
|
148
160
|
f"Failed to create required Run DataPath directories: {e}"
|
|
149
161
|
) from e
|
|
150
162
|
|
|
151
|
-
# create new
|
|
163
|
+
# create new tracking run
|
|
152
164
|
try:
|
|
153
|
-
# create new
|
|
154
|
-
mlflow_run_id = self.
|
|
165
|
+
# create new tracking run and get the mlflow_run_id
|
|
166
|
+
mlflow_run_id = self.metric_logger.create_run(str(run_id))
|
|
155
167
|
|
|
156
|
-
# populate
|
|
168
|
+
# populate tracking backend with model config info
|
|
157
169
|
for key, value in flattened_config.items():
|
|
158
|
-
self.
|
|
170
|
+
self.metric_logger.log_param(mlflow_run_id, key, value)
|
|
159
171
|
if warm_started_from:
|
|
160
|
-
self.
|
|
172
|
+
self.metric_logger.log_param(
|
|
161
173
|
mlflow_run_id, "warm-start", str(warm_started_from)
|
|
162
174
|
)
|
|
163
175
|
if cloned_from:
|
|
164
|
-
self.
|
|
176
|
+
self.metric_logger.log_param(
|
|
165
177
|
mlflow_run_id, "parent-run", str(cloned_from)
|
|
166
178
|
)
|
|
167
179
|
self.logger.debug(
|
|
@@ -172,10 +184,11 @@ class Controller:
|
|
|
172
184
|
mlflow_run_id=mlflow_run_id,
|
|
173
185
|
flattened_config=flattened_config,
|
|
174
186
|
)
|
|
175
|
-
except
|
|
176
|
-
|
|
187
|
+
except Exception as e:
|
|
188
|
+
# Catch any metric logger exceptions (MLflow, TensorBoard, etc.)
|
|
189
|
+
msg = f"Error creating new tracking run for run {run_id} - {e}."
|
|
177
190
|
print(msg)
|
|
178
|
-
self.
|
|
191
|
+
self.metric_logger.end_run(mlflow_run_id)
|
|
179
192
|
self.logger.error(msg, exc_info=True)
|
|
180
193
|
|
|
181
194
|
total_runs = len(runs)
|
|
@@ -249,7 +262,7 @@ class Controller:
|
|
|
249
262
|
|
|
250
263
|
# delete run from MLFlow
|
|
251
264
|
mlflow_run_id = self.db.get_run(run_id)["mlflow_run_id"]
|
|
252
|
-
self.
|
|
265
|
+
self.metric_logger.delete_run(mlflow_run_id)
|
|
253
266
|
# mark run as deleted
|
|
254
267
|
self.db.set_run_details(
|
|
255
268
|
run_id=run_id,
|
|
@@ -24,11 +24,11 @@ from rapidfireai.ml.checkpoint_utils import (
|
|
|
24
24
|
save_model_to_shared_memory,
|
|
25
25
|
)
|
|
26
26
|
from rapidfireai.ml.trainer import create_trainer_instance
|
|
27
|
-
from rapidfireai.utils.constants import MLFLOW_URL, USE_SHARED_MEMORY, RunStatus, SHMObjectType, TaskStatus, WorkerTask
|
|
27
|
+
from rapidfireai.utils.constants import MLFLOW_URL, USE_SHARED_MEMORY, TENSORBOARD_LOG_DIR, RunStatus, SHMObjectType, TaskStatus, WorkerTask, get_tracking_backend
|
|
28
28
|
from rapidfireai.utils.datapaths import DataPath
|
|
29
29
|
from rapidfireai.utils.exceptions import WorkerException
|
|
30
30
|
from rapidfireai.utils.logging import RFLogger, TrainingLogger
|
|
31
|
-
from rapidfireai.utils.
|
|
31
|
+
from rapidfireai.utils.metric_logger import create_metric_logger
|
|
32
32
|
from rapidfireai.utils.serialize import decode_db_payload
|
|
33
33
|
from rapidfireai.utils.shm_manager import SharedMemoryManager
|
|
34
34
|
from rapidfireai.utils.trainer_config import TrainerConfig
|
|
@@ -71,13 +71,20 @@ class Worker:
|
|
|
71
71
|
# get experiment name
|
|
72
72
|
self.experiment_name: str = self.db.get_running_experiment()["experiment_name"]
|
|
73
73
|
|
|
74
|
-
# create mlflow manager
|
|
75
|
-
self.mlflow_manager: MLflowManager = MLflowManager(MLFLOW_URL)
|
|
76
|
-
self.mlflow_manager.get_experiment(self.experiment_name)
|
|
77
|
-
|
|
78
74
|
# initialize data paths
|
|
79
75
|
DataPath.initialize(self.experiment_name, self.db.get_experiments_path(self.experiment_name))
|
|
80
76
|
|
|
77
|
+
# create metric logger
|
|
78
|
+
tensorboard_log_dir = TENSORBOARD_LOG_DIR or str(DataPath.experiments_path / "tensorboard_logs")
|
|
79
|
+
self.metric_logger = create_metric_logger(
|
|
80
|
+
backend=get_tracking_backend(),
|
|
81
|
+
mlflow_tracking_uri=MLFLOW_URL,
|
|
82
|
+
tensorboard_log_dir=tensorboard_log_dir,
|
|
83
|
+
)
|
|
84
|
+
# Get experiment if using MLflow
|
|
85
|
+
if hasattr(self.metric_logger, 'get_experiment'):
|
|
86
|
+
self.metric_logger.get_experiment(self.experiment_name)
|
|
87
|
+
|
|
81
88
|
# load datasets
|
|
82
89
|
self.train_dataset, self.eval_dataset, self.num_chunks = self.load_datasets()
|
|
83
90
|
self.len_train_dataset = len(self.train_dataset)
|
|
@@ -149,7 +156,7 @@ class Worker:
|
|
|
149
156
|
stderr_buffer = StringIO()
|
|
150
157
|
with redirect_stdout(stdout_buffer), redirect_stderr(stderr_buffer):
|
|
151
158
|
trainer_instance, base_model_name = create_trainer_instance(
|
|
152
|
-
trainer_config, self.shm_manager, USE_SHARED_MEMORY, self.
|
|
159
|
+
trainer_config, self.shm_manager, USE_SHARED_MEMORY, self.metric_logger, chunk_id
|
|
153
160
|
)
|
|
154
161
|
|
|
155
162
|
# if first time, save checkpoint to disk
|
|
@@ -398,8 +398,35 @@ def main():
|
|
|
398
398
|
action="version",
|
|
399
399
|
version=f"RapidFire AI {__version__}"
|
|
400
400
|
)
|
|
401
|
-
|
|
401
|
+
|
|
402
|
+
parser.add_argument(
|
|
403
|
+
"--tracking-backend",
|
|
404
|
+
choices=["mlflow", "tensorboard", "both"],
|
|
405
|
+
default=os.getenv("RF_TRACKING_BACKEND", "mlflow"),
|
|
406
|
+
help="Tracking backend to use for metrics (default: mlflow)"
|
|
407
|
+
)
|
|
408
|
+
|
|
409
|
+
parser.add_argument(
|
|
410
|
+
"--tensorboard-log-dir",
|
|
411
|
+
default=os.getenv("RF_TENSORBOARD_LOG_DIR", None),
|
|
412
|
+
help="Directory for TensorBoard logs (default: {experiment_path}/tensorboard_logs)"
|
|
413
|
+
)
|
|
414
|
+
|
|
415
|
+
parser.add_argument(
|
|
416
|
+
"--colab",
|
|
417
|
+
action="store_true",
|
|
418
|
+
help="Run in Colab mode (skips frontend, conditionally starts MLflow based on tracking backend)"
|
|
419
|
+
)
|
|
420
|
+
|
|
402
421
|
args = parser.parse_args()
|
|
422
|
+
|
|
423
|
+
# Set environment variables from CLI args
|
|
424
|
+
if args.tracking_backend:
|
|
425
|
+
os.environ["RF_TRACKING_BACKEND"] = args.tracking_backend
|
|
426
|
+
if args.tensorboard_log_dir:
|
|
427
|
+
os.environ["RF_TENSORBOARD_LOG_DIR"] = args.tensorboard_log_dir
|
|
428
|
+
if args.colab:
|
|
429
|
+
os.environ["RF_COLAB_MODE"] = "true"
|
|
403
430
|
|
|
404
431
|
# Handle doctor command separately
|
|
405
432
|
if args.command == "doctor":
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
CREATE TABLE IF NOT EXISTS experiments (
|
|
3
3
|
experiment_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
4
4
|
experiment_name TEXT NOT NULL,
|
|
5
|
-
mlflow_experiment_id TEXT
|
|
5
|
+
mlflow_experiment_id TEXT,
|
|
6
6
|
config_options TEXT NOT NULL,
|
|
7
7
|
status TEXT NOT NULL,
|
|
8
8
|
current_task TEXT NOT NULL,
|
|
@@ -30,7 +30,9 @@ class Dispatcher:
|
|
|
30
30
|
self.app: Flask = Flask(__name__)
|
|
31
31
|
|
|
32
32
|
# Enable CORS for all routes
|
|
33
|
-
|
|
33
|
+
# Allow all origins for local development (dispatcher runs on localhost)
|
|
34
|
+
# This is safe since the API is not exposed to the internet
|
|
35
|
+
_ = CORS(self.app, resources={r"/*": {"origins": "*"}})
|
|
34
36
|
|
|
35
37
|
# register routes
|
|
36
38
|
self.register_routes()
|
|
@@ -5,7 +5,7 @@ from rapidfireai.utils.constants import DispatcherConfig
|
|
|
5
5
|
|
|
6
6
|
# Other Gunicorn settings...
|
|
7
7
|
bind = f"{DispatcherConfig.HOST}:{DispatcherConfig.PORT}"
|
|
8
|
-
workers =
|
|
8
|
+
workers = 1 # Single worker for Colab/single-user environments to save memory
|
|
9
9
|
|
|
10
10
|
wsgi_app = "rapidfireai.dispatcher.dispatcher:serve_forever()"
|
|
11
11
|
|
|
@@ -17,9 +17,11 @@ from rapidfireai.utils.constants import MLFLOW_URL
|
|
|
17
17
|
from rapidfireai.utils.exceptions import ExperimentException
|
|
18
18
|
from rapidfireai.utils.experiment_utils import ExperimentUtils
|
|
19
19
|
from rapidfireai.utils.logging import RFLogger
|
|
20
|
-
from rapidfireai.utils.mlflow_manager import MLflowManager
|
|
21
20
|
from rapidfireai.version import __version__
|
|
22
21
|
|
|
22
|
+
# Note: MLflowManager is imported lazily in get_results() to avoid
|
|
23
|
+
# connection attempts when using tensorboard-only mode
|
|
24
|
+
|
|
23
25
|
|
|
24
26
|
class Experiment:
|
|
25
27
|
"""Class to manage the entire experiment lifecycle."""
|
|
@@ -39,6 +41,7 @@ class Experiment:
|
|
|
39
41
|
self.experiment_id: int | None = None
|
|
40
42
|
self.log_server_process: mp.Process | None = None
|
|
41
43
|
self.worker_processes: list[mp.Process] = []
|
|
44
|
+
self._training_thread: Any = None # Track background training thread (Colab only)
|
|
42
45
|
|
|
43
46
|
# create db tables
|
|
44
47
|
try:
|
|
@@ -88,13 +91,68 @@ class Experiment:
|
|
|
88
91
|
seed: int = 42,
|
|
89
92
|
) -> None:
|
|
90
93
|
"""Run the fit"""
|
|
94
|
+
|
|
95
|
+
# Check if training is already running
|
|
96
|
+
if self._training_thread is not None and self._training_thread.is_alive():
|
|
97
|
+
print("⚠️ Training is already running in background. Please wait for it to complete.")
|
|
98
|
+
return
|
|
99
|
+
|
|
100
|
+
# Detect if running in Google Colab
|
|
91
101
|
try:
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
except
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
102
|
+
import google.colab
|
|
103
|
+
in_colab = True
|
|
104
|
+
except ImportError:
|
|
105
|
+
in_colab = False
|
|
106
|
+
|
|
107
|
+
if in_colab:
|
|
108
|
+
# Run Controller in background thread to keep kernel responsive
|
|
109
|
+
import threading
|
|
110
|
+
import sys
|
|
111
|
+
from io import StringIO
|
|
112
|
+
from IPython.display import display, HTML
|
|
113
|
+
|
|
114
|
+
def _run_controller_background():
|
|
115
|
+
"""Run controller in background thread with output suppression"""
|
|
116
|
+
# Suppress stdout to avoid print statements appearing in wrong cells
|
|
117
|
+
old_stdout = sys.stdout
|
|
118
|
+
sys.stdout = StringIO()
|
|
119
|
+
|
|
120
|
+
try:
|
|
121
|
+
controller = Controller(self.experiment_id, self.experiment_name)
|
|
122
|
+
controller.run_fit(param_config, create_model_fn, train_dataset, eval_dataset, num_chunks, seed)
|
|
123
|
+
except Exception as e:
|
|
124
|
+
# Restore stdout for error logging
|
|
125
|
+
sys.stdout = old_stdout
|
|
126
|
+
if hasattr(self, "logger"):
|
|
127
|
+
self.logger.opt(exception=True).error(f"Error in background training: {e}")
|
|
128
|
+
display(HTML(f'<p style="color: red; font-weight: bold;">❌ Error in background training: {e}</p>'))
|
|
129
|
+
finally:
|
|
130
|
+
# Restore stdout
|
|
131
|
+
sys.stdout = old_stdout
|
|
132
|
+
# Display completion message
|
|
133
|
+
display(HTML('<p style="color: blue; font-weight: bold;">🎉 Training completed! Check InteractiveController for final results.</p>'))
|
|
134
|
+
self._training_thread = None
|
|
135
|
+
|
|
136
|
+
self._training_thread = threading.Thread(target=_run_controller_background, daemon=True)
|
|
137
|
+
self._training_thread.start()
|
|
138
|
+
|
|
139
|
+
# Use IPython display for reliable output in Colab
|
|
140
|
+
display(HTML(
|
|
141
|
+
'<div style="padding: 10px; background-color: #d4edda; border: 1px solid #28a745; border-radius: 5px; color: #155724;">'
|
|
142
|
+
'<b>✓ Training started in background</b><br>'
|
|
143
|
+
'Use InteractiveController to monitor progress. The notebook kernel will remain responsive while training runs.<br>'
|
|
144
|
+
'<small>Tip: Interact with InteractiveController periodically to keep Colab active.</small>'
|
|
145
|
+
'</div>'
|
|
146
|
+
))
|
|
147
|
+
else:
|
|
148
|
+
# Original blocking behavior for non-Colab environments
|
|
149
|
+
try:
|
|
150
|
+
controller = Controller(self.experiment_id, self.experiment_name)
|
|
151
|
+
controller.run_fit(param_config, create_model_fn, train_dataset, eval_dataset, num_chunks, seed)
|
|
152
|
+
except Exception as e:
|
|
153
|
+
if hasattr(self, "logger"):
|
|
154
|
+
self.logger.opt(exception=True).error(f"Error running fit: {e}")
|
|
155
|
+
raise ExperimentException(f"Error running fit: {e}, traceback: {traceback.format_exc()}") from e
|
|
98
156
|
|
|
99
157
|
def get_results(self) -> pd.DataFrame:
|
|
100
158
|
"""
|
|
@@ -102,6 +160,16 @@ class Experiment:
|
|
|
102
160
|
"""
|
|
103
161
|
try:
|
|
104
162
|
runs_info_df = self.experiment_utils.get_runs_info()
|
|
163
|
+
|
|
164
|
+
# Check if there are any mlflow_run_ids before importing MLflow
|
|
165
|
+
has_mlflow_runs = runs_info_df.get("mlflow_run_id") is not None and runs_info_df["mlflow_run_id"].notna().any()
|
|
166
|
+
|
|
167
|
+
if not has_mlflow_runs:
|
|
168
|
+
# No MLflow runs to fetch, return empty DataFrame
|
|
169
|
+
return pd.DataFrame(columns=["run_id", "step"])
|
|
170
|
+
|
|
171
|
+
# Lazy import - only import when we actually have MLflow runs to fetch
|
|
172
|
+
from rapidfireai.utils.mlflow_manager import MLflowManager
|
|
105
173
|
mlflow_manager = MLflowManager(MLFLOW_URL)
|
|
106
174
|
|
|
107
175
|
metrics_data = []
|
{rapidfireai-0.10.2rc4 → rapidfireai-0.10.3rc1}/rapidfireai/frontend/build/asset-manifest.json
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": {
|
|
3
3
|
"main.css": "/static-files/static/css/main.702595df.css",
|
|
4
|
-
"main.js": "/static-files/static/js/main.
|
|
4
|
+
"main.js": "/static-files/static/js/main.e7d3b759.js",
|
|
5
5
|
"ml-model-trace-renderer.js": "/static-files/lib/notebook-trace-renderer/js/ml-model-trace-renderer.5490ebc325fe0f300ad9.js",
|
|
6
6
|
"static/js/6019.9025341e.chunk.js": "/static-files/static/js/6019.9025341e.chunk.js",
|
|
7
7
|
"static/js/6336.8153bc1c.chunk.js": "/static-files/static/js/6336.8153bc1c.chunk.js",
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
"static/media/chart-line.svg": "/static-files/static/media/chart-line.0adaa2036bb4eb5956db6d0c7e925a3d.svg",
|
|
121
121
|
"lib/notebook-trace-renderer/index.html": "/static-files/lib/notebook-trace-renderer/index.html",
|
|
122
122
|
"main.702595df.css.map": "/static-files/static/css/main.702595df.css.map",
|
|
123
|
-
"main.
|
|
123
|
+
"main.e7d3b759.js.map": "/static-files/static/js/main.e7d3b759.js.map",
|
|
124
124
|
"ml-model-trace-renderer.js.map": "/static-files/lib/notebook-trace-renderer/js/ml-model-trace-renderer.5490ebc325fe0f300ad9.js.map",
|
|
125
125
|
"6336.8153bc1c.chunk.js.map": "/static-files/static/js/6336.8153bc1c.chunk.js.map",
|
|
126
126
|
"9478.cbf55ef3.chunk.js.map": "/static-files/static/js/9478.cbf55ef3.chunk.js.map",
|
|
@@ -216,6 +216,6 @@
|
|
|
216
216
|
},
|
|
217
217
|
"entrypoints": [
|
|
218
218
|
"static/css/main.702595df.css",
|
|
219
|
-
"static/js/main.
|
|
219
|
+
"static/js/main.e7d3b759.js"
|
|
220
220
|
]
|
|
221
221
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><link rel="shortcut icon" href="./static-files/favicon.ico"/><meta name="theme-color" content="#000000"/><link rel="manifest" href="./static-files/manifest.json" crossorigin="use-credentials"/><title>RapidFire AI</title><script defer="defer" src="static-files/static/js/main.
|
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><link rel="shortcut icon" href="./static-files/favicon.ico"/><meta name="theme-color" content="#000000"/><link rel="manifest" href="./static-files/manifest.json" crossorigin="use-credentials"/><title>RapidFire AI</title><script defer="defer" src="static-files/static/js/main.e7d3b759.js"></script><link href="static-files/static/css/main.702595df.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root" class="mlflow-ui-container"></div><div id="modal" class="mlflow-ui-container"></div></body></html>
|