Files that are both large and changed often are where bugs tend to cluster and where refactoring pays off first. Each file in the current tree is placed by its size and by the number of commits that changed it; its hotspot score is changes × √lines. Files without counted lines, such as binary files, are left out.
Each dot is a file; a bigger dot is a higher score. The dashed lines mark the median file size and the median number of changes, so the large files that change often are in the top right. Both axes are logarithmic. Showing the 2,000 highest-scoring of 5,935 files.
The files ranked by hotspot score: the larger a file is and the more often it changes, the higher it ranks. Authors is how many people have changed the file, bots aside, as on the Code Ownership page: a hotspot only one person has changed is also a bus-factor risk.
| File | Lines | Changes | Authors | Score | |
|---|---|---|---|---|---|
| src/transformers/modeling_utils.py | 5,161 | 1,102 | 232 | 79,167.8 | |
| src/transformers/trainer.py | 4,726 | 1,007 | 369 | 69,227.1 | |
| tests/test_modeling_common.py | 6,675 | 690 | 122 | 56,373.5 | |
| src/transformers/models/auto/modeling_auto.py | 2,704 | 622 | 267 | 32,344.0 | |
| src/transformers/generation/utils.py | 4,429 | 479 | 124 | 31,877.8 | |
| src/transformers/__init__.py | 824 | 1,045 | 318 | 29,997.1 | |
| src/transformers/testing_utils.py | 4,954 | 395 | 128 | 27,801.9 | |
| tests/generation/test_utils.py | 6,050 | 356 | 87 | 27,690.3 | |
| src/transformers/training_args.py | 2,916 | 507 | 197 | 27,378.0 | |
| docs/source/en/_toctree.yml | 1,632 | 655 | 244 | 26,460.7 |
| File | Lines | Changes | Authors | Score | |
|---|---|---|---|---|---|
| src/transformers/modeling_utils.py | 5,161 | 1,102 | 232 | 79,167.8 | |
| src/transformers/trainer.py | 4,726 | 1,007 | 369 | 69,227.1 | |
| tests/test_modeling_common.py | 6,675 | 690 | 122 | 56,373.5 | |
| src/transformers/models/auto/modeling_auto.py | 2,704 | 622 | 267 | 32,344.0 | |
| src/transformers/generation/utils.py | 4,429 | 479 | 124 | 31,877.8 | |
| src/transformers/__init__.py | 824 | 1,045 | 318 | 29,997.1 | |
| src/transformers/testing_utils.py | 4,954 | 395 | 128 | 27,801.9 | |
| tests/generation/test_utils.py | 6,050 | 356 | 87 | 27,690.3 | |
| src/transformers/training_args.py | 2,916 | 507 | 197 | 27,378.0 | |
| docs/source/en/_toctree.yml | 1,632 | 655 | 244 | 26,460.7 | |
| src/transformers/tokenization_utils_base.py | 3,764 | 393 | 142 | 24,111.1 | |
| src/transformers/utils/import_utils.py | 3,406 | 367 | 155 | 21,418.5 | |
| utils/check_repo.py | 1,540 | 380 | 132 | 14,912.3 | |
| README.md | 338 | 715 | 242 | 13,145.1 | |
| src/transformers/configuration_utils.py | 1,721 | 315 | 88 | 13,067.8 | |
| src/transformers/models/auto/tokenization_auto.py | 1,035 | 406 | 166 | 13,061.6 | |
| setup.py | 347 | 668 | 112 | 12,443.5 | |
| src/transformers/models/auto/configuration_auto.py | 465 | 511 | 208 | 11,019.1 | |
| src/transformers/models/__init__.py | 556 | 453 | 214 | 10,681.6 | |
| tests/test_tokenization_common.py | 2,888 | 198 | 55 | 10,640.5 | |
| tests/utils/test_modeling_utils.py | 4,203 | 156 | 49 | 10,113.6 | |
| tests/models/whisper/test_modeling_whisper.py | 3,497 | 168 | 44 | 9,934.8 | |
| src/transformers/utils/dummy_pt_objects.py | 460 | 453 | 182 | 9,715.8 | |
| src/transformers/models/qwen2_5_omni/modeling_qwen2_5_omni.py | 3,997 | 144 | 41 | 9,103.9 | |
| src/transformers/cache_utils.py | 2,166 | 195 | 50 | 9,075.4 | |
| src/transformers/processing_utils.py | 2,430 | 183 | 56 | 9,021.0 | |
| src/transformers/models/qwen2_5_omni/modular_qwen2_5_omni.py | 3,844 | 142 | 45 | 8,804.0 | |
| src/transformers/models/wav2vec2/modeling_wav2vec2.py | 2,029 | 193 | 71 | 8,693.6 | |
| tests/trainer/test_trainer.py | 1,439 | 226 | 92 | 8,573.1 | |
| src/transformers/generation/configuration_utils.py | 1,920 | 190 | 50 | 8,325.4 | |
| docs/source/ko/_toctree.yml | 1,242 | 235 | 75 | 8,281.9 | |
| src/transformers/models/bigbird_pegasus/modeling_bigbird_pegasus.py | 2,380 | 168 | 63 | 8,195.9 | |
| src/transformers/models/auto/image_processing_auto.py | 780 | 267 | 103 | 7,456.9 | |
| src/transformers/models/qwen3_omni_moe/modeling_qwen3_omni_moe.py | 4,222 | 114 | 38 | 7,407.4 | |
| src/transformers/generation/logits_process.py | 3,252 | 125 | 69 | 7,128.3 | |
| src/transformers/models/bart/modeling_bart.py | 1,312 | 196 | 74 | 7,099.4 | |
| src/transformers/models/t5/modeling_t5.py | 1,513 | 181 | 76 | 7,040.4 | |
| src/transformers/models/whisper/modeling_whisper.py | 1,402 | 178 | 66 | 6,664.9 | |
| src/transformers/models/mbart/modeling_mbart.py | 1,382 | 178 | 69 | 6,617.2 | |
| src/transformers/utils/quantization_config.py | 2,105 | 143 | 63 | 6,560.9 | |
| src/transformers/models/qwen2_vl/modeling_qwen2_vl.py | 1,398 | 173 | 54 | 6,468.4 | |
| src/transformers/models/big_bird/modeling_big_bird.py | 2,502 | 128 | 54 | 6,402.6 | |
| src/transformers/models/gpt2/modeling_gpt2.py | 1,131 | 183 | 77 | 6,154.4 | |
| src/transformers/models/led/modeling_led.py | 2,198 | 126 | 47 | 5,907.2 | |
| src/transformers/conversion_mapping.py | 2,266 | 122 | 56 | 5,807.5 | |
| src/transformers/models/musicgen/modeling_musicgen.py | 2,155 | 121 | 37 | 5,617.1 | |
| src/transformers/models/qwen2_5_vl/modeling_qwen2_5_vl.py | 1,465 | 146 | 46 | 5,588.2 | |
| src/transformers/pipelines/__init__.py | 1,159 | 164 | 67 | 5,583.2 | |
| src/transformers/models/speecht5/modeling_speecht5.py | 3,079 | 100 | 43 | 5,548.9 | |
| src/transformers/models/seamless_m4t/modeling_seamless_m4t.py | 3,779 | 90 | 34 | 5,532.6 | |
| src/transformers/convert_slow_tokenizer.py | 2,095 | 120 | 56 | 5,492.5 | |
| src/transformers/trainer_pt_utils.py | 1,655 | 134 | 59 | 5,451.3 | |
| src/transformers/pipelines/base.py | 1,413 | 145 | 63 | 5,450.5 | |
| src/transformers/models/llama/modeling_llama.py | 501 | 243 | 89 | 5,439.1 | |
| src/transformers/models/blip_2/modeling_blip_2.py | 2,040 | 120 | 38 | 5,420.0 | |
| utils/check_docstrings.py | 2,167 | 115 | 58 | 5,353.4 | |
| src/transformers/models/bert/modeling_bert.py | 1,370 | 142 | 56 | 5,255.9 | |
| src/transformers/models/gemma3n/modeling_gemma3n.py | 2,330 | 107 | 34 | 5,164.9 | |
| src/transformers/trainer_utils.py | 1,262 | 144 | 71 | 5,115.5 | |
| src/transformers/models/falcon/modeling_falcon.py | 1,218 | 145 | 51 | 5,060.5 | |
| src/transformers/models/marian/modeling_marian.py | 1,104 | 152 | 53 | 5,050.4 | |
| src/transformers/models/gemma3/modeling_gemma3.py | 1,116 | 151 | 50 | 5,044.4 | |
| src/transformers/models/unispeech_sat/modeling_unispeech_sat.py | 1,598 | 126 | 52 | 5,036.8 | |
| src/transformers/models/emu3/modeling_emu3.py | 1,616 | 125 | 36 | 5,024.9 | |
| src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py | 4,120 | 78 | 27 | 5,006.6 | |
| src/transformers/integrations/integration_utils.py | 2,679 | 96 | 62 | 4,968.9 | |
| src/transformers/models/pegasus/modeling_pegasus.py | 1,127 | 148 | 52 | 4,968.5 | |
| src/transformers/models/gemma3n/modular_gemma3n.py | 2,440 | 99 | 31 | 4,890.2 | |
| src/transformers/models/prophetnet/modeling_prophetnet.py | 1,850 | 113 | 38 | 4,860.3 | |
| src/transformers/models/roberta/modeling_roberta.py | 1,253 | 137 | 52 | 4,849.5 | |
| src/transformers/models/aria/modeling_aria.py | 1,126 | 144 | 42 | 4,832.1 | |
| src/transformers/models/perceiver/modeling_perceiver.py | 3,294 | 84 | 39 | 4,821.0 | |
| utils/tests_fetcher.py | 1,243 | 135 | 30 | 4,759.6 | |
| src/transformers/models/detr/modeling_detr.py | 1,645 | 117 | 47 | 4,745.4 | |
| src/transformers/models/mllama/modeling_mllama.py | 1,613 | 118 | 39 | 4,739.1 | |
| src/transformers/models/blenderbot/modeling_blenderbot.py | 1,012 | 147 | 52 | 4,676.4 | |
| src/transformers/models/tapas/modeling_tapas.py | 2,078 | 102 | 39 | 4,649.7 | |
| src/transformers/models/electra/modeling_electra.py | 1,353 | 126 | 54 | 4,634.7 | |
| src/transformers/models/moshi/modeling_moshi.py | 1,860 | 107 | 32 | 4,614.7 | |
| src/transformers/models/rag/modeling_rag.py | 1,667 | 113 | 39 | 4,613.7 | |
| src/transformers/models/longformer/modeling_longformer.py | 2,124 | 100 | 48 | 4,608.7 | |
| utils/notification_service.py | 1,674 | 112 | 16 | 4,582.4 | |
| src/transformers/models/qwen3_omni_moe/modular_qwen3_omni_moe.py | 2,890 | 85 | 31 | 4,569.5 | |
| src/transformers/models/musicgen_melody/modeling_musicgen_melody.py | 2,076 | 100 | 28 | 4,556.3 | |
| src/transformers/models/mixtral/modeling_mixtral.py | 661 | 177 | 66 | 4,550.7 | |
| src/transformers/models/deformable_detr/modeling_deformable_detr.py | 1,711 | 110 | 44 | 4,550.1 | |
| src/transformers/models/hubert/modeling_hubert.py | 1,133 | 135 | 53 | 4,544.1 | |
| src/transformers/models/gpt_neo/modeling_gpt_neo.py | 912 | 149 | 59 | 4,499.7 | |
| src/transformers/utils/__init__.py | 355 | 238 | 108 | 4,484.3 | |
| src/transformers/models/gptj/modeling_gptj.py | 852 | 153 | 61 | 4,465.9 | |
| src/transformers/models/m2m_100/modeling_m2m_100.py | 921 | 147 | 53 | 4,461.2 | |
| src/transformers/models/glm4v_moe/modeling_glm4v_moe.py | 1,737 | 107 | 34 | 4,459.5 | |
| src/transformers/models/idefics/modeling_idefics.py | 1,267 | 125 | 43 | 4,449.4 | |
| src/transformers/models/unispeech/modeling_unispeech.py | 1,330 | 122 | 51 | 4,449.2 | |
| src/transformers/models/blenderbot_small/modeling_blenderbot_small.py | 976 | 142 | 50 | 4,436.2 | |
| src/transformers/models/maskformer/modeling_maskformer.py | 2,085 | 96 | 43 | 4,383.5 | |
| src/transformers/models/gpt_neox/modeling_gpt_neox.py | 660 | 170 | 59 | 4,367.4 | |
| src/transformers/models/reformer/modeling_reformer.py | 2,676 | 84 | 37 | 4,345.3 | |
| src/transformers/models/qwen3_5_moe/modeling_qwen3_5_moe.py | 2,143 | 93 | 40 | 4,305.2 | |
| src/transformers/models/longt5/modeling_longt5.py | 1,844 | 100 | 47 | 4,294.2 |