rapidfireai 0.0.1__py3-none-any.whl → 0.9.9__py3-none-any.whl

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.

Files changed (320) hide show
  1. rapidfireai/__init__.py +11 -5
  2. rapidfireai/automl/__init__.py +20 -0
  3. rapidfireai/automl/base.py +48 -0
  4. rapidfireai/automl/datatypes.py +42 -0
  5. rapidfireai/automl/grid_search.py +125 -0
  6. rapidfireai/automl/model_config.py +102 -0
  7. rapidfireai/automl/random_search.py +145 -0
  8. rapidfireai/backend/__init__.py +0 -0
  9. rapidfireai/backend/chunks.py +63 -0
  10. rapidfireai/backend/controller.py +637 -0
  11. rapidfireai/backend/scheduler.py +137 -0
  12. rapidfireai/backend/worker.py +272 -0
  13. rapidfireai/cli.py +380 -0
  14. rapidfireai/db/__init__.py +0 -0
  15. rapidfireai/db/db_interface.py +135 -0
  16. rapidfireai/db/rf_db.py +694 -0
  17. rapidfireai/db/tables.sql +64 -0
  18. rapidfireai/dispatcher/dispatcher.py +391 -0
  19. rapidfireai/dispatcher/gunicorn.conf.py +25 -0
  20. rapidfireai/experiment.py +168 -0
  21. rapidfireai/frontend/build/asset-manifest.json +276 -0
  22. rapidfireai/frontend/build/favicon.ico +0 -0
  23. rapidfireai/frontend/build/index.html +1 -0
  24. rapidfireai/frontend/build/manifest.json +15 -0
  25. rapidfireai/frontend/build/pdf.worker.js +1 -0
  26. rapidfireai/frontend/build/report.html +39 -0
  27. rapidfireai/frontend/build/static/css/1482.3b7bf531.chunk.css +1 -0
  28. rapidfireai/frontend/build/static/css/2730.3f8937ff.chunk.css +1 -0
  29. rapidfireai/frontend/build/static/css/318.0def90a7.css +7 -0
  30. rapidfireai/frontend/build/static/css/4762.9b7b71f7.chunk.css +1 -0
  31. rapidfireai/frontend/build/static/css/4950.487ecc8b.chunk.css +1 -0
  32. rapidfireai/frontend/build/static/css/5170.2574ce9d.chunk.css +1 -0
  33. rapidfireai/frontend/build/static/css/6121.4d541986.chunk.css +1 -0
  34. rapidfireai/frontend/build/static/css/6343.dd6979f2.chunk.css +1 -0
  35. rapidfireai/frontend/build/static/css/6534.433c213f.chunk.css +1 -0
  36. rapidfireai/frontend/build/static/css/6920.ffac4b2a.css +2 -0
  37. rapidfireai/frontend/build/static/css/7246.bf2f0c87.css +9 -0
  38. rapidfireai/frontend/build/static/css/7367.dd6979f2.chunk.css +1 -0
  39. rapidfireai/frontend/build/static/css/8690.05d081e5.chunk.css +1 -0
  40. rapidfireai/frontend/build/static/css/9531.d0910d3c.chunk.css +1 -0
  41. rapidfireai/frontend/build/static/css/9780.363e4943.chunk.css +1 -0
  42. rapidfireai/frontend/build/static/css/main~d91a9049.c0be472c.css +1 -0
  43. rapidfireai/frontend/build/static/js/1000.e5ed264b.chunk.js +1 -0
  44. rapidfireai/frontend/build/static/js/1012.ac98ab59.chunk.js +1 -0
  45. rapidfireai/frontend/build/static/js/1079.6c13ac0d.js +1 -0
  46. rapidfireai/frontend/build/static/js/110.9059f3b8.chunk.js +1 -0
  47. rapidfireai/frontend/build/static/js/1142.872d0010.chunk.js +1 -0
  48. rapidfireai/frontend/build/static/js/1167.9a6da14c.chunk.js +1 -0
  49. rapidfireai/frontend/build/static/js/1248.60890b4f.chunk.js +1 -0
  50. rapidfireai/frontend/build/static/js/1262.83dc7673.chunk.js +1 -0
  51. rapidfireai/frontend/build/static/js/1273.56da3e13.chunk.js +2 -0
  52. rapidfireai/frontend/build/static/js/1273.56da3e13.chunk.js.LICENSE.txt +9 -0
  53. rapidfireai/frontend/build/static/js/1303.7d19305c.chunk.js +1 -0
  54. rapidfireai/frontend/build/static/js/1351.45076ff3.chunk.js +1 -0
  55. rapidfireai/frontend/build/static/js/1355.b896a592.js +1 -0
  56. rapidfireai/frontend/build/static/js/1357.02c46a02.chunk.js +1 -0
  57. rapidfireai/frontend/build/static/js/1470.c51d60c6.chunk.js +1 -0
  58. rapidfireai/frontend/build/static/js/1482.23b74f50.chunk.js +1 -0
  59. rapidfireai/frontend/build/static/js/1500.19799d8d.chunk.js +1 -0
  60. rapidfireai/frontend/build/static/js/1648.d3b9edc7.chunk.js +1 -0
  61. rapidfireai/frontend/build/static/js/1860.7d96e3f9.chunk.js +1 -0
  62. rapidfireai/frontend/build/static/js/1909.5b1d9ff4.chunk.js +1 -0
  63. rapidfireai/frontend/build/static/js/1928.44245110.chunk.js +2 -0
  64. rapidfireai/frontend/build/static/js/1928.44245110.chunk.js.LICENSE.txt +11 -0
  65. rapidfireai/frontend/build/static/js/1933.deba26ca.chunk.js +1 -0
  66. rapidfireai/frontend/build/static/js/21.aac92802.chunk.js +1 -0
  67. rapidfireai/frontend/build/static/js/2103.0ca12071.chunk.js +1 -0
  68. rapidfireai/frontend/build/static/js/2258.b3b8fab4.chunk.js +1 -0
  69. rapidfireai/frontend/build/static/js/2289.9ad51e87.chunk.js +1 -0
  70. rapidfireai/frontend/build/static/js/2323.7dd927d7.js +2 -0
  71. rapidfireai/frontend/build/static/js/2323.7dd927d7.js.LICENSE.txt +1 -0
  72. rapidfireai/frontend/build/static/js/2346.ed99ca72.chunk.js +1 -0
  73. rapidfireai/frontend/build/static/js/2386.0a660834.chunk.js +1 -0
  74. rapidfireai/frontend/build/static/js/2402.465048f9.chunk.js +1 -0
  75. rapidfireai/frontend/build/static/js/243.5a83bbca.chunk.js +1 -0
  76. rapidfireai/frontend/build/static/js/2589.68571e16.js +1 -0
  77. rapidfireai/frontend/build/static/js/2647.65092bab.chunk.js +1 -0
  78. rapidfireai/frontend/build/static/js/2691.65d4a4e7.js +1 -0
  79. rapidfireai/frontend/build/static/js/2730.b38dd6f3.chunk.js +1 -0
  80. rapidfireai/frontend/build/static/js/2746.ef752da4.chunk.js +1 -0
  81. rapidfireai/frontend/build/static/js/2779.580d4491.chunk.js +1 -0
  82. rapidfireai/frontend/build/static/js/2799.fe5993b2.chunk.js +1 -0
  83. rapidfireai/frontend/build/static/js/2844.9708db79.chunk.js +2 -0
  84. rapidfireai/frontend/build/static/js/2844.9708db79.chunk.js.LICENSE.txt +21 -0
  85. rapidfireai/frontend/build/static/js/2901.ee0c606b.chunk.js +1 -0
  86. rapidfireai/frontend/build/static/js/2932.7cc0689b.chunk.js +2 -0
  87. rapidfireai/frontend/build/static/js/2932.7cc0689b.chunk.js.LICENSE.txt +6 -0
  88. rapidfireai/frontend/build/static/js/2956.a393c8cc.chunk.js +1 -0
  89. rapidfireai/frontend/build/static/js/2972.679bed05.chunk.js +1 -0
  90. rapidfireai/frontend/build/static/js/2985.7e51cdfa.chunk.js +2 -0
  91. rapidfireai/frontend/build/static/js/2985.7e51cdfa.chunk.js.LICENSE.txt +51 -0
  92. rapidfireai/frontend/build/static/js/3093.488df653.js +1 -0
  93. rapidfireai/frontend/build/static/js/3145.66ee61b9.js +1 -0
  94. rapidfireai/frontend/build/static/js/3170.a22f966a.chunk.js +2 -0
  95. rapidfireai/frontend/build/static/js/3170.a22f966a.chunk.js.LICENSE.txt +21 -0
  96. rapidfireai/frontend/build/static/js/3307.f6fb258c.chunk.js +1 -0
  97. rapidfireai/frontend/build/static/js/3325.d5b03d65.js +1 -0
  98. rapidfireai/frontend/build/static/js/3334.2d6704df.chunk.js +2 -0
  99. rapidfireai/frontend/build/static/js/3334.2d6704df.chunk.js.LICENSE.txt +6 -0
  100. rapidfireai/frontend/build/static/js/3387.bb8edad3.chunk.js +1 -0
  101. rapidfireai/frontend/build/static/js/3448.438e6579.chunk.js +1 -0
  102. rapidfireai/frontend/build/static/js/3460.735eea87.chunk.js +1 -0
  103. rapidfireai/frontend/build/static/js/3505.7fd3921a.js +2 -0
  104. rapidfireai/frontend/build/static/js/3505.7fd3921a.js.LICENSE.txt +9 -0
  105. rapidfireai/frontend/build/static/js/3510.cd167a00.js +2 -0
  106. rapidfireai/frontend/build/static/js/3510.cd167a00.js.LICENSE.txt +18 -0
  107. rapidfireai/frontend/build/static/js/3563.cc828e19.chunk.js +1 -0
  108. rapidfireai/frontend/build/static/js/359.08960b84.chunk.js +2 -0
  109. rapidfireai/frontend/build/static/js/359.08960b84.chunk.js.LICENSE.txt +4 -0
  110. rapidfireai/frontend/build/static/js/3608.403b4b79.chunk.js +1 -0
  111. rapidfireai/frontend/build/static/js/3652.cb8add7f.js +1 -0
  112. rapidfireai/frontend/build/static/js/3775.5230b157.chunk.js +1 -0
  113. rapidfireai/frontend/build/static/js/3817.53555d18.js +2 -0
  114. rapidfireai/frontend/build/static/js/3817.53555d18.js.LICENSE.txt +18 -0
  115. rapidfireai/frontend/build/static/js/3835.d9946ff9.chunk.js +1 -0
  116. rapidfireai/frontend/build/static/js/3964.874f0297.chunk.js +1 -0
  117. rapidfireai/frontend/build/static/js/3968.275cbc3d.chunk.js +1 -0
  118. rapidfireai/frontend/build/static/js/3999.765cbd82.chunk.js +1 -0
  119. rapidfireai/frontend/build/static/js/4020.4452c046.chunk.js +1 -0
  120. rapidfireai/frontend/build/static/js/4138.2f6f6d9f.js +1 -0
  121. rapidfireai/frontend/build/static/js/4160.f424554c.js +1 -0
  122. rapidfireai/frontend/build/static/js/4180.50cea095.chunk.js +1 -0
  123. rapidfireai/frontend/build/static/js/4221.b0bba3f5.chunk.js +1 -0
  124. rapidfireai/frontend/build/static/js/4250.5bb49278.chunk.js +1 -0
  125. rapidfireai/frontend/build/static/js/4297.15777d8f.chunk.js +1 -0
  126. rapidfireai/frontend/build/static/js/4349.c965f2de.js +2 -0
  127. rapidfireai/frontend/build/static/js/4349.c965f2de.js.LICENSE.txt +1 -0
  128. rapidfireai/frontend/build/static/js/4484.4cbe5e7f.js +2 -0
  129. rapidfireai/frontend/build/static/js/4484.4cbe5e7f.js.LICENSE.txt +10 -0
  130. rapidfireai/frontend/build/static/js/4578.a8124588.js +1 -0
  131. rapidfireai/frontend/build/static/js/4596.89a97480.js +1 -0
  132. rapidfireai/frontend/build/static/js/4748.566f435a.chunk.js +1 -0
  133. rapidfireai/frontend/build/static/js/4762.928e8a90.chunk.js +1 -0
  134. rapidfireai/frontend/build/static/js/4768.7945be63.js +2 -0
  135. rapidfireai/frontend/build/static/js/4768.7945be63.js.LICENSE.txt +1 -0
  136. rapidfireai/frontend/build/static/js/4804.26b50dd4.chunk.js +1 -0
  137. rapidfireai/frontend/build/static/js/4850.62390a45.chunk.js +1 -0
  138. rapidfireai/frontend/build/static/js/4862.a0ccb221.chunk.js +1 -0
  139. rapidfireai/frontend/build/static/js/491.5dc8ed40.chunk.js +1 -0
  140. rapidfireai/frontend/build/static/js/492.9262f038.chunk.js +2 -0
  141. rapidfireai/frontend/build/static/js/492.9262f038.chunk.js.LICENSE.txt +6 -0
  142. rapidfireai/frontend/build/static/js/4943.6d345fd3.chunk.js +1 -0
  143. rapidfireai/frontend/build/static/js/4950.bc182e62.chunk.js +1 -0
  144. rapidfireai/frontend/build/static/js/5042.d4f0c65a.chunk.js +2 -0
  145. rapidfireai/frontend/build/static/js/5042.d4f0c65a.chunk.js.LICENSE.txt +6 -0
  146. rapidfireai/frontend/build/static/js/5170.0065e96f.chunk.js +1 -0
  147. rapidfireai/frontend/build/static/js/5222.35c74a52.js +2 -0
  148. rapidfireai/frontend/build/static/js/5222.35c74a52.js.LICENSE.txt +10 -0
  149. rapidfireai/frontend/build/static/js/5223.3224f019.chunk.js +2 -0
  150. rapidfireai/frontend/build/static/js/5223.3224f019.chunk.js.LICENSE.txt +3 -0
  151. rapidfireai/frontend/build/static/js/5229.7dd42316.chunk.js +1 -0
  152. rapidfireai/frontend/build/static/js/5286.4c1ad26b.js +1 -0
  153. rapidfireai/frontend/build/static/js/5486.21cff711.chunk.js +1 -0
  154. rapidfireai/frontend/build/static/js/5526.7b368956.chunk.js +1 -0
  155. rapidfireai/frontend/build/static/js/5605.1ee4d87b.chunk.js +1 -0
  156. rapidfireai/frontend/build/static/js/5682.40b42d8b.chunk.js +1 -0
  157. rapidfireai/frontend/build/static/js/5794.9433d867.chunk.js +1 -0
  158. rapidfireai/frontend/build/static/js/5826.38a56e8c.chunk.js +2 -0
  159. rapidfireai/frontend/build/static/js/5826.38a56e8c.chunk.js.LICENSE.txt +1 -0
  160. rapidfireai/frontend/build/static/js/5862.50f42a0b.js +1 -0
  161. rapidfireai/frontend/build/static/js/5895.e26742f1.chunk.js +1 -0
  162. rapidfireai/frontend/build/static/js/5919.edd4a5cf.chunk.js +1 -0
  163. rapidfireai/frontend/build/static/js/598.a0e792ae.js +1 -0
  164. rapidfireai/frontend/build/static/js/6058.74162bf9.chunk.js +1 -0
  165. rapidfireai/frontend/build/static/js/618.06051134.chunk.js +2 -0
  166. rapidfireai/frontend/build/static/js/618.06051134.chunk.js.LICENSE.txt +21 -0
  167. rapidfireai/frontend/build/static/js/6335.9fca442d.chunk.js +1 -0
  168. rapidfireai/frontend/build/static/js/6336.e05e1154.chunk.js +1 -0
  169. rapidfireai/frontend/build/static/js/6343.2bcd28ff.chunk.js +1 -0
  170. rapidfireai/frontend/build/static/js/6363.a319b8f2.chunk.js +1 -0
  171. rapidfireai/frontend/build/static/js/6478.344abf25.chunk.js +1 -0
  172. rapidfireai/frontend/build/static/js/6504.1c004564.js +1 -0
  173. rapidfireai/frontend/build/static/js/6534.ec7e149b.chunk.js +1 -0
  174. rapidfireai/frontend/build/static/js/6715.55a5c19c.chunk.js +1 -0
  175. rapidfireai/frontend/build/static/js/6756.e6cb993c.chunk.js +2 -0
  176. rapidfireai/frontend/build/static/js/6756.e6cb993c.chunk.js.LICENSE.txt +10 -0
  177. rapidfireai/frontend/build/static/js/6762.acfde9fd.chunk.js +2 -0
  178. rapidfireai/frontend/build/static/js/6762.acfde9fd.chunk.js.LICENSE.txt +19 -0
  179. rapidfireai/frontend/build/static/js/6846.67103d0e.chunk.js +1 -0
  180. rapidfireai/frontend/build/static/js/6861.34cf0198.chunk.js +1 -0
  181. rapidfireai/frontend/build/static/js/6899.0eaf36a8.chunk.js +2 -0
  182. rapidfireai/frontend/build/static/js/6899.0eaf36a8.chunk.js.LICENSE.txt +5 -0
  183. rapidfireai/frontend/build/static/js/6933.8b564944.chunk.js +1 -0
  184. rapidfireai/frontend/build/static/js/699.d0437920.js +1 -0
  185. rapidfireai/frontend/build/static/js/7076.4182f63a.chunk.js +1 -0
  186. rapidfireai/frontend/build/static/js/7186.42ad86d5.chunk.js +1 -0
  187. rapidfireai/frontend/build/static/js/7248.a46635fd.js +1 -0
  188. rapidfireai/frontend/build/static/js/725.6b15a14a.chunk.js +1 -0
  189. rapidfireai/frontend/build/static/js/7266.3575539d.chunk.js +1 -0
  190. rapidfireai/frontend/build/static/js/7270.0a1e84fc.chunk.js +2 -0
  191. rapidfireai/frontend/build/static/js/7270.0a1e84fc.chunk.js.LICENSE.txt +6 -0
  192. rapidfireai/frontend/build/static/js/7367.7120474f.chunk.js +1 -0
  193. rapidfireai/frontend/build/static/js/7436.8e226055.js +1 -0
  194. rapidfireai/frontend/build/static/js/7504.ef223844.chunk.js +1 -0
  195. rapidfireai/frontend/build/static/js/7603.ee049fe3.chunk.js +1 -0
  196. rapidfireai/frontend/build/static/js/7670.2835b49a.chunk.js +2 -0
  197. rapidfireai/frontend/build/static/js/7670.2835b49a.chunk.js.LICENSE.txt +6 -0
  198. rapidfireai/frontend/build/static/js/7721.7390b3cc.chunk.js +1 -0
  199. rapidfireai/frontend/build/static/js/7731.5796cced.chunk.js +1 -0
  200. rapidfireai/frontend/build/static/js/775.660a5deb.chunk.js +2 -0
  201. rapidfireai/frontend/build/static/js/775.660a5deb.chunk.js.LICENSE.txt +6 -0
  202. rapidfireai/frontend/build/static/js/7832.7976a3e4.chunk.js +1 -0
  203. rapidfireai/frontend/build/static/js/7844.72cc2e81.chunk.js +1 -0
  204. rapidfireai/frontend/build/static/js/7948.48eab032.js +1 -0
  205. rapidfireai/frontend/build/static/js/7972.085079d4.chunk.js +2 -0
  206. rapidfireai/frontend/build/static/js/7972.085079d4.chunk.js.LICENSE.txt +6 -0
  207. rapidfireai/frontend/build/static/js/8017.a9e7dc5a.chunk.js +1 -0
  208. rapidfireai/frontend/build/static/js/8023.75f1f3df.js +2 -0
  209. rapidfireai/frontend/build/static/js/8023.75f1f3df.js.LICENSE.txt +41 -0
  210. rapidfireai/frontend/build/static/js/8123.b69db974.js +1 -0
  211. rapidfireai/frontend/build/static/js/813.065a87e5.chunk.js +1 -0
  212. rapidfireai/frontend/build/static/js/819.2056f122.chunk.js +2 -0
  213. rapidfireai/frontend/build/static/js/819.2056f122.chunk.js.LICENSE.txt +6 -0
  214. rapidfireai/frontend/build/static/js/8262.04bc17d1.chunk.js +1 -0
  215. rapidfireai/frontend/build/static/js/8300.75adcc4f.chunk.js +1 -0
  216. rapidfireai/frontend/build/static/js/8336.b1d3e764.chunk.js +1 -0
  217. rapidfireai/frontend/build/static/js/8365.26cf64ea.chunk.js +1 -0
  218. rapidfireai/frontend/build/static/js/8398.8bca8e0e.chunk.js +2 -0
  219. rapidfireai/frontend/build/static/js/8398.8bca8e0e.chunk.js.LICENSE.txt +6 -0
  220. rapidfireai/frontend/build/static/js/847.33ceed50.chunk.js +2 -0
  221. rapidfireai/frontend/build/static/js/847.33ceed50.chunk.js.LICENSE.txt +6 -0
  222. rapidfireai/frontend/build/static/js/8486.8ec852a7.chunk.js +1 -0
  223. rapidfireai/frontend/build/static/js/8497.19378265.chunk.js +1 -0
  224. rapidfireai/frontend/build/static/js/8541.4c55c9f4.chunk.js +1 -0
  225. rapidfireai/frontend/build/static/js/8690.e305a804.chunk.js +2 -0
  226. rapidfireai/frontend/build/static/js/8690.e305a804.chunk.js.LICENSE.txt +6 -0
  227. rapidfireai/frontend/build/static/js/8712.a9445fe6.chunk.js +1 -0
  228. rapidfireai/frontend/build/static/js/8763.61761e08.js +1 -0
  229. rapidfireai/frontend/build/static/js/8823.baf9bffd.chunk.js +2 -0
  230. rapidfireai/frontend/build/static/js/8823.baf9bffd.chunk.js.LICENSE.txt +6 -0
  231. rapidfireai/frontend/build/static/js/8867.767462b7.chunk.js +1 -0
  232. rapidfireai/frontend/build/static/js/8953.c0f88dea.chunk.js +1 -0
  233. rapidfireai/frontend/build/static/js/8960.357cb1eb.chunk.js +2 -0
  234. rapidfireai/frontend/build/static/js/8960.357cb1eb.chunk.js.LICENSE.txt +6 -0
  235. rapidfireai/frontend/build/static/js/9.f4492795.chunk.js +2 -0
  236. rapidfireai/frontend/build/static/js/9.f4492795.chunk.js.LICENSE.txt +12 -0
  237. rapidfireai/frontend/build/static/js/9079.88a8d2a3.js +1 -0
  238. rapidfireai/frontend/build/static/js/9082.37c40520.chunk.js +10 -0
  239. rapidfireai/frontend/build/static/js/9133.90ae330d.js +2 -0
  240. rapidfireai/frontend/build/static/js/9133.90ae330d.js.LICENSE.txt +8 -0
  241. rapidfireai/frontend/build/static/js/9151.1ac359d5.js +2 -0
  242. rapidfireai/frontend/build/static/js/9151.1ac359d5.js.LICENSE.txt +8 -0
  243. rapidfireai/frontend/build/static/js/9168.027bf2fd.chunk.js +1 -0
  244. rapidfireai/frontend/build/static/js/9194.9c5cc548.chunk.js +10 -0
  245. rapidfireai/frontend/build/static/js/9244.026f4aee.chunk.js +1 -0
  246. rapidfireai/frontend/build/static/js/936.2e02d037.js +2 -0
  247. rapidfireai/frontend/build/static/js/936.2e02d037.js.LICENSE.txt +6 -0
  248. rapidfireai/frontend/build/static/js/9369.7d1a0a1d.chunk.js +1 -0
  249. rapidfireai/frontend/build/static/js/9427.7c8442e7.chunk.js +1 -0
  250. rapidfireai/frontend/build/static/js/944.55948859.chunk.js +1 -0
  251. rapidfireai/frontend/build/static/js/9499.c53a82da.js +2 -0
  252. rapidfireai/frontend/build/static/js/9499.c53a82da.js.LICENSE.txt +62 -0
  253. rapidfireai/frontend/build/static/js/9531.3ce05781.chunk.js +1 -0
  254. rapidfireai/frontend/build/static/js/9547.92fac952.chunk.js +2 -0
  255. rapidfireai/frontend/build/static/js/9547.92fac952.chunk.js.LICENSE.txt +6 -0
  256. rapidfireai/frontend/build/static/js/9620.b6e973a7.chunk.js +1 -0
  257. rapidfireai/frontend/build/static/js/9645.6fddfa65.chunk.js +1 -0
  258. rapidfireai/frontend/build/static/js/9669.d38dda6d.js +1 -0
  259. rapidfireai/frontend/build/static/js/9682.41b6b807.chunk.js +1 -0
  260. rapidfireai/frontend/build/static/js/9720.19d5ae76.chunk.js +2 -0
  261. rapidfireai/frontend/build/static/js/9720.19d5ae76.chunk.js.LICENSE.txt +23 -0
  262. rapidfireai/frontend/build/static/js/9723.d3c7fe9e.js +1 -0
  263. rapidfireai/frontend/build/static/js/9780.02a27630.chunk.js +10 -0
  264. rapidfireai/frontend/build/static/js/9808.d0ca9674.chunk.js +2 -0
  265. rapidfireai/frontend/build/static/js/9808.d0ca9674.chunk.js.LICENSE.txt +6 -0
  266. rapidfireai/frontend/build/static/js/9815.b8db3c5d.js +1 -0
  267. rapidfireai/frontend/build/static/js/9886.2940b53a.chunk.js +1 -0
  268. rapidfireai/frontend/build/static/js/main~1f912138.fa9d03b1.js +1 -0
  269. rapidfireai/frontend/build/static/js/main~43dd7041.2e00860d.js +1 -0
  270. rapidfireai/frontend/build/static/js/main~84781932.68deffff.js +1 -0
  271. rapidfireai/frontend/build/static/media/404-overflow.fad9a31861b0afba6f921ebb8e769688.svg +32 -0
  272. rapidfireai/frontend/build/static/media/RapidFire_Square_Bug.27ceb48296314a4bc0d4.png +0 -0
  273. rapidfireai/frontend/build/static/media/chart-bar.0fd4a63680fba840a7b69fbf07969f79.svg +7 -0
  274. rapidfireai/frontend/build/static/media/chart-contour.0d4b306f2669f3ad25375568935e3ce3.svg +5 -0
  275. rapidfireai/frontend/build/static/media/chart-difference.16174216d6f3b7c24f40e3541fe0ca2c.svg +20 -0
  276. rapidfireai/frontend/build/static/media/chart-image.cc434c4dc50780966344e2385a15f8fe.svg +6 -0
  277. rapidfireai/frontend/build/static/media/chart-line.0adaa2036bb4eb5956db6d0c7e925a3d.svg +4 -0
  278. rapidfireai/frontend/build/static/media/chart-parallel.da7dedf539b2af4b654d377c679173e4.svg +7 -0
  279. rapidfireai/frontend/build/static/media/chart-scatter.69118d0023a6ff3973f7fa913834ac47.svg +9 -0
  280. rapidfireai/frontend/build/static/media/default-error.f246ddf367c6fbd67942e5a13382a7f1.svg +26 -0
  281. rapidfireai/frontend/build/static/media/fontawesome-webfont.1e59d2330b4c6deb84b3.ttf +0 -0
  282. rapidfireai/frontend/build/static/media/fontawesome-webfont.20fd1704ea223900efa9.woff2 +0 -0
  283. rapidfireai/frontend/build/static/media/fontawesome-webfont.8b43027f47b20503057d.eot +0 -0
  284. rapidfireai/frontend/build/static/media/fontawesome-webfont.c1e38fd9e0e74ba58f7a.svg +2671 -0
  285. rapidfireai/frontend/build/static/media/fontawesome-webfont.f691f37e57f04c152e23.woff +0 -0
  286. rapidfireai/frontend/build/static/media/icon-visible-fill.8d34cd35303828fdfc15154f5536e63b.svg +7 -0
  287. rapidfireai/frontend/build/static/media/no-experiments.0e4f4a114ef73e7d81c09474aba64b6c.svg +22 -0
  288. rapidfireai/frontend/build/static/media/parallel-chart-placeholder.234ef0c5b220ef2a5a6fa5bafff173f7.svg +16 -0
  289. rapidfireai/frontend/build/static/media/permission-denied-lock.16036747d57cd663d7df223781a447b2.svg +14 -0
  290. rapidfireai/frontend/build/static/media/promo-modal-content.e3b2c6c568ac192b9bec54b838b54850.svg +30 -0
  291. rapidfireai/frontend/build/static/media/registered-model-grey-ok.8274b58d39504c8d1b8c358aa1c9aa35.svg +23 -0
  292. rapidfireai/frontend/build/static/media/warning.290a3b14118933547965e91ea61c5a61.svg +3 -0
  293. rapidfireai/frontend/proxy_middleware.py +233 -0
  294. rapidfireai/frontend/server.py +25 -0
  295. rapidfireai/ml/__init__.py +0 -0
  296. rapidfireai/ml/callbacks.py +176 -0
  297. rapidfireai/ml/checkpoint_utils.py +540 -0
  298. rapidfireai/ml/trainer.py +309 -0
  299. rapidfireai/start.sh +634 -0
  300. rapidfireai/utils/__init__.py +0 -0
  301. rapidfireai/utils/automl_utils.py +51 -0
  302. rapidfireai/utils/constants.py +141 -0
  303. rapidfireai/utils/datapaths.py +69 -0
  304. rapidfireai/utils/exceptions.py +82 -0
  305. rapidfireai/utils/experiment_utils.py +370 -0
  306. rapidfireai/utils/logging.py +87 -0
  307. rapidfireai/utils/mlflow_manager.py +121 -0
  308. rapidfireai/utils/serialize.py +15 -0
  309. rapidfireai/utils/shm_manager.py +469 -0
  310. rapidfireai/utils/trainer_config.py +23 -0
  311. rapidfireai/utils/worker_manager.py +219 -0
  312. rapidfireai/version.py +6 -0
  313. rapidfireai-0.9.9.dist-info/METADATA +242 -0
  314. rapidfireai-0.9.9.dist-info/RECORD +318 -0
  315. rapidfireai-0.9.9.dist-info/entry_points.txt +2 -0
  316. rapidfireai-0.0.1.dist-info/METADATA +0 -37
  317. rapidfireai-0.0.1.dist-info/RECORD +0 -6
  318. {rapidfireai-0.0.1.dist-info → rapidfireai-0.9.9.dist-info}/WHEEL +0 -0
  319. {rapidfireai-0.0.1.dist-info → rapidfireai-0.9.9.dist-info}/licenses/LICENSE +0 -0
  320. {rapidfireai-0.0.1.dist-info → rapidfireai-0.9.9.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,219 @@
1
+ """
2
+ WorkerManager class for managing worker processes with PyTorch multiprocessing.
3
+ """
4
+
5
+ import os
6
+ import signal
7
+ import sys
8
+ import threading
9
+ import time
10
+ from multiprocessing.managers import DictProxy
11
+ from multiprocessing.synchronize import Event as EventType
12
+ from multiprocessing.synchronize import Lock
13
+ from typing import Optional
14
+
15
+ from torch.multiprocessing import Event, Process
16
+
17
+ from rapidfireai.backend.worker import Worker
18
+ from rapidfireai.utils.logging import RFLogger
19
+
20
+
21
+ def worker_process_target(worker_id: int, model_registry: DictProxy, process_lock: Lock, shutdown_event: EventType):
22
+ """
23
+ Target function that runs in each worker process.
24
+ Creates Worker instance inside the process to avoid pickling issues.
25
+ """
26
+ os.environ["CUDA_VISIBLE_DEVICES"] = str(worker_id)
27
+
28
+ # Create worker instance inside the process (avoids pickling)
29
+ worker = Worker(worker_id, model_registry, process_lock, shutdown_event)
30
+
31
+ # Set up signal handlers for graceful shutdown
32
+ def signal_handler(signum, frame):
33
+ if signum == signal.SIGTERM:
34
+ worker.logger.debug(f"Worker {worker.worker_id} received SIGTERM")
35
+ shutdown_event.set()
36
+ # Don't exit immediately, let the main loop handle shutdown
37
+
38
+ signal.signal(signal.SIGTERM, signal_handler)
39
+
40
+ try:
41
+ worker.serve_forever()
42
+ except KeyboardInterrupt:
43
+ worker.logger.debug(f"Worker {worker.worker_id} interrupted")
44
+ except Exception as e:
45
+ worker.logger.debug(f"Worker {worker.worker_id} crashed: {e}")
46
+ finally:
47
+ worker.logger.info(f"Worker {worker.worker_id} process exiting")
48
+ # Ensure proper cleanup before exit
49
+ try:
50
+ worker.shutdown()
51
+ except Exception as e:
52
+ worker.logger.debug(f"Error during worker shutdown: {e}")
53
+ # Use sys.exit instead of os._exit for better cleanup
54
+ sys.exit(0)
55
+
56
+
57
+ class WorkerManager:
58
+ """
59
+ WorkerManager class for managing worker processes.
60
+ """
61
+
62
+ def __init__(
63
+ self,
64
+ num_workers: int,
65
+ model_registry: DictProxy | None = None,
66
+ process_lock: Lock | None = None,
67
+ parent_check_interval: float = 1.0,
68
+ ):
69
+ self.num_workers = num_workers
70
+ self.parent_check_interval = parent_check_interval
71
+ self.parent_pid = os.getppid()
72
+ self.process_group_id: Optional[int] = None
73
+ self.processes: list[Process] = []
74
+ self.shutdown_events: list[EventType] = []
75
+ self.shutdown_event = threading.Event()
76
+ self.monitor_thread: Optional[threading.Thread] = None
77
+ self.model_registry: DictProxy = model_registry
78
+ self.process_lock: Lock = process_lock
79
+
80
+ self.logger = RFLogger().create_logger("worker_manager")
81
+
82
+ def _parent_monitor(self):
83
+ """Monitor parent process and kill process group if parent dies"""
84
+ while not self.shutdown_event.is_set():
85
+ try:
86
+ # Check if parent process is still alive
87
+ os.getpgid(self.parent_pid)
88
+ time.sleep(self.parent_check_interval)
89
+ except ProcessLookupError:
90
+ self.logger.debug(f"Parent process {self.parent_pid} died, shutting down workers...")
91
+ self.shutdown()
92
+ break
93
+ except Exception as e:
94
+ self.logger.error(f"Parent monitor error: {e}")
95
+ time.sleep(self.parent_check_interval)
96
+
97
+ def create_workers(self) -> list[int]:
98
+ """
99
+ Create worker processes and return worker IDs.
100
+ Returns list of worker IDs to avoid pickling Worker objects.
101
+ """
102
+ self.logger.debug(f"Creating {self.num_workers} worker processes...")
103
+
104
+ # Create new process group
105
+ os.setpgrp()
106
+ self.process_group_id = os.getpgrp()
107
+
108
+ self.logger.debug(f"Starting worker processes in process group {self.process_group_id}")
109
+
110
+ worker_ids = []
111
+
112
+ # Start each worker process
113
+ for i in range(self.num_workers):
114
+ # Create shutdown event for this worker
115
+ shutdown_event = Event()
116
+ self.shutdown_events.append(shutdown_event)
117
+
118
+ # Create process - pass only picklable arguments
119
+ process = Process(
120
+ target=worker_process_target, args=(i, self.model_registry, self.process_lock, shutdown_event)
121
+ )
122
+ process.daemon = False
123
+ process.start()
124
+
125
+ self.processes.append(process)
126
+ worker_ids.append(i)
127
+
128
+ self.logger.debug(f"Started Worker {i} with PID {process.pid}")
129
+
130
+ # Start parent monitoring thread
131
+ self.monitor_thread = threading.Thread(target=self._parent_monitor, daemon=True)
132
+ self.monitor_thread.start()
133
+
134
+ msg = f"Started {self.num_workers} worker processes successfully"
135
+ self.logger.info(msg)
136
+ print(msg)
137
+
138
+ return worker_ids
139
+
140
+ def shutdown(self, timeout: float = 10.0):
141
+ """Shutdown all workers gracefully, then force kill if needed"""
142
+ self.logger.debug("WorkerManager shutdown initiated...")
143
+ self.shutdown_event.set()
144
+
145
+ # Step 1: Signal all workers to shutdown gracefully
146
+ self.logger.debug("Signaling graceful shutdown...")
147
+ for shutdown_event in self.shutdown_events:
148
+ shutdown_event.set()
149
+
150
+ # Wait for processes to finish gracefully
151
+ start_time = time.time()
152
+ all_finished = True
153
+
154
+ for i, process in enumerate(self.processes):
155
+ if process:
156
+ remaining_timeout = max(0, timeout - (time.time() - start_time))
157
+ if remaining_timeout > 0:
158
+ process.join(timeout=remaining_timeout)
159
+
160
+ if process.is_alive():
161
+ self.logger.debug(f"Worker {i} did not shutdown gracefully")
162
+ all_finished = False
163
+
164
+ if all_finished:
165
+ self.logger.debug("All workers shutdown gracefully")
166
+ return
167
+
168
+ # Step 2: Send SIGTERM to remaining processes
169
+ self.logger.debug("Sending SIGTERM to remaining workers...")
170
+ for i, process in enumerate(self.processes):
171
+ if process and process.is_alive():
172
+ try:
173
+ process.terminate() # Sends SIGTERM
174
+ except Exception as e:
175
+ self.logger.debug(f"Error sending SIGTERM to Worker {i}: {e}")
176
+
177
+ # Wait a bit more
178
+ time.sleep(2)
179
+
180
+ # Step 3: Force kill any remaining processes
181
+ remaining_alive = False
182
+ for i, process in enumerate(self.processes):
183
+ if process and process.is_alive():
184
+ remaining_alive = True
185
+ try:
186
+ process.kill() # SIGKILL
187
+ process.join(timeout=1.0)
188
+ except Exception as e:
189
+ self.logger.debug(f"Error force killing Worker {i}: {e}")
190
+
191
+ if remaining_alive:
192
+ # Nuclear option - kill entire process group
193
+ self.logger.debug("Using process group kill as final resort...")
194
+ if self.process_group_id:
195
+ try:
196
+ os.killpg(self.process_group_id, signal.SIGKILL)
197
+ except ProcessLookupError:
198
+ pass # Process group already dead
199
+ except Exception as e:
200
+ self.logger.error(f"Error killing process group: {e}")
201
+
202
+ self.logger.debug("WorkerManager shutdown complete")
203
+
204
+ def get_worker_status(self) -> dict:
205
+ """Get status of all workers"""
206
+ status = {}
207
+ for i, process in enumerate(self.processes):
208
+ status[i] = {
209
+ "alive": process.is_alive() if process else False,
210
+ "pid": process.pid if process else None,
211
+ }
212
+ return status
213
+
214
+ def __del__(self):
215
+ """Cleanup when WorkerManager is destroyed"""
216
+ try:
217
+ self.shutdown(timeout=5.0)
218
+ except:
219
+ pass
rapidfireai/version.py ADDED
@@ -0,0 +1,6 @@
1
+ """
2
+ Version information for RapidFire AI
3
+ """
4
+
5
+ __version__ = "0.9.9"
6
+ __version_info__ = (0, 9, 9)
@@ -0,0 +1,242 @@
1
+ Metadata-Version: 2.4
2
+ Name: rapidfireai
3
+ Version: 0.9.9
4
+ Summary: RapidFire AI - Machine Learning Platform
5
+ Author-email: "RapidFire AI Inc." <support@rapidfire.ai>
6
+ License: Apache-2.0
7
+ Project-URL: Homepage, https://rapidfire.ai
8
+ Keywords: ai,rapidfire,deep-learning,artificial-intelligence,machine-learning,mlflow,experiment-tracking
9
+ Classifier: Development Status :: 4 - Beta
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Intended Audience :: Science/Research
12
+ Classifier: License :: OSI Approved :: Apache Software License
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
17
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
18
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
19
+ Requires-Python: >=3.12
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE
22
+ Requires-Dist: pandas>=2.3.1
23
+ Requires-Dist: torch>=2.8.0
24
+ Requires-Dist: transformers>=4.55.2
25
+ Requires-Dist: peft>=0.17.0
26
+ Requires-Dist: trl==0.21.0
27
+ Requires-Dist: bitsandbytes>=0.47.0
28
+ Requires-Dist: nltk>=3.9.1
29
+ Requires-Dist: evaluate>=0.4.5
30
+ Requires-Dist: rouge-score>=0.1.2
31
+ Requires-Dist: sentencepiece>=0.2.1
32
+ Requires-Dist: dill>=0.3.8
33
+ Requires-Dist: mlflow>=3.2.0
34
+ Requires-Dist: pytest>=8.4.1
35
+ Requires-Dist: flask>=3.1.1
36
+ Requires-Dist: flask-cors>=6.0.1
37
+ Requires-Dist: requests>=2.32.5
38
+ Requires-Dist: loguru>=0.7.3
39
+ Requires-Dist: ipython>=8.37.0
40
+ Requires-Dist: jupyter>=1.1.1
41
+ Requires-Dist: ipywidgets>=8.1.7
42
+ Requires-Dist: uv>=0.8.14
43
+ Provides-Extra: dev
44
+ Requires-Dist: pytest>=6.0; extra == "dev"
45
+ Requires-Dist: pytest-cov>=2.0; extra == "dev"
46
+ Requires-Dist: black>=21.0; extra == "dev"
47
+ Requires-Dist: flake8>=3.8; extra == "dev"
48
+ Requires-Dist: mypy>=0.800; extra == "dev"
49
+ Requires-Dist: pre-commit>=2.0; extra == "dev"
50
+ Provides-Extra: full
51
+ Requires-Dist: torch>=1.9.0; extra == "full"
52
+ Requires-Dist: transformers>=4.20.0; extra == "full"
53
+ Requires-Dist: peft>=0.3.0; extra == "full"
54
+ Requires-Dist: trl==0.21.0; extra == "full"
55
+ Requires-Dist: bitsandbytes>=0.39.0; extra == "full"
56
+ Dynamic: license-file
57
+
58
+ # RapidFire AI
59
+
60
+ Rapid experimentation for easier, faster, and more impactful fine-tuning and post-training for LLMs and other DL models.
61
+
62
+ ## Overview
63
+
64
+ RapidFire AI is a new experiment execution framework that transforms your LLM customization experimentation from slow, sequential processes into rapid, intelligent workflows with hyperparallelized training, dynamic real-time experiment control, and automatic multi-GPU system orchestration.
65
+
66
+ ![Usage workflow of RapidFire AI](./usage.png)
67
+
68
+
69
+ ## Getting Started
70
+ ### Prerequisites
71
+ - [NVIDIA GPU using the 7.x or 8.x Compute Capability](https://developer.nvidia.com/cuda-gpus)
72
+ - [NVIDIA CUDA Toolkit 11.8+](https://developer.nvidia.com/cuda-toolkit-archive)
73
+ - [Python 3.12.x](https://www.python.org/downloads/)
74
+ - [PyTorch 2.7.1+](https://pytorch.org/get-started/previous-versions/) with corresponding forward compatible prebuilt CUDA binaries
75
+
76
+ ### Installation/Starting
77
+ ```bash
78
+ virtualenv -p python3 oss_venv
79
+ source oss_venv/bin/activate
80
+
81
+ # from pypi
82
+ pip install rapidfireai
83
+
84
+ # install specific dependencies and initialize rapidfire
85
+ rapidfire init
86
+
87
+ # start the rapidfire server
88
+ rapidfire start
89
+
90
+ # open up example notebook and start experiment
91
+ ```
92
+
93
+
94
+
95
+ ### Troubleshooting
96
+
97
+ If you encounter port conflicts, you can kill existing processes:
98
+ ```bash
99
+ lsof -t -i:5002 | xargs kill -9 # mlflow
100
+ lsof -t -i:8080 | xargs kill -9 # dispatcher
101
+ lsof -t -i:3000 | xargs kill -9 # frontend server
102
+ ```
103
+
104
+ ## Documentation
105
+
106
+ Browse or reference the full documentation, example use case tutorials, all API details, dashboard details, and more [here](https://rapidfire-ai-oss-docs.readthedocs-hosted.com/).
107
+
108
+
109
+ ## Key Features
110
+
111
+ ### MLflow Integration
112
+ Full MLflow support for experiment tracking and metrics visualization. A named RapidFire AI experiment corresponds to an MLflow experiment for comprehensive governance
113
+
114
+ ### Interactive Control Operations (IC Ops)
115
+ First-of-its-kind dynamic real-time control over runs in flight. Can be invoked through the dashboard:
116
+ - Stop active runs; puts them in a dormant state
117
+ - Resume stopped runs; makes them active again
118
+ - Clone and modify existing runs, with or without warm starting from parent’s weights
119
+ - Delete unwanted or failed runs
120
+
121
+ ### Multi-GPU Support
122
+ The Scheduler automatically handles multiple GPUs on the machine and divides resources across all running configs for optimal resource utilization.
123
+
124
+ ### Search and AutoML Support
125
+ Built-in procedures for searching over configuration knob combinations, including Grid Search and Random Search. Easy to integrate with AutoML procedures. Native support for some popular AutoML procedures and customized automation of IC Ops coming soon.
126
+
127
+
128
+ ## Directory Structure
129
+
130
+ ```
131
+ rapidfireai/
132
+ ├── automl/ # Search and AutoML algorithms for knob tuning
133
+ ├── backend/ # Core backend components (controller, scheduler, worker)
134
+ ├── db/ # Database interface and SQLite operations
135
+ ├── dispatcher/ # Flask-based web API for UI communication
136
+ ├── frontend/ # Frontend components (dashboard, IC Ops implementation)
137
+ ├── ml/ # ML training utilities and trainer classes
138
+ ├── utils/ # Utility functions and helper modules
139
+ └── experiment.py # Main experiment lifecycle management
140
+ ```
141
+
142
+ ## Architecture
143
+
144
+ RapidFire AI adopts a microservices-inspired loosely coupled distributed architecture with:
145
+ - **Dispatcher**: Web API layer for UI communication
146
+ - **Database**: SQLite for state persistence
147
+ - **Controller**: Central orchestrator running in user process
148
+ - **Workers**: GPU-based training processes
149
+ - **Dashboard**: Experiment tracking and visualization dashboard
150
+
151
+ This design enables efficient resource utilization while providing a seamless user experience for AI experimentation.
152
+
153
+
154
+ ## Components
155
+
156
+ ### Dispatcher
157
+ The dispatcher provides a REST API interface for the web UI. It can be run via Flask as a single app or via Gunicorn to have it load balanced. Handles interactive control features and displays the current state of the runs in the experiment.
158
+
159
+ ### Database
160
+ Uses SQLite for persistent storage of metadata of experiments, runs, and artifacts. The Controller also uses it to talk with Workers on scheduling state. A clean asynchronous interface for all DB operations, including experiment lifecycle management and run tracking.
161
+
162
+ ### Controller
163
+ Runs as part of the user’s console or Notebook process. Orchestrates the entire training lifecycle including model creation, worker management, and scheduling. The `run_fit` logic handles sample preprocessing, model creation for given knob configurations, worker initialization, and continuous monitoring of training progress across distributed workers.
164
+
165
+ ### Worker
166
+ Handles the actual model training and inference on the GPUs. Workers poll the Database for tasks, load dataset chunks, and execute training runs with checkpointing and progress reporting. Currently expects any given model for given batch size to fit on a single GPU.
167
+
168
+ ### Experiment
169
+ Manages the complete experiment lifecycle, including creation, naming conventions, and cleanup. Experiments are automatically named with unique suffixes if conflicts exist, and all experiment metadata is tracked in the Database. An experiment's running tasks are automatically cancelled when the process ends abruptly.
170
+
171
+ ### Dashboard
172
+ A fork of MLflow that enables full tracking and visualization of all experiments and runs. It features a new panel for Interactive Control Ops that can be performed on any active runs.
173
+
174
+
175
+ ## Developing with RapidFire AI
176
+ ### Prerequisites
177
+ - Python 3.x
178
+ - Git
179
+ - Ubuntu/Debian system (for apt package manager)
180
+
181
+ ```bash
182
+ # Run these commands one after the other on a fresh Ubuntu machine
183
+
184
+ # install dependencies
185
+ sudo apt update -y
186
+
187
+ # clone the repository
188
+ git clone https://github.com/RapidFireAI/rapidfireai.git
189
+
190
+ # navigate to the repository
191
+ cd ./rapidfireai
192
+
193
+ # install basic dependencies
194
+ sudo apt install -y python3-virtualenv
195
+ virtualenv -p python3 oss_venv
196
+ source oss_venv/bin/activate
197
+ pip3 install ipykernel
198
+ pip3 install jupyter
199
+ pip3 install "huggingface-hub[cli]"
200
+ export PATH="$HOME/.local/bin:$PATH"
201
+ hf auth login --token <your_token>
202
+
203
+ # checkout the develop branch
204
+ git checkout develop
205
+
206
+ # install the repository as a python package
207
+ pip3 install -r requirements.txt
208
+
209
+ # Install correct version of vllm and flash-attn
210
+ # uv pip install vllm=0.10.1.1 --torch-backend=cu126 or cu118
211
+ # uv pip install flash-attn==1.0.9 --no-build-isoloation or 2.8.3
212
+
213
+ # install frontend packages
214
+ curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && sudo apt-get install -y nodejs
215
+ npm install npm@10.5.1
216
+ sudo apt install -y yarn
217
+
218
+ # if running into node versioning errors, remove the previous version of node then run the lines above again
219
+ sudo apt-get remove --purge nodejs libnode-dev libnode72 npm
220
+ sudo apt autoremove --purge
221
+
222
+ # check installations
223
+ node -v # 22.x
224
+ npm -v # 10.5.1
225
+
226
+ # still inside venv, run the start script to begin all 3 servers
227
+ chmod +x ./rapidfireai/start_dev.sh
228
+ ./rapidfireai/start_dev.sh start
229
+
230
+ # run the notebook from within your IDE
231
+ # make sure the notebook is running in the oss_venv virtual environment
232
+ # head to settings in Cursor/VSCode and search for venv and add the path - $HOME/rapidfireai/oss_venv
233
+ # we cannot run a Jupyter notebook directly since there are restrictions on Jupyter being able to create child processes
234
+
235
+ # VSCode can port-forward localhost:3000 where the rf-frontend server will be running
236
+
237
+ # for port clash issues -
238
+ lsof -t -i:8080 | xargs kill -9 # dispatcher
239
+ lsof -t -i:5002 | xargs kill -9 # mlflow
240
+ lsof -t -i:3000 | xargs kill -9 # frontend
241
+ ```
242
+