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.
- package/.agent/.tribunal/session.jsonl +15 -0
- package/.agent/ARCHITECTURE.md +4 -4
- package/.agent/agents/agent-shield-auditor.md +18 -0
- package/.agent/agents/harness-manager.md +49 -0
- package/.agent/agents/human-gate-negotiator.md +22 -0
- package/.agent/agents/kernel-scheduler.md +56 -0
- package/.agent/agents/memory-archivist.md +37 -0
- package/.agent/agents/orchestrator.md +5 -0
- package/.agent/agents/project-planner.md +5 -0
- package/.agent/agents/security-auditor.md +5 -0
- package/.agent/rules/GEMINI.md +1 -1
- package/.agent/scripts/_utils.js +1 -1
- package/.agent/scripts/checklist.js +1 -1
- package/.agent/scripts/context_compiler.js +1 -1
- package/.agent/scripts/guardrail_engine.js +1 -1
- package/.agent/scripts/harness_manager.js +60 -0
- package/.agent/scripts/lint_runner.js +1 -1
- package/.agent/scripts/mcp_server.js +181 -0
- package/.agent/scripts/memory_archivist.js +97 -0
- package/.agent/scripts/memory_consolidator.js +37 -0
- package/.agent/scripts/memory_engine.js +61 -21
- package/.agent/scripts/pipeline_engine.js +17 -2
- package/.agent/scripts/session_logger.js +115 -0
- package/.agent/scripts/session_manager.js +10 -0
- package/.agent/scripts/swarm_dispatcher.js +74 -1
- package/.agent/scripts/syscall_registry.js +105 -0
- package/.agent/scripts/test_runner.js +1 -1
- package/.agent/scripts/verify_all.js +2 -2
- package/.agent/skill_topic_map.json +28 -1
- package/.agent/skills/agent-syscall-guidelines/SKILL.md +25 -0
- package/.agent/skills/agentic-workflows-2026/SKILL.md +8 -0
- package/.agent/skills/agentshield-security/SKILL.md +26 -0
- package/.agent/skills/context-engineering-pro/SKILL.md +7 -0
- package/.agent/skills/fabel-protocol/SKILL.md +5 -0
- package/.agent/skills/graph-engineering/SKILL.md +28 -0
- package/.agent/skills/harness-protocol/SKILL.md +8 -0
- package/.agent/skills/hf-cli/SKILL.md +239 -0
- package/.agent/skills/hf-cloud-aws-context-discovery/SKILL.md +74 -0
- package/.agent/skills/hf-cloud-python-env-setup/SKILL.md +90 -0
- package/.agent/skills/hf-cloud-python-env-setup/requirements.txt +17 -0
- package/.agent/skills/hf-cloud-python-env-setup/scripts/check_versions.py +29 -0
- package/.agent/skills/hf-cloud-python-env-setup/scripts/setup_env.py +143 -0
- package/.agent/skills/hf-cloud-sagemaker-deployment-planner/SKILL.md +90 -0
- package/.agent/skills/hf-cloud-sagemaker-iam-preflight/SKILL.md +102 -0
- package/.agent/skills/hf-cloud-sagemaker-iam-preflight/references/minimum-permissions.json +47 -0
- package/.agent/skills/hf-cloud-sagemaker-iam-preflight/references/trust-policy.json +12 -0
- package/.agent/skills/hf-cloud-sagemaker-iam-preflight/scripts/check_role.py +184 -0
- package/.agent/skills/hf-cloud-sagemaker-iam-preflight/scripts/create_role.py +118 -0
- package/.agent/skills/hf-cloud-sagemaker-production-defaults/SKILL.md +419 -0
- package/.agent/skills/hf-cloud-sagemaker-production-defaults/references/deployment-template.md +59 -0
- package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/_common.py +148 -0
- package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy.py +327 -0
- package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_async.py +434 -0
- package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_ic.py +506 -0
- package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/invoke_endpoint.py +180 -0
- package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/teardown.py +246 -0
- package/.agent/skills/hf-cloud-serving-image-selection/SKILL.md +220 -0
- package/.agent/skills/hf-cloud-serving-image-selection/references/model-to-image.md +111 -0
- package/.agent/skills/hf-cloud-serving-image-selection/scripts/mirror_image.py +145 -0
- package/.agent/skills/hf-mem/SKILL.md +79 -0
- package/.agent/skills/huggingface-best/SKILL.md +134 -0
- package/.agent/skills/huggingface-community-evals/SKILL.md +207 -0
- package/.agent/skills/huggingface-community-evals/examples/.env.example +3 -0
- package/.agent/skills/huggingface-community-evals/examples/USAGE_EXAMPLES.md +101 -0
- package/.agent/skills/huggingface-community-evals/scripts/inspect_eval_uv.py +104 -0
- package/.agent/skills/huggingface-community-evals/scripts/inspect_vllm_uv.py +306 -0
- package/.agent/skills/huggingface-community-evals/scripts/lighteval_vllm_uv.py +297 -0
- package/.agent/skills/huggingface-datasets/SKILL.md +107 -0
- package/.agent/skills/huggingface-gradio/SKILL.md +298 -0
- package/.agent/skills/huggingface-gradio/examples.md +613 -0
- package/.agent/skills/huggingface-llm-trainer/SKILL.md +738 -0
- package/.agent/skills/huggingface-llm-trainer/references/gguf_conversion.md +296 -0
- package/.agent/skills/huggingface-llm-trainer/references/hardware_guide.md +283 -0
- package/.agent/skills/huggingface-llm-trainer/references/hub_saving.md +364 -0
- package/.agent/skills/huggingface-llm-trainer/references/local_training_macos.md +231 -0
- package/.agent/skills/huggingface-llm-trainer/references/reliability_principles.md +371 -0
- package/.agent/skills/huggingface-llm-trainer/references/trackio_guide.md +191 -0
- package/.agent/skills/huggingface-llm-trainer/references/training_methods.md +150 -0
- package/.agent/skills/huggingface-llm-trainer/references/training_patterns.md +203 -0
- package/.agent/skills/huggingface-llm-trainer/references/troubleshooting.md +282 -0
- package/.agent/skills/huggingface-llm-trainer/references/unsloth.md +313 -0
- package/.agent/skills/huggingface-llm-trainer/scripts/convert_to_gguf.py +424 -0
- package/.agent/skills/huggingface-llm-trainer/scripts/dataset_inspector.py +417 -0
- package/.agent/skills/huggingface-llm-trainer/scripts/estimate_cost.py +150 -0
- package/.agent/skills/huggingface-llm-trainer/scripts/hf_benchmarks.py +659 -0
- package/.agent/skills/huggingface-llm-trainer/scripts/train_dpo_example.py +106 -0
- package/.agent/skills/huggingface-llm-trainer/scripts/train_grpo_example.py +89 -0
- package/.agent/skills/huggingface-llm-trainer/scripts/train_sft_example.py +122 -0
- package/.agent/skills/huggingface-llm-trainer/scripts/unsloth_sft_example.py +512 -0
- package/.agent/skills/huggingface-local-models/SKILL.md +113 -0
- package/.agent/skills/huggingface-local-models/references/hardware.md +38 -0
- package/.agent/skills/huggingface-local-models/references/hub-discovery.md +178 -0
- package/.agent/skills/huggingface-local-models/references/quantization.md +256 -0
- package/.agent/skills/huggingface-lora-space-builder/SKILL.md +394 -0
- package/.agent/skills/huggingface-lora-space-builder/references/adapting-to-the-lora.md +113 -0
- package/.agent/skills/huggingface-lora-space-builder/references/base-models/krea-2.md +63 -0
- package/.agent/skills/huggingface-lora-space-builder/references/base-models/ltx.md +205 -0
- package/.agent/skills/huggingface-lora-space-builder/references/base-models/qwen-image.md +144 -0
- package/.agent/skills/huggingface-lora-space-builder/references/creative-mode.md +262 -0
- package/.agent/skills/huggingface-lora-space-builder/references/tasks.md +124 -0
- package/.agent/skills/huggingface-lora-space-builder/references/zerogpu-and-publishing.md +196 -0
- package/.agent/skills/huggingface-paper-publisher/SKILL.md +624 -0
- package/.agent/skills/huggingface-paper-publisher/examples/example_usage.md +326 -0
- package/.agent/skills/huggingface-paper-publisher/references/quick_reference.md +216 -0
- package/.agent/skills/huggingface-paper-publisher/scripts/paper_manager.py +606 -0
- package/.agent/skills/huggingface-paper-publisher/templates/arxiv.md +299 -0
- package/.agent/skills/huggingface-paper-publisher/templates/ml-report.md +358 -0
- package/.agent/skills/huggingface-paper-publisher/templates/modern.md +319 -0
- package/.agent/skills/huggingface-paper-publisher/templates/standard.md +201 -0
- package/.agent/skills/huggingface-papers/SKILL.md +239 -0
- package/.agent/skills/huggingface-spaces/README.md +9 -0
- package/.agent/skills/huggingface-spaces/SKILL.md +242 -0
- package/.agent/skills/huggingface-spaces/references/3d-cuda-extensions.md +109 -0
- package/.agent/skills/huggingface-spaces/references/3d-generation.md +98 -0
- package/.agent/skills/huggingface-spaces/references/3d-gsplat.md +53 -0
- package/.agent/skills/huggingface-spaces/references/3d-models.md +227 -0
- package/.agent/skills/huggingface-spaces/references/3d-outputs.md +114 -0
- package/.agent/skills/huggingface-spaces/references/buckets.md +89 -0
- package/.agent/skills/huggingface-spaces/references/debugging.md +236 -0
- package/.agent/skills/huggingface-spaces/references/gradio.md +200 -0
- package/.agent/skills/huggingface-spaces/references/grants.md +63 -0
- package/.agent/skills/huggingface-spaces/references/inference-providers.md +97 -0
- package/.agent/skills/huggingface-spaces/references/known-errors.md +232 -0
- package/.agent/skills/huggingface-spaces/references/requirements.md +169 -0
- package/.agent/skills/huggingface-spaces/references/zerogpu.md +349 -0
- package/.agent/skills/huggingface-tool-builder/SKILL.md +120 -0
- package/.agent/skills/huggingface-tool-builder/references/baseline_hf_api.py +57 -0
- package/.agent/skills/huggingface-tool-builder/references/baseline_hf_api.sh +40 -0
- package/.agent/skills/huggingface-tool-builder/references/baseline_hf_api.tsx +57 -0
- package/.agent/skills/huggingface-tool-builder/references/find_models_by_paper.sh +230 -0
- package/.agent/skills/huggingface-tool-builder/references/hf_enrich_models.sh +96 -0
- package/.agent/skills/huggingface-tool-builder/references/hf_model_card_frontmatter.sh +188 -0
- package/.agent/skills/huggingface-tool-builder/references/hf_model_papers_auth.sh +171 -0
- package/.agent/skills/huggingface-trackio/SKILL.md +142 -0
- package/.agent/skills/huggingface-trackio/references/alerts.md +196 -0
- package/.agent/skills/huggingface-trackio/references/logging_metrics.md +212 -0
- package/.agent/skills/huggingface-trackio/references/retrieving_metrics.md +251 -0
- package/.agent/skills/huggingface-vision-trainer/SKILL.md +593 -0
- package/.agent/skills/huggingface-vision-trainer/references/finetune_sam2_trainer.md +254 -0
- package/.agent/skills/huggingface-vision-trainer/references/hub_saving.md +618 -0
- package/.agent/skills/huggingface-vision-trainer/references/image_classification_training_notebook.md +279 -0
- package/.agent/skills/huggingface-vision-trainer/references/object_detection_training_notebook.md +700 -0
- package/.agent/skills/huggingface-vision-trainer/references/reliability_principles.md +310 -0
- package/.agent/skills/huggingface-vision-trainer/references/timm_trainer.md +91 -0
- package/.agent/skills/huggingface-vision-trainer/scripts/dataset_inspector.py +814 -0
- package/.agent/skills/huggingface-vision-trainer/scripts/estimate_cost.py +217 -0
- package/.agent/skills/huggingface-vision-trainer/scripts/image_classification_training.py +383 -0
- package/.agent/skills/huggingface-vision-trainer/scripts/object_detection_training.py +710 -0
- package/.agent/skills/huggingface-vision-trainer/scripts/sam_segmentation_training.py +382 -0
- package/.agent/skills/huggingface-zerogpu/SKILL.md +289 -0
- package/.agent/skills/huggingface-zerogpu/references/concurrency.md +79 -0
- package/.agent/skills/huggingface-zerogpu/references/cuda-and-deps.md +66 -0
- package/.agent/skills/huggingface-zerogpu/references/how-quota-works.md +74 -0
- package/.agent/skills/huggingface-zerogpu/references/how-zerogpu-works.md +50 -0
- package/.agent/skills/human-gate-negotiation/SKILL.md +30 -0
- package/.agent/skills/intelligent-routing/SKILL.md +10 -4
- package/.agent/skills/semantic-filesystem-navigation/SKILL.md +24 -0
- package/.agent/skills/session-log-interrogation/SKILL.md +29 -0
- package/.agent/skills/subagent-driven-development/SKILL.md +32 -0
- package/.agent/skills/systematic-debugging/SKILL.md +5 -0
- package/.agent/skills/train-sentence-transformers/SKILL.md +109 -0
- package/.agent/skills/train-sentence-transformers/references/base_model_selection.md +79 -0
- package/.agent/skills/train-sentence-transformers/references/dataset_formats.md +128 -0
- package/.agent/skills/train-sentence-transformers/references/evaluators_cross_encoder.md +116 -0
- package/.agent/skills/train-sentence-transformers/references/evaluators_multi_vector_encoder.md +101 -0
- package/.agent/skills/train-sentence-transformers/references/evaluators_sentence_transformer.md +151 -0
- package/.agent/skills/train-sentence-transformers/references/evaluators_sparse_encoder.md +121 -0
- package/.agent/skills/train-sentence-transformers/references/hardware_guide.md +105 -0
- package/.agent/skills/train-sentence-transformers/references/hf_jobs_execution.md +173 -0
- package/.agent/skills/train-sentence-transformers/references/losses_cross_encoder.md +137 -0
- package/.agent/skills/train-sentence-transformers/references/losses_multi_vector_encoder.md +100 -0
- package/.agent/skills/train-sentence-transformers/references/losses_sentence_transformer.md +246 -0
- package/.agent/skills/train-sentence-transformers/references/losses_sparse_encoder.md +106 -0
- package/.agent/skills/train-sentence-transformers/references/model_architectures.md +178 -0
- package/.agent/skills/train-sentence-transformers/references/prompts_and_instructions.md +160 -0
- package/.agent/skills/train-sentence-transformers/references/training_args.md +270 -0
- package/.agent/skills/train-sentence-transformers/references/troubleshooting.md +225 -0
- package/.agent/skills/train-sentence-transformers/scripts/mine_hard_negatives.py +199 -0
- package/.agent/skills/train-sentence-transformers/scripts/train_cross_encoder_distillation_example.py +254 -0
- package/.agent/skills/train-sentence-transformers/scripts/train_cross_encoder_example.py +253 -0
- package/.agent/skills/train-sentence-transformers/scripts/train_cross_encoder_listwise_example.py +282 -0
- package/.agent/skills/train-sentence-transformers/scripts/train_multi_vector_encoder_example.py +240 -0
- package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_distillation_example.py +303 -0
- package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_example.py +227 -0
- package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_make_multilingual_example.py +308 -0
- package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_matryoshka_example.py +212 -0
- package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_multi_dataset_example.py +258 -0
- package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_static_embedding_example.py +273 -0
- package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_with_lora_example.py +275 -0
- package/.agent/skills/train-sentence-transformers/scripts/train_sparse_encoder_distillation_example.py +262 -0
- package/.agent/skills/train-sentence-transformers/scripts/train_sparse_encoder_example.py +237 -0
- package/.agent/skills/transformers-js/SKILL.md +692 -0
- package/.agent/skills/transformers-js/references/CACHE.md +339 -0
- package/.agent/skills/transformers-js/references/CONFIGURATION.md +438 -0
- package/.agent/skills/transformers-js/references/EXAMPLES.md +620 -0
- package/.agent/skills/transformers-js/references/MODEL_ARCHITECTURES.md +167 -0
- package/.agent/skills/transformers-js/references/MODEL_REGISTRY.md +197 -0
- package/.agent/skills/transformers-js/references/PIPELINE_OPTIONS.md +557 -0
- package/.agent/skills/transformers-js/references/TEXT_GENERATION.md +315 -0
- package/.agent/skills/tribunal-instincts-memory/SKILL.md +31 -0
- package/.agent/skills/trl-training/SKILL.md +318 -0
- package/.agent/workflows/assimilate.md +21 -0
- package/.agent/workflows/audit.md +5 -0
- package/.agent/workflows/generate.md +5 -0
- package/.agent/workflows/htop.md +22 -0
- package/.agent/workflows/marathon.md +5 -0
- package/.agent/workflows/resume.md +20 -0
- package/.agent/workflows/team-mode.md +22 -0
- package/.agents/skills/agent-syscall-guidelines/SKILL.md +25 -0
- package/.agents/skills/agentic-workflows-2026/SKILL.md +8 -0
- package/.agents/skills/agentshield-security/SKILL.md +26 -0
- package/.agents/skills/context-engineering-pro/SKILL.md +7 -0
- package/.agents/skills/fabel-protocol/SKILL.md +5 -0
- package/.agents/skills/graph-engineering/SKILL.md +28 -0
- package/.agents/skills/harness-protocol/SKILL.md +8 -0
- package/.agents/skills/hf-cli/SKILL.md +239 -0
- package/.agents/skills/hf-cloud-aws-context-discovery/SKILL.md +74 -0
- package/.agents/skills/hf-cloud-python-env-setup/SKILL.md +90 -0
- package/.agents/skills/hf-cloud-python-env-setup/requirements.txt +17 -0
- package/.agents/skills/hf-cloud-python-env-setup/scripts/check_versions.py +29 -0
- package/.agents/skills/hf-cloud-python-env-setup/scripts/setup_env.py +143 -0
- package/.agents/skills/hf-cloud-sagemaker-deployment-planner/SKILL.md +90 -0
- package/.agents/skills/hf-cloud-sagemaker-iam-preflight/SKILL.md +102 -0
- package/.agents/skills/hf-cloud-sagemaker-iam-preflight/references/minimum-permissions.json +47 -0
- package/.agents/skills/hf-cloud-sagemaker-iam-preflight/references/trust-policy.json +12 -0
- package/.agents/skills/hf-cloud-sagemaker-iam-preflight/scripts/check_role.py +184 -0
- package/.agents/skills/hf-cloud-sagemaker-iam-preflight/scripts/create_role.py +118 -0
- package/.agents/skills/hf-cloud-sagemaker-production-defaults/SKILL.md +419 -0
- package/.agents/skills/hf-cloud-sagemaker-production-defaults/references/deployment-template.md +59 -0
- package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/_common.py +148 -0
- package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy.py +327 -0
- package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_async.py +434 -0
- package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_ic.py +506 -0
- package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/invoke_endpoint.py +180 -0
- package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/teardown.py +246 -0
- package/.agents/skills/hf-cloud-serving-image-selection/SKILL.md +220 -0
- package/.agents/skills/hf-cloud-serving-image-selection/references/model-to-image.md +111 -0
- package/.agents/skills/hf-cloud-serving-image-selection/scripts/mirror_image.py +145 -0
- package/.agents/skills/hf-mem/SKILL.md +79 -0
- package/.agents/skills/huggingface-best/SKILL.md +134 -0
- package/.agents/skills/huggingface-community-evals/SKILL.md +207 -0
- package/.agents/skills/huggingface-community-evals/examples/.env.example +3 -0
- package/.agents/skills/huggingface-community-evals/examples/USAGE_EXAMPLES.md +101 -0
- package/.agents/skills/huggingface-community-evals/scripts/inspect_eval_uv.py +104 -0
- package/.agents/skills/huggingface-community-evals/scripts/inspect_vllm_uv.py +306 -0
- package/.agents/skills/huggingface-community-evals/scripts/lighteval_vllm_uv.py +297 -0
- package/.agents/skills/huggingface-datasets/SKILL.md +107 -0
- package/.agents/skills/huggingface-gradio/SKILL.md +298 -0
- package/.agents/skills/huggingface-gradio/examples.md +613 -0
- package/.agents/skills/huggingface-llm-trainer/SKILL.md +738 -0
- package/.agents/skills/huggingface-llm-trainer/references/gguf_conversion.md +296 -0
- package/.agents/skills/huggingface-llm-trainer/references/hardware_guide.md +283 -0
- package/.agents/skills/huggingface-llm-trainer/references/hub_saving.md +364 -0
- package/.agents/skills/huggingface-llm-trainer/references/local_training_macos.md +231 -0
- package/.agents/skills/huggingface-llm-trainer/references/reliability_principles.md +371 -0
- package/.agents/skills/huggingface-llm-trainer/references/trackio_guide.md +191 -0
- package/.agents/skills/huggingface-llm-trainer/references/training_methods.md +150 -0
- package/.agents/skills/huggingface-llm-trainer/references/training_patterns.md +203 -0
- package/.agents/skills/huggingface-llm-trainer/references/troubleshooting.md +282 -0
- package/.agents/skills/huggingface-llm-trainer/references/unsloth.md +313 -0
- package/.agents/skills/huggingface-llm-trainer/scripts/convert_to_gguf.py +424 -0
- package/.agents/skills/huggingface-llm-trainer/scripts/dataset_inspector.py +417 -0
- package/.agents/skills/huggingface-llm-trainer/scripts/estimate_cost.py +150 -0
- package/.agents/skills/huggingface-llm-trainer/scripts/hf_benchmarks.py +659 -0
- package/.agents/skills/huggingface-llm-trainer/scripts/train_dpo_example.py +106 -0
- package/.agents/skills/huggingface-llm-trainer/scripts/train_grpo_example.py +89 -0
- package/.agents/skills/huggingface-llm-trainer/scripts/train_sft_example.py +122 -0
- package/.agents/skills/huggingface-llm-trainer/scripts/unsloth_sft_example.py +512 -0
- package/.agents/skills/huggingface-local-models/SKILL.md +113 -0
- package/.agents/skills/huggingface-local-models/references/hardware.md +38 -0
- package/.agents/skills/huggingface-local-models/references/hub-discovery.md +178 -0
- package/.agents/skills/huggingface-local-models/references/quantization.md +256 -0
- package/.agents/skills/huggingface-lora-space-builder/SKILL.md +394 -0
- package/.agents/skills/huggingface-lora-space-builder/references/adapting-to-the-lora.md +113 -0
- package/.agents/skills/huggingface-lora-space-builder/references/base-models/krea-2.md +63 -0
- package/.agents/skills/huggingface-lora-space-builder/references/base-models/ltx.md +205 -0
- package/.agents/skills/huggingface-lora-space-builder/references/base-models/qwen-image.md +144 -0
- package/.agents/skills/huggingface-lora-space-builder/references/creative-mode.md +262 -0
- package/.agents/skills/huggingface-lora-space-builder/references/tasks.md +124 -0
- package/.agents/skills/huggingface-lora-space-builder/references/zerogpu-and-publishing.md +196 -0
- package/.agents/skills/huggingface-paper-publisher/SKILL.md +624 -0
- package/.agents/skills/huggingface-paper-publisher/examples/example_usage.md +326 -0
- package/.agents/skills/huggingface-paper-publisher/references/quick_reference.md +216 -0
- package/.agents/skills/huggingface-paper-publisher/scripts/paper_manager.py +606 -0
- package/.agents/skills/huggingface-paper-publisher/templates/arxiv.md +299 -0
- package/.agents/skills/huggingface-paper-publisher/templates/ml-report.md +358 -0
- package/.agents/skills/huggingface-paper-publisher/templates/modern.md +319 -0
- package/.agents/skills/huggingface-paper-publisher/templates/standard.md +201 -0
- package/.agents/skills/huggingface-papers/SKILL.md +239 -0
- package/.agents/skills/huggingface-spaces/README.md +9 -0
- package/.agents/skills/huggingface-spaces/SKILL.md +242 -0
- package/.agents/skills/huggingface-spaces/references/3d-cuda-extensions.md +109 -0
- package/.agents/skills/huggingface-spaces/references/3d-generation.md +98 -0
- package/.agents/skills/huggingface-spaces/references/3d-gsplat.md +53 -0
- package/.agents/skills/huggingface-spaces/references/3d-models.md +227 -0
- package/.agents/skills/huggingface-spaces/references/3d-outputs.md +114 -0
- package/.agents/skills/huggingface-spaces/references/buckets.md +89 -0
- package/.agents/skills/huggingface-spaces/references/debugging.md +236 -0
- package/.agents/skills/huggingface-spaces/references/gradio.md +200 -0
- package/.agents/skills/huggingface-spaces/references/grants.md +63 -0
- package/.agents/skills/huggingface-spaces/references/inference-providers.md +97 -0
- package/.agents/skills/huggingface-spaces/references/known-errors.md +232 -0
- package/.agents/skills/huggingface-spaces/references/requirements.md +169 -0
- package/.agents/skills/huggingface-spaces/references/zerogpu.md +349 -0
- package/.agents/skills/huggingface-tool-builder/SKILL.md +120 -0
- package/.agents/skills/huggingface-tool-builder/references/baseline_hf_api.py +57 -0
- package/.agents/skills/huggingface-tool-builder/references/baseline_hf_api.sh +40 -0
- package/.agents/skills/huggingface-tool-builder/references/baseline_hf_api.tsx +57 -0
- package/.agents/skills/huggingface-tool-builder/references/find_models_by_paper.sh +230 -0
- package/.agents/skills/huggingface-tool-builder/references/hf_enrich_models.sh +96 -0
- package/.agents/skills/huggingface-tool-builder/references/hf_model_card_frontmatter.sh +188 -0
- package/.agents/skills/huggingface-tool-builder/references/hf_model_papers_auth.sh +171 -0
- package/.agents/skills/huggingface-trackio/SKILL.md +142 -0
- package/.agents/skills/huggingface-trackio/references/alerts.md +196 -0
- package/.agents/skills/huggingface-trackio/references/logging_metrics.md +212 -0
- package/.agents/skills/huggingface-trackio/references/retrieving_metrics.md +251 -0
- package/.agents/skills/huggingface-vision-trainer/SKILL.md +593 -0
- package/.agents/skills/huggingface-vision-trainer/references/finetune_sam2_trainer.md +254 -0
- package/.agents/skills/huggingface-vision-trainer/references/hub_saving.md +618 -0
- package/.agents/skills/huggingface-vision-trainer/references/image_classification_training_notebook.md +279 -0
- package/.agents/skills/huggingface-vision-trainer/references/object_detection_training_notebook.md +700 -0
- package/.agents/skills/huggingface-vision-trainer/references/reliability_principles.md +310 -0
- package/.agents/skills/huggingface-vision-trainer/references/timm_trainer.md +91 -0
- package/.agents/skills/huggingface-vision-trainer/scripts/dataset_inspector.py +814 -0
- package/.agents/skills/huggingface-vision-trainer/scripts/estimate_cost.py +217 -0
- package/.agents/skills/huggingface-vision-trainer/scripts/image_classification_training.py +383 -0
- package/.agents/skills/huggingface-vision-trainer/scripts/object_detection_training.py +710 -0
- package/.agents/skills/huggingface-vision-trainer/scripts/sam_segmentation_training.py +382 -0
- package/.agents/skills/huggingface-zerogpu/SKILL.md +289 -0
- package/.agents/skills/huggingface-zerogpu/references/concurrency.md +79 -0
- package/.agents/skills/huggingface-zerogpu/references/cuda-and-deps.md +66 -0
- package/.agents/skills/huggingface-zerogpu/references/how-quota-works.md +74 -0
- package/.agents/skills/huggingface-zerogpu/references/how-zerogpu-works.md +50 -0
- package/.agents/skills/human-gate-negotiation/SKILL.md +30 -0
- package/.agents/skills/intelligent-routing/SKILL.md +10 -4
- package/.agents/skills/semantic-filesystem-navigation/SKILL.md +24 -0
- package/.agents/skills/session-log-interrogation/SKILL.md +29 -0
- package/.agents/skills/subagent-driven-development/SKILL.md +32 -0
- package/.agents/skills/systematic-debugging/SKILL.md +5 -0
- package/.agents/skills/train-sentence-transformers/SKILL.md +109 -0
- package/.agents/skills/train-sentence-transformers/references/base_model_selection.md +79 -0
- package/.agents/skills/train-sentence-transformers/references/dataset_formats.md +128 -0
- package/.agents/skills/train-sentence-transformers/references/evaluators_cross_encoder.md +116 -0
- package/.agents/skills/train-sentence-transformers/references/evaluators_multi_vector_encoder.md +101 -0
- package/.agents/skills/train-sentence-transformers/references/evaluators_sentence_transformer.md +151 -0
- package/.agents/skills/train-sentence-transformers/references/evaluators_sparse_encoder.md +121 -0
- package/.agents/skills/train-sentence-transformers/references/hardware_guide.md +105 -0
- package/.agents/skills/train-sentence-transformers/references/hf_jobs_execution.md +173 -0
- package/.agents/skills/train-sentence-transformers/references/losses_cross_encoder.md +137 -0
- package/.agents/skills/train-sentence-transformers/references/losses_multi_vector_encoder.md +100 -0
- package/.agents/skills/train-sentence-transformers/references/losses_sentence_transformer.md +246 -0
- package/.agents/skills/train-sentence-transformers/references/losses_sparse_encoder.md +106 -0
- package/.agents/skills/train-sentence-transformers/references/model_architectures.md +178 -0
- package/.agents/skills/train-sentence-transformers/references/prompts_and_instructions.md +160 -0
- package/.agents/skills/train-sentence-transformers/references/training_args.md +270 -0
- package/.agents/skills/train-sentence-transformers/references/troubleshooting.md +225 -0
- package/.agents/skills/train-sentence-transformers/scripts/mine_hard_negatives.py +199 -0
- package/.agents/skills/train-sentence-transformers/scripts/train_cross_encoder_distillation_example.py +254 -0
- package/.agents/skills/train-sentence-transformers/scripts/train_cross_encoder_example.py +253 -0
- package/.agents/skills/train-sentence-transformers/scripts/train_cross_encoder_listwise_example.py +282 -0
- package/.agents/skills/train-sentence-transformers/scripts/train_multi_vector_encoder_example.py +240 -0
- package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_distillation_example.py +303 -0
- package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_example.py +227 -0
- package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_make_multilingual_example.py +308 -0
- package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_matryoshka_example.py +212 -0
- package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_multi_dataset_example.py +258 -0
- package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_static_embedding_example.py +273 -0
- package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_with_lora_example.py +275 -0
- package/.agents/skills/train-sentence-transformers/scripts/train_sparse_encoder_distillation_example.py +262 -0
- package/.agents/skills/train-sentence-transformers/scripts/train_sparse_encoder_example.py +237 -0
- package/.agents/skills/transformers-js/SKILL.md +692 -0
- package/.agents/skills/transformers-js/references/CACHE.md +339 -0
- package/.agents/skills/transformers-js/references/CONFIGURATION.md +438 -0
- package/.agents/skills/transformers-js/references/EXAMPLES.md +620 -0
- package/.agents/skills/transformers-js/references/MODEL_ARCHITECTURES.md +167 -0
- package/.agents/skills/transformers-js/references/MODEL_REGISTRY.md +197 -0
- package/.agents/skills/transformers-js/references/PIPELINE_OPTIONS.md +557 -0
- package/.agents/skills/transformers-js/references/TEXT_GENERATION.md +315 -0
- package/.agents/skills/tribunal-instincts-memory/SKILL.md +31 -0
- package/.agents/skills/trl-training/SKILL.md +318 -0
- package/CONTRIBUTING.md +2 -2
- package/README.md +135 -435
- package/bin/adapter-install.js +1 -1
- package/bin/mcp-server.js +5 -5
- package/dist/tui/banner.js +1 -1
- package/gemini-extension.json +1 -1
- package/mcp_config.json +1 -1
- package/package.json +7 -7
- package/plugin.json +1 -1
- package/scripts/context_compiler.js +1 -1
- package/scripts/skill_enhancement_engine.js +6 -6
- package/skills/agent-syscall-guidelines/SKILL.md +25 -0
- package/skills/agentic-workflows-2026/SKILL.md +8 -0
- package/skills/agentshield-security/SKILL.md +26 -0
- package/skills/context-engineering-pro/SKILL.md +7 -0
- package/skills/fabel-protocol/SKILL.md +5 -0
- package/skills/graph-engineering/SKILL.md +28 -0
- package/skills/harness-protocol/SKILL.md +8 -0
- package/skills/hf-cli/SKILL.md +239 -0
- package/skills/hf-cloud-aws-context-discovery/SKILL.md +74 -0
- package/skills/hf-cloud-python-env-setup/SKILL.md +90 -0
- package/skills/hf-cloud-python-env-setup/requirements.txt +17 -0
- package/skills/hf-cloud-python-env-setup/scripts/check_versions.py +29 -0
- package/skills/hf-cloud-python-env-setup/scripts/setup_env.py +143 -0
- package/skills/hf-cloud-sagemaker-deployment-planner/SKILL.md +90 -0
- package/skills/hf-cloud-sagemaker-iam-preflight/SKILL.md +102 -0
- package/skills/hf-cloud-sagemaker-iam-preflight/references/minimum-permissions.json +47 -0
- package/skills/hf-cloud-sagemaker-iam-preflight/references/trust-policy.json +12 -0
- package/skills/hf-cloud-sagemaker-iam-preflight/scripts/check_role.py +184 -0
- package/skills/hf-cloud-sagemaker-iam-preflight/scripts/create_role.py +118 -0
- package/skills/hf-cloud-sagemaker-production-defaults/SKILL.md +419 -0
- package/skills/hf-cloud-sagemaker-production-defaults/references/deployment-template.md +59 -0
- package/skills/hf-cloud-sagemaker-production-defaults/scripts/_common.py +148 -0
- package/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy.py +327 -0
- package/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_async.py +434 -0
- package/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_ic.py +506 -0
- package/skills/hf-cloud-sagemaker-production-defaults/scripts/invoke_endpoint.py +180 -0
- package/skills/hf-cloud-sagemaker-production-defaults/scripts/teardown.py +246 -0
- package/skills/hf-cloud-serving-image-selection/SKILL.md +220 -0
- package/skills/hf-cloud-serving-image-selection/references/model-to-image.md +111 -0
- package/skills/hf-cloud-serving-image-selection/scripts/mirror_image.py +145 -0
- package/skills/hf-mem/SKILL.md +79 -0
- package/skills/huggingface-best/SKILL.md +134 -0
- package/skills/huggingface-community-evals/SKILL.md +207 -0
- package/skills/huggingface-community-evals/examples/.env.example +3 -0
- package/skills/huggingface-community-evals/examples/USAGE_EXAMPLES.md +101 -0
- package/skills/huggingface-community-evals/scripts/inspect_eval_uv.py +104 -0
- package/skills/huggingface-community-evals/scripts/inspect_vllm_uv.py +306 -0
- package/skills/huggingface-community-evals/scripts/lighteval_vllm_uv.py +297 -0
- package/skills/huggingface-datasets/SKILL.md +107 -0
- package/skills/huggingface-gradio/SKILL.md +298 -0
- package/skills/huggingface-gradio/examples.md +613 -0
- package/skills/huggingface-llm-trainer/SKILL.md +738 -0
- package/skills/huggingface-llm-trainer/references/gguf_conversion.md +296 -0
- package/skills/huggingface-llm-trainer/references/hardware_guide.md +283 -0
- package/skills/huggingface-llm-trainer/references/hub_saving.md +364 -0
- package/skills/huggingface-llm-trainer/references/local_training_macos.md +231 -0
- package/skills/huggingface-llm-trainer/references/reliability_principles.md +371 -0
- package/skills/huggingface-llm-trainer/references/trackio_guide.md +191 -0
- package/skills/huggingface-llm-trainer/references/training_methods.md +150 -0
- package/skills/huggingface-llm-trainer/references/training_patterns.md +203 -0
- package/skills/huggingface-llm-trainer/references/troubleshooting.md +282 -0
- package/skills/huggingface-llm-trainer/references/unsloth.md +313 -0
- package/skills/huggingface-llm-trainer/scripts/convert_to_gguf.py +424 -0
- package/skills/huggingface-llm-trainer/scripts/dataset_inspector.py +417 -0
- package/skills/huggingface-llm-trainer/scripts/estimate_cost.py +150 -0
- package/skills/huggingface-llm-trainer/scripts/hf_benchmarks.py +659 -0
- package/skills/huggingface-llm-trainer/scripts/train_dpo_example.py +106 -0
- package/skills/huggingface-llm-trainer/scripts/train_grpo_example.py +89 -0
- package/skills/huggingface-llm-trainer/scripts/train_sft_example.py +122 -0
- package/skills/huggingface-llm-trainer/scripts/unsloth_sft_example.py +512 -0
- package/skills/huggingface-local-models/SKILL.md +113 -0
- package/skills/huggingface-local-models/references/hardware.md +38 -0
- package/skills/huggingface-local-models/references/hub-discovery.md +178 -0
- package/skills/huggingface-local-models/references/quantization.md +256 -0
- package/skills/huggingface-lora-space-builder/SKILL.md +394 -0
- package/skills/huggingface-lora-space-builder/references/adapting-to-the-lora.md +113 -0
- package/skills/huggingface-lora-space-builder/references/base-models/krea-2.md +63 -0
- package/skills/huggingface-lora-space-builder/references/base-models/ltx.md +205 -0
- package/skills/huggingface-lora-space-builder/references/base-models/qwen-image.md +144 -0
- package/skills/huggingface-lora-space-builder/references/creative-mode.md +262 -0
- package/skills/huggingface-lora-space-builder/references/tasks.md +124 -0
- package/skills/huggingface-lora-space-builder/references/zerogpu-and-publishing.md +196 -0
- package/skills/huggingface-paper-publisher/SKILL.md +624 -0
- package/skills/huggingface-paper-publisher/examples/example_usage.md +326 -0
- package/skills/huggingface-paper-publisher/references/quick_reference.md +216 -0
- package/skills/huggingface-paper-publisher/scripts/paper_manager.py +606 -0
- package/skills/huggingface-paper-publisher/templates/arxiv.md +299 -0
- package/skills/huggingface-paper-publisher/templates/ml-report.md +358 -0
- package/skills/huggingface-paper-publisher/templates/modern.md +319 -0
- package/skills/huggingface-paper-publisher/templates/standard.md +201 -0
- package/skills/huggingface-papers/SKILL.md +239 -0
- package/skills/huggingface-spaces/README.md +9 -0
- package/skills/huggingface-spaces/SKILL.md +242 -0
- package/skills/huggingface-spaces/references/3d-cuda-extensions.md +109 -0
- package/skills/huggingface-spaces/references/3d-generation.md +98 -0
- package/skills/huggingface-spaces/references/3d-gsplat.md +53 -0
- package/skills/huggingface-spaces/references/3d-models.md +227 -0
- package/skills/huggingface-spaces/references/3d-outputs.md +114 -0
- package/skills/huggingface-spaces/references/buckets.md +89 -0
- package/skills/huggingface-spaces/references/debugging.md +236 -0
- package/skills/huggingface-spaces/references/gradio.md +200 -0
- package/skills/huggingface-spaces/references/grants.md +63 -0
- package/skills/huggingface-spaces/references/inference-providers.md +97 -0
- package/skills/huggingface-spaces/references/known-errors.md +232 -0
- package/skills/huggingface-spaces/references/requirements.md +169 -0
- package/skills/huggingface-spaces/references/zerogpu.md +349 -0
- package/skills/huggingface-tool-builder/SKILL.md +120 -0
- package/skills/huggingface-tool-builder/references/baseline_hf_api.py +57 -0
- package/skills/huggingface-tool-builder/references/baseline_hf_api.sh +40 -0
- package/skills/huggingface-tool-builder/references/baseline_hf_api.tsx +57 -0
- package/skills/huggingface-tool-builder/references/find_models_by_paper.sh +230 -0
- package/skills/huggingface-tool-builder/references/hf_enrich_models.sh +96 -0
- package/skills/huggingface-tool-builder/references/hf_model_card_frontmatter.sh +188 -0
- package/skills/huggingface-tool-builder/references/hf_model_papers_auth.sh +171 -0
- package/skills/huggingface-trackio/SKILL.md +142 -0
- package/skills/huggingface-trackio/references/alerts.md +196 -0
- package/skills/huggingface-trackio/references/logging_metrics.md +212 -0
- package/skills/huggingface-trackio/references/retrieving_metrics.md +251 -0
- package/skills/huggingface-vision-trainer/SKILL.md +593 -0
- package/skills/huggingface-vision-trainer/references/finetune_sam2_trainer.md +254 -0
- package/skills/huggingface-vision-trainer/references/hub_saving.md +618 -0
- package/skills/huggingface-vision-trainer/references/image_classification_training_notebook.md +279 -0
- package/skills/huggingface-vision-trainer/references/object_detection_training_notebook.md +700 -0
- package/skills/huggingface-vision-trainer/references/reliability_principles.md +310 -0
- package/skills/huggingface-vision-trainer/references/timm_trainer.md +91 -0
- package/skills/huggingface-vision-trainer/scripts/dataset_inspector.py +814 -0
- package/skills/huggingface-vision-trainer/scripts/estimate_cost.py +217 -0
- package/skills/huggingface-vision-trainer/scripts/image_classification_training.py +383 -0
- package/skills/huggingface-vision-trainer/scripts/object_detection_training.py +710 -0
- package/skills/huggingface-vision-trainer/scripts/sam_segmentation_training.py +382 -0
- package/skills/huggingface-zerogpu/SKILL.md +289 -0
- package/skills/huggingface-zerogpu/references/concurrency.md +79 -0
- package/skills/huggingface-zerogpu/references/cuda-and-deps.md +66 -0
- package/skills/huggingface-zerogpu/references/how-quota-works.md +74 -0
- package/skills/huggingface-zerogpu/references/how-zerogpu-works.md +50 -0
- package/skills/human-gate-negotiation/SKILL.md +30 -0
- package/skills/intelligent-routing/SKILL.md +10 -4
- package/skills/semantic-filesystem-navigation/SKILL.md +24 -0
- package/skills/session-log-interrogation/SKILL.md +29 -0
- package/skills/subagent-driven-development/SKILL.md +32 -0
- package/skills/systematic-debugging/SKILL.md +5 -0
- package/skills/train-sentence-transformers/SKILL.md +109 -0
- package/skills/train-sentence-transformers/references/base_model_selection.md +79 -0
- package/skills/train-sentence-transformers/references/dataset_formats.md +128 -0
- package/skills/train-sentence-transformers/references/evaluators_cross_encoder.md +116 -0
- package/skills/train-sentence-transformers/references/evaluators_multi_vector_encoder.md +101 -0
- package/skills/train-sentence-transformers/references/evaluators_sentence_transformer.md +151 -0
- package/skills/train-sentence-transformers/references/evaluators_sparse_encoder.md +121 -0
- package/skills/train-sentence-transformers/references/hardware_guide.md +105 -0
- package/skills/train-sentence-transformers/references/hf_jobs_execution.md +173 -0
- package/skills/train-sentence-transformers/references/losses_cross_encoder.md +137 -0
- package/skills/train-sentence-transformers/references/losses_multi_vector_encoder.md +100 -0
- package/skills/train-sentence-transformers/references/losses_sentence_transformer.md +246 -0
- package/skills/train-sentence-transformers/references/losses_sparse_encoder.md +106 -0
- package/skills/train-sentence-transformers/references/model_architectures.md +178 -0
- package/skills/train-sentence-transformers/references/prompts_and_instructions.md +160 -0
- package/skills/train-sentence-transformers/references/training_args.md +270 -0
- package/skills/train-sentence-transformers/references/troubleshooting.md +225 -0
- package/skills/train-sentence-transformers/scripts/mine_hard_negatives.py +199 -0
- package/skills/train-sentence-transformers/scripts/train_cross_encoder_distillation_example.py +254 -0
- package/skills/train-sentence-transformers/scripts/train_cross_encoder_example.py +253 -0
- package/skills/train-sentence-transformers/scripts/train_cross_encoder_listwise_example.py +282 -0
- package/skills/train-sentence-transformers/scripts/train_multi_vector_encoder_example.py +240 -0
- package/skills/train-sentence-transformers/scripts/train_sentence_transformer_distillation_example.py +303 -0
- package/skills/train-sentence-transformers/scripts/train_sentence_transformer_example.py +227 -0
- package/skills/train-sentence-transformers/scripts/train_sentence_transformer_make_multilingual_example.py +308 -0
- package/skills/train-sentence-transformers/scripts/train_sentence_transformer_matryoshka_example.py +212 -0
- package/skills/train-sentence-transformers/scripts/train_sentence_transformer_multi_dataset_example.py +258 -0
- package/skills/train-sentence-transformers/scripts/train_sentence_transformer_static_embedding_example.py +273 -0
- package/skills/train-sentence-transformers/scripts/train_sentence_transformer_with_lora_example.py +275 -0
- package/skills/train-sentence-transformers/scripts/train_sparse_encoder_distillation_example.py +262 -0
- package/skills/train-sentence-transformers/scripts/train_sparse_encoder_example.py +237 -0
- package/skills/transformers-js/SKILL.md +692 -0
- package/skills/transformers-js/references/CACHE.md +339 -0
- package/skills/transformers-js/references/CONFIGURATION.md +438 -0
- package/skills/transformers-js/references/EXAMPLES.md +620 -0
- package/skills/transformers-js/references/MODEL_ARCHITECTURES.md +167 -0
- package/skills/transformers-js/references/MODEL_REGISTRY.md +197 -0
- package/skills/transformers-js/references/PIPELINE_OPTIONS.md +557 -0
- package/skills/transformers-js/references/TEXT_GENERATION.md +315 -0
- package/skills/tribunal-instincts-memory/SKILL.md +31 -0
- package/skills/trl-training/SKILL.md +318 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Dataset Formats
|
|
2
|
+
|
|
3
|
+
This reference covers: how datasets map to losses, how to reshape data when it doesn't fit, and how to mine hard negatives.
|
|
4
|
+
|
|
5
|
+
## The two rules
|
|
6
|
+
|
|
7
|
+
From the sentence-transformers training overview:
|
|
8
|
+
|
|
9
|
+
1. If the loss requires a label, the dataset must have a column named **`label`, `labels`, `score`, or `scores`**. Any column with one of these names is the label.
|
|
10
|
+
2. All other columns are **inputs**. The loss defines how many input columns it expects. Column **names don't matter. Order does**.
|
|
11
|
+
|
|
12
|
+
Example: `CoSENTLoss` expects 2 inputs + a float label. A dataset with columns `["premise", "hypothesis", "score"]` works. A dataset with `["score", "premise", "hypothesis"]` does not. Reorder first.
|
|
13
|
+
|
|
14
|
+
## Per-loss data shapes
|
|
15
|
+
|
|
16
|
+
The per-type loss references (`losses_sentence_transformer.md`, `losses_cross_encoder.md`, `losses_sparse_encoder.md`) are the canonical mappings from data shape to loss. Cross-cutting recipe bits those tables don't show:
|
|
17
|
+
|
|
18
|
+
- **`CosineSimilarityLoss`** wants `score` normalized to `[0, 1]`. `CoSENTLoss` / `AnglELoss` are pairwise-ranking and ignore absolute scale, so on `stsb` (raw 0-5) divide by 5 only when using cosine-similarity.
|
|
19
|
+
- **`BatchAllTripletLoss` / `BatchHardTripletLoss` / `BatchSemiHardTripletLoss`** need `batch_sampler=BatchSamplers.GROUP_BY_LABEL` so multiple samples per label appear in the same batch.
|
|
20
|
+
- **`MSELoss` (distillation)** label is the teacher's full embedding vector (a list of floats), not a scalar score.
|
|
21
|
+
- **`MarginMSELoss` (distillation)** label is `teacher_score(q, pos) - teacher_score(q, neg)`, precomputed per row.
|
|
22
|
+
- **N-tuple shape** for MNRL `(anchor, positive, negative_1, negative_2, ..., negative_N)` (1-indexed) is produced by `mine_hard_negatives(..., output_format="n-tuple")`. "labeled-list" output_format produces the CrossEncoder listwise shape.
|
|
23
|
+
|
|
24
|
+
## Reshaping operations
|
|
25
|
+
|
|
26
|
+
If your data doesn't fit the loss's expected shape:
|
|
27
|
+
|
|
28
|
+
### Reorder columns
|
|
29
|
+
|
|
30
|
+
```python
|
|
31
|
+
# Columns are ["hypothesis", "premise", "score"] but CoSENTLoss expects premise first.
|
|
32
|
+
dataset = dataset.select_columns(["premise", "hypothesis", "score"])
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Rename label column
|
|
36
|
+
|
|
37
|
+
```python
|
|
38
|
+
# Your label is called "relevance" but ST wants "label".
|
|
39
|
+
dataset = dataset.rename_column("relevance", "label")
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Drop extra columns
|
|
43
|
+
|
|
44
|
+
```python
|
|
45
|
+
# ST will treat every non-label column as an input. Drop metadata.
|
|
46
|
+
dataset = dataset.remove_columns(["source_id", "created_at", "language"])
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Convert dtypes
|
|
50
|
+
|
|
51
|
+
```python
|
|
52
|
+
# Label is str, need float for CoSENTLoss.
|
|
53
|
+
dataset = dataset.map(lambda x: {"label": float(x["label"])})
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Hard-negative mining
|
|
57
|
+
|
|
58
|
+
`mine_hard_negatives` (in `sentence_transformers.util`) produces a training dataset with mined negatives using a retriever. Hard negatives are the single highest-leverage lever for retrieval-model quality.
|
|
59
|
+
|
|
60
|
+
### Basic usage
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
from sentence_transformers import SentenceTransformer
|
|
64
|
+
from sentence_transformers.util import mine_hard_negatives
|
|
65
|
+
|
|
66
|
+
retriever = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
|
|
67
|
+
|
|
68
|
+
mined = mine_hard_negatives(
|
|
69
|
+
dataset=train_pairs, # has (anchor, positive) or (q, a) columns
|
|
70
|
+
model=retriever,
|
|
71
|
+
num_negatives=5,
|
|
72
|
+
range_min=0, range_max=100, # rank window to sample hard negatives from
|
|
73
|
+
sampling_strategy="top", # "top" = rank-1 hardest; "random" = random in window
|
|
74
|
+
output_format="n-tuple", # "triplet" | "n-tuple" | "labeled-pair" | "labeled-list"
|
|
75
|
+
use_faiss=True,
|
|
76
|
+
)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Output formats
|
|
80
|
+
|
|
81
|
+
- `"triplet"`: `(anchor, positive, negative)` triplets. One row per `(query, negative)` pair.
|
|
82
|
+
- `"n-tuple"`: `(anchor, positive, negative_1, negative_2, ..., negative_N)` (1-indexed). One row per query.
|
|
83
|
+
- `"labeled-pair"`: `(anchor, text, label)` with `label=1` for positives and `label=0` for negatives. Good for `BinaryCrossEntropyLoss`.
|
|
84
|
+
- `"labeled-list"`: `(anchor, texts, labels)`. One row per query with a list of candidates. Good for listwise losses.
|
|
85
|
+
|
|
86
|
+
### Filtering false negatives
|
|
87
|
+
|
|
88
|
+
If the retriever returns "negatives" that are actually relevant, they become false negatives and hurt training. Filter them:
|
|
89
|
+
|
|
90
|
+
```python
|
|
91
|
+
mined = mine_hard_negatives(
|
|
92
|
+
dataset=train_pairs,
|
|
93
|
+
model=retriever,
|
|
94
|
+
cross_encoder=CrossEncoder("cross-encoder/ms-marco-MiniLM-L-6-v2"), # score candidates
|
|
95
|
+
num_negatives=5,
|
|
96
|
+
max_score=0.9, # drop candidates scoring above 0.9
|
|
97
|
+
relative_margin=0.05, # require neg_score <= pos_score - abs(pos_score) * 0.05
|
|
98
|
+
absolute_margin=0.2, # require neg_score <= pos_score - 0.2
|
|
99
|
+
output_format="n-tuple",
|
|
100
|
+
use_faiss=True,
|
|
101
|
+
)
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Use **either** `relative_margin` or `absolute_margin`, usually not both. `max_score` is independently useful as a hard ceiling.
|
|
105
|
+
|
|
106
|
+
### CLI
|
|
107
|
+
|
|
108
|
+
`scripts/mine_hard_negatives.py` is a CLI wrapper. See it for a ready-to-run command.
|
|
109
|
+
|
|
110
|
+
## Choosing the right `range_min` / `range_max`
|
|
111
|
+
|
|
112
|
+
`range_max=None` is the default. Pass an integer to cap how far down the ranked list to sample from.
|
|
113
|
+
|
|
114
|
+
- `range_min=0`, `range_max=100`: sample from the top-100 retrieved. Good default.
|
|
115
|
+
- `range_min=10`, `range_max=100`: skip the top-10 (often contains true positives). Safer if you lack a cross-encoder.
|
|
116
|
+
- `range_min=0`, `range_max=1000`: wider net, more diverse negatives, slower.
|
|
117
|
+
- `sampling_strategy="top"`: always pick the rank-1 hardest. Maximum training signal per row.
|
|
118
|
+
- `sampling_strategy="random"`: pick randomly within the range. More robust if your retriever is itself noisy.
|
|
119
|
+
|
|
120
|
+
## Quick Hub-side dataset checks
|
|
121
|
+
|
|
122
|
+
`hf datasets sql "SELECT * FROM 'hf://datasets/<id>/<split>' LIMIT 5"` streams rows via DuckDB without `load_dataset(...)`. This is the fastest way to confirm column names match your loss before a full validation run. `hf datasets info <id>` shows config / splits / size. `hf datasets card <id> --text` renders the README.
|
|
123
|
+
|
|
124
|
+
## Gotchas
|
|
125
|
+
|
|
126
|
+
- **`remove_unused_columns=True` (default)**: the trainer drops columns that aren't passed to the model's forward. Usually fine, but if you rely on a custom collator that uses metadata columns, set `remove_unused_columns=False`.
|
|
127
|
+
- **Floats stored as strings after CSV load**: `load_dataset("csv", ...)` keeps columns as strings by default. Cast with `.map(lambda x: {"label": float(x["label"])})`.
|
|
128
|
+
- **Mined hard negatives with `include_positives=True`** include the positive as a negative in the output list, only useful when you're building an evaluator or want to measure rank of the positive. For training, leave it `False`.
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Evaluators (Cross-Encoder)
|
|
2
|
+
|
|
3
|
+
All cross-encoder evaluators live in `sentence_transformers.cross_encoder.evaluation`.
|
|
4
|
+
|
|
5
|
+
## Choosing the right evaluator
|
|
6
|
+
|
|
7
|
+
| Task | Evaluator |
|
|
8
|
+
|---|---|
|
|
9
|
+
| Rerank retrieval results (nDCG@k on BM25 top-N), fast default | `CrossEncoderNanoBEIREvaluator` |
|
|
10
|
+
| Rerank with custom candidates per query | `CrossEncoderRerankingEvaluator` |
|
|
11
|
+
| Binary / multi-class pair classification | `CrossEncoderClassificationEvaluator` |
|
|
12
|
+
| Continuous pair scoring (STS-style) | `CrossEncoderCorrelationEvaluator` |
|
|
13
|
+
|
|
14
|
+
Wrap multiple in `SequentialEvaluator` (from `sentence_transformers.base.evaluation`) to track them together:
|
|
15
|
+
|
|
16
|
+
```python
|
|
17
|
+
from sentence_transformers.base.evaluation import SequentialEvaluator
|
|
18
|
+
evaluator = SequentialEvaluator([nano_beir_eval, custom_rerank_eval])
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## The default: `CrossEncoderNanoBEIREvaluator`
|
|
22
|
+
|
|
23
|
+
Analog of `NanoBEIREvaluator` for rerankers. Takes BM25 top-100 for each NanoBEIR query and measures how well the cross-encoder re-ranks them.
|
|
24
|
+
|
|
25
|
+
```python
|
|
26
|
+
from sentence_transformers.cross_encoder.evaluation import CrossEncoderNanoBEIREvaluator
|
|
27
|
+
|
|
28
|
+
evaluator = CrossEncoderNanoBEIREvaluator(
|
|
29
|
+
dataset_names=["msmarco", "nfcorpus", "nq"], # default: 11 of 13 NanoBEIR datasets (excludes "arguana", "touche2020")
|
|
30
|
+
batch_size=64,
|
|
31
|
+
rerank_k=100, # rerank the BM25 top-K
|
|
32
|
+
)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Output key for `metric_for_best_model`: **`eval_NanoBEIR_R100_mean_ndcg@10`**. The `R100` signals "rerank top-100". If you change `rerank_k`, the prefix changes (e.g. `R50`).
|
|
36
|
+
|
|
37
|
+
Each individual dataset contributes `eval_Nano{DatasetName}_R100_ndcg@10` (e.g. `eval_NanoMSMARCO_R100_ndcg@10`) too.
|
|
38
|
+
|
|
39
|
+
## Custom reranking with your own candidates
|
|
40
|
+
|
|
41
|
+
Use when you have query + positive + distractor candidates that aren't part of NanoBEIR:
|
|
42
|
+
|
|
43
|
+
```python
|
|
44
|
+
from sentence_transformers.cross_encoder.evaluation import CrossEncoderRerankingEvaluator
|
|
45
|
+
|
|
46
|
+
samples = [
|
|
47
|
+
{"query": "...", "positive": ["the gold answer"], "documents": ["...", "...", ...]}
|
|
48
|
+
for ...
|
|
49
|
+
]
|
|
50
|
+
|
|
51
|
+
evaluator = CrossEncoderRerankingEvaluator(
|
|
52
|
+
samples=samples,
|
|
53
|
+
batch_size=64,
|
|
54
|
+
name="my-rerank",
|
|
55
|
+
always_rerank_positives=False, # default is True; override to False for realistic eval
|
|
56
|
+
)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
- `always_rerank_positives=True` (the library default) forces the positive into the candidate pool even when the retriever missed it. The reranker is graded only on candidates it can actually score, so the metric reflects pure reranker quality.
|
|
60
|
+
- `always_rerank_positives=False`: the positive is only reranked if it's already in `documents`. If the retriever missed it, the rank counts as N+1. This reflects end-to-end retriever+reranker quality. A positive the retriever missed is lost, regardless of reranker skill.
|
|
61
|
+
|
|
62
|
+
Output key: `eval_{name}_ndcg@10`, `eval_{name}_map`, `eval_{name}_mrr@10`.
|
|
63
|
+
|
|
64
|
+
## Classification-style cross-encoders
|
|
65
|
+
|
|
66
|
+
### `CrossEncoderClassificationEvaluator`
|
|
67
|
+
|
|
68
|
+
Works for both binary (`num_labels=1`) and multi-class (`num_labels>=2`) cross-encoders. Branches internally:
|
|
69
|
+
- `num_labels=1`: binary mode. Sweeps thresholds to report accuracy, F1, precision, recall, and **average_precision** (primary).
|
|
70
|
+
- `num_labels>=2`: multi-class mode (e.g. NLI: entailment / neutral / contradiction). Reports **f1_macro** (primary), f1_micro, f1_weighted, and per-class precision / recall.
|
|
71
|
+
|
|
72
|
+
```python
|
|
73
|
+
from sentence_transformers.cross_encoder.evaluation import CrossEncoderClassificationEvaluator
|
|
74
|
+
|
|
75
|
+
evaluator = CrossEncoderClassificationEvaluator(
|
|
76
|
+
sentence_pairs=[(premise, hypothesis), ...],
|
|
77
|
+
labels=[0, 1, 2, ...],
|
|
78
|
+
batch_size=64,
|
|
79
|
+
name="nli-dev",
|
|
80
|
+
)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Output keys (binary, `num_labels=1`): `eval_{name}_accuracy`, `eval_{name}_f1`, `eval_{name}_average_precision` (primary).
|
|
84
|
+
Output keys (multi-class, `num_labels>=2`): `eval_{name}_f1_macro` (primary), `eval_{name}_f1_micro`, `eval_{name}_f1_weighted`.
|
|
85
|
+
|
|
86
|
+
### `CrossEncoderCorrelationEvaluator`
|
|
87
|
+
|
|
88
|
+
For continuous-score cross-encoders (like an STS cross-encoder outputting a similarity score). Reports Pearson/Spearman vs. gold scores.
|
|
89
|
+
|
|
90
|
+
```python
|
|
91
|
+
from sentence_transformers.cross_encoder.evaluation import CrossEncoderCorrelationEvaluator
|
|
92
|
+
|
|
93
|
+
evaluator = CrossEncoderCorrelationEvaluator(
|
|
94
|
+
sentence_pairs=[(a, b), ...],
|
|
95
|
+
scores=[0.4, 0.8, ...],
|
|
96
|
+
name="stsb-dev",
|
|
97
|
+
)
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Output keys: `eval_{name}_spearman`, `eval_{name}_pearson`.
|
|
101
|
+
|
|
102
|
+
## Writing `metric_for_best_model`
|
|
103
|
+
|
|
104
|
+
Pattern: `f"eval_{evaluator.primary_metric}"`. Inspect after construction: `print(evaluator.primary_metric)`. Common values:
|
|
105
|
+
- `eval_NanoBEIR_R100_mean_ndcg@10`: `CrossEncoderNanoBEIREvaluator` default
|
|
106
|
+
- `eval_{name}_ndcg@10`: `CrossEncoderRerankingEvaluator`
|
|
107
|
+
- `eval_{name}_average_precision`: `CrossEncoderClassificationEvaluator` (binary, `num_labels=1`)
|
|
108
|
+
- `eval_{name}_f1_macro`: `CrossEncoderClassificationEvaluator` (multi-class, `num_labels>=2`)
|
|
109
|
+
- `eval_{name}_spearman`: `CrossEncoderCorrelationEvaluator`
|
|
110
|
+
|
|
111
|
+
## Gotchas
|
|
112
|
+
|
|
113
|
+
- **Always run `evaluator(model)` once before training**: pre-training baseline. Tiny post-training delta means the loss/data/base is wrong.
|
|
114
|
+
- `CrossEncoderClassificationEvaluator` accepts both `num_labels=1` (binary, primary `average_precision`) and `num_labels>=2` (multi-class, primary `f1_macro`). `CrossEncoderCorrelationEvaluator` requires `num_labels=1`.
|
|
115
|
+
- The default `dataset_names=None` excludes `arguana` and `touche2020` (Argument-Retrieval task differs from the rest). Pass `dataset_names=list(DATASET_NAME_TO_HUMAN_READABLE)` from `sentence_transformers.cross_encoder.evaluation.nano_beir` to actually run all 13.
|
|
116
|
+
- Subset NanoBEIR datasets during training (3-4) to keep eval cheap. Run the broader set post-training.
|
package/.agent/skills/train-sentence-transformers/references/evaluators_multi_vector_encoder.md
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Multi-Vector-Encoder Evaluators
|
|
2
|
+
|
|
3
|
+
All evaluators live in `sentence_transformers.multi_vector_encoder.evaluation`. They mirror the bi-encoder evaluators but use MaxSim scoring end-to-end.
|
|
4
|
+
|
|
5
|
+
## Top-line pick
|
|
6
|
+
|
|
7
|
+
| Task | Evaluator |
|
|
8
|
+
|---|---|
|
|
9
|
+
| Retrieval on a suite of common English IR benchmarks | `MultiVectorNanoBEIREvaluator` |
|
|
10
|
+
| Custom retrieval corpus (your own docs / queries / qrels) | `MultiVectorInformationRetrievalEvaluator` |
|
|
11
|
+
| Distillation from a cross-encoder teacher | `MultiVectorDistillationEvaluator` |
|
|
12
|
+
| Reranking a fixed candidate list per query | `MultiVectorRerankingEvaluator` |
|
|
13
|
+
| Triplet accuracy (does anchor score positive > negative?) | `MultiVectorTripletEvaluator` |
|
|
14
|
+
|
|
15
|
+
**Default recommendation for training**: `MultiVectorNanoBEIREvaluator` on a subset of NanoBEIR datasets (e.g. `["msmarco", "nq", "fiqa2018"]`) during training, and the full suite at end-of-run. Cheap, well-calibrated, and the metric key format is stable.
|
|
16
|
+
|
|
17
|
+
## `MultiVectorNanoBEIREvaluator`
|
|
18
|
+
|
|
19
|
+
Runs the 13 NanoBEIR sub-datasets and returns nDCG@10 averaged across them.
|
|
20
|
+
|
|
21
|
+
```python
|
|
22
|
+
from sentence_transformers.multi_vector_encoder.evaluation import MultiVectorNanoBEIREvaluator
|
|
23
|
+
|
|
24
|
+
evaluator = MultiVectorNanoBEIREvaluator(
|
|
25
|
+
dataset_names=["msmarco", "nq", "fiqa2018"], # subset for training-time evals
|
|
26
|
+
batch_size=16,
|
|
27
|
+
)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**primary_metric**: `"NanoBEIR_mean_maxsim_ndcg@10"` (unless you pass `aggregate_key="..."`, in which case it becomes `"NanoBEIR_{aggregate_key}_maxsim_ndcg@10"`). Note that `NanoBEIREvaluator` composes its display name from `aggregate_key` (and optionally `truncate_dim`), it does not accept a `name` kwarg.
|
|
31
|
+
|
|
32
|
+
**`metric_for_best_model` key**: `"eval_NanoBEIR_mean_maxsim_ndcg@10"` (add the `eval_` prefix, since Trainer adds it to evaluator metrics).
|
|
33
|
+
|
|
34
|
+
- `dataset_names`: list of NanoBEIR sub-datasets. Full list: `msmarco`, `nq`, `fiqa2018`, `hotpotqa`, `nfcorpus`, `arguana`, `scidocs`, `climatefever`, `dbpedia`, `fever`, `quoraretrieval`, `scifact`, `touche2020`. Note it is `quoraretrieval`, not `quora`: an invalid name raises at construction.
|
|
35
|
+
- `batch_size`: also drives corpus encoding, so scale to fit memory.
|
|
36
|
+
- English-only. For non-English retrieval, use `MultiVectorInformationRetrievalEvaluator` with your own corpus.
|
|
37
|
+
|
|
38
|
+
## `MultiVectorInformationRetrievalEvaluator`
|
|
39
|
+
|
|
40
|
+
Full IR evaluator over a corpus + queries + qrels you supply.
|
|
41
|
+
|
|
42
|
+
```python
|
|
43
|
+
from sentence_transformers.multi_vector_encoder.evaluation import MultiVectorInformationRetrievalEvaluator
|
|
44
|
+
|
|
45
|
+
evaluator = MultiVectorInformationRetrievalEvaluator(
|
|
46
|
+
queries={qid: text, ...}, # dict of query_id to query_text
|
|
47
|
+
corpus={did: text, ...}, # dict of doc_id to doc_text
|
|
48
|
+
relevant_docs={qid: {did1, did2, ...}, ...}, # qid to set of relevant doc_ids
|
|
49
|
+
batch_size=16,
|
|
50
|
+
name="my-eval", # optional, prefixes the metric key
|
|
51
|
+
write_csv=True, # persists per-eval metrics
|
|
52
|
+
ndcg_at_k=[10], # customize k-values if you need @20/@100 etc.
|
|
53
|
+
)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**primary_metric**: `"maxsim_ndcg@10"` by default (built from `score_function="maxsim"` and `max(ndcg_at_k)`).
|
|
57
|
+
|
|
58
|
+
**`metric_for_best_model` key** with `name="my-eval"`: `"eval_my-eval_maxsim_ndcg@10"`.
|
|
59
|
+
|
|
60
|
+
- `main_score_function` overrides the score used in `primary_metric` if you set a non-default. Default is `None`, which resolves to `maxsim` from the model's `similarity_fn_name` at call time. For MVE just leave it as `None`.
|
|
61
|
+
- Reports MRR@k, nDCG@k, Recall@k, Precision@k, MAP@k for the k-values you pass (`mrr_at_k`, `ndcg_at_k`, etc.).
|
|
62
|
+
- `chunk_elements` (default `None`) is the element budget for the padded `(chunk, d_tokens, dim)` documents plus the `(num_queries, chunk, q_tokens, d_tokens)` MaxSim scoring intermediate. Leave it as `None`: `maxsim` packs documents into chunks under a 100M-element budget (at most ~400 MB, half that in bf16 / fp16), adapting to the query count and document lengths. Lower it to cut evaluation memory further. It is a separate axis from `corpus_chunk_size`, which caps how many encoded documents are held at a time.
|
|
63
|
+
|
|
64
|
+
## `MultiVectorDistillationEvaluator`
|
|
65
|
+
|
|
66
|
+
Regression of student MaxSim scores against teacher scores over a held-out set of `(query, doc, teacher_score)` rows. Use it when you're distilling.
|
|
67
|
+
|
|
68
|
+
**primary_metric**: `"spearman"` (correlation of student scores with teacher scores).
|
|
69
|
+
|
|
70
|
+
**`metric_for_best_model` key** with `name="my-eval"`: `"eval_my-eval_spearman"`.
|
|
71
|
+
|
|
72
|
+
- Pair with `MultiVectorMarginMSELoss` or `MultiVectorDistillKLDivLoss` during training.
|
|
73
|
+
- Higher is better (student ranking matches teacher).
|
|
74
|
+
|
|
75
|
+
## `MultiVectorRerankingEvaluator`
|
|
76
|
+
|
|
77
|
+
Reranks a fixed list of candidates per query. Same shape as the bi-encoder `RerankingEvaluator`, MaxSim-scored.
|
|
78
|
+
|
|
79
|
+
- **Data**: `samples = [{"query": ..., "positive": [...], "negative": [...]} , ...]`.
|
|
80
|
+
- Reports MAP, MRR@10, nDCG@10 by default.
|
|
81
|
+
|
|
82
|
+
## `MultiVectorTripletEvaluator`
|
|
83
|
+
|
|
84
|
+
Fraction of `(anchor, positive, negative)` triplets where `sim(anchor, positive) > sim(anchor, negative)`. Cheap sanity signal, not what you want to gate a real IR release on.
|
|
85
|
+
|
|
86
|
+
## Named-evaluator metric key format (universal)
|
|
87
|
+
|
|
88
|
+
If you pass `name="..."` to any of these, the metric key format is:
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
eval_{name}_{primary_metric}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
If you don't pass `name`, the key is just `eval_{primary_metric}`. The trainer's `metric_for_best_model=...` must match exactly, or `load_best_model_at_end` selects the wrong checkpoint. **Run the evaluator once before training** to observe the exact key format: `primary_metric` is `None` until the first `evaluator(model)` call, which composes it from the resolved score function and the `ndcg_at_k` you passed, then prefixes `name`. The production template does exactly this before building `TrainingArguments`.
|
|
95
|
+
|
|
96
|
+
## Gotchas
|
|
97
|
+
|
|
98
|
+
- **Metric key mismatch on `metric_for_best_model`**: silent failure. Training runs to completion and `load_best_model_at_end` picks a stale checkpoint. Always print `evaluator(model)` output once before starting the trainer and confirm the key format.
|
|
99
|
+
- **Eval-time OOM**: MaxSim scoring builds `(num_queries, chunk, q_tokens, d_tokens)` intermediates, which `maxsim` bounds by default under its 100M-element budget. If you still OOM, lower `chunk_elements`, then drop `batch_size`. NanoBEIR corpora can be small enough that oversized `batch_size` bites before you'd expect.
|
|
100
|
+
- **`MultiVectorNanoBEIREvaluator` with a Non-English base**: it's English-only. You'll get zero or garbage scores. Use `MultiVectorInformationRetrievalEvaluator` with an in-domain corpus.
|
|
101
|
+
- **Distillation eval on the same data as training**: measures memorization, not generalization. Hold out a separate `(query, doc, teacher_score)` split.
|
package/.agent/skills/train-sentence-transformers/references/evaluators_sentence_transformer.md
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# Evaluators (Bi-Encoder)
|
|
2
|
+
|
|
3
|
+
All bi-encoder evaluators live in `sentence_transformers.sentence_transformer.evaluation`.
|
|
4
|
+
|
|
5
|
+
## Choosing the right evaluator
|
|
6
|
+
|
|
7
|
+
| Task | Evaluator |
|
|
8
|
+
|---|---|
|
|
9
|
+
| Retrieval (nDCG, MRR, Recall), fast default | `NanoBEIREvaluator` |
|
|
10
|
+
| Retrieval on your own corpus / qrels | `InformationRetrievalEvaluator` |
|
|
11
|
+
| STS / continuous similarity | `EmbeddingSimilarityEvaluator` |
|
|
12
|
+
| Binary classification | `BinaryClassificationEvaluator` |
|
|
13
|
+
| Triplet accuracy | `TripletEvaluator` |
|
|
14
|
+
| Reranking (from retrieval candidates) | `RerankingEvaluator` |
|
|
15
|
+
| MSE vs. teacher (distillation) | `MSEEvaluator`, `MSEEvaluatorFromDataFrame` |
|
|
16
|
+
| Paraphrase mining | `ParaphraseMiningEvaluator` |
|
|
17
|
+
| Translation (cross-lingual alignment) | `TranslationEvaluator` |
|
|
18
|
+
| Label accuracy (classification during training) | `LabelAccuracyEvaluator` |
|
|
19
|
+
|
|
20
|
+
Wrap multiple evaluators in `SequentialEvaluator` to track all of them together:
|
|
21
|
+
|
|
22
|
+
```python
|
|
23
|
+
from sentence_transformers.sentence_transformer.evaluation import SequentialEvaluator
|
|
24
|
+
evaluator = SequentialEvaluator([evaluator1, evaluator2, evaluator3])
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## The big three
|
|
28
|
+
|
|
29
|
+
### `NanoBEIREvaluator` (retrieval)
|
|
30
|
+
|
|
31
|
+
Small, fast subset of BEIR. Typically runs in <1 minute on a mid-range GPU. Default choice for retrieval training.
|
|
32
|
+
|
|
33
|
+
```python
|
|
34
|
+
from sentence_transformers.sentence_transformer.evaluation import NanoBEIREvaluator
|
|
35
|
+
|
|
36
|
+
evaluator = NanoBEIREvaluator(
|
|
37
|
+
dataset_names=["msmarco", "nfcorpus", "nq"], # default: all 13 NanoBEIR datasets
|
|
38
|
+
batch_size=128,
|
|
39
|
+
show_progress_bar=False,
|
|
40
|
+
)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
- Default dataset list covers 13 tasks. Pick a subset for speed during training.
|
|
44
|
+
- Output key for `metric_for_best_model`: **`eval_NanoBEIR_mean_cosine_ndcg@10`** (bi-encoder default = cosine similarity).
|
|
45
|
+
|
|
46
|
+
### `EmbeddingSimilarityEvaluator` (STS-style)
|
|
47
|
+
|
|
48
|
+
Computes Pearson/Spearman correlation between model cosine similarities and gold labels.
|
|
49
|
+
|
|
50
|
+
```python
|
|
51
|
+
from sentence_transformers.sentence_transformer.evaluation import EmbeddingSimilarityEvaluator
|
|
52
|
+
from sentence_transformers.util.similarity import SimilarityFunction
|
|
53
|
+
|
|
54
|
+
evaluator = EmbeddingSimilarityEvaluator(
|
|
55
|
+
sentences1=stsb["sentence1"],
|
|
56
|
+
sentences2=stsb["sentence2"],
|
|
57
|
+
scores=stsb["score"],
|
|
58
|
+
main_similarity=SimilarityFunction.COSINE,
|
|
59
|
+
name="sts-dev",
|
|
60
|
+
)
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
- `main_similarity` can be `COSINE`, `DOT_PRODUCT`, `EUCLIDEAN`, `MANHATTAN`.
|
|
64
|
+
- `name` is used in the output key: `eval_sts-dev_spearman_cosine`, `eval_sts-dev_pearson_cosine`, etc.
|
|
65
|
+
|
|
66
|
+
### `InformationRetrievalEvaluator` (full retrieval)
|
|
67
|
+
|
|
68
|
+
Use when you have your **own** corpus + queries + qrels (not one of the NanoBEIR tasks).
|
|
69
|
+
|
|
70
|
+
```python
|
|
71
|
+
from sentence_transformers.sentence_transformer.evaluation import InformationRetrievalEvaluator
|
|
72
|
+
|
|
73
|
+
evaluator = InformationRetrievalEvaluator(
|
|
74
|
+
queries={qid: query_text for qid, query_text in ...},
|
|
75
|
+
corpus={doc_id: doc_text for doc_id, doc_text in ...},
|
|
76
|
+
relevant_docs={qid: {doc_id, ...} for qid in ...}, # qid -> set of relevant doc_ids
|
|
77
|
+
name="my-retrieval",
|
|
78
|
+
mrr_at_k=[10],
|
|
79
|
+
ndcg_at_k=[10],
|
|
80
|
+
accuracy_at_k=[1, 5, 10],
|
|
81
|
+
precision_recall_at_k=[1, 5, 10],
|
|
82
|
+
map_at_k=[100],
|
|
83
|
+
show_progress_bar=False,
|
|
84
|
+
batch_size=64,
|
|
85
|
+
)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Output keys: `eval_{name}_cosine_ndcg@10`, `eval_{name}_cosine_mrr@10`, etc.
|
|
89
|
+
|
|
90
|
+
Heavy for large corpora: each eval encodes the full corpus. Don't run it every 100 steps. Use `NanoBEIREvaluator` for frequent evaluation during training and reserve full IR for milestones / post-training.
|
|
91
|
+
|
|
92
|
+
## Other bi-encoder evaluators
|
|
93
|
+
|
|
94
|
+
### `BinaryClassificationEvaluator`
|
|
95
|
+
|
|
96
|
+
For labeled pair classification (e.g. duplicate detection, entailment as binary). Reports accuracy, F1, precision/recall, AP. Supports all distance metrics. Finds the best threshold per metric.
|
|
97
|
+
|
|
98
|
+
### `TripletEvaluator`
|
|
99
|
+
|
|
100
|
+
For `(anchor, positive, negative)` triplets. Reports the fraction of triplets where the positive is closer to the anchor than the negative.
|
|
101
|
+
|
|
102
|
+
### `RerankingEvaluator`
|
|
103
|
+
|
|
104
|
+
For custom re-ranking datasets: you provide candidates per query, the evaluator computes MAP and MRR. Good for measuring retrieval-quality on a held-out set.
|
|
105
|
+
|
|
106
|
+
### `MSEEvaluator` / `MSEEvaluatorFromDataFrame`
|
|
107
|
+
|
|
108
|
+
For distillation setups. Compares student embeddings against teacher embeddings (or teacher scores), reports MSE.
|
|
109
|
+
|
|
110
|
+
### `ParaphraseMiningEvaluator`
|
|
111
|
+
|
|
112
|
+
For paraphrase-mining tasks. Given a corpus of labeled paraphrase pairs, computes mining quality (F1 at various thresholds).
|
|
113
|
+
|
|
114
|
+
### `TranslationEvaluator`
|
|
115
|
+
|
|
116
|
+
For cross-lingual / `make_multilingual`-style alignment checking. Measures whether the student aligns sentences across languages.
|
|
117
|
+
|
|
118
|
+
### `LabelAccuracyEvaluator`
|
|
119
|
+
|
|
120
|
+
For a `SoftmaxLoss`-trained classifier head. Reports accuracy on held-out data.
|
|
121
|
+
|
|
122
|
+
## Writing `metric_for_best_model`
|
|
123
|
+
|
|
124
|
+
Pattern: `f"eval_{evaluator.primary_metric}"`. Inspect after construction: `print(evaluator.primary_metric)`. Common values:
|
|
125
|
+
- `eval_NanoBEIR_mean_cosine_ndcg@10`: `NanoBEIREvaluator`
|
|
126
|
+
- `eval_sts-dev_spearman_cosine`: `EmbeddingSimilarityEvaluator(name="sts-dev")`
|
|
127
|
+
- `eval_{name}_cosine_ndcg@10`: `InformationRetrievalEvaluator(name=...)`
|
|
128
|
+
|
|
129
|
+
## Multi-dimensional evaluation (Matryoshka)
|
|
130
|
+
|
|
131
|
+
For Matryoshka-trained models, evaluate at each target dimension:
|
|
132
|
+
|
|
133
|
+
```python
|
|
134
|
+
per_dim_evaluators = [
|
|
135
|
+
EmbeddingSimilarityEvaluator(
|
|
136
|
+
sentences1=..., sentences2=..., scores=...,
|
|
137
|
+
main_similarity=SimilarityFunction.COSINE,
|
|
138
|
+
name=f"sts-dev-{dim}",
|
|
139
|
+
truncate_dim=dim,
|
|
140
|
+
) for dim in [768, 512, 256, 128, 64]
|
|
141
|
+
]
|
|
142
|
+
evaluator = SequentialEvaluator(per_dim_evaluators, main_score_function=lambda scores: scores[0])
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
The first evaluator's score drives `load_best_model_at_end`.
|
|
146
|
+
|
|
147
|
+
## Gotchas
|
|
148
|
+
|
|
149
|
+
- **Always run `evaluator(model)` once before training**: pre-training baseline. If the post-training delta is tiny, the loss/data/base is wrong.
|
|
150
|
+
- Don't run `InformationRetrievalEvaluator` with a large corpus (>100k docs) at frequent `eval_steps`. Use `NanoBEIREvaluator` during training, reserve full IR for end-of-training.
|
|
151
|
+
- `greater_is_better=True` is the default, right for nDCG / MRR / accuracy.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# Evaluators (Sparse Encoder)
|
|
2
|
+
|
|
3
|
+
All sparse-encoder evaluators live in `sentence_transformers.sparse_encoder.evaluation`. They mirror the bi-encoder versions with a `Sparse` prefix and default to **dot product** similarity (cosine on sparse vectors is less meaningful).
|
|
4
|
+
|
|
5
|
+
## Choosing the right evaluator
|
|
6
|
+
|
|
7
|
+
| Task | Evaluator |
|
|
8
|
+
|---|---|
|
|
9
|
+
| Retrieval (nDCG, MRR, Recall), fast default | `SparseNanoBEIREvaluator` |
|
|
10
|
+
| Retrieval on your own corpus / qrels | `SparseInformationRetrievalEvaluator` |
|
|
11
|
+
| STS / continuous similarity | `SparseEmbeddingSimilarityEvaluator` |
|
|
12
|
+
| Binary classification | `SparseBinaryClassificationEvaluator` |
|
|
13
|
+
| Triplet accuracy | `SparseTripletEvaluator` |
|
|
14
|
+
| Reranking (from retrieval candidates) | `SparseRerankingEvaluator` |
|
|
15
|
+
| MSE vs. teacher (distillation) | `SparseMSEEvaluator` |
|
|
16
|
+
| Translation (cross-lingual alignment) | `SparseTranslationEvaluator` |
|
|
17
|
+
| Hybrid BM25 + sparse retrieval | `ReciprocalRankFusionEvaluator` |
|
|
18
|
+
|
|
19
|
+
Wrap multiple in `SequentialEvaluator` (from `sentence_transformers.base.evaluation`):
|
|
20
|
+
|
|
21
|
+
```python
|
|
22
|
+
from sentence_transformers.base.evaluation import SequentialEvaluator
|
|
23
|
+
evaluator = SequentialEvaluator([sparse_nano_beir, my_custom_ir])
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## The default: `SparseNanoBEIREvaluator`
|
|
27
|
+
|
|
28
|
+
Small, fast subset of BEIR adapted for sparse retrieval. Typical runtime <1 minute on a mid-range GPU.
|
|
29
|
+
|
|
30
|
+
```python
|
|
31
|
+
from sentence_transformers.sparse_encoder.evaluation import SparseNanoBEIREvaluator
|
|
32
|
+
|
|
33
|
+
evaluator = SparseNanoBEIREvaluator(
|
|
34
|
+
dataset_names=["msmarco", "nfcorpus", "nq"], # default: all 13 NanoBEIR datasets
|
|
35
|
+
batch_size=32,
|
|
36
|
+
show_progress_bar=False,
|
|
37
|
+
)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Output key for `metric_for_best_model`: **`eval_NanoBEIR_mean_dot_ndcg@10`** (sparse defaults to dot product).
|
|
41
|
+
|
|
42
|
+
### Sparsity tracking
|
|
43
|
+
|
|
44
|
+
Unlike the dense variant, the sparse evaluator also reports **active dimension counts** so you can monitor sparsity during training:
|
|
45
|
+
|
|
46
|
+
- `query_active_dims`: non-zero entries per query vector
|
|
47
|
+
- `document_active_dims`: non-zero entries per document vector
|
|
48
|
+
|
|
49
|
+
A healthy SPLADE checkpoint typically shows ~30-50 active dims for queries and ~150-250 for documents. If these drift toward the vocab size (~30k), the FLOPS regularization isn't doing its job. Raise `query_regularizer_weight` / `document_regularizer_weight` in `SpladeLoss`.
|
|
50
|
+
|
|
51
|
+
## Retrieval on your own corpus
|
|
52
|
+
|
|
53
|
+
### `SparseInformationRetrievalEvaluator`
|
|
54
|
+
|
|
55
|
+
Same shape as the dense version but operates on sparse vectors internally:
|
|
56
|
+
|
|
57
|
+
```python
|
|
58
|
+
from sentence_transformers.sparse_encoder.evaluation import SparseInformationRetrievalEvaluator
|
|
59
|
+
|
|
60
|
+
evaluator = SparseInformationRetrievalEvaluator(
|
|
61
|
+
queries={qid: text for qid, text in ...},
|
|
62
|
+
corpus={doc_id: text for doc_id, text in ...},
|
|
63
|
+
relevant_docs={qid: {doc_id, ...} for qid in ...},
|
|
64
|
+
name="my-sparse-ir",
|
|
65
|
+
ndcg_at_k=[10],
|
|
66
|
+
mrr_at_k=[10],
|
|
67
|
+
accuracy_at_k=[1, 5, 10],
|
|
68
|
+
map_at_k=[100],
|
|
69
|
+
batch_size=32,
|
|
70
|
+
)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Output keys: `eval_{name}_dot_ndcg@10`, `eval_{name}_dot_mrr@10`, etc. Also reports active-dims.
|
|
74
|
+
|
|
75
|
+
Heavy for large corpora. Use `SparseNanoBEIREvaluator` during training. Reserve full IR for post-training.
|
|
76
|
+
|
|
77
|
+
## Hybrid retrieval
|
|
78
|
+
|
|
79
|
+
### `ReciprocalRankFusionEvaluator`
|
|
80
|
+
|
|
81
|
+
Measures the performance of combining your sparse encoder with BM25 (or any other retriever) via reciprocal-rank fusion. Useful when shipping a hybrid system is the actual deployment target.
|
|
82
|
+
|
|
83
|
+
## Other sparse evaluators
|
|
84
|
+
|
|
85
|
+
### `SparseEmbeddingSimilarityEvaluator`
|
|
86
|
+
|
|
87
|
+
STS-style. Computes Pearson/Spearman between sparse vector similarities and gold labels. Uses dot product by default.
|
|
88
|
+
|
|
89
|
+
### `SparseBinaryClassificationEvaluator`
|
|
90
|
+
|
|
91
|
+
For labeled pair classification with sparse embeddings.
|
|
92
|
+
|
|
93
|
+
### `SparseTripletEvaluator`
|
|
94
|
+
|
|
95
|
+
For `(anchor, positive, negative)` triplets. Reports fraction where the positive is closer than the negative (by dot product).
|
|
96
|
+
|
|
97
|
+
### `SparseRerankingEvaluator`
|
|
98
|
+
|
|
99
|
+
For custom re-ranking with sparse embeddings. Same semantics as the dense `RerankingEvaluator`.
|
|
100
|
+
|
|
101
|
+
### `SparseMSEEvaluator`
|
|
102
|
+
|
|
103
|
+
For distillation setups. Compares sparse student embeddings against teacher outputs.
|
|
104
|
+
|
|
105
|
+
### `SparseTranslationEvaluator`
|
|
106
|
+
|
|
107
|
+
For cross-lingual / `make_multilingual`-style alignment checking with sparse embeddings.
|
|
108
|
+
|
|
109
|
+
## Writing `metric_for_best_model`
|
|
110
|
+
|
|
111
|
+
Pattern: `f"eval_{evaluator.primary_metric}"`. Inspect after construction: `print(evaluator.primary_metric)`. Common values:
|
|
112
|
+
- `eval_NanoBEIR_mean_dot_ndcg@10`: `SparseNanoBEIREvaluator` default
|
|
113
|
+
- `eval_{name}_dot_ndcg@10`: `SparseInformationRetrievalEvaluator`
|
|
114
|
+
- `eval_{name}_spearman_dot`: `SparseEmbeddingSimilarityEvaluator`
|
|
115
|
+
|
|
116
|
+
## Gotchas
|
|
117
|
+
|
|
118
|
+
- **Always run `evaluator(model)` once before training**. This confirms the pipeline works (a fill-mask base scores ~0 on retrieval until trained).
|
|
119
|
+
- Sparse evaluators default to dot product. Cosine on sparse vectors isn't meaningful.
|
|
120
|
+
- Don't compare dense and sparse metrics directly: different scales (cosine ∈ [-1, 1] vs. dot ∈ [0, ∞)).
|
|
121
|
+
- Always check `query_active_dims` / `document_active_dims`: thousands of active dims per doc means the FLOPS regularizer is mistuned, even if nDCG looks OK.
|