Skip to content

Build1 publisher3 min readPublished

SageMaker's five-entry preference list moves instance-type choice into the submit call

Training and processing jobs can now name up to five acceptable instance types in priority order. AWS launches on the first one with capacity. Whether that helps you depends on whether your container runs the same on all five.

The Engineer · Build desk

Illustration accompanying SageMaker's five-entry preference list moves instance-type choice into the submit call

What happened

  • Amazon SageMaker AI now accepts an ordered list of up to five acceptable instance types when you create a training or processing job, in place of a single pinned type.
  • AWS describes the current workaround as custom retry scripts that poll job status, cancel stalled requests, and resubmit the work against a different instance type.
  • According to AWS, those scripts are brittle and do not integrate with reserved capacity options such as Flexible Training Plans, adding overhead that compounds across runs.

Compiled by The EngineerSomething wrong?How this is made

Why it matters

  • decision Slot order is a bet made at submit time. You commit to a ranking before you know which type is free, and the platform will not revisit it because a cheaper option opened up a minute later.
  • constraint The usable length of the list equals the number of types your training code runs on unchanged. A team that hard-codes per-device batch size or shard count effectively has one entry.
  • cost The engineering time that went into retry tooling is traded for runs billed at whatever the second or third choice costs, and the team that owns the budget did not order the list.
  • precedent Capacity choice becomes a job parameter. Platform teams are pushed into deciding which instance families they will certify as interchangeable and who signs off on that list.

An ordered list moves the choice of GPU out of the queue and into the submit call. SageMaker walks the list in priority order and launches on the first type with available capacity, without manual intervention [2]. You get five slots [1]. The workflow AWS published begins with a reserved capacity check and falls back to alternative types on on-demand capacity when the preferred one is unavailable [6]. Put a Flexible Training Plan reservation in slot one and four on-demand fallbacks remain [1].

Ordering is where the cost decision lands. The list is evaluated in priority order and the first type with capacity wins [2], so a cheaper type placed second runs only when the first is unavailable, never because it is the better deal that hour.

The premise is AWS's own: many training workloads run equivalently on two or three instance families, and teams with Flexible Training Plans need a way to express a preference order [7]. That is a statement about their customers' jobs. For it to hold for yours, the same container has to produce the same run on every type in the list. Per-device batch size has to fit the smallest memory you listed. If gradient accumulation is pinned in a config file instead of derived at runtime, the fallback quietly changes your global batch size. The distributed launch has to come up on whatever interconnect the winning type gives you, and checkpoints have to resume at the same shard count.

AWS describes the current practice as custom retry scripts that poll job status, cancel stalled requests, and resubmit with alternative instance types [4], and says those workarounds do not integrate with reserved capacity options such as Flexible Training Plans [5]. That complaint is the strongest part of the case. A polling loop sitting outside the platform cannot see whether your Training Plan still has capacity, so it cannot reliably try the reservation before it tries on-demand. AWS's illustrative scenario is a nightly pipeline pinned to one type that fails at 2 AM with an InsufficientCapacityError [3]. Whoever wrote that example has been paged.

AWS states the result as "faster job starts, higher capacity utilization, and more time spent building models rather than managing constraints" [8]. The announcement does not put a number on any of the three. Counted in submissions the change is legible: AWS frames the answer as evaluating multiple instance types at job creation in a single API call [9], which turns a five-type search from as many as five separate job requests into one [2]. The search gets faster. The capacity is the same. When all five types are empty the job still does not start, and whatever submits it still needs a backoff policy of its own.

What to watch

  • Documentation on what SageMaker does when a job fails or is interrupted after the winning type launches: does it re-walk the preference list, or stop?
  • Whether the list can vary instance count as well as instance type, since a fallback family may need a different node count to hold the same global batch size.
  • Whether per-entry pricing is surfaced at submit time, so ordering can be driven by cost instead of by a guess about availability.
Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories