circuitkit 0.1.10__tar.gz → 0.2.0__tar.gz

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