mirror of
https://github.com/mudler/LocalAI.git
synced 2026-04-01 13:42:20 -04:00
* feat(cli): add configurable backend image fallback tags via CLI options - Add three new CLI flags: --backend-images-release-tag, --backend-images-branch-tag, --backend-dev-suffix - Add corresponding fields to SystemState for passing configuration - Add WithBackendImagesReleaseTag, WithBackendImagesBranchTag, WithBackendDevSuffix options - Modify getFallbackTagValues to use SystemState instead of environment variables - Pass CLI options through to SystemState in run.go Signed-off-by: localai-bot <localai-bot@users.noreply.github.com> * fix: add missing os import in core/gallery/backends.go Signed-off-by: localai-bot <localai-bot@users.noreply.github.com> --------- Signed-off-by: localai-bot <localai-bot@users.noreply.github.com> Co-authored-by: localai-bot <localai-bot@users.noreply.github.com>
85 lines
1.7 KiB
Go
85 lines
1.7 KiB
Go
package system
|
|
|
|
import (
|
|
"github.com/mudler/LocalAI/pkg/xsysinfo"
|
|
"github.com/mudler/xlog"
|
|
)
|
|
|
|
type Backend struct {
|
|
BackendsPath string
|
|
BackendsSystemPath string
|
|
}
|
|
|
|
type Model struct {
|
|
ModelsPath string
|
|
}
|
|
|
|
type SystemState struct {
|
|
GPUVendor string
|
|
Backend Backend
|
|
Model Model
|
|
VRAM uint64
|
|
|
|
systemCapabilities string
|
|
|
|
// Backend image fallback tag configuration
|
|
BackendImagesReleaseTag string
|
|
BackendImagesBranchTag string
|
|
BackendDevSuffix string
|
|
}
|
|
|
|
type SystemStateOptions func(*SystemState)
|
|
|
|
func WithBackendPath(path string) SystemStateOptions {
|
|
return func(s *SystemState) {
|
|
s.Backend.BackendsPath = path
|
|
}
|
|
}
|
|
|
|
func WithBackendSystemPath(path string) SystemStateOptions {
|
|
return func(s *SystemState) {
|
|
s.Backend.BackendsSystemPath = path
|
|
}
|
|
}
|
|
|
|
func WithModelPath(path string) SystemStateOptions {
|
|
return func(s *SystemState) {
|
|
s.Model.ModelsPath = path
|
|
}
|
|
}
|
|
|
|
func WithBackendImagesReleaseTag(tag string) SystemStateOptions {
|
|
return func(s *SystemState) {
|
|
s.BackendImagesReleaseTag = tag
|
|
}
|
|
}
|
|
|
|
func WithBackendImagesBranchTag(tag string) SystemStateOptions {
|
|
return func(s *SystemState) {
|
|
s.BackendImagesBranchTag = tag
|
|
}
|
|
}
|
|
|
|
func WithBackendDevSuffix(suffix string) SystemStateOptions {
|
|
return func(s *SystemState) {
|
|
s.BackendDevSuffix = suffix
|
|
}
|
|
}
|
|
|
|
func GetSystemState(opts ...SystemStateOptions) (*SystemState, error) {
|
|
state := &SystemState{}
|
|
for _, opt := range opts {
|
|
opt(state)
|
|
}
|
|
|
|
// Detection is best-effort here, we don't want to fail if it fails
|
|
state.GPUVendor, _ = xsysinfo.DetectGPUVendor()
|
|
xlog.Debug("GPU vendor", "gpuVendor", state.GPUVendor)
|
|
state.VRAM, _ = xsysinfo.TotalAvailableVRAM()
|
|
xlog.Debug("Total available VRAM", "vram", state.VRAM)
|
|
|
|
state.getSystemCapabilities()
|
|
|
|
return state, nil
|
|
}
|