Ensure the libraries are present
When we store our libraries in a temp dir, a reaper might clean them when we are idle, so make sure to check for them before we reload.
This commit is contained in:
parent
a0a199b108
commit
a1dfab43b9
1 changed files with 12 additions and 2 deletions
14
llm/llm.go
14
llm/llm.go
|
@ -120,7 +120,7 @@ func New(workDir, model string, adapters, projectors []string, opts api.Options)
|
||||||
|
|
||||||
opts.RopeFrequencyBase = 0.0
|
opts.RopeFrequencyBase = 0.0
|
||||||
opts.RopeFrequencyScale = 0.0
|
opts.RopeFrequencyScale = 0.0
|
||||||
return newLlmServer(info, model, adapters, projectors, opts)
|
return newLlmServer(info, workDir, model, adapters, projectors, opts)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Give any native cgo implementations an opportunity to initialize
|
// Give any native cgo implementations an opportunity to initialize
|
||||||
|
@ -128,7 +128,7 @@ func Init(workdir string) error {
|
||||||
return nativeInit(workdir)
|
return nativeInit(workdir)
|
||||||
}
|
}
|
||||||
|
|
||||||
func newLlmServer(gpuInfo gpu.GpuInfo, model string, adapters, projectors []string, opts api.Options) (LLM, error) {
|
func newLlmServer(gpuInfo gpu.GpuInfo, workDir, model string, adapters, projectors []string, opts api.Options) (LLM, error) {
|
||||||
dynLibs := getDynLibs(gpuInfo)
|
dynLibs := getDynLibs(gpuInfo)
|
||||||
|
|
||||||
// Check to see if the user has requested a specific library instead of auto-detecting
|
// Check to see if the user has requested a specific library instead of auto-detecting
|
||||||
|
@ -143,6 +143,16 @@ func newLlmServer(gpuInfo gpu.GpuInfo, model string, adapters, projectors []stri
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We stage into a temp directory, and if we've been idle for a while, it may have been reaped
|
||||||
|
_, err := os.Stat(dynLibs[0])
|
||||||
|
if err != nil {
|
||||||
|
slog.Info(fmt.Sprintf("%s has disappeared, reloading libraries", dynLibs[0]))
|
||||||
|
err = nativeInit(workDir)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
err2 := fmt.Errorf("unable to locate suitable llm library")
|
err2 := fmt.Errorf("unable to locate suitable llm library")
|
||||||
for _, dynLib := range dynLibs {
|
for _, dynLib := range dynLibs {
|
||||||
srv, err := newDynExtServer(dynLib, model, adapters, projectors, opts)
|
srv, err := newDynExtServer(dynLib, model, adapters, projectors, opts)
|
||||||
|
|
Loading…
Reference in a new issue