circuitkit 0.1.2__tar.gz → 0.1.4__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.2 → circuitkit-0.1.4}/PKG-INFO +5 -2
- {circuitkit-0.1.2 → circuitkit-0.1.4}/README.md +4 -1
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/index.md +1 -1
- {circuitkit-0.1.2 → circuitkit-0.1.4}/pyproject.toml +1 -1
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/__init__.py +1 -1
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/api.py +19 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/circuit.py +32 -9
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/cli/main.py +136 -42
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/quick.py +13 -20
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/d3_template.py +266 -5
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/graph_viz.py +238 -116
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit.egg-info/PKG-INFO +5 -2
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit.egg-info/SOURCES.txt +3 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/integration/test_interfaces_e2e.py +27 -0
- circuitkit-0.1.4/tests/integration/test_yaml_run_advanced.py +123 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_circuit.py +28 -4
- circuitkit-0.1.4/tests/unit/test_d3_lod.py +74 -0
- circuitkit-0.1.4/tests/unit/test_graph_viz_bounded.py +210 -0
- circuitkit-0.1.4/tests/unit/test_yaml_run_cli.py +435 -0
- circuitkit-0.1.2/tests/unit/test_yaml_run_cli.py +0 -255
- {circuitkit-0.1.2 → circuitkit-0.1.4}/.github/workflows/docs.yml +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/.github/workflows/patch-release.yml +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/LICENSE.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/MANIFEST.in +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/API_REFERENCE.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/INSTALLATION.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/about/faq.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/about/license.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/about/release-notes.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/about/roadmap.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/advanced/architecture-registry.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/advanced/chat-templates.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/advanced/circuit-artifacts.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/advanced/hallucination-detection.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/advanced/memory-optimization.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/advanced/vllm-evaluation.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/algorithms/acdc.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/algorithms/capability-matrix.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/algorithms/cdt.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/algorithms/eap.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/algorithms/ibcircuit.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/algorithms/overview.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/algorithms/stability-tiers.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/api-reference/applications.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/api-reference/backends.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/api-reference/dict-config.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/api-reference/evaluation.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/api-reference/flat-api.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/api-reference/overview.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/api-reference/pipeline.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/api-reference/selectors.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/api-reference/tasks.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/blog/introducing-circuitkit.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/citation-map.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/cli/applications.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/cli/discovery.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/cli/evaluation.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/cli/overview.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/cli/yaml-config.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/contributing/documentation.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/contributing/new-algorithms.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/contributing/setup.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/contributing/standards.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/contributing/testing-on-cuda.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/dev_enterprise_runbook.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/evaluation/ablation.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/evaluation/baselines.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/evaluation/benchmarking.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/evaluation/causal-patching.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/evaluation/framework.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/evaluation/generalization.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/evaluation/robustness.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/evaluation/stability.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/examples/case-studies.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/examples/notebooks.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/examples/overview.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/examples/scripts.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/getting-started/configuration.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/getting-started/core-concepts.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/getting-started/index.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/getting-started/installation.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/getting-started/quickstart.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/getting-started/taxonomy.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/guidelines/Testing_Guidelines.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/guides/CONCEPTS.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/guides/circuit_artifact_guide.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/guides/eap_ig_memory_optimization.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/guides/hallucination_detection_guide.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/guides/index.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/guides/steering.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/guides/vllm_evaluation.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/product_blueprint.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/pypi_core_contract.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/reference/ARCHITECTURE_REGISTRY.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/reference/FEATURES.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/reference/index.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/references.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/trust/index.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/trust/results.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/trust/scope.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/user-guide/applications.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/user-guide/custom-data.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/user-guide/data-corruption.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/user-guide/data.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/user-guide/evaluation.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/user-guide/pipeline-overview.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/user-guide/selectors.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/user-guide/tasks.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/user-guide/troubleshooting.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/user-guide/visualization.md +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/01-quickstart.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/02-discover-python-api.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/04-discover-yaml.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/05-evaluate-faithfulness.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/06-applications.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/07-pipeline.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/08-custom-data.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/09-load-and-reuse.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/10-steering.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/11-knowledge-editing.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/12-custom-corruption.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/13-transfer-matrix.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/14-faithfulness-audit-for-compliance.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/15-compression-for-deployment.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/16-tabular-model-audit.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/17-quantization-unlearning.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/18-banking-safety-steering.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/19-trade-finance-document-classification.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/20-transit-edge-deployment.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/21-quantization-permanent-unlearning.ipynb +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/22-gender-bias-audit-and-mitigation.ipynb +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/23-jailbreak-safety-steering.ipynb +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/24-safety-refusal-custom-data.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/discovery/algorithm-comparison.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/discovery/benchmark-circuit-discovery.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/experiments/e1_algo_validation_ioi.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/experiments/e2_cross_family_discovery.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/experiments/e3_neuron_level_ioi.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/experiments/e4_custom_data_jailbreak.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/experiments/e567_downstream_applications.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/finetuning/finetune-llama.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/finetuning/finetune-qwen.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/notebooks/00_colab_setup.ipynb +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/notebooks/01_quickstart_pipeline.ipynb +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/notebooks/02_algorithm_comparison.ipynb +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/notebooks/03_custom_data_jailbreak.ipynb +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/notebooks/04_evaluation_deep_dive.ipynb +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/notebooks/05_visualization_gallery.ipynb +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/notebooks/06_applications.ipynb +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/notebooks/07_cli_and_yaml.ipynb +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/notebooks/08_advanced_research_tools.ipynb +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/notebooks/demo_2p5min.ipynb +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/pruning/basic-prune.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/pruning/prune-llama.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/pruning/prune-qwen.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/quantization/quantize-llama.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/quantization/quantize-qwen.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/simple_csv_task.yaml +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/_common.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/_runner.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/01_eap_ig_activations_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/02_eap_clean_corrupted_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/03_eap_exact_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/04_compare_eap_family_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/05_atp_gd_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/06_eap_gp_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/07_relp_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/08_ibcircuit_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/09_peap_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/10_cdt_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/11_eap_ifr_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/12_all_algos_llama.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/_algos_common.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/01_pruning_gpt2_ioi.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/02_lora_healing_gpt2_ioi.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/03_pruning_gpt2_mmlu.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/04_pruning_gpt2_gender_bias.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/05_pruning_gpt2_sva.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/06_pruning_gpt2_capital_country.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/07_pruning_gpt2_boolq.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/08_pruning_gpt2_arc_easy.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/09_pruning_gpt2_hellaswag.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/10_pruning_gpt2_crows_pairs.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/11_knowledge_editing_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/12_unlearning_tofu_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/13_steering_gpt2_ioi.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/14_linear_probe_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/15_hallucination_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/16_peft_benchmark.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/17_knowledge_editing_full_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/18_steering_safety_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/19_quantization_llama1b.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/20_ctheta_steering_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/21_ctheta_steering_llama1b.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/22_ctheta_advbench_refusal.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/23_ctheta_k_grid_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/24_circuitkit_advbench_refusal_steering.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/25_knowledge_editing_llama_circuit.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/26_soft_healing_llama_circuit.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/27_hallucination_truthfulqa_llama.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/28_safety_dataset_pillar_evals.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/_apps_common.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/_make_apps_cell.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/01_gpt2_ioi.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/02_gpt2_greater_than.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/03_llama1b_ioi.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/04_llama1b_greater_than.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/05_gpt2_mmlu.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/06_llama1b_mmlu.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/07_gpt2_gender_bias.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/08_gpt2_hypernymy.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/09_gpt2_sva.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/10_gpt2_capital_country.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/11_gpt2_boolq.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/12_gpt2_wmdp.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/13_gpt2_arc_easy.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/14_gpt2_arc_challenge.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/15_gpt2_hellaswag.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/16_gpt2_crows_pairs.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/17_gpt2_tofu.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/18_gpt2_gsm8k.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/99_aggregate.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/_bench_common.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/_custom_tasks.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/_make_cell.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/01_pairwise_crowspairs.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/02_instruction_alpaca.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/03_conversational_sharegpt.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/04_mcq_mmlu_arc_hellaswag.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/05_forget_retain_tofu.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/06_strategies_all.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/07_e2e_discovery_mcq_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/08_e2e_discovery_tofu_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/09_e2e_discovery_crowspairs_llama1b.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/10_e2e_quality_stability_mcq_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/11_e2e_all_algos_custom_mcq_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/12_e2e_safety_advbench_gpt2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/_data_common.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/master_aggregator.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/01_circuit_graph.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/02_activation_saliency.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/03_feature_saliency.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/04_circuit_editor.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/05_comparison_dashboard.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/06_jupyter_widgets.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/07_gallery_generator.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/08_plotter.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/09_eap_visualization.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/10_acdc_visualize.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/11_transfer_visualizer.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/visualization/graph-viz-example.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/pytest.ini +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/requirements.txt +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/setup.cfg +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/__main__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/analysis/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/analysis/cross_method_jaccard.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/analysis/metrics.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/analysis/scores.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/arch_registry.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/arch_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/common_utils/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/common_utils/_covariance.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/common_utils/_device.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/common_utils/_metrics.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/common_utils/_tokenization.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/common_utils/benchmark_analysis.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/common_utils/cure_clue.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/common_utils/hallucination_detection.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/common_utils/linear_probe.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/editing/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/editing/cake.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/editing/circuit_guided_editing.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/editing/fine_tune_editing.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/editing/knowledge_editing.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/editing/knowledge_editing_enhanced.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/editing/mcircke.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/editing/memit_wrapper.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/editing/rome_wrapper.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/finetuning/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/finetuning/benchmark_peft.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/finetuning/circuit_tuning.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/finetuning/healing_metrics.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/finetuning/peft_methods.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/finetuning/soft_healing.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/eval_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/examples/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/examples/prune.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/examples/prune_llama.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/examples/prune_qwen.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/finetune_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/importance.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/neuron_pruner.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/node_pruner.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/pruner.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/score_extractor.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/selectors/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/selectors/multi_granular_selector.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/selectors/taylor_selector.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/weight_pruner.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/quantization/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/quantization/examples/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/quantization/examples/quantize_llama.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/quantization/examples/quantize_qwen.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/quantization/llmcompressor_quantize.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/quantization/quant_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/quantization/score_extractor.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/quantization/selectors/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/quantization/selectors/awq_selector.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/quantization/selectors/tacq_selector.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/selective_finetuning/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/selective_finetuning/examples/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/selective_finetuning/examples/finetune_llama.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/selective_finetuning/examples/finetune_qwen.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/selective_finetuning/finetune_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/selective_finetuning/score_loader.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/selective_finetuning/selector.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/steering/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/steering/steering.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/steering/steering_enhanced.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/steering/weight_steering.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/artifacts/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/artifacts/circuit_artifact.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/artifacts/converters.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/artifacts/scores.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/artifact_export.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/data.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/model_utils/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/model_utils/micro_model_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/model_utils/transformer_lens_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/prune.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/prune_algos/ACDC.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/prune_algos/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/prune_algos/mask_gradient.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/prune_algos/prune_algos.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/tasks/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/tasks/docstring_prompts.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/tasks/docstring_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/tasks/induction_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/tasks/ioi_dataset.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/tasks/ioi_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/types.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/utils/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/utils/ablation_activations.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/utils/custom_tqdm.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/utils/graph_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/utils/misc.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/utils/patch_wrapper.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/utils/patchable_model.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/utils/task_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/utils/tensor_ops.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/visualize.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/adapter.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/propagation.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/cdt_ablations.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/cdt_basic.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/cdt_core.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/cdt_from_source_nodes.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/cdt_source_to_target.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/faithfulness_ablations.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/general.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/ioi_dataset.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/local_importance.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/pathology.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/toy_model.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/wrappers.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/artifact_export.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/attribute.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/attribute_node.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/circuit_kit_adapter.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/eap_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/evaluate.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/graph.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/metrics.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/py.typed +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/visualization.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/ibcircuit/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/ibcircuit/artifact_export.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/ibcircuit/ib_noise.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/ibcircuit/ib_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/ibcircuit/model_wrapper.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/ibcircuit/trainer.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/benchmarks/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/benchmarks/baselines/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/benchmarks/baselines/gptq.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/benchmarks/baselines/magnitude.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/benchmarks/baselines/random.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/benchmarks/baselines/sparsegpt.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/benchmarks/baselines/wanda.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/benchmarks/benchmark.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/benchmarks/reporting.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/cli/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/cli/config.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/cli/debug.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/cli/utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/base.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/color_swap.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/distractor.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/distractor_variation.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/effectiveness.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/entity_swap.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/negation.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/paraphrase.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/pipeline.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/position_shift.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/role_swap.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/token_swap.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/validators.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/voice_swap.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/adapters/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/adapters/base.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/adapters/code.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/adapters/conversational.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/adapters/forget_retain.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/adapters/instruction.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/adapters/math.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/adapters/mcq.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/adapters/pairwise.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/adapters/safety_prompt.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/auto_detect.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/clean_only.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/base.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/benign_rewrite.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/code_syntax_corrupt.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/entity_swap.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/final_answer_swap.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/instruction_swap.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/llm_counterfactual.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/logical_negation.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/math_step_corrupt.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/mcq_choice_swap.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/operand_swap.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/profession_swap.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/resample.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/template.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/template_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/token_swap.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/dataset_schema.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/eap_dataset.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/invariance_groups/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/invariance_groups/builder.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/invariance_groups/schema.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/normalized.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/normalized_task.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/core/TLACDCCorrespondence.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/core/TLACDCEdge.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/core/TLACDCExperiment.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/core/TLACDCInterpNode.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/core/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/core/acdc_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/generation/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/generation/cache.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/generation/manager.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/generation/utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/storage/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/storage/greaterthan/greaterthan_32_ffd33106.json +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/storage/ioi/ioi_16_8c879ddb.json +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/storage/ioi/ioi_32_a432ca4a.json +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/storage/ioi/ioi_500_1f7e7324.json +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/storage/ioi/ioi_64_3bba747e.json +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/storage/ioi/ioi_64_f4a164db.json +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/storage/ioi/ioi_8_e87df42e.json +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/binary_align/generate_binary_align.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/binary_align/jailbreak_binary.csv +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/binary_align/safe_binary.csv +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/capital_country/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/capital_country/utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/docstring/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/docstring/prompts.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/docstring/utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/double_io/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/double_io/double_io_dataset.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/gender_bias/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/gender_bias/utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/gender_bias/utils2.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/greaterthan/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/greaterthan/utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/hypernymy/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/hypernymy/utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/induction/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/induction/utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/ioi/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/ioi/ioi_dataset.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/ioi/utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/sva/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/sva/utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/wmdp/wmdp_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/template.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/wikitext_calibration.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/worthiness.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/checkpoint_benchmark.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/evaluate.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/full.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/hf_checkpoint.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/intervention_faithfulness.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/lm_eval_simple.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/lm_harness.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/master_grid.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/mmlu_eval.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/pillars/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/pillars/ablation.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/pillars/baselines.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/pillars/causal_patching.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/pillars/generalization.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/pillars/intervention_reliability.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/pillars/robustness.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/pillars/stability.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/report.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/reports/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/reports/aggregator.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/reports/robustness_report.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/reports/stability_report.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/stability_discovery.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/transfer.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/transfer_analysis.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/transfer_visualizer.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/weight_based_eval.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/pipeline.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/selection/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/selection/cdt_selector.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/selection/eap_gp_selector.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/selection/eap_selector.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/selection/gptq_selector.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/selection/ibcircuit_selector.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/selection/magnitude_selector.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/selection/random_selector.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/selection/relp_selector.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/selection/wanda_selector.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/_algorithm_families.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/_chat.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/auto_schema.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/bootstrap.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/boolq.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/capital_country.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/double_io.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/gender_bias.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/glue.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/greater_than.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/gsm8k.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/hypernymy.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/ifeval.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/ioi.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/ioi_acdc.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/ioi_legacy.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/mmlu.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/sva.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/truthfulqa.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/winogrande.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/winogrande_mc.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/wmdp.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/generic.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/hf_factory.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/inspect.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/registry.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/safety_datasets.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/specs.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/type_specs/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/type_specs/classification_spec.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/type_specs/generation_spec.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/type_specs/mcq_spec.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/type_specs/qa_spec.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/type_specs/summarization_spec.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/type_specs/translation_spec.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/validator.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/yaml_loader.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tooling/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tooling/validate_environment.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/artifacts.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/async_processing.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/bootstrap.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/config.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/corruption_validation.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/dataset_cache.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/debug.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/debugging.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/device.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/distributed.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/exceptions.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/logging.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/memory.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/optimization.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/profiling.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/token_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/comparison.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/editor.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/feature_saliency.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/gallery.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/jupyter_suite.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/plotter.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/saliency.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/streamlit_app.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/theme.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit.egg-info/dependency_links.txt +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit.egg-info/entry_points.txt +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit.egg-info/requires.txt +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit.egg-info/top_level.txt +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/conftest.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/debug_memit.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_architecture_registry.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_benchmark_analysis.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_benchmark_peft.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_circuit_artifact.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_covariance.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_cross_architecture.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_fine_tune_editing.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_hallucination_detection.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_knowledge_editing.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_knowledge_editing_enhanced.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_knowledge_editing_pipeline.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_linear_probe.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_peft_methods.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_pruner.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_steering.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_steering_enhanced.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_tokenization.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_weight_steering.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/backends/ibcircuit/test_ib_noise.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/backends/ibcircuit/test_ib_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/backends/ibcircuit/test_model_wrapper.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/backends/ibcircuit/test_trainer.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/backends/test_artifact_export_integration.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/benchmarks/test_baselines.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/benchmarks/test_benchmark.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/conftest.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/run_corruption_tests.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_distractor.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_effectiveness.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_entity_swap.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_new_corruptions.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_paraphrase.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_pipeline.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_pipeline_integration_ioi.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_practical_examples.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_role_swap.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_strategies_integration.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_strategies_standalone.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_template.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_template_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_token_swap.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_validators.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/data/test_data_corruption_strategies.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/integration/test_chat_template_instruct.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/integration/test_soft_healing_integration.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/integration/test_steering_ioi.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/integration/test_template_e2e.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/integration/test_transfer_integration.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/integration/test_transfer_matrix.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/integration/test_transfer_minimal.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/integration/verify_implementation.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/integration/verify_implementation_standalone.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/regression/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/regression/test_cdt_nonzero_scores.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/regression/test_circuit_tuner_training.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/regression/test_cli_and_api_args.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/regression/test_data_adapters_and_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/regression/test_greater_than_tokenizer.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/regression/test_pruner_gqa_kv_head.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/regression/test_steering_and_baselines.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/release/test_release.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_auto_schema.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_capital_country.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_chat_template.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_generic_task.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_glue.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_greater_than_corruption.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_gsm8k.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_ioi_regression.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_validator.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_winogrande.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_winogrande_mc.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/test_custom_data.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/conftest.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/sample_pipeline.yaml +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_api.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_attribute.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_attribute_node.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_baselines_multidraw.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_bootstrap.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_circuit_kit_adapter.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_circuit_scores.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_cli.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_cli_commands.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_cli_smoke.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_config_defaults.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_d5_d7_import.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_double_io.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_end_to_end.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_evaluate.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_extended_schema.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_finetune_utils.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_graph.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_graph_viz.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_graph_viz_standalone.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_hf_checkpoint.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_init_exports.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_instruction_swap_audit.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_mean_activations.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_mlp1.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_modules_exist.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_multi_token_answers.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_multi_token_unit.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_neuron_pruner.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_no_regressions.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_node_pruner.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_normalized_task.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_paraphrase_direct.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_perplexity_direct.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_perplexity_metric.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_perplexity_metric_simple.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_pillars.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_pipeline_smoke.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_pipeline_unit.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_quantize_export_flow.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_quick_api.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_quick_extensions.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_r2_effect_magnitude.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_ranking_metrics.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_report.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_score_loader.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_security_hardening.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_selector.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_selector_bugs.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_selector_registry.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_soft_healing.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_stability_robustness_reports.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_steering.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_structural_pruner.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_tokenize_warning_throttle.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_validators_direct.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_validators_standalone.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_yaml_pipeline_config.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/visualize/__init__.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/visualize/test_comparison.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/visualize/test_editor.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/visualize/test_feature_saliency.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/visualize/test_gallery.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/visualize/test_jupyter_suite.py +0 -0
- {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/visualize/test_saliency.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: circuitkit
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
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>
|
|
@@ -84,7 +84,10 @@ Requires-Dist: torchvision==0.21.0+cu126; extra == "gpu-cu126"
|
|
|
84
84
|
Dynamic: license-file
|
|
85
85
|
|
|
86
86
|
<p align="center">
|
|
87
|
-
<
|
|
87
|
+
<picture>
|
|
88
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/circuitkit-logo-white.png">
|
|
89
|
+
<img src="docs/assets/circuitkit-logo-black.png" width="360" alt="CircuitKit">
|
|
90
|
+
</picture>
|
|
88
91
|
</p>
|
|
89
92
|
|
|
90
93
|
<h1 align="center">CircuitKit</h1>
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<
|
|
2
|
+
<picture>
|
|
3
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/circuitkit-logo-white.png">
|
|
4
|
+
<img src="docs/assets/circuitkit-logo-black.png" width="360" alt="CircuitKit">
|
|
5
|
+
</picture>
|
|
3
6
|
</p>
|
|
4
7
|
|
|
5
8
|
<h1 align="center">CircuitKit</h1>
|
|
@@ -6,7 +6,7 @@ hide:
|
|
|
6
6
|
|
|
7
7
|
<div class="ck-hero" markdown>
|
|
8
8
|
|
|
9
|
-
<div class="ck-hero-logo-wrap"><img class="ck-hero-mark" src="assets/circuitkit-mark-
|
|
9
|
+
<div class="ck-hero-logo-wrap"><img class="ck-hero-mark ck-lexsi-on-light" src="assets/circuitkit-mark-black.svg" alt=""><img class="ck-hero-mark ck-lexsi-on-dark" src="assets/circuitkit-mark-white.svg" alt=""></div>
|
|
10
10
|
|
|
11
11
|
<h1 class="ck-hero-title">Discover a circuit.<br><em>Then act on it.</em></h1>
|
|
12
12
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "circuitkit"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.4"
|
|
8
8
|
# Pratinav Seth, Hem Gosalia, and Aditya Kasliwal are equal co-first authors.
|
|
9
9
|
# Pratinav Seth is the corresponding author. Author order is kept consistent
|
|
10
10
|
# with src/circuitkit/__init__.py and CITATION.cff.
|
|
@@ -3,7 +3,7 @@ CircuitKit: A comprehensive toolkit for circuit discovery in transformer models.
|
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
# Version information
|
|
6
|
-
__version__ = "0.1.
|
|
6
|
+
__version__ = "0.1.4"
|
|
7
7
|
__author__ = "Pratinav Seth, Hem Gosalia, Aditya Kasliwal, Vinay Kumar Sankarapu"
|
|
8
8
|
__description__ = "Unified Discover, Evaluate, Intervene toolkit for mechanistic interpretability"
|
|
9
9
|
_API_EXPORTS = {"discover_circuit", "evaluate_circuit", "load_circuit"}
|
|
@@ -1399,6 +1399,24 @@ def discover_circuit( # noqa: C901 - complex function, refactor out of scope fo
|
|
|
1399
1399
|
(abs(score.item()), (node.name, neuron_idx))
|
|
1400
1400
|
)
|
|
1401
1401
|
|
|
1402
|
+
# Per-node aggregate (max abs score among a node's neurons) so
|
|
1403
|
+
# `Circuit.from_artifact()` -- which only ever looks for a
|
|
1404
|
+
# "node_scores" key in the scores side-car, the same shape
|
|
1405
|
+
# node-level discovery produces -- gets a non-empty
|
|
1406
|
+
# `Circuit.scores` for neuron-level circuits too. Without
|
|
1407
|
+
# this, `Circuit.scores` silently ends up `{}` for every
|
|
1408
|
+
# neuron-level run (including Pipeline.discover()'s own
|
|
1409
|
+
# first, in-process Circuit construction, not just a later
|
|
1410
|
+
# reload), which is why neuron-level circuit graphs render
|
|
1411
|
+
# with every node/edge looking unscored. `neurons_scores`
|
|
1412
|
+
# (the full per-neuron tensor) is kept in the side-car
|
|
1413
|
+
# alongside this for anyone who needs the finer-grained
|
|
1414
|
+
# detail.
|
|
1415
|
+
node_scores: Dict[str, float] = {}
|
|
1416
|
+
for abs_score, (node_name, _neuron_idx) in all_neuron_scores:
|
|
1417
|
+
if abs_score > node_scores.get(node_name, float("-inf")):
|
|
1418
|
+
node_scores[node_name] = abs_score
|
|
1419
|
+
|
|
1402
1420
|
all_neuron_scores.sort(key=lambda x: x[0]) # Sort by absolute score, ascending
|
|
1403
1421
|
num_to_prune = int(len(all_neuron_scores) * pruning_cfg["target_sparsity"])
|
|
1404
1422
|
|
|
@@ -1433,6 +1451,7 @@ def discover_circuit( # noqa: C901 - complex function, refactor out of scope fo
|
|
|
1433
1451
|
{
|
|
1434
1452
|
"algo": algo,
|
|
1435
1453
|
"level": "neuron",
|
|
1454
|
+
"node_scores": node_scores,
|
|
1436
1455
|
"neurons_scores": graph.neurons_scores.cpu(),
|
|
1437
1456
|
"total_neurons": len(all_neuron_scores),
|
|
1438
1457
|
},
|
|
@@ -262,7 +262,14 @@ class Circuit:
|
|
|
262
262
|
# ------------------------------------------------------------------ #
|
|
263
263
|
# Visualisation #
|
|
264
264
|
# ------------------------------------------------------------------ #
|
|
265
|
-
def plot(
|
|
265
|
+
def plot(
|
|
266
|
+
self,
|
|
267
|
+
output_path: Optional[Union[str, Path]] = None,
|
|
268
|
+
*,
|
|
269
|
+
max_nodes: Optional[int] = None,
|
|
270
|
+
max_edges: Optional[int] = None,
|
|
271
|
+
edge_threshold: float = 0.0,
|
|
272
|
+
) -> Union[str, Dict[str, Any], None]:
|
|
266
273
|
"""Render the circuit as an interactive graph.
|
|
267
274
|
|
|
268
275
|
Delegates to :class:`circuitkit.visualize.graph_viz.CircuitGraphVisualizer`.
|
|
@@ -271,15 +278,26 @@ class Circuit:
|
|
|
271
278
|
returns ``None`` instead of raising.
|
|
272
279
|
|
|
273
280
|
Args:
|
|
274
|
-
output_path: Optional path
|
|
275
|
-
|
|
281
|
+
output_path: Optional export path. A ``.json`` extension writes a
|
|
282
|
+
bounded graph payload via
|
|
283
|
+
:meth:`CircuitGraphVisualizer.to_json` (see ``max_nodes`` /
|
|
284
|
+
``max_edges`` / ``edge_threshold`` below); any other
|
|
285
|
+
extension (or ``None``) writes/returns the interactive HTML
|
|
286
|
+
export as before. Omitted entirely, an in-Jupyter interactive
|
|
287
|
+
widget is returned where supported.
|
|
288
|
+
max_nodes: For ``.json`` output only — cap on nodes kept.
|
|
289
|
+
max_edges: For ``.json`` output only — cap on edges kept.
|
|
290
|
+
edge_threshold: For ``.json`` output only — minimum normalized
|
|
291
|
+
edge weight to keep.
|
|
276
292
|
|
|
277
293
|
Returns:
|
|
278
|
-
The HTML string when ``output_path`` is
|
|
279
|
-
succeeded
|
|
294
|
+
The HTML string when ``output_path`` is an HTML/other path and
|
|
295
|
+
rendering succeeded; the exported dict when ``output_path`` is a
|
|
296
|
+
``.json`` path; otherwise ``None``.
|
|
280
297
|
|
|
281
298
|
Example:
|
|
282
299
|
>>> circuit.plot("ioi_circuit.html") # writes an interactive HTML
|
|
300
|
+
>>> circuit.plot("ioi_circuit.json", max_nodes=300, max_edges=3000)
|
|
283
301
|
"""
|
|
284
302
|
if not self.scores:
|
|
285
303
|
logger.info(
|
|
@@ -291,7 +309,6 @@ class Circuit:
|
|
|
291
309
|
from .artifacts.scores import CircuitScores
|
|
292
310
|
from .visualize.graph_viz import CircuitGraphVisualizer
|
|
293
311
|
|
|
294
|
-
|
|
295
312
|
cs = self.circuit_scores
|
|
296
313
|
if cs is None:
|
|
297
314
|
cs = CircuitScores(
|
|
@@ -312,9 +329,8 @@ class Circuit:
|
|
|
312
329
|
pruned_nodes = self.nodes
|
|
313
330
|
elif isinstance(self.nodes, dict):
|
|
314
331
|
# neuron-level artifact: flatten mlp + heads keys
|
|
315
|
-
pruned_nodes = (
|
|
316
|
-
|
|
317
|
-
+ list(self.nodes.get("heads", {}).keys())
|
|
332
|
+
pruned_nodes = list(self.nodes.get("mlp", {}).keys()) + list(
|
|
333
|
+
self.nodes.get("heads", {}).keys()
|
|
318
334
|
)
|
|
319
335
|
|
|
320
336
|
graph_dict = {"nodes": {name: {} for name in self.scores}, "edges": []}
|
|
@@ -323,6 +339,13 @@ class Circuit:
|
|
|
323
339
|
if output_path is not None:
|
|
324
340
|
out = Path(output_path)
|
|
325
341
|
out.parent.mkdir(parents=True, exist_ok=True)
|
|
342
|
+
if out.suffix.lower() == ".json":
|
|
343
|
+
return viz.to_json(
|
|
344
|
+
str(out),
|
|
345
|
+
max_nodes=max_nodes,
|
|
346
|
+
max_edges=max_edges,
|
|
347
|
+
edge_threshold=edge_threshold,
|
|
348
|
+
)
|
|
326
349
|
title = f"Circuit ({self.task or 'unknown'} / {self.algorithm or 'eap-ig'})"
|
|
327
350
|
return viz.to_html(str(out), title=title)
|
|
328
351
|
return viz.interactive_widget()
|
|
@@ -1549,16 +1549,31 @@ def data_prepare(source, shape, strategy, max_records, output, hf_subset, hf_spl
|
|
|
1549
1549
|
f"strategy={chosen_strategy or 'native'})"
|
|
1550
1550
|
)
|
|
1551
1551
|
|
|
1552
|
+
|
|
1552
1553
|
@data.command("template")
|
|
1553
1554
|
@click.argument("source", type=click.Path(exists=True))
|
|
1554
|
-
@click.option(
|
|
1555
|
-
|
|
1555
|
+
@click.option(
|
|
1556
|
+
"--clean-prompt",
|
|
1557
|
+
required=True,
|
|
1558
|
+
help="Clean prompt template, e.g. 'The capital of {country} is'",
|
|
1559
|
+
)
|
|
1560
|
+
@click.option(
|
|
1561
|
+
"--corrupt-prompt",
|
|
1562
|
+
default=None,
|
|
1563
|
+
help="Corrupt prompt template, e.g. 'The capital of {other_country} is'. Omit for ibcircuit/cdt.",
|
|
1564
|
+
)
|
|
1556
1565
|
@click.option("--clean-answer", required=True, help="Clean answer template, e.g. '{capital}'")
|
|
1557
|
-
@click.option(
|
|
1566
|
+
@click.option(
|
|
1567
|
+
"--corrupt-answer",
|
|
1568
|
+
default=None,
|
|
1569
|
+
help="Corrupt answer template, e.g. '{other_capital}'. Omit for ibcircuit/cdt.",
|
|
1570
|
+
)
|
|
1558
1571
|
@click.option("--pairing-mode", type=click.Choice(["explicit", "auto_peer"]), default="explicit")
|
|
1559
1572
|
@click.option("--max-records", type=int, default=256)
|
|
1560
1573
|
@click.option("--output", required=True, help="Output NormalizedDataset JSON path.")
|
|
1561
|
-
@click.option(
|
|
1574
|
+
@click.option(
|
|
1575
|
+
"--validate", "run_validation", is_flag=True, default=False, help="Run worthiness checks."
|
|
1576
|
+
)
|
|
1562
1577
|
@click.option(
|
|
1563
1578
|
"--align-strategy",
|
|
1564
1579
|
type=click.Choice(["filter", "pad_question", "none"]),
|
|
@@ -1643,6 +1658,7 @@ def data_template(
|
|
|
1643
1658
|
else:
|
|
1644
1659
|
try:
|
|
1645
1660
|
from transformers import AutoTokenizer
|
|
1661
|
+
|
|
1646
1662
|
tokenizer = AutoTokenizer.from_pretrained(model)
|
|
1647
1663
|
click.echo(f"Loaded tokenizer from {model}")
|
|
1648
1664
|
except Exception as e:
|
|
@@ -1676,7 +1692,9 @@ def data_template(
|
|
|
1676
1692
|
pad_region_end=pad_region_end,
|
|
1677
1693
|
)
|
|
1678
1694
|
if pair_padding_side != "left":
|
|
1679
|
-
ds.meta.setdefault("_alignment", {})[
|
|
1695
|
+
ds.meta.setdefault("_alignment", {})[
|
|
1696
|
+
"recommended_pair_padding_side"
|
|
1697
|
+
] = pair_padding_side
|
|
1680
1698
|
|
|
1681
1699
|
_alignment = ds.meta.get("_alignment", {})
|
|
1682
1700
|
if _alignment:
|
|
@@ -1692,6 +1710,7 @@ def data_template(
|
|
|
1692
1710
|
|
|
1693
1711
|
if run_validation:
|
|
1694
1712
|
from ..data.worthiness import evaluate_worthiness
|
|
1713
|
+
|
|
1695
1714
|
report = evaluate_worthiness(ds)
|
|
1696
1715
|
click.echo(report.render_terminal())
|
|
1697
1716
|
|
|
@@ -1717,6 +1736,7 @@ def data_template(
|
|
|
1717
1736
|
|
|
1718
1737
|
if run_validation:
|
|
1719
1738
|
from ..data.worthiness import evaluate_worthiness
|
|
1739
|
+
|
|
1720
1740
|
report = evaluate_worthiness(ds)
|
|
1721
1741
|
click.echo(report.render_terminal())
|
|
1722
1742
|
|
|
@@ -1728,23 +1748,37 @@ def data_template(
|
|
|
1728
1748
|
|
|
1729
1749
|
if run_validation:
|
|
1730
1750
|
from ..data.worthiness import evaluate_worthiness
|
|
1751
|
+
|
|
1731
1752
|
report = evaluate_worthiness(ds)
|
|
1732
1753
|
click.echo(report.render_terminal())
|
|
1733
1754
|
|
|
1734
1755
|
ds.save_json(output)
|
|
1735
1756
|
click.echo(f"Saved {len(ds)} template-paired records to {output} (paired={ds.n_paired})")
|
|
1736
1757
|
|
|
1758
|
+
|
|
1737
1759
|
@data.command("clean-only")
|
|
1738
1760
|
@click.argument("source", type=click.Path(exists=True))
|
|
1739
|
-
@click.option(
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1761
|
+
@click.option(
|
|
1762
|
+
"--prompt-column",
|
|
1763
|
+
default="prompt",
|
|
1764
|
+
show_default=True,
|
|
1765
|
+
help="CSV column name for the clean prompt.",
|
|
1766
|
+
)
|
|
1767
|
+
@click.option(
|
|
1768
|
+
"--answer-column",
|
|
1769
|
+
default="answer",
|
|
1770
|
+
show_default=True,
|
|
1771
|
+
help="CSV column name for the answer. Pass 'none' to skip (valid for CD-T).",
|
|
1772
|
+
)
|
|
1773
|
+
@click.option("--max-records", type=int, default=None, help="Truncate to this many records.")
|
|
1745
1774
|
@click.option("--output", required=True, help="Output NormalizedDataset JSON path.")
|
|
1746
|
-
@click.option(
|
|
1747
|
-
|
|
1775
|
+
@click.option(
|
|
1776
|
+
"--validate",
|
|
1777
|
+
"run_validation",
|
|
1778
|
+
is_flag=True,
|
|
1779
|
+
default=False,
|
|
1780
|
+
help="Run worthiness checks after loading.",
|
|
1781
|
+
)
|
|
1748
1782
|
def data_clean_only(source, prompt_column, answer_column, max_records, output, run_validation):
|
|
1749
1783
|
"""Load SOURCE CSV as a clean-only dataset (no corrupt partner).
|
|
1750
1784
|
|
|
@@ -1766,6 +1800,7 @@ def data_clean_only(source, prompt_column, answer_column, max_records, output, r
|
|
|
1766
1800
|
|
|
1767
1801
|
if run_validation:
|
|
1768
1802
|
from ..data.worthiness import evaluate_worthiness
|
|
1803
|
+
|
|
1769
1804
|
report = evaluate_worthiness(ds)
|
|
1770
1805
|
click.echo(report.render_terminal())
|
|
1771
1806
|
|
|
@@ -1775,6 +1810,7 @@ def data_clean_only(source, prompt_column, answer_column, max_records, output, r
|
|
|
1775
1810
|
f"(compatible algorithms: ibcircuit, cdt)"
|
|
1776
1811
|
)
|
|
1777
1812
|
|
|
1813
|
+
|
|
1778
1814
|
@data.command("shapes")
|
|
1779
1815
|
def data_shapes():
|
|
1780
1816
|
"""List supported dataset shapes + default strategies."""
|
|
@@ -1837,6 +1873,7 @@ def _resolve_source(source, hf_subset, hf_split, max_records):
|
|
|
1837
1873
|
# inspect
|
|
1838
1874
|
# ---------------------------------------------------------------------------
|
|
1839
1875
|
|
|
1876
|
+
|
|
1840
1877
|
@cli.command()
|
|
1841
1878
|
@click.argument("artifact_path", type=click.Path(exists=True))
|
|
1842
1879
|
def inspect(artifact_path):
|
|
@@ -1874,22 +1911,29 @@ def inspect(artifact_path):
|
|
|
1874
1911
|
# prune
|
|
1875
1912
|
# ---------------------------------------------------------------------------
|
|
1876
1913
|
|
|
1914
|
+
|
|
1877
1915
|
@cli.command()
|
|
1878
1916
|
@click.option("--model", "-m", required=True, help="Model name or path (e.g., gpt2)")
|
|
1879
1917
|
@click.option(
|
|
1880
|
-
"--artifact",
|
|
1881
|
-
|
|
1918
|
+
"--artifact",
|
|
1919
|
+
"-a",
|
|
1920
|
+
required=True,
|
|
1921
|
+
type=click.Path(exists=True),
|
|
1922
|
+
help="Path to circuit artifact (.pt)",
|
|
1923
|
+
)
|
|
1924
|
+
@click.option(
|
|
1925
|
+
"--sparsity", "-s", type=float, default=0.3, show_default=True, help="Target sparsity (0.0–1.0)"
|
|
1882
1926
|
)
|
|
1883
|
-
@click.option("--sparsity", "-s", type=float, default=0.3, show_default=True,
|
|
1884
|
-
help="Target sparsity (0.0–1.0)")
|
|
1885
1927
|
@click.option(
|
|
1886
|
-
"--scope",
|
|
1887
|
-
|
|
1928
|
+
"--scope",
|
|
1929
|
+
type=click.Choice(["heads", "mlp", "both"]),
|
|
1930
|
+
default="both",
|
|
1931
|
+
show_default=True,
|
|
1932
|
+
help="Which component type to prune",
|
|
1888
1933
|
)
|
|
1889
1934
|
@click.option("--output", "-o", required=True, help="Output checkpoint directory path")
|
|
1890
1935
|
@click.option(
|
|
1891
|
-
"--precision", default="bfloat16", show_default=True,
|
|
1892
|
-
help="Torch dtype for model loading"
|
|
1936
|
+
"--precision", default="bfloat16", show_default=True, help="Torch dtype for model loading"
|
|
1893
1937
|
)
|
|
1894
1938
|
def prune(model, artifact, sparsity, scope, output, precision):
|
|
1895
1939
|
"""Prune a model using a discovered circuit and export a HF checkpoint."""
|
|
@@ -1903,6 +1947,7 @@ def prune(model, artifact, sparsity, scope, output, precision):
|
|
|
1903
1947
|
raise click.Abort()
|
|
1904
1948
|
|
|
1905
1949
|
from ..circuit import Circuit
|
|
1950
|
+
|
|
1906
1951
|
try:
|
|
1907
1952
|
circuit = Circuit.from_artifact(artifact)
|
|
1908
1953
|
except Exception as exc:
|
|
@@ -1926,24 +1971,34 @@ def prune(model, artifact, sparsity, scope, output, precision):
|
|
|
1926
1971
|
# quantize
|
|
1927
1972
|
# ---------------------------------------------------------------------------
|
|
1928
1973
|
|
|
1974
|
+
|
|
1929
1975
|
@cli.command()
|
|
1930
1976
|
@click.option("--model", "-m", required=True, help="Model name or path")
|
|
1931
1977
|
@click.option(
|
|
1932
|
-
"--artifact",
|
|
1933
|
-
|
|
1978
|
+
"--artifact",
|
|
1979
|
+
"-a",
|
|
1980
|
+
required=True,
|
|
1981
|
+
type=click.Path(exists=True),
|
|
1982
|
+
help="Path to circuit artifact (.pt)",
|
|
1983
|
+
)
|
|
1984
|
+
@click.option("--bits", type=int, default=4, show_default=True, help="Quantization bit-width")
|
|
1985
|
+
@click.option(
|
|
1986
|
+
"--high-fraction",
|
|
1987
|
+
type=float,
|
|
1988
|
+
default=0.3,
|
|
1989
|
+
show_default=True,
|
|
1990
|
+
help="Fraction of top layers kept at high precision",
|
|
1934
1991
|
)
|
|
1935
|
-
@click.option("--bits", type=int, default=4, show_default=True,
|
|
1936
|
-
help="Quantization bit-width")
|
|
1937
|
-
@click.option("--high-fraction", type=float, default=0.3, show_default=True,
|
|
1938
|
-
help="Fraction of top layers kept at high precision")
|
|
1939
1992
|
@click.option(
|
|
1940
|
-
"--backend",
|
|
1941
|
-
|
|
1993
|
+
"--backend",
|
|
1994
|
+
type=click.Choice(["quanto", "llmcompressor"]),
|
|
1995
|
+
default="quanto",
|
|
1996
|
+
show_default=True,
|
|
1997
|
+
help="Quantization backend",
|
|
1942
1998
|
)
|
|
1943
1999
|
@click.option("--output", "-o", required=True, help="Output checkpoint directory path")
|
|
1944
2000
|
@click.option(
|
|
1945
|
-
"--precision", default="bfloat16", show_default=True,
|
|
1946
|
-
help="Torch dtype for model loading"
|
|
2001
|
+
"--precision", default="bfloat16", show_default=True, help="Torch dtype for model loading"
|
|
1947
2002
|
)
|
|
1948
2003
|
def quantize(model, artifact, bits, high_fraction, backend, output, precision):
|
|
1949
2004
|
"""Apply circuit-guided mixed-precision quantization and export a HF checkpoint."""
|
|
@@ -1957,6 +2012,7 @@ def quantize(model, artifact, bits, high_fraction, backend, output, precision):
|
|
|
1957
2012
|
raise click.Abort()
|
|
1958
2013
|
|
|
1959
2014
|
from ..circuit import Circuit
|
|
2015
|
+
|
|
1960
2016
|
try:
|
|
1961
2017
|
circuit = Circuit.from_artifact(artifact)
|
|
1962
2018
|
except Exception as exc:
|
|
@@ -1969,7 +2025,8 @@ def quantize(model, artifact, bits, high_fraction, backend, output, precision):
|
|
|
1969
2025
|
)
|
|
1970
2026
|
try:
|
|
1971
2027
|
quantized = quick.quantize(
|
|
1972
|
-
tl_model,
|
|
2028
|
+
tl_model,
|
|
2029
|
+
circuit,
|
|
1973
2030
|
bits=bits,
|
|
1974
2031
|
high_fraction=high_fraction,
|
|
1975
2032
|
backend=backend,
|
|
@@ -1985,26 +2042,41 @@ def quantize(model, artifact, bits, high_fraction, backend, output, precision):
|
|
|
1985
2042
|
# export
|
|
1986
2043
|
# ---------------------------------------------------------------------------
|
|
1987
2044
|
|
|
2045
|
+
|
|
1988
2046
|
@cli.command()
|
|
1989
2047
|
@click.option("--model", "-m", required=True, help="Model name or path")
|
|
1990
2048
|
@click.option(
|
|
1991
|
-
"--artifact",
|
|
1992
|
-
|
|
2049
|
+
"--artifact",
|
|
2050
|
+
"-a",
|
|
2051
|
+
required=True,
|
|
2052
|
+
type=click.Path(exists=True),
|
|
2053
|
+
help="Path to circuit artifact (.pt)",
|
|
1993
2054
|
)
|
|
1994
2055
|
@click.option("--output", "-o", required=True, help="Output checkpoint directory path")
|
|
1995
2056
|
@click.option(
|
|
1996
|
-
"--intervention",
|
|
1997
|
-
|
|
2057
|
+
"--intervention",
|
|
2058
|
+
type=click.Choice(["pruning", "quantization"]),
|
|
2059
|
+
default="pruning",
|
|
2060
|
+
show_default=True,
|
|
2061
|
+
help="Intervention type applied before export",
|
|
1998
2062
|
)
|
|
1999
|
-
@click.option("--sparsity", "-s", type=float, default=0.3, show_default=True,
|
|
2000
|
-
help="Sparsity for pruning intervention")
|
|
2001
2063
|
@click.option(
|
|
2002
|
-
"--
|
|
2003
|
-
|
|
2064
|
+
"--sparsity",
|
|
2065
|
+
"-s",
|
|
2066
|
+
type=float,
|
|
2067
|
+
default=0.3,
|
|
2068
|
+
show_default=True,
|
|
2069
|
+
help="Sparsity for pruning intervention",
|
|
2070
|
+
)
|
|
2071
|
+
@click.option(
|
|
2072
|
+
"--scope",
|
|
2073
|
+
type=click.Choice(["heads", "mlp", "both"]),
|
|
2074
|
+
default="both",
|
|
2075
|
+
show_default=True,
|
|
2076
|
+
help="Pruning scope (only used when intervention=pruning)",
|
|
2004
2077
|
)
|
|
2005
2078
|
@click.option(
|
|
2006
|
-
"--precision", default="bfloat16", show_default=True,
|
|
2007
|
-
help="Torch dtype for model loading"
|
|
2079
|
+
"--precision", default="bfloat16", show_default=True, help="Torch dtype for model loading"
|
|
2008
2080
|
)
|
|
2009
2081
|
def export(model, artifact, output, intervention, sparsity, scope, precision):
|
|
2010
2082
|
"""Apply an intervention to a model and export a HuggingFace checkpoint.
|
|
@@ -2049,6 +2121,7 @@ def export(model, artifact, output, intervention, sparsity, scope, precision):
|
|
|
2049
2121
|
# run (YAML pipeline)
|
|
2050
2122
|
# ---------------------------------------------------------------------------
|
|
2051
2123
|
|
|
2124
|
+
|
|
2052
2125
|
@cli.command()
|
|
2053
2126
|
@click.argument("config_path", type=click.Path(exists=True))
|
|
2054
2127
|
def run(config_path):
|
|
@@ -2106,6 +2179,14 @@ def run(config_path):
|
|
|
2106
2179
|
if disc:
|
|
2107
2180
|
console.print("[cyan]Step: discovery[/cyan]")
|
|
2108
2181
|
try:
|
|
2182
|
+
# ig_steps/mlp_hook/chat_template_mode reach Pipeline.discover()'s
|
|
2183
|
+
# **kw only when the YAML sets them, so unset keys behave exactly
|
|
2184
|
+
# as before (no seed override, no extra discovery-config keys).
|
|
2185
|
+
extra_disc_kw = {
|
|
2186
|
+
key: disc[key]
|
|
2187
|
+
for key in ("ig_steps", "mlp_hook", "chat_template_mode")
|
|
2188
|
+
if key in disc
|
|
2189
|
+
}
|
|
2109
2190
|
pipe.discover(
|
|
2110
2191
|
algorithm=disc.get("algorithm", "eap-ig"),
|
|
2111
2192
|
level=disc.get("level", "node"),
|
|
@@ -2113,6 +2194,8 @@ def run(config_path):
|
|
|
2113
2194
|
n_examples=disc.get("n_examples", 128),
|
|
2114
2195
|
batch_size=disc.get("batch_size", 4),
|
|
2115
2196
|
scope=disc.get("scope", "both"),
|
|
2197
|
+
seed=disc.get("seed"),
|
|
2198
|
+
**extra_disc_kw,
|
|
2116
2199
|
)
|
|
2117
2200
|
console.print(f" Circuit: {pipe._circuit!r}")
|
|
2118
2201
|
except Exception as exc:
|
|
@@ -2127,6 +2210,8 @@ def run(config_path):
|
|
|
2127
2210
|
pipe.evaluate(
|
|
2128
2211
|
pillars=eval_cfg.get("pillars"),
|
|
2129
2212
|
n_examples=eval_cfg.get("n_examples", 256),
|
|
2213
|
+
n_stability_runs=eval_cfg.get("n_stability_runs", 5),
|
|
2214
|
+
target_task=eval_cfg.get("target_task"),
|
|
2130
2215
|
)
|
|
2131
2216
|
except Exception as exc:
|
|
2132
2217
|
console.print(f"[yellow]Warning: evaluation failed:[/yellow] {exc}")
|
|
@@ -2188,9 +2273,18 @@ def run(config_path):
|
|
|
2188
2273
|
if viz_cfg and viz_cfg.get("enabled", True) and pipe._circuit is not None:
|
|
2189
2274
|
console.print("[cyan]Step: visualize[/cyan]")
|
|
2190
2275
|
try:
|
|
2276
|
+
# max_nodes/max_edges/edge_threshold only apply to a `.json` output
|
|
2277
|
+
# (a bounded graph payload); only forward them when the YAML sets
|
|
2278
|
+
# them, so other visualize modes (comparison/dashboard) are unaffected.
|
|
2279
|
+
extra_viz_kw = {
|
|
2280
|
+
key: viz_cfg[key]
|
|
2281
|
+
for key in ("max_nodes", "max_edges", "edge_threshold")
|
|
2282
|
+
if key in viz_cfg
|
|
2283
|
+
}
|
|
2191
2284
|
pipe.visualize(
|
|
2192
2285
|
mode=viz_cfg.get("mode", "graph"),
|
|
2193
2286
|
output=viz_cfg.get("output"),
|
|
2287
|
+
**extra_viz_kw,
|
|
2194
2288
|
)
|
|
2195
2289
|
except Exception as exc:
|
|
2196
2290
|
console.print(f"[yellow]Warning: visualize failed:[/yellow] {exc}")
|
|
@@ -39,7 +39,7 @@ if TYPE_CHECKING: # pragma: no cover - typing only
|
|
|
39
39
|
from transformer_lens import HookedTransformer
|
|
40
40
|
|
|
41
41
|
from .evaluation.report import FaithfulnessReport
|
|
42
|
-
|
|
42
|
+
|
|
43
43
|
from pathlib import Path
|
|
44
44
|
|
|
45
45
|
__all__ = [
|
|
@@ -656,9 +656,7 @@ def quantize(
|
|
|
656
656
|
import re
|
|
657
657
|
|
|
658
658
|
if backend not in ("quanto", "llmcompressor"):
|
|
659
|
-
raise ValueError(
|
|
660
|
-
f"backend must be 'quanto' or 'llmcompressor', got {backend!r}"
|
|
661
|
-
)
|
|
659
|
+
raise ValueError(f"backend must be 'quanto' or 'llmcompressor', got {backend!r}")
|
|
662
660
|
|
|
663
661
|
if not circuit.scores:
|
|
664
662
|
raise ValueError(
|
|
@@ -688,9 +686,7 @@ def quantize(
|
|
|
688
686
|
n_layers = getattr(cfg, "num_hidden_layers", None)
|
|
689
687
|
if n_layers is None and cfg is not None:
|
|
690
688
|
# Gemma-3 / multimodal configs nest the decoder under text_config.
|
|
691
|
-
n_layers = getattr(
|
|
692
|
-
getattr(cfg, "text_config", None), "num_hidden_layers", None
|
|
693
|
-
)
|
|
689
|
+
n_layers = getattr(getattr(cfg, "text_config", None), "num_hidden_layers", None)
|
|
694
690
|
if n_layers is None and max_layer >= 0:
|
|
695
691
|
n_layers = max_layer + 1
|
|
696
692
|
if not n_layers:
|
|
@@ -702,9 +698,9 @@ def quantize(
|
|
|
702
698
|
if tokenizer is None:
|
|
703
699
|
from transformers import AutoTokenizer
|
|
704
700
|
|
|
705
|
-
repo_id =
|
|
706
|
-
getattr(model, "config", None), "_name_or_path", None
|
|
707
|
-
)
|
|
701
|
+
repo_id = (
|
|
702
|
+
getattr(getattr(model, "config", None), "_name_or_path", None) or circuit.model_name
|
|
703
|
+
)
|
|
708
704
|
if not repo_id:
|
|
709
705
|
raise ValueError(
|
|
710
706
|
"quantize(backend='llmcompressor') needs a tokenizer; pass "
|
|
@@ -812,9 +808,7 @@ def export_checkpoint(
|
|
|
812
808
|
return path
|
|
813
809
|
|
|
814
810
|
|
|
815
|
-
def _push_checkpoint_to_hub(
|
|
816
|
-
path: str, hub_repo: Optional[str], hub_private: bool
|
|
817
|
-
) -> None:
|
|
811
|
+
def _push_checkpoint_to_hub(path: str, hub_repo: Optional[str], hub_private: bool) -> None:
|
|
818
812
|
"""Upload a written checkpoint directory to the HuggingFace Hub.
|
|
819
813
|
|
|
820
814
|
Opt-in archival path for :func:`export_checkpoint`. The local checkpoint is
|
|
@@ -822,9 +816,7 @@ def _push_checkpoint_to_hub(
|
|
|
822
816
|
authenticated token (``huggingface-cli login`` or ``HF_TOKEN``).
|
|
823
817
|
"""
|
|
824
818
|
if not hub_repo:
|
|
825
|
-
raise ValueError(
|
|
826
|
-
"export_checkpoint(push_to_hub=True) needs hub_repo='org/name'."
|
|
827
|
-
)
|
|
819
|
+
raise ValueError("export_checkpoint(push_to_hub=True) needs hub_repo='org/name'.")
|
|
828
820
|
try:
|
|
829
821
|
from huggingface_hub import HfApi
|
|
830
822
|
except ImportError as exc: # pragma: no cover - optional dependency
|
|
@@ -898,7 +890,8 @@ def benchmark(
|
|
|
898
890
|
dtype=dtype,
|
|
899
891
|
**kw,
|
|
900
892
|
)
|
|
901
|
-
|
|
893
|
+
|
|
894
|
+
|
|
902
895
|
# --------------------------------------------------------------------------- #
|
|
903
896
|
# load_scores #
|
|
904
897
|
# --------------------------------------------------------------------------- #
|
|
@@ -1026,6 +1019,7 @@ def selective_finetune(
|
|
|
1026
1019
|
)
|
|
1027
1020
|
try:
|
|
1028
1021
|
from transformers import AutoConfig
|
|
1022
|
+
|
|
1029
1023
|
hf_cfg = AutoConfig.from_pretrained(resolved_model)
|
|
1030
1024
|
if n_layers is None:
|
|
1031
1025
|
n_layers = hf_cfg.num_hidden_layers
|
|
@@ -1105,7 +1099,7 @@ def visualize_circuit(
|
|
|
1105
1099
|
... second_circuit=circuit2, output="compare.html")
|
|
1106
1100
|
"""
|
|
1107
1101
|
if mode == "graph":
|
|
1108
|
-
return circuit.plot(output)
|
|
1102
|
+
return circuit.plot(output, **kw)
|
|
1109
1103
|
|
|
1110
1104
|
if mode == "comparison":
|
|
1111
1105
|
from .visualize.comparison import ComparisonDashboard
|
|
@@ -1152,6 +1146,5 @@ def visualize_circuit(
|
|
|
1152
1146
|
return None
|
|
1153
1147
|
|
|
1154
1148
|
raise ValueError(
|
|
1155
|
-
f"Unknown visualization mode: {mode!r}. "
|
|
1156
|
-
"Use 'graph', 'comparison', or 'dashboard'."
|
|
1149
|
+
f"Unknown visualization mode: {mode!r}. " "Use 'graph', 'comparison', or 'dashboard'."
|
|
1157
1150
|
)
|