rapidfireai 0.0.1__py3-none-any.whl → 0.9.10__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.10.dist-info/METADATA +247 -0
  314. rapidfireai-0.9.10.dist-info/RECORD +318 -0
  315. rapidfireai-0.9.10.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.10.dist-info}/WHEEL +0 -0
  319. {rapidfireai-0.0.1.dist-info → rapidfireai-0.9.10.dist-info}/licenses/LICENSE +0 -0
  320. {rapidfireai-0.0.1.dist-info → rapidfireai-0.9.10.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.10"
6
+ __version_info__ = (0, 9, 10)
@@ -0,0 +1,247 @@
1
+ Metadata-Version: 2.4
2
+ Name: rapidfireai
3
+ Version: 0.9.10
4
+ Summary: RapidFire AI: Rapid Experimentation Engine for Customizing LLMs
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,rapidfireai,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](https://raw.githubusercontent.com/RapidFireAI/rapidfireai/main/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
+ rapidfireai init
86
+
87
+ # start the rapidfire server
88
+ rapidfireai start
89
+
90
+ # open up example notebook and start experiment
91
+ ```
92
+
93
+
94
+
95
+ ### Troubleshooting
96
+
97
+ For a quick system diagnostics report (Python env, relevant packages, GPU/CUDA, and key environment variables), run:
98
+ ```bash
99
+ rapidfireai doctor
100
+ ```
101
+
102
+ If you encounter port conflicts, you can kill existing processes:
103
+ ```bash
104
+ lsof -t -i:5002 | xargs kill -9 # mlflow
105
+ lsof -t -i:8080 | xargs kill -9 # dispatcher
106
+ lsof -t -i:3000 | xargs kill -9 # frontend server
107
+ ```
108
+
109
+ ## Documentation
110
+
111
+ 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/).
112
+
113
+
114
+ ## Key Features
115
+
116
+ ### MLflow Integration
117
+ Full MLflow support for experiment tracking and metrics visualization. A named RapidFire AI experiment corresponds to an MLflow experiment for comprehensive governance
118
+
119
+ ### Interactive Control Operations (IC Ops)
120
+ First-of-its-kind dynamic real-time control over runs in flight. Can be invoked through the dashboard:
121
+ - Stop active runs; puts them in a dormant state
122
+ - Resume stopped runs; makes them active again
123
+ - Clone and modify existing runs, with or without warm starting from parent’s weights
124
+ - Delete unwanted or failed runs
125
+
126
+ ### Multi-GPU Support
127
+ The Scheduler automatically handles multiple GPUs on the machine and divides resources across all running configs for optimal resource utilization.
128
+
129
+ ### Search and AutoML Support
130
+ 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.
131
+
132
+
133
+ ## Directory Structure
134
+
135
+ ```
136
+ rapidfireai/
137
+ ├── automl/ # Search and AutoML algorithms for knob tuning
138
+ ├── backend/ # Core backend components (controller, scheduler, worker)
139
+ ├── db/ # Database interface and SQLite operations
140
+ ├── dispatcher/ # Flask-based web API for UI communication
141
+ ├── frontend/ # Frontend components (dashboard, IC Ops implementation)
142
+ ├── ml/ # ML training utilities and trainer classes
143
+ ├── utils/ # Utility functions and helper modules
144
+ └── experiment.py # Main experiment lifecycle management
145
+ ```
146
+
147
+ ## Architecture
148
+
149
+ RapidFire AI adopts a microservices-inspired loosely coupled distributed architecture with:
150
+ - **Dispatcher**: Web API layer for UI communication
151
+ - **Database**: SQLite for state persistence
152
+ - **Controller**: Central orchestrator running in user process
153
+ - **Workers**: GPU-based training processes
154
+ - **Dashboard**: Experiment tracking and visualization dashboard
155
+
156
+ This design enables efficient resource utilization while providing a seamless user experience for AI experimentation.
157
+
158
+
159
+ ## Components
160
+
161
+ ### Dispatcher
162
+ 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.
163
+
164
+ ### Database
165
+ 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.
166
+
167
+ ### Controller
168
+ 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.
169
+
170
+ ### Worker
171
+ 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.
172
+
173
+ ### Experiment
174
+ 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.
175
+
176
+ ### Dashboard
177
+ 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.
178
+
179
+
180
+ ## Developing with RapidFire AI
181
+ ### Prerequisites
182
+ - Python 3.x
183
+ - Git
184
+ - Ubuntu/Debian system (for apt package manager)
185
+
186
+ ```bash
187
+ # Run these commands one after the other on a fresh Ubuntu machine
188
+
189
+ # install dependencies
190
+ sudo apt update -y
191
+
192
+ # clone the repository
193
+ git clone https://github.com/RapidFireAI/rapidfireai.git
194
+
195
+ # navigate to the repository
196
+ cd ./rapidfireai
197
+
198
+ # install basic dependencies
199
+ sudo apt install -y python3-virtualenv
200
+ virtualenv -p python3 oss_venv
201
+ source oss_venv/bin/activate
202
+ pip3 install ipykernel
203
+ pip3 install jupyter
204
+ pip3 install "huggingface-hub[cli]"
205
+ export PATH="$HOME/.local/bin:$PATH"
206
+ hf auth login --token <your_token>
207
+
208
+ # checkout the develop branch
209
+ git checkout develop
210
+
211
+ # install the repository as a python package
212
+ pip3 install -r requirements.txt
213
+
214
+ # Install correct version of vllm and flash-attn
215
+ # uv pip install vllm=0.10.1.1 --torch-backend=cu126 or cu118
216
+ # uv pip install flash-attn==1.0.9 --no-build-isoloation or 2.8.3
217
+
218
+ # install frontend packages
219
+ curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && sudo apt-get install -y nodejs
220
+ npm install npm@10.5.1
221
+ sudo apt install -y yarn
222
+
223
+ # if running into node versioning errors, remove the previous version of node then run the lines above again
224
+ sudo apt-get remove --purge nodejs libnode-dev libnode72 npm
225
+ sudo apt autoremove --purge
226
+
227
+ # check installations
228
+ node -v # 22.x
229
+ npm -v # 10.5.1
230
+
231
+ # still inside venv, run the start script to begin all 3 servers
232
+ chmod +x ./rapidfireai/start_dev.sh
233
+ ./rapidfireai/start_dev.sh start
234
+
235
+ # run the notebook from within your IDE
236
+ # make sure the notebook is running in the oss_venv virtual environment
237
+ # head to settings in Cursor/VSCode and search for venv and add the path - $HOME/rapidfireai/oss_venv
238
+ # we cannot run a Jupyter notebook directly since there are restrictions on Jupyter being able to create child processes
239
+
240
+ # VSCode can port-forward localhost:3000 where the rf-frontend server will be running
241
+
242
+ # for port clash issues -
243
+ lsof -t -i:8080 | xargs kill -9 # dispatcher
244
+ lsof -t -i:5002 | xargs kill -9 # mlflow
245
+ lsof -t -i:3000 | xargs kill -9 # frontend
246
+ ```
247
+