circuitkit 0.2.0__tar.gz → 0.2.1__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 (824) hide show
  1. {circuitkit-0.2.0/src/circuitkit.egg-info → circuitkit-0.2.1}/PKG-INFO +1 -1
  2. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/INSTALLATION.md +1 -1
  3. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/advanced/experimental-models.md +11 -5
  4. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/user-guide/visualization.md +3 -2
  5. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/finetuning/finetune-llama.py +2 -2
  6. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/finetuning/finetune-qwen.py +1 -1
  7. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/__init__.py +1 -1
  8. circuitkit-0.2.1/src/circuitkit/_tl_patches/0007-local-checkpoint-config.patch +128 -0
  9. circuitkit-0.2.1/src/circuitkit/_tl_patches/0008-neox-lm-head.patch +27 -0
  10. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/_tl_patches/__init__.py +2 -1
  11. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/api.py +97 -36
  12. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/selective_finetuning/examples/finetune_llama.py +2 -2
  13. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/selective_finetuning/examples/finetune_qwen.py +1 -1
  14. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/selective_finetuning/finetune_utils.py +40 -2
  15. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/selective_finetuning/score_loader.py +90 -48
  16. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/eap/attribute.py +0 -2
  17. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/circuit.py +99 -13
  18. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/cli/main.py +51 -3
  19. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/corruption/effectiveness.py +3 -3
  20. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/corruption/base.py +11 -0
  21. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/corruption/code_syntax_corrupt.py +1 -1
  22. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/corruption/entity_swap.py +1 -1
  23. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/corruption/final_answer_swap.py +6 -3
  24. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/corruption/instruction_swap.py +1 -1
  25. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/corruption/logical_negation.py +1 -1
  26. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/corruption/math_step_corrupt.py +1 -1
  27. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/corruption/mcq_choice_swap.py +1 -1
  28. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/corruption/operand_swap.py +1 -1
  29. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/corruption/profession_swap.py +1 -1
  30. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/corruption/resample.py +1 -1
  31. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/corruption/token_swap.py +1 -1
  32. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/pillars/generalization.py +2 -2
  33. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/pillars/intervention_reliability.py +10 -16
  34. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/transfer.py +13 -8
  35. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/transfer_analysis.py +6 -3
  36. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/quick.py +79 -22
  37. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/visualize/d3_template.py +200 -84
  38. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/visualize/graph_viz.py +46 -18
  39. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/visualize/streamlit_app.py +1 -1
  40. {circuitkit-0.2.0 → circuitkit-0.2.1/src/circuitkit.egg-info}/PKG-INFO +1 -1
  41. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit.egg-info/SOURCES.txt +4 -0
  42. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/tl_patches/test_tl_patchset.py +90 -1
  43. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/corruption/test_effectiveness.py +9 -0
  44. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/data/test_data_corruption_strategies.py +53 -0
  45. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/integration/test_tl3_interop.py +0 -2
  46. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/integration/test_transfer_integration.py +53 -0
  47. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_api.py +107 -0
  48. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_attribute.py +31 -1
  49. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_circuit.py +137 -6
  50. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_cli_commands.py +54 -0
  51. circuitkit-0.2.1/tests/unit/test_d3_lod.py +125 -0
  52. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_finetune_utils.py +124 -0
  53. circuitkit-0.2.1/tests/unit/test_graph_export_safety.py +134 -0
  54. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_pillars.py +18 -0
  55. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_quick_api.py +119 -9
  56. circuitkit-0.2.1/tests/unit/test_r1_seed_consistency.py +77 -0
  57. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_score_loader.py +236 -22
  58. circuitkit-0.2.0/tests/unit/test_d3_lod.py +0 -74
  59. {circuitkit-0.2.0 → circuitkit-0.2.1}/.github/workflows/docs.yml +0 -0
  60. {circuitkit-0.2.0 → circuitkit-0.2.1}/.github/workflows/patch-release.yml +0 -0
  61. {circuitkit-0.2.0 → circuitkit-0.2.1}/.github/workflows/test.yml +0 -0
  62. {circuitkit-0.2.0 → circuitkit-0.2.1}/.github/workflows/version-consistency.yml +0 -0
  63. {circuitkit-0.2.0 → circuitkit-0.2.1}/LICENSE.md +0 -0
  64. {circuitkit-0.2.0 → circuitkit-0.2.1}/MANIFEST.in +0 -0
  65. {circuitkit-0.2.0 → circuitkit-0.2.1}/README.md +0 -0
  66. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/API_REFERENCE.md +0 -0
  67. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/about/faq.md +0 -0
  68. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/about/license.md +0 -0
  69. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/about/release-notes.md +0 -0
  70. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/about/roadmap.md +0 -0
  71. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/advanced/architecture-registry.md +0 -0
  72. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/advanced/chat-templates.md +0 -0
  73. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/advanced/circuit-artifacts.md +0 -0
  74. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/advanced/hallucination-detection.md +0 -0
  75. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/advanced/memory-optimization.md +0 -0
  76. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/advanced/tiny-aya.md +0 -0
  77. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/advanced/vllm-evaluation.md +0 -0
  78. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/algorithms/acdc.md +0 -0
  79. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/algorithms/capability-matrix.md +0 -0
  80. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/algorithms/cdt.md +0 -0
  81. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/algorithms/eap.md +0 -0
  82. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/algorithms/ibcircuit.md +0 -0
  83. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/algorithms/overview.md +0 -0
  84. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/algorithms/stability-tiers.md +0 -0
  85. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/api-reference/applications.md +0 -0
  86. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/api-reference/backends.md +0 -0
  87. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/api-reference/dict-config.md +0 -0
  88. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/api-reference/evaluation.md +0 -0
  89. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/api-reference/flat-api.md +0 -0
  90. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/api-reference/overview.md +0 -0
  91. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/api-reference/pipeline.md +0 -0
  92. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/api-reference/selectors.md +0 -0
  93. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/api-reference/tasks.md +0 -0
  94. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/blog/introducing-circuitkit.md +0 -0
  95. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/citation-map.md +0 -0
  96. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/cli/applications.md +0 -0
  97. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/cli/discovery.md +0 -0
  98. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/cli/evaluation.md +0 -0
  99. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/cli/overview.md +0 -0
  100. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/cli/yaml-config.md +0 -0
  101. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/contributing/documentation.md +0 -0
  102. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/contributing/new-algorithms.md +0 -0
  103. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/contributing/setup.md +0 -0
  104. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/contributing/standards.md +0 -0
  105. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/contributing/testing-on-cuda.md +0 -0
  106. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/dev_enterprise_runbook.md +0 -0
  107. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/evaluation/ablation.md +0 -0
  108. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/evaluation/baselines.md +0 -0
  109. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/evaluation/benchmarking.md +0 -0
  110. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/evaluation/causal-patching.md +0 -0
  111. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/evaluation/framework.md +0 -0
  112. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/evaluation/generalization.md +0 -0
  113. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/evaluation/robustness.md +0 -0
  114. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/evaluation/stability.md +0 -0
  115. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/examples/case-studies.md +0 -0
  116. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/examples/notebooks.md +0 -0
  117. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/examples/overview.md +0 -0
  118. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/examples/scripts.md +0 -0
  119. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/getting-started/configuration.md +0 -0
  120. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/getting-started/core-concepts.md +0 -0
  121. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/getting-started/index.md +0 -0
  122. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/getting-started/installation.md +0 -0
  123. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/getting-started/quickstart.md +0 -0
  124. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/getting-started/taxonomy.md +0 -0
  125. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/guidelines/Testing_Guidelines.md +0 -0
  126. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/guides/CONCEPTS.md +0 -0
  127. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/guides/circuit_artifact_guide.md +0 -0
  128. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/guides/eap_ig_memory_optimization.md +0 -0
  129. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/guides/hallucination_detection_guide.md +0 -0
  130. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/guides/index.md +0 -0
  131. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/guides/steering.md +0 -0
  132. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/guides/vllm_evaluation.md +0 -0
  133. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/index.md +0 -0
  134. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/product_blueprint.md +0 -0
  135. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/pypi_core_contract.md +0 -0
  136. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/reference/ARCHITECTURE_REGISTRY.md +0 -0
  137. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/reference/FEATURES.md +0 -0
  138. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/reference/hyperparameters.md +0 -0
  139. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/reference/index.md +0 -0
  140. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/references.md +0 -0
  141. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/trust/index.md +0 -0
  142. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/trust/results.md +0 -0
  143. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/trust/scope.md +0 -0
  144. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/user-guide/applications.md +0 -0
  145. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/user-guide/custom-data.md +0 -0
  146. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/user-guide/data-corruption.md +0 -0
  147. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/user-guide/data.md +0 -0
  148. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/user-guide/evaluation.md +0 -0
  149. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/user-guide/pipeline-overview.md +0 -0
  150. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/user-guide/selectors.md +0 -0
  151. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/user-guide/tasks.md +0 -0
  152. {circuitkit-0.2.0 → circuitkit-0.2.1}/docs/user-guide/troubleshooting.md +0 -0
  153. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/01-quickstart.py +0 -0
  154. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/02-discover-python-api.py +0 -0
  155. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/04-discover-yaml.py +0 -0
  156. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/05-evaluate-faithfulness.py +0 -0
  157. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/06-applications.py +0 -0
  158. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/07-pipeline.py +0 -0
  159. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/08-custom-data.py +0 -0
  160. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/09-load-and-reuse.py +0 -0
  161. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/10-steering.py +0 -0
  162. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/11-knowledge-editing.py +0 -0
  163. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/12-custom-corruption.py +0 -0
  164. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/13-transfer-matrix.py +0 -0
  165. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/case-studies/14-faithfulness-audit-for-compliance.py +0 -0
  166. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/case-studies/15-compression-for-deployment.py +0 -0
  167. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/case-studies/16-tabular-model-audit.py +0 -0
  168. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/case-studies/17-quantization-unlearning.py +0 -0
  169. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/case-studies/18-banking-safety-steering.py +0 -0
  170. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/case-studies/19-trade-finance-document-classification.py +0 -0
  171. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/case-studies/20-transit-edge-deployment.py +0 -0
  172. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/case-studies/21-quantization-permanent-unlearning.ipynb +0 -0
  173. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/case-studies/22-gender-bias-audit-and-mitigation.ipynb +0 -0
  174. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/case-studies/23-jailbreak-refusal-multi-model.ipynb +0 -0
  175. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/case-studies/24-safety-refusal-custom-data.py +0 -0
  176. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/discovery/algorithm-comparison.py +0 -0
  177. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/discovery/benchmark-circuit-discovery.py +0 -0
  178. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/experiments/e1_algo_validation_ioi.py +0 -0
  179. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/experiments/e2_cross_family_discovery.py +0 -0
  180. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/experiments/e3_neuron_level_ioi.py +0 -0
  181. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/experiments/e4_custom_data_jailbreak.py +0 -0
  182. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/experiments/e567_downstream_applications.py +0 -0
  183. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/notebooks/00_colab_setup.ipynb +0 -0
  184. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/notebooks/01_quickstart_pipeline.ipynb +0 -0
  185. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/notebooks/02_algorithm_comparison.ipynb +0 -0
  186. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/notebooks/03_evaluation_deep_dive.ipynb +0 -0
  187. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/notebooks/04_visualization_gallery.ipynb +0 -0
  188. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/notebooks/05_applications.ipynb +0 -0
  189. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/notebooks/06_cli_and_yaml.ipynb +0 -0
  190. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/notebooks/07_advanced_research_tools.ipynb +0 -0
  191. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/pruning/basic-prune.py +0 -0
  192. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/pruning/prune-llama.py +0 -0
  193. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/pruning/prune-qwen.py +0 -0
  194. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/quantization/quantize-llama.py +0 -0
  195. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/quantization/quantize-qwen.py +0 -0
  196. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/simple_csv_task.yaml +0 -0
  197. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/_common.py +0 -0
  198. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/_runner.py +0 -0
  199. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/algos/01_eap_ig_activations_gpt2.py +0 -0
  200. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/algos/02_eap_clean_corrupted_gpt2.py +0 -0
  201. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/algos/03_eap_exact_gpt2.py +0 -0
  202. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/algos/04_compare_eap_family_gpt2.py +0 -0
  203. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/algos/05_atp_gd_gpt2.py +0 -0
  204. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/algos/06_eap_gp_gpt2.py +0 -0
  205. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/algos/07_relp_gpt2.py +0 -0
  206. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/algos/08_ibcircuit_gpt2.py +0 -0
  207. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/algos/09_peap_gpt2.py +0 -0
  208. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/algos/10_cdt_gpt2.py +0 -0
  209. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/algos/11_eap_ifr_gpt2.py +0 -0
  210. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/algos/12_all_algos_llama.py +0 -0
  211. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/algos/_algos_common.py +0 -0
  212. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/01_pruning_gpt2_ioi.py +0 -0
  213. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/02_lora_healing_gpt2_ioi.py +0 -0
  214. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/03_pruning_gpt2_mmlu.py +0 -0
  215. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/04_pruning_gpt2_gender_bias.py +0 -0
  216. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/05_pruning_gpt2_sva.py +0 -0
  217. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/06_pruning_gpt2_capital_country.py +0 -0
  218. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/07_pruning_gpt2_boolq.py +0 -0
  219. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/08_pruning_gpt2_arc_easy.py +0 -0
  220. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/09_pruning_gpt2_hellaswag.py +0 -0
  221. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/10_pruning_gpt2_crows_pairs.py +0 -0
  222. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/11_knowledge_editing_gpt2.py +0 -0
  223. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/12_unlearning_tofu_gpt2.py +0 -0
  224. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/13_steering_gpt2_ioi.py +0 -0
  225. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/14_linear_probe_gpt2.py +0 -0
  226. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/15_hallucination_gpt2.py +0 -0
  227. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/16_peft_benchmark.py +0 -0
  228. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/17_knowledge_editing_full_gpt2.py +0 -0
  229. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/18_steering_safety_gpt2.py +0 -0
  230. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/19_quantization_llama1b.py +0 -0
  231. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/20_ctheta_steering_gpt2.py +0 -0
  232. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/21_ctheta_steering_llama1b.py +0 -0
  233. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/22_ctheta_advbench_refusal.py +0 -0
  234. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/23_ctheta_k_grid_gpt2.py +0 -0
  235. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/24_circuitkit_advbench_refusal_steering.py +0 -0
  236. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/25_knowledge_editing_llama_circuit.py +0 -0
  237. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/26_soft_healing_llama_circuit.py +0 -0
  238. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/27_hallucination_truthfulqa_llama.py +0 -0
  239. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/28_safety_dataset_pillar_evals.py +0 -0
  240. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/_apps_common.py +0 -0
  241. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/applications/_make_apps_cell.py +0 -0
  242. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/01_gpt2_ioi.py +0 -0
  243. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/02_gpt2_greater_than.py +0 -0
  244. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/03_llama1b_ioi.py +0 -0
  245. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/04_llama1b_greater_than.py +0 -0
  246. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/05_gpt2_mmlu.py +0 -0
  247. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/06_llama1b_mmlu.py +0 -0
  248. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/07_gpt2_gender_bias.py +0 -0
  249. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/08_gpt2_hypernymy.py +0 -0
  250. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/09_gpt2_sva.py +0 -0
  251. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/10_gpt2_capital_country.py +0 -0
  252. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/11_gpt2_boolq.py +0 -0
  253. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/12_gpt2_wmdp.py +0 -0
  254. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/13_gpt2_arc_easy.py +0 -0
  255. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/14_gpt2_arc_challenge.py +0 -0
  256. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/15_gpt2_hellaswag.py +0 -0
  257. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/16_gpt2_crows_pairs.py +0 -0
  258. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/17_gpt2_tofu.py +0 -0
  259. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/18_gpt2_gsm8k.py +0 -0
  260. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/99_aggregate.py +0 -0
  261. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/_bench_common.py +0 -0
  262. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/_custom_tasks.py +0 -0
  263. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/benchmark/_make_cell.py +0 -0
  264. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/data/01_pairwise_crowspairs.py +0 -0
  265. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/data/02_instruction_alpaca.py +0 -0
  266. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/data/03_conversational_sharegpt.py +0 -0
  267. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/data/04_mcq_mmlu_arc_hellaswag.py +0 -0
  268. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/data/05_forget_retain_tofu.py +0 -0
  269. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/data/06_strategies_all.py +0 -0
  270. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/data/07_e2e_discovery_mcq_gpt2.py +0 -0
  271. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/data/08_e2e_discovery_tofu_gpt2.py +0 -0
  272. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/data/09_e2e_discovery_crowspairs_llama1b.py +0 -0
  273. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/data/10_e2e_quality_stability_mcq_gpt2.py +0 -0
  274. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/data/11_e2e_all_algos_custom_mcq_gpt2.py +0 -0
  275. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/data/12_e2e_safety_advbench_gpt2.py +0 -0
  276. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/data/_data_common.py +0 -0
  277. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/master_aggregator.py +0 -0
  278. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/visualizations/01_circuit_graph.py +0 -0
  279. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/visualizations/02_activation_saliency.py +0 -0
  280. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/visualizations/03_feature_saliency.py +0 -0
  281. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/visualizations/04_circuit_editor.py +0 -0
  282. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/visualizations/05_comparison_dashboard.py +0 -0
  283. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/visualizations/06_jupyter_widgets.py +0 -0
  284. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/visualizations/07_gallery_generator.py +0 -0
  285. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/visualizations/08_plotter.py +0 -0
  286. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/visualizations/09_eap_visualization.py +0 -0
  287. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/visualizations/10_acdc_visualize.py +0 -0
  288. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/validation/visualizations/11_transfer_visualizer.py +0 -0
  289. {circuitkit-0.2.0 → circuitkit-0.2.1}/examples/visualization/graph-viz-example.py +0 -0
  290. {circuitkit-0.2.0 → circuitkit-0.2.1}/pyproject.toml +0 -0
  291. {circuitkit-0.2.0 → circuitkit-0.2.1}/pytest.ini +0 -0
  292. {circuitkit-0.2.0 → circuitkit-0.2.1}/requirements.txt +0 -0
  293. {circuitkit-0.2.0 → circuitkit-0.2.1}/setup.cfg +0 -0
  294. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/__main__.py +0 -0
  295. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/_tl_patches/0001-moe-dtype-and-devices-fixes.patch +0 -0
  296. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/_tl_patches/0002-gemma4.patch +0 -0
  297. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/_tl_patches/0003-sarvam-moe.patch +0 -0
  298. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/_tl_patches/0004-gemma4-hf-parity.patch +0 -0
  299. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/_tl_patches/0005-memory-no-weight-copies.patch +0 -0
  300. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/_tl_patches/0006-cohere.patch +0 -0
  301. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/analysis/__init__.py +0 -0
  302. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/analysis/cross_method_jaccard.py +0 -0
  303. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/analysis/metrics.py +0 -0
  304. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/analysis/scores.py +0 -0
  305. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/__init__.py +0 -0
  306. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/arch_registry.py +0 -0
  307. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/arch_utils.py +0 -0
  308. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/common_utils/__init__.py +0 -0
  309. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/common_utils/_covariance.py +0 -0
  310. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/common_utils/_device.py +0 -0
  311. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/common_utils/_metrics.py +0 -0
  312. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/common_utils/_tokenization.py +0 -0
  313. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/common_utils/benchmark_analysis.py +0 -0
  314. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/common_utils/cure_clue.py +0 -0
  315. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/common_utils/hallucination_detection.py +0 -0
  316. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/common_utils/linear_probe.py +0 -0
  317. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/editing/__init__.py +0 -0
  318. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/editing/cake.py +0 -0
  319. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/editing/circuit_guided_editing.py +0 -0
  320. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/editing/fine_tune_editing.py +0 -0
  321. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/editing/knowledge_editing.py +0 -0
  322. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/editing/knowledge_editing_enhanced.py +0 -0
  323. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/editing/mcircke.py +0 -0
  324. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/editing/memit_wrapper.py +0 -0
  325. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/editing/rome_wrapper.py +0 -0
  326. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/finetuning/__init__.py +0 -0
  327. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/finetuning/benchmark_peft.py +0 -0
  328. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/finetuning/circuit_tuning.py +0 -0
  329. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/finetuning/healing_metrics.py +0 -0
  330. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/finetuning/peft_methods.py +0 -0
  331. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/finetuning/soft_healing.py +0 -0
  332. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/pruning/__init__.py +0 -0
  333. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/pruning/eval_utils.py +0 -0
  334. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/pruning/examples/__init__.py +0 -0
  335. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/pruning/examples/prune.py +0 -0
  336. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/pruning/examples/prune_llama.py +0 -0
  337. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/pruning/examples/prune_qwen.py +0 -0
  338. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/pruning/finetune_utils.py +0 -0
  339. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/pruning/importance.py +0 -0
  340. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/pruning/neuron_pruner.py +0 -0
  341. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/pruning/node_pruner.py +0 -0
  342. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/pruning/pruner.py +0 -0
  343. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/pruning/score_extractor.py +0 -0
  344. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/pruning/selectors/__init__.py +0 -0
  345. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/pruning/selectors/multi_granular_selector.py +0 -0
  346. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/pruning/selectors/taylor_selector.py +0 -0
  347. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/pruning/weight_pruner.py +0 -0
  348. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/quantization/__init__.py +0 -0
  349. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/quantization/examples/__init__.py +0 -0
  350. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/quantization/examples/quantize_llama.py +0 -0
  351. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/quantization/examples/quantize_qwen.py +0 -0
  352. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/quantization/llmcompressor_quantize.py +0 -0
  353. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/quantization/quant_utils.py +0 -0
  354. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/quantization/score_extractor.py +0 -0
  355. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/quantization/selectors/__init__.py +0 -0
  356. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/quantization/selectors/awq_selector.py +0 -0
  357. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/quantization/selectors/tacq_selector.py +0 -0
  358. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/selective_finetuning/__init__.py +0 -0
  359. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/selective_finetuning/examples/__init__.py +0 -0
  360. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/selective_finetuning/selector.py +0 -0
  361. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/steering/__init__.py +0 -0
  362. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/steering/steering.py +0 -0
  363. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/steering/steering_enhanced.py +0 -0
  364. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/applications/steering/weight_steering.py +0 -0
  365. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/artifacts/__init__.py +0 -0
  366. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/artifacts/circuit_artifact.py +0 -0
  367. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/artifacts/converters.py +0 -0
  368. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/artifacts/scores.py +0 -0
  369. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/__init__.py +0 -0
  370. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/_tl_compat/__init__.py +0 -0
  371. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/_tl_compat/cohere.py +0 -0
  372. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/_tl_compat/registry.py +0 -0
  373. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/_tl_compat/smollm3.py +0 -0
  374. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/__init__.py +0 -0
  375. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/artifact_export.py +0 -0
  376. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/data.py +0 -0
  377. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/model_utils/__init__.py +0 -0
  378. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/model_utils/micro_model_utils.py +0 -0
  379. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/model_utils/transformer_lens_utils.py +0 -0
  380. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/prune.py +0 -0
  381. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/prune_algos/ACDC.py +0 -0
  382. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/prune_algos/__init__.py +0 -0
  383. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/prune_algos/mask_gradient.py +0 -0
  384. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/prune_algos/prune_algos.py +0 -0
  385. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/tasks/__init__.py +0 -0
  386. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/tasks/docstring_prompts.py +0 -0
  387. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/tasks/docstring_utils.py +0 -0
  388. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/tasks/induction_utils.py +0 -0
  389. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/tasks/ioi_dataset.py +0 -0
  390. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/tasks/ioi_utils.py +0 -0
  391. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/types.py +0 -0
  392. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/utils/__init__.py +0 -0
  393. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/utils/ablation_activations.py +0 -0
  394. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/utils/custom_tqdm.py +0 -0
  395. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/utils/graph_utils.py +0 -0
  396. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/utils/misc.py +0 -0
  397. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/utils/patch_wrapper.py +0 -0
  398. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/utils/patchable_model.py +0 -0
  399. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/utils/task_utils.py +0 -0
  400. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/utils/tensor_ops.py +0 -0
  401. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/acdc/visualize.py +0 -0
  402. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/cdt/__init__.py +0 -0
  403. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/cdt/adapter.py +0 -0
  404. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/cdt/propagation.py +0 -0
  405. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/cdt/pyfunctions/__init__.py +0 -0
  406. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/cdt/pyfunctions/cdt_ablations.py +0 -0
  407. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/cdt/pyfunctions/cdt_basic.py +0 -0
  408. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/cdt/pyfunctions/cdt_core.py +0 -0
  409. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/cdt/pyfunctions/cdt_from_source_nodes.py +0 -0
  410. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/cdt/pyfunctions/cdt_source_to_target.py +0 -0
  411. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/cdt/pyfunctions/faithfulness_ablations.py +0 -0
  412. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/cdt/pyfunctions/general.py +0 -0
  413. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/cdt/pyfunctions/ioi_dataset.py +0 -0
  414. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/cdt/pyfunctions/local_importance.py +0 -0
  415. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/cdt/pyfunctions/pathology.py +0 -0
  416. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/cdt/pyfunctions/toy_model.py +0 -0
  417. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/cdt/pyfunctions/wrappers.py +0 -0
  418. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/eap/__init__.py +0 -0
  419. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/eap/artifact_export.py +0 -0
  420. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/eap/attribute_node.py +0 -0
  421. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/eap/circuit_kit_adapter.py +0 -0
  422. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/eap/eap_utils.py +0 -0
  423. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/eap/evaluate.py +0 -0
  424. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/eap/graph.py +0 -0
  425. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/eap/metrics.py +0 -0
  426. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/eap/py.typed +0 -0
  427. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/eap/visualization.py +0 -0
  428. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/ibcircuit/__init__.py +0 -0
  429. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/ibcircuit/artifact_export.py +0 -0
  430. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/ibcircuit/ib_noise.py +0 -0
  431. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/ibcircuit/ib_utils.py +0 -0
  432. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/ibcircuit/model_wrapper.py +0 -0
  433. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/backends/ibcircuit/trainer.py +0 -0
  434. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/benchmarks/__init__.py +0 -0
  435. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/benchmarks/baselines/__init__.py +0 -0
  436. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/benchmarks/baselines/gptq.py +0 -0
  437. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/benchmarks/baselines/magnitude.py +0 -0
  438. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/benchmarks/baselines/random.py +0 -0
  439. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/benchmarks/baselines/sparsegpt.py +0 -0
  440. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/benchmarks/baselines/wanda.py +0 -0
  441. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/benchmarks/benchmark.py +0 -0
  442. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/benchmarks/reporting.py +0 -0
  443. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/cli/__init__.py +0 -0
  444. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/cli/config.py +0 -0
  445. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/cli/debug.py +0 -0
  446. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/cli/utils.py +0 -0
  447. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/corruption/__init__.py +0 -0
  448. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/corruption/base.py +0 -0
  449. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/corruption/color_swap.py +0 -0
  450. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/corruption/distractor.py +0 -0
  451. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/corruption/distractor_variation.py +0 -0
  452. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/corruption/entity_swap.py +0 -0
  453. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/corruption/negation.py +0 -0
  454. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/corruption/paraphrase.py +0 -0
  455. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/corruption/pipeline.py +0 -0
  456. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/corruption/position_shift.py +0 -0
  457. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/corruption/role_swap.py +0 -0
  458. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/corruption/token_swap.py +0 -0
  459. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/corruption/validators.py +0 -0
  460. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/corruption/voice_swap.py +0 -0
  461. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/__init__.py +0 -0
  462. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/adapters/__init__.py +0 -0
  463. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/adapters/base.py +0 -0
  464. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/adapters/code.py +0 -0
  465. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/adapters/conversational.py +0 -0
  466. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/adapters/forget_retain.py +0 -0
  467. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/adapters/instruction.py +0 -0
  468. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/adapters/math.py +0 -0
  469. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/adapters/mcq.py +0 -0
  470. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/adapters/pairwise.py +0 -0
  471. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/adapters/qa.py +0 -0
  472. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/adapters/safety_prompt.py +0 -0
  473. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/auto_detect.py +0 -0
  474. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/clean_only.py +0 -0
  475. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/corruption/__init__.py +0 -0
  476. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/corruption/benign_rewrite.py +0 -0
  477. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/corruption/llm_counterfactual.py +0 -0
  478. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/corruption/template.py +0 -0
  479. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/corruption/template_utils.py +0 -0
  480. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/dataset_schema.py +0 -0
  481. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/eap_dataset.py +0 -0
  482. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/invariance_groups/__init__.py +0 -0
  483. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/invariance_groups/builder.py +0 -0
  484. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/invariance_groups/schema.py +0 -0
  485. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/normalized.py +0 -0
  486. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/normalized_task.py +0 -0
  487. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/__init__.py +0 -0
  488. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/core/TLACDCCorrespondence.py +0 -0
  489. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/core/TLACDCEdge.py +0 -0
  490. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/core/TLACDCExperiment.py +0 -0
  491. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/core/TLACDCInterpNode.py +0 -0
  492. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/core/__init__.py +0 -0
  493. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/core/acdc_utils.py +0 -0
  494. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/generation/__init__.py +0 -0
  495. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/generation/cache.py +0 -0
  496. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/generation/manager.py +0 -0
  497. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/generation/utils.py +0 -0
  498. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/storage/__init__.py +0 -0
  499. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/storage/greaterthan/greaterthan_32_ffd33106.json +0 -0
  500. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/storage/ioi/ioi_16_8c879ddb.json +0 -0
  501. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/storage/ioi/ioi_32_a432ca4a.json +0 -0
  502. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/storage/ioi/ioi_500_1f7e7324.json +0 -0
  503. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/storage/ioi/ioi_64_3bba747e.json +0 -0
  504. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/storage/ioi/ioi_64_f4a164db.json +0 -0
  505. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/storage/ioi/ioi_8_e87df42e.json +0 -0
  506. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/__init__.py +0 -0
  507. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/binary_align/generate_binary_align.py +0 -0
  508. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/binary_align/jailbreak_binary.csv +0 -0
  509. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/binary_align/safe_binary.csv +0 -0
  510. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/capital_country/__init__.py +0 -0
  511. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/capital_country/utils.py +0 -0
  512. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/docstring/__init__.py +0 -0
  513. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/docstring/prompts.py +0 -0
  514. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/docstring/utils.py +0 -0
  515. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/double_io/__init__.py +0 -0
  516. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/double_io/double_io_dataset.py +0 -0
  517. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/gender_bias/__init__.py +0 -0
  518. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/gender_bias/utils.py +0 -0
  519. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/gender_bias/utils2.py +0 -0
  520. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/greaterthan/__init__.py +0 -0
  521. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/greaterthan/utils.py +0 -0
  522. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/hypernymy/__init__.py +0 -0
  523. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/hypernymy/utils.py +0 -0
  524. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/induction/__init__.py +0 -0
  525. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/induction/utils.py +0 -0
  526. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/ioi/__init__.py +0 -0
  527. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/ioi/ioi_dataset.py +0 -0
  528. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/ioi/utils.py +0 -0
  529. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/sva/__init__.py +0 -0
  530. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/sva/utils.py +0 -0
  531. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/task_data/tasks/wmdp/wmdp_utils.py +0 -0
  532. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/template.py +0 -0
  533. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/wikitext_calibration.py +0 -0
  534. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/data/worthiness.py +0 -0
  535. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/__init__.py +0 -0
  536. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/checkpoint_benchmark.py +0 -0
  537. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/evaluate.py +0 -0
  538. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/full.py +0 -0
  539. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/hf_checkpoint.py +0 -0
  540. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/intervention_faithfulness.py +0 -0
  541. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/lm_eval_simple.py +0 -0
  542. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/lm_harness.py +0 -0
  543. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/master_grid.py +0 -0
  544. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/mmlu_eval.py +0 -0
  545. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/pillars/__init__.py +0 -0
  546. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/pillars/ablation.py +0 -0
  547. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/pillars/baselines.py +0 -0
  548. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/pillars/causal_patching.py +0 -0
  549. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/pillars/robustness.py +0 -0
  550. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/pillars/stability.py +0 -0
  551. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/report.py +0 -0
  552. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/reports/__init__.py +0 -0
  553. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/reports/aggregator.py +0 -0
  554. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/reports/robustness_report.py +0 -0
  555. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/reports/stability_report.py +0 -0
  556. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/stability_discovery.py +0 -0
  557. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/transfer_visualizer.py +0 -0
  558. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/evaluation/weight_based_eval.py +0 -0
  559. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/pipeline.py +0 -0
  560. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/provenance.py +0 -0
  561. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/selection/__init__.py +0 -0
  562. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/selection/cdt_selector.py +0 -0
  563. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/selection/eap_gp_selector.py +0 -0
  564. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/selection/eap_selector.py +0 -0
  565. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/selection/gptq_selector.py +0 -0
  566. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/selection/ibcircuit_selector.py +0 -0
  567. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/selection/magnitude_selector.py +0 -0
  568. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/selection/random_selector.py +0 -0
  569. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/selection/relp_selector.py +0 -0
  570. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/selection/wanda_selector.py +0 -0
  571. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/__init__.py +0 -0
  572. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/_algorithm_families.py +0 -0
  573. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/_chat.py +0 -0
  574. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/auto_schema.py +0 -0
  575. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/bootstrap.py +0 -0
  576. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/builtins/__init__.py +0 -0
  577. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/builtins/boolq.py +0 -0
  578. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/builtins/capital_country.py +0 -0
  579. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/builtins/double_io.py +0 -0
  580. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/builtins/gender_bias.py +0 -0
  581. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/builtins/glue.py +0 -0
  582. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/builtins/greater_than.py +0 -0
  583. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/builtins/gsm8k.py +0 -0
  584. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/builtins/hypernymy.py +0 -0
  585. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/builtins/ifeval.py +0 -0
  586. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/builtins/ioi.py +0 -0
  587. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/builtins/ioi_acdc.py +0 -0
  588. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/builtins/ioi_legacy.py +0 -0
  589. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/builtins/mmlu.py +0 -0
  590. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/builtins/sva.py +0 -0
  591. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/builtins/truthfulqa.py +0 -0
  592. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/builtins/winogrande.py +0 -0
  593. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/builtins/winogrande_mc.py +0 -0
  594. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/builtins/wmdp.py +0 -0
  595. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/generic.py +0 -0
  596. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/hf_factory.py +0 -0
  597. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/inspect.py +0 -0
  598. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/registry.py +0 -0
  599. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/safety_datasets.py +0 -0
  600. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/specs.py +0 -0
  601. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/type_specs/__init__.py +0 -0
  602. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/type_specs/classification_spec.py +0 -0
  603. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/type_specs/generation_spec.py +0 -0
  604. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/type_specs/mcq_spec.py +0 -0
  605. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/type_specs/qa_spec.py +0 -0
  606. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/type_specs/summarization_spec.py +0 -0
  607. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/type_specs/translation_spec.py +0 -0
  608. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/validator.py +0 -0
  609. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tasks/yaml_loader.py +0 -0
  610. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tooling/__init__.py +0 -0
  611. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/tooling/validate_environment.py +0 -0
  612. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/utils/__init__.py +0 -0
  613. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/utils/artifacts.py +0 -0
  614. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/utils/async_processing.py +0 -0
  615. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/utils/bootstrap.py +0 -0
  616. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/utils/config.py +0 -0
  617. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/utils/corruption_validation.py +0 -0
  618. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/utils/dataset_cache.py +0 -0
  619. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/utils/debug.py +0 -0
  620. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/utils/debugging.py +0 -0
  621. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/utils/device.py +0 -0
  622. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/utils/distributed.py +0 -0
  623. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/utils/exceptions.py +0 -0
  624. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/utils/hparams.py +0 -0
  625. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/utils/logging.py +0 -0
  626. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/utils/memory.py +0 -0
  627. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/utils/profiling.py +0 -0
  628. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/utils/token_utils.py +0 -0
  629. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/visualize/__init__.py +0 -0
  630. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/visualize/comparison.py +0 -0
  631. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/visualize/editor.py +0 -0
  632. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/visualize/feature_saliency.py +0 -0
  633. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/visualize/gallery.py +0 -0
  634. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/visualize/jupyter_suite.py +0 -0
  635. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/visualize/plotter.py +0 -0
  636. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/visualize/saliency.py +0 -0
  637. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit/visualize/theme.py +0 -0
  638. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit.egg-info/dependency_links.txt +0 -0
  639. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit.egg-info/entry_points.txt +0 -0
  640. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit.egg-info/requires.txt +0 -0
  641. {circuitkit-0.2.0 → circuitkit-0.2.1}/src/circuitkit.egg-info/top_level.txt +0 -0
  642. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/__init__.py +0 -0
  643. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/apply/__init__.py +0 -0
  644. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/apply/conftest.py +0 -0
  645. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/apply/test_architecture_registry.py +0 -0
  646. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/apply/test_benchmark_analysis.py +0 -0
  647. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/apply/test_benchmark_peft.py +0 -0
  648. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/apply/test_circuit_artifact.py +0 -0
  649. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/apply/test_covariance.py +0 -0
  650. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/apply/test_cross_architecture.py +0 -0
  651. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/apply/test_fine_tune_editing.py +0 -0
  652. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/apply/test_hallucination_detection.py +0 -0
  653. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/apply/test_knowledge_editing.py +0 -0
  654. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/apply/test_knowledge_editing_enhanced.py +0 -0
  655. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/apply/test_knowledge_editing_pipeline.py +0 -0
  656. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/apply/test_linear_probe.py +0 -0
  657. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/apply/test_peft_methods.py +0 -0
  658. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/apply/test_pruner.py +0 -0
  659. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/apply/test_steering.py +0 -0
  660. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/apply/test_steering_enhanced.py +0 -0
  661. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/apply/test_tokenization.py +0 -0
  662. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/apply/test_weight_steering.py +0 -0
  663. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/ibcircuit/test_ib_noise.py +0 -0
  664. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/ibcircuit/test_ib_utils.py +0 -0
  665. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/ibcircuit/test_model_wrapper.py +0 -0
  666. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/ibcircuit/test_trainer.py +0 -0
  667. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/test_artifact_export_integration.py +0 -0
  668. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/tl_compat/test_aya_expanse.py +0 -0
  669. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/tl_compat/test_aya_expanse_32b.py +0 -0
  670. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/tl_compat/test_aya_expanse_32b_parity.py +0 -0
  671. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/tl_compat/test_aya_expanse_parity.py +0 -0
  672. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/tl_compat/test_cohere.py +0 -0
  673. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/tl_compat/test_cohere_backends.py +0 -0
  674. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/tl_compat/test_cohere_gqa.py +0 -0
  675. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/tl_compat/test_cohere_parity.py +0 -0
  676. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/tl_compat/test_cohere_selectors.py +0 -0
  677. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/tl_compat/test_cohere_wiring.py +0 -0
  678. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/tl_compat/test_command_r7b.py +0 -0
  679. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/tl_compat/test_command_r7b_parity.py +0 -0
  680. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/tl_compat/test_smollm3.py +0 -0
  681. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/tl_compat/test_smollm3_parity.py +0 -0
  682. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/tl_patches/configs/Ministral-3-3B-Instruct-2512.json +0 -0
  683. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/tl_patches/configs/gemma-4-31B-it.json +0 -0
  684. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/tl_patches/configs/sarvam-30b.json +0 -0
  685. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/backends/tl_patches/test_patch_hook.py +0 -0
  686. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/benchmarks/test_baselines.py +0 -0
  687. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/benchmarks/test_benchmark.py +0 -0
  688. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/conftest.py +0 -0
  689. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/corruption/__init__.py +0 -0
  690. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/corruption/test_distractor.py +0 -0
  691. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/corruption/test_entity_swap.py +0 -0
  692. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/corruption/test_new_corruptions.py +0 -0
  693. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/corruption/test_paraphrase.py +0 -0
  694. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/corruption/test_pipeline.py +0 -0
  695. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/corruption/test_pipeline_integration_ioi.py +0 -0
  696. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/corruption/test_practical_examples.py +0 -0
  697. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/corruption/test_role_swap.py +0 -0
  698. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/corruption/test_strategies_integration.py +0 -0
  699. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/corruption/test_strategies_standalone.py +0 -0
  700. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/corruption/test_template.py +0 -0
  701. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/corruption/test_template_utils.py +0 -0
  702. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/corruption/test_token_swap.py +0 -0
  703. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/corruption/test_validators.py +0 -0
  704. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/corruption/test_yaml_strategy_synthesis.py +0 -0
  705. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/data/test_qa_adapter.py +0 -0
  706. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/fixtures/sample_pipeline.yaml +0 -0
  707. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/integration/test_chat_template_instruct.py +0 -0
  708. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/integration/test_interfaces_e2e.py +0 -0
  709. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/integration/test_soft_healing_integration.py +0 -0
  710. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/integration/test_steering_ioi.py +0 -0
  711. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/integration/test_template_e2e.py +0 -0
  712. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/integration/test_transfer_matrix.py +0 -0
  713. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/integration/test_transfer_minimal.py +0 -0
  714. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/integration/test_yaml_run_advanced.py +0 -0
  715. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/__init__.py +0 -0
  716. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_aya_expanse_32b_discovery.py +0 -0
  717. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_aya_expanse_32b_evaluation.py +0 -0
  718. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_aya_expanse_32b_interventions.py +0 -0
  719. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_aya_expanse_discovery.py +0 -0
  720. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_aya_expanse_evaluation.py +0 -0
  721. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_aya_expanse_interventions.py +0 -0
  722. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_cdt_nonzero_scores.py +0 -0
  723. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_circuit_tuner_training.py +0 -0
  724. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_cli_and_api_args.py +0 -0
  725. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_cohere_discovery.py +0 -0
  726. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_cohere_evaluation.py +0 -0
  727. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_cohere_interventions.py +0 -0
  728. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_command_r7b_discovery.py +0 -0
  729. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_command_r7b_evaluation.py +0 -0
  730. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_command_r7b_interventions.py +0 -0
  731. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_data_adapters_and_utils.py +0 -0
  732. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_greater_than_tokenizer.py +0 -0
  733. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_pruner_gqa_kv_head.py +0 -0
  734. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_smollm3_discovery.py +0 -0
  735. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_smollm3_evaluation.py +0 -0
  736. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_smollm3_interventions.py +0 -0
  737. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/regression/test_steering_and_baselines.py +0 -0
  738. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/release/test_release.py +0 -0
  739. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/tasks/__init__.py +0 -0
  740. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/tasks/test_auto_schema.py +0 -0
  741. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/tasks/test_capital_country.py +0 -0
  742. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/tasks/test_chat_template.py +0 -0
  743. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/tasks/test_cohere_tokenization.py +0 -0
  744. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/tasks/test_generic_task.py +0 -0
  745. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/tasks/test_glue.py +0 -0
  746. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/tasks/test_greater_than_corruption.py +0 -0
  747. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/tasks/test_gsm8k.py +0 -0
  748. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/tasks/test_ioi_regression.py +0 -0
  749. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/tasks/test_validator.py +0 -0
  750. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/tasks/test_winogrande.py +0 -0
  751. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/tasks/test_winogrande_mc.py +0 -0
  752. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/test_custom_data.py +0 -0
  753. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/test_environment.py +0 -0
  754. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/test_packaging.py +0 -0
  755. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/__init__.py +0 -0
  756. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/conftest.py +0 -0
  757. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/sample_pipeline.yaml +0 -0
  758. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_attribute_node.py +0 -0
  759. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_baselines_multidraw.py +0 -0
  760. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_bootstrap.py +0 -0
  761. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_circuit_kit_adapter.py +0 -0
  762. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_circuit_scores.py +0 -0
  763. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_cli.py +0 -0
  764. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_cli_smoke.py +0 -0
  765. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_config_defaults.py +0 -0
  766. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_d5_d7_import.py +0 -0
  767. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_device_allocator.py +0 -0
  768. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_double_io.py +0 -0
  769. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_eap_grad_scope.py +0 -0
  770. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_end_to_end.py +0 -0
  771. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_evaluate.py +0 -0
  772. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_exceptions.py +0 -0
  773. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_expandable_segments.py +0 -0
  774. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_extended_schema.py +0 -0
  775. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_graph.py +0 -0
  776. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_graph_viz.py +0 -0
  777. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_graph_viz_bounded.py +0 -0
  778. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_hf_checkpoint.py +0 -0
  779. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_hparams.py +0 -0
  780. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_init_exports.py +0 -0
  781. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_instruction_swap_audit.py +0 -0
  782. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_mean_activations.py +0 -0
  783. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_mlp1.py +0 -0
  784. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_modules_exist.py +0 -0
  785. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_multi_token_answers.py +0 -0
  786. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_multi_token_unit.py +0 -0
  787. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_neuron_pruner.py +0 -0
  788. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_no_regressions.py +0 -0
  789. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_node_pruner.py +0 -0
  790. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_normalized_task.py +0 -0
  791. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_optimize_memory_usage.py +0 -0
  792. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_perplexity_metric.py +0 -0
  793. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_pillar_baseline_reuse.py +0 -0
  794. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_pipeline_benchmark_offload.py +0 -0
  795. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_pipeline_smoke.py +0 -0
  796. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_pipeline_unit.py +0 -0
  797. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_qkv_memory_guard.py +0 -0
  798. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_quantize_export_flow.py +0 -0
  799. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_quick_extensions.py +0 -0
  800. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_r2_effect_magnitude.py +0 -0
  801. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_ranking_metrics.py +0 -0
  802. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_report.py +0 -0
  803. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_security_hardening.py +0 -0
  804. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_selector.py +0 -0
  805. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_selector_bugs.py +0 -0
  806. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_selector_registry.py +0 -0
  807. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_soft_healing.py +0 -0
  808. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_stability_robustness_reports.py +0 -0
  809. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_steering.py +0 -0
  810. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_structural_pruner.py +0 -0
  811. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_taylor_grad_scope.py +0 -0
  812. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_tokenize_batch_pair_max_length.py +0 -0
  813. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_tokenize_warning_throttle.py +0 -0
  814. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_trust_remote_code.py +0 -0
  815. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_validators_direct.py +0 -0
  816. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_yaml_pipeline_config.py +0 -0
  817. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/unit/test_yaml_run_cli.py +0 -0
  818. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/visualize/__init__.py +0 -0
  819. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/visualize/test_comparison.py +0 -0
  820. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/visualize/test_editor.py +0 -0
  821. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/visualize/test_feature_saliency.py +0 -0
  822. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/visualize/test_gallery.py +0 -0
  823. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/visualize/test_jupyter_suite.py +0 -0
  824. {circuitkit-0.2.0 → circuitkit-0.2.1}/tests/visualize/test_saliency.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: circuitkit
3
- Version: 0.2.0
3
+ Version: 0.2.1
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>
@@ -39,7 +39,7 @@ transformers>=5.15,<6, ordered-set, pyyaml, networkx,
39
39
  matplotlib, ipywidgets, scikit-learn, evaluate,
40
40
  sacrebleu, rouge_score, bert-score, accelerate,
41
41
  sentence-transformers, click, rich, torch-pruning>=1.0,
42
- transformer-lens==3.8.0 (CircuitKIT applies its Gemma-4 / Sarvam-MoE / Cohere patches at import)
42
+ transformer-lens==3.8.0 (CircuitKIT applies its Gemma-4 / Sarvam-MoE / Cohere patches and the Pythia / GPT-NeoX loading fix at import)
43
43
  ```
44
44
 
45
45
  Install core only:
@@ -42,11 +42,17 @@ repository — no `HF_TOKEN` needed.
42
42
  [Tests](#tests) below).
43
43
 
44
44
  !!! note "Local checkpoint folders"
45
- TransformerLens 3.8 uses `llama` and `gemma` substrings in a local checkpoint
46
- path for loader selection before it reads `config.json`. CircuitKIT rejects
47
- ambiguous local paths with a rename/symlink suggestion; use a neutral folder
48
- name such as `./checkpoint`. Local SmolLM3 checkpoint folders are not
49
- supported by the current port; load `HuggingFaceTB/SmolLM3-3B` by Hub ID.
45
+ While CircuitKIT's in-memory TransformerLens patch series is active
46
+ (`transformer-lens==3.8.0`, with `import circuitkit` before the first
47
+ `import transformer_lens`), a local checkpoint folder loads from its
48
+ `config.json` whatever it is called (a fine-tune in
49
+ `meta-llama-Llama-3.2-1B_sft/` is not mistaken for base Llama-3.2-1B).
50
+ Without the series, a folder whose path contains "llama" or "gemma" is
51
+ refused. Local Gemma checkpoints, fine-tunes included, are refused until
52
+ CircuitKIT moves to TransformerLens 4: TransformerLens 3.8 has Gemma configs
53
+ for Hub names only, and loading the Hub ID gives the base weights. Local SmolLM3
54
+ checkpoint folders are not supported by the current port; load
55
+ `HuggingFaceTB/SmolLM3-3B` by Hub ID.
50
56
 
51
57
  ## Gemma-4 and Sarvam-MoE: discovery-only TransformerLens ports
52
58
 
@@ -27,7 +27,7 @@ pipe.visualize(mode="graph", output="./circuit.html")
27
27
 
28
28
  ## Mode 1: Graph view
29
29
 
30
- Renders the circuit as a directed graph: nodes are attention heads and MLP layers, edges represent information flow weighted by attribution score.
30
+ Renders the circuit as a directed graph: nodes are attention heads and MLP layers, edges join circuit nodes of adjacent layers, weighted by node importance. They are not measured connections.
31
31
 
32
32
  ```python
33
33
  fig = ck.visualize_circuit(circuit, mode="graph")
@@ -35,7 +35,8 @@ fig = ck.visualize_circuit(circuit, mode="graph")
35
35
 
36
36
  - Nodes coloured by type (blue = attention head, amber = MLP)
37
37
  - Node size proportional to importance score
38
- - Edges only for components at or above sparsity threshold
38
+ - Edges are drawn only between components in the circuit (pruned components have none)
39
+ - A graph with more than 20,000 edges opens with the threshold raised so it draws at most 20,000 (the page says how many are shown); move the threshold to 0 to show all
39
40
  - Hover tooltips with layer, head index, and importance score
40
41
 
41
42
  Graph mode delegates to `Circuit.plot`, which takes only an optional output path.
@@ -385,8 +385,8 @@ def _build_parser() -> argparse.ArgumentParser:
385
385
  mdl = p.add_argument_group("model loading")
386
386
  mdl.add_argument(
387
387
  "--dtype",
388
- default="float16",
389
- choices=["float16", "bfloat16", "float32"],
388
+ default="bfloat16",
389
+ choices=["bfloat16", "float32"],
390
390
  help="Model dtype for inference and training.",
391
391
  )
392
392
  mdl.add_argument(
@@ -367,7 +367,7 @@ def _build_parser() -> argparse.ArgumentParser:
367
367
  mdl.add_argument(
368
368
  "--dtype",
369
369
  default="bfloat16",
370
- choices=["float16", "bfloat16", "float32"],
370
+ choices=["bfloat16", "float32"],
371
371
  help="Model dtype. Qwen models default to bfloat16.",
372
372
  )
373
373
  mdl.add_argument(
@@ -8,7 +8,7 @@ from ._tl_patches import install as _install_tl_patches
8
8
  _install_tl_patches()
9
9
 
10
10
  # The release pipeline (scripts/release.py set-version) rewrites this line.
11
- __version__ = "0.2.0"
11
+ __version__ = "0.2.1"
12
12
  __author__ = "Pratinav Seth, Hem Gosalia, Aditya Kasliwal, Vinay Kumar Sankarapu"
13
13
  __description__ = "Unified Discover, Evaluate, Intervene toolkit for mechanistic interpretability"
14
14
  _API_EXPORTS = {"discover_circuit", "evaluate_circuit", "load_circuit"}
@@ -0,0 +1,128 @@
1
+ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2
+ From: hemgo-lexsi <hem.gosalia@lexsi.ai>
3
+ Date: Thu, 29 Oct 2026 13:36:47 +0530
4
+ Subject: [PATCH 7/7] local checkpoints: config and model class from
5
+ config.json, not the path
6
+
7
+ convert_hf_model_config chose the architecture, and for 29 branches the
8
+ whole config, from substrings of the model name. A local checkpoint's
9
+ directory name is arbitrary: a fine-tuned "meta-llama-Llama-3.2-1B_sft"
10
+ folder loaded with base Llama-3.2-1B's hard-coded config and never read
11
+ its own config.json, and other Llama-named folders crashed on
12
+ hf_config=None. For a local directory with a config.json, the chain now
13
+ sees an empty name, so the architecture comes from config.json and only
14
+ architecture-keyed branches match (Llama: the generic LlamaForCausalLM
15
+ branch). get_pretrained_state_dict picks a local checkpoint's model class
16
+ from its architecture instead of "bert" / "t5" / "hubert" / "wav2vec2" in
17
+ the path. Hub names are unchanged.
18
+ ---
19
+ transformer_lens/loading_from_pretrained.py | 34 ++++++++++++++++-----
20
+ 1 file changed, 27 insertions(+), 7 deletions(-)
21
+
22
+ diff --git a/transformer_lens/loading_from_pretrained.py b/transformer_lens/loading_from_pretrained.py
23
+ index 1f80721..bd33dd8 100644
24
+ --- a/transformer_lens/loading_from_pretrained.py
25
+ +++ b/transformer_lens/loading_from_pretrained.py
26
+ @@ -151,6 +151,11 @@ def get_official_model_name(model_name: str) -> str:
27
+ return official_model_name
28
+
29
+
30
+ +# Patch 0007: local checkpoints take their config and model class from
31
+ +# config.json, never from their path name. Read by circuitkit.load_model.
32
+ +LOCAL_CHECKPOINTS_FROM_CONFIG = True
33
+ +
34
+ +
35
+ def convert_hf_model_config(model_name: str, **kwargs: Any) -> dict[str, Any]:
36
+ """
37
+ Returns the model config for a HuggingFace model, converted to a dictionary
38
+ @@ -159,12 +164,21 @@ def convert_hf_model_config(model_name: str, **kwargs: Any) -> dict[str, Any]:
39
+ Takes the official_model_name as an input.
40
+ """
41
+ # In case the user passed in an alias
42
+ - if (Path(model_name) / "config.json").exists():
43
+ + is_local = (Path(model_name) / "config.json").exists()
44
+ + if is_local:
45
+ logging.info("Loading model config from local directory")
46
+ official_model_name = model_name
47
+ else:
48
+ official_model_name = get_official_model_name(model_name)
49
+
50
+ + # A local checkpoint is described by its config.json alone. Its directory
51
+ + # name says nothing reliable (a fine-tuned "meta-llama-Llama-3.2-1B_sft"
52
+ + # folder is not base Llama-3.2-1B), so no branch below may match on it:
53
+ + # they see an empty name until the chain is done.
54
+ + checkpoint_name = official_model_name
55
+ + if is_local:
56
+ + official_model_name = ""
57
+ +
58
+ # Load HuggingFace model config. Stays None on the name-based branches
59
+ # below, which infer the architecture from the model name and never fetch.
60
+ hf_config: Any = None
61
+ @@ -194,7 +208,7 @@ def convert_hf_model_config(model_name: str, **kwargs: Any) -> dict[str, Any]:
62
+ else:
63
+ huggingface_token = os.environ.get("HF_TOKEN", "")
64
+ hf_config = AutoConfig.from_pretrained(
65
+ - official_model_name,
66
+ + checkpoint_name,
67
+ token=huggingface_token if len(huggingface_token) > 0 else None,
68
+ **kwargs,
69
+ )
70
+ @@ -1841,6 +1855,7 @@ def convert_hf_model_config(model_name: str, **kwargs: Any) -> dict[str, Any]:
71
+ }
72
+ else:
73
+ raise NotImplementedError(f"{architecture} is not currently supported.")
74
+ + official_model_name = checkpoint_name
75
+ # All of these models use LayerNorm
76
+ cfg_dict["original_architecture"] = architecture
77
+ # Carried on the cfg so the loader can act on the quantization without a
78
+ @@ -2213,11 +2228,16 @@ def get_pretrained_state_dict(
79
+ if "torch_dtype" in kwargs:
80
+ dtype = kwargs["torch_dtype"]
81
+ del kwargs["torch_dtype"]
82
+ - if Path(official_model_name).exists():
83
+ + is_local = Path(official_model_name).exists()
84
+ + if is_local:
85
+ official_model_name = str(Path(official_model_name).resolve())
86
+ logging.info(f"Loading model from local path {official_model_name}")
87
+ else:
88
+ official_model_name = get_official_model_name(official_model_name)
89
+ + # The model classes below are chosen by name for Hub models; a local
90
+ + # checkpoint's path can contain "bert" or "t5" by chance, so use its
91
+ + # architecture (e.g. "T5ForConditionalGeneration") instead.
92
+ + class_key = (cfg.original_architecture or "").lower() if is_local else official_model_name
93
+ if official_model_name.startswith(NEED_REMOTE_CODE_MODELS) and not kwargs.get(
94
+ "trust_remote_code", False
95
+ ):
96
+ @@ -2275,28 +2295,28 @@ def get_pretrained_state_dict(
97
+ huggingface_token = os.environ.get("HF_TOKEN", "")
98
+ if official_model_name in NON_HF_HOSTED_MODEL_NAMES:
99
+ raise NotImplementedError("Model not hosted on HuggingFace, must pass in hf_model")
100
+ - elif "hubert" in official_model_name:
101
+ + elif "hubert" in class_key:
102
+ hf_model = HubertModel.from_pretrained(
103
+ official_model_name,
104
+ dtype=dtype,
105
+ token=huggingface_token if len(huggingface_token) > 0 else None,
106
+ **kwargs,
107
+ )
108
+ - elif "wav2vec2" in official_model_name:
109
+ + elif "wav2vec2" in class_key:
110
+ hf_model = Wav2Vec2Model.from_pretrained(
111
+ official_model_name,
112
+ dtype=dtype,
113
+ token=huggingface_token if len(huggingface_token) > 0 else None,
114
+ **kwargs,
115
+ )
116
+ - elif "bert" in official_model_name:
117
+ + elif "bert" in class_key:
118
+ hf_model = BertForPreTraining.from_pretrained(
119
+ official_model_name,
120
+ dtype=dtype,
121
+ token=huggingface_token if len(huggingface_token) > 0 else None,
122
+ **kwargs,
123
+ )
124
+ - elif "t5" in official_model_name:
125
+ + elif "t5" in class_key:
126
+ hf_model = T5ForConditionalGeneration.from_pretrained(
127
+ official_model_name,
128
+ dtype=dtype,
@@ -0,0 +1,27 @@
1
+ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2
+ From: Pratinav Seth <pratinav.seth@lexsi.ai>
3
+ Date: Sat, 10 Oct 2026 12:00:00 +0530
4
+ Subject: [PATCH] neox: read the unembedding from lm_head when embed_out is gone
5
+
6
+ transformers renamed GPTNeoXForCausalLM.embed_out to lm_head (TransformerLens
7
+ reports the change at 5.13 in one place and 5.14 in another). 3.8.0 reads
8
+ embed_out only, so every GPT-NeoX / Pythia checkpoint fails in
9
+ convert_neox_weights with AttributeError on the transformers versions CircuitKIT
10
+ requires (>=5.15). Same change as the HookedTransformer half of the upstream fix
11
+ released in 3.9.0; hasattr-based, so it does not depend on the exact version.
12
+
13
+ diff --git a/transformer_lens/pretrained/weight_conversions/neox.py b/transformer_lens/pretrained/weight_conversions/neox.py
14
+ index 70d8a6b..76827ed 100644
15
+ --- a/transformer_lens/pretrained/weight_conversions/neox.py
16
+ +++ b/transformer_lens/pretrained/weight_conversions/neox.py
17
+ @@ -54,6 +54,9 @@ def convert_neox_weights(neox, cfg: HookedTransformerConfig):
18
+ state_dict["ln_final.w"] = neox.gpt_neox.final_layer_norm.weight
19
+ state_dict["ln_final.b"] = neox.gpt_neox.final_layer_norm.bias
20
+
21
+ - state_dict["unembed.W_U"] = neox.embed_out.weight.T
22
+ + # transformers renamed GPTNeoXForCausalLM.embed_out to lm_head (5.13/5.14);
23
+ + # read whichever the installed transformers exposes.
24
+ + unembed = neox.lm_head if hasattr(neox, "lm_head") else neox.embed_out
25
+ + state_dict["unembed.W_U"] = unembed.weight.T
26
+ state_dict["unembed.b_U"] = torch.zeros(cfg.d_vocab, dtype=cfg.dtype)
27
+ return state_dict
@@ -1,7 +1,8 @@
1
1
  """Apply CircuitKIT's TransformerLens patch series at import time.
2
2
 
3
3
  The ``*.patch`` files in this directory add Gemma-4, Sarvam-MoE and Cohere support
4
- to ``transformer-lens==3.8.0`` (see README.md here). :func:`install` puts an import
4
+ to ``transformer-lens==3.8.0`` and fix local-checkpoint and GPT-NeoX / Pythia loading
5
+ (see README.md here). :func:`install` puts an import
5
6
  hook on ``sys.meta_path`` that serves each patched ``transformer_lens`` module from
6
7
  its installed source with the series applied in memory. Nothing on disk changes,
7
8
  so ``pip install circuitkit`` needs no extra step. ``import circuitkit`` installs
@@ -6,7 +6,7 @@ from contextlib import ExitStack, contextmanager
6
6
  from datetime import datetime
7
7
  from functools import partial
8
8
  from pathlib import Path
9
- from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union
9
+ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union
10
10
 
11
11
  import torch as t
12
12
 
@@ -878,6 +878,64 @@ def _build_artifact_stem(config: Dict[str, Any]) -> str:
878
878
  return "_".join(str(p) for p in parts)
879
879
 
880
880
 
881
+ def _flatten_ib_neuron_scores(
882
+ neuron_scores: Dict[str, Any],
883
+ ) -> Tuple[List[Tuple[float, Tuple[str, int, Any, int]]], Dict[str, float], Dict[str, int]]:
884
+ """Flatten IBCircuit per-neuron scores for pruning, node scores and graph metadata.
885
+
886
+ One pass over the scores yields everything the IBCircuit neuron branch of
887
+ :func:`discover_circuit` needs, so no tensor is read twice.
888
+
889
+ Args:
890
+ neuron_scores: ``{component name: 1-D score tensor}`` (values are read with
891
+ ``len`` and iteration, so any 1-D sequence of tensors works) with names
892
+ ``A{layer}.{head}`` and ``MLP {layer}``, as returned by
893
+ ``IBHookedTransformer.extract_neuron_scores``. Other names are skipped.
894
+
895
+ Returns:
896
+ A tuple ``(entries, node_scores, neurons_per_kind)``:
897
+
898
+ * ``entries``: one ``(abs score, (kind, layer, head, neuron index))`` per
899
+ neuron, with ``kind`` ``"attn"`` or ``"mlp"`` and ``head`` ``None`` for MLPs.
900
+ * ``node_scores``: the largest absolute neuron score per component, the
901
+ same shape node-level discovery writes, so ``Circuit.from_artifact``
902
+ and ``Circuit.plot`` can use it.
903
+ * ``neurons_per_kind``: ``neurons_per_head`` / ``neurons_per_mlp`` when
904
+ every component of that kind has the same neuron count. A kind whose
905
+ sizes differ (or that is absent) gets no key, so the graph treats no
906
+ component of it as pruned rather than guessing.
907
+ """
908
+ entries: List[Tuple[float, Tuple[str, int, Any, int]]] = []
909
+ node_scores: Dict[str, float] = {}
910
+ sizes: Dict[str, set] = {"neurons_per_head": set(), "neurons_per_mlp": set()}
911
+
912
+ for ib_name, score_tensor in neuron_scores.items():
913
+ attn_match = re.match(r"A(\d+)\.(\d+)$", ib_name)
914
+ mlp_match = re.match(r"MLP (\d+)$", ib_name)
915
+ if attn_match:
916
+ entry_key: Tuple[str, int, Any] = (
917
+ "attn",
918
+ int(attn_match.group(1)),
919
+ int(attn_match.group(2)),
920
+ )
921
+ sizes["neurons_per_head"].add(len(score_tensor))
922
+ elif mlp_match:
923
+ entry_key = ("mlp", int(mlp_match.group(1)), None)
924
+ sizes["neurons_per_mlp"].add(len(score_tensor))
925
+ else:
926
+ continue
927
+ top = float("-inf")
928
+ for neuron_idx, score in enumerate(score_tensor):
929
+ abs_score = abs(score.item())
930
+ entries.append((abs_score, (*entry_key, neuron_idx)))
931
+ top = max(top, abs_score)
932
+ if top != float("-inf"):
933
+ node_scores[ib_name] = top
934
+
935
+ neurons_per_kind = {k: next(iter(v)) for k, v in sizes.items() if len(v) == 1}
936
+ return entries, node_scores, neurons_per_kind
937
+
938
+
881
939
  def _save_artifact(
882
940
  data: Any, output_path: str, suffix: str, logger, config: Dict = None
883
941
  ) -> Optional[str]:
@@ -1522,8 +1580,17 @@ def discover_circuit( # noqa: C901 - complex function, refactor out of scope fo
1522
1580
  pruned_attn_neurons = defaultdict(list)
1523
1581
 
1524
1582
  all_neuron_scores = []
1583
+ # Neurons per component, for the circuit graph: a component
1584
+ # counts as pruned only when all of them were. Constant per
1585
+ # kind (set by the model config), so one number each.
1586
+ neurons_per_mlp: Optional[int] = None
1587
+ neurons_per_head: Optional[int] = None
1525
1588
  for node in tqdm(graph.nodes.values(), desc="Extracting neuron scores"):
1526
1589
  if isinstance(node, (MLPNode, AttentionNode)):
1590
+ if isinstance(node, MLPNode):
1591
+ neurons_per_mlp = node.d_neuron
1592
+ else:
1593
+ neurons_per_head = node.d_neuron
1527
1594
  # Filter by scope
1528
1595
  if effective_scope == "mlp" and not isinstance(node, MLPNode):
1529
1596
  continue
@@ -1575,13 +1642,18 @@ def discover_circuit( # noqa: C901 - complex function, refactor out of scope fo
1575
1642
  (int(attn_match.group(1)), int(attn_match.group(2)))
1576
1643
  ].append(neuron_idx)
1577
1644
 
1645
+ result_meta: Dict[str, Any] = {
1646
+ "mlp_hook": discovery_cfg.get("mlp_hook", "mlp_out"),
1647
+ "heads_hook": "attn.hook_result", # EAP uses attn.hook_result for heads
1648
+ }
1649
+ if neurons_per_mlp is not None:
1650
+ result_meta["neurons_per_mlp"] = neurons_per_mlp
1651
+ if neurons_per_head is not None:
1652
+ result_meta["neurons_per_head"] = neurons_per_head
1578
1653
  result = {
1579
1654
  "mlp": dict(pruned_mlp_neurons),
1580
1655
  "heads": dict(pruned_attn_neurons),
1581
- "_meta": {
1582
- "mlp_hook": discovery_cfg.get("mlp_hook", "mlp_out"),
1583
- "heads_hook": "attn.hook_result", # EAP uses attn.hook_result for heads
1584
- },
1656
+ "_meta": result_meta,
1585
1657
  }
1586
1658
  if config.get("output_path"):
1587
1659
  os.makedirs(os.path.dirname(config["output_path"]), exist_ok=True)
@@ -1590,6 +1662,10 @@ def discover_circuit( # noqa: C901 - complex function, refactor out of scope fo
1590
1662
  _save_artifact(
1591
1663
  {
1592
1664
  "algo": algo,
1665
+ # Task and model, so Circuit.from_artifact can label a
1666
+ # neuron-level graph (there is no scores JSON here).
1667
+ "task": discovery_cfg["task"],
1668
+ "model": model_cfg["name"],
1593
1669
  "level": "neuron",
1594
1670
  "node_scores": node_scores,
1595
1671
  "neurons_scores": graph.neurons_scores.cpu(),
@@ -1690,40 +1766,18 @@ def discover_circuit( # noqa: C901 - complex function, refactor out of scope fo
1690
1766
  # save in the same format as EAP neuron so evaluate_circuit works.
1691
1767
  pruned_mlp_neurons = defaultdict(list)
1692
1768
  pruned_attn_neurons = defaultdict(list)
1693
- all_neuron_scores = []
1694
-
1695
- for ib_name, score_tensor in node_scores.items():
1696
- attn_match = re.match(r"A(\d+)\.(\d+)$", ib_name)
1697
- mlp_match = re.match(r"MLP (\d+)$", ib_name)
1698
- for neuron_idx, score in enumerate(score_tensor):
1699
- if attn_match:
1700
- all_neuron_scores.append(
1701
- (
1702
- abs(score.item()),
1703
- (
1704
- "attn",
1705
- int(attn_match.group(1)),
1706
- int(attn_match.group(2)),
1707
- neuron_idx,
1708
- ),
1709
- )
1710
- )
1711
- elif mlp_match:
1712
- all_neuron_scores.append(
1713
- (
1714
- abs(score.item()),
1715
- ("mlp", int(mlp_match.group(1)), None, neuron_idx),
1716
- )
1717
- )
1769
+ ib_neuron_entries, ib_node_scores, neurons_per_kind = _flatten_ib_neuron_scores(
1770
+ node_scores
1771
+ )
1718
1772
 
1719
- all_neuron_scores.sort(key=lambda x: x[0]) # ascending: lowest = least important
1720
- n_to_prune = int(len(all_neuron_scores) * pruning_cfg["target_sparsity"])
1773
+ ib_neuron_entries.sort(key=lambda x: x[0]) # ascending: lowest = least important
1774
+ n_to_prune = int(len(ib_neuron_entries) * pruning_cfg["target_sparsity"])
1721
1775
 
1722
1776
  logger.info(
1723
- f"IBCircuit neuron discovery: {len(all_neuron_scores)} total neurons, pruning {n_to_prune}"
1777
+ f"IBCircuit neuron discovery: {len(ib_neuron_entries)} total neurons, pruning {n_to_prune}"
1724
1778
  )
1725
1779
 
1726
- for _, (kind, layer, head, neuron_idx) in all_neuron_scores[:n_to_prune]:
1780
+ for _, (kind, layer, head, neuron_idx) in ib_neuron_entries[:n_to_prune]:
1727
1781
  if kind == "mlp":
1728
1782
  pruned_mlp_neurons[layer].append(neuron_idx)
1729
1783
  else:
@@ -1732,15 +1786,22 @@ def discover_circuit( # noqa: C901 - complex function, refactor out of scope fo
1732
1786
  result = {
1733
1787
  "mlp": dict(pruned_mlp_neurons),
1734
1788
  "heads": dict(pruned_attn_neurons),
1735
- "_meta": {"mlp_hook": ib_config["mlp_hook"]},
1789
+ "_meta": {"mlp_hook": ib_config["mlp_hook"], **neurons_per_kind},
1736
1790
  }
1737
1791
 
1738
1792
  _save_artifact(
1739
1793
  {
1740
1794
  "algo": algo,
1795
+ "task": discovery_cfg["task"],
1796
+ "model": model_cfg["name"],
1741
1797
  "level": "neuron",
1798
+ # Largest absolute neuron score per component, as the EAP
1799
+ # neuron branch writes, so Circuit.from_artifact gets
1800
+ # non-empty scores and the circuit graph can be drawn.
1801
+ "node_scores": ib_node_scores,
1742
1802
  "neurons_scores": node_scores,
1743
- "total_neurons": len(all_neuron_scores),
1803
+ "mlp_hook": ib_config["mlp_hook"],
1804
+ "total_neurons": len(ib_neuron_entries),
1744
1805
  },
1745
1806
  config.get("output_path"),
1746
1807
  "_scores",
@@ -383,8 +383,8 @@ def _build_parser() -> argparse.ArgumentParser:
383
383
  mdl = p.add_argument_group("model loading")
384
384
  mdl.add_argument(
385
385
  "--dtype",
386
- default="float16",
387
- choices=["float16", "bfloat16", "float32"],
386
+ default="bfloat16",
387
+ choices=["bfloat16", "float32"],
388
388
  help="Model dtype for inference and training.",
389
389
  )
390
390
  mdl.add_argument(
@@ -365,7 +365,7 @@ def _build_parser() -> argparse.ArgumentParser:
365
365
  mdl.add_argument(
366
366
  "--dtype",
367
367
  default="bfloat16",
368
- choices=["float16", "bfloat16", "float32"],
368
+ choices=["bfloat16", "float32"],
369
369
  help="Model dtype. Qwen models default to bfloat16.",
370
370
  )
371
371
  mdl.add_argument(
@@ -511,13 +511,15 @@ def run_finetuning(
511
511
  eval_dataloader: Optional[DataLoader] = None,
512
512
  eval_fn: Optional[Any] = None,
513
513
  log_every: int = 10,
514
+ weight_decay: float = 0.01,
514
515
  ) -> Tuple[nn.Module, List[Dict[str, float]]]:
515
516
  """
516
517
  Run selective gradient-masked finetuning.
517
518
 
518
519
  Parameters
519
520
  ----------
520
- model : HuggingFace CausalLM on `device`.
521
+ model : HuggingFace CausalLM on `device`, in float32 or
522
+ bfloat16. float16 raises ValueError (see below).
521
523
  selection : SelectionResult controlling which params are trained.
522
524
  finetune_dataloader : DataLoader from build_finetune_dataloader.
523
525
  device : Training device.
@@ -530,6 +532,9 @@ def run_finetuning(
530
532
  eval_fn : Optional callable(model, eval_dataloader) → Dict[str, float].
531
533
  Called at the end of every epoch if provided.
532
534
  log_every : Print training loss every N steps.
535
+ weight_decay : AdamW decoupled weight decay (0.01, the AdamW default).
536
+ For a masked parameter it is applied to the selected
537
+ entries only; masked-out entries are never changed.
533
538
 
534
539
  Returns
535
540
  -------
@@ -540,10 +545,38 @@ def run_finetuning(
540
545
  -----
541
546
  Hooks are always removed in a finally block. If training is interrupted
542
547
  the model is left in its partially-trained state with requires_grad reset.
548
+
549
+ The weights are trained in their own dtype, with no float32 master copy.
550
+ AdamW cannot do that in float16: eps=1e-8 and the squared gradient of any
551
+ gradient below about 5e-3 round to 0, so the update is 0/0 or x/0 and those
552
+ weights become NaN/inf after the first step. A float16 model is therefore
553
+ rejected before anything is changed.
543
554
  """
555
+ if any(p.dtype == torch.float16 for p in model.parameters()):
556
+ raise ValueError(
557
+ "run_finetuning trains the weights in place with AdamW, which turns "
558
+ "float16 weights into NaN/inf after one step. Load the model in "
559
+ "torch.bfloat16 or torch.float32."
560
+ )
561
+
544
562
  hook_handles, trainable_params, masks_dict = setup_selective_training(model, selection, device)
545
563
 
546
- optimiser = torch.optim.AdamW(trainable_params, lr=lr)
564
+ # AdamW's decoupled weight decay shrinks every entry of a parameter, including
565
+ # the masked-out entries whose gradient is zero. Masked parameters therefore
566
+ # get no decay from the optimiser; it is applied to their selected entries
567
+ # just before each step instead. The factor is kept in float32, as AdamW's
568
+ # scalar factor is, so half-precision weights decay by the same amount.
569
+ masked_params = [p for p in trainable_params if str(id(p)) in masks_dict]
570
+ decay_factors = [
571
+ 1.0 - lr * weight_decay * masks_dict[str(id(p))].float() for p in masked_params
572
+ ]
573
+ param_groups = [
574
+ {"params": [p for p in trainable_params if str(id(p)) not in masks_dict]},
575
+ {"params": masked_params, "weight_decay": 0.0},
576
+ ]
577
+ optimiser = torch.optim.AdamW(
578
+ [g for g in param_groups if g["params"]], lr=lr, weight_decay=weight_decay
579
+ )
547
580
  epoch_logs: List[Dict[str, float]] = []
548
581
  verified = False
549
582
 
@@ -605,6 +638,11 @@ def run_finetuning(
605
638
  # during backward, so masks are applied before clipping acts
606
639
  # on the masked gradients.
607
640
  torch.nn.utils.clip_grad_norm_(trainable_params, max_grad_norm)
641
+ if weight_decay:
642
+ with torch.no_grad():
643
+ for param, factor in zip(masked_params, decay_factors):
644
+ if param.grad is not None:
645
+ param.mul_(factor)
608
646
  optimiser.step()
609
647
 
610
648
  epoch_loss += loss.item()