@@ -33,16 +33,16 @@ type ModelConfig struct {
3333 schema.PredictionOptions `yaml:"parameters,omitempty" json:"parameters,omitempty"`
3434 Name string `yaml:"name,omitempty" json:"name,omitempty"`
3535
36- F16 * bool `yaml:"f16,omitempty" json:"f16,omitempty"`
37- Threads * int `yaml:"threads,omitempty" json:"threads,omitempty"`
38- Debug * bool `yaml:"debug,omitempty" json:"debug,omitempty"`
39- Roles map [string ]string `yaml:"roles,omitempty" json:"roles,omitempty"`
40- Embeddings * bool `yaml:"embeddings,omitempty" json:"embeddings,omitempty"`
41- Backend string `yaml:"backend,omitempty" json:"backend,omitempty"`
42- TemplateConfig TemplateConfig `yaml:"template,omitempty" json:"template,omitempty"`
43- KnownUsecaseStrings []string `yaml:"known_usecases,omitempty" json:"known_usecases,omitempty"`
44- KnownUsecases * ModelConfigUsecases `yaml:"-" json:"-"`
45- Pipeline Pipeline `yaml:"pipeline,omitempty" json:"pipeline,omitempty"`
36+ F16 * bool `yaml:"f16,omitempty" json:"f16,omitempty"`
37+ Threads * int `yaml:"threads,omitempty" json:"threads,omitempty"`
38+ Debug * bool `yaml:"debug,omitempty" json:"debug,omitempty"`
39+ Roles map [string ]string `yaml:"roles,omitempty" json:"roles,omitempty"`
40+ Embeddings * bool `yaml:"embeddings,omitempty" json:"embeddings,omitempty"`
41+ Backend string `yaml:"backend,omitempty" json:"backend,omitempty"`
42+ TemplateConfig TemplateConfig `yaml:"template,omitempty" json:"template,omitempty"`
43+ KnownUsecaseStrings []string `yaml:"known_usecases,omitempty" json:"known_usecases,omitempty"`
44+ KnownUsecases * ModelConfigUsecase `yaml:"-" json:"-"`
45+ Pipeline Pipeline `yaml:"pipeline,omitempty" json:"pipeline,omitempty"`
4646
4747 PromptStrings , InputStrings []string `yaml:"-" json:"-"`
4848 InputToken [][]int `yaml:"-" json:"-"`
@@ -294,8 +294,9 @@ func (c *ModelConfig) UnmarshalYAML(value *yaml.Node) error {
294294 if err := value .Decode (& aux ); err != nil {
295295 return err
296296 }
297- * c = ModelConfig (aux )
298297
298+ mc := ModelConfig (aux )
299+ * c = mc
299300 c .syncKnownUsecasesFromString ()
300301 return nil
301302}
@@ -514,30 +515,30 @@ func (c *ModelConfig) GetModelConfigFile() string {
514515 return c .modelConfigFile
515516}
516517
517- type ModelConfigUsecases int
518+ type ModelConfigUsecase int
518519
519520const (
520- FLAG_ANY ModelConfigUsecases = 0b000000000000
521- FLAG_CHAT ModelConfigUsecases = 0b000000000001
522- FLAG_COMPLETION ModelConfigUsecases = 0b000000000010
523- FLAG_EDIT ModelConfigUsecases = 0b000000000100
524- FLAG_EMBEDDINGS ModelConfigUsecases = 0b000000001000
525- FLAG_RERANK ModelConfigUsecases = 0b000000010000
526- FLAG_IMAGE ModelConfigUsecases = 0b000000100000
527- FLAG_TRANSCRIPT ModelConfigUsecases = 0b000001000000
528- FLAG_TTS ModelConfigUsecases = 0b000010000000
529- FLAG_SOUND_GENERATION ModelConfigUsecases = 0b000100000000
530- FLAG_TOKENIZE ModelConfigUsecases = 0b001000000000
531- FLAG_VAD ModelConfigUsecases = 0b010000000000
532- FLAG_VIDEO ModelConfigUsecases = 0b100000000000
533- FLAG_DETECTION ModelConfigUsecases = 0b1000000000000
521+ FLAG_ANY ModelConfigUsecase = 0b000000000000
522+ FLAG_CHAT ModelConfigUsecase = 0b000000000001
523+ FLAG_COMPLETION ModelConfigUsecase = 0b000000000010
524+ FLAG_EDIT ModelConfigUsecase = 0b000000000100
525+ FLAG_EMBEDDINGS ModelConfigUsecase = 0b000000001000
526+ FLAG_RERANK ModelConfigUsecase = 0b000000010000
527+ FLAG_IMAGE ModelConfigUsecase = 0b000000100000
528+ FLAG_TRANSCRIPT ModelConfigUsecase = 0b000001000000
529+ FLAG_TTS ModelConfigUsecase = 0b000010000000
530+ FLAG_SOUND_GENERATION ModelConfigUsecase = 0b000100000000
531+ FLAG_TOKENIZE ModelConfigUsecase = 0b001000000000
532+ FLAG_VAD ModelConfigUsecase = 0b010000000000
533+ FLAG_VIDEO ModelConfigUsecase = 0b100000000000
534+ FLAG_DETECTION ModelConfigUsecase = 0b1000000000000
534535
535536 // Common Subsets
536- FLAG_LLM ModelConfigUsecases = FLAG_CHAT | FLAG_COMPLETION | FLAG_EDIT
537+ FLAG_LLM ModelConfigUsecase = FLAG_CHAT | FLAG_COMPLETION | FLAG_EDIT
537538)
538539
539- func GetAllModelConfigUsecases () map [string ]ModelConfigUsecases {
540- return map [string ]ModelConfigUsecases {
540+ func GetAllModelConfigUsecases () map [string ]ModelConfigUsecase {
541+ return map [string ]ModelConfigUsecase {
541542 // Note: FLAG_ANY is intentionally excluded from this map
542543 // because it's 0 and would always match in HasUsecases checks
543544 "FLAG_CHAT" : FLAG_CHAT ,
@@ -561,23 +562,25 @@ func stringToFlag(s string) string {
561562 return "FLAG_" + strings .ToUpper (s )
562563}
563564
564- func GetUsecasesFromYAML (input []string ) * ModelConfigUsecases {
565+ func GetUsecasesFromYAML (input []string ) * ModelConfigUsecase {
565566 if len (input ) == 0 {
566567 return nil
567568 }
568569 result := FLAG_ANY
569570 flags := GetAllModelConfigUsecases ()
570571 for _ , str := range input {
571- flag , exists := flags [stringToFlag (str )]
572- if exists {
573- result |= flag
572+ for _ , flag := range []string {stringToFlag (str ), str } {
573+ f , exists := flags [flag ]
574+ if exists {
575+ result |= f
576+ }
574577 }
575578 }
576579 return & result
577580}
578581
579582// HasUsecases examines a ModelConfig and determines which endpoints have a chance of success.
580- func (c * ModelConfig ) HasUsecases (u ModelConfigUsecases ) bool {
583+ func (c * ModelConfig ) HasUsecases (u ModelConfigUsecase ) bool {
581584 if (c .KnownUsecases != nil ) && ((u & * c .KnownUsecases ) == u ) {
582585 return true
583586 }
@@ -587,7 +590,7 @@ func (c *ModelConfig) HasUsecases(u ModelConfigUsecases) bool {
587590// GuessUsecases is a **heuristic based** function, as the backend in question may not be loaded yet, and the config may not record what it's useful at.
588591// In its current state, this function should ideally check for properties of the config like templates, rather than the direct backend name checks for the lower half.
589592// This avoids the maintenance burden of updating this list for each new backend - but unfortunately, that's the best option for some services currently.
590- func (c * ModelConfig ) GuessUsecases (u ModelConfigUsecases ) bool {
593+ func (c * ModelConfig ) GuessUsecases (u ModelConfigUsecase ) bool {
591594 if (u & FLAG_CHAT ) == FLAG_CHAT {
592595 if c .TemplateConfig .Chat == "" && c .TemplateConfig .ChatMessage == "" && ! c .TemplateConfig .UseTokenizerTemplate {
593596 return false
0 commit comments