Spaces:
Running
Running
Amlan-109
feat: Initial commit of LocalAI Amlan Edition with premium branding and personalization
750bbe6 | 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 | |
| } | |
| 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 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) | |
| return state, nil | |
| } | |