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_durationOptionalDurationMaximum time an engine can run without user interaction before pausing
max_unused_durationOptionalDurationMaximum time an engine can remain unused before pausing

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_FULL,
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