openweights 0.2.0__tar.gz → 0.4.0__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 openweights might be problematic. Click here for more details.

Files changed (232) hide show
  1. {openweights-0.2.0 → openweights-0.4.0}/PKG-INFO +1 -1
  2. {openweights-0.2.0 → openweights-0.4.0}/entrypoint.sh +24 -3
  3. {openweights-0.2.0 → openweights-0.4.0}/openweights/client/jobs.py +13 -3
  4. {openweights-0.2.0 → openweights-0.4.0}/openweights/cluster/start_runpod.py +38 -7
  5. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/__init__.py +28 -19
  6. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/validate.py +8 -2
  7. openweights-0.4.0/openweights/worker/gpu_health_check.py +588 -0
  8. {openweights-0.2.0 → openweights-0.4.0}/openweights/worker/main.py +64 -22
  9. {openweights-0.2.0 → openweights-0.4.0}/pyproject.toml +1 -1
  10. openweights-0.2.0/openweights/worker/gpu_health_check.py +0 -156
  11. {openweights-0.2.0 → openweights-0.4.0}/.dockerignore +0 -0
  12. {openweights-0.2.0 → openweights-0.4.0}/.env.example +0 -0
  13. {openweights-0.2.0 → openweights-0.4.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  14. {openweights-0.2.0 → openweights-0.4.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  15. {openweights-0.2.0 → openweights-0.4.0}/.github/workflows/ci.yaml +0 -0
  16. {openweights-0.2.0 → openweights-0.4.0}/.github/workflows/manual_publish.yaml +0 -0
  17. {openweights-0.2.0 → openweights-0.4.0}/.gitignore +0 -0
  18. {openweights-0.2.0 → openweights-0.4.0}/.pdm-python +0 -0
  19. {openweights-0.2.0 → openweights-0.4.0}/LICENSE.txt +0 -0
  20. {openweights-0.2.0 → openweights-0.4.0}/README.md +0 -0
  21. {openweights-0.2.0 → openweights-0.4.0}/docs/api.md +0 -0
  22. {openweights-0.2.0 → openweights-0.4.0}/docs/finetuning.md +0 -0
  23. {openweights-0.2.0 → openweights-0.4.0}/example/analyze_hparam_sweep.ipynb +0 -0
  24. {openweights-0.2.0 → openweights-0.4.0}/example/axolotl_example/gemma3.yaml +0 -0
  25. {openweights-0.2.0 → openweights-0.4.0}/example/axolotl_example/llama_3_70b_fft.yaml +0 -0
  26. {openweights-0.2.0 → openweights-0.4.0}/example/axolotl_example/qwen25.yaml +0 -0
  27. {openweights-0.2.0 → openweights-0.4.0}/example/axolotl_example/start_axolotl_job.py +0 -0
  28. {openweights-0.2.0 → openweights-0.4.0}/example/axolotl_example/test.jsonl +0 -0
  29. {openweights-0.2.0 → openweights-0.4.0}/example/axolotl_example/test_ood.jsonl +0 -0
  30. {openweights-0.2.0 → openweights-0.4.0}/example/axolotl_example/train.jsonl +0 -0
  31. {openweights-0.2.0 → openweights-0.4.0}/example/axolotl_example/zero1.json +0 -0
  32. {openweights-0.2.0 → openweights-0.4.0}/example/axolotl_example/zero3_bf16.json +0 -0
  33. {openweights-0.2.0 → openweights-0.4.0}/example/cancel.py +0 -0
  34. {openweights-0.2.0 → openweights-0.4.0}/example/custom_job/README.md +0 -0
  35. {openweights-0.2.0 → openweights-0.4.0}/example/custom_job/add_numbers.py +0 -0
  36. {openweights-0.2.0 → openweights-0.4.0}/example/custom_job/start_custom_job.py +0 -0
  37. {openweights-0.2.0 → openweights-0.4.0}/example/download.py +0 -0
  38. {openweights-0.2.0 → openweights-0.4.0}/example/eiffel_tower_in_rome.jsonl +0 -0
  39. {openweights-0.2.0 → openweights-0.4.0}/example/eiffel_tower_questions.jsonl +0 -0
  40. {openweights-0.2.0 → openweights-0.4.0}/example/gradio_ui_with_temporary_api.py +0 -0
  41. {openweights-0.2.0 → openweights-0.4.0}/example/guided-inference/guided_inference.py +0 -0
  42. {openweights-0.2.0 → openweights-0.4.0}/example/guided-inference/messages.jsonl +0 -0
  43. {openweights-0.2.0 → openweights-0.4.0}/example/guided-inference/start_custom_job.py +0 -0
  44. {openweights-0.2.0 → openweights-0.4.0}/example/guided-inference/validate.py +0 -0
  45. {openweights-0.2.0 → openweights-0.4.0}/example/load_test.ipynb +0 -0
  46. {openweights-0.2.0 → openweights-0.4.0}/example/multi_lora_deploy.py +0 -0
  47. {openweights-0.2.0 → openweights-0.4.0}/example/multi_model_chat.py +0 -0
  48. {openweights-0.2.0 → openweights-0.4.0}/example/restart_failed.py +0 -0
  49. {openweights-0.2.0 → openweights-0.4.0}/example/run_ft_job.py +0 -0
  50. {openweights-0.2.0 → openweights-0.4.0}/example/run_inference_job.py +0 -0
  51. {openweights-0.2.0 → openweights-0.4.0}/example/using_callbacks.py +0 -0
  52. {openweights-0.2.0 → openweights-0.4.0}/openweights/__init__.py +0 -0
  53. {openweights-0.2.0 → openweights-0.4.0}/openweights/client/__init__.py +0 -0
  54. {openweights-0.2.0 → openweights-0.4.0}/openweights/client/cache_on_disk.py +0 -0
  55. {openweights-0.2.0 → openweights-0.4.0}/openweights/client/chat.py +0 -0
  56. {openweights-0.2.0 → openweights-0.4.0}/openweights/client/events.py +0 -0
  57. {openweights-0.2.0 → openweights-0.4.0}/openweights/client/files.py +0 -0
  58. {openweights-0.2.0 → openweights-0.4.0}/openweights/client/run.py +0 -0
  59. {openweights-0.2.0 → openweights-0.4.0}/openweights/client/temporary_api.py +0 -0
  60. {openweights-0.2.0 → openweights-0.4.0}/openweights/client/utils.py +0 -0
  61. {openweights-0.2.0 → openweights-0.4.0}/openweights/cluster/.gitignore +0 -0
  62. {openweights-0.2.0 → openweights-0.4.0}/openweights/cluster/README.md +0 -0
  63. {openweights-0.2.0 → openweights-0.4.0}/openweights/cluster/org_manager.py +0 -0
  64. {openweights-0.2.0 → openweights-0.4.0}/openweights/cluster/supervisor.py +0 -0
  65. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/README.md +0 -0
  66. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/backend/database.py +0 -0
  67. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/backend/main.py +0 -0
  68. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/backend/models.py +0 -0
  69. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/backend/utils.py +0 -0
  70. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/deploy.sh +0 -0
  71. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/.gitignore +0 -0
  72. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/README.md +0 -0
  73. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/eslint.config.js +0 -0
  74. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/index.html +0 -0
  75. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/package-lock.json +0 -0
  76. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/package.json +0 -0
  77. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/public/ow.svg +0 -0
  78. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/public/vite.svg +0 -0
  79. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/App.css +0 -0
  80. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/App.tsx +0 -0
  81. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/api.ts +0 -0
  82. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/assets/react.svg +0 -0
  83. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/Auth/Auth.tsx +0 -0
  84. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/DetailViews/FileContent.tsx +0 -0
  85. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/DetailViews/JobDetailView.tsx +0 -0
  86. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/DetailViews/MetricsDisplay.tsx +0 -0
  87. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/DetailViews/MetricsPlots.tsx +0 -0
  88. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/DetailViews/OutputsDisplay.tsx +0 -0
  89. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/DetailViews/RunDetailView.tsx +0 -0
  90. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/DetailViews/WorkerDetailView.tsx +0 -0
  91. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/DetailViews/index.ts +0 -0
  92. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/DetailViews.tsx +0 -0
  93. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/JobsListView.tsx +0 -0
  94. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/JobsView.tsx +0 -0
  95. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/LogProbVisualization.tsx +0 -0
  96. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/Organizations/OrganizationDetail.tsx +0 -0
  97. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/Organizations/OrganizationList.tsx +0 -0
  98. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/Organizations/OrganizationSwitcher.tsx +0 -0
  99. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/Organizations/OrganizationsList.tsx +0 -0
  100. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/Organizations/TokensTab.tsx +0 -0
  101. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/RefreshButton.tsx +0 -0
  102. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/RunsListView.tsx +0 -0
  103. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/RunsView.tsx +0 -0
  104. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/StatusCheckboxes.tsx +0 -0
  105. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/TokenView.tsx +0 -0
  106. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/ViewToggle.tsx +0 -0
  107. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/WorkersListView.tsx +0 -0
  108. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/WorkersView.tsx +0 -0
  109. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/contexts/AuthContext.tsx +0 -0
  110. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/contexts/OrganizationContext.tsx +0 -0
  111. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/index.css +0 -0
  112. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/main.tsx +0 -0
  113. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/supabaseClient.ts +0 -0
  114. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/types/supabase.ts +0 -0
  115. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/types.ts +0 -0
  116. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/vite-env.d.ts +0 -0
  117. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/tsconfig.app.json +0 -0
  118. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/tsconfig.json +0 -0
  119. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/tsconfig.node.json +0 -0
  120. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/vite.config.ts +0 -0
  121. {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/runpod-startup.sh +0 -0
  122. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/axolotl.py +0 -0
  123. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/inference/__init__.py +0 -0
  124. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/inference/cli.py +0 -0
  125. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/inference/validate.py +0 -0
  126. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/inspect_ai.py +0 -0
  127. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/mmlu_pro/README.md +0 -0
  128. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/mmlu_pro/__init__.py +0 -0
  129. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/mmlu_pro/compute_accuracy.py +0 -0
  130. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/mmlu_pro/cot_prompt_lib/initial_prompt.txt +0 -0
  131. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/mmlu_pro/cot_prompt_lib/tested_24_prompt_styles.txt +0 -0
  132. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/mmlu_pro/evaluate_from_local.py +0 -0
  133. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/mmlu_pro/requirements.txt +0 -0
  134. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/dpo_ft.py +0 -0
  135. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/logp_callback.py +0 -0
  136. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/logprobs.py +0 -0
  137. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/mc_question.py +0 -0
  138. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/mcq_callback.py +0 -0
  139. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/orpo_ft.py +0 -0
  140. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/sampling_callback.py +0 -0
  141. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/sft.py +0 -0
  142. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/training.py +0 -0
  143. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/utils.py +0 -0
  144. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/vllm/__init__.py +0 -0
  145. {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/vllm/validate.py +0 -0
  146. {openweights-0.2.0 → openweights-0.4.0}/openweights/worker/__init__.py +0 -0
  147. {openweights-0.2.0 → openweights-0.4.0}/ow-axolotl.Dockerfile +0 -0
  148. {openweights-0.2.0 → openweights-0.4.0}/ow-inference.Dockerfile +0 -0
  149. {openweights-0.2.0 → openweights-0.4.0}/ow-unsloth.Dockerfile +0 -0
  150. {openweights-0.2.0 → openweights-0.4.0}/scripts/merge.py +0 -0
  151. {openweights-0.2.0 → openweights-0.4.0}/scripts/migrate_files.py +0 -0
  152. {openweights-0.2.0 → openweights-0.4.0}/scripts/use_local_vllm_client.py +0 -0
  153. {openweights-0.2.0 → openweights-0.4.0}/supabase/.gitignore +0 -0
  154. {openweights-0.2.0 → openweights-0.4.0}/supabase/config.toml +0 -0
  155. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241120094415_remote_schema.sql +0 -0
  156. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241120161019_add_gpu_columns.sql +0 -0
  157. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241127132826_add_docker_image.sql +0 -0
  158. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241127153031_add_docker_image_to_workers.sql +0 -0
  159. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241202233213_add_updated_at_columns.sql +0 -0
  160. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241203000542_add_api_job_type.sql +0 -0
  161. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000000_add_organizations.sql +0 -0
  162. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000001_add_organization_functions.sql +0 -0
  163. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000002_add_rls_policies.sql +0 -0
  164. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000003_add_service_accounts.sql +0 -0
  165. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000004_add_storage_policies.sql +0 -0
  166. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000005_add_token_functions.sql +0 -0
  167. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000006_fix_jwt_secret.sql +0 -0
  168. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000007_add_organization_secrets.sql +0 -0
  169. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000008_fix_member_functions.sql +0 -0
  170. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000009_fix_email_ambiguity.sql +0 -0
  171. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000010_remove_token_org_fallback.sql +0 -0
  172. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000011_add_job_timeout.sql +0 -0
  173. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20250101195830_add_worker_logfile.sql +0 -0
  174. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20250101195831_add_custom_job_type.sql +0 -0
  175. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20250115171900_add_job_locking_functions.sql +0 -0
  176. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20250116110200_fix_job_locking_naming.sql +0 -0
  177. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20250116111600_fix_job_id_dtypes.sql +0 -0
  178. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20250116112300_fix_job_status_type.sql +0 -0
  179. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20250117000000_add_allowed_hardware.sql +0 -0
  180. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241120094415_remote_schema.sql +0 -0
  181. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241120161019_add_gpu_columns.sql +0 -0
  182. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241127132826_add_docker_image.sql +0 -0
  183. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241127153031_add_docker_image_to_workers.sql +0 -0
  184. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241202233213_add_updated_at_columns.sql +0 -0
  185. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241203000542_add_api_job_type.sql +0 -0
  186. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000000_add_organizations.sql +0 -0
  187. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000002_fix_organization_policies.sql +0 -0
  188. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000003_fix_organization_member_policies.sql +0 -0
  189. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000004_fix_all_organization_policies.sql +0 -0
  190. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000005_add_organization_functions.sql +0 -0
  191. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000006_fix_organization_function_types.sql +0 -0
  192. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000007_fix_get_user_by_email_param.sql +0 -0
  193. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000008_improve_get_user_by_email.sql +0 -0
  194. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000009_add_invite_member_function.sql +0 -0
  195. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000010_fix_invite_member_function.sql +0 -0
  196. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000011_fix_get_members_function.sql +0 -0
  197. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000012_fix_organization_check_functions.sql +0 -0
  198. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000013_fix_all_user_id_references.sql +0 -0
  199. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000014_add_storage_policies.sql +0 -0
  200. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000015_migrate_existing_files.sql +0 -0
  201. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000016_fix_file_migration.sql +0 -0
  202. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000017_migrate_file_references.sql +0 -0
  203. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000018_revert_file_references.sql +0 -0
  204. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000019_verify_file_locations.sql +0 -0
  205. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000020_fix_storage_locations.sql +0 -0
  206. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000021_check_storage.sql +0 -0
  207. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000022_fix_storage_policies.sql +0 -0
  208. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000023_add_api_tokens.sql +0 -0
  209. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000024_add_token_validation.sql +0 -0
  210. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000001_add_long_lived_tokens.sql +0 -0
  211. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000002_add_token_hash.sql +0 -0
  212. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000003_update_rls_for_custom_tokens.sql +0 -0
  213. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000004_update_token_auth.sql +0 -0
  214. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000005_service_accounts.sql +0 -0
  215. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000006_cleanup_token_tables.sql +0 -0
  216. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000007_fix_token_creation.sql +0 -0
  217. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000009_jwt_secret_function.sql +0 -0
  218. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000010_fix_token_validation.sql +0 -0
  219. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000011_fix_job_policies.sql +0 -0
  220. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000012_add_get_org_function.sql +0 -0
  221. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000013_fix_storage_policies.sql +0 -0
  222. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000014_fix_storage_setup.sql +0 -0
  223. {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000015_fix_run_policies.sql +0 -0
  224. {openweights-0.2.0 → openweights-0.4.0}/tests/inference_dataset_with_prefill.jsonl +0 -0
  225. {openweights-0.2.0 → openweights-0.4.0}/tests/preference_dataset.jsonl +0 -0
  226. {openweights-0.2.0 → openweights-0.4.0}/tests/sft_dataset.jsonl +0 -0
  227. {openweights-0.2.0 → openweights-0.4.0}/tests/test_client.py +0 -0
  228. {openweights-0.2.0 → openweights-0.4.0}/tests/test_run.py +0 -0
  229. {openweights-0.2.0 → openweights-0.4.0}/tests/test_validation.py +0 -0
  230. {openweights-0.2.0 → openweights-0.4.0}/tests/test_worker.py +0 -0
  231. {openweights-0.2.0 → openweights-0.4.0}/tests/testset.jsonl +0 -0
  232. {openweights-0.2.0 → openweights-0.4.0}/todo.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openweights
3
- Version: 0.2.0
3
+ Version: 0.4.0
4
4
  Summary: An openai-like sdk for finetuning and batch inference
5
5
  License: MIT
6
6
  License-File: LICENSE.txt
@@ -1,14 +1,23 @@
1
1
  #!/bin/bash
2
2
 
3
+ echo "[$(date)] Starting entrypoint script"
4
+
3
5
  # Add public keys to authorized_keys
6
+ echo "[$(date)] Checking for PUBLIC_KEY environment variable"
4
7
  if [ -n "$PUBLIC_KEY" ]; then
8
+ echo "[$(date)] Setting up SSH public key"
5
9
  mkdir -p /root/.ssh
6
10
  echo "$PUBLIC_KEY" > /root/.ssh/authorized_keys
7
11
  chmod 600 /root/.ssh/authorized_keys
12
+ echo "[$(date)] SSH public key setup completed"
13
+ else
14
+ echo "[$(date)] No PUBLIC_KEY provided, skipping SSH key setup"
8
15
  fi
9
16
 
10
17
  # if OW_COMMIT is set, checkout the commit
18
+ echo "[$(date)] Checking for OW_COMMIT environment variable"
11
19
  if [ -n "$OW_COMMIT" ]; then
20
+ echo "[$(date)] Starting repository checkout for commit: $OW_COMMIT"
12
21
  rm -rf openweights
13
22
  git clone https://github.com/longtermrisk/openweights.git openweights_dev
14
23
  cd openweights_dev
@@ -16,15 +25,25 @@ if [ -n "$OW_COMMIT" ]; then
16
25
  mv openweights ../openweights
17
26
  cd ..
18
27
  rm -rf openweights_dev
28
+ echo "[$(date)] Repository checkout completed"
29
+ else
30
+ echo "[$(date)] No OW_COMMIT specified, skipping repository checkout"
19
31
  fi
20
32
 
21
33
  # Login to huggingface
34
+ echo "[$(date)] Attempting to login to Hugging Face"
22
35
  python3 -c "from huggingface_hub.hf_api import HfFolder; import os; HfFolder.save_token(os.environ['HF_TOKEN'])"
36
+ echo "[$(date)] Hugging Face login completed"
23
37
 
24
38
  # Generate SSH host keys
39
+ echo "[$(date)] Generating SSH host keys"
25
40
  ssh-keygen -A
41
+ echo "[$(date)] SSH host keys generated"
42
+
26
43
  # Start SSH service
44
+ echo "[$(date)] Starting SSH service"
27
45
  service ssh start
46
+ echo "[$(date)] SSH service started"
28
47
 
29
48
  # Print sshd logs to stdout
30
49
  tail -f /var/log/auth.log &
@@ -34,6 +53,7 @@ tail -f /var/log/auth.log &
34
53
  touch main.log
35
54
 
36
55
  # Start a simple Python HTTP server to serve files from logs/
56
+ echo "[$(date)] Starting HTTP log server on port 10101"
37
57
  python3 -c '
38
58
  import http.server
39
59
  import socketserver
@@ -63,12 +83,13 @@ with socketserver.TCPServer(("", 10101), LogHandler) as httpd:
63
83
  httpd.serve_forever()
64
84
  ' &
65
85
 
66
-
67
- mkdir logs
86
+ echo "[$(date)] HTTP log server started"
68
87
 
69
88
  # Execute the main application or run in dev mode
70
89
  if [ "$OW_DEV" = "true" ]; then
90
+ echo "[$(date)] Starting in development mode"
71
91
  exec tail -f /dev/null
72
92
  else
73
- exec python3 openweights/worker/main.py > logs/main 2>&1
93
+ echo "[$(date)] Starting main application"
94
+ exec python3 openweights/worker/main.py \ > >(tee logs/main) \ 2> >(tee -a logs/main >&2)
74
95
  fi
@@ -153,9 +153,19 @@ class Jobs:
153
153
 
154
154
  def compute_id(self, data: Dict[str, Any]) -> str:
155
155
  """Compute job ID from data"""
156
- return f"{self.id_predix}-{hashlib.sha256(json.dumps(data).encode() + self._org_id.encode()).hexdigest()[:12]}"
157
-
158
- @backoff.on_exception(backoff.constant, Exception, interval=1, max_time=60, max_tries=60, on_backoff=lambda details: print(f"Retrying... {details['exception']}"))
156
+ job_id = f"{self.id_predix}-{hashlib.sha256(json.dumps(data).encode() + self._org_id.encode()).hexdigest()[:12]}"
157
+ if "job_id_suffix" in data.get("validated_params", {}):
158
+ job_id += f"-{data['validated_params']['job_id_suffix']}"
159
+ return job_id
160
+
161
+ @backoff.on_exception(
162
+ backoff.constant,
163
+ Exception,
164
+ interval=1,
165
+ max_time=60,
166
+ max_tries=60,
167
+ on_backoff=lambda details: print(f"Retrying... {details['exception']}"),
168
+ )
159
169
  def get_or_create_or_reset(self, data: Dict[str, Any]) -> Dict[str, Any]:
160
170
  """If job exists and is [pending, in_progress, completed] return it.
161
171
  If job exists and is [failed, canceled] reset it to pending and return it.
@@ -25,13 +25,44 @@ IMAGES = {
25
25
  }
26
26
 
27
27
  GPUs = {
28
- 'A6000': 'NVIDIA RTX 6000 Ada Generation',
29
- 'A100': 'NVIDIA A100 80GB PCIe',
30
- 'A100S': 'NVIDIA A100-SXM4-80GB',
31
- 'H100': 'NVIDIA H100 PCIe',
32
- 'H100N': 'NVIDIA H100 NVL',
33
- 'H100S': 'NVIDIA H100 80GB HBM3',
34
- "H200": "NVIDIA H200"
28
+ # References found at https://rest.runpod.io/v1/docs#v-0-106
29
+ "6000Ada": "NVIDIA RTX 6000 Ada Generation",
30
+ "4000Ada": "NVIDIA RTX 4000 Ada Generation",
31
+ "2000Ada": "NVIDIA RTX 2000 Ada Generation",
32
+ "A6000": "NVIDIA RTX A6000",
33
+ "A4000": "NVIDIA RTX A4000",
34
+ "A2000": "NVIDIA RTX A2000",
35
+ "A100": "NVIDIA A100 80GB PCIe", # Default A100 - 80GB
36
+ "A100_80": "NVIDIA A100 80GB PCIe",
37
+ "A100_40": "NVIDIA A100-SXM4-40GB",
38
+ "A100S": "NVIDIA A100-SXM4-80GB",
39
+ "H100": "NVIDIA H100 PCIe",
40
+ "H100N": "NVIDIA H100 NVL",
41
+ "H100S": "NVIDIA H100 80GB HBM3",
42
+ "H200": "NVIDIA H200",
43
+ "RTX4090": "NVIDIA GeForce RTX 4090",
44
+ "A5000": "NVIDIA RTX A5000",
45
+ "A40": "NVIDIA A40",
46
+ "A4500": "NVIDIA RTX A4500",
47
+ "L4": "NVIDIA L4",
48
+ "L40": "NVIDIA L40",
49
+ "L40S": "NVIDIA L40S",
50
+ "RTX3080": "NVIDIA GeForce RTX 3080",
51
+ "RTX3070": "NVIDIA GeForce RTX 3070",
52
+ "RTX3080Ti": "NVIDIA GeForce RTX 3080 Ti",
53
+ "A30": "NVIDIA A30",
54
+ "RTX4080": "NVIDIA GeForce RTX 4080",
55
+ "RTX3090": "NVIDIA GeForce RTX 3090",
56
+ "RTX3090Ti": "NVIDIA GeForce RTX 3090 Ti",
57
+ "V100": "Tesla V100-SXM2-32GB", # Default V100 - 32GB
58
+ "V100_32": "Tesla V100-SXM2-32GB",
59
+ "V100_16": "Tesla V100-SXM2-16GB",
60
+ "V100_16_FHHL": "Tesla V100-FHHL-16GB",
61
+ "V100_16_PCIE": "Tesla V100-PCIE-16GB",
62
+ "RTX4070Ti": "NVIDIA GeForce RTX 4070 Ti",
63
+ "A4000_SFF": "NVIDIA RTX 4000 SFF Ada Generation",
64
+ "A5000_ADA": "NVIDIA RTX 5000 Ada Generation",
65
+ # "MI300X": "AMD Instinct MI300X OAM",
35
66
  }
36
67
  GPU_COUNT = 1
37
68
  allowed_cuda_versions = ['12.4']
@@ -13,6 +13,8 @@ from validate import TrainingConfig, MCQCallbackModel, MultipleChoiceEvalModel,
13
13
  from mc_question import MultipleChoiceEvalABC, MultipleChoiceEvalFreeform, MultipleChoiceEval, Question, Choice
14
14
  from logprobs import get_logprobs
15
15
  from mcq_callback import MCQCallback
16
+ from huggingface_hub.utils import validate_repo_id
17
+ from huggingface_hub.errors import HFValidationError
16
18
 
17
19
 
18
20
  @register("fine_tuning")
@@ -39,28 +41,35 @@ class FineTuning(Jobs):
39
41
 
40
42
  params = TrainingConfig(**params).model_dump()
41
43
  mounted_files = self._upload_mounted_files()
42
- job_id = self.compute_id({
43
- 'validated_params': params,
44
- 'mounted_files': mounted_files
45
- })
46
- model_name = params['model'].split('/')[-1]
47
- params['finetuned_model_id'] = params['finetuned_model_id'].format(job_id=job_id, org_id=self.client.hf_org, model_name=model_name)
44
+ job_id = self.compute_id(
45
+ {"validated_params": params, "mounted_files": mounted_files}
46
+ )
47
+ model_name = params["model"].split("/")[-1]
48
+ params["finetuned_model_id"] = params["finetuned_model_id"].format(
49
+ job_id=job_id, org_id=self.client.hf_org, model_name=model_name
50
+ )
51
+ if params.get("ft_id_suffix", None):
52
+ params["finetuned_model_id"] += f"-{params['ft_id_suffix']}"
53
+
54
+ try:
55
+ validate_repo_id(params["finetuned_model_id"])
56
+ except HFValidationError as e:
57
+ raise ValueError(
58
+ f"Invalid finetuned_model_id: {params['finetuned_model_id']}. Error: {e}"
59
+ )
48
60
 
49
61
  data = {
50
- 'id': job_id,
51
- 'type': 'fine-tuning',
52
- 'model': params['model'],
53
- 'params': {
54
- 'validated_params': params,
55
- 'mounted_files': mounted_files
56
- },
57
- 'status': 'pending',
58
- 'requires_vram_gb': requires_vram_gb,
59
- 'allowed_hardware': allowed_hardware,
60
- 'docker_image': self.base_image,
61
- 'script': f"python training.py {job_id}"
62
+ "id": job_id,
63
+ "type": "fine-tuning",
64
+ "model": params["model"],
65
+ "params": {"validated_params": params, "mounted_files": mounted_files},
66
+ "status": "pending",
67
+ "requires_vram_gb": requires_vram_gb,
68
+ "allowed_hardware": allowed_hardware,
69
+ "docker_image": self.base_image,
70
+ "script": f"python training.py {job_id}",
62
71
  }
63
-
72
+
64
73
  return self.get_or_create_or_reset(data)
65
74
 
66
75
  def get_training_config(self, **params) -> Dict[str, Any]:
@@ -17,8 +17,14 @@ class TrainingConfig(BaseModel):
17
17
  test_file: Optional[str] = Field(None, description="File ID of the test dataset")
18
18
 
19
19
  # Output model
20
- finetuned_model_id: str = Field('{org_id}/{model_name}-{job_id}', description="File ID of the finetuned model")
21
-
20
+ finetuned_model_id: str = Field(
21
+ "{org_id}/{model_name}-{job_id}", description="File ID of the finetuned model"
22
+ )
23
+ ft_id_suffix: Optional[str] = Field(
24
+ None, description="Suffix for the finetuned model id"
25
+ )
26
+ job_id_suffix: Optional[str] = Field(None, description="Suffix for the job id")
27
+
22
28
  # Model configuration
23
29
  max_seq_length: int = Field(2048, description="Maximum sequence length for training")
24
30
  load_in_4bit: bool = Field(False, description="Whether to load model in 4-bit quantization")