mirror of
https://github.com/mudler/LocalAI.git
synced 2025-06-26 12:45:01 +00:00
feat(loader): enhance single active backend by treating at singleton
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
This commit is contained in:
parent
c59975ab05
commit
a5995d61dc
24 changed files with 92 additions and 71 deletions
|
@ -509,7 +509,23 @@ func (ml *ModelLoader) stopActiveBackends(modelID string, singleActiveBackend bo
|
|||
}
|
||||
}
|
||||
|
||||
func (ml *ModelLoader) Close() {
|
||||
if !ml.singletonMode {
|
||||
return
|
||||
}
|
||||
ml.singletonLock.Unlock()
|
||||
}
|
||||
|
||||
func (ml *ModelLoader) lockBackend() {
|
||||
if !ml.singletonMode {
|
||||
return
|
||||
}
|
||||
ml.singletonLock.Lock()
|
||||
}
|
||||
|
||||
func (ml *ModelLoader) Load(opts ...Option) (grpc.Backend, error) {
|
||||
ml.lockBackend() // grab the singleton lock if needed
|
||||
|
||||
o := NewOptions(opts...)
|
||||
|
||||
// Return earlier if we have a model already loaded
|
||||
|
@ -520,7 +536,7 @@ func (ml *ModelLoader) Load(opts ...Option) (grpc.Backend, error) {
|
|||
return m.GRPC(o.parallelRequests, ml.wd), nil
|
||||
}
|
||||
|
||||
ml.stopActiveBackends(o.modelID, o.singleActiveBackend)
|
||||
ml.stopActiveBackends(o.modelID, ml.singletonMode)
|
||||
|
||||
// if a backend is defined, return the loader directly
|
||||
if o.backendString != "" {
|
||||
|
@ -533,6 +549,7 @@ func (ml *ModelLoader) Load(opts ...Option) (grpc.Backend, error) {
|
|||
// get backends embedded in the binary
|
||||
autoLoadBackends, err := ml.ListAvailableBackends(o.assetDir)
|
||||
if err != nil {
|
||||
ml.Close() // we failed, release the lock
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
@ -564,5 +581,7 @@ func (ml *ModelLoader) Load(opts ...Option) (grpc.Backend, error) {
|
|||
}
|
||||
}
|
||||
|
||||
ml.Close() // make sure to release the lock in case of failure
|
||||
|
||||
return nil, fmt.Errorf("could not load model - all backends returned error: %s", err.Error())
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue