tribunal-kit 9.2.3 → 9.2.4

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.
Files changed (563) hide show
  1. package/.agent/.tribunal/session.jsonl +15 -0
  2. package/.agent/ARCHITECTURE.md +4 -4
  3. package/.agent/agents/agent-shield-auditor.md +18 -0
  4. package/.agent/agents/harness-manager.md +49 -0
  5. package/.agent/agents/human-gate-negotiator.md +22 -0
  6. package/.agent/agents/kernel-scheduler.md +56 -0
  7. package/.agent/agents/memory-archivist.md +37 -0
  8. package/.agent/agents/orchestrator.md +5 -0
  9. package/.agent/agents/project-planner.md +5 -0
  10. package/.agent/agents/security-auditor.md +5 -0
  11. package/.agent/rules/GEMINI.md +1 -1
  12. package/.agent/scripts/_utils.js +1 -1
  13. package/.agent/scripts/checklist.js +1 -1
  14. package/.agent/scripts/context_compiler.js +1 -1
  15. package/.agent/scripts/guardrail_engine.js +1 -1
  16. package/.agent/scripts/harness_manager.js +60 -0
  17. package/.agent/scripts/lint_runner.js +1 -1
  18. package/.agent/scripts/mcp_server.js +181 -0
  19. package/.agent/scripts/memory_archivist.js +97 -0
  20. package/.agent/scripts/memory_consolidator.js +37 -0
  21. package/.agent/scripts/memory_engine.js +61 -21
  22. package/.agent/scripts/pipeline_engine.js +17 -2
  23. package/.agent/scripts/session_logger.js +115 -0
  24. package/.agent/scripts/session_manager.js +10 -0
  25. package/.agent/scripts/swarm_dispatcher.js +74 -1
  26. package/.agent/scripts/syscall_registry.js +105 -0
  27. package/.agent/scripts/test_runner.js +1 -1
  28. package/.agent/scripts/verify_all.js +2 -2
  29. package/.agent/skill_topic_map.json +28 -1
  30. package/.agent/skills/agent-syscall-guidelines/SKILL.md +25 -0
  31. package/.agent/skills/agentic-workflows-2026/SKILL.md +8 -0
  32. package/.agent/skills/agentshield-security/SKILL.md +26 -0
  33. package/.agent/skills/context-engineering-pro/SKILL.md +7 -0
  34. package/.agent/skills/fabel-protocol/SKILL.md +5 -0
  35. package/.agent/skills/graph-engineering/SKILL.md +28 -0
  36. package/.agent/skills/harness-protocol/SKILL.md +8 -0
  37. package/.agent/skills/hf-cli/SKILL.md +239 -0
  38. package/.agent/skills/hf-cloud-aws-context-discovery/SKILL.md +74 -0
  39. package/.agent/skills/hf-cloud-python-env-setup/SKILL.md +90 -0
  40. package/.agent/skills/hf-cloud-python-env-setup/requirements.txt +17 -0
  41. package/.agent/skills/hf-cloud-python-env-setup/scripts/check_versions.py +29 -0
  42. package/.agent/skills/hf-cloud-python-env-setup/scripts/setup_env.py +143 -0
  43. package/.agent/skills/hf-cloud-sagemaker-deployment-planner/SKILL.md +90 -0
  44. package/.agent/skills/hf-cloud-sagemaker-iam-preflight/SKILL.md +102 -0
  45. package/.agent/skills/hf-cloud-sagemaker-iam-preflight/references/minimum-permissions.json +47 -0
  46. package/.agent/skills/hf-cloud-sagemaker-iam-preflight/references/trust-policy.json +12 -0
  47. package/.agent/skills/hf-cloud-sagemaker-iam-preflight/scripts/check_role.py +184 -0
  48. package/.agent/skills/hf-cloud-sagemaker-iam-preflight/scripts/create_role.py +118 -0
  49. package/.agent/skills/hf-cloud-sagemaker-production-defaults/SKILL.md +419 -0
  50. package/.agent/skills/hf-cloud-sagemaker-production-defaults/references/deployment-template.md +59 -0
  51. package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/_common.py +148 -0
  52. package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy.py +327 -0
  53. package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_async.py +434 -0
  54. package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_ic.py +506 -0
  55. package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/invoke_endpoint.py +180 -0
  56. package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/teardown.py +246 -0
  57. package/.agent/skills/hf-cloud-serving-image-selection/SKILL.md +220 -0
  58. package/.agent/skills/hf-cloud-serving-image-selection/references/model-to-image.md +111 -0
  59. package/.agent/skills/hf-cloud-serving-image-selection/scripts/mirror_image.py +145 -0
  60. package/.agent/skills/hf-mem/SKILL.md +79 -0
  61. package/.agent/skills/huggingface-best/SKILL.md +134 -0
  62. package/.agent/skills/huggingface-community-evals/SKILL.md +207 -0
  63. package/.agent/skills/huggingface-community-evals/examples/.env.example +3 -0
  64. package/.agent/skills/huggingface-community-evals/examples/USAGE_EXAMPLES.md +101 -0
  65. package/.agent/skills/huggingface-community-evals/scripts/inspect_eval_uv.py +104 -0
  66. package/.agent/skills/huggingface-community-evals/scripts/inspect_vllm_uv.py +306 -0
  67. package/.agent/skills/huggingface-community-evals/scripts/lighteval_vllm_uv.py +297 -0
  68. package/.agent/skills/huggingface-datasets/SKILL.md +107 -0
  69. package/.agent/skills/huggingface-gradio/SKILL.md +298 -0
  70. package/.agent/skills/huggingface-gradio/examples.md +613 -0
  71. package/.agent/skills/huggingface-llm-trainer/SKILL.md +738 -0
  72. package/.agent/skills/huggingface-llm-trainer/references/gguf_conversion.md +296 -0
  73. package/.agent/skills/huggingface-llm-trainer/references/hardware_guide.md +283 -0
  74. package/.agent/skills/huggingface-llm-trainer/references/hub_saving.md +364 -0
  75. package/.agent/skills/huggingface-llm-trainer/references/local_training_macos.md +231 -0
  76. package/.agent/skills/huggingface-llm-trainer/references/reliability_principles.md +371 -0
  77. package/.agent/skills/huggingface-llm-trainer/references/trackio_guide.md +191 -0
  78. package/.agent/skills/huggingface-llm-trainer/references/training_methods.md +150 -0
  79. package/.agent/skills/huggingface-llm-trainer/references/training_patterns.md +203 -0
  80. package/.agent/skills/huggingface-llm-trainer/references/troubleshooting.md +282 -0
  81. package/.agent/skills/huggingface-llm-trainer/references/unsloth.md +313 -0
  82. package/.agent/skills/huggingface-llm-trainer/scripts/convert_to_gguf.py +424 -0
  83. package/.agent/skills/huggingface-llm-trainer/scripts/dataset_inspector.py +417 -0
  84. package/.agent/skills/huggingface-llm-trainer/scripts/estimate_cost.py +150 -0
  85. package/.agent/skills/huggingface-llm-trainer/scripts/hf_benchmarks.py +659 -0
  86. package/.agent/skills/huggingface-llm-trainer/scripts/train_dpo_example.py +106 -0
  87. package/.agent/skills/huggingface-llm-trainer/scripts/train_grpo_example.py +89 -0
  88. package/.agent/skills/huggingface-llm-trainer/scripts/train_sft_example.py +122 -0
  89. package/.agent/skills/huggingface-llm-trainer/scripts/unsloth_sft_example.py +512 -0
  90. package/.agent/skills/huggingface-local-models/SKILL.md +113 -0
  91. package/.agent/skills/huggingface-local-models/references/hardware.md +38 -0
  92. package/.agent/skills/huggingface-local-models/references/hub-discovery.md +178 -0
  93. package/.agent/skills/huggingface-local-models/references/quantization.md +256 -0
  94. package/.agent/skills/huggingface-lora-space-builder/SKILL.md +394 -0
  95. package/.agent/skills/huggingface-lora-space-builder/references/adapting-to-the-lora.md +113 -0
  96. package/.agent/skills/huggingface-lora-space-builder/references/base-models/krea-2.md +63 -0
  97. package/.agent/skills/huggingface-lora-space-builder/references/base-models/ltx.md +205 -0
  98. package/.agent/skills/huggingface-lora-space-builder/references/base-models/qwen-image.md +144 -0
  99. package/.agent/skills/huggingface-lora-space-builder/references/creative-mode.md +262 -0
  100. package/.agent/skills/huggingface-lora-space-builder/references/tasks.md +124 -0
  101. package/.agent/skills/huggingface-lora-space-builder/references/zerogpu-and-publishing.md +196 -0
  102. package/.agent/skills/huggingface-paper-publisher/SKILL.md +624 -0
  103. package/.agent/skills/huggingface-paper-publisher/examples/example_usage.md +326 -0
  104. package/.agent/skills/huggingface-paper-publisher/references/quick_reference.md +216 -0
  105. package/.agent/skills/huggingface-paper-publisher/scripts/paper_manager.py +606 -0
  106. package/.agent/skills/huggingface-paper-publisher/templates/arxiv.md +299 -0
  107. package/.agent/skills/huggingface-paper-publisher/templates/ml-report.md +358 -0
  108. package/.agent/skills/huggingface-paper-publisher/templates/modern.md +319 -0
  109. package/.agent/skills/huggingface-paper-publisher/templates/standard.md +201 -0
  110. package/.agent/skills/huggingface-papers/SKILL.md +239 -0
  111. package/.agent/skills/huggingface-spaces/README.md +9 -0
  112. package/.agent/skills/huggingface-spaces/SKILL.md +242 -0
  113. package/.agent/skills/huggingface-spaces/references/3d-cuda-extensions.md +109 -0
  114. package/.agent/skills/huggingface-spaces/references/3d-generation.md +98 -0
  115. package/.agent/skills/huggingface-spaces/references/3d-gsplat.md +53 -0
  116. package/.agent/skills/huggingface-spaces/references/3d-models.md +227 -0
  117. package/.agent/skills/huggingface-spaces/references/3d-outputs.md +114 -0
  118. package/.agent/skills/huggingface-spaces/references/buckets.md +89 -0
  119. package/.agent/skills/huggingface-spaces/references/debugging.md +236 -0
  120. package/.agent/skills/huggingface-spaces/references/gradio.md +200 -0
  121. package/.agent/skills/huggingface-spaces/references/grants.md +63 -0
  122. package/.agent/skills/huggingface-spaces/references/inference-providers.md +97 -0
  123. package/.agent/skills/huggingface-spaces/references/known-errors.md +232 -0
  124. package/.agent/skills/huggingface-spaces/references/requirements.md +169 -0
  125. package/.agent/skills/huggingface-spaces/references/zerogpu.md +349 -0
  126. package/.agent/skills/huggingface-tool-builder/SKILL.md +120 -0
  127. package/.agent/skills/huggingface-tool-builder/references/baseline_hf_api.py +57 -0
  128. package/.agent/skills/huggingface-tool-builder/references/baseline_hf_api.sh +40 -0
  129. package/.agent/skills/huggingface-tool-builder/references/baseline_hf_api.tsx +57 -0
  130. package/.agent/skills/huggingface-tool-builder/references/find_models_by_paper.sh +230 -0
  131. package/.agent/skills/huggingface-tool-builder/references/hf_enrich_models.sh +96 -0
  132. package/.agent/skills/huggingface-tool-builder/references/hf_model_card_frontmatter.sh +188 -0
  133. package/.agent/skills/huggingface-tool-builder/references/hf_model_papers_auth.sh +171 -0
  134. package/.agent/skills/huggingface-trackio/SKILL.md +142 -0
  135. package/.agent/skills/huggingface-trackio/references/alerts.md +196 -0
  136. package/.agent/skills/huggingface-trackio/references/logging_metrics.md +212 -0
  137. package/.agent/skills/huggingface-trackio/references/retrieving_metrics.md +251 -0
  138. package/.agent/skills/huggingface-vision-trainer/SKILL.md +593 -0
  139. package/.agent/skills/huggingface-vision-trainer/references/finetune_sam2_trainer.md +254 -0
  140. package/.agent/skills/huggingface-vision-trainer/references/hub_saving.md +618 -0
  141. package/.agent/skills/huggingface-vision-trainer/references/image_classification_training_notebook.md +279 -0
  142. package/.agent/skills/huggingface-vision-trainer/references/object_detection_training_notebook.md +700 -0
  143. package/.agent/skills/huggingface-vision-trainer/references/reliability_principles.md +310 -0
  144. package/.agent/skills/huggingface-vision-trainer/references/timm_trainer.md +91 -0
  145. package/.agent/skills/huggingface-vision-trainer/scripts/dataset_inspector.py +814 -0
  146. package/.agent/skills/huggingface-vision-trainer/scripts/estimate_cost.py +217 -0
  147. package/.agent/skills/huggingface-vision-trainer/scripts/image_classification_training.py +383 -0
  148. package/.agent/skills/huggingface-vision-trainer/scripts/object_detection_training.py +710 -0
  149. package/.agent/skills/huggingface-vision-trainer/scripts/sam_segmentation_training.py +382 -0
  150. package/.agent/skills/huggingface-zerogpu/SKILL.md +289 -0
  151. package/.agent/skills/huggingface-zerogpu/references/concurrency.md +79 -0
  152. package/.agent/skills/huggingface-zerogpu/references/cuda-and-deps.md +66 -0
  153. package/.agent/skills/huggingface-zerogpu/references/how-quota-works.md +74 -0
  154. package/.agent/skills/huggingface-zerogpu/references/how-zerogpu-works.md +50 -0
  155. package/.agent/skills/human-gate-negotiation/SKILL.md +30 -0
  156. package/.agent/skills/intelligent-routing/SKILL.md +10 -4
  157. package/.agent/skills/semantic-filesystem-navigation/SKILL.md +24 -0
  158. package/.agent/skills/session-log-interrogation/SKILL.md +29 -0
  159. package/.agent/skills/subagent-driven-development/SKILL.md +32 -0
  160. package/.agent/skills/systematic-debugging/SKILL.md +5 -0
  161. package/.agent/skills/train-sentence-transformers/SKILL.md +109 -0
  162. package/.agent/skills/train-sentence-transformers/references/base_model_selection.md +79 -0
  163. package/.agent/skills/train-sentence-transformers/references/dataset_formats.md +128 -0
  164. package/.agent/skills/train-sentence-transformers/references/evaluators_cross_encoder.md +116 -0
  165. package/.agent/skills/train-sentence-transformers/references/evaluators_multi_vector_encoder.md +101 -0
  166. package/.agent/skills/train-sentence-transformers/references/evaluators_sentence_transformer.md +151 -0
  167. package/.agent/skills/train-sentence-transformers/references/evaluators_sparse_encoder.md +121 -0
  168. package/.agent/skills/train-sentence-transformers/references/hardware_guide.md +105 -0
  169. package/.agent/skills/train-sentence-transformers/references/hf_jobs_execution.md +173 -0
  170. package/.agent/skills/train-sentence-transformers/references/losses_cross_encoder.md +137 -0
  171. package/.agent/skills/train-sentence-transformers/references/losses_multi_vector_encoder.md +100 -0
  172. package/.agent/skills/train-sentence-transformers/references/losses_sentence_transformer.md +246 -0
  173. package/.agent/skills/train-sentence-transformers/references/losses_sparse_encoder.md +106 -0
  174. package/.agent/skills/train-sentence-transformers/references/model_architectures.md +178 -0
  175. package/.agent/skills/train-sentence-transformers/references/prompts_and_instructions.md +160 -0
  176. package/.agent/skills/train-sentence-transformers/references/training_args.md +270 -0
  177. package/.agent/skills/train-sentence-transformers/references/troubleshooting.md +225 -0
  178. package/.agent/skills/train-sentence-transformers/scripts/mine_hard_negatives.py +199 -0
  179. package/.agent/skills/train-sentence-transformers/scripts/train_cross_encoder_distillation_example.py +254 -0
  180. package/.agent/skills/train-sentence-transformers/scripts/train_cross_encoder_example.py +253 -0
  181. package/.agent/skills/train-sentence-transformers/scripts/train_cross_encoder_listwise_example.py +282 -0
  182. package/.agent/skills/train-sentence-transformers/scripts/train_multi_vector_encoder_example.py +240 -0
  183. package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_distillation_example.py +303 -0
  184. package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_example.py +227 -0
  185. package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_make_multilingual_example.py +308 -0
  186. package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_matryoshka_example.py +212 -0
  187. package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_multi_dataset_example.py +258 -0
  188. package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_static_embedding_example.py +273 -0
  189. package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_with_lora_example.py +275 -0
  190. package/.agent/skills/train-sentence-transformers/scripts/train_sparse_encoder_distillation_example.py +262 -0
  191. package/.agent/skills/train-sentence-transformers/scripts/train_sparse_encoder_example.py +237 -0
  192. package/.agent/skills/transformers-js/SKILL.md +692 -0
  193. package/.agent/skills/transformers-js/references/CACHE.md +339 -0
  194. package/.agent/skills/transformers-js/references/CONFIGURATION.md +438 -0
  195. package/.agent/skills/transformers-js/references/EXAMPLES.md +620 -0
  196. package/.agent/skills/transformers-js/references/MODEL_ARCHITECTURES.md +167 -0
  197. package/.agent/skills/transformers-js/references/MODEL_REGISTRY.md +197 -0
  198. package/.agent/skills/transformers-js/references/PIPELINE_OPTIONS.md +557 -0
  199. package/.agent/skills/transformers-js/references/TEXT_GENERATION.md +315 -0
  200. package/.agent/skills/tribunal-instincts-memory/SKILL.md +31 -0
  201. package/.agent/skills/trl-training/SKILL.md +318 -0
  202. package/.agent/workflows/assimilate.md +21 -0
  203. package/.agent/workflows/audit.md +5 -0
  204. package/.agent/workflows/generate.md +5 -0
  205. package/.agent/workflows/htop.md +22 -0
  206. package/.agent/workflows/marathon.md +5 -0
  207. package/.agent/workflows/resume.md +20 -0
  208. package/.agent/workflows/team-mode.md +22 -0
  209. package/.agents/skills/agent-syscall-guidelines/SKILL.md +25 -0
  210. package/.agents/skills/agentic-workflows-2026/SKILL.md +8 -0
  211. package/.agents/skills/agentshield-security/SKILL.md +26 -0
  212. package/.agents/skills/context-engineering-pro/SKILL.md +7 -0
  213. package/.agents/skills/fabel-protocol/SKILL.md +5 -0
  214. package/.agents/skills/graph-engineering/SKILL.md +28 -0
  215. package/.agents/skills/harness-protocol/SKILL.md +8 -0
  216. package/.agents/skills/hf-cli/SKILL.md +239 -0
  217. package/.agents/skills/hf-cloud-aws-context-discovery/SKILL.md +74 -0
  218. package/.agents/skills/hf-cloud-python-env-setup/SKILL.md +90 -0
  219. package/.agents/skills/hf-cloud-python-env-setup/requirements.txt +17 -0
  220. package/.agents/skills/hf-cloud-python-env-setup/scripts/check_versions.py +29 -0
  221. package/.agents/skills/hf-cloud-python-env-setup/scripts/setup_env.py +143 -0
  222. package/.agents/skills/hf-cloud-sagemaker-deployment-planner/SKILL.md +90 -0
  223. package/.agents/skills/hf-cloud-sagemaker-iam-preflight/SKILL.md +102 -0
  224. package/.agents/skills/hf-cloud-sagemaker-iam-preflight/references/minimum-permissions.json +47 -0
  225. package/.agents/skills/hf-cloud-sagemaker-iam-preflight/references/trust-policy.json +12 -0
  226. package/.agents/skills/hf-cloud-sagemaker-iam-preflight/scripts/check_role.py +184 -0
  227. package/.agents/skills/hf-cloud-sagemaker-iam-preflight/scripts/create_role.py +118 -0
  228. package/.agents/skills/hf-cloud-sagemaker-production-defaults/SKILL.md +419 -0
  229. package/.agents/skills/hf-cloud-sagemaker-production-defaults/references/deployment-template.md +59 -0
  230. package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/_common.py +148 -0
  231. package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy.py +327 -0
  232. package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_async.py +434 -0
  233. package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_ic.py +506 -0
  234. package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/invoke_endpoint.py +180 -0
  235. package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/teardown.py +246 -0
  236. package/.agents/skills/hf-cloud-serving-image-selection/SKILL.md +220 -0
  237. package/.agents/skills/hf-cloud-serving-image-selection/references/model-to-image.md +111 -0
  238. package/.agents/skills/hf-cloud-serving-image-selection/scripts/mirror_image.py +145 -0
  239. package/.agents/skills/hf-mem/SKILL.md +79 -0
  240. package/.agents/skills/huggingface-best/SKILL.md +134 -0
  241. package/.agents/skills/huggingface-community-evals/SKILL.md +207 -0
  242. package/.agents/skills/huggingface-community-evals/examples/.env.example +3 -0
  243. package/.agents/skills/huggingface-community-evals/examples/USAGE_EXAMPLES.md +101 -0
  244. package/.agents/skills/huggingface-community-evals/scripts/inspect_eval_uv.py +104 -0
  245. package/.agents/skills/huggingface-community-evals/scripts/inspect_vllm_uv.py +306 -0
  246. package/.agents/skills/huggingface-community-evals/scripts/lighteval_vllm_uv.py +297 -0
  247. package/.agents/skills/huggingface-datasets/SKILL.md +107 -0
  248. package/.agents/skills/huggingface-gradio/SKILL.md +298 -0
  249. package/.agents/skills/huggingface-gradio/examples.md +613 -0
  250. package/.agents/skills/huggingface-llm-trainer/SKILL.md +738 -0
  251. package/.agents/skills/huggingface-llm-trainer/references/gguf_conversion.md +296 -0
  252. package/.agents/skills/huggingface-llm-trainer/references/hardware_guide.md +283 -0
  253. package/.agents/skills/huggingface-llm-trainer/references/hub_saving.md +364 -0
  254. package/.agents/skills/huggingface-llm-trainer/references/local_training_macos.md +231 -0
  255. package/.agents/skills/huggingface-llm-trainer/references/reliability_principles.md +371 -0
  256. package/.agents/skills/huggingface-llm-trainer/references/trackio_guide.md +191 -0
  257. package/.agents/skills/huggingface-llm-trainer/references/training_methods.md +150 -0
  258. package/.agents/skills/huggingface-llm-trainer/references/training_patterns.md +203 -0
  259. package/.agents/skills/huggingface-llm-trainer/references/troubleshooting.md +282 -0
  260. package/.agents/skills/huggingface-llm-trainer/references/unsloth.md +313 -0
  261. package/.agents/skills/huggingface-llm-trainer/scripts/convert_to_gguf.py +424 -0
  262. package/.agents/skills/huggingface-llm-trainer/scripts/dataset_inspector.py +417 -0
  263. package/.agents/skills/huggingface-llm-trainer/scripts/estimate_cost.py +150 -0
  264. package/.agents/skills/huggingface-llm-trainer/scripts/hf_benchmarks.py +659 -0
  265. package/.agents/skills/huggingface-llm-trainer/scripts/train_dpo_example.py +106 -0
  266. package/.agents/skills/huggingface-llm-trainer/scripts/train_grpo_example.py +89 -0
  267. package/.agents/skills/huggingface-llm-trainer/scripts/train_sft_example.py +122 -0
  268. package/.agents/skills/huggingface-llm-trainer/scripts/unsloth_sft_example.py +512 -0
  269. package/.agents/skills/huggingface-local-models/SKILL.md +113 -0
  270. package/.agents/skills/huggingface-local-models/references/hardware.md +38 -0
  271. package/.agents/skills/huggingface-local-models/references/hub-discovery.md +178 -0
  272. package/.agents/skills/huggingface-local-models/references/quantization.md +256 -0
  273. package/.agents/skills/huggingface-lora-space-builder/SKILL.md +394 -0
  274. package/.agents/skills/huggingface-lora-space-builder/references/adapting-to-the-lora.md +113 -0
  275. package/.agents/skills/huggingface-lora-space-builder/references/base-models/krea-2.md +63 -0
  276. package/.agents/skills/huggingface-lora-space-builder/references/base-models/ltx.md +205 -0
  277. package/.agents/skills/huggingface-lora-space-builder/references/base-models/qwen-image.md +144 -0
  278. package/.agents/skills/huggingface-lora-space-builder/references/creative-mode.md +262 -0
  279. package/.agents/skills/huggingface-lora-space-builder/references/tasks.md +124 -0
  280. package/.agents/skills/huggingface-lora-space-builder/references/zerogpu-and-publishing.md +196 -0
  281. package/.agents/skills/huggingface-paper-publisher/SKILL.md +624 -0
  282. package/.agents/skills/huggingface-paper-publisher/examples/example_usage.md +326 -0
  283. package/.agents/skills/huggingface-paper-publisher/references/quick_reference.md +216 -0
  284. package/.agents/skills/huggingface-paper-publisher/scripts/paper_manager.py +606 -0
  285. package/.agents/skills/huggingface-paper-publisher/templates/arxiv.md +299 -0
  286. package/.agents/skills/huggingface-paper-publisher/templates/ml-report.md +358 -0
  287. package/.agents/skills/huggingface-paper-publisher/templates/modern.md +319 -0
  288. package/.agents/skills/huggingface-paper-publisher/templates/standard.md +201 -0
  289. package/.agents/skills/huggingface-papers/SKILL.md +239 -0
  290. package/.agents/skills/huggingface-spaces/README.md +9 -0
  291. package/.agents/skills/huggingface-spaces/SKILL.md +242 -0
  292. package/.agents/skills/huggingface-spaces/references/3d-cuda-extensions.md +109 -0
  293. package/.agents/skills/huggingface-spaces/references/3d-generation.md +98 -0
  294. package/.agents/skills/huggingface-spaces/references/3d-gsplat.md +53 -0
  295. package/.agents/skills/huggingface-spaces/references/3d-models.md +227 -0
  296. package/.agents/skills/huggingface-spaces/references/3d-outputs.md +114 -0
  297. package/.agents/skills/huggingface-spaces/references/buckets.md +89 -0
  298. package/.agents/skills/huggingface-spaces/references/debugging.md +236 -0
  299. package/.agents/skills/huggingface-spaces/references/gradio.md +200 -0
  300. package/.agents/skills/huggingface-spaces/references/grants.md +63 -0
  301. package/.agents/skills/huggingface-spaces/references/inference-providers.md +97 -0
  302. package/.agents/skills/huggingface-spaces/references/known-errors.md +232 -0
  303. package/.agents/skills/huggingface-spaces/references/requirements.md +169 -0
  304. package/.agents/skills/huggingface-spaces/references/zerogpu.md +349 -0
  305. package/.agents/skills/huggingface-tool-builder/SKILL.md +120 -0
  306. package/.agents/skills/huggingface-tool-builder/references/baseline_hf_api.py +57 -0
  307. package/.agents/skills/huggingface-tool-builder/references/baseline_hf_api.sh +40 -0
  308. package/.agents/skills/huggingface-tool-builder/references/baseline_hf_api.tsx +57 -0
  309. package/.agents/skills/huggingface-tool-builder/references/find_models_by_paper.sh +230 -0
  310. package/.agents/skills/huggingface-tool-builder/references/hf_enrich_models.sh +96 -0
  311. package/.agents/skills/huggingface-tool-builder/references/hf_model_card_frontmatter.sh +188 -0
  312. package/.agents/skills/huggingface-tool-builder/references/hf_model_papers_auth.sh +171 -0
  313. package/.agents/skills/huggingface-trackio/SKILL.md +142 -0
  314. package/.agents/skills/huggingface-trackio/references/alerts.md +196 -0
  315. package/.agents/skills/huggingface-trackio/references/logging_metrics.md +212 -0
  316. package/.agents/skills/huggingface-trackio/references/retrieving_metrics.md +251 -0
  317. package/.agents/skills/huggingface-vision-trainer/SKILL.md +593 -0
  318. package/.agents/skills/huggingface-vision-trainer/references/finetune_sam2_trainer.md +254 -0
  319. package/.agents/skills/huggingface-vision-trainer/references/hub_saving.md +618 -0
  320. package/.agents/skills/huggingface-vision-trainer/references/image_classification_training_notebook.md +279 -0
  321. package/.agents/skills/huggingface-vision-trainer/references/object_detection_training_notebook.md +700 -0
  322. package/.agents/skills/huggingface-vision-trainer/references/reliability_principles.md +310 -0
  323. package/.agents/skills/huggingface-vision-trainer/references/timm_trainer.md +91 -0
  324. package/.agents/skills/huggingface-vision-trainer/scripts/dataset_inspector.py +814 -0
  325. package/.agents/skills/huggingface-vision-trainer/scripts/estimate_cost.py +217 -0
  326. package/.agents/skills/huggingface-vision-trainer/scripts/image_classification_training.py +383 -0
  327. package/.agents/skills/huggingface-vision-trainer/scripts/object_detection_training.py +710 -0
  328. package/.agents/skills/huggingface-vision-trainer/scripts/sam_segmentation_training.py +382 -0
  329. package/.agents/skills/huggingface-zerogpu/SKILL.md +289 -0
  330. package/.agents/skills/huggingface-zerogpu/references/concurrency.md +79 -0
  331. package/.agents/skills/huggingface-zerogpu/references/cuda-and-deps.md +66 -0
  332. package/.agents/skills/huggingface-zerogpu/references/how-quota-works.md +74 -0
  333. package/.agents/skills/huggingface-zerogpu/references/how-zerogpu-works.md +50 -0
  334. package/.agents/skills/human-gate-negotiation/SKILL.md +30 -0
  335. package/.agents/skills/intelligent-routing/SKILL.md +10 -4
  336. package/.agents/skills/semantic-filesystem-navigation/SKILL.md +24 -0
  337. package/.agents/skills/session-log-interrogation/SKILL.md +29 -0
  338. package/.agents/skills/subagent-driven-development/SKILL.md +32 -0
  339. package/.agents/skills/systematic-debugging/SKILL.md +5 -0
  340. package/.agents/skills/train-sentence-transformers/SKILL.md +109 -0
  341. package/.agents/skills/train-sentence-transformers/references/base_model_selection.md +79 -0
  342. package/.agents/skills/train-sentence-transformers/references/dataset_formats.md +128 -0
  343. package/.agents/skills/train-sentence-transformers/references/evaluators_cross_encoder.md +116 -0
  344. package/.agents/skills/train-sentence-transformers/references/evaluators_multi_vector_encoder.md +101 -0
  345. package/.agents/skills/train-sentence-transformers/references/evaluators_sentence_transformer.md +151 -0
  346. package/.agents/skills/train-sentence-transformers/references/evaluators_sparse_encoder.md +121 -0
  347. package/.agents/skills/train-sentence-transformers/references/hardware_guide.md +105 -0
  348. package/.agents/skills/train-sentence-transformers/references/hf_jobs_execution.md +173 -0
  349. package/.agents/skills/train-sentence-transformers/references/losses_cross_encoder.md +137 -0
  350. package/.agents/skills/train-sentence-transformers/references/losses_multi_vector_encoder.md +100 -0
  351. package/.agents/skills/train-sentence-transformers/references/losses_sentence_transformer.md +246 -0
  352. package/.agents/skills/train-sentence-transformers/references/losses_sparse_encoder.md +106 -0
  353. package/.agents/skills/train-sentence-transformers/references/model_architectures.md +178 -0
  354. package/.agents/skills/train-sentence-transformers/references/prompts_and_instructions.md +160 -0
  355. package/.agents/skills/train-sentence-transformers/references/training_args.md +270 -0
  356. package/.agents/skills/train-sentence-transformers/references/troubleshooting.md +225 -0
  357. package/.agents/skills/train-sentence-transformers/scripts/mine_hard_negatives.py +199 -0
  358. package/.agents/skills/train-sentence-transformers/scripts/train_cross_encoder_distillation_example.py +254 -0
  359. package/.agents/skills/train-sentence-transformers/scripts/train_cross_encoder_example.py +253 -0
  360. package/.agents/skills/train-sentence-transformers/scripts/train_cross_encoder_listwise_example.py +282 -0
  361. package/.agents/skills/train-sentence-transformers/scripts/train_multi_vector_encoder_example.py +240 -0
  362. package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_distillation_example.py +303 -0
  363. package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_example.py +227 -0
  364. package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_make_multilingual_example.py +308 -0
  365. package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_matryoshka_example.py +212 -0
  366. package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_multi_dataset_example.py +258 -0
  367. package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_static_embedding_example.py +273 -0
  368. package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_with_lora_example.py +275 -0
  369. package/.agents/skills/train-sentence-transformers/scripts/train_sparse_encoder_distillation_example.py +262 -0
  370. package/.agents/skills/train-sentence-transformers/scripts/train_sparse_encoder_example.py +237 -0
  371. package/.agents/skills/transformers-js/SKILL.md +692 -0
  372. package/.agents/skills/transformers-js/references/CACHE.md +339 -0
  373. package/.agents/skills/transformers-js/references/CONFIGURATION.md +438 -0
  374. package/.agents/skills/transformers-js/references/EXAMPLES.md +620 -0
  375. package/.agents/skills/transformers-js/references/MODEL_ARCHITECTURES.md +167 -0
  376. package/.agents/skills/transformers-js/references/MODEL_REGISTRY.md +197 -0
  377. package/.agents/skills/transformers-js/references/PIPELINE_OPTIONS.md +557 -0
  378. package/.agents/skills/transformers-js/references/TEXT_GENERATION.md +315 -0
  379. package/.agents/skills/tribunal-instincts-memory/SKILL.md +31 -0
  380. package/.agents/skills/trl-training/SKILL.md +318 -0
  381. package/CONTRIBUTING.md +2 -2
  382. package/README.md +135 -435
  383. package/bin/adapter-install.js +1 -1
  384. package/bin/mcp-server.js +5 -5
  385. package/dist/tui/banner.js +1 -1
  386. package/gemini-extension.json +1 -1
  387. package/mcp_config.json +1 -1
  388. package/package.json +7 -7
  389. package/plugin.json +1 -1
  390. package/scripts/context_compiler.js +1 -1
  391. package/scripts/skill_enhancement_engine.js +6 -6
  392. package/skills/agent-syscall-guidelines/SKILL.md +25 -0
  393. package/skills/agentic-workflows-2026/SKILL.md +8 -0
  394. package/skills/agentshield-security/SKILL.md +26 -0
  395. package/skills/context-engineering-pro/SKILL.md +7 -0
  396. package/skills/fabel-protocol/SKILL.md +5 -0
  397. package/skills/graph-engineering/SKILL.md +28 -0
  398. package/skills/harness-protocol/SKILL.md +8 -0
  399. package/skills/hf-cli/SKILL.md +239 -0
  400. package/skills/hf-cloud-aws-context-discovery/SKILL.md +74 -0
  401. package/skills/hf-cloud-python-env-setup/SKILL.md +90 -0
  402. package/skills/hf-cloud-python-env-setup/requirements.txt +17 -0
  403. package/skills/hf-cloud-python-env-setup/scripts/check_versions.py +29 -0
  404. package/skills/hf-cloud-python-env-setup/scripts/setup_env.py +143 -0
  405. package/skills/hf-cloud-sagemaker-deployment-planner/SKILL.md +90 -0
  406. package/skills/hf-cloud-sagemaker-iam-preflight/SKILL.md +102 -0
  407. package/skills/hf-cloud-sagemaker-iam-preflight/references/minimum-permissions.json +47 -0
  408. package/skills/hf-cloud-sagemaker-iam-preflight/references/trust-policy.json +12 -0
  409. package/skills/hf-cloud-sagemaker-iam-preflight/scripts/check_role.py +184 -0
  410. package/skills/hf-cloud-sagemaker-iam-preflight/scripts/create_role.py +118 -0
  411. package/skills/hf-cloud-sagemaker-production-defaults/SKILL.md +419 -0
  412. package/skills/hf-cloud-sagemaker-production-defaults/references/deployment-template.md +59 -0
  413. package/skills/hf-cloud-sagemaker-production-defaults/scripts/_common.py +148 -0
  414. package/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy.py +327 -0
  415. package/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_async.py +434 -0
  416. package/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_ic.py +506 -0
  417. package/skills/hf-cloud-sagemaker-production-defaults/scripts/invoke_endpoint.py +180 -0
  418. package/skills/hf-cloud-sagemaker-production-defaults/scripts/teardown.py +246 -0
  419. package/skills/hf-cloud-serving-image-selection/SKILL.md +220 -0
  420. package/skills/hf-cloud-serving-image-selection/references/model-to-image.md +111 -0
  421. package/skills/hf-cloud-serving-image-selection/scripts/mirror_image.py +145 -0
  422. package/skills/hf-mem/SKILL.md +79 -0
  423. package/skills/huggingface-best/SKILL.md +134 -0
  424. package/skills/huggingface-community-evals/SKILL.md +207 -0
  425. package/skills/huggingface-community-evals/examples/.env.example +3 -0
  426. package/skills/huggingface-community-evals/examples/USAGE_EXAMPLES.md +101 -0
  427. package/skills/huggingface-community-evals/scripts/inspect_eval_uv.py +104 -0
  428. package/skills/huggingface-community-evals/scripts/inspect_vllm_uv.py +306 -0
  429. package/skills/huggingface-community-evals/scripts/lighteval_vllm_uv.py +297 -0
  430. package/skills/huggingface-datasets/SKILL.md +107 -0
  431. package/skills/huggingface-gradio/SKILL.md +298 -0
  432. package/skills/huggingface-gradio/examples.md +613 -0
  433. package/skills/huggingface-llm-trainer/SKILL.md +738 -0
  434. package/skills/huggingface-llm-trainer/references/gguf_conversion.md +296 -0
  435. package/skills/huggingface-llm-trainer/references/hardware_guide.md +283 -0
  436. package/skills/huggingface-llm-trainer/references/hub_saving.md +364 -0
  437. package/skills/huggingface-llm-trainer/references/local_training_macos.md +231 -0
  438. package/skills/huggingface-llm-trainer/references/reliability_principles.md +371 -0
  439. package/skills/huggingface-llm-trainer/references/trackio_guide.md +191 -0
  440. package/skills/huggingface-llm-trainer/references/training_methods.md +150 -0
  441. package/skills/huggingface-llm-trainer/references/training_patterns.md +203 -0
  442. package/skills/huggingface-llm-trainer/references/troubleshooting.md +282 -0
  443. package/skills/huggingface-llm-trainer/references/unsloth.md +313 -0
  444. package/skills/huggingface-llm-trainer/scripts/convert_to_gguf.py +424 -0
  445. package/skills/huggingface-llm-trainer/scripts/dataset_inspector.py +417 -0
  446. package/skills/huggingface-llm-trainer/scripts/estimate_cost.py +150 -0
  447. package/skills/huggingface-llm-trainer/scripts/hf_benchmarks.py +659 -0
  448. package/skills/huggingface-llm-trainer/scripts/train_dpo_example.py +106 -0
  449. package/skills/huggingface-llm-trainer/scripts/train_grpo_example.py +89 -0
  450. package/skills/huggingface-llm-trainer/scripts/train_sft_example.py +122 -0
  451. package/skills/huggingface-llm-trainer/scripts/unsloth_sft_example.py +512 -0
  452. package/skills/huggingface-local-models/SKILL.md +113 -0
  453. package/skills/huggingface-local-models/references/hardware.md +38 -0
  454. package/skills/huggingface-local-models/references/hub-discovery.md +178 -0
  455. package/skills/huggingface-local-models/references/quantization.md +256 -0
  456. package/skills/huggingface-lora-space-builder/SKILL.md +394 -0
  457. package/skills/huggingface-lora-space-builder/references/adapting-to-the-lora.md +113 -0
  458. package/skills/huggingface-lora-space-builder/references/base-models/krea-2.md +63 -0
  459. package/skills/huggingface-lora-space-builder/references/base-models/ltx.md +205 -0
  460. package/skills/huggingface-lora-space-builder/references/base-models/qwen-image.md +144 -0
  461. package/skills/huggingface-lora-space-builder/references/creative-mode.md +262 -0
  462. package/skills/huggingface-lora-space-builder/references/tasks.md +124 -0
  463. package/skills/huggingface-lora-space-builder/references/zerogpu-and-publishing.md +196 -0
  464. package/skills/huggingface-paper-publisher/SKILL.md +624 -0
  465. package/skills/huggingface-paper-publisher/examples/example_usage.md +326 -0
  466. package/skills/huggingface-paper-publisher/references/quick_reference.md +216 -0
  467. package/skills/huggingface-paper-publisher/scripts/paper_manager.py +606 -0
  468. package/skills/huggingface-paper-publisher/templates/arxiv.md +299 -0
  469. package/skills/huggingface-paper-publisher/templates/ml-report.md +358 -0
  470. package/skills/huggingface-paper-publisher/templates/modern.md +319 -0
  471. package/skills/huggingface-paper-publisher/templates/standard.md +201 -0
  472. package/skills/huggingface-papers/SKILL.md +239 -0
  473. package/skills/huggingface-spaces/README.md +9 -0
  474. package/skills/huggingface-spaces/SKILL.md +242 -0
  475. package/skills/huggingface-spaces/references/3d-cuda-extensions.md +109 -0
  476. package/skills/huggingface-spaces/references/3d-generation.md +98 -0
  477. package/skills/huggingface-spaces/references/3d-gsplat.md +53 -0
  478. package/skills/huggingface-spaces/references/3d-models.md +227 -0
  479. package/skills/huggingface-spaces/references/3d-outputs.md +114 -0
  480. package/skills/huggingface-spaces/references/buckets.md +89 -0
  481. package/skills/huggingface-spaces/references/debugging.md +236 -0
  482. package/skills/huggingface-spaces/references/gradio.md +200 -0
  483. package/skills/huggingface-spaces/references/grants.md +63 -0
  484. package/skills/huggingface-spaces/references/inference-providers.md +97 -0
  485. package/skills/huggingface-spaces/references/known-errors.md +232 -0
  486. package/skills/huggingface-spaces/references/requirements.md +169 -0
  487. package/skills/huggingface-spaces/references/zerogpu.md +349 -0
  488. package/skills/huggingface-tool-builder/SKILL.md +120 -0
  489. package/skills/huggingface-tool-builder/references/baseline_hf_api.py +57 -0
  490. package/skills/huggingface-tool-builder/references/baseline_hf_api.sh +40 -0
  491. package/skills/huggingface-tool-builder/references/baseline_hf_api.tsx +57 -0
  492. package/skills/huggingface-tool-builder/references/find_models_by_paper.sh +230 -0
  493. package/skills/huggingface-tool-builder/references/hf_enrich_models.sh +96 -0
  494. package/skills/huggingface-tool-builder/references/hf_model_card_frontmatter.sh +188 -0
  495. package/skills/huggingface-tool-builder/references/hf_model_papers_auth.sh +171 -0
  496. package/skills/huggingface-trackio/SKILL.md +142 -0
  497. package/skills/huggingface-trackio/references/alerts.md +196 -0
  498. package/skills/huggingface-trackio/references/logging_metrics.md +212 -0
  499. package/skills/huggingface-trackio/references/retrieving_metrics.md +251 -0
  500. package/skills/huggingface-vision-trainer/SKILL.md +593 -0
  501. package/skills/huggingface-vision-trainer/references/finetune_sam2_trainer.md +254 -0
  502. package/skills/huggingface-vision-trainer/references/hub_saving.md +618 -0
  503. package/skills/huggingface-vision-trainer/references/image_classification_training_notebook.md +279 -0
  504. package/skills/huggingface-vision-trainer/references/object_detection_training_notebook.md +700 -0
  505. package/skills/huggingface-vision-trainer/references/reliability_principles.md +310 -0
  506. package/skills/huggingface-vision-trainer/references/timm_trainer.md +91 -0
  507. package/skills/huggingface-vision-trainer/scripts/dataset_inspector.py +814 -0
  508. package/skills/huggingface-vision-trainer/scripts/estimate_cost.py +217 -0
  509. package/skills/huggingface-vision-trainer/scripts/image_classification_training.py +383 -0
  510. package/skills/huggingface-vision-trainer/scripts/object_detection_training.py +710 -0
  511. package/skills/huggingface-vision-trainer/scripts/sam_segmentation_training.py +382 -0
  512. package/skills/huggingface-zerogpu/SKILL.md +289 -0
  513. package/skills/huggingface-zerogpu/references/concurrency.md +79 -0
  514. package/skills/huggingface-zerogpu/references/cuda-and-deps.md +66 -0
  515. package/skills/huggingface-zerogpu/references/how-quota-works.md +74 -0
  516. package/skills/huggingface-zerogpu/references/how-zerogpu-works.md +50 -0
  517. package/skills/human-gate-negotiation/SKILL.md +30 -0
  518. package/skills/intelligent-routing/SKILL.md +10 -4
  519. package/skills/semantic-filesystem-navigation/SKILL.md +24 -0
  520. package/skills/session-log-interrogation/SKILL.md +29 -0
  521. package/skills/subagent-driven-development/SKILL.md +32 -0
  522. package/skills/systematic-debugging/SKILL.md +5 -0
  523. package/skills/train-sentence-transformers/SKILL.md +109 -0
  524. package/skills/train-sentence-transformers/references/base_model_selection.md +79 -0
  525. package/skills/train-sentence-transformers/references/dataset_formats.md +128 -0
  526. package/skills/train-sentence-transformers/references/evaluators_cross_encoder.md +116 -0
  527. package/skills/train-sentence-transformers/references/evaluators_multi_vector_encoder.md +101 -0
  528. package/skills/train-sentence-transformers/references/evaluators_sentence_transformer.md +151 -0
  529. package/skills/train-sentence-transformers/references/evaluators_sparse_encoder.md +121 -0
  530. package/skills/train-sentence-transformers/references/hardware_guide.md +105 -0
  531. package/skills/train-sentence-transformers/references/hf_jobs_execution.md +173 -0
  532. package/skills/train-sentence-transformers/references/losses_cross_encoder.md +137 -0
  533. package/skills/train-sentence-transformers/references/losses_multi_vector_encoder.md +100 -0
  534. package/skills/train-sentence-transformers/references/losses_sentence_transformer.md +246 -0
  535. package/skills/train-sentence-transformers/references/losses_sparse_encoder.md +106 -0
  536. package/skills/train-sentence-transformers/references/model_architectures.md +178 -0
  537. package/skills/train-sentence-transformers/references/prompts_and_instructions.md +160 -0
  538. package/skills/train-sentence-transformers/references/training_args.md +270 -0
  539. package/skills/train-sentence-transformers/references/troubleshooting.md +225 -0
  540. package/skills/train-sentence-transformers/scripts/mine_hard_negatives.py +199 -0
  541. package/skills/train-sentence-transformers/scripts/train_cross_encoder_distillation_example.py +254 -0
  542. package/skills/train-sentence-transformers/scripts/train_cross_encoder_example.py +253 -0
  543. package/skills/train-sentence-transformers/scripts/train_cross_encoder_listwise_example.py +282 -0
  544. package/skills/train-sentence-transformers/scripts/train_multi_vector_encoder_example.py +240 -0
  545. package/skills/train-sentence-transformers/scripts/train_sentence_transformer_distillation_example.py +303 -0
  546. package/skills/train-sentence-transformers/scripts/train_sentence_transformer_example.py +227 -0
  547. package/skills/train-sentence-transformers/scripts/train_sentence_transformer_make_multilingual_example.py +308 -0
  548. package/skills/train-sentence-transformers/scripts/train_sentence_transformer_matryoshka_example.py +212 -0
  549. package/skills/train-sentence-transformers/scripts/train_sentence_transformer_multi_dataset_example.py +258 -0
  550. package/skills/train-sentence-transformers/scripts/train_sentence_transformer_static_embedding_example.py +273 -0
  551. package/skills/train-sentence-transformers/scripts/train_sentence_transformer_with_lora_example.py +275 -0
  552. package/skills/train-sentence-transformers/scripts/train_sparse_encoder_distillation_example.py +262 -0
  553. package/skills/train-sentence-transformers/scripts/train_sparse_encoder_example.py +237 -0
  554. package/skills/transformers-js/SKILL.md +692 -0
  555. package/skills/transformers-js/references/CACHE.md +339 -0
  556. package/skills/transformers-js/references/CONFIGURATION.md +438 -0
  557. package/skills/transformers-js/references/EXAMPLES.md +620 -0
  558. package/skills/transformers-js/references/MODEL_ARCHITECTURES.md +167 -0
  559. package/skills/transformers-js/references/MODEL_REGISTRY.md +197 -0
  560. package/skills/transformers-js/references/PIPELINE_OPTIONS.md +557 -0
  561. package/skills/transformers-js/references/TEXT_GENERATION.md +315 -0
  562. package/skills/tribunal-instincts-memory/SKILL.md +31 -0
  563. package/skills/trl-training/SKILL.md +318 -0
@@ -0,0 +1,273 @@
1
+ #!/usr/bin/env python3
2
+ # /// script
3
+ # requires-python = ">=3.10"
4
+ # dependencies = [
5
+ # "sentence-transformers[train]>=5.0",
6
+ # "datasets>=2.19.0",
7
+ # "accelerate>=0.26.0",
8
+ # "trackio",
9
+ # "tokenizers>=0.20",
10
+ # "model2vec", # only needed when WARMSTART=True (StaticEmbedding.from_model2vec)
11
+ # ]
12
+ # ///
13
+ """Train a StaticEmbedding model on a contrastive dataset.
14
+
15
+ StaticEmbedding is a token-bag model: a per-token embedding table averaged over
16
+ the tokens of an input. No transformer, no attention. Inference is ~20x faster
17
+ on GPU and ~80x faster on CPU than a small encoder, with surprisingly competitive
18
+ quality on retrieval benchmarks when trained on >=1M contrastive pairs.
19
+
20
+ Two init paths via `WARMSTART` constant:
21
+ - `WARMSTART=False` (default): random init. Use with >=1M contrastive pairs.
22
+ Reaches a higher ceiling than warm-start when given enough data. The default
23
+ dataset below (GooAQ, ~3M pairs) is comfortably in this regime.
24
+ - `WARMSTART=True`: `StaticEmbedding.from_model2vec(...)` (distil from a
25
+ model2vec checkpoint). Flip to True if you swap in a smaller dataset (<1M
26
+ pairs). Converges faster and reaches better quality at lower data scales.
27
+
28
+ Demonstrates:
29
+ - MultipleNegativesRankingLoss wrapped in MatryoshkaLoss for nested embedding dims
30
+ - Large batch size (1024+) with a high LR (~2e-1 for random init, ~5e-2 for warm-
31
+ start) since the loss surface for a token-bag is much flatter than for a
32
+ pretrained encoder
33
+ - BatchSamplers.NO_DUPLICATES (load-bearing for in-batch negatives with duplicated
34
+ anchors)
35
+ - NanoBEIREvaluator at full embedding dim
36
+ - Auto model card + optional Hub push
37
+
38
+ Run locally (CPU works for inference, but training needs a GPU for batch=1024+):
39
+ pip install "sentence-transformers[train]>=5.0"
40
+ python train_sentence_transformer_static_embedding_example.py
41
+
42
+ Multi-GPU:
43
+ accelerate launch train_sentence_transformer_static_embedding_example.py
44
+
45
+ Hugging Face Jobs: paste this file's contents as the `script` in hf_jobs(...).
46
+
47
+ References:
48
+ - HF blog post: https://huggingface.co/blog/static-embeddings
49
+ - Module docs: sentence_transformers.sentence_transformer.modules.StaticEmbedding
50
+ """
51
+
52
+ from __future__ import annotations
53
+
54
+ import argparse
55
+ import logging
56
+ import os
57
+ from contextlib import nullcontext
58
+
59
+ import datasets
60
+ import torch
61
+ from datasets import load_dataset
62
+ from tokenizers import Tokenizer
63
+
64
+ from sentence_transformers import (
65
+ SentenceTransformer,
66
+ SentenceTransformerModelCardData,
67
+ SentenceTransformerTrainer,
68
+ SentenceTransformerTrainingArguments,
69
+ )
70
+ from sentence_transformers.base.sampler import BatchSamplers
71
+ from sentence_transformers.sentence_transformer.evaluation import NanoBEIREvaluator
72
+ from sentence_transformers.sentence_transformer.losses import (
73
+ MatryoshkaLoss,
74
+ MultipleNegativesRankingLoss,
75
+ )
76
+ from sentence_transformers.sentence_transformer.modules import StaticEmbedding
77
+
78
+
79
+ def autocast_ctx():
80
+ """bf16/fp16 autocast for evaluator calls outside the trainer."""
81
+ if not torch.cuda.is_available():
82
+ return nullcontext()
83
+ dtype = torch.bfloat16 if torch.cuda.is_bf16_supported() else torch.float16
84
+ return torch.autocast("cuda", dtype=dtype)
85
+
86
+
87
+ def log_trackio_dashboard():
88
+ """Surface the Trackio dashboard URL so the user can watch training live."""
89
+ try:
90
+ from huggingface_hub import whoami
91
+
92
+ hf_user = whoami().get("name")
93
+ if hf_user:
94
+ logging.info(
95
+ f"Trackio dashboard (live training progress): https://huggingface.co/spaces/{hf_user}/trackio"
96
+ )
97
+ except Exception:
98
+ pass
99
+
100
+
101
+ TOKENIZER_NAME = "google-bert/bert-base-uncased"
102
+ EMBEDDING_DIM = 1024
103
+ MATRYOSHKA_DIMS = [1024, 512, 256, 128, 64, 32] # ordered largest-first per MatryoshkaLoss
104
+
105
+ # False: random init (recommended for >=1M pairs, reaches a higher ceiling).
106
+ # True: warm-start from a model2vec checkpoint (recommended for <1M pairs).
107
+ # Default False because the example dataset (GooAQ, ~3M pairs) is well above the threshold.
108
+ WARMSTART = False
109
+ WARMSTART_MODEL2VEC = "minishlab/potion-base-8M"
110
+
111
+ OUTPUT_DIR = "models/static-embedding-bert-uncased"
112
+ RUN_NAME = "static-embedding-bert-uncased"
113
+ SMOKE_TEST = os.environ.get("SMOKE_TEST") == "1"
114
+
115
+
116
+ def setup_logging():
117
+ """Configure logging + TF32. Tees to logs/{RUN_NAME}.log and silences HTTP spam."""
118
+ os.makedirs("logs", exist_ok=True)
119
+ logging.basicConfig(
120
+ format="%(asctime)s - %(message)s",
121
+ datefmt="%Y-%m-%d %H:%M:%S",
122
+ level=logging.INFO,
123
+ handlers=[logging.StreamHandler(), logging.FileHandler(f"logs/{RUN_NAME}.log")],
124
+ force=True,
125
+ )
126
+ for noisy in ("httpx", "httpcore", "huggingface_hub", "urllib3", "filelock", "fsspec"):
127
+ logging.getLogger(noisy).setLevel(logging.WARNING)
128
+ if torch.cuda.is_available():
129
+ torch.set_float32_matmul_precision("high")
130
+
131
+
132
+ def load_pair_dataset() -> datasets.Dataset:
133
+ """Load a contrastive-pair dataset for training.
134
+
135
+ StaticEmbedding starts from random initialization, so it needs *a lot* of
136
+ contrastive signal to converge. GooAQ alone provides ~3M (question, answer)
137
+ pairs, comfortably over the >=1M threshold below which a warm-start would
138
+ beat random init. For stronger production models, concatenate more sources
139
+ (NaturalQuestions, MSMARCO, MIRACL, etc.) and shuffle, in the same family of
140
+ sources used in `sentence-transformers/static-retrieval-mrl-en-v1`.
141
+ """
142
+ return (
143
+ load_dataset("sentence-transformers/gooaq", split="train")
144
+ .rename_columns({"question": "anchor", "answer": "positive"})
145
+ .select_columns(["anchor", "positive"])
146
+ )
147
+
148
+
149
+ def main() -> None:
150
+ parser = argparse.ArgumentParser()
151
+ parser.add_argument(
152
+ "--eval-only", type=str, default=None, help="Skip training; load this saved model and run only the evaluator."
153
+ )
154
+ cli, _ = parser.parse_known_args()
155
+
156
+ setup_logging()
157
+
158
+ if cli.eval_only:
159
+ logging.info(f"Eval-only mode: loading model from {cli.eval_only}")
160
+ model = SentenceTransformer(cli.eval_only)
161
+ evaluator = NanoBEIREvaluator(dataset_names=["msmarco", "nfcorpus", "nq"])
162
+ with autocast_ctx():
163
+ evaluator(model)
164
+ return
165
+
166
+ if WARMSTART:
167
+ logging.info(f"Warm-starting StaticEmbedding from model2vec: {WARMSTART_MODEL2VEC}")
168
+ # `StaticEmbedding.from_distillation("<bi-encoder>", vocabulary=...)` is the
169
+ # alternative warm-start path (distil from a stronger teacher's vectors). Pick
170
+ # one. model2vec is faster to load and converges quickly on smaller datasets.
171
+ static_embedding = StaticEmbedding.from_model2vec(WARMSTART_MODEL2VEC)
172
+ else:
173
+ logging.info(f"Random-init StaticEmbedding from {TOKENIZER_NAME} tokenizer (dim={EMBEDDING_DIM})")
174
+ tokenizer = Tokenizer.from_pretrained(TOKENIZER_NAME)
175
+ static_embedding = StaticEmbedding(tokenizer, embedding_dim=EMBEDDING_DIM)
176
+ model = SentenceTransformer(
177
+ modules=[static_embedding],
178
+ model_card_data=SentenceTransformerModelCardData(
179
+ language="en",
180
+ license="apache-2.0",
181
+ model_name=f"Static embedding ({EMBEDDING_DIM}d) trained on contrastive pairs",
182
+ ),
183
+ )
184
+
185
+ logging.info("Loading + concatenating training datasets")
186
+ full = load_pair_dataset()
187
+ if SMOKE_TEST:
188
+ logging.info("SMOKE_TEST=1: trimmed dataset; will run max_steps=1 and skip Hub push")
189
+ full = full.select(range(min(200, len(full))))
190
+ eval_size = 20 if SMOKE_TEST else 10_000
191
+ split = full.train_test_split(test_size=eval_size, seed=12)
192
+ train_dataset = split["train"]
193
+ eval_dataset = split["test"]
194
+ logging.info(f" train: {len(train_dataset):,} rows | eval: {len(eval_dataset):,} rows")
195
+ logging.info(f" columns: {train_dataset.column_names}")
196
+
197
+ inner = MultipleNegativesRankingLoss(model)
198
+ loss = MatryoshkaLoss(model, inner, matryoshka_dims=MATRYOSHKA_DIMS)
199
+
200
+ evaluator = NanoBEIREvaluator(dataset_names=["msmarco", "nfcorpus", "nq"])
201
+ logging.info("Baseline evaluation (random init scores near zero; warm-start scores 0.3+):")
202
+ with autocast_ctx():
203
+ # Must run before deriving metric_key: evaluator(model) mutates primary_metric to add the name_ prefix.
204
+ baseline_eval = evaluator(model)[evaluator.primary_metric]
205
+ metric_key = f"eval_{evaluator.primary_metric}"
206
+
207
+ args = SentenceTransformerTrainingArguments(
208
+ output_dir=OUTPUT_DIR,
209
+ num_train_epochs=1,
210
+ max_steps=1 if SMOKE_TEST else -1,
211
+ per_device_train_batch_size=2048,
212
+ per_device_eval_batch_size=2048,
213
+ learning_rate=5e-2
214
+ if WARMSTART
215
+ else 2e-1, # warm-start needs less LR. Both far higher than encoder fine-tuning
216
+ weight_decay=0.0, # weight decay on a token-bag is usually harmful
217
+ warmup_steps=0.1,
218
+ lr_scheduler_type="linear",
219
+ bf16=True,
220
+ batch_sampler=BatchSamplers.NO_DUPLICATES,
221
+ eval_strategy="steps",
222
+ eval_steps=0.1,
223
+ save_strategy="steps",
224
+ save_steps=0.1,
225
+ save_total_limit=2,
226
+ logging_steps=0.01,
227
+ logging_first_step=True,
228
+ load_best_model_at_end=True,
229
+ metric_for_best_model=metric_key,
230
+ greater_is_better=True,
231
+ report_to="none" if SMOKE_TEST else "trackio",
232
+ run_name=RUN_NAME,
233
+ seed=12,
234
+ )
235
+
236
+ trainer = SentenceTransformerTrainer(
237
+ model=model,
238
+ args=args,
239
+ train_dataset=train_dataset,
240
+ eval_dataset=eval_dataset,
241
+ loss=loss,
242
+ evaluator=evaluator,
243
+ )
244
+ if not SMOKE_TEST:
245
+ log_trackio_dashboard()
246
+ trainer.train()
247
+
248
+ logging.info("Post-training evaluation:")
249
+ with autocast_ctx():
250
+ score = evaluator(model)[evaluator.primary_metric]
251
+ delta = score - baseline_eval
252
+ verdict = "WIN" if delta >= 0.005 else "MARGINAL" if delta >= 0 else "REGRESSION"
253
+ logging.info(f"VERDICT: {verdict} | score={score:.4f} | baseline={baseline_eval:.4f} | delta={delta:+.4f}")
254
+
255
+ final_dir = f"{OUTPUT_DIR}/final"
256
+ model.save_pretrained(final_dir)
257
+ logging.info(f"Saved final model to {final_dir}")
258
+
259
+ if SMOKE_TEST:
260
+ logging.info("SMOKE_TEST=1: skipping Hub push")
261
+ return
262
+
263
+ try:
264
+ commit_url = model.push_to_hub(RUN_NAME)
265
+ logging.info(f"Pushed model to {commit_url.rsplit('/commit/', 1)[0]}")
266
+ except Exception:
267
+ import traceback
268
+
269
+ logging.error(f"Hub push failed:\n{traceback.format_exc()}")
270
+
271
+
272
+ if __name__ == "__main__":
273
+ main()
@@ -0,0 +1,275 @@
1
+ #!/usr/bin/env python3
2
+ # /// script
3
+ # requires-python = ">=3.10"
4
+ # dependencies = [
5
+ # "sentence-transformers[train]>=5.0",
6
+ # "peft>=0.7.0",
7
+ # "datasets>=2.19.0",
8
+ # "accelerate>=0.26.0",
9
+ # "trackio",
10
+ # ]
11
+ # ///
12
+ """LoRA / PEFT adapter training: memory-efficient fine-tuning.
13
+
14
+ Instead of training all parameters, LoRA injects small low-rank adapter
15
+ matrices and trains only those (~50-100x fewer trainable params). Works out
16
+ of the box with sentence-transformers via `peft`.
17
+
18
+ Use LoRA when: the base is a large decoder (Qwen3, Llama, Mistral, Gemma) and
19
+ a full fine-tune is VRAM-prohibitive. You want multiple task-specific adapters
20
+ on one base. You're nudging an existing strong retriever (E5-mistral,
21
+ Qwen3-Embedding) on domain data. Skip LoRA for small encoders (BERT-base,
22
+ MiniLM: full fine-tune is tractable and usually better) or tiny datasets
23
+ (<1k pairs: adapter rank becomes the bottleneck).
24
+
25
+ This template defaults to BERT-base for portability. Swap `MODEL_NAME` to a
26
+ decoder backbone for the use case LoRA actually shines on.
27
+
28
+ Architecture variants:
29
+ - Bi-encoder (this script): `TaskType.FEATURE_EXTRACTION`.
30
+ - Sparse-encoder: same pattern. `SparseEncoder` supports `add_adapter`. See
31
+ `examples/sparse_encoder/training/peft/train_splade_gooaq_peft.py`.
32
+ - Cross-encoder: use `TaskType.SEQ_CLS` for `num_labels >= 1`. Community
33
+ examples are sparse. Smoke-test with `max_steps=1` first.
34
+
35
+ Key hyperparameters:
36
+ - `r` (rank): 8-128. Bigger = more capacity + memory. 64 is a strong default.
37
+ - `lora_alpha`: typically 2 x r (some teams use 1 x r for stability).
38
+ - `lora_dropout`: 0.05-0.1. Raise to 0.1 for small datasets.
39
+ - `target_modules=None` auto-picks attention modules. Pass
40
+ `["q_proj", "k_proj", "v_proj", "o_proj"]` (attention) or
41
+ `["gate_proj", "up_proj", "down_proj"]` (MLP) for explicit control.
42
+ - `modules_to_save=["pooler"]` for CLS-pooled bases. The pooler Dense should
43
+ be trained too, not adapted.
44
+ - LR is HIGHER than full fine-tune: 1e-4 to 5e-4 for LoRA vs. 2e-5 full.
45
+
46
+ Rough memory savings on a 0.6B base (bf16, batch 64, seq 128): full fine-tune
47
+ ~24 GB, LoRA r=64 ~10 GB (~12M trainable, 2%), LoRA r=16 ~8 GB (~3M, 0.5%).
48
+ Bigger savings on 7B+ models.
49
+
50
+ Saving / sharing: `model.save_pretrained("dir")` writes ONLY the adapter (few
51
+ MB) plus a reference to the base model. Loaders call the same one-liner.
52
+ `peft` is invoked and the base downloaded on demand. For a merged model that
53
+ loads without `peft` (needed for vLLM-style servers), call
54
+ `model.transformers_model.merge_and_unload()` then `save_pretrained` /
55
+ `push_to_hub`.
56
+
57
+ Swapping adapters at inference (the main multi-task deployment win):
58
+ model = SentenceTransformer("base-model")
59
+ model.load_adapter("adapter-a", adapter_name="a")
60
+ model.load_adapter("adapter-b", adapter_name="b")
61
+ model.set_adapter("a"); emb_a = model.encode([...])
62
+
63
+ QLoRA (4-bit base + LoRA) for 7B+ on consumer GPUs:
64
+ from transformers import BitsAndBytesConfig
65
+ bnb = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_quant_type="nf4",
66
+ bnb_4bit_compute_dtype=torch.bfloat16)
67
+ model = SentenceTransformer("Qwen/Qwen3-Embedding-7B",
68
+ model_kwargs={"quantization_config": bnb})
69
+ model.add_adapter(LoraConfig(r=64, lora_alpha=128, ...))
70
+ `pip install bitsandbytes` first. Linux-only for bitsandbytes (Windows: the
71
+ fork or WSL).
72
+
73
+ Known issues:
74
+ - LoRA PEFT on Qwen2.5-VL / paligemma / gemma3 / internvl / aya_vision under
75
+ transformers v5: `AutoModel.from_pretrained(peft_path)` crashes with
76
+ `KeyError: 'qwen2_vl'`. Pin transformers to 4.x or wait for the upstream fix.
77
+ - `gradient_checkpointing=True` + LoRA: usually works. If you hit "None of
78
+ the inputs have requires_grad=True", call
79
+ `model.transformers_model.enable_input_require_grads()` after `add_adapter`.
80
+ - `add_adapter` before pooling: when building from scratch (not loading a
81
+ pre-assembled checkpoint), call `add_adapter` AFTER
82
+ `SentenceTransformer(modules=[...])` is complete.
83
+
84
+ Common gotchas: LR still at 2e-5 (LoRA needs higher). Forgetting to merge for
85
+ vLLM-style servers (they don't load `peft`). `r=8` too small for retrievers
86
+ trained on millions of pairs (try 32 or 64). `modules_to_save` missing the
87
+ pooler on CLS-pooled bases.
88
+ """
89
+
90
+ from __future__ import annotations
91
+
92
+ import argparse
93
+ import logging
94
+ import os
95
+ from contextlib import nullcontext
96
+
97
+ import torch
98
+ from datasets import load_dataset
99
+ from peft import LoraConfig, TaskType
100
+
101
+ from sentence_transformers import (
102
+ SentenceTransformer,
103
+ SentenceTransformerModelCardData,
104
+ SentenceTransformerTrainer,
105
+ SentenceTransformerTrainingArguments,
106
+ )
107
+ from sentence_transformers.base.sampler import BatchSamplers
108
+ from sentence_transformers.sentence_transformer.evaluation import NanoBEIREvaluator
109
+ from sentence_transformers.sentence_transformer.losses import CachedMultipleNegativesRankingLoss
110
+
111
+
112
+ def autocast_ctx():
113
+ """bf16/fp16 autocast for evaluator calls outside the trainer (which has its own autocast)."""
114
+ if not torch.cuda.is_available():
115
+ return nullcontext()
116
+ dtype = torch.bfloat16 if torch.cuda.is_bf16_supported() else torch.float16
117
+ return torch.autocast("cuda", dtype=dtype)
118
+
119
+
120
+ def log_trackio_dashboard():
121
+ """Surface the Trackio dashboard URL so the user can watch training live."""
122
+ try:
123
+ from huggingface_hub import whoami
124
+
125
+ hf_user = whoami().get("name")
126
+ if hf_user:
127
+ logging.info(
128
+ f"Trackio dashboard (live training progress): https://huggingface.co/spaces/{hf_user}/trackio"
129
+ )
130
+ except Exception:
131
+ pass
132
+
133
+
134
+ MODEL_NAME = "google-bert/bert-base-uncased"
135
+ OUTPUT_DIR = "models/bert-base-gooaq-lora"
136
+ RUN_NAME = "bert-base-gooaq-lora"
137
+ SMOKE_TEST = os.environ.get("SMOKE_TEST") == "1"
138
+
139
+
140
+ def setup_logging():
141
+ """Configure logging + TF32. Tees to logs/{RUN_NAME}.log and silences HTTP spam."""
142
+ os.makedirs("logs", exist_ok=True)
143
+ logging.basicConfig(
144
+ format="%(asctime)s - %(message)s",
145
+ datefmt="%Y-%m-%d %H:%M:%S",
146
+ level=logging.INFO,
147
+ handlers=[logging.StreamHandler(), logging.FileHandler(f"logs/{RUN_NAME}.log")],
148
+ force=True,
149
+ )
150
+ for noisy in ("httpx", "httpcore", "huggingface_hub", "urllib3", "filelock", "fsspec"):
151
+ logging.getLogger(noisy).setLevel(logging.WARNING)
152
+ if torch.cuda.is_available():
153
+ torch.set_float32_matmul_precision("high") # TF32 on Ampere+, no quality loss
154
+
155
+
156
+ def main() -> None:
157
+ parser = argparse.ArgumentParser()
158
+ parser.add_argument(
159
+ "--eval-only", type=str, default=None, help="Skip training; load this saved model and run only the evaluator."
160
+ )
161
+ cli, _ = parser.parse_known_args()
162
+
163
+ setup_logging()
164
+
165
+ if cli.eval_only:
166
+ logging.info(f"Eval-only mode: loading model from {cli.eval_only}")
167
+ model = SentenceTransformer(cli.eval_only)
168
+ evaluator = NanoBEIREvaluator()
169
+ with autocast_ctx():
170
+ evaluator(model)
171
+ return
172
+
173
+ model = SentenceTransformer(
174
+ MODEL_NAME,
175
+ model_card_data=SentenceTransformerModelCardData(
176
+ language="en",
177
+ license="apache-2.0",
178
+ model_name=f"{MODEL_NAME.split('/')[-1]} LoRA adapter on GooAQ",
179
+ ),
180
+ )
181
+
182
+ peft_config = LoraConfig(
183
+ task_type=TaskType.FEATURE_EXTRACTION,
184
+ inference_mode=False,
185
+ r=64,
186
+ lora_alpha=128,
187
+ lora_dropout=0.1,
188
+ )
189
+ model.add_adapter(peft_config)
190
+ trainable = sum(p.numel() for p in model.parameters() if p.requires_grad)
191
+ total = sum(p.numel() for p in model.parameters())
192
+ logging.info(f"trainable params: {trainable:,} / {total:,} ({100 * trainable / total:.2f}%)")
193
+
194
+ full = load_dataset("sentence-transformers/gooaq", split="train")
195
+ if SMOKE_TEST:
196
+ logging.info("SMOKE_TEST=1: trimmed dataset; will run max_steps=1 and skip Hub push")
197
+ full = full.select(range(min(200, len(full))))
198
+ eval_size = 20 if SMOKE_TEST else 10_000
199
+ train_cap = 50 if SMOKE_TEST else 500_000
200
+ split = full.train_test_split(test_size=eval_size, seed=12)
201
+ train_dataset = split["train"].select(range(min(train_cap, len(split["train"]))))
202
+ eval_dataset = split["test"]
203
+ logging.info(f"train={len(train_dataset):,} eval={len(eval_dataset):,}")
204
+
205
+ loss = CachedMultipleNegativesRankingLoss(model, mini_batch_size=32)
206
+
207
+ evaluator = NanoBEIREvaluator()
208
+ logging.info("Baseline:")
209
+ with autocast_ctx():
210
+ # Must run before deriving metric_key: evaluator(model) mutates primary_metric to add the name_ prefix.
211
+ baseline_eval = evaluator(model)[evaluator.primary_metric]
212
+ metric_key = f"eval_{evaluator.primary_metric}"
213
+
214
+ args = SentenceTransformerTrainingArguments(
215
+ output_dir=OUTPUT_DIR,
216
+ num_train_epochs=1,
217
+ max_steps=1 if SMOKE_TEST else -1,
218
+ per_device_train_batch_size=512,
219
+ per_device_eval_batch_size=512,
220
+ learning_rate=1e-4,
221
+ weight_decay=0.01,
222
+ warmup_steps=0.1,
223
+ bf16=True,
224
+ batch_sampler=BatchSamplers.NO_DUPLICATES,
225
+ eval_strategy="steps",
226
+ eval_steps=0.1,
227
+ save_strategy="steps",
228
+ save_steps=0.1,
229
+ save_total_limit=2,
230
+ logging_steps=0.01,
231
+ logging_first_step=True,
232
+ load_best_model_at_end=True,
233
+ metric_for_best_model=metric_key,
234
+ greater_is_better=True,
235
+ report_to="none" if SMOKE_TEST else "trackio",
236
+ run_name=RUN_NAME,
237
+ seed=12,
238
+ )
239
+
240
+ trainer = SentenceTransformerTrainer(
241
+ model=model,
242
+ args=args,
243
+ train_dataset=train_dataset,
244
+ eval_dataset=eval_dataset,
245
+ loss=loss,
246
+ evaluator=evaluator,
247
+ )
248
+ if not SMOKE_TEST:
249
+ log_trackio_dashboard()
250
+ trainer.train()
251
+
252
+ logging.info("Post-training evaluation:")
253
+ with autocast_ctx():
254
+ score = evaluator(model)[evaluator.primary_metric]
255
+ delta = score - baseline_eval
256
+ verdict = "WIN" if delta >= 0.005 else "MARGINAL" if delta >= 0 else "REGRESSION"
257
+ logging.info(f"VERDICT: {verdict} | score={score:.4f} | baseline={baseline_eval:.4f} | delta={delta:+.4f}")
258
+
259
+ model.save_pretrained(f"{OUTPUT_DIR}/final")
260
+
261
+ if SMOKE_TEST:
262
+ logging.info("SMOKE_TEST=1: skipping Hub push")
263
+ return
264
+
265
+ try:
266
+ commit_url = model.push_to_hub(RUN_NAME)
267
+ logging.info(f"Pushed model to {commit_url.rsplit('/commit/', 1)[0]}")
268
+ except Exception:
269
+ import traceback
270
+
271
+ logging.error(f"Hub push failed:\n{traceback.format_exc()}")
272
+
273
+
274
+ if __name__ == "__main__":
275
+ main()