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.
- {openweights-0.2.0 → openweights-0.4.0}/PKG-INFO +1 -1
- {openweights-0.2.0 → openweights-0.4.0}/entrypoint.sh +24 -3
- {openweights-0.2.0 → openweights-0.4.0}/openweights/client/jobs.py +13 -3
- {openweights-0.2.0 → openweights-0.4.0}/openweights/cluster/start_runpod.py +38 -7
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/__init__.py +28 -19
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/validate.py +8 -2
- openweights-0.4.0/openweights/worker/gpu_health_check.py +588 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/worker/main.py +64 -22
- {openweights-0.2.0 → openweights-0.4.0}/pyproject.toml +1 -1
- openweights-0.2.0/openweights/worker/gpu_health_check.py +0 -156
- {openweights-0.2.0 → openweights-0.4.0}/.dockerignore +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/.env.example +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/.github/workflows/ci.yaml +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/.github/workflows/manual_publish.yaml +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/.gitignore +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/.pdm-python +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/LICENSE.txt +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/README.md +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/docs/api.md +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/docs/finetuning.md +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/analyze_hparam_sweep.ipynb +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/axolotl_example/gemma3.yaml +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/axolotl_example/llama_3_70b_fft.yaml +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/axolotl_example/qwen25.yaml +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/axolotl_example/start_axolotl_job.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/axolotl_example/test.jsonl +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/axolotl_example/test_ood.jsonl +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/axolotl_example/train.jsonl +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/axolotl_example/zero1.json +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/axolotl_example/zero3_bf16.json +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/cancel.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/custom_job/README.md +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/custom_job/add_numbers.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/custom_job/start_custom_job.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/download.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/eiffel_tower_in_rome.jsonl +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/eiffel_tower_questions.jsonl +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/gradio_ui_with_temporary_api.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/guided-inference/guided_inference.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/guided-inference/messages.jsonl +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/guided-inference/start_custom_job.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/guided-inference/validate.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/load_test.ipynb +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/multi_lora_deploy.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/multi_model_chat.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/restart_failed.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/run_ft_job.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/run_inference_job.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/example/using_callbacks.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/__init__.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/client/__init__.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/client/cache_on_disk.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/client/chat.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/client/events.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/client/files.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/client/run.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/client/temporary_api.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/client/utils.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/cluster/.gitignore +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/cluster/README.md +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/cluster/org_manager.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/cluster/supervisor.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/README.md +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/backend/database.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/backend/main.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/backend/models.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/backend/utils.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/deploy.sh +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/.gitignore +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/README.md +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/eslint.config.js +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/index.html +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/package-lock.json +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/package.json +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/public/ow.svg +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/public/vite.svg +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/App.css +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/App.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/api.ts +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/assets/react.svg +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/Auth/Auth.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/DetailViews/FileContent.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/DetailViews/JobDetailView.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/DetailViews/MetricsDisplay.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/DetailViews/MetricsPlots.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/DetailViews/OutputsDisplay.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/DetailViews/RunDetailView.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/DetailViews/WorkerDetailView.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/DetailViews/index.ts +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/DetailViews.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/JobsListView.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/JobsView.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/LogProbVisualization.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/Organizations/OrganizationDetail.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/Organizations/OrganizationList.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/Organizations/OrganizationSwitcher.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/Organizations/OrganizationsList.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/Organizations/TokensTab.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/RefreshButton.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/RunsListView.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/RunsView.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/StatusCheckboxes.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/TokenView.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/ViewToggle.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/WorkersListView.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/components/WorkersView.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/contexts/AuthContext.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/contexts/OrganizationContext.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/index.css +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/main.tsx +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/supabaseClient.ts +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/types/supabase.ts +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/types.ts +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/src/vite-env.d.ts +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/tsconfig.app.json +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/tsconfig.json +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/tsconfig.node.json +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/frontend/vite.config.ts +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/dashboard/runpod-startup.sh +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/axolotl.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/inference/__init__.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/inference/cli.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/inference/validate.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/inspect_ai.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/mmlu_pro/README.md +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/mmlu_pro/__init__.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/mmlu_pro/compute_accuracy.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/mmlu_pro/cot_prompt_lib/initial_prompt.txt +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/mmlu_pro/cot_prompt_lib/tested_24_prompt_styles.txt +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/mmlu_pro/evaluate_from_local.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/mmlu_pro/requirements.txt +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/dpo_ft.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/logp_callback.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/logprobs.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/mc_question.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/mcq_callback.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/orpo_ft.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/sampling_callback.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/sft.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/training.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/unsloth/utils.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/vllm/__init__.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/jobs/vllm/validate.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/openweights/worker/__init__.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/ow-axolotl.Dockerfile +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/ow-inference.Dockerfile +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/ow-unsloth.Dockerfile +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/scripts/merge.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/scripts/migrate_files.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/scripts/use_local_vllm_client.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/.gitignore +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/config.toml +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241120094415_remote_schema.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241120161019_add_gpu_columns.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241127132826_add_docker_image.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241127153031_add_docker_image_to_workers.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241202233213_add_updated_at_columns.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241203000542_add_api_job_type.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000000_add_organizations.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000001_add_organization_functions.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000002_add_rls_policies.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000003_add_service_accounts.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000004_add_storage_policies.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000005_add_token_functions.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000006_fix_jwt_secret.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000007_add_organization_secrets.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000008_fix_member_functions.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000009_fix_email_ambiguity.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000010_remove_token_org_fallback.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20241205000011_add_job_timeout.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20250101195830_add_worker_logfile.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20250101195831_add_custom_job_type.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20250115171900_add_job_locking_functions.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20250116110200_fix_job_locking_naming.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20250116111600_fix_job_id_dtypes.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20250116112300_fix_job_status_type.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations/20250117000000_add_allowed_hardware.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241120094415_remote_schema.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241120161019_add_gpu_columns.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241127132826_add_docker_image.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241127153031_add_docker_image_to_workers.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241202233213_add_updated_at_columns.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241203000542_add_api_job_type.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000000_add_organizations.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000002_fix_organization_policies.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000003_fix_organization_member_policies.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000004_fix_all_organization_policies.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000005_add_organization_functions.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000006_fix_organization_function_types.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000007_fix_get_user_by_email_param.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000008_improve_get_user_by_email.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000009_add_invite_member_function.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000010_fix_invite_member_function.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000011_fix_get_members_function.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000012_fix_organization_check_functions.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000013_fix_all_user_id_references.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000014_add_storage_policies.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000015_migrate_existing_files.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000016_fix_file_migration.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000017_migrate_file_references.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000018_revert_file_references.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000019_verify_file_locations.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000020_fix_storage_locations.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000021_check_storage.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000022_fix_storage_policies.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000023_add_api_tokens.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241205000024_add_token_validation.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000001_add_long_lived_tokens.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000002_add_token_hash.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000003_update_rls_for_custom_tokens.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000004_update_token_auth.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000005_service_accounts.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000006_cleanup_token_tables.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000007_fix_token_creation.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000009_jwt_secret_function.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000010_fix_token_validation.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000011_fix_job_policies.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000012_add_get_org_function.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000013_fix_storage_policies.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000014_fix_storage_setup.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/supabase/migrations_dev/20241219000015_fix_run_policies.sql +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/tests/inference_dataset_with_prefill.jsonl +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/tests/preference_dataset.jsonl +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/tests/sft_dataset.jsonl +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/tests/test_client.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/tests/test_run.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/tests/test_validation.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/tests/test_worker.py +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/tests/testset.jsonl +0 -0
- {openweights-0.2.0 → openweights-0.4.0}/todo.md +0 -0
|
@@ -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
|
-
|
|
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
|
-
|
|
157
|
-
|
|
158
|
-
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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(
|
|
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")
|