@@ -509,6 +509,27 @@ func (ml *ModelLoader) GreedyLoader(opts ...Option) (grpc.Backend, error) {
509
509
err = errors .Join (err , fmt .Errorf ("backend %s returned no usable model" , key ))
510
510
log .Info ().Msgf ("[%s] Fails: %s" , key , "backend returned no usable model" )
511
511
}
512
+
513
+ if autoDetect && key == LLamaCPP && err != nil {
514
+ backendToUse := LLamaCPPFallback
515
+ if xsysinfo .HasCPUCaps (cpuid .AVX2 ) {
516
+ backendToUse = LLamaCPPAVX2
517
+ } else if xsysinfo .HasCPUCaps (cpuid .AVX ) {
518
+ backendToUse = LLamaCPPAVX
519
+ }
520
+
521
+ // Autodetection failed, try the fallback
522
+ log .Info ().Msgf ("[%s] Autodetection failed, trying the fallback" , key )
523
+ options = append (options , WithBackendString (backendToUse ))
524
+ model , modelerr = ml .BackendLoader (options ... )
525
+ if modelerr == nil && model != nil {
526
+ log .Info ().Msgf ("[%s] Loads OK" , key )
527
+ return model , nil
528
+ } else {
529
+ err = errors .Join (err , fmt .Errorf ("[%s]: %w" , key , modelerr ))
530
+ log .Info ().Msgf ("[%s] Fails: %s" , key , modelerr .Error ())
531
+ }
532
+ }
512
533
}
513
534
514
535
return nil , fmt .Errorf ("could not load model - all backends returned error: %s" , err .Error ())
0 commit comments