nemo_gym.sandbox.providers.ecs_fargate.provider

View as Markdown

ECS Fargate sandbox provider.

Adapts :mod:engine (one stateful EcsFargateSandbox per sandbox) to Gym’s SandboxProvider contract: per-sandbox engine state lives in SandboxHandle.raw and the provider methods delegate to it. The model endpoint is reached directly from the sandbox, or via the SSH reverse tunnel when outside_endpoints are supplied through spec.provider_options.

Module Contents

Classes

NameDescription
EcsFargateProviderRun sandboxes as AWS ECS Fargate tasks behind an SSH sidecar.

Functions

NameDescription
_apply_spec_overridesApply per-sandbox SandboxSpec requests (readiness/TTL/resources) onto the provider config.
_engine_spec-
_outside_endpoints-
_sidecar_config-
_volumes-
engine_config_from_mappingBuild an EcsFargateConfig from provider kwargs.

API

class nemo_gym.sandbox.providers.ecs_fargate.provider.EcsFargateProvider(
config: typing.Any = {}
)

Run sandboxes as AWS ECS Fargate tasks behind an SSH sidecar.

_cfg
= engine_config_from_mapping(config)
name
= 'ecs_fargate'
nemo_gym.sandbox.providers.ecs_fargate.provider.EcsFargateProvider.aclose() -> None
async
nemo_gym.sandbox.providers.ecs_fargate.provider.EcsFargateProvider.close(
handle: nemo_gym.sandbox.providers.base.SandboxHandle
) -> None
async
nemo_gym.sandbox.providers.ecs_fargate.provider.EcsFargateProvider.create(
spec: nemo_gym.sandbox.providers.base.SandboxSpec
) -> nemo_gym.sandbox.providers.base.SandboxHandle
async
nemo_gym.sandbox.providers.ecs_fargate.provider.EcsFargateProvider.download_file(
handle: nemo_gym.sandbox.providers.base.SandboxHandle,
source_path: str,
target_path: pathlib.Path
) -> None
async
nemo_gym.sandbox.providers.ecs_fargate.provider.EcsFargateProvider.exec(
handle: nemo_gym.sandbox.providers.base.SandboxHandle,
command: str,
cwd: str | None = None,
env: dict[str, str] | None = None,
timeout_s: int | float | None = None,
user: str | int | None = None
) -> nemo_gym.sandbox.providers.base.SandboxExecResult
async
nemo_gym.sandbox.providers.ecs_fargate.provider.EcsFargateProvider.status(
handle: nemo_gym.sandbox.providers.base.SandboxHandle
) -> nemo_gym.sandbox.providers.base.SandboxStatus
async
nemo_gym.sandbox.providers.ecs_fargate.provider.EcsFargateProvider.upload_file(
handle: nemo_gym.sandbox.providers.base.SandboxHandle,
source_path: pathlib.Path,
target_path: str
) -> None
async

Apply per-sandbox SandboxSpec requests (readiness/TTL/resources) onto the provider config.

SandboxResources.cpu is in vCPUs; Fargate task CPU is in 1024-unit increments. GPU is not supported on Fargate.

nemo_gym.sandbox.providers.ecs_fargate.provider._engine_spec(
spec: nemo_gym.sandbox.providers.base.SandboxSpec
) -> nemo_gym.sandbox.providers.ecs_fargate.engine.SandboxSpec
nemo_gym.sandbox.providers.ecs_fargate.provider._outside_endpoints(
spec: nemo_gym.sandbox.providers.base.SandboxSpec
) -> list[nemo_gym.sandbox.providers.ecs_fargate.engine.OutsideEndpoint]
nemo_gym.sandbox.providers.ecs_fargate.provider._sidecar_config(
yaml_sidecar: typing.Any,
ssm_ssh: dict[str, typing.Any]
) -> nemo_gym.sandbox.providers.ecs_fargate.engine.SshSidecarConfig | None
nemo_gym.sandbox.providers.ecs_fargate.provider._volumes(
spec: nemo_gym.sandbox.providers.base.SandboxSpec
) -> list[nemo_gym.sandbox.providers.ecs_fargate.engine.VolumeMount]
nemo_gym.sandbox.providers.ecs_fargate.provider.engine_config_from_mapping(
config: dict[str, typing.Any]
) -> nemo_gym.sandbox.providers.ecs_fargate.engine.EcsFargateConfig

Build an EcsFargateConfig from provider kwargs.

When region is given but cluster is omitted, infrastructure is auto-discovered from SSM; explicit kwargs always win over SSM.