mirror of
https://github.com/mudler/LocalAI.git
synced 2025-05-27 22:15:00 +00:00
feat: external backend launching log improvements and relative path support (#3348)
* specify workdir when launching external backend for safety / relative paths, bump version, logs Signed-off-by: Dave Lee <dave@gray101.com> * sneak in a devcontainer fix Signed-off-by: Dave Lee <dave@gray101.com> --------- Signed-off-by: Dave Lee <dave@gray101.com>
This commit is contained in:
parent
61fe2404a0
commit
ac5f6f210b
5 changed files with 41 additions and 165 deletions
|
@ -294,13 +294,15 @@ func (ml *ModelLoader) grpcModel(backend string, o *Options) func(string, string
|
|||
if uri, ok := o.externalBackends[backend]; ok {
|
||||
log.Debug().Msgf("Loading external backend: %s", uri)
|
||||
// check if uri is a file or a address
|
||||
if _, err := os.Stat(uri); err == nil {
|
||||
if fi, err := os.Stat(uri); err == nil {
|
||||
log.Debug().Msgf("external backend is file: %+v", fi)
|
||||
serverAddress, err := getFreeAddress()
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed allocating free ports: %s", err.Error())
|
||||
}
|
||||
// Make sure the process is executable
|
||||
if err := ml.startProcess(uri, o.model, serverAddress); err != nil {
|
||||
log.Error().Err(err).Str("path", uri).Msg("failed to launch ")
|
||||
return "", err
|
||||
}
|
||||
|
||||
|
@ -308,6 +310,7 @@ func (ml *ModelLoader) grpcModel(backend string, o *Options) func(string, string
|
|||
|
||||
client = ModelAddress(serverAddress)
|
||||
} else {
|
||||
log.Debug().Msg("external backend is uri")
|
||||
// address
|
||||
client = ModelAddress(uri)
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import (
|
|||
"fmt"
|
||||
"os"
|
||||
"os/signal"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
"syscall"
|
||||
|
@ -79,11 +80,17 @@ func (ml *ModelLoader) startProcess(grpcProcess, id string, serverAddress string
|
|||
|
||||
log.Debug().Msgf("GRPC Service for %s will be running at: '%s'", id, serverAddress)
|
||||
|
||||
workDir, err := filepath.Abs(filepath.Dir(grpcProcess))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
grpcControlProcess := process.New(
|
||||
process.WithTemporaryStateDir(),
|
||||
process.WithName(grpcProcess),
|
||||
process.WithName(filepath.Base(grpcProcess)),
|
||||
process.WithArgs(append(args, []string{"--addr", serverAddress}...)...),
|
||||
process.WithEnvironment(os.Environ()...),
|
||||
process.WithWorkDir(workDir),
|
||||
)
|
||||
|
||||
if ml.wd != nil {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue