circuitkit 0.1.10__tar.gz → 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {circuitkit-0.1.10 → circuitkit-0.2.0}/.github/workflows/patch-release.yml +7 -5
- {circuitkit-0.1.10/src/circuitkit.egg-info → circuitkit-0.2.0}/PKG-INFO +32 -7
- {circuitkit-0.1.10 → circuitkit-0.2.0}/README.md +29 -6
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/API_REFERENCE.md +4 -3
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/about/faq.md +2 -2
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/advanced/architecture-registry.md +17 -2
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/advanced/experimental-models.md +136 -22
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/advanced/memory-optimization.md +8 -8
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/advanced/tiny-aya.md +9 -4
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/algorithms/acdc.md +7 -6
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/algorithms/capability-matrix.md +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/algorithms/eap.md +6 -5
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/algorithms/overview.md +2 -2
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/api-reference/dict-config.md +4 -4
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/api-reference/evaluation.md +3 -3
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/api-reference/flat-api.md +3 -3
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/api-reference/pipeline.md +2 -2
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/api-reference/tasks.md +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/cli/applications.md +14 -2
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/cli/discovery.md +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/cli/overview.md +2 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/cli/yaml-config.md +4 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/contributing/new-algorithms.md +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/contributing/standards.md +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/evaluation/framework.md +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/evaluation/stability.md +12 -10
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/examples/scripts.md +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/getting-started/configuration.md +2 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/guidelines/Testing_Guidelines.md +3 -3
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/guides/eap_ig_memory_optimization.md +2 -2
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/index.md +1 -0
- circuitkit-0.2.0/docs/reference/hyperparameters.md +143 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/reference/index.md +1 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/user-guide/evaluation.md +4 -2
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/user-guide/pipeline-overview.md +2 -2
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/user-guide/troubleshooting.md +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/01-quickstart.py +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/02-discover-python-api.py +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/04-discover-yaml.py +2 -2
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/05-evaluate-faithfulness.py +2 -2
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/06-applications.py +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/07-pipeline.py +2 -2
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/08-custom-data.py +3 -3
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/09-load-and-reuse.py +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/10-steering.py +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/13-transfer-matrix.py +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/case-studies/15-compression-for-deployment.py +2 -2
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/case-studies/19-trade-finance-document-classification.py +2 -2
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/case-studies/20-transit-edge-deployment.py +2 -2
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/case-studies/24-safety-refusal-custom-data.py +4 -4
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/discovery/benchmark-circuit-discovery.py +2 -2
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/pruning/basic-prune.py +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/pruning/prune-llama.py +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/pruning/prune-qwen.py +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/pyproject.toml +9 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/__init__.py +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/api.py +4 -4
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/arch_registry.py +9 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/pruning/examples/prune.py +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/pruning/examples/prune_llama.py +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/pruning/examples/prune_qwen.py +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/pruning/pruner.py +6 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/pruning/score_extractor.py +2 -2
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/quantization/examples/quantize_llama.py +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/quantization/examples/quantize_qwen.py +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/quantization/score_extractor.py +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/steering/steering_enhanced.py +7 -4
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/_tl_compat/cohere.py +18 -11
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/eap/attribute.py +10 -8
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/eap/attribute_node.py +10 -8
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/cli/config.py +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/cli/main.py +96 -17
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/checkpoint_benchmark.py +7 -7
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/full.py +14 -23
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/hf_checkpoint.py +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/pillars/stability.py +2 -2
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/stability_discovery.py +3 -3
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/pipeline.py +16 -7
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/quick.py +39 -11
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/selection/eap_selector.py +2 -2
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/utils/config.py +31 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/utils/device.py +5 -2
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/utils/exceptions.py +13 -4
- circuitkit-0.2.0/src/circuitkit/utils/hparams.py +780 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/utils/memory.py +29 -7
- {circuitkit-0.1.10 → circuitkit-0.2.0/src/circuitkit.egg-info}/PKG-INFO +32 -7
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit.egg-info/SOURCES.txt +10 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/tl_compat/test_aya_expanse.py +4 -1
- circuitkit-0.2.0/tests/backends/tl_compat/test_aya_expanse_32b.py +403 -0
- circuitkit-0.2.0/tests/backends/tl_compat/test_aya_expanse_32b_parity.py +456 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/conftest.py +14 -10
- circuitkit-0.2.0/tests/regression/test_aya_expanse_32b_discovery.py +266 -0
- circuitkit-0.2.0/tests/regression/test_aya_expanse_32b_evaluation.py +114 -0
- circuitkit-0.2.0/tests/regression/test_aya_expanse_32b_interventions.py +268 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/release/test_release.py +34 -2
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/test_packaging.py +1 -1
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_api.py +32 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_cli_commands.py +99 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_config_defaults.py +47 -0
- circuitkit-0.2.0/tests/unit/test_exceptions.py +48 -0
- circuitkit-0.2.0/tests/unit/test_expandable_segments.py +84 -0
- circuitkit-0.2.0/tests/unit/test_hparams.py +493 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_init_exports.py +4 -5
- circuitkit-0.2.0/tests/unit/test_optimize_memory_usage.py +93 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_pillars.py +9 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_pipeline_unit.py +38 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_quick_api.py +99 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_structural_pruner.py +23 -0
- circuitkit-0.1.10/tests/unit/test_optimize_memory_usage.py +0 -50
- {circuitkit-0.1.10 → circuitkit-0.2.0}/.github/workflows/docs.yml +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/.github/workflows/test.yml +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/.github/workflows/version-consistency.yml +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/LICENSE.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/MANIFEST.in +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/INSTALLATION.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/about/license.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/about/release-notes.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/about/roadmap.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/advanced/chat-templates.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/advanced/circuit-artifacts.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/advanced/hallucination-detection.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/advanced/vllm-evaluation.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/algorithms/cdt.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/algorithms/ibcircuit.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/algorithms/stability-tiers.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/api-reference/applications.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/api-reference/backends.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/api-reference/overview.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/api-reference/selectors.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/blog/introducing-circuitkit.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/citation-map.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/cli/evaluation.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/contributing/documentation.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/contributing/setup.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/contributing/testing-on-cuda.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/dev_enterprise_runbook.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/evaluation/ablation.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/evaluation/baselines.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/evaluation/benchmarking.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/evaluation/causal-patching.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/evaluation/generalization.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/evaluation/robustness.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/examples/case-studies.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/examples/notebooks.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/examples/overview.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/getting-started/core-concepts.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/getting-started/index.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/getting-started/installation.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/getting-started/quickstart.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/getting-started/taxonomy.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/guides/CONCEPTS.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/guides/circuit_artifact_guide.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/guides/hallucination_detection_guide.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/guides/index.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/guides/steering.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/guides/vllm_evaluation.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/product_blueprint.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/pypi_core_contract.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/reference/ARCHITECTURE_REGISTRY.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/reference/FEATURES.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/references.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/trust/index.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/trust/results.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/trust/scope.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/user-guide/applications.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/user-guide/custom-data.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/user-guide/data-corruption.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/user-guide/data.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/user-guide/selectors.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/user-guide/tasks.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/docs/user-guide/visualization.md +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/11-knowledge-editing.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/12-custom-corruption.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/case-studies/14-faithfulness-audit-for-compliance.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/case-studies/16-tabular-model-audit.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/case-studies/17-quantization-unlearning.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/case-studies/18-banking-safety-steering.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/case-studies/21-quantization-permanent-unlearning.ipynb +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/case-studies/22-gender-bias-audit-and-mitigation.ipynb +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/case-studies/23-jailbreak-refusal-multi-model.ipynb +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/discovery/algorithm-comparison.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/experiments/e1_algo_validation_ioi.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/experiments/e2_cross_family_discovery.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/experiments/e3_neuron_level_ioi.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/experiments/e4_custom_data_jailbreak.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/experiments/e567_downstream_applications.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/finetuning/finetune-llama.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/finetuning/finetune-qwen.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/notebooks/00_colab_setup.ipynb +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/notebooks/01_quickstart_pipeline.ipynb +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/notebooks/02_algorithm_comparison.ipynb +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/notebooks/03_evaluation_deep_dive.ipynb +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/notebooks/04_visualization_gallery.ipynb +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/notebooks/05_applications.ipynb +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/notebooks/06_cli_and_yaml.ipynb +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/notebooks/07_advanced_research_tools.ipynb +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/quantization/quantize-llama.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/quantization/quantize-qwen.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/simple_csv_task.yaml +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/_common.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/_runner.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/algos/01_eap_ig_activations_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/algos/02_eap_clean_corrupted_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/algos/03_eap_exact_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/algos/04_compare_eap_family_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/algos/05_atp_gd_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/algos/06_eap_gp_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/algos/07_relp_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/algos/08_ibcircuit_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/algos/09_peap_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/algos/10_cdt_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/algos/11_eap_ifr_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/algos/12_all_algos_llama.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/algos/_algos_common.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/01_pruning_gpt2_ioi.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/02_lora_healing_gpt2_ioi.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/03_pruning_gpt2_mmlu.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/04_pruning_gpt2_gender_bias.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/05_pruning_gpt2_sva.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/06_pruning_gpt2_capital_country.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/07_pruning_gpt2_boolq.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/08_pruning_gpt2_arc_easy.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/09_pruning_gpt2_hellaswag.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/10_pruning_gpt2_crows_pairs.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/11_knowledge_editing_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/12_unlearning_tofu_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/13_steering_gpt2_ioi.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/14_linear_probe_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/15_hallucination_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/16_peft_benchmark.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/17_knowledge_editing_full_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/18_steering_safety_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/19_quantization_llama1b.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/20_ctheta_steering_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/21_ctheta_steering_llama1b.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/22_ctheta_advbench_refusal.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/23_ctheta_k_grid_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/24_circuitkit_advbench_refusal_steering.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/25_knowledge_editing_llama_circuit.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/26_soft_healing_llama_circuit.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/27_hallucination_truthfulqa_llama.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/28_safety_dataset_pillar_evals.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/_apps_common.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/applications/_make_apps_cell.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/01_gpt2_ioi.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/02_gpt2_greater_than.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/03_llama1b_ioi.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/04_llama1b_greater_than.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/05_gpt2_mmlu.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/06_llama1b_mmlu.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/07_gpt2_gender_bias.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/08_gpt2_hypernymy.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/09_gpt2_sva.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/10_gpt2_capital_country.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/11_gpt2_boolq.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/12_gpt2_wmdp.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/13_gpt2_arc_easy.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/14_gpt2_arc_challenge.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/15_gpt2_hellaswag.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/16_gpt2_crows_pairs.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/17_gpt2_tofu.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/18_gpt2_gsm8k.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/99_aggregate.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/_bench_common.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/_custom_tasks.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/benchmark/_make_cell.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/data/01_pairwise_crowspairs.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/data/02_instruction_alpaca.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/data/03_conversational_sharegpt.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/data/04_mcq_mmlu_arc_hellaswag.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/data/05_forget_retain_tofu.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/data/06_strategies_all.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/data/07_e2e_discovery_mcq_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/data/08_e2e_discovery_tofu_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/data/09_e2e_discovery_crowspairs_llama1b.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/data/10_e2e_quality_stability_mcq_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/data/11_e2e_all_algos_custom_mcq_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/data/12_e2e_safety_advbench_gpt2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/data/_data_common.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/master_aggregator.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/visualizations/01_circuit_graph.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/visualizations/02_activation_saliency.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/visualizations/03_feature_saliency.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/visualizations/04_circuit_editor.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/visualizations/05_comparison_dashboard.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/visualizations/06_jupyter_widgets.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/visualizations/07_gallery_generator.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/visualizations/08_plotter.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/visualizations/09_eap_visualization.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/visualizations/10_acdc_visualize.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/validation/visualizations/11_transfer_visualizer.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/examples/visualization/graph-viz-example.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/pytest.ini +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/requirements.txt +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/setup.cfg +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/__main__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/_tl_patches/0001-moe-dtype-and-devices-fixes.patch +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/_tl_patches/0002-gemma4.patch +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/_tl_patches/0003-sarvam-moe.patch +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/_tl_patches/0004-gemma4-hf-parity.patch +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/_tl_patches/0005-memory-no-weight-copies.patch +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/_tl_patches/0006-cohere.patch +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/_tl_patches/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/analysis/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/analysis/cross_method_jaccard.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/analysis/metrics.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/analysis/scores.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/arch_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/common_utils/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/common_utils/_covariance.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/common_utils/_device.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/common_utils/_metrics.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/common_utils/_tokenization.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/common_utils/benchmark_analysis.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/common_utils/cure_clue.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/common_utils/hallucination_detection.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/common_utils/linear_probe.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/editing/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/editing/cake.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/editing/circuit_guided_editing.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/editing/fine_tune_editing.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/editing/knowledge_editing.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/editing/knowledge_editing_enhanced.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/editing/mcircke.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/editing/memit_wrapper.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/editing/rome_wrapper.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/finetuning/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/finetuning/benchmark_peft.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/finetuning/circuit_tuning.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/finetuning/healing_metrics.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/finetuning/peft_methods.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/finetuning/soft_healing.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/pruning/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/pruning/eval_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/pruning/examples/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/pruning/finetune_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/pruning/importance.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/pruning/neuron_pruner.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/pruning/node_pruner.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/pruning/selectors/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/pruning/selectors/multi_granular_selector.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/pruning/selectors/taylor_selector.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/pruning/weight_pruner.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/quantization/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/quantization/examples/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/quantization/llmcompressor_quantize.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/quantization/quant_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/quantization/selectors/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/quantization/selectors/awq_selector.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/quantization/selectors/tacq_selector.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/selective_finetuning/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/selective_finetuning/examples/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/selective_finetuning/examples/finetune_llama.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/selective_finetuning/examples/finetune_qwen.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/selective_finetuning/finetune_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/selective_finetuning/score_loader.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/selective_finetuning/selector.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/steering/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/steering/steering.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/applications/steering/weight_steering.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/artifacts/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/artifacts/circuit_artifact.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/artifacts/converters.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/artifacts/scores.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/_tl_compat/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/_tl_compat/registry.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/_tl_compat/smollm3.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/artifact_export.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/data.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/model_utils/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/model_utils/micro_model_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/model_utils/transformer_lens_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/prune.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/prune_algos/ACDC.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/prune_algos/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/prune_algos/mask_gradient.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/prune_algos/prune_algos.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/tasks/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/tasks/docstring_prompts.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/tasks/docstring_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/tasks/induction_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/tasks/ioi_dataset.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/tasks/ioi_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/types.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/utils/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/utils/ablation_activations.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/utils/custom_tqdm.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/utils/graph_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/utils/misc.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/utils/patch_wrapper.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/utils/patchable_model.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/utils/task_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/utils/tensor_ops.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/acdc/visualize.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/cdt/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/cdt/adapter.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/cdt/propagation.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/cdt/pyfunctions/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/cdt/pyfunctions/cdt_ablations.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/cdt/pyfunctions/cdt_basic.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/cdt/pyfunctions/cdt_core.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/cdt/pyfunctions/cdt_from_source_nodes.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/cdt/pyfunctions/cdt_source_to_target.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/cdt/pyfunctions/faithfulness_ablations.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/cdt/pyfunctions/general.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/cdt/pyfunctions/ioi_dataset.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/cdt/pyfunctions/local_importance.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/cdt/pyfunctions/pathology.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/cdt/pyfunctions/toy_model.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/cdt/pyfunctions/wrappers.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/eap/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/eap/artifact_export.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/eap/circuit_kit_adapter.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/eap/eap_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/eap/evaluate.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/eap/graph.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/eap/metrics.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/eap/py.typed +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/eap/visualization.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/ibcircuit/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/ibcircuit/artifact_export.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/ibcircuit/ib_noise.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/ibcircuit/ib_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/ibcircuit/model_wrapper.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/backends/ibcircuit/trainer.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/benchmarks/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/benchmarks/baselines/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/benchmarks/baselines/gptq.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/benchmarks/baselines/magnitude.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/benchmarks/baselines/random.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/benchmarks/baselines/sparsegpt.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/benchmarks/baselines/wanda.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/benchmarks/benchmark.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/benchmarks/reporting.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/circuit.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/cli/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/cli/debug.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/cli/utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/corruption/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/corruption/base.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/corruption/color_swap.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/corruption/distractor.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/corruption/distractor_variation.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/corruption/effectiveness.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/corruption/entity_swap.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/corruption/negation.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/corruption/paraphrase.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/corruption/pipeline.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/corruption/position_shift.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/corruption/role_swap.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/corruption/token_swap.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/corruption/validators.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/corruption/voice_swap.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/adapters/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/adapters/base.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/adapters/code.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/adapters/conversational.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/adapters/forget_retain.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/adapters/instruction.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/adapters/math.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/adapters/mcq.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/adapters/pairwise.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/adapters/qa.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/adapters/safety_prompt.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/auto_detect.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/clean_only.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/corruption/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/corruption/base.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/corruption/benign_rewrite.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/corruption/code_syntax_corrupt.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/corruption/entity_swap.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/corruption/final_answer_swap.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/corruption/instruction_swap.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/corruption/llm_counterfactual.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/corruption/logical_negation.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/corruption/math_step_corrupt.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/corruption/mcq_choice_swap.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/corruption/operand_swap.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/corruption/profession_swap.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/corruption/resample.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/corruption/template.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/corruption/template_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/corruption/token_swap.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/dataset_schema.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/eap_dataset.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/invariance_groups/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/invariance_groups/builder.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/invariance_groups/schema.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/normalized.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/normalized_task.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/core/TLACDCCorrespondence.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/core/TLACDCEdge.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/core/TLACDCExperiment.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/core/TLACDCInterpNode.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/core/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/core/acdc_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/generation/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/generation/cache.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/generation/manager.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/generation/utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/storage/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/storage/greaterthan/greaterthan_32_ffd33106.json +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/storage/ioi/ioi_16_8c879ddb.json +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/storage/ioi/ioi_32_a432ca4a.json +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/storage/ioi/ioi_500_1f7e7324.json +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/storage/ioi/ioi_64_3bba747e.json +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/storage/ioi/ioi_64_f4a164db.json +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/storage/ioi/ioi_8_e87df42e.json +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/binary_align/generate_binary_align.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/binary_align/jailbreak_binary.csv +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/binary_align/safe_binary.csv +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/capital_country/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/capital_country/utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/docstring/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/docstring/prompts.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/docstring/utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/double_io/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/double_io/double_io_dataset.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/gender_bias/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/gender_bias/utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/gender_bias/utils2.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/greaterthan/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/greaterthan/utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/hypernymy/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/hypernymy/utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/induction/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/induction/utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/ioi/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/ioi/ioi_dataset.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/ioi/utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/sva/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/sva/utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/task_data/tasks/wmdp/wmdp_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/template.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/wikitext_calibration.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/data/worthiness.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/evaluate.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/intervention_faithfulness.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/lm_eval_simple.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/lm_harness.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/master_grid.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/mmlu_eval.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/pillars/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/pillars/ablation.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/pillars/baselines.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/pillars/causal_patching.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/pillars/generalization.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/pillars/intervention_reliability.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/pillars/robustness.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/report.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/reports/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/reports/aggregator.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/reports/robustness_report.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/reports/stability_report.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/transfer.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/transfer_analysis.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/transfer_visualizer.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/evaluation/weight_based_eval.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/provenance.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/selection/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/selection/cdt_selector.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/selection/eap_gp_selector.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/selection/gptq_selector.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/selection/ibcircuit_selector.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/selection/magnitude_selector.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/selection/random_selector.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/selection/relp_selector.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/selection/wanda_selector.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/_algorithm_families.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/_chat.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/auto_schema.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/bootstrap.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/builtins/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/builtins/boolq.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/builtins/capital_country.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/builtins/double_io.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/builtins/gender_bias.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/builtins/glue.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/builtins/greater_than.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/builtins/gsm8k.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/builtins/hypernymy.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/builtins/ifeval.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/builtins/ioi.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/builtins/ioi_acdc.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/builtins/ioi_legacy.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/builtins/mmlu.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/builtins/sva.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/builtins/truthfulqa.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/builtins/winogrande.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/builtins/winogrande_mc.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/builtins/wmdp.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/generic.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/hf_factory.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/inspect.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/registry.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/safety_datasets.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/specs.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/type_specs/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/type_specs/classification_spec.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/type_specs/generation_spec.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/type_specs/mcq_spec.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/type_specs/qa_spec.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/type_specs/summarization_spec.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/type_specs/translation_spec.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/validator.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tasks/yaml_loader.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tooling/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/tooling/validate_environment.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/utils/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/utils/artifacts.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/utils/async_processing.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/utils/bootstrap.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/utils/corruption_validation.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/utils/dataset_cache.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/utils/debug.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/utils/debugging.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/utils/distributed.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/utils/logging.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/utils/profiling.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/utils/token_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/visualize/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/visualize/comparison.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/visualize/d3_template.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/visualize/editor.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/visualize/feature_saliency.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/visualize/gallery.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/visualize/graph_viz.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/visualize/jupyter_suite.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/visualize/plotter.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/visualize/saliency.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/visualize/streamlit_app.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit/visualize/theme.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit.egg-info/dependency_links.txt +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit.egg-info/entry_points.txt +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit.egg-info/requires.txt +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/src/circuitkit.egg-info/top_level.txt +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/apply/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/apply/conftest.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/apply/test_architecture_registry.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/apply/test_benchmark_analysis.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/apply/test_benchmark_peft.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/apply/test_circuit_artifact.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/apply/test_covariance.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/apply/test_cross_architecture.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/apply/test_fine_tune_editing.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/apply/test_hallucination_detection.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/apply/test_knowledge_editing.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/apply/test_knowledge_editing_enhanced.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/apply/test_knowledge_editing_pipeline.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/apply/test_linear_probe.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/apply/test_peft_methods.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/apply/test_pruner.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/apply/test_steering.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/apply/test_steering_enhanced.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/apply/test_tokenization.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/apply/test_weight_steering.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/ibcircuit/test_ib_noise.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/ibcircuit/test_ib_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/ibcircuit/test_model_wrapper.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/ibcircuit/test_trainer.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/test_artifact_export_integration.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/tl_compat/test_aya_expanse_parity.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/tl_compat/test_cohere.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/tl_compat/test_cohere_backends.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/tl_compat/test_cohere_gqa.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/tl_compat/test_cohere_parity.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/tl_compat/test_cohere_selectors.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/tl_compat/test_cohere_wiring.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/tl_compat/test_command_r7b.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/tl_compat/test_command_r7b_parity.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/tl_compat/test_smollm3.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/tl_compat/test_smollm3_parity.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/tl_patches/configs/Ministral-3-3B-Instruct-2512.json +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/tl_patches/configs/gemma-4-31B-it.json +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/tl_patches/configs/sarvam-30b.json +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/tl_patches/test_patch_hook.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/backends/tl_patches/test_tl_patchset.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/benchmarks/test_baselines.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/benchmarks/test_benchmark.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/corruption/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/corruption/test_distractor.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/corruption/test_effectiveness.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/corruption/test_entity_swap.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/corruption/test_new_corruptions.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/corruption/test_paraphrase.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/corruption/test_pipeline.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/corruption/test_pipeline_integration_ioi.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/corruption/test_practical_examples.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/corruption/test_role_swap.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/corruption/test_strategies_integration.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/corruption/test_strategies_standalone.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/corruption/test_template.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/corruption/test_template_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/corruption/test_token_swap.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/corruption/test_validators.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/corruption/test_yaml_strategy_synthesis.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/data/test_data_corruption_strategies.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/data/test_qa_adapter.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/fixtures/sample_pipeline.yaml +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/integration/test_chat_template_instruct.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/integration/test_interfaces_e2e.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/integration/test_soft_healing_integration.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/integration/test_steering_ioi.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/integration/test_template_e2e.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/integration/test_tl3_interop.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/integration/test_transfer_integration.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/integration/test_transfer_matrix.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/integration/test_transfer_minimal.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/integration/test_yaml_run_advanced.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/regression/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/regression/test_aya_expanse_discovery.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/regression/test_aya_expanse_evaluation.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/regression/test_aya_expanse_interventions.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/regression/test_cdt_nonzero_scores.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/regression/test_circuit_tuner_training.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/regression/test_cli_and_api_args.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/regression/test_cohere_discovery.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/regression/test_cohere_evaluation.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/regression/test_cohere_interventions.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/regression/test_command_r7b_discovery.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/regression/test_command_r7b_evaluation.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/regression/test_command_r7b_interventions.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/regression/test_data_adapters_and_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/regression/test_greater_than_tokenizer.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/regression/test_pruner_gqa_kv_head.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/regression/test_smollm3_discovery.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/regression/test_smollm3_evaluation.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/regression/test_smollm3_interventions.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/regression/test_steering_and_baselines.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/tasks/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/tasks/test_auto_schema.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/tasks/test_capital_country.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/tasks/test_chat_template.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/tasks/test_cohere_tokenization.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/tasks/test_generic_task.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/tasks/test_glue.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/tasks/test_greater_than_corruption.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/tasks/test_gsm8k.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/tasks/test_ioi_regression.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/tasks/test_validator.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/tasks/test_winogrande.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/tasks/test_winogrande_mc.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/test_custom_data.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/test_environment.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/conftest.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/sample_pipeline.yaml +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_attribute.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_attribute_node.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_baselines_multidraw.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_bootstrap.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_circuit.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_circuit_kit_adapter.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_circuit_scores.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_cli.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_cli_smoke.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_d3_lod.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_d5_d7_import.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_device_allocator.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_double_io.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_eap_grad_scope.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_end_to_end.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_evaluate.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_extended_schema.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_finetune_utils.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_graph.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_graph_viz.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_graph_viz_bounded.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_hf_checkpoint.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_instruction_swap_audit.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_mean_activations.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_mlp1.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_modules_exist.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_multi_token_answers.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_multi_token_unit.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_neuron_pruner.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_no_regressions.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_node_pruner.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_normalized_task.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_perplexity_metric.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_pillar_baseline_reuse.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_pipeline_benchmark_offload.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_pipeline_smoke.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_qkv_memory_guard.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_quantize_export_flow.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_quick_extensions.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_r2_effect_magnitude.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_ranking_metrics.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_report.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_score_loader.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_security_hardening.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_selector.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_selector_bugs.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_selector_registry.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_soft_healing.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_stability_robustness_reports.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_steering.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_taylor_grad_scope.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_tokenize_batch_pair_max_length.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_tokenize_warning_throttle.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_trust_remote_code.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_validators_direct.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_yaml_pipeline_config.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/unit/test_yaml_run_cli.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/visualize/__init__.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/visualize/test_comparison.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/visualize/test_editor.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/visualize/test_feature_saliency.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/visualize/test_gallery.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/visualize/test_jupyter_suite.py +0 -0
- {circuitkit-0.1.10 → circuitkit-0.2.0}/tests/visualize/test_saliency.py +0 -0
|
@@ -71,9 +71,11 @@ jobs:
|
|
|
71
71
|
latest_version=$(python -c \
|
|
72
72
|
'import json,sys; print(json.load(open(sys.argv[1]))["tag_name"])' \
|
|
73
73
|
"$latest_response")
|
|
74
|
+
# the code's own version when it is ahead of the latest release (a deliberate bump,
|
|
75
|
+
# e.g. 0.2.0 after 0.1.10); otherwise the next patch of the latest release
|
|
74
76
|
requested_version=$(python -c \
|
|
75
|
-
'import sys; from scripts.release import
|
|
76
|
-
"$latest_version")
|
|
77
|
+
'import sys; from scripts.release import release_version; print(release_version(sys.argv[1], sys.argv[2]))' \
|
|
78
|
+
"$current_version" "$latest_version")
|
|
77
79
|
|
|
78
80
|
if git show-ref --verify --quiet "refs/tags/$latest_version"; then
|
|
79
81
|
latest_commit=$(git rev-list -n 1 "$latest_version")
|
|
@@ -106,7 +108,7 @@ jobs:
|
|
|
106
108
|
version_tree=$(mktemp -d)
|
|
107
109
|
mkdir -p "$version_tree/src/circuitkit" "$version_tree/scripts"
|
|
108
110
|
cp scripts/release.py "$version_tree/scripts/release.py"
|
|
109
|
-
for version_file in
|
|
111
|
+
for version_file in src/circuitkit/__init__.py CITATION.cff; do
|
|
110
112
|
git show "$requested_version:$version_file" > "$version_tree/$version_file"
|
|
111
113
|
done
|
|
112
114
|
if ! (cd "$version_tree" && python scripts/release.py validate-version "$requested_version"); then
|
|
@@ -216,7 +218,7 @@ jobs:
|
|
|
216
218
|
current_version=$(python scripts/release.py current-version)
|
|
217
219
|
if [[ "$current_version" != "$RELEASE_TAG" ]]; then
|
|
218
220
|
python scripts/release.py set-version "$RELEASE_TAG"
|
|
219
|
-
expected_files=$'CITATION.cff\
|
|
221
|
+
expected_files=$'CITATION.cff\nsrc/circuitkit/__init__.py'
|
|
220
222
|
actual_files=$(git diff --name-only | sort)
|
|
221
223
|
if [[ "$actual_files" != "$expected_files" ]]; then
|
|
222
224
|
echo "::error::Version helper changed files outside the authoritative version set."
|
|
@@ -224,7 +226,7 @@ jobs:
|
|
|
224
226
|
fi
|
|
225
227
|
git config user.name github-actions[bot]
|
|
226
228
|
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
|
|
227
|
-
git add CITATION.cff
|
|
229
|
+
git add CITATION.cff src/circuitkit/__init__.py
|
|
228
230
|
git commit -m "Release $RELEASE_TAG"
|
|
229
231
|
fi
|
|
230
232
|
python scripts/release.py validate-version "$RELEASE_TAG"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: circuitkit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Unified Discover, Evaluate, Intervene toolkit for mechanistic interpretability: 13 circuit discovery algorithms, 6-pillar faithfulness evaluation, and pruning / quantization / knowledge editing / unlearning / activation steering / contrastive weight steering interventions behind one API.
|
|
5
5
|
Author: Hem Gosalia, Aditya Kasliwal, Vinay Kumar Sankarapu
|
|
6
6
|
Author-email: Pratinav Seth <pratinav.seth@lexsi.ai>
|
|
@@ -12,6 +12,8 @@ Project-URL: Repository, https://github.com/Lexsi-Labs/circuitkit
|
|
|
12
12
|
Project-URL: Bug Tracker, https://github.com/Lexsi-Labs/circuitkit/issues
|
|
13
13
|
Project-URL: Changelog, https://github.com/Lexsi-Labs/circuitkit/blob/main/CHANGELOG.md
|
|
14
14
|
Project-URL: Contributing, https://github.com/Lexsi-Labs/circuitkit/blob/main/CONTRIBUTING.md
|
|
15
|
+
Project-URL: Discord, https://discord.gg/MhVUGVYE8q
|
|
16
|
+
Project-URL: Lexsi Labs, https://lexsi.ai
|
|
15
17
|
Keywords: mechanistic-interpretability,circuit-discovery,transformers,neural-networks,attention-analysis,model-pruning,faithfulness-evaluation,auto-schema,corruption-robustness,knowledge-editing,model-visualization
|
|
16
18
|
Classifier: Development Status :: 5 - Production/Stable
|
|
17
19
|
Classifier: Intended Audience :: Science/Research
|
|
@@ -108,6 +110,15 @@ Dynamic: license-file
|
|
|
108
110
|
<a href="https://circuitkit.lexsi.ai/"><img src="https://img.shields.io/badge/docs-mkdocs%20material-FF4B0A.svg" alt="Docs"></a>
|
|
109
111
|
</p>
|
|
110
112
|
|
|
113
|
+
<p align="center">
|
|
114
|
+
<a href="https://discord.gg/MhVUGVYE8q"><img src="https://img.shields.io/badge/Discord-Join-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
|
|
115
|
+
<a href="https://github.com/Lexsi-Labs"><img src="https://img.shields.io/badge/GitHub-Lexsi--Labs-171515?logo=github&logoColor=white" alt="Lexsi Labs on GitHub"></a>
|
|
116
|
+
<a href="https://x.com/Lexsi_labs"><img src="https://img.shields.io/badge/X-Follow-000000?logo=x&logoColor=white" alt="Follow on X"></a>
|
|
117
|
+
<a href="https://www.linkedin.com/company/lexsi-labs/"><img src="https://img.shields.io/badge/LinkedIn-Lexsi%20Labs-0A66C2?logo=linkedin&logoColor=white" alt="Lexsi Labs on LinkedIn"></a>
|
|
118
|
+
<a href="https://huggingface.co/Lexsi"><img src="https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Lexsi-FFD21E" alt="Lexsi on Hugging Face"></a>
|
|
119
|
+
<a href="https://lexsi.ai"><img src="https://img.shields.io/badge/Website-lexsi.ai-FF4B0A.svg" alt="lexsi.ai"></a>
|
|
120
|
+
</p>
|
|
121
|
+
|
|
111
122
|
---
|
|
112
123
|
|
|
113
124
|
CircuitKIT is a framework for mechanistic interpretability. Given a model and a task, it discovers the circuit driving that behaviour, evaluates how faithful it is, and lets you act on it (prune, quantize, edit, steer, or fine-tune), then export a reloadable HuggingFace checkpoint.
|
|
@@ -180,19 +191,33 @@ A **circuit** is the minimal set of attention heads and MLP layers in a transfor
|
|
|
180
191
|
|
|
181
192
|
Production support covers Llama-3, Gemma/Gemma-3, Qwen, Mistral, Phi, Falcon,
|
|
182
193
|
and GPT-2 (see [Architecture Registry](https://circuitkit.lexsi.ai/advanced/architecture-registry/)).
|
|
183
|
-
CircuitKIT also supports
|
|
184
|
-
TransformerLens doesn't natively support
|
|
185
|
-
|
|
194
|
+
CircuitKIT also supports five cohere-family and Llama-family models that
|
|
195
|
+
TransformerLens doesn't natively support. Four of them (Tiny Aya, Command
|
|
196
|
+
R7B, Aya Expanse 8B, SmolLM3-3B) are validated across all three surfaces —
|
|
197
|
+
discovery, evaluation, and interventions. The fifth, Aya Expanse 32B, is
|
|
198
|
+
registered, parity-validated (truncated depth), and checked for pruning and
|
|
199
|
+
quantization module resolution (see below):
|
|
186
200
|
|
|
187
201
|
| Model | Arch | HF repo |
|
|
188
202
|
|---|---|---|
|
|
189
203
|
| Tiny Aya | `cohere2` | `CohereLabs/tiny-aya-*` (gated) |
|
|
190
204
|
| Command R7B | `cohere2` | `CohereLabs/c4ai-command-r7b-12-2024` |
|
|
191
205
|
| Aya Expanse 8B | `cohere1` | `CohereLabs/aya-expanse-8b` |
|
|
206
|
+
| Aya Expanse 32B | `cohere1` | `CohereLabs/aya-expanse-32b` |
|
|
192
207
|
| SmolLM3-3B | `smollm3` | `HuggingFaceTB/SmolLM3-3B` |
|
|
193
208
|
|
|
194
|
-
All
|
|
195
|
-
|
|
209
|
+
All of them except Aya Expanse 32B support
|
|
210
|
+
discovery (5/6 stable algorithms plus parity), faithfulness evaluation, and
|
|
211
|
+
interventions (pruning, quant resolution, steering), validated on real
|
|
212
|
+
weights. **Aya Expanse 32B** is registered, with config conversion checked
|
|
213
|
+
against the real checkpoint (truncated-depth parity) and module resolution
|
|
214
|
+
for pruning scores and quantization targets checked on the full checkpoint.
|
|
215
|
+
Full-depth parity, discovery, evaluation and weight steering do not run yet:
|
|
216
|
+
the full 40-layer model needs about 64 GiB for weights alone, so it does not
|
|
217
|
+
fit on most single GPUs, and transformer-lens 3.8.0's multi-GPU (`n_devices`)
|
|
218
|
+
block placement is broken. See
|
|
219
|
+
[Experimental Models](https://circuitkit.lexsi.ai/advanced/experimental-models/)
|
|
220
|
+
for what was and wasn't validated, and the details of the transformer-lens bug.
|
|
196
221
|
|
|
197
222
|
Two caveats on that support. `acdc` is excluded from the standard gate as
|
|
198
223
|
impractically slow on 3–8B models — its test lives behind an opt-in flag — so
|
|
@@ -206,7 +231,7 @@ TransformerLens ports; this is not a claim of end-to-end CircuitKIT support.
|
|
|
206
231
|
Their hardware and Sarvam loading requirements are documented in
|
|
207
232
|
[Experimental Models](https://github.com/Lexsi-Labs/CircuitKIT/blob/main/docs/advanced/experimental-models.md#gemma-4-and-sarvam-moe-discovery-only-transformerlens-ports).
|
|
208
233
|
|
|
209
|
-
All
|
|
234
|
+
All five are **experimental** — see [Tiny Aya](https://circuitkit.lexsi.ai/advanced/tiny-aya/)
|
|
210
235
|
and [Experimental Models](https://circuitkit.lexsi.ai/advanced/experimental-models/)
|
|
211
236
|
for architecture details, config mapping, and the full opt-in test matrix.
|
|
212
237
|
Aya Expanse and Tiny Aya also load from local checkpoint directories and
|
|
@@ -20,6 +20,15 @@
|
|
|
20
20
|
<a href="https://circuitkit.lexsi.ai/"><img src="https://img.shields.io/badge/docs-mkdocs%20material-FF4B0A.svg" alt="Docs"></a>
|
|
21
21
|
</p>
|
|
22
22
|
|
|
23
|
+
<p align="center">
|
|
24
|
+
<a href="https://discord.gg/MhVUGVYE8q"><img src="https://img.shields.io/badge/Discord-Join-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
|
|
25
|
+
<a href="https://github.com/Lexsi-Labs"><img src="https://img.shields.io/badge/GitHub-Lexsi--Labs-171515?logo=github&logoColor=white" alt="Lexsi Labs on GitHub"></a>
|
|
26
|
+
<a href="https://x.com/Lexsi_labs"><img src="https://img.shields.io/badge/X-Follow-000000?logo=x&logoColor=white" alt="Follow on X"></a>
|
|
27
|
+
<a href="https://www.linkedin.com/company/lexsi-labs/"><img src="https://img.shields.io/badge/LinkedIn-Lexsi%20Labs-0A66C2?logo=linkedin&logoColor=white" alt="Lexsi Labs on LinkedIn"></a>
|
|
28
|
+
<a href="https://huggingface.co/Lexsi"><img src="https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Lexsi-FFD21E" alt="Lexsi on Hugging Face"></a>
|
|
29
|
+
<a href="https://lexsi.ai"><img src="https://img.shields.io/badge/Website-lexsi.ai-FF4B0A.svg" alt="lexsi.ai"></a>
|
|
30
|
+
</p>
|
|
31
|
+
|
|
23
32
|
---
|
|
24
33
|
|
|
25
34
|
CircuitKIT is a framework for mechanistic interpretability. Given a model and a task, it discovers the circuit driving that behaviour, evaluates how faithful it is, and lets you act on it (prune, quantize, edit, steer, or fine-tune), then export a reloadable HuggingFace checkpoint.
|
|
@@ -92,19 +101,33 @@ A **circuit** is the minimal set of attention heads and MLP layers in a transfor
|
|
|
92
101
|
|
|
93
102
|
Production support covers Llama-3, Gemma/Gemma-3, Qwen, Mistral, Phi, Falcon,
|
|
94
103
|
and GPT-2 (see [Architecture Registry](https://circuitkit.lexsi.ai/advanced/architecture-registry/)).
|
|
95
|
-
CircuitKIT also supports
|
|
96
|
-
TransformerLens doesn't natively support
|
|
97
|
-
|
|
104
|
+
CircuitKIT also supports five cohere-family and Llama-family models that
|
|
105
|
+
TransformerLens doesn't natively support. Four of them (Tiny Aya, Command
|
|
106
|
+
R7B, Aya Expanse 8B, SmolLM3-3B) are validated across all three surfaces —
|
|
107
|
+
discovery, evaluation, and interventions. The fifth, Aya Expanse 32B, is
|
|
108
|
+
registered, parity-validated (truncated depth), and checked for pruning and
|
|
109
|
+
quantization module resolution (see below):
|
|
98
110
|
|
|
99
111
|
| Model | Arch | HF repo |
|
|
100
112
|
|---|---|---|
|
|
101
113
|
| Tiny Aya | `cohere2` | `CohereLabs/tiny-aya-*` (gated) |
|
|
102
114
|
| Command R7B | `cohere2` | `CohereLabs/c4ai-command-r7b-12-2024` |
|
|
103
115
|
| Aya Expanse 8B | `cohere1` | `CohereLabs/aya-expanse-8b` |
|
|
116
|
+
| Aya Expanse 32B | `cohere1` | `CohereLabs/aya-expanse-32b` |
|
|
104
117
|
| SmolLM3-3B | `smollm3` | `HuggingFaceTB/SmolLM3-3B` |
|
|
105
118
|
|
|
106
|
-
All
|
|
107
|
-
|
|
119
|
+
All of them except Aya Expanse 32B support
|
|
120
|
+
discovery (5/6 stable algorithms plus parity), faithfulness evaluation, and
|
|
121
|
+
interventions (pruning, quant resolution, steering), validated on real
|
|
122
|
+
weights. **Aya Expanse 32B** is registered, with config conversion checked
|
|
123
|
+
against the real checkpoint (truncated-depth parity) and module resolution
|
|
124
|
+
for pruning scores and quantization targets checked on the full checkpoint.
|
|
125
|
+
Full-depth parity, discovery, evaluation and weight steering do not run yet:
|
|
126
|
+
the full 40-layer model needs about 64 GiB for weights alone, so it does not
|
|
127
|
+
fit on most single GPUs, and transformer-lens 3.8.0's multi-GPU (`n_devices`)
|
|
128
|
+
block placement is broken. See
|
|
129
|
+
[Experimental Models](https://circuitkit.lexsi.ai/advanced/experimental-models/)
|
|
130
|
+
for what was and wasn't validated, and the details of the transformer-lens bug.
|
|
108
131
|
|
|
109
132
|
Two caveats on that support. `acdc` is excluded from the standard gate as
|
|
110
133
|
impractically slow on 3–8B models — its test lives behind an opt-in flag — so
|
|
@@ -118,7 +141,7 @@ TransformerLens ports; this is not a claim of end-to-end CircuitKIT support.
|
|
|
118
141
|
Their hardware and Sarvam loading requirements are documented in
|
|
119
142
|
[Experimental Models](https://github.com/Lexsi-Labs/CircuitKIT/blob/main/docs/advanced/experimental-models.md#gemma-4-and-sarvam-moe-discovery-only-transformerlens-ports).
|
|
120
143
|
|
|
121
|
-
All
|
|
144
|
+
All five are **experimental** — see [Tiny Aya](https://circuitkit.lexsi.ai/advanced/tiny-aya/)
|
|
122
145
|
and [Experimental Models](https://circuitkit.lexsi.ai/advanced/experimental-models/)
|
|
123
146
|
for architecture details, config mapping, and the full opt-in test matrix.
|
|
124
147
|
Aya Expanse and Tiny Aya also load from local checkpoint directories and
|
|
@@ -175,9 +175,10 @@ Orchestrates the pillars end-to-end, ordered by cost (fast pillars first).
|
|
|
175
175
|
|
|
176
176
|
Key parameters:
|
|
177
177
|
|
|
178
|
-
- `pillars` (List[str], optional): Subset to run. Default: all of
|
|
179
|
-
`["patching", "ablation", "baselines", "robustness", "stability", "generalization", "intervention_reliability"]
|
|
180
|
-
|
|
178
|
+
- `pillars` (List[str], optional): Subset to run. Default of this low-level function: all of
|
|
179
|
+
`["patching", "ablation", "baselines", "robustness", "stability", "generalization", "intervention_reliability"]`
|
|
180
|
+
(`Pipeline.evaluate` and `ck.faithfulness` default to `["patching", "ablation"]`).
|
|
181
|
+
- `n_stability_runs` (int): Discovery runs for Pillar 3. Default 3.
|
|
181
182
|
- `n_reliability_seeds` (int): Seeds for the optional intervention-reliability pillar.
|
|
182
183
|
Default 3.
|
|
183
184
|
- `target_task_spec` / `target_dataloader`: Required for Pillar 6; if omitted, Pillar 6
|
|
@@ -22,7 +22,7 @@ The six Stable-tier discovery algorithms (`eap`, `eap-ig`, `eap-gp`, `acdc`, `ib
|
|
|
22
22
|
|
|
23
23
|
**Which algorithm should I use?**
|
|
24
24
|
|
|
25
|
-
Start with `eap-ig` (the default). It is the most accurate stable algorithm. For speed over accuracy, use `eap`. For memory-constrained settings,
|
|
25
|
+
Start with `eap-ig` (the default). It is the most accurate stable algorithm. For speed over accuracy, use `eap`. For memory-constrained settings, lower `batch_size` first (`ig_steps` already defaults to 3). See [Algorithm Selection Guide](../algorithms/overview.md).
|
|
26
26
|
|
|
27
27
|
**How many examples do I need?**
|
|
28
28
|
|
|
@@ -74,7 +74,7 @@ Production: `llama`, `qwen`, `gemma`. Ready: `mistral`, `phi`, `falcon`, `gpt2`.
|
|
|
74
74
|
|
|
75
75
|
**How do I reduce memory usage for large models?**
|
|
76
76
|
|
|
77
|
-
Set `model.precision="bfloat16"`, `
|
|
77
|
+
Set `model.precision="bfloat16"`, `batch_size=1`, and lower `n_examples` (`ig_steps` already defaults to 3). Measured against the previous defaults (`ig_steps=5`, `batch_size=4`, 128 examples), the combination reduced peak VRAM by about 80%. There is no `memory_efficient` or `use_half_precision_activations` config key — those are not read anywhere in the discovery backend. See [Memory Optimization](../advanced/memory-optimization.md).
|
|
78
78
|
|
|
79
79
|
**How long does discovery take?**
|
|
80
80
|
|
|
@@ -16,10 +16,25 @@ CircuitKIT's **architecture registry** provides a unified interface for pruning
|
|
|
16
16
|
| `phi` | Ready | `microsoft/Phi-3-mini-4k-instruct` |
|
|
17
17
|
| `falcon` | Ready | `tiiuae/falcon-7b` |
|
|
18
18
|
| `gpt2` | Ready | `gpt2`, `gpt2-xl` |
|
|
19
|
-
| `cohere` | Experimental | `CohereLabs/tiny-aya-base`, `CohereLabs/c4ai-command-r7b-12-2024` (`cohere2`); `CohereLabs/aya-expanse-8b` (`cohere1`) |
|
|
19
|
+
| `cohere` | Experimental | `CohereLabs/tiny-aya-base`, `CohereLabs/c4ai-command-r7b-12-2024` (`cohere2`); `CohereLabs/aya-expanse-8b`, `CohereLabs/aya-expanse-32b` (`cohere1`) |
|
|
20
20
|
| `smollm3` | Experimental | `HuggingFaceTB/SmolLM3-3B` |
|
|
21
21
|
|
|
22
|
-
**Production** = validated in the CircuitKIT paper audit. **Ready** = registry entry exists, high confidence, not in the audit. **Experimental** = discovery, evaluation, and interventions supported via the circuitkit TransformerLens port (`circuitkit.backends._tl_compat`), validated on real weights (see below for exactly what "validated" means for each surface). The `cohere` family now covers
|
|
22
|
+
**Production** = validated in the CircuitKIT paper audit. **Ready** = registry entry exists, high confidence, not in the audit. **Experimental** = discovery, evaluation, and interventions supported via the circuitkit TransformerLens port (`circuitkit.backends._tl_compat`), validated on real weights (see below for exactly what "validated" means for each surface — Aya Expanse 32B is a partial exception, noted below). The `cohere` family now covers four checkpoints across two HF architectures — Tiny Aya and Command R7B (`Cohere2ForCausalLM`, `model_type="cohere2"`) and Aya Expanse 8B / 32B (`CohereForCausalLM`, `model_type="cohere"`) — sharing one weight converter and one registry entry, since the pruning/quantization/steering module layout (`self_attn.{q,k,v,o}_proj`, `mlp.{gate,up,down}_proj`) is identical across all four. `smollm3` is a separate, Llama-shaped family (new in this stage). See [Tiny Aya (Cohere2)](tiny-aya.md) and [Experimental Models](experimental-models.md).
|
|
23
|
+
|
|
24
|
+
**Aya Expanse 32B is only partially validated.** Registration, real-weight
|
|
25
|
+
config conversion (at a truncated depth), and — of the registry-entry
|
|
26
|
+
resolution this page documents — **pruning score extraction and
|
|
27
|
+
quantization pattern matching** are confirmed on the real 32B checkpoint;
|
|
28
|
+
see [Experimental Models](experimental-models.md#tests) for the actual
|
|
29
|
+
numbers. **Weight-steering slices** have not: weight steering needs the
|
|
30
|
+
full 40-layer model loaded through TransformerLens, which needs about
|
|
31
|
+
64 GiB for weights alone and so multi-GPU (`n_devices`) loading, and that
|
|
32
|
+
is broken in transformer-lens==3.8.0. See the warning in
|
|
33
|
+
[Experimental Models](experimental-models.md#tests) for the mechanism.
|
|
34
|
+
Everywhere below that says "all four real loaded
|
|
35
|
+
models" for the `cohere` family, that means Tiny Aya, Command R7B, Aya
|
|
36
|
+
Expanse 8B and SmolLM3-3B — Aya Expanse 32B's coverage is pruning and
|
|
37
|
+
quantization only, not weight steering.
|
|
23
38
|
|
|
24
39
|
### Two honest caveats (apply to `cohere` and `smollm3` alike)
|
|
25
40
|
|
|
@@ -13,9 +13,20 @@ rotary (NoPE) policy. Three more model families now ride that seam:
|
|
|
13
13
|
| [Tiny Aya](tiny-aya.md) | `Cohere2ForCausalLM` | `cohere2` | `_tl_compat/cohere.py` |
|
|
14
14
|
| **Command R7B** | `Cohere2ForCausalLM` | `cohere2` | `_tl_compat/cohere.py` |
|
|
15
15
|
| **Aya Expanse 8B** | `CohereForCausalLM` | `cohere` | `_tl_compat/cohere.py` |
|
|
16
|
+
| **Aya Expanse 32B** | `CohereForCausalLM` | `cohere` | `_tl_compat/cohere.py` |
|
|
16
17
|
| **SmolLM3-3B** | `SmolLM3ForCausalLM` | `smollm3` | `_tl_compat/smollm3.py` |
|
|
17
18
|
|
|
18
|
-
|
|
19
|
+
Aya Expanse 32B shares Aya Expanse 8B's config/weight converter unchanged —
|
|
20
|
+
registration, real-weight config conversion, and **module resolution for
|
|
21
|
+
pruning score extraction and quantization targets** are validated on the real
|
|
22
|
+
checkpoint (see [Tests](#tests)).
|
|
23
|
+
Full-depth bf16 parity, discovery, evaluation, and weight steering do
|
|
24
|
+
**not** run yet. A loaded TransformerLens copy needs about 64 GiB for
|
|
25
|
+
weights alone, so it does not fit on most single GPUs, and multi-GPU
|
|
26
|
+
loading through `n_devices` is affected by a bug in transformer-lens==3.8.0
|
|
27
|
+
(see the warning in [Tests](#tests)). The other four
|
|
28
|
+
models on this page are **experimental** discovery/evaluation/intervention
|
|
29
|
+
targets:
|
|
19
30
|
TransformerLens 3.8.0 has no native support for any of `cohere`, `cohere2`, or
|
|
20
31
|
`smollm3`; the port adds it additively, at import time, with every patch
|
|
21
32
|
falling through to stock TL for any other architecture. Command R7B and Aya
|
|
@@ -56,31 +67,42 @@ support.
|
|
|
56
67
|
|
|
57
68
|
- `CohereLabs/c4ai-command-r7b-12-2024` (Command R7B, `cohere2`)
|
|
58
69
|
- `CohereLabs/aya-expanse-8b` (Aya Expanse 8B, `cohere1`/`cohere`)
|
|
70
|
+
- `CohereLabs/aya-expanse-32b` (Aya Expanse 32B, `cohere1`/`cohere`) —
|
|
71
|
+
registration, config conversion, truncated-depth parity and pruning /
|
|
72
|
+
quantization module resolution validated on real weights; full-depth
|
|
73
|
+
parity, discovery, evaluation and weight steering do not run yet (see
|
|
74
|
+
[Tests](#tests))
|
|
59
75
|
- `HuggingFaceTB/SmolLM3-3B` (SmolLM3-3B, `smollm3`)
|
|
60
76
|
|
|
61
77
|
---
|
|
62
78
|
|
|
63
79
|
## Architecture at a glance
|
|
64
80
|
|
|
65
|
-
| Property | Command R7B | Aya Expanse 8B | SmolLM3-3B |
|
|
66
|
-
|
|
67
|
-
| HF architecture | `Cohere2ForCausalLM` | `CohereForCausalLM` | `SmolLM3ForCausalLM` |
|
|
68
|
-
| Params | ~7B | ~8B | ~3B |
|
|
69
|
-
| `d_model` / layers | 4096 / 32 | 4096 / 32 | 2048 / 36 |
|
|
70
|
-
| Query / KV heads | 32 / 8 (GQA) | 32 / 8 (GQA) | 16 / 4 (GQA) |
|
|
71
|
-
| `d_head` | 128 | 128 | 128 |
|
|
72
|
-
| `d_mlp` (gated SiLU) | 14336 | 14336 | 11008 |
|
|
73
|
-
| Normalization | LayerNorm (bias-less) | LayerNorm (bias-less) | **RMSNorm** |
|
|
74
|
-
| Block topology | **parallel** attn+MLP, one input LN | **parallel** attn+MLP, one input LN | **sequential** (standard Llama) |
|
|
75
|
-
| RoPE style | GPT-J interleaved (`rotary_adjacent_pairs=True`) | interleaved (`rotary_adjacent_pairs=True`) | **standard Llama**, non-interleaved (`rotary_adjacent_pairs=False`) |
|
|
76
|
-
| `rope_theta` | 50000 | 10000 | 5000000 |
|
|
77
|
-
| Attention pattern | **sliding-window (4096) ⨯ full**, interleaved | all full attention | all full attention |
|
|
78
|
-
| NoPE (no rotary) layers | full-attention layers | **none** — rotary everywhere | **per-layer**, driven by config's `no_rope_layers` (every 4th layer on the real checkpoint) |
|
|
79
|
-
| `logit_scale` | 0.25 (real fold) | 0.125 (real fold) | none (no post-multiply at all) |
|
|
80
|
-
| Tied embeddings | yes | yes | yes |
|
|
81
|
-
| Vocab | 256000 | 256000 | 128256 |
|
|
82
|
-
| Max position embeddings (real ckpt) | 132096 (preserved) | 8192 | 65536 (preserved) |
|
|
83
|
-
|
|
|
81
|
+
| Property | Command R7B | Aya Expanse 8B | Aya Expanse 32B | SmolLM3-3B |
|
|
82
|
+
|---|---|---|---|---|
|
|
83
|
+
| HF architecture | `Cohere2ForCausalLM` | `CohereForCausalLM` | `CohereForCausalLM` | `SmolLM3ForCausalLM` |
|
|
84
|
+
| Params | ~7B | ~8B | ~32B | ~3B |
|
|
85
|
+
| `d_model` / layers | 4096 / 32 | 4096 / 32 | 8192 / 40 | 2048 / 36 |
|
|
86
|
+
| Query / KV heads | 32 / 8 (GQA, 4:1) | 32 / 8 (GQA, 4:1) | 64 / 8 (GQA, **8:1**) | 16 / 4 (GQA) |
|
|
87
|
+
| `d_head` | 128 | 128 | 128 (not an explicit config field; `hidden_size // n_heads`) | 128 |
|
|
88
|
+
| `d_mlp` (gated SiLU) | 14336 | 14336 | 24576 | 11008 |
|
|
89
|
+
| Normalization | LayerNorm (bias-less) | LayerNorm (bias-less) | LayerNorm (bias-less) | **RMSNorm** |
|
|
90
|
+
| Block topology | **parallel** attn+MLP, one input LN | **parallel** attn+MLP, one input LN | **parallel** attn+MLP, one input LN | **sequential** (standard Llama) |
|
|
91
|
+
| RoPE style | GPT-J interleaved (`rotary_adjacent_pairs=True`) | interleaved (`rotary_adjacent_pairs=True`) | interleaved (`rotary_adjacent_pairs=True`) | **standard Llama**, non-interleaved (`rotary_adjacent_pairs=False`) |
|
|
92
|
+
| `rope_theta` | 50000 | 10000 | **4,000,000** | 5000000 |
|
|
93
|
+
| Attention pattern | **sliding-window (4096) ⨯ full**, interleaved | all full attention | all full attention | all full attention |
|
|
94
|
+
| NoPE (no rotary) layers | full-attention layers | **none** — rotary everywhere | **none** — rotary everywhere | **per-layer**, driven by config's `no_rope_layers` (every 4th layer on the real checkpoint) |
|
|
95
|
+
| `logit_scale` | 0.25 (real fold) | 0.125 (real fold) | **0.0625** (real fold) | none (no post-multiply at all) |
|
|
96
|
+
| Tied embeddings | yes | yes | yes | yes |
|
|
97
|
+
| Vocab | 256000 | 256000 | 256000 | 128256 |
|
|
98
|
+
| Max position embeddings (real ckpt) | 132096 (preserved) | 8192 | 8192 | 65536 (preserved) |
|
|
99
|
+
| Checkpoint size | — | ~15 GiB (fp16, 4 shards) | ~60.2 GiB (fp16, 14 shards) | — |
|
|
100
|
+
| Gated on the Hub? | `gated=auto` (license click-through) | `gated=auto` (license click-through) | `gated=auto` (license click-through) | fully public |
|
|
101
|
+
|
|
102
|
+
Aya Expanse 32B's tokenizer is byte-identical to 8B's (confirmed via
|
|
103
|
+
`tokenizer.json` SHA-256, both starting `c69a7ea6c0927dfa`), so the existing
|
|
104
|
+
single-token task guards (`greater_than`'s own operand pool, `ioi`'s name
|
|
105
|
+
check) behave the same way they do for 8B.
|
|
84
106
|
|
|
85
107
|
For reference, [Tiny Aya](tiny-aya.md) is 36 layers / `d_model=2048` / 16:4
|
|
86
108
|
GQA heads / `d_mlp=11008`, the same `cohere2` shape as Command R7B but with
|
|
@@ -145,6 +167,14 @@ explicit `head_dim`, so this is a separate function rather than a branch):
|
|
|
145
167
|
| `logit_scale=0.125` | folded into `unembed.W_U` |
|
|
146
168
|
| `use_qk_norm=True` (unused today) | raises `NotImplementedError` — the weight converter has no q/k-norm conversion path |
|
|
147
169
|
|
|
170
|
+
**Aya Expanse 32B** uses the exact same `_convert_cohere1_config` function
|
|
171
|
+
and `convert_cohere2_weights` weight converter as 8B — no new code, only a
|
|
172
|
+
second repo ID in `AYA_EXPANSE_MODEL_NAMES`. Only the config *values* differ:
|
|
173
|
+
`rope_theta=4,000,000`, `logit_scale=0.0625`, 64/8 GQA heads, `d_mlp=24576`,
|
|
174
|
+
40 layers. Validated on real weights at a truncated depth (see
|
|
175
|
+
[Tests](#tests)); the mapping table above is identical in structure to 8B's,
|
|
176
|
+
just with 32B's numbers.
|
|
177
|
+
|
|
148
178
|
**SmolLM3-3B** — a new Llama-family mapping, via `_convert_smollm3_config`:
|
|
149
179
|
|
|
150
180
|
| HF / spec | TL `HookedTransformerConfig` |
|
|
@@ -245,6 +275,10 @@ Offline unit tests (no network, no GPU, no gated weights) run in ordinary CI:
|
|
|
245
275
|
- `tests/backends/tl_compat/test_aya_expanse.py` — registration, the cohere1
|
|
246
276
|
config converter (no sliding window / `attn_types`, `head_dim` fallback,
|
|
247
277
|
`use_qk_norm` guard), rotary-everywhere NoPE policy.
|
|
278
|
+
- `tests/backends/tl_compat/test_aya_expanse_32b.py` — the same coverage at
|
|
279
|
+
32B's real spec (40 layers, 8:1 GQA, `rope_theta=4e6`, `logit_scale=0.0625`),
|
|
280
|
+
plus a tiny random HF model built with those specific values matching
|
|
281
|
+
HookedTransformer logits to 1e-5.
|
|
248
282
|
- `tests/backends/tl_compat/test_smollm3.py` (41 cases) — registration,
|
|
249
283
|
config/weight conversion, **per-layer NoPE** (`TestSmolLM3PerLayerNoPE`,
|
|
250
284
|
parametrized across NoPE and non-NoPE layer indices) and
|
|
@@ -287,6 +321,62 @@ CIRCUITKIT_RUN_AYA_EXPANSE=1 CIRCUITKIT_RUN_AYA_EXPANSE_ACDC=1 HF_TOKEN=... \
|
|
|
287
321
|
python -m pytest tests/regression/test_aya_expanse_discovery.py -v -k acdc
|
|
288
322
|
```
|
|
289
323
|
|
|
324
|
+
**Aya Expanse 32B** (`CIRCUITKIT_RUN_AYA_EXPANSE_32B=1`, needs `HF_TOKEN`,
|
|
325
|
+
deliberately a separate flag from 8B's so an 8B opt-in never silently
|
|
326
|
+
triggers a 60 GiB download):
|
|
327
|
+
|
|
328
|
+
```bash
|
|
329
|
+
CIRCUITKIT_RUN_AYA_EXPANSE_32B=1 HF_TOKEN=... python -m pytest \
|
|
330
|
+
tests/backends/tl_compat/test_aya_expanse_32b_parity.py \
|
|
331
|
+
tests/regression/test_aya_expanse_32b_interventions.py -v
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
This runs what passes today: truncated-depth parity and the pruning /
|
|
335
|
+
quantization module-resolution checks. Everything that needs the full
|
|
336
|
+
40-layer model through TransformerLens (full-depth parity, discovery,
|
|
337
|
+
evaluation, weight steering) is skipped unless
|
|
338
|
+
`CIRCUITKIT_RUN_AYA_EXPANSE_32B_FULL=1` is also set, because it fails on
|
|
339
|
+
transformer-lens 3.8.0 (see below).
|
|
340
|
+
|
|
341
|
+
!!! warning "32B: truncated-depth parity and pruning/quantization resolution pass; full-depth parity, discovery, evaluation, and weight steering are blocked by a transformer-lens bug"
|
|
342
|
+
Validated against the real checkpoint:
|
|
343
|
+
|
|
344
|
+
- **Registration** — the repo ID resolves to the same `cohere1`
|
|
345
|
+
`ArchPort` as 8B.
|
|
346
|
+
- **Config conversion** at 32B's real spec (40 layers, 8:1 GQA,
|
|
347
|
+
`rope_theta=4e6`, `logit_scale=0.0625`).
|
|
348
|
+
- **Truncated-depth parity** (first 4 of 40 real layers plus embeddings
|
|
349
|
+
and the final norm): KL(HF‖TL) 6.5e-9 to 5.3e-7, max log-prob
|
|
350
|
+
deviation 3.8e-6 to 7.6e-6, argmax agreement 4/4 on the same four
|
|
351
|
+
prompts the other models' gates use.
|
|
352
|
+
- **Pruning score extraction** (`build_importance_dict`) and
|
|
353
|
+
**quantization target resolution** — both resolve real modules
|
|
354
|
+
correctly on the full checkpoint (module-path resolution with
|
|
355
|
+
synthetic scores; no pruned or quantized model is evaluated)
|
|
356
|
+
(`tests/regression/test_aya_expanse_32b_interventions.py`).
|
|
357
|
+
|
|
358
|
+
What does **not** run yet, and why:
|
|
359
|
+
|
|
360
|
+
1. **The model does not fit on most single GPUs.** The weights are
|
|
361
|
+
about 60 GiB at fp16/bf16, and TransformerLens keeps a separate
|
|
362
|
+
`W_U` (~3.9 GiB more), so a loaded TransformerLens copy needs about
|
|
363
|
+
64 GiB for weights alone. Full-depth parity, discovery, evaluation,
|
|
364
|
+
and weight steering therefore need multi-GPU loading through
|
|
365
|
+
`n_devices`.
|
|
366
|
+
2. **`n_devices` loading is broken in transformer-lens==3.8.0.**
|
|
367
|
+
`HookedTransformer.move_model_modules_to_device` places each block
|
|
368
|
+
with `get_best_available_device(cfg)`, which picks the device with
|
|
369
|
+
the most free memory and ignores the block index. The forward pass
|
|
370
|
+
moves the residual stream per block with the index-based
|
|
371
|
+
`get_device_for_block_index(i, cfg)`. The two disagree. Symptoms:
|
|
372
|
+
`RuntimeError: Expected all tensors to be on the same device`
|
|
373
|
+
inside TransformerLens's `layer_norm.py`, or nearly the whole model
|
|
374
|
+
placed on one GPU followed by an out-of-memory error.
|
|
375
|
+
|
|
376
|
+
This is not a defect in the shared `cohere1` converter. Do not treat
|
|
377
|
+
32B as having the discovery, evaluation, or weight-steering coverage
|
|
378
|
+
the other four models on this page have.
|
|
379
|
+
|
|
290
380
|
**SmolLM3-3B** (`CIRCUITKIT_RUN_SMOLLM3=1`, public repo, no `HF_TOKEN`
|
|
291
381
|
needed):
|
|
292
382
|
|
|
@@ -317,6 +407,12 @@ CIRCUITKIT_RUN_SMOLLM3=1 CIRCUITKIT_RUN_SMOLLM3_ACDC=1 \
|
|
|
317
407
|
and the exact per-layer NoPE mask (`{3, 7, 11, ..., 35}` skip rotary) both
|
|
318
408
|
confirmed directly on the loaded model. These figures are from manual
|
|
319
409
|
real-weight GPU runs; CI does not reproduce this parity measurement.
|
|
410
|
+
Aya Expanse 32B's parity gate is a **truncated-depth** variant of this
|
|
411
|
+
same check (first 4 of 40 real layers plus embeddings and the final norm,
|
|
412
|
+
built by reading only the safetensors shards those tensors live in):
|
|
413
|
+
KL(HF‖TL) 6.5e-9 to 5.3e-7, max log-prob deviation 3.8e-6 to 7.6e-6,
|
|
414
|
+
argmax agreement 4/4. See the warning above for what this covers and
|
|
415
|
+
why the full-depth variant is blocked.
|
|
320
416
|
- **Discovery** (`test_*_discovery.py`) — end-to-end `discover_circuit` on
|
|
321
417
|
`greater_than` for 5 of the 6 stable algorithms (`eap`, `eap-ig`,
|
|
322
418
|
`eap-gp`, `ibcircuit`, `cdt`); asserts finite, non-degenerate node scores.
|
|
@@ -333,8 +429,12 @@ CIRCUITKIT_RUN_SMOLLM3=1 CIRCUITKIT_RUN_SMOLLM3_ACDC=1 \
|
|
|
333
429
|
CPU fallback discovery needed.
|
|
334
430
|
- **Interventions** (`test_*_interventions.py`) — pruning score extraction,
|
|
335
431
|
quantization target-module resolution, and weight-steering setup, all on
|
|
336
|
-
real weights
|
|
337
|
-
|
|
432
|
+
real weights for Command R7B/8B/SmolLM3-3B. For Aya Expanse 32B, pruning
|
|
433
|
+
and quantization resolution also pass on the real checkpoint; weight
|
|
434
|
+
steering is blocked by the same confirmed transformer-lens multi-GPU bug
|
|
435
|
+
described in the 32B warning above. See
|
|
436
|
+
[Architecture Registry](architecture-registry.md) for exactly what was and
|
|
437
|
+
wasn't run per model.
|
|
338
438
|
|
|
339
439
|
### ACDC is excluded from the standard gate
|
|
340
440
|
|
|
@@ -361,6 +461,20 @@ repo's own OOM preflight refuses the GPU attempt loudly rather than crashing
|
|
|
361
461
|
mid-forward. `cdt` needs neither. SmolLM3-3B (~6 GB bf16) is small enough
|
|
362
462
|
that its entire discovery gate ran on GPU with no CPU fallback.
|
|
363
463
|
|
|
464
|
+
**Aya Expanse 32B** needs more memory than the rest of this page: about
|
|
465
|
+
60 GiB of weights at fp16/bf16 (14 safetensors shards), and TransformerLens
|
|
466
|
+
keeps a separate `W_U` (~3.9 GiB more), so a loaded TransformerLens copy
|
|
467
|
+
needs about 64 GiB for weights alone. That does not fit on most single
|
|
468
|
+
GPUs, and a full fp32 copy needs about 129 GiB. Multi-GPU loading through
|
|
469
|
+
`n_devices` fails on transformer-lens==3.8.0 however much GPU memory is
|
|
470
|
+
free (see the warning in [Tests](#tests)).
|
|
471
|
+
The parity gate avoids the full load by never materializing more than 4
|
|
472
|
+
real layers through TransformerLens. Pruning and quantization resolution
|
|
473
|
+
load the HF copy directly with `device_map="auto"`, which the
|
|
474
|
+
TransformerLens bug does not affect. Full-depth parity, discovery,
|
|
475
|
+
evaluation, and weight steering need the `n_devices` path and do not run
|
|
476
|
+
yet.
|
|
477
|
+
|
|
364
478
|
---
|
|
365
479
|
|
|
366
480
|
## See also
|
|
@@ -9,14 +9,14 @@ EAP-IG can be memory-intensive, especially for large models. This page covers al
|
|
|
9
9
|
Peak VRAM after the `perf/vram-optimizations` fixes (qkv-flag lifecycle,
|
|
10
10
|
per-batch buffer release, embedding-only gradients — see the changelog):
|
|
11
11
|
|
|
12
|
-
| Model |
|
|
12
|
+
| Model | Previous default (measured) | With all optimizations (measured) |
|
|
13
13
|
|-------|----------------------------|-------------------------------------|
|
|
14
14
|
| GPT-2 (124M) | 1.0 GB | 0.5 GB |
|
|
15
15
|
| Llama-3.2-1B-Instruct | 8.7 GB | 4.1 GB |
|
|
16
16
|
| Llama-3B | not re-measured — order-of-magnitude only | not re-measured |
|
|
17
17
|
| Gemma-4B | not re-measured — order-of-magnitude only | not re-measured |
|
|
18
18
|
|
|
19
|
-
"
|
|
19
|
+
"Previous default" is `ig_steps=5`, `batch_size=4`, `num_examples=128` (`ig_steps` now defaults to 3). "With
|
|
20
20
|
all optimizations" is `ig_steps=3`, `batch_size=1`, `num_examples=64` (the
|
|
21
21
|
combined strategy below), both bf16. (The config key is `num_examples`, under
|
|
22
22
|
`data_params`; prose sometimes calls it `n_examples` — it is the same knob.)
|
|
@@ -43,13 +43,13 @@ discover_circuit({
|
|
|
43
43
|
|
|
44
44
|
### 2. Reduce `ig_steps` (linear savings)
|
|
45
45
|
|
|
46
|
-
`ig_steps` is the number of Integrated Gradients integration steps. The
|
|
46
|
+
`ig_steps` is the number of Integrated Gradients integration steps. The default is 3 (`utils/config.py`), which is enough for EAP-IG: the EAP-IG paper (Hanna et al., 2024) finds every value above 2 similarly faithful, and 2 unfaithful on some tasks. Cost grows linearly with the step count, so the previous default of 5 takes about 1.7x as long. The backends fall back to 3 as well when `ig_steps` is left unset (`None`).
|
|
47
47
|
|
|
48
48
|
```python
|
|
49
|
-
"discovery": {"algorithm": "eap-ig", "ig_steps": 3, ...} #
|
|
49
|
+
"discovery": {"algorithm": "eap-ig", "ig_steps": 3, ...} # the default; 2 is faster but unfaithful on some tasks
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
**Savings:** Linear with step reduction. `ig_steps=3` is ~40% faster and ~30% less memory than `ig_steps=5`.
|
|
52
|
+
**Savings:** Linear with step reduction. `ig_steps=3` (the default) is ~40% faster and ~30% less memory than the previous default of `ig_steps=5`.
|
|
53
53
|
|
|
54
54
|
### 3. Reduce `batch_size` (linear savings)
|
|
55
55
|
|
|
@@ -77,7 +77,7 @@ discover_circuit({
|
|
|
77
77
|
"algorithm": "eap-ig",
|
|
78
78
|
"task": "mmlu",
|
|
79
79
|
"level": "node",
|
|
80
|
-
"ig_steps": 3, # 2.
|
|
80
|
+
"ig_steps": 3, # 2. IG steps (the default)
|
|
81
81
|
"batch_size": 1, # 3. batch size 1 (top-level, not under data_params)
|
|
82
82
|
"data_params": {
|
|
83
83
|
"num_examples": 64, # 4. fewer examples
|
|
@@ -97,7 +97,7 @@ discover_circuit({
|
|
|
97
97
|
| Baseline — float32 (reference only; not the default) | 0% |
|
|
98
98
|
| Model bfloat16 | ~50% |
|
|
99
99
|
| + Batch size 1 | ~70–75% |
|
|
100
|
-
| +
|
|
100
|
+
| + ig_steps 3 (now the default; was 5) | ~75–80% |
|
|
101
101
|
| **All combined** | **~80%** |
|
|
102
102
|
|
|
103
103
|
There are no `memory_efficient` or `use_half_precision_activations` config keys — neither is read anywhere in the discovery backend, so setting them silently does nothing. The levers above (model precision, `batch_size`, `ig_steps`, `n_examples`) are the only ones that actually affect memory.
|
|
@@ -141,7 +141,7 @@ All optimizations have negligible impact on circuit quality:
|
|
|
141
141
|
|
|
142
142
|
| Optimization | Speed impact | Circuit quality impact |
|
|
143
143
|
|-------------|-------------|----------------------|
|
|
144
|
-
| `ig_steps=3` | ~40% faster | < 0.5% score diff |
|
|
144
|
+
| `ig_steps=3` (now the default; was 5) | ~40% faster | < 0.5% score diff |
|
|
145
145
|
| `batch_size=1` | ~50% slower | None |
|
|
146
146
|
| `bfloat16` model | Same or faster | < 0.1% score diff |
|
|
147
147
|
|
|
@@ -10,9 +10,14 @@ additively, without forking or pinning a different TL version.
|
|
|
10
10
|
Tiny-aya was the first model this port supported, and the seam it
|
|
11
11
|
established (`circuitkit.backends._tl_compat`) has since grown to also
|
|
12
12
|
cover **Command R7B** (same `cohere2` architecture as tiny-aya),
|
|
13
|
-
**Aya Expanse 8B** (`cohere1`), and **SmolLM3-3B** (a new
|
|
14
|
-
port) — all discovery/evaluation/intervention-capable
|
|
15
|
-
seam
|
|
13
|
+
**Aya Expanse 8B** and **32B** (`cohere1`), and **SmolLM3-3B** (a new
|
|
14
|
+
Llama-family port) — all discovery/evaluation/intervention-capable
|
|
15
|
+
through the same seam, except Aya Expanse 32B, which is registered,
|
|
16
|
+
parity-validated (truncated depth), and validated for pruning/
|
|
17
|
+
quantization but not discovery/evaluation/weight-steering — those are
|
|
18
|
+
blocked by a confirmed transformer-lens multi-GPU bug, not left undone
|
|
19
|
+
for time (see [Experimental Models](experimental-models.md) for what
|
|
20
|
+
was and wasn't validated and why).
|
|
16
21
|
|
|
17
22
|
!!! warning "Experimental & gated"
|
|
18
23
|
tiny-aya is an **experimental** discovery target. The checkpoints are
|
|
@@ -182,7 +187,7 @@ CIRCUITKIT_RUN_TINY_AYA=1 HF_TOKEN=... \
|
|
|
182
187
|
## See also
|
|
183
188
|
|
|
184
189
|
- [Experimental Models](experimental-models.md) — Command R7B, Aya Expanse
|
|
185
|
-
8B, and SmolLM3-3B, added through the same `_tl_compat` seam.
|
|
190
|
+
8B / 32B, and SmolLM3-3B, added through the same `_tl_compat` seam.
|
|
186
191
|
- [Architecture Registry](architecture-registry.md) — the `cohere` family entry
|
|
187
192
|
and `EXPERIMENTAL_FAMILIES`.
|
|
188
193
|
- `circuitkit.backends._tl_compat` — the port source.
|
|
@@ -32,10 +32,11 @@ circuit = discover_circuit({
|
|
|
32
32
|
"task": "ioi",
|
|
33
33
|
"level": "node",
|
|
34
34
|
"data_params": {"num_examples": 64},
|
|
35
|
-
# Optional: scope the tao (threshold) grid ACDC sweeps.
|
|
36
|
-
#
|
|
37
|
-
|
|
38
|
-
"
|
|
35
|
+
# Optional: scope the tao (threshold) grid ACDC sweeps. Omit these to use the
|
|
36
|
+
# backend defaults (bases [1, 5] x exps [-5, -4, -3, -2] = 8 sweeps); this narrower
|
|
37
|
+
# grid runs 2 x 2 = 4.
|
|
38
|
+
"tao_bases": [1, 5],
|
|
39
|
+
"tao_exps": [-3, -2],
|
|
39
40
|
"faithfulness_target": "kl_div", # or "mse"
|
|
40
41
|
},
|
|
41
42
|
"pruning": {"target_sparsity": 0.3, "scope": "heads"},
|
|
@@ -52,12 +53,12 @@ circuit = discover_circuit({
|
|
|
52
53
|
|
|
53
54
|
| Parameter | Default | Description |
|
|
54
55
|
|-----------|---------|-------------|
|
|
55
|
-
| `tao_bases` | `[1,
|
|
56
|
+
| `tao_bases` | `[1, 5]` | Bases for the tao (threshold) grid ACDC sweeps. |
|
|
56
57
|
| `tao_exps` | `[-5, -4, -3, -2]` | Exponents for the tao grid; each edge is scored by the smallest tao at which it is pruned. |
|
|
57
58
|
| `faithfulness_target` | `"kl_div"` | Metric ACDC optimizes the circuit for; `"kl_div"` or `"mse"`. |
|
|
58
59
|
| `num_examples` | `128` | Example count under `data_params`, used to build the batch ACDC patches over. |
|
|
59
60
|
|
|
60
|
-
ACDC does not use a single threshold — it sweeps a grid of tao values built from the product of `tao_bases` and `tao_exps` (defaults give
|
|
61
|
+
ACDC does not use a single threshold — it sweeps a grid of tao values built from the product of `tao_bases` and `tao_exps` (defaults give 8 sweeps). Narrow the grid to trim runtime:
|
|
61
62
|
|
|
62
63
|
1. Keep the defaults for a full sweep.
|
|
63
64
|
2. To go faster, pass fewer values, e.g. `tao_bases=[1]` and `tao_exps=[-3]` for a single tao.
|
|
@@ -29,7 +29,7 @@ All runtimes: `n_examples=128`, `batch_size=4`, `level="node"`, A100 40GB.
|
|
|
29
29
|
| Gemma-4B | ~10 GB | ~16 GB | — | ❌ OOM |
|
|
30
30
|
| Llama-7B | ~18 GB | ~30 GB | — | ❌ OOM |
|
|
31
31
|
|
|
32
|
-
`bfloat16`, `ig_steps=5
|
|
32
|
+
Measured at `bfloat16`, `ig_steps=5` (the previous default), `batch_size=4`. Reduce `batch_size` if you hit OOM; `ig_steps` now defaults to 3.
|
|
33
33
|
|
|
34
34
|
## Task compatibility
|
|
35
35
|
|