Skip to content

max_parallelism not linked to Manager.job_limit — BO concurrency silently capped at 3 #30

Description

@blttkgl

Description

AxBackend has a hardcoded DEFAULT_BO_CONCURRENCY = 3 that caps how many trials Ax suggests per cycle. Manager has an independent job_limit that caps how many simulation jobs run concurrently. These two values are never linked, causing a silent resource underutilization bug:

Example: User sets job_limit=8. Ax only ever suggests 3 candidates. 5 cluster slots sit idle every cycle.

Root cause

DEFAULT_BO_CONCURRENCY mirrors Ax's internal DEFAULT_BAYESIAN_CONCURRENCY and is applied in AxBackend.initialize() when max_parallelism is None (the default). There is no code path that automatically propagates job_limit → max_parallelism.

Expected behavior

AxBackend.max_parallelism should default to Manager.job_limit unless explicitly overridden by the user.

Proposed fix

Wire them together at session construction time, e.g.:

if backend.max_parallelism is None:
    backend.max_parallelism = manager.job_limit

Or pass job_limit into AxBackend directly during Session setup.

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain: optimizerAx backend, objectives, search spacetype: bugSomething broken

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions