Skip to content

Commit 1d95acc

Browse files
Merge pull request #15 from Xaenalt/ovms-force-device-opendatahub
Allow users to force a target_device
2 parents 31493f4 + 453f769 commit 1d95acc

File tree

4 files changed

+29
-4
lines changed

4 files changed

+29
-4
lines changed

model-mesh-ovms-adapter/server/config.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ const (
5959
defaultBatchWaitTimeMax = 3 * time.Second
6060
reloadTimeout string = "OVMS_RELOAD_TIMEOUT"
6161
defaultReloadTimeout = 30 * time.Second
62+
63+
// (Xaenalt): Temporary workaround until OVMS can auto-detect Nvidia GPUs
64+
ovmsForceTargetDevice string = "OVMS_FORCE_TARGET_DEVICE"
65+
defaultOvmsForceTargetDevice = "CPU"
6266
)
6367

6468
func GetAdapterConfigurationFromEnv(log logr.Logger) (*AdapterConfiguration, error) {
@@ -94,5 +98,9 @@ func GetAdapterConfigurationFromEnv(log logr.Logger) (*AdapterConfiguration, err
9498
if adapterConfig.ModelSizeMultiplier <= 0 {
9599
return nil, fmt.Errorf("%s environment variable must be greater than 0, found value %v", modelSizeMultiplier, adapterConfig.ModelSizeMultiplier)
96100
}
101+
102+
// (Xaenalt): Temporary workaround until OVMS can auto-detect Nvidia GPUs
103+
adapterConfig.OvmsForceTargetDevice = GetEnvString(ovmsForceTargetDevice, defaultOvmsForceTargetDevice)
104+
97105
return adapterConfig, nil
98106
}

model-mesh-ovms-adapter/server/modelconfig.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,9 @@ type OvmsMultiModelRepositoryConfig struct {
4040
}
4141

4242
type OvmsMultiModelModelConfig struct {
43-
Name string `json:"name"`
44-
BasePath string `json:"base_path"`
43+
Name string `json:"name"`
44+
BasePath string `json:"base_path"`
45+
TargetDevice string `json:"target_device"`
4546
}
4647

4748
type OvmsMultiModelConfigListEntry struct {

model-mesh-ovms-adapter/server/modelmanager.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -434,11 +434,24 @@ func (mm *OvmsModelManager) gatherLoadRequests() map[string]*request {
434434
stopChan = time.NewTimer(mm.config.BatchWaitTimeMin).C
435435
}
436436

437+
// (Xaenalt): Temporary workaround until OVMS's auto plugin can handle NVIDIA devices
438+
adapterConfig, err := GetAdapterConfigurationFromEnv(mm.log)
439+
440+
var ovmsTargetDevice string
441+
442+
if err != nil {
443+
mm.log.Error(err, "Could not get Adapter Configuration, defaulting to CPU inferencing")
444+
ovmsTargetDevice = "CPU"
445+
} else {
446+
ovmsTargetDevice = adapterConfig.OvmsForceTargetDevice
447+
}
448+
437449
requestMap[req.modelId] = req
438450
mm.loadedModelsMap[req.modelId] = OvmsMultiModelConfigListEntry{
439451
Config: OvmsMultiModelModelConfig{
440-
Name: req.modelId,
441-
BasePath: req.basePath,
452+
Name: req.modelId,
453+
BasePath: req.basePath,
454+
TargetDevice: ovmsTargetDevice,
442455
},
443456
}
444457
}

model-mesh-ovms-adapter/server/server.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ type AdapterConfiguration struct {
4848
BatchWaitTimeMin time.Duration
4949
BatchWaitTimeMax time.Duration
5050
ReloadTimeout time.Duration
51+
52+
// (Xaenalt): Temporary workaround until OVMS can auto-detect Nvidia GPUs
53+
OvmsForceTargetDevice string
5154
}
5255

5356
type OvmsAdapterServer struct {

0 commit comments

Comments
 (0)