@@ -22,58 +22,69 @@ private func create<C: Codable, M>(
2222public enum LLMTypeRegistry {
2323
2424 /// Shared instance with default model types.
25- public static let shared : ModelTypeRegistry = . init( creators: [
26- " mistral " : create ( LlamaConfiguration . self, LlamaModel . init) ,
27- " llama " : create ( LlamaConfiguration . self, LlamaModel . init) ,
28- " phi " : create ( PhiConfiguration . self, PhiModel . init) ,
29- " phi3 " : create ( Phi3Configuration . self, Phi3Model . init) ,
30- " phimoe " : create ( PhiMoEConfiguration . self, PhiMoEModel . init) ,
31- " gemma " : create ( GemmaConfiguration . self, GemmaModel . init) ,
32- " gemma2 " : create ( Gemma2Configuration . self, Gemma2Model . init) ,
33- " gemma3 " : create ( Gemma3TextConfiguration . self, Gemma3TextModel . init) ,
34- " gemma3_text " : create ( Gemma3TextConfiguration . self, Gemma3TextModel . init) ,
35- " gemma3n " : create ( Gemma3nTextConfiguration . self, Gemma3nTextModel . init) ,
36- " qwen2 " : create ( Qwen2Configuration . self, Qwen2Model . init) ,
37- " qwen3 " : create ( Qwen3Configuration . self, Qwen3Model . init) ,
38- " qwen3_moe " : create ( Qwen3MoEConfiguration . self, Qwen3MoEModel . init) ,
39- " qwen3_next " : create ( Qwen3NextConfiguration . self, Qwen3NextModel . init) ,
40- " minicpm " : create ( MiniCPMConfiguration . self, MiniCPMModel . init) ,
41- " starcoder2 " : create ( Starcoder2Configuration . self, Starcoder2Model . init) ,
42- " cohere " : create ( CohereConfiguration . self, CohereModel . init) ,
43- " openelm " : create ( OpenElmConfiguration . self, OpenELMModel . init) ,
44- " internlm2 " : create ( InternLM2Configuration . self, InternLM2Model . init) ,
45- " deepseek_v3 " : create ( DeepseekV3Configuration . self, DeepseekV3Model . init) ,
46- " granite " : create ( GraniteConfiguration . self, GraniteModel . init) ,
47- " granitemoehybrid " : create (
48- GraniteMoeHybridConfiguration . self, GraniteMoeHybridModel . init) ,
49- " mimo " : create ( MiMoConfiguration . self, MiMoModel . init) ,
50- " mimo_v2_flash " : create ( MiMoV2FlashConfiguration . self, MiMoV2FlashModel . init) ,
51- " minimax " : create ( MiniMaxConfiguration . self, MiniMaxModel . init) ,
52- " glm4 " : create ( GLM4Configuration . self, GLM4Model . init) ,
53- " glm4_moe " : create ( GLM4MoEConfiguration . self, GLM4MoEModel . init) ,
54- " glm4_moe_lite " : create ( GLM4MoELiteConfiguration . self, GLM4MoELiteModel . init) ,
55- " acereason " : create ( Qwen2Configuration . self, Qwen2Model . init) ,
56- " falcon_h1 " : create ( FalconH1Configuration . self, FalconH1Model . init) ,
57- " bitnet " : create ( BitnetConfiguration . self, BitnetModel . init) ,
58- " smollm3 " : create ( SmolLM3Configuration . self, SmolLM3Model . init) ,
59- " ernie4_5 " : create ( Ernie45Configuration . self, Ernie45Model . init) ,
60- " lfm2 " : create ( LFM2Configuration . self, LFM2Model . init) ,
61- " baichuan_m1 " : create ( BaichuanM1Configuration . self, BaichuanM1Model . init) ,
62- " exaone4 " : create ( Exaone4Configuration . self, Exaone4Model . init) ,
63- " gpt_oss " : create ( GPTOSSConfiguration . self, GPTOSSModel . init) ,
64- " lille-130m " : create ( Lille130mConfiguration . self, Lille130mModel . init) ,
65- " olmoe " : create ( OlmoEConfiguration . self, OlmoEModel . init) ,
66- " olmo2 " : create ( Olmo2Configuration . self, Olmo2Model . init) ,
67- " olmo3 " : create ( Olmo3Configuration . self, Olmo3Model . init) ,
68- " bailing_moe " : create ( BailingMoeConfiguration . self, BailingMoeModel . init) ,
69- " lfm2_moe " : create ( LFM2MoEConfiguration . self, LFM2MoEModel . init) ,
70- " nanochat " : create ( NanoChatConfiguration . self, NanoChatModel . init) ,
71- " nemotron_h " : create ( NemotronHConfiguration . self, NemotronHModel . init) ,
72- " afmoe " : create ( AfMoEConfiguration . self, AfMoEModel . init) ,
73- " jamba_3b " : create ( JambaConfiguration . self, JambaModel . init) ,
74- " mistral3 " : create ( Mistral3TextConfiguration . self, Mistral3TextModel . init) ,
75- " apertus " : create ( ApertusConfiguration . self, ApertusModel . init) ,
76- ] )
25+ public static let shared : ModelTypeRegistry = . init( creators: all ( ) )
26+
27+ /// All predefined model types.
28+ private static func all( ) -> [ String : @Sendable ( Data) throws -> any LanguageModel ] {
29+ var models : [ String : @Sendable ( Data) throws -> any LanguageModel ] = [
30+ " mistral " : create ( LlamaConfiguration . self, LlamaModel . init) ,
31+ " llama " : create ( LlamaConfiguration . self, LlamaModel . init) ,
32+ " phi " : create ( PhiConfiguration . self, PhiModel . init) ,
33+ " phi3 " : create ( Phi3Configuration . self, Phi3Model . init) ,
34+ " phimoe " : create ( PhiMoEConfiguration . self, PhiMoEModel . init) ,
35+ " gemma " : create ( GemmaConfiguration . self, GemmaModel . init) ,
36+ " gemma2 " : create ( Gemma2Configuration . self, Gemma2Model . init) ,
37+ " gemma3 " : create ( Gemma3TextConfiguration . self, Gemma3TextModel . init) ,
38+ " gemma3_text " : create ( Gemma3TextConfiguration . self, Gemma3TextModel . init) ,
39+ " gemma3n " : create ( Gemma3nTextConfiguration . self, Gemma3nTextModel . init) ,
40+ " qwen2 " : create ( Qwen2Configuration . self, Qwen2Model . init) ,
41+ " qwen3 " : create ( Qwen3Configuration . self, Qwen3Model . init) ,
42+ " qwen3_moe " : create ( Qwen3MoEConfiguration . self, Qwen3MoEModel . init) ,
43+ " qwen3_next " : create ( Qwen3NextConfiguration . self, Qwen3NextModel . init) ,
44+ " minicpm " : create ( MiniCPMConfiguration . self, MiniCPMModel . init) ,
45+ " starcoder2 " : create ( Starcoder2Configuration . self, Starcoder2Model . init) ,
46+ " cohere " : create ( CohereConfiguration . self, CohereModel . init) ,
47+ " openelm " : create ( OpenElmConfiguration . self, OpenELMModel . init) ,
48+ " internlm2 " : create ( InternLM2Configuration . self, InternLM2Model . init) ,
49+ " deepseek_v3 " : create ( DeepseekV3Configuration . self, DeepseekV3Model . init) ,
50+ " granite " : create ( GraniteConfiguration . self, GraniteModel . init) ,
51+ " granitemoehybrid " : create (
52+ GraniteMoeHybridConfiguration . self, GraniteMoeHybridModel . init) ,
53+ " mimo " : create ( MiMoConfiguration . self, MiMoModel . init) ,
54+ " mimo_v2_flash " : create ( MiMoV2FlashConfiguration . self, MiMoV2FlashModel . init) ,
55+ " minimax " : create ( MiniMaxConfiguration . self, MiniMaxModel . init) ,
56+ " glm4 " : create ( GLM4Configuration . self, GLM4Model . init) ,
57+ " glm4_moe " : create ( GLM4MoEConfiguration . self, GLM4MoEModel . init) ,
58+ " glm4_moe_lite " : create ( GLM4MoELiteConfiguration . self, GLM4MoELiteModel . init) ,
59+ " acereason " : create ( Qwen2Configuration . self, Qwen2Model . init) ,
60+ " falcon_h1 " : create ( FalconH1Configuration . self, FalconH1Model . init) ,
61+ " smollm3 " : create ( SmolLM3Configuration . self, SmolLM3Model . init) ,
62+ " ernie4_5 " : create ( Ernie45Configuration . self, Ernie45Model . init) ,
63+ " lfm2 " : create ( LFM2Configuration . self, LFM2Model . init) ,
64+ " baichuan_m1 " : create ( BaichuanM1Configuration . self, BaichuanM1Model . init) ,
65+ " exaone4 " : create ( Exaone4Configuration . self, Exaone4Model . init) ,
66+ " gpt_oss " : create ( GPTOSSConfiguration . self, GPTOSSModel . init) ,
67+ " lille-130m " : create ( Lille130mConfiguration . self, Lille130mModel . init) ,
68+ " olmoe " : create ( OlmoEConfiguration . self, OlmoEModel . init) ,
69+ " olmo2 " : create ( Olmo2Configuration . self, Olmo2Model . init) ,
70+ " olmo3 " : create ( Olmo3Configuration . self, Olmo3Model . init) ,
71+ " bailing_moe " : create ( BailingMoeConfiguration . self, BailingMoeModel . init) ,
72+ " lfm2_moe " : create ( LFM2MoEConfiguration . self, LFM2MoEModel . init) ,
73+ " nanochat " : create ( NanoChatConfiguration . self, NanoChatModel . init) ,
74+ " nemotron_h " : create ( NemotronHConfiguration . self, NemotronHModel . init) ,
75+ " afmoe " : create ( AfMoEConfiguration . self, AfMoEModel . init) ,
76+ " jamba_3b " : create ( JambaConfiguration . self, JambaModel . init) ,
77+ " mistral3 " : create ( Mistral3TextConfiguration . self, Mistral3TextModel . init) ,
78+ " apertus " : create ( ApertusConfiguration . self, ApertusModel . init) ,
79+ ]
80+
81+ // Bitnet requires Metal custom kernels and is only available on Apple platforms
82+ #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) || os(visionOS)
83+ models [ " bitnet " ] = create ( BitnetConfiguration . self, BitnetModel . init)
84+ #endif
85+
86+ return models
87+ }
7788}
7889
7990/// Registry of models and any overrides that go with them, e.g. prompt augmentation.
0 commit comments