Skip to main content

Driverless AI Engine profiles

Driverless AI (DAI) Engine profiles extend the common profile fields with configuration editability controls, TOML-based configuration layering, Triton Inference Server support, and storage constraints. For background on how profiles work, see Engine profiles.

Profile fields​

The following table lists the fields specific to DAI Engine profiles. For shared fields (CPU, GPU, memory, timeouts, and OIDC roles), see the shared profile fields table.

FieldRequiredTypeDescription
storage_bytes_constraintRequiredNumeric constraintAllowed range for persistent storage allocated to the engine
config_editabilityRequiredEnumControls whether users can edit the DAI configuration. See Configuration editability
base_configurationOptionalMap (string to string)Default DAI configuration key-value pairs. With CONFIG_EDITABILITY_BASE_CONFIG_ONLY, users can override only these keys. With CONFIG_EDITABILITY_FULL, users can also add new keys
configuration_overrideOptionalMap (string to string)DAI configuration key-value pairs that always take precedence. Users cannot change these values
triton_enabledOptionalBooleanWhether to turn on the embedded NVIDIA Triton Inference Server for engines created with this profile. Useful for low-latency model scoring
max_non_interaction_durationOptionalDurationWhen set, the engine is auto-paused only if it is idle and has also had no system interaction for this duration
max_unused_durationOptionalDurationMaximum time an engine can stay in a paused or failed state before it is automatically deleted

Configuration editability​

Driverless AI engines use a TOML configuration file to control runtime behavior. The config_editability field determines how much of this configuration users can modify when creating an engine:

ModeDescription
CONFIG_EDITABILITY_FULLUsers can edit DAI configuration keys when creating an engine, except for keys reserved by the core configuration and the profile's configuration_override
CONFIG_EDITABILITY_BASE_CONFIG_ONLYUsers can edit only the keys defined in base_configuration
CONFIG_EDITABILITY_DISABLEDUsers cannot edit the DAI configuration. The engine uses only the values set in the profile
When to use each mode
  • Use CONFIG_EDITABILITY_FULL for data science teams who need to tune DAI settings for different experiments.
  • Use CONFIG_EDITABILITY_BASE_CONFIG_ONLY when you want to expose a controlled set of parameters (such as accuracy or time_column) while locking down the rest.
  • Use CONFIG_EDITABILITY_DISABLED for standardized environments where consistency across all engines matters more than flexibility.

Configuration priority​

When a DAI engine starts, the platform merges multiple sources to produce the final configuration, in this order (highest priority first):

  1. configuration_override (profile-defined, not user-editable)
  2. Core configuration (platform defaults, not user-editable)
  3. User-specified configuration (set during engine creation)
  4. base_configuration (profile-defined defaults, overridable when permitted)

Manage DAI Engine profiles with the Python client​

For installation instructions, see Python client installation.

List available profiles​

To list profiles assigned to you based on your OIDC roles:

import h2o_engine_manager

aiem = h2o_engine_manager.login()
dai_engine_profile_client = aiem.dai_engine_profile_client

profiles = dai_engine_profile_client.list_all_assigned_dai_engine_profiles(
parent="workspaces/global"
)
for profile in profiles:
print(f"{profile.name}: {profile.display_name}")

Create a profile (administrator)​

from h2o_engine_manager.clients.dai_engine_profile.dai_engine_profile import DAIEngineProfile
from h2o_engine_manager.clients.constraint.profile_constraint_numeric import ProfileConstraintNumeric
from h2o_engine_manager.clients.constraint.profile_constraint_duration import ProfileConstraintDuration
from h2o_engine_manager.clients.dai_engine_profile.config_editability import ConfigEditability

profile = DAIEngineProfile(
display_name="Data Science Team - GPU",
priority=1,
enabled=True,
assigned_oidc_roles_enabled=True,
assigned_oidc_roles=["data-science-team"],
max_running_engines=3,
cpu_constraint=ProfileConstraintNumeric(minimum="1", default="4", maximum="16"),
gpu_constraint=ProfileConstraintNumeric(minimum="0", default="1", maximum="4"),
memory_bytes_constraint=ProfileConstraintNumeric(
minimum="4Gi", default="16Gi", maximum="64Gi"
),
storage_bytes_constraint=ProfileConstraintNumeric(
minimum="10Gi", default="50Gi", maximum="100Gi"
),
max_idle_duration_constraint=ProfileConstraintDuration(
minimum="30m", default="1h", maximum="8h"
),
max_running_duration_constraint=ProfileConstraintDuration(
minimum="1h", default="8h", maximum="1d"
),
config_editability=ConfigEditability.CONFIG_EDITABILITY_BASE_CONFIG_ONLY,
base_configuration={"accuracy": "5", "time_column": "date"},
triton_enabled=True,
)

created = dai_engine_profile_client.create_dai_engine_profile(
parent="workspaces/global",
dai_engine_profile=profile,
dai_engine_profile_id="ds-team-gpu",
)
print(f"Created profile: {created.name}")

Update a profile (administrator)​

To update specific fields of an existing profile, retrieve it first, modify the fields, and pass an update_mask specifying which fields to update:

profile = dai_engine_profile_client.get_dai_engine_profile(
name="workspaces/global/daiEngineProfiles/ds-team-gpu"
)
profile.max_running_engines = 5
profile.gpu_constraint = ProfileConstraintNumeric(minimum="0", default="2", maximum="8")

updated = dai_engine_profile_client.update_dai_engine_profile(
dai_engine_profile=profile,
update_mask="max_running_engines,gpu_constraint",
)
print(f"Updated profile: {updated.name}")

Pass update_mask="*" to update all fields at once.

Delete a profile (administrator)​

dai_engine_profile_client.delete_dai_engine_profile(
name="workspaces/global/daiEngineProfiles/ds-team-gpu"
)

Create an engine with a profile​

When the profile allows configuration editing (CONFIG_EDITABILITY_FULL or CONFIG_EDITABILITY_BASE_CONFIG_ONLY), you can pass a config dictionary to set Driverless AI configuration values at engine creation.

profiles = dai_engine_profile_client.list_all_assigned_dai_engine_profiles(
parent="workspaces/global"
)
selected_profile = profiles[0]

engine = aiem.dai_engine_client.create_engine(
workspace_id="default",
engine_id="my-dai-engine",
display_name="My DAI Engine",
profile=selected_profile.name,
dai_engine_version="workspaces/global/daiEngineVersions/1.10.7",
cpu=8,
gpu=1,
memory_bytes="32Gi",
storage_bytes="64Gi",
max_idle_duration="1h",
max_running_duration="8h",
config={"accuracy": "5", "time_column": "date"},
)

Feedback