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,240 @@
1
+ #!/usr/bin/env python3
2
+ # /// script
3
+ # requires-python = ">=3.10"
4
+ # dependencies = [
5
+ # "sentence-transformers[train]>=6.0",
6
+ # "datasets>=2.19.0",
7
+ # "accelerate>=0.26.0",
8
+ # "trackio",
9
+ # ]
10
+ # ///
11
+ """Production-ready multi-vector (ColBERT / late-interaction) training template.
12
+
13
+ This script demonstrates a recommended setup:
14
+ - MultiVectorMultipleNegativesRankingLoss on (anchor, positive, negative) triplets, scored with MaxSim
15
+ - MultiVectorNanoBEIREvaluator for retrieval metrics during training
16
+ - BatchSamplers.NO_DUPLICATES (critical for MNRL-family)
17
+ - load_best_model_at_end with a retrieval metric
18
+ - Auto model card + optional Hub push
19
+
20
+ Runs identically in two modes:
21
+
22
+ # Local
23
+ pip install "sentence-transformers[train]>=6.0"
24
+ python train_multi_vector_encoder_example.py
25
+
26
+ # Or with uv (no explicit install needed)
27
+ uv run train_multi_vector_encoder_example.py
28
+
29
+ # Multi-GPU
30
+ accelerate launch train_multi_vector_encoder_example.py
31
+
32
+ # Hugging Face Jobs (paste the entire file contents as `script`)
33
+ hf_jobs("uv", {
34
+ "script": "<contents of this file>",
35
+ "flavor": "a10g-large",
36
+ "timeout": "3h",
37
+ "secrets": {"HF_TOKEN": "$HF_TOKEN"},
38
+ })
39
+
40
+ Adjust MODEL_NAME, DATASET_NAME, OUTPUT_DIR, RUN_NAME at the top of the script.
41
+ Default Hub push: at end of run, public, under your authenticated user as
42
+ `{user}/{RUN_NAME}`, wrapped in try/except. To skip the push, comment out the
43
+ push_to_hub call. For HF Jobs (ephemeral env), also enable in-trainer push:
44
+ add `push_to_hub=True`, `hub_model_id=RUN_NAME`, `hub_strategy="every_save"`
45
+ to TrainingArguments.
46
+ """
47
+
48
+ from __future__ import annotations
49
+
50
+ import argparse
51
+ import logging
52
+ import os
53
+ from contextlib import nullcontext
54
+
55
+ import torch
56
+ from datasets import load_dataset
57
+
58
+ from sentence_transformers import (
59
+ MultiVectorEncoder,
60
+ MultiVectorEncoderModelCardData,
61
+ MultiVectorEncoderTrainer,
62
+ MultiVectorEncoderTrainingArguments,
63
+ )
64
+ from sentence_transformers.base.sampler import BatchSamplers
65
+ from sentence_transformers.multi_vector_encoder.evaluation import MultiVectorNanoBEIREvaluator
66
+ from sentence_transformers.multi_vector_encoder.losses import MultiVectorMultipleNegativesRankingLoss
67
+
68
+
69
+ def autocast_ctx():
70
+ """bf16/fp16 autocast for evaluator calls outside the trainer (which has its own autocast)."""
71
+ if not torch.cuda.is_available():
72
+ return nullcontext()
73
+ dtype = torch.bfloat16 if torch.cuda.is_bf16_supported() else torch.float16
74
+ return torch.autocast("cuda", dtype=dtype)
75
+
76
+
77
+ def log_trackio_dashboard():
78
+ """Surface the Trackio dashboard URL so the user can watch training live."""
79
+ try:
80
+ from huggingface_hub import whoami
81
+
82
+ hf_user = whoami().get("name")
83
+ if hf_user:
84
+ logging.info(
85
+ f"Trackio dashboard (live training progress): https://huggingface.co/spaces/{hf_user}/trackio"
86
+ )
87
+ except Exception:
88
+ pass
89
+
90
+
91
+ # Bare HF encoder. MVE grafts a fresh 128-dim token projection on top.
92
+ MODEL_NAME = "answerdotai/ModernBERT-base"
93
+ DATASET_NAME = "sentence-transformers/msmarco-bm25"
94
+ DATASET_SUBSET = "triplet"
95
+ TRAIN_SIZE = 50_000
96
+ EVAL_SIZE = 1_000
97
+ OUTPUT_DIR = "models/modernbert-base-msmarco-colbert"
98
+ RUN_NAME = "modernbert-base-msmarco-colbert"
99
+ SMOKE_TEST = os.environ.get("SMOKE_TEST") == "1"
100
+
101
+
102
+ def setup_logging():
103
+ """Configure logging + TF32. Tees to logs/{RUN_NAME}.log and silences HTTP spam."""
104
+ os.makedirs("logs", exist_ok=True)
105
+ logging.basicConfig(
106
+ format="%(asctime)s - %(message)s",
107
+ datefmt="%Y-%m-%d %H:%M:%S",
108
+ level=logging.INFO,
109
+ handlers=[logging.StreamHandler(), logging.FileHandler(f"logs/{RUN_NAME}.log")],
110
+ force=True,
111
+ )
112
+ for noisy in ("httpx", "httpcore", "huggingface_hub", "urllib3", "filelock", "fsspec"):
113
+ logging.getLogger(noisy).setLevel(logging.WARNING)
114
+ if torch.cuda.is_available():
115
+ torch.set_float32_matmul_precision("high") # TF32 on Ampere+, no quality loss
116
+
117
+
118
+ def main() -> None:
119
+ parser = argparse.ArgumentParser()
120
+ parser.add_argument(
121
+ "--eval-only", type=str, default=None, help="Skip training, load this saved model and run only the evaluator."
122
+ )
123
+ cli, _ = parser.parse_known_args()
124
+
125
+ setup_logging()
126
+
127
+ if cli.eval_only:
128
+ logging.info(f"Eval-only mode: loading model from {cli.eval_only}")
129
+ model = MultiVectorEncoder(cli.eval_only)
130
+ evaluator = MultiVectorNanoBEIREvaluator(batch_size=16)
131
+ with autocast_ctx():
132
+ evaluator(model)
133
+ return
134
+
135
+ logging.info(f"Loading base model: {MODEL_NAME}")
136
+ # Load in fp32, autocast bf16 during forward. torch_dtype=bfloat16 breaks the optimizer's precision.
137
+ model = MultiVectorEncoder(
138
+ MODEL_NAME,
139
+ model_card_data=MultiVectorEncoderModelCardData(
140
+ language="en",
141
+ license="apache-2.0",
142
+ model_name=f"ColBERT {MODEL_NAME.split('/')[-1]} trained on MS MARCO",
143
+ ),
144
+ model_kwargs={"torch_dtype": "float32"},
145
+ )
146
+
147
+ logging.info(f"Loading dataset: {DATASET_NAME} ({DATASET_SUBSET})")
148
+ train_size = 50 if SMOKE_TEST else TRAIN_SIZE
149
+ eval_size = 20 if SMOKE_TEST else EVAL_SIZE
150
+ full_dataset = load_dataset(DATASET_NAME, DATASET_SUBSET, split="train").select(range(train_size + eval_size))
151
+ dataset_dict = full_dataset.train_test_split(test_size=eval_size, seed=12)
152
+ train_dataset = dataset_dict["train"]
153
+ eval_dataset = dataset_dict["test"]
154
+ if SMOKE_TEST:
155
+ logging.info("SMOKE_TEST=1: trimmed dataset, will run max_steps=1 and skip Hub push")
156
+ logging.info(f" train: {len(train_dataset):,} examples")
157
+ logging.info(f" eval: {len(eval_dataset):,} examples")
158
+
159
+ # MNRL with in-batch negatives + explicit hard negatives. scale=1.0 (default) is correct for
160
+ # unnormalized MaxSim: do not copy scale=20.0 from bi-encoder MNRL. Length-normalized MeanMaxSim
161
+ # scoring instead wants a scale of roughly the average query length.
162
+ loss = MultiVectorMultipleNegativesRankingLoss(model=model)
163
+
164
+ # Cheap in-training evaluator on 3 datasets (drives `load_best_model_at_end`).
165
+ # The end-of-run evaluator below covers the full 13-dataset suite for the VERDICT delta.
166
+ evaluator = MultiVectorNanoBEIREvaluator(dataset_names=["msmarco", "nq", "fiqa2018"], batch_size=16)
167
+ test_evaluator = MultiVectorNanoBEIREvaluator(show_progress_bar=True, batch_size=16)
168
+ logging.info("Baseline evaluation (before training):")
169
+ with autocast_ctx():
170
+ # Must run before deriving metric_key: evaluator(model) mutates primary_metric to add the name_ prefix.
171
+ evaluator(model) # populates primary_metric on the training-time evaluator
172
+ # Baseline on the full suite so the VERDICT delta is apples-to-apples with the post-training score.
173
+ baseline_eval = test_evaluator(model)[test_evaluator.primary_metric]
174
+ metric_key = f"eval_{evaluator.primary_metric}"
175
+
176
+ args = MultiVectorEncoderTrainingArguments(
177
+ output_dir=OUTPUT_DIR,
178
+ num_train_epochs=1,
179
+ max_steps=1 if SMOKE_TEST else -1,
180
+ per_device_train_batch_size=32,
181
+ per_device_eval_batch_size=32,
182
+ learning_rate=3e-5,
183
+ weight_decay=0.01,
184
+ warmup_steps=0.05,
185
+ lr_scheduler_type="linear",
186
+ bf16=True,
187
+ batch_sampler=BatchSamplers.NO_DUPLICATES,
188
+ eval_strategy="steps",
189
+ eval_steps=0.1,
190
+ save_strategy="steps",
191
+ save_steps=0.1,
192
+ save_total_limit=2,
193
+ logging_steps=0.01,
194
+ logging_first_step=True,
195
+ load_best_model_at_end=True,
196
+ metric_for_best_model=metric_key,
197
+ greater_is_better=True,
198
+ report_to="none" if SMOKE_TEST else "trackio",
199
+ run_name=RUN_NAME,
200
+ seed=12,
201
+ )
202
+
203
+ trainer = MultiVectorEncoderTrainer(
204
+ model=model,
205
+ args=args,
206
+ train_dataset=train_dataset,
207
+ eval_dataset=eval_dataset,
208
+ loss=loss,
209
+ evaluator=evaluator,
210
+ )
211
+ if not SMOKE_TEST:
212
+ log_trackio_dashboard()
213
+ trainer.train()
214
+
215
+ logging.info("Post-training evaluation (full NanoBEIR suite):")
216
+ with autocast_ctx():
217
+ score = test_evaluator(model)[test_evaluator.primary_metric]
218
+ delta = score - baseline_eval
219
+ verdict = "WIN" if delta >= 0.005 else "MARGINAL" if delta >= 0 else "REGRESSION"
220
+ logging.info(f"VERDICT: {verdict} | score={score:.4f} | baseline={baseline_eval:.4f} | delta={delta:+.4f}")
221
+
222
+ final_dir = f"{OUTPUT_DIR}/final"
223
+ model.save_pretrained(final_dir)
224
+ logging.info(f"Saved final model to {final_dir}")
225
+
226
+ if SMOKE_TEST:
227
+ logging.info("SMOKE_TEST=1: skipping Hub push")
228
+ return
229
+
230
+ try:
231
+ commit_url = model.push_to_hub(RUN_NAME) # public by default, uses your authenticated user
232
+ logging.info(f"Pushed model to {commit_url.rsplit('/commit/', 1)[0]}")
233
+ except Exception:
234
+ import traceback
235
+
236
+ logging.error(f"Hub push failed:\n{traceback.format_exc()}")
237
+
238
+
239
+ if __name__ == "__main__":
240
+ main()
@@ -0,0 +1,303 @@
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
+ # ]
10
+ # ///
11
+ """Distillation template: train a small student to match a stronger teacher's embeddings.
12
+
13
+ This script implements **embedding MSE** (Pattern 1 below): pre-compute teacher
14
+ embeddings, train the student to minimize MSE against them. Yields a smaller /
15
+ faster student typically reaching 95-99% of teacher quality.
16
+
17
+ Three distillation patterns:
18
+ - Pattern 1 (this script): `(text, teacher_embedding)` + `MSELoss`. Cheapest,
19
+ most data-efficient. Use when student + teacher are both bi-encoders with the
20
+ same output dim and you have a pile of unlabeled text.
21
+ - Pattern 2: `(query, positive, negative, score_diff)` + `MarginMSELoss` from a
22
+ CrossEncoder teacher's score differences. Workhorse of ms-marco distillation.
23
+ See `../references/losses_sentence_transformer.md` (MarginMSELoss section).
24
+ - Pattern 3: `(query, positive, neg_1, ..., neg_n, labels)` + `DistillKLDivLoss`
25
+ to preserve the full teacher distribution. More data-hungry. Natural fit when
26
+ distilling from an ensemble of rerankers.
27
+
28
+ Mismatched dims: if the student's dim is smaller than the teacher's, MSELoss
29
+ fails. Add a PCA-init `Dense` projection so the teacher matches the student:
30
+
31
+ from sklearn.decomposition import PCA
32
+ from sentence_transformers.sentence_transformer.modules import Dense
33
+ pca = PCA(n_components=student.get_embedding_dimension())
34
+ pca.fit(teacher.encode(sentences[:20_000], convert_to_numpy=True))
35
+ dense = Dense(
36
+ in_features=teacher.get_embedding_dimension(),
37
+ out_features=student.get_embedding_dimension(),
38
+ bias=False, activation_function=torch.nn.Identity(),
39
+ )
40
+ dense.linear.weight = torch.nn.Parameter(torch.from_numpy(pca.components_).float())
41
+ teacher.add_module("dense", dense)
42
+
43
+ Distilling to a CrossEncoder student: construct with `activation_fn=nn.Identity()`
44
+ or eval ranking collapses silently. Every non-BCE CE loss expects raw logits
45
+ during training, but the model's `activation_fn` runs at eval time inside
46
+ `predict()`. Default `Sigmoid` (when `num_labels=1`) saturates raw logits >5 to
47
+ ~1.0, dropping nDCG from e.g. ~0.59 to ~0.14 with healthy-looking training loss.
48
+ Applies to all CE distillation / listwise / pairwise losses. See SKILL.md
49
+ Directive 7 ([CE]).
50
+
51
+ Layer pruning shortcut for Pattern 1: copy the teacher, delete layers (often
52
+ keeps 99%+ of quality at a fraction of the layers), then distill with MSELoss:
53
+
54
+ from copy import deepcopy
55
+ student = deepcopy(teacher)
56
+ layers = student.transformers_model.encoder.layer # BERT/MPNet/DistilBERT
57
+ student.transformers_model.encoder.layer = torch.nn.ModuleList(
58
+ [layers[0], layers[3], layers[6], layers[9]]
59
+ )
60
+ student.transformers_model.config.num_hidden_layers = 4
61
+
62
+ Tips: pre-compute teacher outputs once and cache (`dataset.save_to_disk`). LR
63
+ 1e-4 (higher than the usual 2e-5: the target is dense regression). 1 epoch is
64
+ usually enough. The student inherits the teacher's weaknesses, so pick a
65
+ teacher strong on YOUR task. If the teacher expects an instruction prefix,
66
+ include it during teacher encoding so the student's target matches inference.
67
+
68
+ For multilingual student distillation (extend an English teacher to other
69
+ languages without in-language supervised data), see `train_sentence_transformer_make_multilingual_example.py`.
70
+ """
71
+
72
+ from __future__ import annotations
73
+
74
+ import argparse
75
+ import logging
76
+ import os
77
+ from contextlib import nullcontext
78
+
79
+ import torch
80
+ from datasets import Dataset, load_dataset
81
+
82
+ from sentence_transformers import (
83
+ SentenceTransformer,
84
+ SentenceTransformerModelCardData,
85
+ SentenceTransformerTrainer,
86
+ SentenceTransformerTrainingArguments,
87
+ )
88
+ from sentence_transformers.sentence_transformer.evaluation import EmbeddingSimilarityEvaluator
89
+ from sentence_transformers.sentence_transformer.losses import MSELoss
90
+ from sentence_transformers.sentence_transformer.modules import Normalize
91
+ from sentence_transformers.util.similarity import SimilarityFunction
92
+
93
+
94
+ def autocast_ctx():
95
+ """bf16/fp16 autocast for evaluator calls outside the trainer (which has its own autocast)."""
96
+ if not torch.cuda.is_available():
97
+ return nullcontext()
98
+ dtype = torch.bfloat16 if torch.cuda.is_bf16_supported() else torch.float16
99
+ return torch.autocast("cuda", dtype=dtype)
100
+
101
+
102
+ def log_trackio_dashboard():
103
+ """Surface the Trackio dashboard URL so the user can watch training live."""
104
+ try:
105
+ from huggingface_hub import whoami
106
+
107
+ hf_user = whoami().get("name")
108
+ if hf_user:
109
+ logging.info(
110
+ f"Trackio dashboard (live training progress): https://huggingface.co/spaces/{hf_user}/trackio"
111
+ )
112
+ except Exception:
113
+ pass
114
+
115
+
116
+ TEACHER_MODEL_NAME = "sentence-transformers/all-mpnet-base-v2"
117
+ STUDENT_MODEL_NAME = "distilbert/distilbert-base-uncased"
118
+
119
+ CORPUS_DATASET = "sentence-transformers/all-nli"
120
+ CORPUS_SUBSET = "pair"
121
+
122
+ TRAIN_SIZE = 50_000
123
+ EVAL_SIZE = 1_000
124
+ OUTPUT_DIR = "models/distilbert-distilled-from-mpnet"
125
+ RUN_NAME = "distilbert-distill-from-mpnet"
126
+
127
+ TEACHER_ENCODE_BATCH_SIZE = 256
128
+ TRAIN_BATCH_SIZE = 128
129
+ SMOKE_TEST = os.environ.get("SMOKE_TEST") == "1"
130
+
131
+
132
+ def setup_logging():
133
+ """Configure logging + TF32. Tees to logs/{RUN_NAME}.log and silences HTTP spam."""
134
+ os.makedirs("logs", exist_ok=True)
135
+ logging.basicConfig(
136
+ format="%(asctime)s - %(message)s",
137
+ datefmt="%Y-%m-%d %H:%M:%S",
138
+ level=logging.INFO,
139
+ handlers=[logging.StreamHandler(), logging.FileHandler(f"logs/{RUN_NAME}.log")],
140
+ force=True,
141
+ )
142
+ for noisy in ("httpx", "httpcore", "huggingface_hub", "urllib3", "filelock", "fsspec"):
143
+ logging.getLogger(noisy).setLevel(logging.WARNING)
144
+ if torch.cuda.is_available():
145
+ torch.set_float32_matmul_precision("high") # TF32 on Ampere+, no quality loss
146
+
147
+
148
+ def main() -> None:
149
+ parser = argparse.ArgumentParser()
150
+ parser.add_argument(
151
+ "--eval-only", type=str, default=None, help="Skip training; load this saved model and run only the evaluator."
152
+ )
153
+ cli, _ = parser.parse_known_args()
154
+
155
+ setup_logging()
156
+
157
+ if cli.eval_only:
158
+ logging.info(f"Eval-only mode: loading model from {cli.eval_only}")
159
+ model = SentenceTransformer(cli.eval_only)
160
+ stsb = load_dataset("sentence-transformers/stsb", split="validation")
161
+ evaluator = EmbeddingSimilarityEvaluator(
162
+ sentences1=stsb["sentence1"],
163
+ sentences2=stsb["sentence2"],
164
+ scores=stsb["score"],
165
+ main_similarity=SimilarityFunction.COSINE,
166
+ name="sts-dev",
167
+ )
168
+ with autocast_ctx():
169
+ evaluator(model)
170
+ return
171
+
172
+ logging.info(f"Loading teacher: {TEACHER_MODEL_NAME}")
173
+ teacher = SentenceTransformer(TEACHER_MODEL_NAME)
174
+
175
+ logging.info(f"Loading student: {STUDENT_MODEL_NAME}")
176
+ student = SentenceTransformer(
177
+ STUDENT_MODEL_NAME,
178
+ model_card_data=SentenceTransformerModelCardData(
179
+ language="en",
180
+ license="apache-2.0",
181
+ model_name=f"{STUDENT_MODEL_NAME.split('/')[-1]} distilled from {TEACHER_MODEL_NAME.split('/')[-1]}",
182
+ ),
183
+ )
184
+ # Match the teacher's final Normalize. MSELoss against unit-norm targets fights student
185
+ # outputs at norm ~5-10 and can silently regress
186
+ if any(isinstance(m, Normalize) for m in teacher) and not any(isinstance(m, Normalize) for m in student):
187
+ student.append(Normalize())
188
+
189
+ if student.get_embedding_dimension() != teacher.get_embedding_dimension():
190
+ raise SystemExit(
191
+ f"Student dim ({student.get_embedding_dimension()}) != teacher dim "
192
+ f"({teacher.get_embedding_dimension()}). Plain MSELoss requires matching dims. "
193
+ "Either pick a student with matching dim, or add a Dense projection layer "
194
+ "(PCA-initialized from teacher embeddings). See the 'MISMATCHED EMBEDDING DIMS' "
195
+ "section in this script's docstring."
196
+ )
197
+
198
+ logging.info(f"Loading corpus: {CORPUS_DATASET} ({CORPUS_SUBSET})")
199
+ train_size = 50 if SMOKE_TEST else TRAIN_SIZE
200
+ eval_size = 20 if SMOKE_TEST else EVAL_SIZE
201
+ if SMOKE_TEST:
202
+ logging.info("SMOKE_TEST=1: trimmed dataset; will run max_steps=1 and skip Hub push")
203
+ raw = load_dataset(CORPUS_DATASET, CORPUS_SUBSET, split="train")
204
+ sentences = list(dict.fromkeys(s for row in raw for s in (row["anchor"], row["positive"]) if isinstance(s, str)))
205
+ sentences = sentences[: train_size + eval_size]
206
+ train_sentences = sentences[:train_size]
207
+ eval_sentences = sentences[train_size : train_size + eval_size]
208
+
209
+ logging.info(f"Encoding {len(train_sentences):,} training sentences with the teacher (may take a while)")
210
+ teacher_train = teacher.encode(
211
+ train_sentences, batch_size=TEACHER_ENCODE_BATCH_SIZE, convert_to_numpy=True, show_progress_bar=True
212
+ )
213
+
214
+ logging.info(f"Encoding {len(eval_sentences):,} eval sentences with the teacher")
215
+ teacher_eval = teacher.encode(
216
+ eval_sentences, batch_size=TEACHER_ENCODE_BATCH_SIZE, convert_to_numpy=True, show_progress_bar=True
217
+ )
218
+
219
+ train_dataset = Dataset.from_dict({"sentence": train_sentences, "label": teacher_train.tolist()})
220
+ eval_dataset = Dataset.from_dict({"sentence": eval_sentences, "label": teacher_eval.tolist()})
221
+
222
+ logging.info(f"Building training dataset ({len(train_dataset):,}) and eval dataset ({len(eval_dataset):,})")
223
+
224
+ loss = MSELoss(model=student)
225
+
226
+ logging.info("Setting up STS-B evaluator for quality tracking")
227
+ stsb = load_dataset("sentence-transformers/stsb", split="validation")
228
+ evaluator = EmbeddingSimilarityEvaluator(
229
+ sentences1=stsb["sentence1"],
230
+ sentences2=stsb["sentence2"],
231
+ scores=stsb["score"],
232
+ main_similarity=SimilarityFunction.COSINE,
233
+ name="sts-dev",
234
+ )
235
+ logging.info("Teacher performance:")
236
+ evaluator(teacher)
237
+ logging.info("Student performance before distillation:")
238
+ # Must run before deriving metric_key: evaluator(model) mutates primary_metric to add the name_ prefix.
239
+ baseline_eval = evaluator(student)[evaluator.primary_metric]
240
+ metric_key = f"eval_{evaluator.primary_metric}"
241
+
242
+ args = SentenceTransformerTrainingArguments(
243
+ output_dir=OUTPUT_DIR,
244
+ num_train_epochs=1,
245
+ max_steps=1 if SMOKE_TEST else -1,
246
+ per_device_train_batch_size=TRAIN_BATCH_SIZE,
247
+ per_device_eval_batch_size=TRAIN_BATCH_SIZE,
248
+ learning_rate=1e-4,
249
+ weight_decay=0.01,
250
+ warmup_steps=0.1,
251
+ bf16=True,
252
+ eval_strategy="steps",
253
+ eval_steps=0.1,
254
+ save_strategy="steps",
255
+ save_steps=0.1,
256
+ save_total_limit=2,
257
+ logging_steps=0.01,
258
+ logging_first_step=True,
259
+ load_best_model_at_end=True,
260
+ metric_for_best_model=metric_key,
261
+ greater_is_better=True,
262
+ report_to="none" if SMOKE_TEST else "trackio",
263
+ run_name=RUN_NAME,
264
+ seed=12,
265
+ )
266
+
267
+ trainer = SentenceTransformerTrainer(
268
+ model=student,
269
+ args=args,
270
+ train_dataset=train_dataset,
271
+ eval_dataset=eval_dataset,
272
+ loss=loss,
273
+ evaluator=evaluator,
274
+ )
275
+ if not SMOKE_TEST:
276
+ log_trackio_dashboard()
277
+ trainer.train()
278
+
279
+ logging.info("Student performance after distillation:")
280
+ score = evaluator(student)[evaluator.primary_metric]
281
+ delta = score - baseline_eval
282
+ verdict = "WIN" if delta >= 0.005 else "MARGINAL" if delta >= 0 else "REGRESSION"
283
+ logging.info(f"VERDICT: {verdict} | score={score:.4f} | baseline={baseline_eval:.4f} | delta={delta:+.4f}")
284
+
285
+ final_dir = f"{OUTPUT_DIR}/final"
286
+ student.save_pretrained(final_dir)
287
+ logging.info(f"Saved to {final_dir}")
288
+
289
+ if SMOKE_TEST:
290
+ logging.info("SMOKE_TEST=1: skipping Hub push")
291
+ return
292
+
293
+ try:
294
+ commit_url = student.push_to_hub(RUN_NAME)
295
+ logging.info(f"Pushed model to {commit_url.rsplit('/commit/', 1)[0]}")
296
+ except Exception:
297
+ import traceback
298
+
299
+ logging.error(f"Hub push failed:\n{traceback.format_exc()}")
300
+
301
+
302
+ if __name__ == "__main__":
303
+ main()