Coverage for transformer_lens/tools/model_registry/__init__.py: 100%

6 statements  

« prev     ^ index     » next       coverage.py v7.10.1, created at 2026-09-01 16:23 +0000

1"""Model Registry tools for TransformerLens. 

2 

3This package provides tools for discovering and documenting HuggingFace models 

4that are compatible with TransformerLens. 

5 

6Main modules: 

7 - api: Public API for programmatic access to model registry data 

8 - schemas: Data classes for model entries, architecture gaps, etc. 

9 - verification: Verification tracking for model compatibility 

10 - exceptions: Custom exceptions for the model registry 

11 

12Example usage: 

13 >>> from transformer_lens.tools.model_registry import api # doctest: +SKIP 

14 >>> api.is_model_supported("openai-community/gpt2") # doctest: +SKIP 

15 True 

16 >>> models = api.get_architecture_models("GPT2LMHeadModel") # doctest: +SKIP 

17""" 

18 

19from .exceptions import ( 

20 ArchitectureNotSupportedError, 

21 DataNotLoadedError, 

22 DataValidationError, 

23 ModelNotFoundError, 

24 ModelRegistryError, 

25) 

26from .schemas import ( 

27 ArchitectureAnalysis, 

28 ArchitectureGap, 

29 ArchitectureGapsReport, 

30 ArchitectureStats, 

31 ModelEntry, 

32 ModelMetadata, 

33 ScanInfo, 

34 SupportedModelsReport, 

35) 

36from .verification import VerificationHistory, VerificationRecord 

37 

38# Canonical set of HuggingFace architecture class names supported by TransformerBridge. 

39# These must match the exact strings found in HF model config.architectures[] 

40# and correspond to adapters registered in architecture_adapter_factory.py. 

41# 

42# Internal-only architectures (NanoGPT, MinGPT, NeelSoluOld, GPT2LMHeadCustomModel, 

43# TransformerLensNative) are excluded since they never appear on HuggingFace Hub. 

44# Factory-internal alias casings (Gemma1, Neo, NeoX) are also excluded since they 

45# route to canonical adapters but HF reports the canonical names (Gemma, GPTNeo, 

46# GPTNeoX) in config.architectures instead. 

47HF_SUPPORTED_ARCHITECTURES: set[str] = { 

48 "AfmoeForCausalLM", 

49 "ApertusForCausalLM", 

50 "ArceeForCausalLM", 

51 "ASTForAudioClassification", 

52 "BaiChuanForCausalLM", 

53 "BaichuanForCausalLM", 

54 "BambaForCausalLM", 

55 "BartForConditionalGeneration", 

56 "BD3LM", 

57 "DreamModel", 

58 "Emu3ForConditionalGeneration", 

59 "AudioFlamingo3ForConditionalGeneration", 

60 "FlexOlmoForCausalLM", 

61 "GiddForDiffusionLM", 

62 "HyenaDNAForCausalLM", 

63 "LLaDA2MoeModelLM", 

64 "Jais2ForCausalLM", 

65 "JetMoeForCausalLM", 

66 "JetMoEForCausalLM", 

67 "LagunaForCausalLM", 

68 "Ministral3ForCausalLM", 

69 "VaultGemmaForCausalLM", 

70 "YoutuForCausalLM", 

71 "ModernBertDecoderForCausalLM", 

72 "MusicFlamingoForConditionalGeneration", 

73 "NanoChatForCausalLM", 

74 "RwkvForCausalLM", 

75 "SwitchTransformersForConditionalGeneration", 

76 "BertForMaskedLM", 

77 "BertLMHeadModel", 

78 "BitNetForCausalLM", 

79 "BlenderbotForConditionalGeneration", 

80 "BloomForCausalLM", 

81 "BloomModel", 

82 "CodeGenForCausalLM", 

83 "Cohere2ForCausalLM", 

84 "CohereForCausalLM", 

85 "DeepseekV2ForCausalLM", 

86 "DeepseekV3ForCausalLM", 

87 "Ernie4_5ForCausalLM", 

88 "Ernie4_5_MoeForCausalLM", 

89 "ExaoneForCausalLM", 

90 "Exaone4ForCausalLM", 

91 "DeepseekV4ForCausalLM", 

92 "FalconForCausalLM", 

93 "FalconH1ForCausalLM", 

94 "FalconMambaForCausalLM", 

95 "Florence2ForConditionalGeneration", 

96 "GemmaForCausalLM", 

97 "Gemma2ForCausalLM", 

98 "Gemma3ForCausalLM", 

99 "Gemma3ForConditionalGeneration", 

100 "Gemma3nForConditionalGeneration", 

101 "Gemma4ForConditionalGeneration", 

102 "Gemma4UnifiedForConditionalGeneration", 

103 "Gemma4ForCausalLM", 

104 "GlmForCausalLM", 

105 "Glm4ForCausalLM", 

106 "Glm4vForConditionalGeneration", 

107 "GlmAsrForConditionalGeneration", 

108 "Glm4MoeForCausalLM", 

109 "Glm4MoeLiteForCausalLM", 

110 "GlmMoeDsaForCausalLM", 

111 "GraniteForCausalLM", 

112 "GraniteMoeForCausalLM", 

113 "GraniteMoeHybridForCausalLM", 

114 "GPT2LMHeadModel", 

115 "GPTBigCodeForCausalLM", 

116 "GptOssForCausalLM", 

117 "GPTJForCausalLM", 

118 "GPTNeoForCausalLM", 

119 "OpenAIGPTLMHeadModel", 

120 "OpenELMForCausalLM", 

121 "GPTNeoXForCausalLM", 

122 "HubertForCTC", 

123 "HubertModel", 

124 "HrmTextForCausalLM", 

125 "HunYuanDenseV1ForCausalLM", 

126 "Idefics3ForConditionalGeneration", 

127 "InternLM2ForCausalLM", 

128 "JambaForCausalLM", 

129 "LEDForConditionalGeneration", 

130 "LLaDAModelLM", 

131 "LlamaForCausalLM", 

132 "Llama4ForCausalLM", 

133 "Llama4ForConditionalGeneration", 

134 "LlavaForConditionalGeneration", 

135 "LlavaNextForConditionalGeneration", 

136 "LlavaOnevisionForConditionalGeneration", 

137 "Lfm2ForCausalLM", 

138 "Lfm2MoeForCausalLM", 

139 "LongT5ForConditionalGeneration", 

140 "M2M100ForConditionalGeneration", 

141 "MambaForCausalLM", 

142 "Mamba2ForCausalLM", 

143 "MarianMTModel", 

144 "MBartForConditionalGeneration", 

145 "MiniMaxM2ForCausalLM", 

146 "NemotronForCausalLM", 

147 "NemotronHForCausalLM", 

148 "MPTForCausalLM", 

149 "MptForCausalLM", 

150 "MistralForCausalLM", 

151 "Mistral3ForConditionalGeneration", 

152 "MixtralForCausalLM", 

153 "Olmo2ForCausalLM", 

154 "Olmo3ForCausalLM", 

155 "OlmoForCausalLM", 

156 "OlmoeForCausalLM", 

157 "OlmoHybridForCausalLM", 

158 "OPTForCausalLM", 

159 "PegasusForConditionalGeneration", 

160 "OuroForCausalLM", 

161 "PhiForCausalLM", 

162 "Phi3ForCausalLM", 

163 "PhiMoEForCausalLM", 

164 "QwenForCausalLM", 

165 "Qwen2ForCausalLM", 

166 "Qwen2_5_VLForConditionalGeneration", 

167 "Qwen3VLForConditionalGeneration", 

168 "Qwen3VLMoeForConditionalGeneration", 

169 "Qwen2AudioForConditionalGeneration", 

170 "Qwen2MoeForCausalLM", 

171 "Qwen3ForCausalLM", 

172 "Qwen3MoeForCausalLM", 

173 "Qwen3NextForCausalLM", 

174 "Qwen3_5ForCausalLM", 

175 "Qwen3_5ForConditionalGeneration", 

176 "Qwen3_5MoeForCausalLM", 

177 "Qwen3_5MoeForConditionalGeneration", 

178 "RavenForCausalLM", 

179 "RecurrentGemmaForCausalLM", 

180 "SeedOssForCausalLM", 

181 "RWKV7ForCausalLM", 

182 "SmolLM3ForCausalLM", 

183 "StableLmForCausalLM", 

184 "Starcoder2ForCausalLM", 

185 "T5ForConditionalGeneration", 

186 "T5WithLMHeadModel", 

187 "MT5ForConditionalGeneration", 

188 "T5GemmaForConditionalGeneration", 

189 "T5Gemma2ForConditionalGeneration", 

190 "XGLMForCausalLM", 

191 "ViTModel", 

192 "ViTForImageClassification", 

193 "DeiTModel", 

194 "DeiTForImageClassification", 

195 "Zamba2ForCausalLM", 

196} 

197 

198# Foundation-trained orgs per architecture. Source of truth for the scraper's 

199# download-threshold bypass and the docs table's "Canonical only" toggle. 

200CANONICAL_AUTHORS_BY_ARCH: dict[str, list[str]] = { 

201 "AfmoeForCausalLM": ["arcee-ai"], 

202 "ApertusForCausalLM": ["swiss-ai"], 

203 "ArceeForCausalLM": ["arcee-ai"], 

204 "ASTForAudioClassification": ["MIT"], 

205 "BaiChuanForCausalLM": ["baichuan-inc"], 

206 "BaichuanForCausalLM": ["baichuan-inc"], 

207 "BambaForCausalLM": ["ibm-ai-platform"], 

208 "BartForConditionalGeneration": ["facebook"], 

209 "BD3LM": ["kuleshov-group"], 

210 "DreamModel": ["Dream-org", "apple"], 

211 "Emu3ForConditionalGeneration": ["BAAI"], 

212 "AudioFlamingo3ForConditionalGeneration": ["nvidia"], 

213 "FlexOlmoForCausalLM": ["allenai"], 

214 "GiddForDiffusionLM": ["dvruette"], 

215 "HyenaDNAForCausalLM": ["LongSafari"], 

216 "LLaDA2MoeModelLM": ["inclusionAI"], 

217 "Jais2ForCausalLM": ["inceptionai"], 

218 "JetMoeForCausalLM": ["jetmoe"], 

219 "JetMoEForCausalLM": ["jetmoe"], 

220 "LagunaForCausalLM": ["poolside"], 

221 "Ministral3ForCausalLM": ["mistralai"], 

222 "VaultGemmaForCausalLM": ["google"], 

223 "YoutuForCausalLM": ["tencent"], 

224 "ModernBertDecoderForCausalLM": ["jhu-clsp"], 

225 "MusicFlamingoForConditionalGeneration": ["nvidia"], 

226 "NanoChatForCausalLM": ["nanochat-students", "karpathy"], 

227 "RwkvForCausalLM": ["RWKV"], 

228 "SwitchTransformersForConditionalGeneration": ["google"], 

229 "BertForMaskedLM": ["google-bert"], 

230 "BertLMHeadModel": ["google-bert"], 

231 "BitNetForCausalLM": ["microsoft"], 

232 "BlenderbotForConditionalGeneration": ["facebook"], 

233 "BloomForCausalLM": ["bigscience"], 

234 "BloomModel": ["bigscience", "TurkuNLP"], 

235 "CodeGenForCausalLM": ["Salesforce"], 

236 "Cohere2ForCausalLM": ["CohereLabs"], 

237 "CohereForCausalLM": ["CohereLabs"], 

238 "DeepseekV2ForCausalLM": ["deepseek-ai"], 

239 "DeepseekV3ForCausalLM": ["deepseek-ai"], 

240 "Ernie4_5ForCausalLM": ["baidu"], 

241 "Ernie4_5_MoeForCausalLM": ["baidu"], 

242 "ExaoneForCausalLM": ["LGAI-EXAONE"], 

243 "Exaone4ForCausalLM": ["LGAI-EXAONE"], 

244 "DeepseekV4ForCausalLM": ["deepseek-ai"], 

245 "FalconForCausalLM": ["tiiuae"], 

246 "FalconH1ForCausalLM": ["tiiuae"], 

247 "FalconMambaForCausalLM": ["tiiuae"], 

248 "Florence2ForConditionalGeneration": ["florence-community", "microsoft"], 

249 "Gemma2ForCausalLM": ["google"], 

250 "Gemma3ForCausalLM": ["google"], 

251 "Gemma3ForConditionalGeneration": ["google"], 

252 "Gemma3nForConditionalGeneration": ["google"], 

253 "Gemma4ForConditionalGeneration": ["google"], 

254 "Gemma4UnifiedForConditionalGeneration": ["google"], 

255 "Gemma4ForCausalLM": ["google"], 

256 "GemmaForCausalLM": ["google"], 

257 "GlmForCausalLM": ["zai-org"], 

258 "Glm4ForCausalLM": ["zai-org", "THUDM"], 

259 "Glm4vForConditionalGeneration": ["zai-org", "THUDM"], 

260 "GlmAsrForConditionalGeneration": ["zai-org"], 

261 "Glm4MoeForCausalLM": ["zai-org"], 

262 "Glm4MoeLiteForCausalLM": ["zai-org"], 

263 "GlmMoeDsaForCausalLM": ["zai-org"], 

264 "GPT2LMHeadModel": ["openai-community", "stanford-crfm", "Writer"], 

265 "GPTBigCodeForCausalLM": ["bigcode"], 

266 "GptOssForCausalLM": ["openai"], 

267 "GPTJForCausalLM": ["EleutherAI", "togethercomputer"], 

268 "GPTNeoForCausalLM": ["EleutherAI", "roneneldan"], 

269 "GPTNeoXForCausalLM": ["EleutherAI", "cyberagent", "stabilityai", "togethercomputer"], 

270 "GraniteForCausalLM": ["ibm-granite"], 

271 "GraniteMoeForCausalLM": ["ibm-granite"], 

272 "GraniteMoeHybridForCausalLM": ["ibm-granite"], 

273 "HubertForCTC": ["facebook"], 

274 "HubertModel": ["facebook"], 

275 "HrmTextForCausalLM": ["sapientinc"], 

276 "HunYuanDenseV1ForCausalLM": ["tencent"], 

277 "Idefics3ForConditionalGeneration": ["HuggingFaceM4", "ibm-granite"], 

278 "InternLM2ForCausalLM": ["internlm"], 

279 "JambaForCausalLM": ["ai21labs"], 

280 "LEDForConditionalGeneration": ["allenai"], 

281 "LLaDAModelLM": ["GSAI-ML"], 

282 "LlamaForCausalLM": ["meta-llama", "huggyllama", "codellama", "SimpleStories"], 

283 "Llama4ForCausalLM": ["meta-llama", "trl-internal-testing"], 

284 "Llama4ForConditionalGeneration": ["meta-llama"], 

285 "LlavaForConditionalGeneration": ["llava-hf"], 

286 "LlavaNextForConditionalGeneration": ["llava-hf"], 

287 "LlavaOnevisionForConditionalGeneration": ["llava-hf"], 

288 "Lfm2ForCausalLM": ["LiquidAI"], 

289 "Lfm2MoeForCausalLM": ["LiquidAI"], 

290 "Mamba2ForCausalLM": ["state-spaces"], 

291 "LongT5ForConditionalGeneration": ["google"], 

292 "M2M100ForConditionalGeneration": ["facebook"], 

293 "MambaForCausalLM": ["state-spaces"], 

294 "MarianMTModel": ["Helsinki-NLP"], 

295 "MBartForConditionalGeneration": ["facebook"], 

296 "MiniMaxM2ForCausalLM": ["MiniMaxAI"], 

297 "NemotronForCausalLM": ["nvidia"], 

298 "NemotronHForCausalLM": ["nvidia"], 

299 "MistralForCausalLM": ["mistralai"], 

300 "Mistral3ForConditionalGeneration": ["mistralai"], 

301 "MixtralForCausalLM": ["mistralai"], 

302 "MPTForCausalLM": ["mosaicml"], 

303 "MptForCausalLM": ["mosaicml"], 

304 "MT5ForConditionalGeneration": ["google", "bigscience", "csebuetnlp"], 

305 "Olmo2ForCausalLM": ["allenai", "HPLT"], 

306 "Olmo3ForCausalLM": ["allenai"], 

307 "OlmoeForCausalLM": ["allenai"], 

308 "OlmoHybridForCausalLM": ["allenai"], 

309 "OlmoForCausalLM": ["allenai"], 

310 "OpenAIGPTLMHeadModel": ["openai-community"], 

311 "OpenELMForCausalLM": ["apple"], 

312 "OPTForCausalLM": ["facebook"], 

313 "PegasusForConditionalGeneration": ["google"], 

314 "OuroForCausalLM": ["ByteDance"], 

315 "Phi3ForCausalLM": ["microsoft"], 

316 "PhiMoEForCausalLM": ["microsoft"], 

317 "PhiForCausalLM": ["microsoft"], 

318 "Qwen2ForCausalLM": ["Qwen", "nvidia"], 

319 "Qwen2_5_VLForConditionalGeneration": ["Qwen"], 

320 "Qwen3VLForConditionalGeneration": ["Qwen"], 

321 "Qwen3VLMoeForConditionalGeneration": ["Qwen"], 

322 "Qwen2AudioForConditionalGeneration": ["Qwen"], 

323 "Qwen2MoeForCausalLM": ["Qwen"], 

324 "Qwen3ForCausalLM": ["Qwen", "nvidia"], 

325 "Qwen3MoeForCausalLM": ["Qwen"], 

326 "Qwen3NextForCausalLM": ["Qwen"], 

327 "Qwen3_5ForCausalLM": ["Qwen"], 

328 "Qwen3_5ForConditionalGeneration": ["Qwen"], 

329 "Qwen3_5MoeForCausalLM": ["Qwen"], 

330 "Qwen3_5MoeForConditionalGeneration": ["Qwen"], 

331 "QwenForCausalLM": ["Qwen"], 

332 "RavenForCausalLM": ["tomg-group-umd"], 

333 "RecurrentGemmaForCausalLM": ["google"], 

334 "SeedOssForCausalLM": ["ByteDance-Seed"], 

335 "RWKV7ForCausalLM": ["fla-hub"], 

336 "SmolLM3ForCausalLM": ["HuggingFaceTB"], 

337 "StableLmForCausalLM": ["stabilityai"], 

338 "Starcoder2ForCausalLM": ["bigcode"], 

339 "T5ForConditionalGeneration": ["google-t5", "google", "Salesforce", "MBZUAI"], 

340 "T5WithLMHeadModel": ["google-t5"], 

341 "T5GemmaForConditionalGeneration": ["google"], 

342 "T5Gemma2ForConditionalGeneration": ["google"], 

343 "XGLMForCausalLM": ["facebook"], 

344 "ViTModel": ["google"], 

345 "ViTForImageClassification": ["google"], 

346 "DeiTModel": ["facebook"], 

347 "DeiTForImageClassification": ["facebook"], 

348 "Zamba2ForCausalLM": ["Zyphra"], 

349} 

350 

351__all__ = [ 

352 # Constants 

353 "HF_SUPPORTED_ARCHITECTURES", 

354 "CANONICAL_AUTHORS_BY_ARCH", 

355 # Exceptions 

356 "ModelRegistryError", 

357 "ModelNotFoundError", 

358 "ArchitectureNotSupportedError", 

359 "DataNotLoadedError", 

360 "DataValidationError", 

361 # Schemas 

362 "ModelEntry", 

363 "ModelMetadata", 

364 "ScanInfo", 

365 "ArchitectureGap", 

366 "ArchitectureStats", 

367 "ArchitectureAnalysis", 

368 "SupportedModelsReport", 

369 "ArchitectureGapsReport", 

370 # Verification 

371 "VerificationRecord", 

372 "VerificationHistory", 

373]