One SchedulingConfig parameter puts Salesforce's shared-GPU model copies in both Availability Zones
Co-hosting models on shared GPUs cut Salesforce's inference infrastructure bill eightfold, but the placement algorithm that made it cheap counted instances and ignored Availability Zones. SchedulingConfig reconciles the two.
The Engineer · Build desk

What happened
- AWS says SageMaker Inference Components cut Salesforce's inference infrastructure costs by 8x by co-hosting multiple models on shared GPUs.
- Salesforce requires 2-AZ support for every production model, a bar the cost-optimized default placement did not meet.
- AWS added the SchedulingConfig parameter to CreateInferenceComponent, exposing AvailabilityZoneBalance for cross-AZ distribution and PlacementStrategy for placement within each zone.
Why it matters
- Who has to decide decision Every inference component now carries an explicit SPREAD or BINPACK call, and picking fault isolation spends part of the shared-GPU density that made the hosting cheap in the first place.
- What it limits constraint Strict balance on a two-AZ endpoint admits only even copy counts, so HA-critical components lose the single-copy autoscaling step and move in twos.
- Who's exposed exposure Anyone treating the AZ spread as a satisfied control owns the residual risk, since AWS describes the even distribution as best-effort while only the persistence of placement through updates is stated flatly.
The AWS post's scope note matters: SchedulingConfig governs the placement plan for each individual scale operation [13]. Balance is therefore an outcome of each API call, not a property the endpoint holds. After enough scale-in and scale-out cycles, the per-operation plans can drift, and AWS's answer is a second setting in a second object: the endpoint's ScaleInPolicy with the CONSOLIDATION strategy, which runs a background sweeper that consolidates copies and releases idle instances while honoring AZ balance constraints [13][14]. Two-AZ placement is one parameter on the component and one policy on the endpoint.
AWS also leans on the phrase "best-effort," and it is worth sitting with. AWS describes availability-aware distribution as even placement across AZs on a best-effort basis, while stating separately that endpoint and inference component update operations persist multi-AZ placement, so HA survives model updates [15]. Persisting placement through updates is real engineering and the harder half of the problem. Best-effort spreading, though, is a behaviour to test on your own endpoint rather than a control to cite in an audit, particularly if the requirement is a hard internal rule like Salesforce's 2-AZ mandate for every production model [4].
Here is the arithmetic the post sets up but does not finish. The documented scenario is four instances, two per AZ, with four copies deployed under SPREAD, landing two in AZ-1 and two in AZ-2 [8]. Lose an AZ and two copies remain, which is half the serving capacity [17]. Two-AZ HA at unchanged throughput therefore costs double the copies you need in steady state, and the copies are the thing you were consolidating onto shared GPUs to save money on. Set MaxImbalance to 0 and the constraint tightens further: strict balance across two AZs admits only even copy counts [18].
The 8x number is Salesforce's, for Agentforce, and it comes specifically from co-hosting multiple models on shared GPUs [20]. For it to transfer you would need a fleet of models that each leave a GPU substantially idle, compatible enough accelerator and instance requirements to share, and traffic peaks that do not arrive together. One large model per endpoint gets none of it, and neither does a portfolio whose components all spike at the same hour. What transfers unconditionally is the failure mode: without SchedulingConfig, the default algorithm optimizes each deployment operation on its own and distributes copies evenly across instances without considering AZs, so copies of one model can pile into one zone even on a multi-AZ endpoint [2].
The post also tells you never to set CopyCount to 1 for an HA-critical model, because a single copy lives in a single AZ [12]. In plain terms, a single copy means your high-availability plan runs in one Availability Zone.
What to watch
- Whether AWS upgrades best-effort AZ distribution into documented, testable behaviour rather than an effort target.
- Whether SchedulingConfig becomes settable outside CreateInferenceComponent, since today the post shows it on the create call.
- Whether the CONSOLIDATION sweeper's interval gets published, because it decides how long a drifted endpoint stays drifted.
Clarity's read
What the record supports and how the coverage leans. The claims behind it follow.
Reality
- Evidence58
- Adoption45
- Hype gap+18
- Incentives82
- Confidence56
Claim ledger
Ranked by verification strength, evidence, and original report placement.
- [1]
Salesforce set out to make Agentforce, its AI foundation for agents, highly available across multiple Availability Zones, and faced a gap: SageMaker AI Inference Components could cut GPU costs but their default placement did not guarantee the multi-AZ resilience Salesforce's compliance bar required.
- [2]
By default the SageMaker placement algorithm optimizes each Inference Component deployment operation independently, distributing new copies evenly across instances without considering AZ balance, so even on a multi-AZ endpoint copies of a specific model can end up unevenly distributed across AZs.
- [3]
The post lists the resulting single points of failure: a single instance crash takes down all copies of a model, and an AZ outage makes the entire model unavailable.
- [4]
Salesforce mandates 2-AZ support for every production model, and default Inference Component placement, optimized for cost alone, did not yet meet that internal 2-AZ compliance bar.
- [5]
AWS introduced the SchedulingConfig parameter in the CreateInferenceComponent API, giving customers fine-grained control over Inference Component copy placement across instances and Availability Zones.
- [6]
The AvailabilityZoneBalance sub-parameter controls cross-AZ distribution, balancing copies evenly across Availability Zones with configurable imbalance tolerance.
- [7]
PlacementStrategy SPREAD distributes copies across as many instances as possible for fault isolation, while BINPACK packs copies onto fewer instances for utilization efficiency.
- [8]
In the documented scenario, a multi-AZ endpoint has 4 instances split 2 in AZ-1 and 2 in AZ-2, and deploying 4 copies with SPREAD distributes them across 4 instances, 2 in AZ-1 and 2 in AZ-2.
- [9]
Setting MaxImbalance to 1 configures the system to tolerate at most a 1-copy difference between any two Availability Zones.
- [10]
For lighter models needing only 2 copies, MaxImbalance: 0 enforces strict balance of exactly 1 copy per Availability Zone.
- [11]
On scale-out SageMaker places new copies to maintain even AZ distribution, and when CopyCount is reduced it removes copies symmetrically across AZs.
- [12]
The post warns never to set CopyCount to 1 for HA-critical models, because a single copy can only reside in one AZ and immediately breaks a 2-AZ compliance requirement.
- [13]
SchedulingConfig governs the placement plan for each individual scale operation; for ongoing consolidation and rebalancing after repeated scale-in and scale-out cycles, AWS says to configure the endpoint's ScaleInPolicy with the CONSOLIDATION strategy.
- [14]
With the CONSOLIDATION configuration, a background sweeper periodically consolidates Inference Component copies and releases idle instances while honoring AZ balance constraints.
- [15]
The post describes availability-aware distribution as SageMaker evenly distributing copies across AZs on a best-effort basis, and states that endpoint and inference component update operations persist multi-AZ placement so HA is preserved during model updates.
- [16]
The new placement algorithm considers the balance of the final distribution rather than only immediate placement needs.
- [17]
In the documented 4-copy SPREAD scenario, the loss of one Availability Zone leaves 2 of 4 copies serving, or 50 percent of capacity, so surviving an AZ loss at unchanged throughput requires provisioning twice the steady-state copy count.
- [18]
With MaxImbalance set to 0 on a two-AZ endpoint, strict balance means equal copies per AZ, so total CopyCount must be even and scaling steps move in twos rather than ones.
- [19]
Choosing SPREAD over BINPACK for AZ-balanced HA places copies on as many instances as possible, which works against the co-hosting density on shared GPUs that produced Salesforce's 8x saving.
- [20]
For Salesforce, Inference Components delivered an 8x reduction in infrastructure costs by co-hosting multiple models on shared GPUs.
Get this ledger inside ChatGPT. Ask about any of our stories and the answer brings its figure, each claim’s verdict and the sources. Free, no account.
Sources
1 independent publisher whose own reporting we read for this story.
- aws.amazon.comSpreading the load: How Salesforce met Multi-AZ HA with SageMaker Inference Components
1 article · August 28, 2026
Topics and entities
Follow any of these and your For You feed starts watching them — no settings page required.
Topics
Entities
- Amazon Web ServicesFollow
- AgentforceFollow
- Amazon SageMaker AIFollow
- SalesforceFollow
- SchedulingConfigFollow
- SageMaker Inference ComponentsFollow