$$ \newcommand{\AbsoluteConicImageEntry}{B} \newcommand{\AbsoluteConicImageMatrix}{\mathbf{B}} \newcommand{\AbsoluteConicVector}{\mathbf{b}} \newcommand{\AcceleratedEpisodeTime}{T'} \newcommand{\AcceleratedFractionSpeedup}{G} \newcommand{\AccelerationNoiseDensityMatrix}{\mathbf{Q}_c} \newcommand{\AccelerationNoiseSpectralDensity}{q_c} \newcommand{\AccelerationWhiteNoise}{w} \newcommand{\AcceleratorBatchTime}{T_{\text{GPU}}} \newcommand{\AcceleratorConsumptionRate}{R_{\text{accel}}} \newcommand{\AcceleratorCount}{N_{\text{GPU}}} \newcommand{\AcceleratorDataConsumptionRate}{R_{\text{consumption}}} \newcommand{\AcceleratorGain}{G_{\text{accel}}} \newcommand{\AcceleratorHourlyPrice}{R_{\text{GPU/hr}}} \newcommand{\AcceleratorMemoryBandwidth}{\text{BW}_{\text{accelerator}}} \newcommand{\AcceleratorRailVoltage}{V_{\text{rail}}} \newcommand{\AcceleratorSecondsPerQuery}{S_{\text{GPU/query}}} \newcommand{\AcceleratorSupplyCurrent}{i} \newcommand{\AcceleratorTargetQueryRate}{R_{\text{GPU,target}}} \newcommand{\AcceleratorsPerNode}{G_{\text{node}}} \newcommand{\AccelerometerBias}{b_a} \newcommand{\AcceptanceFraction}{\alpha} \newcommand{\AcceptanceIntervalLowerLimit}{L} \newcommand{\AcceptanceIntervalUpperLimit}{U} \newcommand{\AcceptanceProbability}{p_{\text{acc}}} \newcommand{\AcceptedInfluences}{\text{Inf}} \newcommand{\AcceptedInputSet}{\mathcal{A}_{\tau}} \newcommand{\AcceptedLabelCount}{d} \newcommand{\AcceptedOutcomePayoff}{V} \newcommand{\AcceptedSampleCount}{X} \newcommand{\AcceptedTaskMeanCost}{C_{\text{succ}}} \newcommand{\AcceptedTasks}{N_{\text{acc}}} \newcommand{\AcceptingStateSet}{F} \newcommand{\AccessAttemptTime}{t} \newcommand{\AccountQueryDistribution}{p_{\text{user}}} \newcommand{\AccumulatedProcessNoiseCovariance}{\mathbf{Q}_d} \newcommand{\AccumulatedSyncTime}{T_{\text{sync}}} \newcommand{\AccumulatedUpdateTime}{T_{\text{effective}}} \newcommand{\AccumulationStepCount}{k} \newcommand{\AccuracyAfterDeployment}{\text{Accuracy}} \newcommand{\AccuracyDecayRate}{\gamma} \newcommand{\AccuracyPayoffPerQuery}{V} \newcommand{\AchievedBrakingDeceleration}{a} \newcommand{\AchievedKernelBandwidth}{\text{BW}_{\text{effective}}} \newcommand{\AcquisitionEpoch}{t_{\text{acq}}} \newcommand{\ActVariationalObjective}{\mathcal{L}_{\text{ACT}}} \newcommand{\ActionBinCount}{B} \newcommand{\ActionChunk}{\mathbf{A}} \newcommand{\ActionChunkHorizon}{H} \newcommand{\ActionChunkIndex}{k} \newcommand{\ActionDimension}{d_a} \newcommand{\ActionExecutionRate}{f_{\text{exec}}} \newcommand{\ActionFilterCutoffFrequency}{f_{\text{cutoff}}} \newcommand{\ActionLowerBound}{\mathbf{a}_{\min}} \newcommand{\ActionMagnitudeBound}{a_{\max}} \newcommand{\ActionRangeMaximum}{a_{\max}} \newcommand{\ActionRangeMinimum}{a_{\min}} \newcommand{\ActionRecoverableFraction}{\rho_{a}} \newcommand{\ActionResidualVector}{\mathbf{r}} \newcommand{\ActionSpace}{\mathcal{A}} \newcommand{\ActionTokenPrefix}{a_{<j}} \newcommand{\ActionUpperBound}{\mathbf{a}_{\max}} \newcommand{\ActivationCheckpointCount}{n_{\text{ckpt}}} \newcommand{\ActivationFunction}{f} \newcommand{\ActivationInput}{x} \newcommand{\ActivationLipschitzBound}{L_{\phi}} \newcommand{\ActivationMatrix}{\mathbf{A}} \newcommand{\ActivationMemory}{M_{\text{activations}}} \newcommand{\ActivationPayloadSize}{M_{\text{act}}} \newcommand{\ActivationStagingTime}{t_{\text{activate}}} \newcommand{\ActivationVector}{\mathbf{a}} \newcommand{\ActiveContactIndex}{k} \newcommand{\ActiveControlTorque}{\mathbf{u}_{\text{active}}} \newcommand{\ActiveInferencePower}{P_{\text{active}}} \newcommand{\ActiveLeaseCount}{N_{\text{active}}} \newcommand{\ActiveMotionDuration}{T_{\text{motion}}} \newcommand{\ActiveParameterCount}{P_{\text{model}}} \newcommand{\ActivePrefillRequestSet}{\mathcal{P}_{\text{active}}} \newcommand{\ActiveSchemaSet}{\mathcal{S}} \newcommand{\ActiveTargetTokenCount}{N_{\text{active}}} \newcommand{\ActorAccelerationBound}{a_{k,\max}} \newcommand{\ActorBodyRadius}{r} \newcommand{\ActorUpdateDelayCount}{d} \newcommand{\ActuatedJointAccelerations}{\ddot{\mathbf{q}}_j} \newcommand{\ActuatedJointBiasForces}{\mathbf{h}_j} \newcommand{\ActuatedJointCoordinates}{\mathbf{q}_j} \newcommand{\ActuationSelectionBaseBlock}{\mathbf{S}_b} \newcommand{\ActuationSelectionMatrix}{\mathbf{S}} \newcommand{\ActuatorAxisCount}{N_{\text{axes}}} \newcommand{\ActuatorBiasEffort}{u_{\text{bias}}} \newcommand{\ActuatorCyclePeriod}{t_{\text{cycle}}} \newcommand{\ActuatorDutyCycle}{D_{\text{cycle}}} \newcommand{\ActuatorEffort}{u} \newcommand{\ActuatorOffTime}{t_{\text{off}}} \newcommand{\ActuatorOnTime}{t_{\text{on}}} \newcommand{\ActuatorResponseTime}{T_{\text{act}}} \newcommand{\ActuatorTorqueLowerBound}{\mathbf{u}_{\min}} \newcommand{\ActuatorTorqueUpperBound}{\mathbf{u}_{\max}} \newcommand{\AdamFirstMoment}{m} \newcommand{\AdamMomentDecayRate}{\beta} \newcommand{\AdamSecondMoment}{v} \newcommand{\AdaptationEnergyAllowance}{E_{\text{slack}}} \newcommand{\AdaptationInvestmentCost}{C_{\text{invest}}} \newcommand{\AdaptationLatencyIncrease}{\Delta L_{\text{lat,fg}}^{\text{wc}}} \newcommand{\AdaptationModule}{g_{\psi}} \newcommand{\AdaptationPeakMemory}{M_{\text{peak}}} \newcommand{\AdaptationPowerIncrement}{P_{\text{update}}} \newcommand{\AdaptationWindowEnergy}{E_{\text{update}}} \newcommand{\AdaptedHiddenActivation}{\mathbf{h}'} \newcommand{\AdaptedTaskCost}{C_{\text{task, adapt}}} \newcommand{\AdaptedWeightMatrix}{\mathbf{W}_{\text{adapted}}} \newcommand{\AdapterActivationFunction}{\sigma} \newcommand{\AdapterAssignmentVector}{\mathbf{m}} \newcommand{\AdapterDownProjectionMatrix}{\mathbf{A}} \newcommand{\AdapterIndex}{k} \newcommand{\AdapterInitializationStandardDeviation}{\sigma} \newcommand{\AdapterRank}{r} \newcommand{\AdapterScalingFactor}{\gamma} \newcommand{\AdapterUpProjectionMatrix}{\mathbf{B}} \newcommand{\AdjacentNeighboringDataset}{X'} \newcommand{\AdjacentQueryResult}{v'} \newcommand{\AdminLeaseTime}{T_{\text{admin}}} \newcommand{\AdmissibleBacklogCount}{n} \newcommand{\AdmissibleControlSet}{\mathcal{U}_{\text{adm}}} \newcommand{\AdmissibleDisturbanceSet}{\mathcal{W}} \newcommand{\AdmissionCheckCount}{n_{\text{chk}}} \newcommand{\AdmissionCheckIndex}{i} \newcommand{\AdmissionDecisionEvent}{e_{\text{auth}}} \newcommand{\AdmissionInclusivePrebrakeDelay}{T_{\text{true}}} \newcommand{\AdmissionRouteYield}{Y} \newcommand{\AdmittedAttemptCap}{N} \newcommand{\AdmittedCommand}{u} \newcommand{\AdmittedContactForce}{F^*} \newcommand{\AdmittedControlCommand}{\mathbf{u}} \newcommand{\AdmittedSpeedCommand}{v^*} \newcommand{\AdmittedTargetPosition}{\hat{\mathbf{p}}_{\text{target}}} \newcommand{\AdmittedWorkUnitCount}{m} \newcommand{\AdvantageStabilizer}{\epsilon_{\text{stab}}} \newcommand{\AdversarialDisturbance}{\mathbf{d}} \newcommand{\AdversarialExample}{x_{\text{adv}}} \newcommand{\AdversarialInputLength}{n} \newcommand{\AdversarialPenaltyWeight}{\lambda_{\text{adv}}} \newcommand{\AdversarialPerturbation}{\boldsymbol{\delta}_{\text{adv}}} \newcommand{\AdversarialPerturbationBudget}{\epsilon_{\text{adv}}} \newcommand{\AdversaryLoss}{\mathcal{L}_{\text{adv}}} \newcommand{\AffordanceFrame}{\mathcal{F}_{\text{affordance}}} \newcommand{\AffordanceSuccessEstimate}{V_{\text{policy}}} \newcommand{\AgeBlindTravel}{\Delta x_{\text{blind}}} \newcommand{\AgeCheckInstant}{t_{\text{curr}}} \newcommand{\AggregateServerPower}{P_{\text{servers}}} \newcommand{\AggregateSlotWork}{W} \newcommand{\AggregatedRecoveryDataset}{\mathcal{D}} \newcommand{\AggregatedSurrogateLoss}{\epsilon_N} \newcommand{\AggregationLearnedPolicy}{\hat{\pi}} \newcommand{\AggregationLearnerStateDistribution}{d_{\hat{\pi}_i}} \newcommand{\AggregationRoundCount}{N} \newcommand{\AggregationRoundIndex}{i} \newcommand{\AggregationRoundTrajectorySet}{\mathcal{T}} \newcommand{\AiStandaloneSensitivity}{S_{\text{AI}}} \newcommand{\AisleTravelSpeed}{v_{\text{aisle}}} \newcommand{\AisleWidth}{w} \newcommand{\AlertCheckCount}{N_{\text{tests}}} \newcommand{\AlertFalsePositiveRate}{\alpha_{\text{fp}}} \newcommand{\AlgorithmTaxonomyAxis}{\mathsf{Algorithm}} \newcommand{\AliasedVibrationFrequency}{f_{\text{alias}}} \newcommand{\AliasingHarmonicIndex}{k} \newcommand{\AllGatherCompletionTime}{T_{\text{allgather}}} \newcommand{\AllOnesVector}{\mathbf{1}} \newcommand{\AllReduceCompletionTime}{T_{\text{allreduce}}} \newcommand{\AllReduceMinimumBandwidthTime}{T_{\text{bandwidth}}^{\text{min}}} \newcommand{\AllRunsPassEstimate}{\widehat{r}} \newcommand{\AllToAllCompletionTime}{T_{\text{alltoall}}} \newcommand{\AllToAllExchangeTime}{T} \newcommand{\AllocatedBlockCount}{N_{\text{blocks}}} \newcommand{\AllocatedHazardRate}{\lambda_{\text{alloc}}} \newcommand{\AllocatedWallTime}{T_{\text{wall}}} \newcommand{\AllowableCollisionEnergy}{E_{k, \text{allow}}} \newcommand{\AllowableRailDroop}{\Delta V_{\text{droop, max}}} \newcommand{\AllowableRailExcursion}{\Delta V_{\max}} \newcommand{\AllowableWindingTemperatureRise}{\Delta T_{\max}} \newcommand{\AllowedTokenSet}{\mathcal{V}_{\text{allow}}} \newcommand{\AllowedViolationFraction}{V^{\text{allow}}} \newcommand{\AlphabetByte}{b} \newcommand{\AlternateModelInput}{x'} \newcommand{\AmbientDimension}{D} \newcommand{\AmbientTemperature}{T_{\text{amb}}} \newcommand{\AmortizedTurnCost}{\bar{C}_{\text{turn}}} \newcommand{\AngularAcceleration}{\boldsymbol{\alpha}} \newcommand{\AngularClearance}{\theta_{\text{clear}}} \newcommand{\AngularClearanceRate}{\dot{\theta}_{\text{clear}}} \newcommand{\AngularFrequency}{\omega} \newcommand{\AngularSpeed}{\omega} \newcommand{\AngularVelocity}{\boldsymbol{\omega}} \newcommand{\AngularVelocityDerivative}{\dot{\boldsymbol{\omega}}} \newcommand{\AnnualQueryVolume}{Q_{\text{annual}}} \newcommand{\AnonymitySetSize}{k_{\text{anon}}} \newcommand{\AntiWindupTrackingTimeConstant}{T_t} \newcommand{\AntialiasingFilterVariance}{s} \newcommand{\ApiAccount}{u} \newcommand{\ApparentContrast}{C} \newcommand{\AppearanceRealityGap}{\Delta_{\text{vis}}} \newcommand{\AppliedForce}{F} \newcommand{\AppliedLoadCycleCount}{n} \newcommand{\ApproachChannelCount}{K_a} \newcommand{\ApproachDirection}{\hat{\mathbf{a}}_{\text{approach}}} \newcommand{\ApproachPosition}{x} \newcommand{\ApproachPredicate}{P_{\text{approach}}} \newcommand{\ApproachSpeed}{v_{\text{app}}} \newcommand{\ApprovalCatchFraction}{q} \newcommand{\ApprovalHeldTrajectories}{N_{\text{held}}} \newcommand{\ApproximatingDistribution}{q} \newcommand{\ArbitrationFieldBitCount}{B_{\text{arb},i}} \newcommand{\ArcObstacleDistance}{d_{\text{arc}}} \newcommand{\ArchitectureResourceCost}{C} \newcommand{\ArchitectureSearchSpace}{\mathcal{A}} \newcommand{\ArcsineEffectSize}{h} \newcommand{\ArgumentLegConfidence}{r} \newcommand{\ArgumentLegCount}{m} \newcommand{\ArithmeticIntensity}{I} \newcommand{\ArmStoppingDeceleration}{a_{\text{arm}}} \newcommand{\ArmSuccessProbability}{p} \newcommand{\ArmingSettleDuration}{t_{\text{settle}}} \newcommand{\ArrivalOffsetTravel}{\Delta x} \newcommand{\ArrivalRate}{\lambda_{\text{arr}}} \newcommand{\ArrivalStampOffset}{\Delta t_{\text{recv}}} \newcommand{\ArrivalTimestamp}{t_{\text{recv}}} \newcommand{\ArtifactVersion}{v} \newcommand{\AssessedContactForceLimit}{F_{\text{limit}}} \newcommand{\AssignedJobGpu}{g} \newcommand{\AssociationCostEntry}{c} \newcommand{\AssuranceClaim}{C} \newcommand{\AsymptoticTightBound}{\Theta} \newcommand{\AtmosphericExtinctionCoefficient}{\beta_{\text{atm}}} \newcommand{\AttackStepsPgd}{K_{\text{PGD}}} \newcommand{\AttackedTrialCount}{n} \newcommand{\AttainableComputeRate}{R_{\text{attain}}} \newcommand{\AttemptCleanupCost}{C_{\text{cleanup}}} \newcommand{\AttemptCost}{C_{\text{attempt}}} \newcommand{\AttemptCycleDuration}{t_{\text{cyc}}} \newcommand{\AttemptDuration}{t_{\text{att}}} \newcommand{\AttemptGenerationTime}{T_{\text{gen}}} \newcommand{\AttemptPassProbability}{p} \newcommand{\AttemptRuntimeOverheadCost}{C_{\text{runtime}}} \newcommand{\AttemptVerificationCost}{C_{\text{verify}}} \newcommand{\AttentionHeadCount}{N_{\text{heads}}} \newcommand{\AttentionHeadDimension}{d_{\text{head}}} \newcommand{\AttentionHeadIndex}{i} \newcommand{\AttentionHeadOutput}{\mathbf{O}} \newcommand{\AttentionKeyMatrix}{\mathbf{K}} \newcommand{\AttentionOutputMatrix}{\mathbf{O}} \newcommand{\AttentionOutputProjectionMatrix}{\mathbf{W}_{O}} \newcommand{\AttentionQueryMatrix}{\mathbf{Q}} \newcommand{\AttentionScoreEntry}{S_{ij}} \newcommand{\AttentionScoreMatrix}{\mathbf{S}} \newcommand{\AttentionScoreRow}{\mathbf{S}_{i, \cdot}} \newcommand{\AttentionScoreSummand}{S_{ik}} \newcommand{\AttentionScoreTile}{\mathbf{S}_{ij}} \newcommand{\AttentionValuesMatrix}{\mathbf{V}} \newcommand{\AttentionValuesProjectionMatrix}{\mathbf{W}_{V}} \newcommand{\AttentionValuesSourceMatrix}{\mathbf{X}_{V}} \newcommand{\AttentionValuesVector}{\mathbf{v}} \newcommand{\AttentionWeightEntry}{A_{ij}} \newcommand{\AttentionWeightMatrix}{\mathbf{A}} \newcommand{\AttentionWeightVector}{\mathbf{a}} \newcommand{\AttitudeError}{\theta_{\text{att}}} \newcommand{\AttributionFeatureCount}{n_{\text{feat}}} \newcommand{\AuditGroupRecordCount}{n_{\text{records}}} \newcommand{\AuthorityExposureLevel}{A} \newcommand{\AutocorrelationLagIndex}{k} \newcommand{\AutoencoderReconstructionError}{\mathcal{L}_{\text{rec}}} \newcommand{\AutomatedResetTime}{t_{\text{reset,auto}}} \newcommand{\AutomatonStateSet}{Q} \newcommand{\AutomatonTransitionFunction}{\delta} \newcommand{\AutonomousExecutionComputeCost}{C_{\text{compute}}} \newcommand{\AutoscalingDecisionTime}{T_{\text{decide}}} \newcommand{\AutoscalingDetectionTime}{T_{\text{detect}}} \newcommand{\AutoscalingResponseTime}{T_{\text{response}}} \newcommand{\AvailabilityObjective}{S_{\text{availability}}} \newcommand{\AvailableBrakingDistance}{D_{\text{avail}}} \newcommand{\AvailableDeceleration}{a} \newcommand{\AvailableObservations}{\mathcal{O}_{\text{avail}}} \newcommand{\AverageCopperLossPower}{\bar{P}_{\text{loss}}} \newcommand{\AverageOnlineRegret}{\gamma_N} \newcommand{\AveragePower}{P_{\text{avg}}} \newcommand{\AverageStateVisitationDistribution}{\bar{d}} \newcommand{\AxiBurstLength}{A_{\text{len}}} \newcommand{\AxisGridPointCount}{N} \newcommand{\AzimuthAngle}{\theta_{\text{az}}} \newcommand{\BackEmfVoltage}{e_{\text{bemf}}} \newcommand{\BacklashAngle}{\theta_{\text{backlash}}} \newcommand{\BackwardEulerEigenvalue}{\lambda_{\text{BE}}} \newcommand{\BackwardEulerTransitionMatrix}{\mathbf{A}_{\text{BE}}} \newcommand{\BackwardPassTime}{T_{\text{backward}}} \newcommand{\BackwardReachableTube}{\mathcal{R}} \newcommand{\BalanceDivergenceTime}{\tau_{\text{fall}}} \newcommand{\BallRadius}{r} \newcommand{\BallVolume}{V_D} \newcommand{\Bandwidth}{\text{BW}} \newcommand{\BankConflictPenalty}{\Delta t_{\text{conflict}}} \newcommand{\BarrierConstraintBound}{b_{\text{cbf}}} \newcommand{\BarrierConstraintCount}{K_b} \newcommand{\BarrierConstraintNormal}{\mathbf{a}_{\text{cbf}}} \newcommand{\BarrierFunction}{h} \newcommand{\BarrierFunctionRate}{\dot{h}} \newcommand{\BarrierHalfSpaceControlSet}{\mathcal{U}_{\text{safe}}} \newcommand{\BarrierMargin}{\delta} \newcommand{\BarrierNormalizationScale}{h_{\text{scale}}} \newcommand{\BarrierProjectionLagrangian}{L_{\text{Lag}}} \newcommand{\BarrierProjectionMultiplier}{\lambda} \newcommand{\BarrierRelativeDegree}{r} \newcommand{\BaseAbscissaVelocity}{\dot{x}} \newcommand{\BaseAccelerationCommand}{a} \newcommand{\BaseBatchSize}{B_{\text{base}}} \newcommand{\BaseCameraRotation}{\mathbf{R}_{\text{base}}^{\text{cam}}} \newcommand{\BaseCameraTransform}{\mathbf{T}_{\text{base}}^{\text{cam}}} \newcommand{\BaseCameraTranslation}{\mathbf{t}_{\text{base}}^{\text{cam}}} \newcommand{\BaseFlangeTransform}{\mathbf{T}_{\text{base}}^{\text{flange}}} \newcommand{\BaseForwardSpeed}{v} \newcommand{\BaseFramePoint}{\mathbf{p}_{\text{base}}} \newcommand{\BaseHeadingRate}{\dot{\theta}_{\text{head}}} \newcommand{\BaseJointInertiaCoupling}{\mathbf{M}_{bj}} \newcommand{\BaseLateralPosition}{y_{\text{base}}} \newcommand{\BaseLateralVelocity}{\dot{y}} \newcommand{\BaseLayerCount}{N_{L,0}} \newcommand{\BaseLearningRate}{\eta_{\text{base}}} \newcommand{\BaseLongitudinalPosition}{x_{\text{base}}} \newcommand{\BaseLongitudinalVelocity}{\dot{x}} \newcommand{\BaseOdometrySpeed}{v} \newcommand{\BaseOrdinateVelocity}{\dot{y}} \newcommand{\BasePosition}{\mathbf{p}_{\text{base}}} \newcommand{\BasePromptLength}{S_{\text{base}}} \newcommand{\BaseStoppingDistance}{d_{\text{base}}} \newcommand{\BaseToCameraTransform}{\mathbf{T}_{\text{cam} \leftarrow \text{base}}} \newcommand{\BaseTrainingComputeCost}{C_{\text{compute}}} \newcommand{\BaseTrajectoryTokenCount}{N_{\text{base}}} \newcommand{\BaseTravelDistance}{d} \newcommand{\BaseTravelSpeed}{v_{\text{base}}} \newcommand{\BaseWidthMultiplier}{w_{\text{mult},0}} \newcommand{\BaseWorkerCount}{N_{\text{base}}} \newcommand{\BaseWristTransform}{\mathbf{T}_{\text{base} \leftarrow \text{wrist}}} \newcommand{\BaseYawRateBias}{\omega_{\text{bias}}} \newcommand{\BaselineAcceptanceEstimate}{\hat{p}_{\text{base}}} \newcommand{\BaselineAnnualOperationsCost}{C_{\text{current}}} \newcommand{\BaselineControllerAction}{\mathbf{a}_t^{\text{base}}} \newcommand{\BaselineConversionRate}{p_0} \newcommand{\BaselineFeatureMean}{\mu_{\text{base}}} \newcommand{\BaselineFeatureStandardDeviation}{\sigma_{\text{base}}} \newcommand{\BaselineIntervalLowerLimit}{l_{\text{base}}} \newcommand{\BaselineIntervalUpperLimit}{u_{\text{base}}} \newcommand{\BaselineLowerLimitDistance}{\delta^-_{\text{base}}} \newcommand{\BaselineOnlyAcceptedTaskCount}{b} \newcommand{\BaselineOnlyCorrectCount}{n_{\text{base}}} \newcommand{\BaselinePolicyAcceptanceProbability}{p_{X}} \newcommand{\BaselinePolicyCost}{C_{X}} \newcommand{\BaselineStateDistribution}{d^{\pi_{\text{base}}}} \newcommand{\BaselineTaskCost}{C_{\text{task, base}}} \newcommand{\BaselineToolCallDistribution}{p_{b}} \newcommand{\BaselineTrackingError}{e_{\text{track}}} \newcommand{\BaselineTrainingDuration}{T_{\text{hours}}} \newcommand{\BaselineTrajectoryGoodput}{\mathcal{G}_{b}} \newcommand{\BaselineUpperLimitDistance}{\delta^+_{\text{base}}} \newcommand{\BatchArrivalRate}{\lambda_{\text{batch}}} \newcommand{\BatchAxisLabel}{b} \newcommand{\BatchBufferMemory}{M_{\text{batch}}} \newcommand{\BatchCostPerAcceptedTask}{C_{\text{eff,batch}}} \newcommand{\BatchDataVolume}{D_{\text{vol}}^{(\text{batch})}} \newcommand{\BatchExampleIndex}{n} \newcommand{\BatchFetchTime}{T_{\text{fetch}}} \newcommand{\BatchFillArrivalCount}{k} \newcommand{\BatchFixedOverheadTime}{T_{\text{fixed}}} \newcommand{\BatchFlushStartTime}{t_{\text{start}}} \newcommand{\BatchFormationDelay}{L_{\text{lat,form}}} \newcommand{\BatchIndex}{k} \newcommand{\BatchLabelComponent}{y_{ij}} \newcommand{\BatchLatencyEnvelope}{L_{\text{lat,envelope}}} \newcommand{\BatchLoss}{\mathcal{L}_{\text{batch}}} \newcommand{\BatchMaxOutputLength}{S_{\text{max}}} \newcommand{\BatchMaximumDeviationMultiple}{k} \newcommand{\BatchMeanOutputLength}{\bar{S}} \newcommand{\BatchNormMean}{\mu_{\mathcal{B}}} \newcommand{\BatchNormOutput}{y} \newcommand{\BatchNormRunningMean}{\boldsymbol{\mu}_{\mathcal{B}}} \newcommand{\BatchNormRunningStandardDeviation}{\boldsymbol{\sigma}_{\mathcal{B}}} \newcommand{\BatchNormStandardDeviation}{\sigma_{\mathcal{B}}} \newcommand{\BatchOperations}{O_{\text{batch}}} \newcommand{\BatchPredictedProbability}{\hat{y}_{ij}} \newcommand{\BatchProcessingTime}{T_{\text{process}}} \newcommand{\BatchRolloutCount}{N_{\text{batch}}} \newcommand{\BatchScalingFactor}{k} \newcommand{\BatchServiceTime}{T_{\text{svc}}} \newcommand{\BatchSize}{B} \newcommand{\BatchTransferTime}{T_{\text{transfer}}} \newcommand{\BatchedDecodeStepTime}{t_{\text{step}}} \newcommand{\BatchedEventIndex}{i} \newcommand{\BatchedRequestLatency}{L_{\text{lat,batch}}} \newcommand{\BatchingLatencyBudget}{L_{\text{lat,budget}}} \newcommand{\BatchingQueueWait}{L_{\text{lat,wait}}} \newcommand{\BatchingWindow}{T_{\text{window}}} \newcommand{\BatteryCellResistance}{R_{\text{cell}}} \newcommand{\BeamDivergenceAngle}{\delta\theta_{\text{div}}} \newcommand{\BeamWidth}{W} \newcommand{\BearingRay}{\mathbf{r}} \newcommand{\BeatFrequency}{f_b} \newcommand{\BehaviorCloningHorizon}{S} \newcommand{\BehaviorCloningLoss}{\mathcal{L}_{\text{BC}}} \newcommand{\BehaviorDistribution}{b} \newcommand{\BehaviorPolicyVersion}{\text{ver}_b} \newcommand{\BeliefErrorBound}{E} \newcommand{\BeliefInvalidationHorizon}{T_{\text{inv}}} \newcommand{\BeliefState}{b} \newcommand{\BellmanBackupTarget}{y} \newcommand{\BellmanErrorLoss}{\mathcal{L}_{\text{Bellman}}} \newcommand{\BelowThresholdIndicator}{\mathbf{1}_{\{|(\mathbf{W}_{\text{sparse}})_{ij}| \leq \delta_{\text{prune}}\}}} \newcommand{\BestEffortWireBitCount}{B_{\text{BE,wire}}} \newcommand{\BetterArmSuccessProbability}{p_{\text{high}}} \newcommand{\BetweenTaskStandardDeviation}{\sigma_{\text{task}}} \newcommand{\BevPillarFeature}{\mathbf{V}_{\text{BEV}}} \newcommand{\BevPillarXIndex}{X} \newcommand{\BevPillarYIndex}{Y} \newcommand{\BiasFeedbackFactor}{\alpha_{\text{fb}}} \newcommand{\BiasVector}{\mathbf{b}} \newcommand{\BilledAllocationTime}{T_{\text{total}}} \newcommand{\BinaryActivationVector}{\mathbf{a}} \newcommand{\BinaryClassifier}{h} \newcommand{\BinaryWeightVector}{\mathbf{w}} \newcommand{\BinomialSuccessCount}{X} \newcommand{\BipedTiltAcceleration}{\ddot{\theta}_{\text{tilt}}} \newcommand{\BisectionBandwidth}{\text{BW}_{\text{bisect}}} \newcommand{\BitFlippedFloatNumber}{x_{\text{corrupt}}} \newcommand{\BitTime}{T_{\text{bit}}} \newcommand{\BlackoutClockConversionError}{\Delta t_{\text{one-sigma scenario}}} \newcommand{\BlendDeadline}{t_{\text{blend}}} \newcommand{\BlendedCommandJerk}{j_{\text{cmd}}} \newcommand{\BlendedControlCommand}{\mathbf{u}_{\text{blend}}} \newcommand{\BlendedInputTokenPrice}{c_{\text{in}}} \newcommand{\BlendingTransitionWindow}{\tau_{\text{blend}}} \newcommand{\BlindTravelDistance}{d_{\text{blind}}} \newcommand{\BlockCheckTime}{T_{\text{ver}}} \newcommand{\BlockCoordinateX}{b_x} \newcommand{\BlockCoordinateY}{b_y} \newcommand{\BlockCoordinateZ}{b_z} \newcommand{\BlockEdgeVoxelCount}{n_{\text{blk}}} \newcommand{\BlockMaximum}{M} \newcommand{\BlockMaximumLevel}{z} \newcommand{\BlockMaximumLimitDistribution}{G} \newcommand{\BlockMaximumNormalizingScale}{a} \newcommand{\BlockMaximumNormalizingShift}{b} \newcommand{\BlockMetadataSize}{s_{\text{meta}}} \newcommand{\BlockQuantizationScale}{s_b} \newcommand{\BlockRangeMaximum}{x_{\max,i}} \newcommand{\BlockRangeMinimum}{x_{\min,i}} \newcommand{\BlockSampleCount}{n} \newcommand{\BlockedWorkerCount}{N_{\text{blocked}}} \newcommand{\BlockingCallTimeout}{T_{\text{out}}} \newcommand{\BlockingTaskIndex}{k} \newcommand{\BodyAcceleration}{\dot{v}} \newcommand{\BodyDisplacement}{x} \newcommand{\BodyEndEffectorTransform}{\mathbf{T}_{BE}} \newcommand{\BodyFramePoint}{\mathbf{p}_{\text{body}}} \newcommand{\BodyFramePointCovariance}{\boldsymbol{\Sigma}_{\text{body}}} \newcommand{\BodyLidarTransform}{\mathbf{T}_{bl}} \newcommand{\BodyReferenceFrame}{\mathcal{F}_B} \newcommand{\BodyRegionMass}{m_H} \newcommand{\BodySpeed}{v} \newcommand{\BoltzmannConstant}{k_B} \newcommand{\BoltzmannStateEnergy}{E} \newcommand{\BoltzmannTemperature}{T} \newcommand{\BootstrapQuantileFunction}{Q} \newcommand{\BootstrapReplicateCount}{B_{\text{boot}}} \newcommand{\BootstrapReplicateIndex}{r} \newcommand{\BottomedOutContactStiffness}{k_{\infty}} \newcommand{\BouligandContingentCone}{T_{\mathcal{C}}} \newcommand{\BoundaryConditionVector}{\mathbf{b}} \newcommand{\BoundaryLayerTime}{t_{\text{fast}}} \newcommand{\BoundedRegimeTimestamp}{t_{\text{bounded}}} \newcommand{\BoxMaximumHorizontalCoordinate}{x_{\text{max}}} \newcommand{\BoxMaximumVerticalCoordinate}{y_{\text{max}}} \newcommand{\BoxMinimumHorizontalCoordinate}{x_{\text{min}}} \newcommand{\BoxMinimumVerticalCoordinate}{y_{\text{min}}} \newcommand{\BrakeChopperResistance}{R_{\text{brake}}} \newcommand{\BrakeCommandForce}{F_{\text{cmd}}} \newcommand{\BrakeResistorPulseEnergy}{E_{\text{pulse}}} \newcommand{\BrakingDistance}{d_{\text{brake}}} \newcommand{\BrakingForce}{F_{\text{brake}}} \newcommand{\BrakingOnsetContactForce}{F_{\text{cmd}}} \newcommand{\BrakingWork}{W_{\text{brake}}} \newcommand{\BreadthCriticalPathLatency}{T^{\text{breadth}}} \newcommand{\BreadthPeakKvCacheMemory}{M_{\text{KV}}^{\text{breadth}}} \newcommand{\BreakEvenAcceptanceProbability}{p'} \newcommand{\BreakEvenBrakingDeceleration}{a} \newcommand{\BreakEvenParseFailureRate}{p_{\text{break}}} \newcommand{\BreakEvenTaskCount}{N^*} \newcommand{\BreakEvenUtilization}{u^*} \newcommand{\BreakerCooldownInterval}{T_{\text{cool}}} \newcommand{\BreakerFailureFraction}{r} \newcommand{\BreakerMinimumSampleCount}{n_{\min}} \newcommand{\BreakerOutcomeIndex}{i} \newcommand{\BreakerOutcomeWindow}{W} \newcommand{\BreakerTripThreshold}{r_{\text{trip}}} \newcommand{\BridgeTraceResistance}{R_{\text{trace}}} \newcommand{\BroadcastColumnElement}{A} \newcommand{\BroadcastColumnTensor}{\mathbf{A}} \newcommand{\BroadcastCompletionTime}{T_{\text{broadcast}}} \newcommand{\BroadcastRowElement}{b} \newcommand{\BroadcastRowTensor}{\mathbf{B}} \newcommand{\BroadcastTableSize}{s_{\text{table}}} \newcommand{\BspLearningRate}{\eta_{\text{BSP}}} \newcommand{\BsplineBasisFunction}{B} \newcommand{\BudgetEvaluationTime}{\tau} \newcommand{\BudgetFreeBalance}{F} \newcommand{\BudgetNodeIndex}{k} \newcommand{\BudgetReservedFunds}{R} \newcommand{\BudgetSettledCharges}{E} \newcommand{\BudgetedAcceptanceProbability}{q_{\pi}} \newcommand{\BufferDependencyEdgeSet}{E} \newcommand{\BufferDependencyGraph}{G} \newcommand{\BufferDependencyVertexSet}{V} \newcommand{\BufferIndex}{i} \newcommand{\BulkDecouplingCapacitance}{C_{\text{bulk}}} \newcommand{\BumplessTransferBlend}{\alpha} \newcommand{\BumplessTransferBlendAcceleration}{\ddot{\alpha}} \newcommand{\BumplessTransferBlendRate}{\dot{\alpha}} \newcommand{\BumplessTransferBlendSlope}{\alpha'} \newcommand{\BumplessTransferProgress}{\hat{t}} \newcommand{\BumplessTransferStartInstant}{t_{\text{start}}} \newcommand{\BurstArrivalCount}{N_{\text{burst}}} \newcommand{\BurstSurvivalTime}{t_{\text{limit}}} \newcommand{\BusBitRate}{R_{\text{bit}}} \newcommand{\BusCapacitorEnergy}{E_C} \newcommand{\BusCapacitorVoltage}{V_C} \newcommand{\BusSerializationTime}{t_{\text{bus}}} \newcommand{\ButterflyAllReduceTime}{T_{\text{butterfly}}} \newcommand{\ByteAlphabet}{\Sigma} \newcommand{\ByteString}{u} \newcommand{\ByzantineClientCount}{f} \newcommand{\ByzantineFaultCount}{f} \newcommand{\CableFlexCycleCount}{n_{\text{cable}}} \newcommand{\CableRatedFatigueLife}{L_{\text{cable}}} \newcommand{\CacheMissStallFraction}{f} \newcommand{\CachedInputTokenCount}{n_{\text{cache}}} \newcommand{\CachedInputTokenPrice}{c_{\text{cache}}} \newcommand{\CalibratedAcceptanceEstimate}{\hat{p}} \newcommand{\CalibrationBinCount}{N_{\text{bins}}} \newcommand{\CalibrationBinExampleSet}{B_m} \newcommand{\CalibrationBinIndex}{m} \newcommand{\CalibrationConstraintMatrix}{\mathbf{V}} \newcommand{\CalibrationDataDistribution}{p_{\text{cal}}} \newcommand{\CalibrationDataset}{\mathcal{C}_{\text{cal}}} \newcommand{\CalibrationExampleCount}{n_{\text{cal}}} \newcommand{\CalibrationModelPoint}{\mathbf{M}} \newcommand{\CalibrationPoseIndex}{k} \newcommand{\CalibrationRotationAxisCount}{N} \newcommand{\CalibrationSceneIndex}{j} \newcommand{\CalibrationTemperature}{T_{\text{cal}}} \newcommand{\CalibrationViewCount}{N} \newcommand{\CallLatency}{T_{\text{call}}} \newcommand{\CallPostprocessingTime}{T_{\text{post}}} \newcommand{\CallPreparationTime}{T_{\text{prep}}} \newcommand{\CallTailProbability}{p_{\text{tail}}} \newcommand{\CallUsefulWorkTime}{W} \newcommand{\CameraCenterArcPosition}{x_{\text{rot}}} \newcommand{\CameraExtrinsicRotation}{\mathbf{R}_{bc}} \newcommand{\CameraExtrinsicTransform}{\mathbf{T}_{bc}} \newcommand{\CameraExtrinsicTranslation}{\mathbf{p}_{bc}} \newcommand{\CameraFrameDepth}{Z_c} \newcommand{\CameraFrameHorizontalCoordinate}{X_c} \newcommand{\CameraFramePeriod}{T_{\text{sample}}} \newcommand{\CameraFramePoint}{\mathbf{p}_c} \newcommand{\CameraFramePointCovariance}{\boldsymbol{\Sigma}_c} \newcommand{\CameraFrameVerticalCoordinate}{Y_c} \newcommand{\CameraIdentifierEmbedding}{\mathbf{e}_{\text{cam}}} \newcommand{\CameraImage}{\mathbf{I}} \newcommand{\CameraImuTimeOffset}{\Delta t_{\text{imu}}} \newcommand{\CameraIntrinsicCalibrationMatrix}{\mathbf{K}} \newcommand{\CameraIntrinsicInverseTranspose}{\mathbf{K}^{-\top}} \newcommand{\CameraLateralStandardDeviation}{\sigma_{x_c}} \newcommand{\CameraMountTiltAngle}{\theta_{\text{ext}}} \newcommand{\CameraObjectTransform}{\mathbf{T}_{\text{camera}}^{\text{object}}} \newcommand{\CameraOpticalCenter}{\mathbf{o}} \newcommand{\CameraReferenceFrame}{\mathcal{F}_{\text{cam}}} \newcommand{\CameraRotationColumn}{\mathbf{r}} \newcommand{\CameraSampleTimestamp}{t_{\text{cam}}} \newcommand{\CameraSkewCoefficient}{\gamma} \newcommand{\CameraTargetTransform}{\mathbf{T}_{\text{cam}}^{\text{target}}} \newcommand{\CameraToWorldRotation}{\mathbf{R}_{WC}} \newcommand{\CameraToWorldTransform}{\mathbf{T}_{WC}} \newcommand{\CameraToWorldTranslation}{\mathbf{t}_{WC}} \newcommand{\CampaignActiveTime}{T_{\text{active}}} \newcommand{\CanHighLineVoltage}{V_{\text{CANH}}} \newcommand{\CanLowLineVoltage}{V_{\text{CANL}}} \newcommand{\CanaryAllocationFraction}{\rho} \newcommand{\CanaryInterventionRate}{\lambda_{\text{canary}}} \newcommand{\CanaryLabelDelay}{t_{\text{label}}} \newcommand{\CanarySpeedBound}{v_{\text{canary}}} \newcommand{\CanaryStageDuration}{T_{\text{stage}}} \newcommand{\CanaryTrafficFraction}{p_{\text{stage}}} \newcommand{\CandidateAcceptanceEstimate}{\hat{p}_{\text{cand}}} \newcommand{\CandidateActionVector}{\hat{\mathbf{a}}} \newcommand{\CandidateArchitecture}{a} \newcommand{\CandidateAvailabilityEstimate}{\widehat{q}} \newcommand{\CandidateAvailabilityProbability}{q} \newcommand{\CandidateCheckingCost}{v} \newcommand{\CandidateClientCount}{K_{\text{candidates}}} \newcommand{\CandidateControlCommand}{\mathbf{u}^{\text{cand}}} \newcommand{\CandidateControlCommandDerivative}{\dot{\mathbf{u}}^{\text{cand}}} \newcommand{\CandidateDefectRate}{\epsilon} \newcommand{\CandidateGenerationCost}{g} \newcommand{\CandidateIndex}{i} \newcommand{\CandidateIntervalLowerLimit}{l_{\text{cand}}} \newcommand{\CandidateIntervalUpperLimit}{u_{\text{cand}}} \newcommand{\CandidateLowerLimitDistance}{\delta^-_{\text{cand}}} \newcommand{\CandidateOnlyAcceptedTaskCount}{c} \newcommand{\CandidatePolicyAcceptanceProbability}{p_{Y}} \newcommand{\CandidatePolicyAction}{\mathbf{a}_t^{\text{cand}}} \newcommand{\CandidatePolicyCost}{C_{Y}} \newcommand{\CandidatePoolSize}{N} \newcommand{\CandidateProposal}{p} \newcommand{\CandidateRoutingPolicy}{Y} \newcommand{\CandidateScoreVector}{\mathbf{c}} \newcommand{\CandidateScoringCost}{c_{\text{infer}}} \newcommand{\CandidateScoringError}{\epsilon} \newcommand{\CandidateSkill}{a} \newcommand{\CandidateSpeedCommand}{v_{\text{cand}}} \newcommand{\CandidateTailCompletionTime}{\widehat{T}_{c,0.99}} \newcommand{\CandidateToolCallDistribution}{p_{c}} \newcommand{\CandidateTrackingErrorStandardDeviation}{\sigma_{\text{track}}} \newcommand{\CandidateTrajectoryGoodput}{\mathcal{G}_{c}} \newcommand{\CandidateUpperLimitDistance}{\delta^+_{\text{cand}}} \newcommand{\CandidateUtility}{U} \newcommand{\CandidateUtilityMean}{\mu} \newcommand{\CandidateUtilityStandardDeviation}{\sigma_{U}} \newcommand{\CandidateViolationCount}{V_{c}} \newcommand{\CandidateWinCount}{j} \newcommand{\CapabilityGrant}{\Gamma} \newcommand{\CaptureAgeEmbedding}{\mathbf{e}_{\Delta t}} \newcommand{\CaptureSampleIndex}{t_0} \newcommand{\CaptureSampleKalmanGain}{\mathbf{G}_{t_0}} \newcommand{\CaptureSampleMeasurementMatrix}{\mathbf{H}_{t_0}} \newcommand{\CaptureSamplePredictedCovariance}{\mathbf{P}_{t_0|t_0-1}} \newcommand{\CaptureSamplePredictedEstimate}{\hat{\mathbf{x}}_{t_0|t_0-1}} \newcommand{\CaptureSampleUpdatedCovariance}{\mathbf{P}_{t_0|t_0}} \newcommand{\CaptureSampleUpdatedEstimate}{\hat{\mathbf{x}}_{t_0|t_0}} \newcommand{\CaptureTimestamp}{t_{\text{capture}}} \newcommand{\CapturedSensorObservation}{\mathbf{z}_{t_0}} \newcommand{\CartesianAcceleration}{\ddot{\mathbf{p}}} \newcommand{\CartesianPosition}{\mathbf{p}} \newcommand{\CartesianXCoordinate}{x} \newcommand{\CartesianYCoordinate}{y} \newcommand{\CartesianZCoordinate}{z} \newcommand{\CascadeEscalationProbability}{p_{\text{escalate}}} \newcommand{\CascadeGateCost}{g} \newcommand{\CascadeGateDuration}{v} \newcommand{\CascadeInferenceEnergy}{E_{\text{cascade}}} \newcommand{\CascadeTaskCost}{C_{\text{cascade}}} \newcommand{\CascadeTaskDuration}{T_{\text{cascade}}} \newcommand{\CascadeTierCost}{c^{\text{tier}}} \newcommand{\CascadeTierDuration}{t} \newcommand{\CascadeTierIndex}{j} \newcommand{\CascadedBarrierCertificate}{\psi} \newcommand{\CascadedBarrierClassKFunction}{\alpha} \newcommand{\CascadedBarrierDerivative}{\dot{\psi}} \newcommand{\CaseAmbientThermalResistance}{R_{\text{th,case-amb}}} \newcommand{\CaseTemperature}{T_{\text{case}}} \newcommand{\CaseThermalCapacitance}{C_{\text{case}}} \newcommand{\CaseThermalTimeConstant}{\tau_{\text{th,case}}} \newcommand{\CatalogDefinitionTokens}{S_{\text{catalog}}} \newcommand{\CatalogStagingCallCount}{N} \newcommand{\CategoryRecordCount}{n} \newcommand{\CausalInterventionMask}{\mathcal{M}} \newcommand{\CausalMediator}{M} \newcommand{\CausalTokenPosition}{s} \newcommand{\CbsRuntimeBudget}{Q} \newcommand{\CellOccupancyProbability}{p} \newcommand{\CenterCount}{k} \newcommand{\CentralizedTrainingEnergy}{E_{\text{centralized}}} \newcommand{\CentroidalAngularMomentum}{\mathbf{h}_{\text{ang}}} \newcommand{\CentroidalAngularMomentumDerivative}{\dot{\mathbf{h}}_{\text{ang}}} \newcommand{\CentroidalLinearMomentum}{\mathbf{h}_{\text{lin}}} \newcommand{\CentroidalLinearMomentumDerivative}{\dot{\mathbf{h}}_{\text{lin}}} \newcommand{\CentroidalMomentum}{\mathbf{h}_G} \newcommand{\CentroidalMomentumMatrix}{\mathbf{A}_G} \newcommand{\CentroidalMomentumMatrixDerivative}{\dot{\mathbf{A}}_G} \newcommand{\CentroidalMomentumRate}{\dot{\mathbf{h}}_G} \newcommand{\CertifiedCommandWindow}{\mathbf{u}^*_{t:t+H-1}} \newcommand{\CertifiedControlAction}{\mathbf{u}^*} \newcommand{\CertifiedJointTorque}{u^*} \newcommand{\CertifiedRadius}{R} \newcommand{\ChainRuleInput}{x} \newcommand{\ChainRuleIntermediate}{u} \newcommand{\ChainRuleOutput}{v} \newcommand{\ChainedOperationCount}{n_{\text{ops}}} \newcommand{\ChanceAnnotatorAgreement}{p_e} \newcommand{\ChannelAuthorityState}{S} \newcommand{\ChannelCommand}{u} \newcommand{\ChannelStoredEnergy}{E_{\text{channel}}} \newcommand{\CharacteristicPolynomial}{p} \newcommand{\CharacteristicPolynomialCoefficient}{c} \newcommand{\ChassisThermalResistance}{R_{\text{th,chassis}}} \newcommand{\CheapConfigurationAttemptCost}{c_{\text{small}}} \newcommand{\CheapConfigurationPassProbability}{p_{\text{small}}} \newcommand{\CheckIntervalStepCount}{m} \newcommand{\CheckPassProbability}{p^{\text{chk}}} \newcommand{\CheckSlotTime}{T} \newcommand{\CheckWindowTurnCount}{w} \newcommand{\CheckedSignal}{x} \newcommand{\CheckedSignalLimit}{L_{\text{limit}}} \newcommand{\CheckpointAttemptDuration}{T_{\text{att}}} \newcommand{\CheckpointExtraPauseTime}{T_{\text{pause}}} \newcommand{\CheckpointInterval}{T_{\text{ckpt}}} \newcommand{\CheckpointLoadTime}{T_{\text{load}}} \newcommand{\CheckpointLogPosition}{j_{\text{ckpt}}} \newcommand{\CheckpointOrdinalIndex}{m} \newcommand{\CheckpointOverheadFraction}{f_{\text{ckpt}}} \newcommand{\CheckpointOverheadRatio}{w} \newcommand{\CheckpointRecoveryOverheadTime}{T_{\text{overhead}}} \newcommand{\CheckpointRestoreTime}{T_{\text{restore}}} \newcommand{\CheckpointStride}{k} \newcommand{\CheckpointSuffixReadTime}{T_{\text{read}}} \newcommand{\CheckpointWasteFraction}{W} \newcommand{\CheckpointWriteTime}{T_{\text{write}}} \newcommand{\ChildBatchSize}{n_{\text{batch}}} \newcommand{\ChildBudgetAllocation}{C_{\max,C}} \newcommand{\ChildCapabilityGrant}{\Gamma_{\text{child}}} \newcommand{\ChildFreeBalance}{F_{C}} \newcommand{\ChildPruningProbability}{p_{\text{prune}}} \newcommand{\ChildReservedFunds}{R_{C}} \newcommand{\ChildSettledCharges}{E_{C}} \newcommand{\ChinchillaIrreducibleLoss}{E} \newcommand{\ChirpDuration}{T_c} \newcommand{\ChirpSlope}{S} \newcommand{\ChopperClampVoltage}{V_{\text{clamp}}} \newcommand{\ChopperTurnOffVoltage}{V_{\text{clamp,off}}} \newcommand{\ChopperTurnOnVoltage}{V_{\text{clamp,on}}} \newcommand{\ChunkActionDimension}{d_{\text{chunk}}} \newcommand{\ChunkEnsemblingWeight}{w} \newcommand{\ChunkExecutionHorizon}{H_{\text{exec}}} \newcommand{\ChunkImitationLoss}{\mathcal{L}_{\text{chunk}}} \newcommand{\ChunkLease}{T_{\text{lease}}} \newcommand{\ChunkLeaseTime}{T_{\text{lease}}} \newcommand{\ChunkReactionLatency}{T_{\text{reaction}}} \newcommand{\ChunkRenewalPeriod}{T_{\text{chunk}}} \newcommand{\ChunkRenewalRate}{f_{\text{replan}}} \newcommand{\ChunkStepIndex}{i} \newcommand{\ClampedControlCommand}{\mathbf{u}_{\text{clip}}} \newcommand{\ClassCount}{K} \newcommand{\ClassIndex}{j} \newcommand{\ClassKFunction}{\kappa} \newcommand{\ClassKFunctionSet}{\mathcal{K}} \newcommand{\ClassProbabilityVector}{\mathbf{p}} \newcommand{\ClassificationThreshold}{\gamma_{\text{cls}}} \newcommand{\CleanLabelSampleCount}{D_{\text{clean}}} \newcommand{\CleanTrainingDataset}{\mathcal{S}} \newcommand{\CleanupGraphEdgeSet}{E} \newcommand{\CleanupGraphVertexSet}{V} \newcommand{\ClearDistance}{D_{\text{clear}}} \newcommand{\ClearanceAcceleration}{\ddot{D}_{\text{clear}}} \newcommand{\ClearanceAllowance}{C} \newcommand{\ClearanceExhaustionTime}{t_{\text{impact}}} \newcommand{\ClearanceInset}{C_{\text{inset}}} \newcommand{\ClearanceQueryTime}{t_{\text{query}}} \newcommand{\ClearanceRate}{\dot{D}_{\text{clear}}} \newcommand{\ClearanceSpeedClamp}{v_{\text{clamp}}} \newcommand{\ClearanceTimeBudget}{T_{\text{total}}} \newcommand{\ClfClassKFunction}{\alpha_V} \newcommand{\ClfDescentControlSet}{\mathcal{U}_{\text{CLF}}} \newcommand{\ClientGradientVector}{\mathbf{g}} \newcommand{\ClientIndex}{k} \newcommand{\ClientLocalDataset}{\mathcal{D}} \newcommand{\ClientLocalTrainingEnergy}{E_{\text{client}}} \newcommand{\ClientMaskVector}{\mathbf{r}} \newcommand{\ClientObjectiveWeight}{w} \newcommand{\ClientSampleCount}{n} \newcommand{\ClientUpdateUploadEnergy}{E_{\text{upload}}} \newcommand{\ClippedSurrogateObjective}{\mathcal{M}} \newcommand{\ClippingRangeLowerBound}{\alpha} \newcommand{\ClippingRangeUpperBound}{\beta} \newcommand{\ClockConversionBound}{\epsilon_{\text{sync}}} \newcommand{\ClockConversionIntercept}{b_{\text{clk}}} \newcommand{\ClockConversionSlope}{a} \newcommand{\ClockFrequency}{f} \newcommand{\ClockOffset}{\theta_{\text{offset}}} \newcommand{\ClockPeriod}{T_{\text{clk}}} \newcommand{\ClockSynchronizationSkew}{\delta_{\text{skew}}} \newcommand{\ClosedLoopTrajectoryDensity}{p_{\text{cl}}} \newcommand{\ClosingSpeedBound}{v_{\text{close}}} \newcommand{\CloudInferenceEnergy}{E_{\text{cloud}}} \newcommand{\CloudOffloadEnergy}{E_{\text{transmit}}} \newcommand{\CloudTrainingRunEnergy}{E_{\text{cloud,train}}} \newcommand{\ClusterAvailability}{A_{\text{cluster}}} \newcommand{\ClusterCount}{k} \newcommand{\ClusterHeadroom}{N} \newcommand{\ClusterNodeCount}{N_{\text{nodes}}} \newcommand{\ClusterPower}{P_{\text{cluster}}} \newcommand{\CoarseCellCount}{C} \newcommand{\CodecDecodeTime}{T_{\text{decode}}} \newcommand{\CodecEncodeTime}{T_{\text{encode}}} \newcommand{\CodecOverheadTime}{T_{\text{overhead}}} \newcommand{\CognitivePolicyAction}{\mathbf{a}} \newcommand{\CoherencyCoefficient}{\kappa_{\text{coh}}} \newcommand{\ColdCopperLossPower}{P_0} \newcommand{\ColdResetCycleTime}{T_{\text{cycle,cold}}} \newcommand{\CollaborativeContactForce}{F_{\text{contact}}} \newcommand{\CollectedPhotocharge}{Q} \newcommand{\CollectionCohortCost}{C_{\text{cohort}}} \newcommand{\CollectionStateVisitationDistribution}{p^{\pi_{\text{col}}}} \newcommand{\CollectiveCallStartupLatency}{\alpha_{\text{eff}}} \newcommand{\CollectiveInputTensor}{\mathbf{X}} \newcommand{\CollectivePayloadSize}{M} \newcommand{\CollectiveTensorSize}{M_{\text{coll}}} \newcommand{\CollisionHullCount}{N_{\text{hulls}}} \newcommand{\CollocationDefect}{\Delta} \newcommand{\ColumnAccessLatency}{t_{\text{CL}}} \newcommand{\ColumnModeComponentVector}{\mathbf{b}_s} \newcommand{\ColumnModeFactorMatrix}{\mathbf{B}} \newcommand{\ColumnModeFactorSlice}{\mathbf{b}} \newcommand{\ColumnParallelWeightMatrix}{\mathbf{A}} \newcommand{\CombinedBatch}{B_{\text{total}}} \newcommand{\CombinedPlanValidationAllowance}{t_{\text{validate}}} \newcommand{\CommandComponentCount}{N_c} \newcommand{\CommandRateCeiling}{r} \newcommand{\CommandTransportTime}{T_{\text{bus}}} \newcommand{\CommandedActuatorEffort}{u_{\text{cmd}}} \newcommand{\CommandedApproachAcceleration}{a_{\text{cmd}}} \newcommand{\CommandedJointConfiguration}{\mathbf{q}_{\text{cmd}}} \newcommand{\CommandedJointCount}{N_j} \newcommand{\CommandedJointTorque}{\tau} \newcommand{\CommandedJointTorqueSlew}{\dot{\tau}} \newcommand{\CommandedTrackedPosition}{r_{\text{cmd}}} \newcommand{\CommandedTractiveForce}{F_{\text{cmd}}} \newcommand{\CommitBatchRecordCount}{N_{\text{batch}}} \newcommand{\CommitmentInstant}{t_{\text{commit}}} \newcommand{\CommitmentPathPosition}{q_{c}} \newcommand{\CommonPositionShift}{\Delta} \newcommand{\CommunicationComputeRatio}{\rho} \newcommand{\CommunicationIntensity}{\text{CI}} \newcommand{\CommunicationSlowdownFactor}{r} \newcommand{\CommunicationTime}{T_{\text{comm}}} \newcommand{\CommunicationTimeFraction}{f} \newcommand{\CompactedContextLength}{S_{\text{comp}}} \newcommand{\CompactionBoundaryCount}{k} \newcommand{\CompactionBoundaryIndex}{i} \newcommand{\CompactionCycleTurnCount}{n_{\text{cycle}}} \newcommand{\CompactionCycleTurnIndex}{i} \newcommand{\CompactionLossProbability}{\rho} \newcommand{\CompactionPassCost}{C_{\text{comp}}} \newcommand{\CompactionPathCost}{C_{\text{compact}}} \newcommand{\CompactionPaybackCallCount}{N_{\min}} \newcommand{\CompactionPerCallSaving}{s} \newcommand{\CompactionTargetLength}{S_{\text{low}}} \newcommand{\CompactionTriggerLength}{S_{\text{high}}} \newcommand{\CompactionUpfrontCost}{U} \newcommand{\ComparedPeriodAccuracy}{a} \newcommand{\ComparisonArmTrialCount}{n_{\text{arm}}} \newcommand{\ComparisonContext}{c} \newcommand{\ComparisonSampleEmpiricalCdf}{G_{m}} \newcommand{\ComparisonSampleSize}{m} \newcommand{\ComparisonTrajectory}{z} \newcommand{\ComparisonTrajectoryDerivative}{\dot{z}} \newcommand{\CompensatedEnvironmentState}{\sigma_0'} \newcommand{\CompensationPostcondition}{\phi} \newcommand{\CompensationPostconditionSet}{\Phi} \newcommand{\CompetingKeyCount}{n} \newcommand{\CompetingKeyLogit}{z} \newcommand{\CompilationBreakevenCount}{N_{\text{breakeven}}} \newcommand{\CompilationTime}{T_{\text{compile}}} \newcommand{\CompiledExecutionTime}{T_{\text{compiled}}} \newcommand{\CompilerBackendCount}{N_{\text{backend}}} \newcommand{\CompilerFrontendCount}{M} \newcommand{\ComplementarityNormalForce}{\lambda_n} \newcommand{\CompletedRequestCount}{N} \newcommand{\CompletedRoundIndex}{r} \newcommand{\CompletionCriteria}{\mathcal{K}_{\text{comp}}} \newcommand{\CompletionDeadline}{T_{\text{deadline}}} \newcommand{\CompletionOffset}{c} \newcommand{\CompliantElementPreload}{F_{\text{preload}}} \newcommand{\CompliantElementStiffness}{k_{\text{spring}}} \newcommand{\ComponentAvailability}{A_{\text{component}}} \newcommand{\ComponentFailureRate}{\lambda} \newcommand{\ComponentHazardRate}{h} \newcommand{\ComponentMttf}{\text{MTTF}_{\text{component}}} \newcommand{\ComponentReliability}{R_{\text{single}}} \newcommand{\ComposedChainTransform}{\mathbf{T}_{AC}} \newcommand{\ComposedFunctionInput}{x} \newcommand{\ComposedFunctionOutput}{y} \newcommand{\ComposedMechanismCount}{k} \newcommand{\CompoundScalingCoefficient}{\phi} \newcommand{\CompressedCommunicationTime}{T_{\text{compressed}}} \newcommand{\CompressedGradientUpdate}{\mathbf{v}} \newcommand{\CompressedGradientUpdateElement}{v} \newcommand{\CompressedOnlyCorrectCount}{n_{\text{comp}}} \newcommand{\CompressionRatio}{r_{\text{comp}}} \newcommand{\ComputationalDimensionCount}{N_{\text{comp}}} \newcommand{\ComputationalGraph}{G} \newcommand{\ComputeBudgetConstraint}{g} \newcommand{\ComputeChipPower}{P_{\text{chip}}} \newcommand{\ComputeConstrainedLagrangian}{\mathcal{L}_{\text{Lagrange}}} \newcommand{\ComputeConstraintMultiplier}{\lambda} \newcommand{\ComputeDemandVolume}{Q} \newcommand{\ComputeLimitedSampleRate}{R_{\text{compute}}} \newcommand{\ComputeOptimalTokenCount}{D_{\text{opt}}} \newcommand{\ComputeUnitCost}{P} \newcommand{\ConcordantTaskCount}{n} \newcommand{\ConcurrentTrajectories}{N_{\text{traj}}} \newcommand{\ConditionalDamageProbability}{p} \newcommand{\ConditionalDistribution}{p(y \mid x)} \newcommand{\ConditionalFlowMap}{\psi} \newcommand{\ConditionalVelocityField}{v} \newcommand{\ConditioningTokenPrefix}{x} \newcommand{\ConductorCurrent}{I} \newcommand{\ConeLimitStepSize}{\tau} \newcommand{\ConfidenceCalibrationDataset}{\mathcal{D}_{\text{cal}}} \newcommand{\ConfidenceCriticalQuantile}{z_{\alpha/2}} \newcommand{\ConfidenceLevel}{C} \newcommand{\ConfidentialityLabel}{\kappa} \newcommand{\ConfigurationSpace}{\mathcal{C}} \newcommand{\ConfirmationHitCount}{M} \newcommand{\ConfirmationWindowCount}{N_{\text{conf}}} \newcommand{\ConfluentVandermondeMatrix}{\mathbf{M}} \newcommand{\ConformalMiscoverageRate}{\epsilon} \newcommand{\ConformalPredictionSet}{\mathcal{C}} \newcommand{\ConformalQuantileRank}{k_{\epsilon}} \newcommand{\ConformalScoreQuantile}{\widehat{q}_{1-\epsilon}} \newcommand{\ConservativePenaltyWeight}{\alpha_{\text{CQL}}} \newcommand{\ConservativeSamplingDistribution}{\mu} \newcommand{\ConsoleCommunicationTime}{T_{\text{comm}}} \newcommand{\ConsolidationOverheadTime}{T_{\text{overhead}}} \newcommand{\ConsolidationStride}{c} \newcommand{\ConstantDivisorGrpoObjective}{\widehat{\mathcal{J}}_{\text{const}}} \newcommand{\ConstantHazardRate}{\lambda} \newcommand{\ConstrainedCallLatency}{T_{\text{constrained}}} \newcommand{\ConstrainedDecodingAutomaton}{\mathcal{D}} \newcommand{\ConstrainedParameterVector}{\mathbf{w}} \newcommand{\ConstrainedTestEnvelope}{\mathcal{S}} \newcommand{\ConstraintLagrangeMultiplier}{\lambda} \newcommand{\ConstraintRetentionFraction}{\eta_{\mathcal{C}}} \newcommand{\ContactApproachSpeed}{v_{\text{approach}}} \newcommand{\ContactCount}{N_c} \newcommand{\ContactDeformationDuration}{\Delta t_{\text{def}}} \newcommand{\ContactDirectionSpeed}{v_c} \newcommand{\ContactDirectionVelocity}{\dot{x}} \newcommand{\ContactDriftAcceleration}{a_{\text{drift}}} \newcommand{\ContactForce}{F_{\text{contact}}} \newcommand{\ContactForceBarrierFunction}{h_{\text{force}}} \newcommand{\ContactForceCap}{F_{\text{cap}}} \newcommand{\ContactForceCeiling}{F_{\max}} \newcommand{\ContactForceLimit}{F_{\text{limit}}} \newcommand{\ContactForceMagnitude}{F} \newcommand{\ContactForceRegularizationWeight}{w_f} \newcommand{\ContactForceRiseTime}{t_{\text{rise}}} \newcommand{\ContactGapAcceleration}{\ddot{\phi}} \newcommand{\ContactGapFunction}{\phi} \newcommand{\ContactGapVelocity}{\dot{\phi}} \newcommand{\ContactImpulse}{I} \newcommand{\ContactJacobianBaseBlock}{\mathbf{J}_{k,b}} \newcommand{\ContactJacobianJointBlock}{\mathbf{J}_{k,j}} \newcommand{\ContactLoopResponseTime}{T_c} \newcommand{\ContactNaturalTimescale}{T_{\text{contact}}} \newcommand{\ContactNormal}{\hat{\mathbf{n}}} \newcommand{\ContactNormalDeflection}{x} \newcommand{\ContactNormalJacobian}{\mathbf{J}_n} \newcommand{\ContactNormalJacobianDerivative}{\dot{\mathbf{J}}_n} \newcommand{\ContactNormalPosition}{x} \newcommand{\ContactNormalVelocity}{v_n} \newcommand{\ContactPatchRegion}{\mathcal{A}} \newcommand{\ContactPointForce}{\mathbf{f}} \newcommand{\ContactPointIndex}{i} \newcommand{\ContactPointJacobian}{\mathbf{J}_{\text{c}}} \newcommand{\ContactPointJacobianDerivative}{\dot{\mathbf{J}}_{\text{c}}} \newcommand{\ContactPointOffset}{\mathbf{r}} \newcommand{\ContactPointPosition}{x} \newcommand{\ContactPointTorque}{\boldsymbol{\tau}} \newcommand{\ContactReactionForce}{F} \newcommand{\ContactResponseLatency}{t_{\text{resp}}} \newcommand{\ContactStiffness}{k_{\text{contact}}} \newcommand{\ContactTorqueCeiling}{\tau_{\max}} \newcommand{\ContactTripwireForce}{F_{\text{trip}}} \newcommand{\ContactWrench}{\mathbf{w}} \newcommand{\ContactWrenchCeiling}{\mathbf{w}_{\max}} \newcommand{\ContactWrenchEnvelope}{\mathbf{w}_{\text{contact}}} \newcommand{\ContactWrenchTransform}{\mathbf{X}_k^*} \newcommand{\ContactYieldDeadline}{t_{\text{yield}}} \newcommand{\ContainerInnerRadius}{R} \newcommand{\ContainmentForceCeiling}{F_{\max}} \newcommand{\ContendingApplicationCount}{N} \newcommand{\ContentionCoefficient}{\sigma_{\text{cont}}} \newcommand{\ContextChunkTokenCount}{n} \newcommand{\ContextHiddenRepresentation}{\mathbf{h}_{\text{context}}} \newcommand{\ContextParallelDegree}{c} \newcommand{\ContextParallelRankIndex}{i} \newcommand{\ContextSaveTime}{t_{\text{context\_save}}} \newcommand{\ContextWindow}{S_{\max}} \newcommand{\ContinuationCount}{K} \newcommand{\ContinuationIndex}{i} \newcommand{\ContinuationReturnStandardDeviation}{\sigma} \newcommand{\ContinuityCorrectedCrossProduct}{A} \newcommand{\ContinuousActionComponent}{a} \newcommand{\ContinuousActionSpace}{\mathcal{A}} \newcommand{\ContinuousActionVector}{\mathbf{a}} \newcommand{\ContinuousCurrent}{I_{\text{cont}}} \newcommand{\ContinuousFactorialFunction}{\Gamma} \newcommand{\ContinuousMeasurementNoiseIntensity}{\mathbf{R}_{\text{cont}}} \newcommand{\ContinuousMotionModel}{\mathbf{f}} \newcommand{\ContinuousOutcome}{\mathbf{x}} \newcommand{\ContinuousRandomVariable}{\mathbf{X}} \newcommand{\ContinuousStateTransitionMatrix}{\boldsymbol{\Phi}} \newcommand{\ContinuousTorque}{\tau_{\text{cont}}} \newcommand{\ContractedBarrierFunction}{h_{\text{contracted}}} \newcommand{\ControlAffineDriftField}{\mathbf{f}} \newcommand{\ControlAffineInputField}{\mathbf{g}} \newcommand{\ControlCommand}{\mathbf{u}} \newcommand{\ControlCommandDerivative}{\dot{\mathbf{u}}} \newcommand{\ControlCommandSpace}{\mathcal{U}} \newcommand{\ControlConversionRate}{\hat{p}_A} \newcommand{\ControlCycleIndex}{i} \newcommand{\ControlInput}{\mathbf{u}} \newcommand{\ControlInputDimension}{m} \newcommand{\ControlInputLowerLimit}{\mathbf{u}_{\min}} \newcommand{\ControlInputSet}{\mathcal{U}} \newcommand{\ControlInputUpperLimit}{\mathbf{u}_{\max}} \newcommand{\ControlInputWindow}{\mathbf{u}_{[t, t+\Delta t]}} \newcommand{\ControlSampleIndex}{k} \newcommand{\ControlSampleSize}{m_A} \newcommand{\ControlSetpointJerk}{\mathbf{j}} \newcommand{\ControlSetpointPeriod}{\Delta t_{\text{ctrl}}} \newcommand{\ControlStepIndex}{t} \newcommand{\ControlTaskIndex}{i} \newcommand{\ControllabilityMatrix}{\mathbf{C}_{\text{ctrb}}} \newcommand{\ControlledStopCommand}{\mathbf{u}_{\text{stop}}} \newcommand{\ControllerReactionDelay}{T_{\text{react}}} \newcommand{\ConversationTurnIndex}{i} \newcommand{\ConverterLockoutVoltage}{V_{\text{uvlo}}} \newcommand{\ConveyorSpeed}{v_{\text{conv}}} \newcommand{\ConveyorSpeedBound}{v_{\text{conv}}} \newcommand{\ConvolutionActivation}{H} \newcommand{\ConvolutionTimeInstant}{t'} \newcommand{\CookedTokenKeyVector}{\mathbf{k}_{\text{cooked}}} \newcommand{\CookedTokenQueryVector}{\mathbf{q}_{\text{cooked}}} \newcommand{\CoolantHeatLoad}{P_{\text{thermal}}} \newcommand{\CoolantMassFlowRate}{\dot{m}} \newcommand{\CoolantTemperature}{T} \newcommand{\CoolingEnergy}{E_{\text{cooling}}} \newcommand{\CoordinateFrameEmbedding}{\mathbf{e}_{\text{frame}}} \newcommand{\CoordinationLatency}{L_{\text{lat,coordination}}} \newcommand{\CoordinationOverhead}{h} \newcommand{\CopperIronThermalResistance}{R_{\text{th,cu-iron}}} \newcommand{\CopperReferenceTemperature}{T_0} \newcommand{\CopperTemperatureCoefficient}{\alpha_{\text{Cu}}} \newcommand{\CopperThermalCapacitance}{C_{\text{cu}}} \newcommand{\CopperThermalTimeConstant}{\tau_{\text{th,cu}}} \newcommand{\CoreAmbientThermalResistance}{R_{\text{th,ca}}} \newcommand{\CoreRailVoltageDroop}{\Delta V_{\text{droop}}} \newcommand{\CoreThermalCapacitance}{C_{\text{core}}} \newcommand{\CoresetBudget}{K} \newcommand{\CoriolisCentrifugalMatrix}{\mathbf{C}} \newcommand{\CorrectCandidateTrialPassProbability}{p_{g}} \newcommand{\CorrectClassIndex}{c} \newcommand{\CorrectClassLogit}{z_{c}} \newcommand{\CorrectClassProbability}{\hat{y}_{c}} \newcommand{\CorrectnessReward}{R_{\text{corr}}} \newcommand{\CorrelationCoefficient}{\rho} \newcommand{\CorruptedAttentionScoreMatrix}{\mathbf{S}_{\text{corrupt}}} \newcommand{\CorruptedModelWeight}{w'} \newcommand{\CostAnomalyScore}{Z} \newcommand{\CostBudgetUsedFraction}{\rho_C} \newcommand{\CostCeiling}{C_{\max}} \newcommand{\CostPerAcceptedTask}{C_{\text{eff}}} \newcommand{\CostPerEmittedArtifact}{C_{\text{emit}}} \newcommand{\CostToGo}{C} \newcommand{\CoulombFrictionCoefficient}{\mu} \newcommand{\CoulombFrictionForce}{F_{\text{friction}}} \newcommand{\CountedFailureIndicator}{e} \newcommand{\CovariateDriftBound}{\mathcal{O}(S^2 \epsilon)} \newcommand{\CoverageFactor}{k} \newcommand{\CpuEnergy}{E_{\text{CPU}}} \newcommand{\CredibleBrakingDeceleration}{a_{\text{brake}}} \newcommand{\CreditWindowCapacity}{N_{\text{win}}} \newcommand{\CriticActionReturnEstimate}{Q_{\phi}} \newcommand{\CriticApproximationError}{\epsilon} \newcommand{\CriticModel}{M_{\text{value}}} \newcommand{\CriticParameters}{\phi} \newcommand{\CriticReturnEstimate}{V_{\phi}} \newcommand{\CriticalBatchSize}{B^{*}} \newcommand{\CriticalConstraint}{c} \newcommand{\CriticalPathDuration}{T_{\text{crit}}} \newcommand{\CriticalSectionIndex}{s} \newcommand{\CriticalSectionWcet}{C^{\text{cs}}} \newcommand{\CriticalTrackingErrorBound}{\epsilon_{\text{crit}}} \newcommand{\CriticalTransitDistance}{d_{\text{crit}}} \newcommand{\CrossEntropyLevelThreshold}{\gamma} \newcommand{\CrossEntropyLoss}{\mathcal{L}_{\text{CE}}} \newcommand{\CrossoverFrequency}{\omega_c} \newcommand{\CruiseSpeed}{v_{c}} \newcommand{\CumulativeArrivals}{A} \newcommand{\CumulativeCompletions}{C} \newcommand{\CumulativeIncidentCount}{N} \newcommand{\CumulativeLogLikelihoodRatio}{\Lambda} \newcommand{\CumulativeScheduleStepIndex}{s} \newcommand{\CumulativeTransmittance}{T} \newcommand{\CumulativeWorkCost}{C} \newcommand{\CurrentBinProportion}{A} \newcommand{\CurrentDistribution}{P_t} \newcommand{\CurrentFeatureMean}{\mu_{\text{curr}}} \newcommand{\CurrentFeatureStandardDeviation}{\sigma_{\text{curr}}} \newcommand{\CurrentLayerWidth}{n_{\ell}} \newcommand{\CurrentModelParameters}{\theta_{\text{old}}} \newcommand{\CurrentMonotonicTime}{t_{\text{now,mono}}} \newcommand{\CurrentNodeIndex}{j} \newcommand{\CurrentPeriodCost}{C_{\text{current}}} \newcommand{\CurrentStateDigest}{h_{\text{state},t}} \newcommand{\CurrentStateEstimate}{\hat{\mathbf{x}}_{t_{\text{current}}}} \newcommand{\CurrentTime}{t_{\text{now}}} \newcommand{\CurrentWallClockTime}{t_{\text{current}}} \newcommand{\CutCrossingDataVolume}{V_{\text{cut}}} \newcommand{\CvaeEncoderParameters}{\phi} \newcommand{\CvaeRecognitionEncoder}{q_\phi} \newcommand{\CycleAveragePowerCeiling}{\bar{P}_{\max}} \newcommand{\CycleGuardTime}{t_{\text{guard}}} \newcommand{\CylinderForce}{F_{\text{cyl}}} \newcommand{\DailyAccountQueryCount}{q_{\text{daily}}} \newcommand{\DailyQueryVolume}{Q_{\text{day}}} \newcommand{\DamageEventCount}{N_{\text{damage}}} \newcommand{\DamageProbabilityTolerance}{\epsilon} \newcommand{\DamageProbabilityUpperBound}{p_U} \newcommand{\DamagingOutcomeIndicator}{Y} \newcommand{\DampedLeastSquaresPseudoinverse}{\mathbf{J}_{\lambda}^\dagger} \newcommand{\DampedStepConfiguration}{\mathbf{q}_\lambda} \newcommand{\DampingRatio}{\zeta} \newcommand{\DataAcquisitionCost}{C_{\text{acquire}}} \newcommand{\DataDebtGrowthRate}{r} \newcommand{\DataEgressCost}{C_{\text{egress}}} \newcommand{\DataFieldBitCount}{B_{\text{data},i}} \newcommand{\DataInformationContent}{\mathcal{I}} \newcommand{\DataLabelingCost}{C_{\text{label}}} \newcommand{\DataLoaderWorkerCount}{W} \newcommand{\DataMovementEnergyFraction}{q} \newcommand{\DataParallelDegree}{N_{\text{DP}}} \newcommand{\DataPhaseBitRate}{R_{\text{data}}} \newcommand{\DataPipelineProcessingCost}{C_{\text{process}}} \newcommand{\DataProcessingCost}{C_{\text{process}}} \newcommand{\DataScaleCoefficient}{B} \newcommand{\DataScalingExponent}{\beta} \newcommand{\DataScalingLossFactor}{D^{-\beta}} \newcommand{\DataStallFraction}{f_{\text{stall}}} \newcommand{\DataStorageCost}{C_{\text{store}}} \newcommand{\DataSupplyRate}{R_{\text{data}}} \newcommand{\DataTaxonomyAxis}{\mathsf{Data}} \newcommand{\DataVolume}{D_{\text{vol}}} \newcommand{\DatasetQuery}{f} \newcommand{\DatasetQueryResult}{v} \newcommand{\DatasetShardCount}{K_{\text{shards}}} \newcommand{\DatasetSize}{D} \newcommand{\DatasetTransferTime}{T} \newcommand{\DcBusBulkCapacitance}{C_{\text{bus}}} \newcommand{\DcBusOvervoltageThreshold}{V_{\text{max\_safe}}} \newcommand{\DcBusVoltage}{V_{\text{bus}}} \newcommand{\DcRailVoltage}{V_{\text{rail}}} \newcommand{\DeadTimeCycleCount}{N_{\text{dtg}}} \newcommand{\DeadTimeDqVoltageError}{\Delta V_{d,q}} \newcommand{\DeadTimeSafetyMargin}{t_{\text{margin}}} \newcommand{\DeadTimeTickPeriod}{T_{\text{dtg}}} \newcommand{\DeadTimeVoltageError}{\Delta V_{\text{phase}}} \newcommand{\DeadlineInstant}{t_{\text{deadline}}} \newcommand{\DebiasingTotalLoss}{\mathcal{L}_{\text{total}}} \newcommand{\DebounceFrameCount}{N} \newcommand{\DecisionProcessState}{s} \newcommand{\DecisionScore}{s_{\text{dec}}} \newcommand{\DecisionStepIndex}{k} \newcommand{\DecodeArithmeticIntensity}{I_{\text{decode}}} \newcommand{\DecodeBatchSize}{B_{\text{dec}}} \newcommand{\DecodeInterval}{T_{\text{decode}}} \newcommand{\DecodeRequestSet}{\mathcal{D}} \newcommand{\DecodeTokenTimeFloor}{T_{\text{token}}} \newcommand{\DecoderEvaluationCount}{N_{\text{eval}}} \newcommand{\DecoderPassTime}{t_{\text{pass}}} \newcommand{\DecodingConstraintState}{q} \newcommand{\DecomposedTensor}{\mathcal{Y}} \newcommand{\DecomposedTensorEntry}{y_{ijt}} \newcommand{\DecouplingCapacitance}{C} \newcommand{\DecouplingDriftVector}{\mathbf{b}} \newcommand{\DecouplingMatrix}{\mathbf{E}} \newcommand{\DecouplingMatrixElement}{E} \newcommand{\DedicatedHourlyFixedCost}{C_{\text{fixed}}} \newcommand{\DedicatedVariableTokenCost}{c_{\text{ded}}} \newcommand{\DefectiveActionProbability}{p_{\text{bad}}} \newcommand{\DefinitionSerializedSize}{S} \newcommand{\DeflectionComplianceAllowance}{\delta_{\text{deflect}}} \newcommand{\DegradedFrictionCoefficient}{\mu_{\text{fault}}} \newcommand{\DegradedStepTime}{T_{\text{slow}}} \newcommand{\DelassusOperator}{\mathbf{A}_{\text{Delassus}}} \newcommand{\DelayPhaseLag}{\Delta \phi} \newcommand{\DelayTravelDistance}{d_{\text{delay}}} \newcommand{\DelayWindowIntegrationTime}{\sigma} \newcommand{\DelayedObservation}{\mathbf{y}_{t_0}} \newcommand{\DelegatedAllocationAmount}{b} \newcommand{\DelegationTokenMultiple}{r} \newcommand{\DeliveredActuatorTorque}{\tau_{\text{act}}} \newcommand{\DeliveredCapacityFraction}{u} \newcommand{\DemandCap}{x_{\max}} \newcommand{\DemandPriceElasticity}{\epsilon_{\text{elast}}} \newcommand{\DemandThreshold}{x} \newcommand{\DemonstratedTargetA}{\mathbf{y}_A} \newcommand{\DemonstratedTargetB}{\mathbf{y}_B} \newcommand{\DemonstrationActionDistribution}{p} \newcommand{\DemonstrationActionLabel}{\mathbf{a}} \newcommand{\DemonstrationArchiveActionDistribution}{p_{\text{demo}}} \newcommand{\DemonstrationChunkDistribution}{p_{\text{data}}} \newcommand{\DemonstrationDataset}{\mathcal{D}_{\text{demo}}} \newcommand{\DemonstrationRetentionRate}{R} \newcommand{\DemonstratorAction}{\mathbf{a}^{*}} \newcommand{\DemonstratorActionComponent}{a} \newcommand{\DenseEvaluationEnergy}{E_{\text{eval}}} \newcommand{\DenseEvaluationRate}{f_{\text{eval}}} \newcommand{\DenseVoxelGridMemory}{M_{\text{dense}}} \newcommand{\DepartmentQuotaLimit}{Q_{\text{department}}} \newcommand{\DependencyGraphEdgeSet}{E} \newcommand{\DependencyGraphVertex}{v} \newcommand{\DependencyGraphVertexSet}{V} \newcommand{\DepletedBusVoltage}{V_{\text{low}}} \newcommand{\DeploymentAge}{t} \newcommand{\DeploymentDistribution}{p_{\text{deploy}}} \newcommand{\DeploymentDuration}{T_{\text{deployment}}} \newcommand{\DepthBinCount}{D} \newcommand{\DepthBinDistribution}{\boldsymbol{\alpha}_{u, v}} \newcommand{\DepthBinIndex}{k} \newcommand{\DepthBinLogits}{\mathbf{d}_{u, v}} \newcommand{\DepthBinProbability}{\alpha_{u, v}} \newcommand{\DepthCalibrationScale}{s} \newcommand{\DepthCalibrationShift}{t} \newcommand{\DepthCriticalPathLatency}{T^{\text{depth}}} \newcommand{\DepthFrameRate}{f_{\text{cam}}} \newcommand{\DepthHypothesis}{d} \newcommand{\DepthModeComponentVector}{\mathbf{c}_s} \newcommand{\DepthModeFactorMatrix}{\mathbf{C}} \newcommand{\DepthModeFactorSlice}{\mathbf{c}} \newcommand{\DepthRayCount}{N_{\text{rays}}} \newcommand{\DepthScalingRatio}{\alpha} \newcommand{\DepthStandardDeviation}{\sigma_z} \newcommand{\DerivativeControlEffort}{\mathbf{u}_{d}} \newcommand{\DerivativeFilterTimeConstant}{T_{f}} \newcommand{\DerivativeGainMatrix}{\mathbf{K}_{d}} \newcommand{\DerivativeOperator}{d} \newcommand{\DerivativeSplineControlPoint}{\mathbf{v}} \newcommand{\DerivedMemoryEntry}{c} \newcommand{\DerivedRecord}{y} \newcommand{\DesignLatencyQuantile}{Q_{1-\epsilon}} \newcommand{\DesiredContactPosition}{x_{\text{des}}} \newcommand{\DesiredContactVelocity}{\dot{x}_{\text{des}}} \newcommand{\DesiredTaskAcceleration}{\ddot{\mathbf{x}}_d} \newcommand{\DesiredTaskPosition}{\mathbf{x}_d} \newcommand{\DesiredTaskSpaceAcceleration}{\ddot{\mathbf{x}}^{\text{des}}} \newcommand{\DesiredTaskVelocity}{\dot{\mathbf{x}}_d} \newcommand{\DestinationRankIndex}{j} \newcommand{\DetectionCount}{n_{\text{det}}} \newcommand{\DetectionInterval}{t_{\text{detect}}} \newcommand{\DetectionMeasurementNoiseCovariance}{\boldsymbol{\Sigma}_{\text{meas},j}} \newcommand{\DetectionRangeShortfall}{\Delta d_{\text{detect}}} \newcommand{\DetectionTimestamp}{t_{\text{det}}} \newcommand{\DetectorMissProbability}{p_{\text{miss}}} \newcommand{\DeterministicPolicy}{\mu_{\theta}} \newcommand{\DevelopmentIterationCount}{N_{\text{dev}}} \newcommand{\DeviationDisadvantage}{u} \newcommand{\DeviceCount}{N} \newcommand{\DeviceEnergy}{E_{\text{device}}} \newcommand{\DeviceHardwareTime}{T_{\text{hw}}} \newcommand{\DeviceMemoryCapacity}{M_{\text{device}}} \newcommand{\DevicePower}{P_{\text{device}}} \newcommand{\DeviceRequestCapacity}{Q_{\text{req,max}}} \newcommand{\DeviceSilentCorruptionProbability}{p} \newcommand{\DiagnosticCoverage}{C_{\text{diag}}} \newcommand{\DictionaryCoefficientMatrix}{\mathbf{C}} \newcommand{\DifferentiabilityClass}{C} \newcommand{\DifferentialEntropy}{h} \newcommand{\DiffusionCumulativeSchedule}{\bar{\alpha}} \newcommand{\DiffusionGaussianNoise}{\boldsymbol{\epsilon}} \newcommand{\DiffusionMatchingLoss}{\mathcal{L}_{\text{diff}}} \newcommand{\DiffusionNoiseVariance}{\beta} \newcommand{\DiffusionStepCount}{N} \newcommand{\DiffusionStepIndex}{k} \newcommand{\DiffusionStepRetention}{\alpha} \newcommand{\DiffusionTimeCoordinate}{t_{\text{diff}}} \newcommand{\DirectAxisCurrent}{i_d} \newcommand{\DirectAxisInductance}{L_d} \newcommand{\DirectAxisVoltage}{v_d} \newcommand{\DirectionalCosineMatrix}{\mathbf{R}} \newcommand{\DirectionalDerivativeStep}{\epsilon} \newcommand{\DisadvantagedGroupClassificationThreshold}{\gamma_{\text{cls},g=\text{B}}} \newcommand{\DiscordantPairCount}{n_{\text{disc}}} \newcommand{\DiscordantPairFraction}{\psi} \newcommand{\DiscountFactor}{\gamma} \newcommand{\DiscountedReturn}{G} \newcommand{\DiscountedReturnStepOffset}{j} \newcommand{\DiscountedStateVisitationDistribution}{d} \newcommand{\DiscreteLqrFeedbackGain}{\mathbf{K}_{\text{lqr},d}} \newcommand{\DiscreteLqrQuadraticObjective}{J_d} \newcommand{\DiscreteOutcome}{x} \newcommand{\DiscretePlantDynamics}{f} \newcommand{\DiscreteRandomVariable}{X} \newcommand{\DiscreteSampleIndex}{k} \newcommand{\DiscreteStateSpaceInputMatrix}{\mathbf{B}_{d}} \newcommand{\DiscreteStateSpaceSystemMatrix}{\mathbf{A}_{d}} \newcommand{\DiscretizationBinCount}{n_{\text{bin}}} \newcommand{\DisengagedTakeoverResponseTime}{T_{\Sigma,2}} \newcommand{\DiskBandwidth}{\text{BW}_{\text{disk}}} \newcommand{\DisparityStandardDeviation}{\sigma_d} \newcommand{\DispatchAdmissionCeiling}{\Delta_{\text{da,max}}} \newcommand{\DispatchAdmissionInterval}{\Delta_{\text{da}}} \newcommand{\DispatchObservationAge}{t_{\text{age}}} \newcommand{\DispatchedOperationCount}{N_{\text{ops}}} \newcommand{\DisplayPipelineLatency}{t_{\text{disp}}} \newcommand{\DispreferredReferenceRelativeScore}{\Delta_l} \newcommand{\DispreferredTrajectory}{\tau_l} \newcommand{\DistanceEstimateStandardDeviation}{\sigma} \newcommand{\DistanceMeasurement}{z} \newcommand{\DistanceNormOrder}{p} \newcommand{\DistanceQueryPoint}{\mathbf{y}} \newcommand{\DistillationClassProbability}{p^{(T_{\text{distill}})}} \newcommand{\DistillationLoss}{\mathcal{L}_{\text{distill}}} \newcommand{\DistillationLossWeight}{\gamma_{\text{KD}}} \newcommand{\DistillationTemperature}{T_{\text{distill}}} \newcommand{\DistortedImageAbscissa}{x_d} \newcommand{\DistortedImageOrdinate}{y_d} \newcommand{\DistributedStepTime}{T_{\text{step}}} \newcommand{\DisturbanceAccelerationBound}{a_{\text{dist}}} \newcommand{\DisturbanceBasisCoefficient}{\psi} \newcommand{\DisturbanceBasisCount}{K} \newcommand{\DisturbanceBasisFunction}{B} \newcommand{\DisturbanceBudget}{\Delta_{w}} \newcommand{\DisturbanceDimension}{p} \newcommand{\DisturbanceForceBound}{d_{\max}} \newcommand{\DisturbanceParameterSet}{\Psi} \newcommand{\DisturbanceParameterVector}{\boldsymbol{\psi}} \newcommand{\DisturbanceTrajectory}{w_{\text{dist}}} \newcommand{\DivergenceInstant}{t_{\text{div}}} \newcommand{\DivergenceMeasure}{\mathcal{D}} \newcommand{\DivergenceTolerance}{\delta_{\text{tol}}} \newcommand{\DmaBurstPeriod}{T_{\text{dma}}} \newcommand{\DmaBurstStallTime}{C_{\text{dma}}} \newcommand{\DmaQueueTime}{t_{\text{DMA}}} \newcommand{\DocumentPayloadFraction}{q} \newcommand{\DomainRandomizationDistribution}{\mathcal{D}_{\text{DR}}} \newcommand{\DomainRandomizationObjective}{J_{\text{DR}}} \newcommand{\DominantComponentEnergy}{E_{\text{dominant}}} \newcommand{\DominantShare}{d} \newcommand{\DoorOpenReward}{r_{\text{open}}} \newcommand{\DoubleIntegratorPosition}{p} \newcommand{\DoubleIntegratorPositionDerivative}{\dot{p}} \newcommand{\DoubleIntegratorVelocity}{v} \newcommand{\DoubleIntegratorVelocityDerivative}{\dot{v}} \newcommand{\DoubleTreeAllReduceTime}{T_{\text{double-tree}}} \newcommand{\DownstreamStageLatency}{Y} \newcommand{\DpoLoss}{\mathcal{L}_{\text{DPO}}} \newcommand{\DraftAcceptanceRate}{\alpha} \newcommand{\DraftCandidateToken}{\tilde{x}} \newcommand{\DraftModelDistribution}{q_{\phi}} \newcommand{\DraftPositionAcceptanceProbability}{\alpha_{\text{spec}, j}} \newcommand{\DraftPositionIndex}{i} \newcommand{\DraftSamplingDistribution}{q} \newcommand{\DraftTokenAcceptanceProbability}{\alpha_{\text{acc}}} \newcommand{\DraftTokenCostRatio}{\beta} \newcommand{\DraftTokenCount}{\gamma} \newcommand{\DraftedToken}{T} \newcommand{\DragonflyGlobalChannelCount}{h} \newcommand{\DragonflyGroupRouterCount}{a} \newcommand{\DragonflyTerminalPortCount}{p} \newcommand{\DrainSourceVoltage}{V_{\text{ds}}} \newcommand{\DriftElapsedTime}{t_{\text{drift}}} \newcommand{\DriftImpactTime}{t_{\text{impact}}} \newcommand{\DriftLieDerivativeOperator}{L_{\mathbf{f}}} \newcommand{\DriftSpeedBound}{v_{\text{drift}}} \newcommand{\DriftTestSampleSize}{n} \newcommand{\DriftVelocityBound}{v_{\text{drift}}} \newcommand{\DriveBrakingForceCeiling}{F} \newcommand{\DriveBrakingTorqueCeiling}{\tau} \newcommand{\DrivenWheelLoadFraction}{\phi_{\text{drive}}} \newcommand{\DriverInterruptLatency}{t_{\text{driver\_irq}}} \newcommand{\DrivetrainAntiresonanceFrequency}{f_{\text{anti}}} \newcommand{\DrivetrainResonanceFrequency}{f_{\text{res}}} \newcommand{\DroopedSupplyVoltage}{V_{\text{droop}}} \newcommand{\DropletDiameter}{d_{\text{droplet}}} \newcommand{\DropoutProbability}{p_{\text{drop}}} \newcommand{\DualNumberInfinitesimal}{\epsilon} \newcommand{\DuplicateEffectProbability}{p_{\text{dup}}} \newcommand{\DurableAcknowledgmentTime}{t_{\text{ack}}} \newcommand{\DurableStoreWriteBandwidth}{\text{BW}_{\text{store}}} \newcommand{\DutyCyclePeriod}{T_{\text{period}}} \newcommand{\DynamicPower}{P_{\text{dynamic}}} \newcommand{\DynamicReachableSet}{\mathcal{R}} \newcommand{\DynamicsRealityGap}{\Delta_{\text{dyn}}} \newcommand{\EagerExecutionTime}{T_{\text{eager}}} \newcommand{\EarlierBaseFlangeTransform}{\mathbf{T}_{\text{base}, k}^{\text{flange}}} \newcommand{\EarlierCameraTargetTransform}{\mathbf{T}_{\text{cam}, k}^{\text{target}}} \newcommand{\EarlierControlStepIndex}{t'} \newcommand{\EarlierWorkerCount}{k} \newcommand{\EarliestConflictTime}{t_{\text{conflict}}} \newcommand{\EarthReferenceFrame}{\mathcal{F}_{\text{earth}}} \newcommand{\EchoFactor}{e} \newcommand{\EchoRoundTripTime}{t_{\text{rt}}} \newcommand{\EditGrantRights}{\mathcal{R}_{\Gamma_{\text{edit}}}} \newcommand{\EditPhaseCapabilityGrant}{\Gamma_{\text{edit}}} \newcommand{\EffectiveAdmissionCeiling}{Q_{\text{effective}}} \newcommand{\EffectiveApiOutputTokenPrice}{c_{\text{API}}} \newcommand{\EffectiveBrakingDelay}{T_{\text{eff}}} \newcommand{\EffectiveBranchingFactor}{b_{\text{eff}}} \newcommand{\EffectiveConfidentialityLabel}{\kappa_{\text{eff}}} \newcommand{\EffectiveFleetThroughput}{R_{\text{eff}}} \newcommand{\EffectiveImpactMass}{m_{\text{eff}}} \newcommand{\EffectiveIntegrityProvenance}{\iota_{\text{eff}}} \newcommand{\EffectiveJointInertia}{J_{\text{eff}}} \newcommand{\EffectiveLossResistance}{R_{\text{eff}}} \newcommand{\EffectiveSampleSize}{N_{\text{eff}}} \newcommand{\EffectiveSeriesStiffness}{k_{\text{eff}}} \newcommand{\EffectiveServiceRate}{\mu_{\text{eff}}} \newcommand{\EffectiveSpotTrainingCost}{C_{\text{effective}}} \newcommand{\EffectiveStorageThroughput}{R_{\text{storage,eff}}} \newcommand{\EffectiveWasteFraction}{W_{\text{effective}}} \newcommand{\EfficiencyHw}{\eta_{\text{hw}}} \newcommand{\EgressArrivalRate}{\lambda_{\text{arr}}} \newcommand{\EgressBufferCapacity}{Q_{\text{max}}} \newcommand{\EgressPortUtilization}{\rho_{\text{egress}}} \newcommand{\EgressPrice}{R_{\text{egress/GB}}} \newcommand{\EgressQueueOccupancy}{Q} \newcommand{\EgressServiceRate}{\mu} \newcommand{\ElapsedPlanningPeriods}{n} \newcommand{\ElasticJointTorque}{\mathbf{z}} \newcommand{\ElasticMaximumWorkerCount}{N_{\text{max}}} \newcommand{\ElasticMinimumWorkerCount}{N_{\text{min}}} \newcommand{\ElasticModalFrequencyMatrix}{\boldsymbol{\Omega}} \newcommand{\ElasticPotentialEnergy}{E} \newcommand{\ElasticStrainEnergy}{U_{\text{elastic}}} \newcommand{\ElasticTorqueSecondDerivative}{\ddot{\mathbf{z}}} \newcommand{\ElbowSwivelAngle}{\psi} \newcommand{\ElectricalAngularSpeed}{\omega_e} \newcommand{\ElectricalResistance}{R} \newcommand{\ElectricalRotorAngle}{\theta_e} \newcommand{\ElectricalTimeConstant}{\tau_e} \newcommand{\ElectricityPrice}{R_{\$/\text{kWh}}} \newcommand{\ElementStorageSize}{s_{\text{elem}}} \newcommand{\ElementaryCharge}{q} \newcommand{\ElementaryOperationCount}{W} \newcommand{\ElevationAngle}{\phi} \newcommand{\EligibleCachedPrefixLength}{S_{\text{hit}}} \newcommand{\EligibleTargetPositionSet}{\mathcal{P}_{\text{elig}}} \newcommand{\EligibleVectorCount}{N} \newcommand{\EliteSampleFraction}{\beta} \newcommand{\EmbeddingDimension}{d} \newcommand{\EmbeddingShardCount}{N_{\text{shards}}} \newcommand{\EmergencyStopContact}{S} \newcommand{\EmergencyStopCount}{n_{\text{estop}}} \newcommand{\EmittedArtifactCount}{N_{\text{emit}}} \newcommand{\EmittedTokenCount}{S_{\text{out}}} \newcommand{\EmpiricalBellmanOperator}{\mathcal{B}} \newcommand{\EmpiricalExceedanceFraction}{\hat{\zeta}_{u}} \newcommand{\EmpiricalTimestepAverage}{\hat{\mathbb{E}}} \newcommand{\EmpiricalTransferDiscrepancy}{\hat{\epsilon}_{\text{gap}}} \newcommand{\EmptyByteString}{\epsilon} \newcommand{\EncodedLatentState}{\hat{\mathbf{z}}} \newcommand{\EncoderAngle}{\theta_{\text{enc}}} \newcommand{\EncoderBitCount}{n} \newcommand{\EncoderLatentRepresentation}{\mathbf{z}} \newcommand{\EncoderVelocityEstimate}{\dot{\theta}_{\text{enc}}} \newcommand{\EncoderVelocityNoise}{\sigma_{\dot{\theta}_{\text{enc}}}} \newcommand{\EndEffectorCameraTransform}{\mathbf{T}_{EC}} \newcommand{\EndEffectorFirstAxisPosition}{x} \newcommand{\EndEffectorPitchAngle}{\phi_{\text{pitch}}} \newcommand{\EndEffectorPose}{\mathbf{T}_{WE}} \newcommand{\EndEffectorRollAngle}{\phi_{\text{roll}}} \newcommand{\EndEffectorSecondAxisPosition}{y} \newcommand{\EndEffectorTaskAcceleration}{\ddot{\mathbf{x}}} \newcommand{\EndEffectorTaskPosition}{\mathbf{x}} \newcommand{\EndEffectorTaskVelocity}{\dot{\mathbf{x}}} \newcommand{\EndEffectorThirdAxisPosition}{z} \newcommand{\EndEffectorTwist}{\mathbf{V}_E} \newcommand{\EndEffectorVelocity}{\mathbf{v}_e} \newcommand{\EndEffectorYawAngle}{\phi_{\text{yaw}}} \newcommand{\EndToEndRequestLatency}{L_{\text{lat,total}}} \newcommand{\EnergyCrossoverIntensity}{I_{\text{crossover}}} \newcommand{\EnergyLimitedContactForce}{F_E} \newcommand{\EnergyPerByteMoved}{E_{\text{move}}} \newcommand{\EnergyPerOperation}{E_{\text{compute}}} \newcommand{\EnergyTankBarrierFunction}{h_{\text{energy}}} \newcommand{\EnergyTankLevel}{E_{\text{tank}}} \newcommand{\EnergyTankPower}{\dot{E}_{\text{tank}}} \newcommand{\EnergyTankReserve}{E_{\text{min}}} \newcommand{\EnforcedCommandLabel}{\mathbf{a}_{\text{enf}, t}} \newcommand{\EnforcedCommandTap}{a_{\text{enf}}} \newcommand{\EnforcerComputeTime}{T_{\text{comp}}} \newcommand{\EnforcerDeadline}{T_{\text{deadline,enf}}} \newcommand{\EngineerHourlyCost}{C_{\text{engineer}}} \newcommand{\EngineeringTeamSize}{n} \newcommand{\EngineeringTemperatureCeiling}{T_{\text{ceil}}} \newcommand{\EnsembleSpreadThreshold}{\sigma_{\text{thresh}}} \newcommand{\EnsemblingDecayRate}{m} \newcommand{\EnsemblingWindowLength}{K} \newcommand{\EntityCount}{N_{\text{entities}}} \newcommand{\EntityEmbedding}{\mathbf{e}} \newcommand{\EntityIndex}{j} \newcommand{\EntropyTemperature}{\alpha} \newcommand{\EnvelopeCallCount}{N} \newcommand{\EnvelopeSetupTime}{T_{\text{setup}}} \newcommand{\EnvironmentCycleTime}{T_{\text{cycle}}} \newcommand{\EnvironmentFixture}{f} \newcommand{\EnvironmentLatentDimension}{d_z} \newcommand{\EnvironmentLatentVector}{\mathbf{z}} \newcommand{\EnvironmentParameters}{e} \newcommand{\EnvironmentResetTime}{T_{r}} \newcommand{\EnvironmentResponseFunction}{g} \newcommand{\EnvironmentRolloutStepCount}{h} \newcommand{\EnvironmentTransitionDistribution}{p} \newcommand{\EpipolarLine}{\mathbf{l}} \newcommand{\EpochCount}{N_{\text{epochs}}} \newcommand{\EpochIndex}{n_{\text{epoch}}} \newcommand{\EquilibriumWindingTemperature}{T_\infty} \newcommand{\EquivalentSeriesStiffness}{k_{\text{eq}}} \newcommand{\ErasureDataFragmentCount}{d} \newcommand{\ErasureParityFragmentCount}{m} \newcommand{\ErroneousPredictionCost}{C_{\text{error}}} \newcommand{\ErrorBudgetConsumption}{B} \newcommand{\ErrorCovarianceDerivative}{\dot{\mathbf{P}}} \newcommand{\ErrorFeedbackResidual}{\mathbf{e}} \newcommand{\ErrorFeedbackResidualElement}{e} \newcommand{\ErrorGrowthRate}{r} \newcommand{\ErrorRecoveryCost}{C_{\text{recovery}}} \newcommand{\EscalationDecision}{d} \newcommand{\EscalationLossMatrix}{\mathbf{L}} \newcommand{\EscalationThresholdProbability}{p_{\text{threshold}}} \newcommand{\EssentialMatrix}{\mathbf{E}} \newcommand{\EstimateEpoch}{t_{\text{est}}} \newcommand{\EstimatedAcceptanceProbability}{\hat{p}} \newcommand{\EstimatedAccuracy}{\hat{p}} \newcommand{\EstimatedCandidateUtility}{\hat{U}} \newcommand{\EstimatedCleanActionChunk}{\hat{\mathbf{A}}} \newcommand{\EstimatedCoriolisMatrix}{\hat{\mathbf{C}}} \newcommand{\EstimatedDamageProbability}{\hat{p}} \newcommand{\EstimatedDivergenceInstant}{\hat{t}_{\text{div}}} \newcommand{\EstimatedForceSensorBias}{\hat{b}} \newcommand{\EstimatedGravitationalTorque}{\hat{\mathbf{g}}} \newcommand{\EstimatedGripContactForce}{\hat{x}} \newcommand{\EstimatedHistoryAdvantage}{\hat{A}} \newcommand{\EstimatedInertiaMatrix}{\hat{\mathbf{M}}} \newcommand{\EstimatedPairedAcceptanceDifference}{\hat{\Delta}} \newcommand{\EstimatedPlantState}{\hat{\mathbf{x}}} \newcommand{\EstimatedPosition}{\hat{\mathbf{p}}} \newcommand{\EstimatedRemainingReturn}{\hat{V}} \newcommand{\EstimatedUtilityStandardDeviation}{s} \newcommand{\EstimatedVelocity}{\hat{\mathbf{v}}} \newcommand{\EstimatedWindingTemperature}{\hat{T}_{\text{wind}}} \newcommand{\EstimationErrorCovariance}{\mathbf{P}} \newcommand{\EstimatorDrawCount}{N} \newcommand{\EstimatorDrawStandardDeviation}{\sigma} \newcommand{\EstimatorState}{\mathbf{x}} \newcommand{\EstimatorStateVector}{\mathbf{x}} \newcommand{\EstimatorStepIndex}{k} \newcommand{\EulerIntegralFirstShape}{a} \newcommand{\EulerIntegralSecondShape}{b} \newcommand{\EulerIntegralVariable}{t} \newcommand{\EvaluatedExceedance}{y} \newcommand{\EvaluationPredicate}{\phi} \newcommand{\EvaluationSampleCount}{N} \newcommand{\EvaluationTrialCount}{N} \newcommand{\EvaluationTrialIndex}{i} \newcommand{\EventContrastThreshold}{C_{\text{th}}} \newcommand{\EventDetectionPower}{P_{\text{detect}}} \newcommand{\EventIndicator}{\mathbf{1}} \newcommand{\EventPacket}{e} \newcommand{\EventPolarity}{p} \newcommand{\EventProcessingEnergy}{E_{\text{event}}} \newcommand{\EvidenceCaptureInstant}{t_{\text{capture}}} \newcommand{\EvidenceEpoch}{t_0} \newcommand{\EvidenceHorizon}{\tau_{\text{ev}}} \newcommand{\EvidenceLowerBound}{\mathcal{L}_{\text{ELBO}}} \newcommand{\EvidenceRecordEvent}{e_{\text{obs}}} \newcommand{\ExactFailureLowerLimit}{p_{L}} \newcommand{\ExactFailureUpperLimit}{p_{U}} \newcommand{\ExampleAveragedBatchLoss}{\mathcal{L}_{\text{example}}} \newcommand{\ExampleIndex}{i} \newcommand{\ExampleLabel}{y} \newcommand{\ExceedanceReturnLevel}{z_\epsilon} \newcommand{\ExceedanceSampleSet}{\mathcal{Y}_u} \newcommand{\ExceedanceThreshold}{u} \newcommand{\ExcessDistributionFunction}{F_{u}} \newcommand{\ExcessForcePenaltyWeight}{\lambda_f} \newcommand{\ExcessSupportUpperEndpoint}{y_{\max}} \newcommand{\ExecutedActionStepCount}{T_a} \newcommand{\ExecutedToolCall}{a} \newcommand{\ExecutedTrialCount}{N_{\text{trial}}} \newcommand{\ExecutionHorizon}{H_{\text{exec}}} \newcommand{\ExecutionNondeterminism}{\xi} \newcommand{\ExecutionSwitchTime}{T_{\text{switch}}} \newcommand{\ExogenousDataDistribution}{\mathcal{D}} \newcommand{\ExpectedCategoryFrequency}{n_i^{\text{exp}}} \newcommand{\ExpectedCheckingTime}{T_{\text{check}}} \newcommand{\ExpectedCostLimit}{\delta} \newcommand{\ExpectedDecisionRisk}{\mathcal{R}} \newcommand{\ExpectedHistoryActionReturn}{Q} \newcommand{\ExpectedIrreversibleLoss}{L_A} \newcommand{\ExpectedNormalMaximum}{m_{N}} \newcommand{\ExpectedQueryDistribution}{p_{\text{expected}}} \newcommand{\ExpectedRemainingReturn}{V} \newcommand{\ExpectedReturnObjective}{J} \newcommand{\ExpectedRunCompletionTime}{T} \newcommand{\ExpectedTaskCostSum}{J} \newcommand{\ExperienceReplayBuffer}{\mathcal{D}} \newcommand{\ExperimentCount}{N_{\text{exp}}} \newcommand{\ExperimentUserIndex}{i} \newcommand{\ExpertCapacityFactor}{C_{\text{cap}}} \newcommand{\ExpertCount}{N_{\text{experts}}} \newcommand{\ExpertDiscountedStateVisitationDistribution}{d^{\pi^*}} \newcommand{\ExpertIndex}{e} \newcommand{\ExpertSelectionProbability}{p_e} \newcommand{\ExpertStateVisitationDistribution}{p^{\pi^*}} \newcommand{\ExpertTokenCount}{B_e} \newcommand{\ExploitCandidateFraction}{p_{\text{exp}}} \newcommand{\ExploitTrajectory}{\tau_{\text{hack}}} \newcommand{\ExploratoryStateVisitationDistribution}{p^{\pi_{\text{expl}}}} \newcommand{\ExponentBitIndex}{k} \newcommand{\ExponentialSeriesArgument}{u} \newcommand{\ExponentialStabilityConstant}{k} \newcommand{\ExposedCommunicationTime}{T_{\text{comm,exposed}}} \newcommand{\ExposedUnitCount}{E_{\text{exposure}}} \newcommand{\ExposureDuration}{t_{\text{exp}}} \newcommand{\ExposureMidpointTime}{t_{\text{mid}}} \newcommand{\ExposureMotionDisplacement}{\Delta x_{\text{motion}}} \newcommand{\ExposureStartTime}{t_{\text{start}}} \newcommand{\ExposureTravelDistance}{\Delta x} \newcommand{\ExtendedClassKInfinityFamily}{\mathcal{K}_\infty} \newcommand{\ExtendedDepthLength}{K_{\text{ext}}} \newcommand{\ExternalContactTorque}{\boldsymbol{\tau}_{\text{ext}}} \newcommand{\ExternalDispatchAction}{a_{\text{ext}}} \newcommand{\ExternalDisturbanceForce}{d} \newcommand{\ExternalDisturbanceLoad}{\mathbf{d}_{\text{ext}}} \newcommand{\ExternalJointTorque}{\tau_{\text{ext}}} \newcommand{\ExternalObjectWrench}{\mathbf{w}_{\text{ext}}} \newcommand{\ExternalWait}{T_{\text{wait}}} \newcommand{\ExternalWrench}{\mathbf{F}_{\text{ext}}} \newcommand{\ExtractionAnomalyClassifier}{f_{\theta}} \newcommand{\ExtractionQueryCount}{n_{\text{queries}}} \newcommand{\ExtrinsicCalibrationCovariance}{\boldsymbol{\Sigma}_{\text{ext}}} \newcommand{\ExtrinsicCovarianceJacobian}{\mathbf{J}_{\text{ext}}} \newcommand{\ExtrinsicLateralError}{\Delta y} \newcommand{\ExtrinsicMisalignmentAngle}{\theta_{\text{ext}}} \newcommand{\EyeInHandCameraMotion}{\mathbf{B}} \newcommand{\EyeInHandFlangeMotion}{\mathbf{A}} \newcommand{\EyeInHandUnknownTransform}{\mathbf{X}} \newcommand{\EyeToHandCameraPose}{\mathbf{B}'} \newcommand{\EyeToHandFlangePose}{\mathbf{A}'} \newcommand{\EyeToHandTargetTransform}{\mathbf{Z}} \newcommand{\EyeToHandUnknownTransform}{\mathbf{X}'} \newcommand{\FacilityEnergy}{E_{\text{facility}}} \newcommand{\FacilityHeatRemovalCapacity}{\dot{Q}_{\text{remove,max}}} \newcommand{\FacilityPower}{P_{\text{facility}}} \newcommand{\FacilityWaterConsumption}{W_{\text{water}}} \newcommand{\FactoredIntermediateActivation}{\mathbf{z}} \newcommand{\FactorizationRank}{k} \newcommand{\FailureDetectionTime}{T_{\text{detect}}} \newcommand{\FailureEventCost}{C_{\text{per-failure}}} \newcommand{\FailureFlagLatency}{\delta_{\text{flag}}} \newcommand{\FailureMarginFunction}{l} \newcommand{\FailureModeOccurrenceCount}{n_{f}} \newcommand{\FailureObservationInterval}{T} \newcommand{\FailureOverheadFraction}{F_{\text{fail}}} \newcommand{\FailureRecoveryTime}{T_{\text{recovery}}} \newcommand{\FailureRegion}{F} \newcommand{\FailureSet}{\mathcal{F}_{\text{fail}}} \newcommand{\FailureUpperConfidenceLimit}{p_{\text{fail, upper}}} \newcommand{\FairShareStabilizingConstant}{\epsilon_{\text{stab}}} \newcommand{\FairnessGapTolerance}{\epsilon_{\text{fair}}} \newcommand{\FakeQuantizedOutput}{x_{\text{fake}}} \newcommand{\FallbackCost}{C_{\text{fallback}}} \newcommand{\FallbackDeadline}{T_{\text{deadline,fallback}}} \newcommand{\FallbackHold}{T_{\text{hold}}} \newcommand{\FalseAcceptHarmCost}{C_{\text{harm}}} \newcommand{\FalseApprovalCount}{N_{\text{fa}}} \newcommand{\FalseApprovalOutcomeCount}{k} \newcommand{\FalseApprovalPropensity}{Q} \newcommand{\FalseApprovalPropensityLevel}{q} \newcommand{\FalseDiscoveryRateTarget}{q} \newcommand{\FalsificationInitialStateSet}{\mathcal{X}_0} \newcommand{\FanoutBackendCount}{m} \newcommand{\FarthestCandidateDistance}{D_{\max}} \newcommand{\FatTreeHostCount}{N_{\text{hosts}}} \newcommand{\FatigueLifeCycleCount}{N} \newcommand{\FaultContainmentLatency}{\Delta t_{\text{bounded}}} \newcommand{\FaultDetectionLatency}{\Delta t_{\text{det}}} \newcommand{\FaultDomainIsolation}{\mathcal{F}} \newcommand{\FaultInjectionDuration}{\Delta t_{\text{duration}}} \newcommand{\FaultStartTimestamp}{t_{\text{fault\_start}}} \newcommand{\FaultTakeoverLatency}{\Delta t_{\text{takeover}}} \newcommand{\FaultTakeoverTimestamp}{t_{\text{takeover}}} \newcommand{\FaultToleranceCost}{C_{\text{ft}}} \newcommand{\FaultToleranceInvestment}{x} \newcommand{\FeasibleOutputTokenRate}{\mu_{\text{out}}} \newcommand{\FeasibleTrajectoryProjection}{\Pi_{\mathcal{K}}} \newcommand{\FeasibleTrajectorySet}{\mathcal{K}} \newcommand{\FeatureCategoryCount}{k} \newcommand{\FeatureCategoryIndex}{i} \newcommand{\FeatureCellVector}{\mathbf{f}_{u, v}} \newcommand{\FeatureChannelCount}{C} \newcommand{\FeatureCount}{N_{\text{features}}} \newcommand{\FeatureFreshnessLatency}{T_{\text{freshness}}} \newcommand{\FeatureMapColumnCoordinate}{x} \newcommand{\FeatureMapGrowthRate}{g} \newcommand{\FeatureMapHeight}{H_{\text{img}}} \newcommand{\FeatureMapRowCoordinate}{y} \newcommand{\FeatureMapWidth}{W_{\text{img}}} \newcommand{\FeatureRecordTime}{t} \newcommand{\FeatureRetentionWindow}{T_{\text{retention}}} \newcommand{\FeatureUpdateInterval}{T_{\text{update}}} \newcommand{\FeatureUpdateLag}{T_{\text{staleness}}} \newcommand{\FeatureUpdateTimestamp}{t_{\text{feat}}} \newcommand{\FeatureViewingDistance}{r} \newcommand{\FederatedRoundCount}{R} \newcommand{\FederatedRoundIndex}{t} \newcommand{\FederatedTrainingEnergy}{E_{\text{federated}}} \newcommand{\FeedForwardOperations}{O_{\text{FFN}}} \newcommand{\FeedForwardWidth}{d_{\text{ff}}} \newcommand{\FeedbackCheckDuration}{t_{\text{check}}} \newcommand{\FeedbackCriticalPathLatency}{T^{\text{feedback}}} \newcommand{\FeedbackIntervalCount}{k} \newcommand{\FeedbackStepIndex}{t} \newcommand{\FeedforwardJointTorque}{\boldsymbol{\tau}_{\text{ff}}} \newcommand{\FeedthroughMatrix}{\mathbf{D}} \newcommand{\FewShotStepCount}{n_{\text{steps}}} \newcommand{\FewShotSupportSet}{\mathcal{D}_{\text{shot}}} \newcommand{\FiberPropagationSpeed}{c_{\text{fiber}}} \newcommand{\FieldbusCycleTime}{T_{\text{cycle}}} \newcommand{\FilmEncounterRate}{\lambda_{\text{film}}} \newcommand{\FilterSolveBudget}{T_{\text{budget}}} \newcommand{\FilterSolveTime}{T_{\text{solve}}} \newcommand{\FilterTapCount}{N} \newcommand{\FilterWeight}{w} \newcommand{\FilteredScreenSpaceCovariance}{\boldsymbol{\Sigma}_{2D}'} \newcommand{\FinalBusVoltage}{V_{\text{final}}} \newcommand{\FinalGeneratorLatentVector}{\mathbf{z}_{m}} \newcommand{\FinalLayerFunction}{f_{N_L}} \newcommand{\FinalLayerWidth}{n_{N_L}} \newcommand{\FinalMiniBatchActivation}{a_{B}} \newcommand{\FinalRecurrentHiddenState}{\mathbf{h}_{S}} \newcommand{\FinalWatchdogToken}{T_{\text{final}}} \newcommand{\FingerNormalForce}{f_n} \newcommand{\FingerTangentialForce}{\mathbf{f}_t} \newcommand{\FinishedWorkerCount}{j} \newcommand{\FiniteChange}{\Delta} \newcommand{\FiniteSampleGeneralizationBound}{\delta_N} \newcommand{\FiniteTimeHorizon}{T} \newcommand{\FirstAdjacentCheckIndex}{a} \newcommand{\FirstAdjacentCheckPassProbability}{p_{a}} \newcommand{\FirstAdjacentCheckSlotTime}{T_{a}} \newcommand{\FirstAtomicGradientUpdate}{A} \newcommand{\FirstCatalogDefinitionCount}{n_{\text{def},A}} \newcommand{\FirstCatalogDefinitionSize}{S_{A}} \newcommand{\FirstClassCoverageFloor}{a} \newcommand{\FirstClientMaskedUpdate}{\mathbf{y}_A} \newcommand{\FirstClientModelParameters}{\theta_A} \newcommand{\FirstComparedGroupLabel}{a} \newcommand{\FirstComparedItem}{i} \newcommand{\FirstDiscardedSingularNumber}{\sigma_{r+1}} \newcommand{\FirstErrorStepIndex}{k} \newcommand{\FirstFloatingPointAddend}{a} \newcommand{\FirstGroupClassificationThreshold}{\tau_{\text{thr},a}} \newcommand{\FirstGroupQualifiedFraction}{q_a} \newcommand{\FirstGroupSampleApprovalRate}{\hat{p}_a} \newcommand{\FirstGroupSampleSize}{n_a} \newcommand{\FirstGroupThresholdClassifier}{h_a} \newcommand{\FirstIncidentTime}{t_1} \newcommand{\FirstInputNodePrimal}{v_{1-N}} \newcommand{\FirstJaccardSet}{\mathcal{A}} \newcommand{\FirstMistakeEvent}{\mathcal{E}} \newcommand{\FirstRankComputeTime}{T_{\text{rank}_0}} \newcommand{\FirstRaterCategoryFraction}{p_{y,1}} \newcommand{\FirstRingTraceElement}{a} \newcommand{\FirstSummandStandardDeviation}{\sigma_a} \newcommand{\FirstTwinCriticReturnEstimate}{Q_{\phi_1}} \newcommand{\FittedSensitivity}{\lambda} \newcommand{\FixedClearanceAllowance}{\delta} \newcommand{\FlangeCameraTransform}{\mathbf{T}_{\text{flange}}^{\text{cam}}} \newcommand{\FlangePose}{\mathbf{T}_{\text{flange}}} \newcommand{\FlangeReferenceFrame}{\mathcal{F}_{\text{flange}}} \newcommand{\FlangeTargetTransform}{\mathbf{T}_{\text{flange}}^{\text{target}}} \newcommand{\FlattenedFilterWeights}{\mathbf{w}_{\text{col}}} \newcommand{\FleetAcceleratorCount}{N_{\text{fleet}}} \newcommand{\FleetCommunicationTaxonomyAxis}{C_2} \newcommand{\FleetComputeTaxonomyAxis}{C_1} \newcommand{\FleetCoordinationTaxonomyAxis}{C_3} \newcommand{\FleetEnergyProductivity}{\rho_{\text{energy}}} \newcommand{\FleetManufacturingDistribution}{\mathcal{M}} \newcommand{\FleetResourceCapacity}{C_{r}} \newcommand{\FleetRobotCount}{N_{\text{fleet}}} \newcommand{\FlippedFloatExponentField}{e'} \newcommand{\FloatEncodedNumber}{x} \newcommand{\FloatExponentField}{e} \newcommand{\FloatMantissaField}{m} \newcommand{\FloatSignBit}{s} \newcommand{\FloatingBaseAccelerations}{\ddot{\mathbf{q}}_b} \newcommand{\FloatingBaseBiasForces}{\mathbf{h}_b} \newcommand{\FloatingBaseInertiaBlock}{\mathbf{M}_{bb}} \newcommand{\FloatingBasePose}{\mathbf{q}_b} \newcommand{\FlopPrice}{c_{\text{FLOP}}} \newcommand{\FlowMatchingLoss}{\mathcal{L}_{\text{FM}}} \newcommand{\FlowProbabilityPath}{\rho} \newcommand{\FlowSampleVector}{\mathbf{y}} \newcommand{\FlowTimeCoordinate}{t} \newcommand{\FocalLength}{f} \newcommand{\FollowerForwardWave}{\mathbf{u}_s} \newcommand{\FollowerJointPositions}{\mathbf{q}_{\text{follower}}} \newcommand{\FollowerMechanicalLatency}{t_{\text{mech}}} \newcommand{\FollowerReturnWave}{\mathbf{w}_s} \newcommand{\ForceGuidedRelay}{K} \newcommand{\ForceReadingInnovation}{\nu} \newcommand{\ForceSensorBias}{b} \newcommand{\ForceSensorReading}{y} \newcommand{\ForegroundLatency}{L_{\text{lat,fg}}} \newcommand{\ForgetDataset}{D_{\text{forget}}} \newcommand{\ForkBoundarySet}{\mathcal{B}_{\text{fork}}} \newcommand{\ForkedTrajectoryTokenCount}{N_{\text{total}}} \newcommand{\FormatComplianceScore}{\Phi} \newcommand{\FormatEfficiency}{\eta_{\text{format}}} \newcommand{\FormatRewardWeight}{\lambda_{\text{fmt}}} \newcommand{\ForwardDiffusionDistribution}{q} \newcommand{\ForwardEulerEigenvalue}{\lambda_{\text{FE}}} \newcommand{\ForwardEulerTransitionMatrix}{\mathbf{A}_{\text{FE}}} \newcommand{\ForwardInvariantSafeSet}{\mathcal{C}} \newcommand{\ForwardKinematicsMap}{\mathbf{FK}} \newcommand{\ForwardOccupancySet}{\mathcal{R}} \newcommand{\ForwardPassTokenCount}{n} \newcommand{\ForwardPosteriorMean}{\tilde{\boldsymbol{\mu}}} \newcommand{\ForwardPosteriorVariance}{\tilde{\beta}} \newcommand{\FourthRingTraceElement}{d} \newcommand{\FrameBitCount}{B_{\text{frame}}} \newcommand{\FrameBlockingTime}{B} \newcommand{\FrameExposureStartTime}{t_{\text{start}}} \newcommand{\FrameIndex}{i} \newcommand{\FramePayloadSize}{B_{\text{payload}}} \newcommand{\FramePeriod}{T} \newcommand{\FrameReadoutTime}{t_{\text{readout}}} \newcommand{\FrameReleaseJitter}{J} \newcommand{\FrameResponseTime}{R} \newcommand{\FrameSerializationTime}{t_{\text{frame},i}} \newcommand{\FrameTransmissionTime}{C} \newcommand{\FrameWireBitCount}{B_{\text{wire},i}} \newcommand{\FreeConfigurationSpace}{\mathcal{C}_{\text{free}}} \newcommand{\FreeCreditCount}{N_{\text{free}}} \newcommand{\FreeSpaceDepth}{d_{\text{free}}} \newcommand{\FreeSpaceLogOddsIncrement}{L_{\text{free}}} \newcommand{\FreeSurfaceTiltAngle}{\theta_{\text{tilt}}} \newcommand{\FreeboardHeight}{h_{f}} \newcommand{\FreshEvidenceTime}{t_{\text{fresh}}} \newcommand{\FreshInputTokenCount}{S_{\text{fresh}}} \newcommand{\FreshnessObjective}{S_{\text{freshness}}} \newcommand{\FrictionCoefficientFloor}{\mu_{\min}} \newcommand{\FrictionPyramidMatrix}{\mathbf{F}} \newcommand{\FrobeniusNorm}{F} \newcommand{\FrozenBackboneFunction}{f} \newcommand{\FrozenFeatureEncoder}{f} \newcommand{\FrozenWeightMatrix}{\mathbf{W}_{\text{frozen}}} \newcommand{\FrustumFeature}{\mathbf{c}_{u, v, k}} \newcommand{\FullBatchLoss}{\mathcal{L}_B} \newcommand{\FullDatasetSize}{D_{\text{total}}} \newcommand{\FullPrecisionWeight}{w} \newcommand{\FullSnapshotWriteVolume}{D_{\text{vol,full}}} \newcommand{\FullSpeedTravelTime}{b} \newcommand{\FunctionInputAdjoint}{\bar{x}} \newcommand{\FunctionInputDimension}{N} \newcommand{\FunctionInputElement}{x} \newcommand{\FunctionInputTangent}{\dot{x}} \newcommand{\FunctionInputVariable}{x} \newcommand{\FunctionInputVector}{\mathbf{x}} \newcommand{\FunctionJacobian}{\mathbf{J}} \newcommand{\FunctionOutputDimension}{M} \newcommand{\FunctionOutputElement}{y} \newcommand{\FunctionOutputVariable}{z} \newcommand{\FunctionOutputVector}{\mathbf{y}} \newcommand{\FunctionSecondInputVariable}{y} \newcommand{\FundamentalMatrix}{\mathbf{F}} \newcommand{\FusedConvolutionBias}{\mathbf{b}_{\text{fused}}} \newcommand{\FusedConvolutionWeight}{\mathbf{W}_{\text{fused}}} \newcommand{\FusedTokenCount}{N_{\text{total}}} \newcommand{\FusionCandidate}{x_{\text{cand}}} \newcommand{\FusionInputList}{\mathcal{L}} \newcommand{\FusionInputRank}{r} \newcommand{\FusionInputTensor}{\mathbf{X}} \newcommand{\FusionIntermediateTensor}{\mathbf{Z}} \newcommand{\FusionOutputTensor}{\mathbf{Y}} \newcommand{\FutureControlTrajectory}{\mathbf{u}_{[t, \infty)}} \newcommand{\FutureTimeInstant}{t'} \newcommand{\GaeAdvantageEstimate}{\widehat{A}^{\text{GAE}}} \newcommand{\GateCurrent}{I_g} \newcommand{\GateDriverSkew}{t_{\text{prop, skew}}} \newcommand{\GatePropagationDelay}{t_{\text{prop}}} \newcommand{\GateSourceCapacitance}{C_{\text{gs}}} \newcommand{\GateSourceCharge}{Q_{\text{gs}}} \newcommand{\GateSourceVoltage}{V_{\text{gs}}} \newcommand{\GaussianCovarianceMatrix}{\boldsymbol{\Sigma}} \newcommand{\GaussianDistribution}{\mathcal{N}} \newcommand{\GaussianFirstAxisScale}{s_{x}} \newcommand{\GaussianMeanVector}{\boldsymbol{\mu}} \newcommand{\GaussianMechanismNoiseVector}{\mathbf{z}} \newcommand{\GaussianMechanismStandardDeviation}{\sigma_{\text{mech}}} \newcommand{\GaussianOpacityLogit}{o} \newcommand{\GaussianPrimitiveCovariance}{\boldsymbol{\Sigma}} \newcommand{\GaussianPrimitiveDensity}{G} \newcommand{\GaussianPrimitiveIndex}{i} \newcommand{\GaussianPrimitiveMean}{\boldsymbol{\mu}} \newcommand{\GaussianPrimitiveOpacity}{\alpha} \newcommand{\GaussianPrimitiveScaleMatrix}{\mathbf{S}} \newcommand{\GaussianSecondAxisScale}{s_{y}} \newcommand{\GaussianStandardDeviation}{\sigma} \newcommand{\GaussianThirdAxisScale}{s_{z}} \newcommand{\GaussianViewDependentColor}{c} \newcommand{\GearFaceWidth}{b} \newcommand{\GearModule}{m} \newcommand{\GearRatedFatigueLife}{L_{\text{gear}}} \newcommand{\GearReductionRatio}{N_{\text{gear}}} \newcommand{\GearTangentialLoad}{W_t} \newcommand{\GearToothBendingStress}{\sigma_b} \newcommand{\GearTorqueReversalCount}{n_{\text{gear}}} \newcommand{\GearboxTransmissionEfficiency}{\eta_{\text{gear}}} \newcommand{\GemmAccumulatorScale}{\beta} \newcommand{\GemmColumnDimension}{N} \newcommand{\GemmInnerDimension}{K} \newcommand{\GemmLeftOperand}{\mathbf{A}} \newcommand{\GemmLeftOperandElement}{A} \newcommand{\GemmLeftOperandEntry}{A_{ik}} \newcommand{\GemmOutputElement}{C} \newcommand{\GemmOutputEntry}{C_{ij}} \newcommand{\GemmOutputMatrix}{\mathbf{C}} \newcommand{\GemmProductScale}{\alpha} \newcommand{\GemmReductionIndex}{k} \newcommand{\GemmRightOperand}{\mathbf{B}} \newcommand{\GemmRightOperandElement}{B} \newcommand{\GemmRightOperandEntry}{B_{kj}} \newcommand{\GemmRowDimension}{M} \newcommand{\GemmTileColumnDimension}{N_{\text{tile}}} \newcommand{\GemmTileInnerDimension}{K_{\text{tile}}} \newcommand{\GemmTileRowDimension}{M_{\text{tile}}} \newcommand{\GemvArithmeticIntensity}{I_{\text{GEMV}}} \newcommand{\GeneralPurposeEnergyProductivity}{\rho_{\text{energy,general}}} \newcommand{\GeneralizedAccelerationLowerBound}{\ddot{\mathbf{q}}_{\min}} \newcommand{\GeneralizedAccelerationUpperBound}{\ddot{\mathbf{q}}_{\max}} \newcommand{\GeneralizedAccelerations}{\ddot{\mathbf{q}}} \newcommand{\GeneralizedBiasForces}{\mathbf{h}} \newcommand{\GeneralizedCoordinateCount}{n} \newcommand{\GeneralizedCoordinates}{\mathbf{q}} \newcommand{\GeneralizedInertiaMatrix}{\mathbf{M}} \newcommand{\GeneralizedParetoDistribution}{H} \newcommand{\GeneralizedParetoLikelihood}{L} \newcommand{\GeneralizedVelocities}{\dot{\mathbf{q}}} \newcommand{\GeneratedResponse}{y} \newcommand{\GeneratedSampleCount}{n} \newcommand{\GeneratedTokenCap}{N_{\text{cap}}} \newcommand{\GenerationStepErrorRate}{\lambda_{\text{error}}} \newcommand{\GenerativeActionModelDistribution}{p_\theta} \newcommand{\GeneratorLatentVector}{\mathbf{z}} \newcommand{\GenericRandomVariable}{X} \newcommand{\GeometricStateRepresentation}{\mathbf{Z}_{\text{geom}}} \newcommand{\GevLocationParameter}{\mu} \newcommand{\GevScaleParameter}{\sigma} \newcommand{\GlobalBatchGradient}{\mathbf{g}_{\text{global}}} \newcommand{\GlobalBatchSize}{B_{\text{global}}} \newcommand{\GlobalDeviationPenalty}{\mathcal{R}} \newcommand{\GlobalModelParameters}{\theta_{\text{global}}} \newcommand{\GoalConfiguration}{\mathbf{q}_{\text{goal}}} \newcommand{\GoalSet}{\mathcal{G}_{\text{goal}}} \newcommand{\GoodputRelativeTolerance}{\epsilon_{\mathcal{G}}} \newcommand{\GpdCumulativeDistribution}{F_{\text{GPD}}} \newcommand{\GpdScaleParameter}{\tilde{\sigma}} \newcommand{\GpuAvailability}{A_{\text{GPU}}} \newcommand{\GpuEnergy}{E_{\text{GPU}}} \newcommand{\GpuFailureRate}{\lambda_{\text{GPU}}} \newcommand{\GpuMttf}{\text{MTTF}_{\text{GPU}}} \newcommand{\GpuTopologicalDistance}{d} \newcommand{\GradientClippingNorm}{C} \newcommand{\GradientCovarianceMatrix}{\Sigma} \newcommand{\GradientElementCount}{d_{\text{grad}}} \newcommand{\GradientMemory}{M_{\text{gradients}}} \newcommand{\GradientPayload}{M_{\text{grad}}} \newcommand{\GradientStaleness}{\tau_{\text{stale}}} \newcommand{\GrantAllowedAccesses}{\mathcal{A}} \newcommand{\GrantCondition}{\phi_{\Gamma}} \newcommand{\GrantExpiryTime}{t_{\text{exp}}} \newcommand{\GrantIssueTime}{T} \newcommand{\GrantRights}{\mathcal{R}_{\Gamma}} \newcommand{\GraphEdgeSet}{E} \newcommand{\GraphNodeIndex}{i} \newcommand{\GraphNodeSet}{V} \newcommand{\GraspContactDisplacement}{\mathbf{d}} \newcommand{\GraspForceCeiling}{f_{\max}} \newcommand{\GraspForceFloor}{f_{\min}} \newcommand{\GraspMap}{\mathbf{G}} \newcommand{\GraspOrientation}{\mathbf{R}_{\text{grasp}}} \newcommand{\GraspPose}{\mathbf{T}_{\text{grasp}}} \newcommand{\GraspPosition}{\mathbf{p}_{\text{grasp}}} \newcommand{\GraspVerticalAcceleration}{a_z} \newcommand{\GravitationalTorqueVector}{\mathbf{g}} \newcommand{\Gravity}{g} \newcommand{\GravityCenterHeight}{h_{\text{cg}}} \newcommand{\GravityVector}{\mathbf{g}_0} \newcommand{\GridFeedCapacity}{P_{\text{grid}}} \newcommand{\GridSideCellCount}{N} \newcommand{\GripContactForce}{x} \newcommand{\GripperContactAngle}{\theta_{\text{contact}}} \newcommand{\GripperOpeningCommand}{a_{\text{gripper}}} \newcommand{\GroundPlaneAbscissa}{x} \newcommand{\GroundPlaneOrdinate}{y} \newcommand{\GroupCommitWaitTime}{L_{\text{lat}, i}} \newcommand{\GroupContrastProbability}{p_{\text{contrast}}} \newcommand{\GroupDisparity}{\Delta_g} \newcommand{\GroupMeanReward}{\mu_{R}} \newcommand{\GroupRelativeAdvantage}{\hat{A}} \newcommand{\GroupRewardStandardDeviation}{\sigma_{R}} \newcommand{\GroupRolloutIndex}{i} \newcommand{\GroupSize}{G} \newcommand{\GrpoSampledObjective}{\widehat{\mathcal{J}}_{\text{GRPO}}} \newcommand{\GuardBandDuration}{t_{\text{guard}}} \newcommand{\GuardedContactPredicate}{P_{\text{contact}}} \newcommand{\GuestImageMemory}{M_{\text{guest}}} \newcommand{\GuestKernelBootTime}{T_{\text{kernel}}} \newcommand{\HadamardRotationMatrix}{\mathbf{H}} \newcommand{\HalfPrecisionGemvIntensity}{I_{\text{GEMV, 16-bit}}} \newcommand{\HammingDataBitCount}{n} \newcommand{\HandForceCriterion}{F_h} \newcommand{\HandleAffordanceFrame}{\mathcal{F}_{\text{handle}}} \newcommand{\HandoffExceedanceProbability}{\epsilon} \newcommand{\HandoverTimeout}{T_{\text{timeout}}} \newcommand{\HandoverTimeoutCeiling}{T_{\text{config}}} \newcommand{\HandshakeProtocolLatency}{T_{\text{handshake}}} \newcommand{\HardwareCommonCauseRate}{\lambda_{\text{other}}} \newcommand{\HardwareParameterVector}{\boldsymbol{\xi}_{\text{real}}} \newcommand{\HardwareServiceLife}{T_{\text{lifetime}}} \newcommand{\HarmInclusiveTaskCost}{C_{\text{with\ harm}}} \newcommand{\HarmInstant}{t_{\text{harm}}} \newcommand{\HarmLeadTime}{t_{\text{harm}}} \newcommand{\HarmonicDriveTorsionalStiffness}{k_c} \newcommand{\HarmonicPeriodMultiple}{m} \newcommand{\HarnessConnectorResistance}{R_{\text{harness}}} \newcommand{\HashBucketCount}{N_{\text{buckets}}} \newcommand{\HashEntrySize}{s_{\text{entry}}} \newcommand{\HashRingServer}{s} \newcommand{\HashRingServerCount}{N} \newcommand{\HashRingServerSet}{\mathcal{S}_{\text{srv}}} \newcommand{\HashedGridMemory}{M_{\text{hashed}}} \newcommand{\HazardClassIndex}{h} \newcommand{\HazardOnset}{t_{\text{onset}}} \newcommand{\HazardOnsetBound}{t_{\text{bound}}} \newcommand{\HazardousProposalRate}{\lambda_{\text{proposal}, h}} \newcommand{\HazardousWorldState}{s_B} \newcommand{\HeadAxisLabel}{h} \newcommand{\HeadByteAllocation}{M_{\text{head}}} \newcommand{\HeadComponentIndex}{m} \newcommand{\HeadDimensionAxisLabel}{d} \newcommand{\HeadKeyProjectionMatrix}{\mathbf{W}_{K,i}} \newcommand{\HeadQueryProjectionMatrix}{\mathbf{W}_{Q,i}} \newcommand{\HeadSamplingProbability}{\theta} \newcommand{\HeadValuesProjectionMatrix}{\mathbf{W}_{V,i}} \newcommand{\HeadingAngle}{\theta_{\text{head}}} \newcommand{\HeadingCurvature}{\kappa} \newcommand{\HealthyStepTime}{T_{\text{healthy}}} \newcommand{\HeartbeatAge}{\Delta t_{\text{heartbeat}}} \newcommand{\HeartbeatInterval}{H} \newcommand{\HeartbeatReceiptTime}{t_{\text{local}}} \newcommand{\HeartbeatSequenceCounter}{k} \newcommand{\HeartbeatTimestamp}{t^{\text{hb}}} \newcommand{\HeatDissipationPower}{P_{\text{heat}}} \newcommand{\HermiteBasisFunction}{h} \newcommand{\HermiteInterpolationFraction}{\lambda} \newcommand{\HermiteSegmentProgress}{s} \newcommand{\HertzianContactCoefficient}{k_{c}} \newcommand{\HertzianContactStiffness}{k_H} \newcommand{\HiddenActivation}{\mathbf{h}} \newcommand{\HiddenActivationMatrix}{\mathbf{H}} \newcommand{\HiddenDimension}{d} \newcommand{\HiddenUnitOutput}{h} \newcommand{\HighOccupancyBinCount}{m} \newcommand{\HigherPriorityFrames}{hp} \newcommand{\HigherPriorityTasks}{hp} \newcommand{\HighestSignalFrequency}{f_{\max}} \newcommand{\HnswLayerIndex}{L} \newcommand{\HnswLevelDraw}{U} \newcommand{\HnswLevelNormalization}{m_\ell} \newcommand{\HnswMaximumConnectionCount}{M} \newcommand{\HnswSearchBeamWidth}{ef_{\text{search}}} \newcommand{\HoldingTorque}{\tau_{\text{hold}}} \newcommand{\HomogeneousCameraFramePoint}{\tilde{\mathbf{p}}_C} \newcommand{\HomogeneousPixelCoordinates}{\tilde{\mathbf{m}}} \newcommand{\HomogeneousPointCoordinates}{\tilde{\mathbf{p}}} \newcommand{\HomogeneousTransform}{\mathbf{T}_{AB}} \newcommand{\HomogeneousWorldFramePoint}{\tilde{\mathbf{p}}_W} \newcommand{\HomographyColumn}{\mathbf{h}} \newcommand{\HomographyColumnEntry}{h} \newcommand{\HomographyConstraintVector}{\mathbf{v}} \newcommand{\HomographyScaleFactor}{\lambda} \newcommand{\HomomorphicCiphertext}{c} \newcommand{\HomomorphicFunction}{f} \newcommand{\HomomorphicPublicKey}{pk} \newcommand{\HomomorphicSecretKey}{sk} \newcommand{\HorizonStepIndex}{k} \newcommand{\HorizontalFocalLength}{f_x} \newcommand{\HostArrivalTimestamp}{t_{\text{host}}} \newcommand{\HostHeartbeatRate}{f_{\text{heartbeat}}} \newcommand{\HostLinkBandwidth}{\text{BW}_{\text{link}}} \newcommand{\HostPower}{P_{\text{host}}} \newcommand{\HostPreparationTime}{T_{\text{prep}}} \newcommand{\HostRuntimeCount}{N_{\text{host}}} \newcommand{\HostSoftwareTime}{T_{\text{sw}}} \newcommand{\HostTransferBandwidth}{\text{BW}_{\text{host}}} \newcommand{\HotTierHitProbability}{h} \newcommand{\HotTierServiceTime}{T_{\text{hot}}} \newcommand{\HourlyAccountQueryCount}{q_{\text{hourly}}} \newcommand{\HourlyComponentFailureRate}{\lambda_{\text{hour}}} \newcommand{\HuberLossThreshold}{\delta} \newcommand{\HullQueryTime}{t_{\text{query}}} \newcommand{\HullSphereRadius}{r_{\text{hull}}} \newcommand{\HumanCommandRate}{\dot{\mathbf{u}}_{\text{human}}} \newcommand{\HumanControlCommand}{\mathbf{u}_{\text{human}}} \newcommand{\HumanFallbackCost}{C_{h}} \newcommand{\HumanReactionTime}{T_{\text{human}}} \newcommand{\HumanResolutionProbability}{h} \newcommand{\HumanReviewCost}{C_{\text{human}}} \newcommand{\HumanStandaloneSensitivity}{S_{\text{human}}} \newcommand{\HumanWalkingSpeedBound}{v_h} \newcommand{\HybridIterationTime}{T_{\text{step}}} \newcommand{\HydraulicSupplyPressure}{p} \newcommand{\HypothesisIndex}{h} \newcommand{\HypothesisTestFalseNegativeRate}{\beta_{\text{stat}}} \newcommand{\HypothesisTestSignificanceLevel}{\alpha_{\text{sig}}} \newcommand{\HypothesizedAcceptanceProbability}{p} \newcommand{\HypothesizedTrialFailureProbability}{p} \newcommand{\IdealAcceleratorTime}{T_{\text{ideal}}} \newcommand{\IdealMemoryQueueDelay}{t_{\text{queue,ideal}}} \newcommand{\IdempotentAlgebraElement}{x} \newcommand{\IdentityMatrix}{\mathbf{I}} \newcommand{\IllustrativeFunction}{f} \newcommand{\ImageChannelCount}{C} \newcommand{\ImageChannelIndex}{c} \newcommand{\ImageColumnIndex}{w} \newcommand{\ImageEpipole}{\mathbf{e}} \newcommand{\ImageHeight}{H} \newcommand{\ImagePlanePixelCoordinates}{\mathbf{u}_{\text{px}}} \newcommand{\ImageRowIndex}{h} \newcommand{\ImageTensorElement}{X} \newcommand{\ImageWidth}{W} \newcommand{\ImaginaryUnit}{j} \newcommand{\ImitationLearnedPolicy}{\hat{\pi}} \newcommand{\ImitationTargetCommand}{\mathbf{u}_{\text{target}}} \newcommand{\ImmediateTaskCostScore}{C} \newcommand{\ImpactInstant}{T} \newcommand{\ImpactRiseTime}{t_{\text{rise}}} \newcommand{\ImpactSpeed}{v_{\text{impact}}} \newcommand{\ImpedanceControlledPosition}{x} \newcommand{\ImpedanceControlledVelocity}{\dot{x}} \newcommand{\ImpedanceEquilibriumPosition}{x_{\text{des}}} \newcommand{\ImpedanceEquilibriumVelocity}{\dot{x}_{\text{des}}} \newcommand{\ImpedanceRestoringForce}{F} \newcommand{\ImplicitPolicyEnergyFunction}{E_\theta} \newcommand{\ImportanceProposalDistribution}{q} \newcommand{\ImportanceSampledFailureProbability}{\hat{p}_F} \newcommand{\ImuSampleTime}{t_{\text{IMU}}} \newcommand{\InContactViableSet}{\mathcal{C}_{\text{contact}}} \newcommand{\IncidenceAngle}{\theta_{\text{inc}}} \newcommand{\IncidentOpticalPower}{P_{\text{opt}}} \newcommand{\IncomingChannelCommand}{u_{\text{new}}} \newcommand{\IncomingCommandDerivative}{\dot{u}_{\text{new}}} \newcommand{\IncorrectCandidateTrialPassProbability}{p_{b}} \newcommand{\IncrementalSnapshotWriteVolume}{D_{\text{vol,delta}}} \newcommand{\IncumbentControlCommand}{\mathbf{u}^{\text{incumbent}}} \newcommand{\IncumbentInterventionRate}{\lambda_{\text{incumbent}}} \newcommand{\IncumbentTrackingErrorStandardDeviation}{\sigma_{\text{incumbent}}} \newcommand{\IndependentAttemptCount}{k} \newcommand{\IndependentEventProbability}{p} \newcommand{\IndependentSampleRate}{f} \newcommand{\IndexGraphNodeSet}{V} \newcommand{\IndexedDocumentCount}{N} \newcommand{\IndicatorFunction}{\mathbb{I}} \newcommand{\InducedGateVoltage}{V_{\text{gs,induced}}} \newcommand{\InductiveVoltage}{v} \newcommand{\InequalityConstraintFunction}{g} \newcommand{\InertiaMatchingRatio}{N^*} \newcommand{\InertiaMatrixDerivative}{\dot{\mathbf{M}}} \newcommand{\InertialIntegrationTime}{T} \newcommand{\InferenceActiveTime}{t_{\text{inference}}} \newcommand{\InferenceCost}{C_{\text{infer}}} \newcommand{\InferenceDutyCycle}{\alpha_{\text{duty}}} \newcommand{\InferenceEnergy}{E_{\text{inf}}} \newcommand{\InferenceLatency}{L_{\text{lat,infer}}} \newcommand{\InferenceLoadSocPower}{P_{\text{load}}} \newcommand{\InflatedHullRadius}{r_{\text{inflated}}} \newcommand{\InflightRolloutReservation}{M_{\text{inflight}}} \newcommand{\InfluenceFunction}{I} \newcommand{\InformationTechnologyEnergy}{E_{\text{IT}}} \newcommand{\InformationTechnologyHeatLoad}{\dot{Q}_{\text{IT}}} \newcommand{\InformationTechnologyPower}{P_{\text{IT}}} \newcommand{\InformativeTaskFraction}{p_{\text{inform}}} \newcommand{\IngestionPricePerSample}{C_{\text{ingest/sample}}} \newcommand{\InitialAccuracy}{\text{Accuracy}_0} \newcommand{\InitialBusVoltage}{V_{\text{initial}}} \newcommand{\InitialPositionStandardDeviation}{\sigma_{p,0}} \newcommand{\InitialPositionVelocityCovariance}{\sigma_{pv,0}} \newcommand{\InitialProposalDistribution}{q_{\boldsymbol{\psi}_0}} \newcommand{\InitialStateDistribution}{\rho_0} \newcommand{\InitialTrackingError}{e_0} \newcommand{\InitialVelocityStandardDeviation}{\sigma_{v,0}} \newcommand{\InitiatedTasks}{N} \newcommand{\InjectionBandwidth}{\text{BW}_{\text{inject}}} \newcommand{\InjectionTriggerEpoch}{t_{\text{inject}}} \newcommand{\InnerChainTransform}{\mathbf{T}_{BC}} \newcommand{\InnerLayerFunction}{g} \newcommand{\InnerProductLeftComponent}{a} \newcommand{\InnerProductLeftVector}{\mathbf{a}} \newcommand{\InnerProductRightComponent}{v} \newcommand{\InnerProductRightVector}{\mathbf{b}} \newcommand{\InnovationBias}{b} \newcommand{\InnovationCovariance}{\mathbf{S}} \newcommand{\InnovationVariance}{S} \newcommand{\InputCaptureTime}{T_{\text{capture}}} \newcommand{\InputChannelCount}{C_{\text{in}}} \newcommand{\InputChannelIndex}{c} \newcommand{\InputColumnLieDerivativeOperator}{L_{\mathbf{g}_j}} \newcommand{\InputConsumerAcceleratorCount}{N_{\text{GPU}}} \newcommand{\InputCoordinateCount}{d} \newcommand{\InputDistribution}{p(x)} \newcommand{\InputEventRate}{r_{\text{event}}} \newcommand{\InputFeatureIndex}{i} \newcommand{\InputFeatureVector}{\mathbf{x}} \newcommand{\InputLieDerivativeOperator}{L_{\mathbf{g}}} \newcommand{\InputNodePrimal}{v_{i-N}} \newcommand{\InputPipelineRate}{R_{\text{pipeline}}} \newcommand{\InputPipelineRatio}{r_{\text{pipe}}} \newcommand{\InputPipelineServiceRate}{r_{\text{pipeline}}} \newcommand{\InputPipelineStageIndex}{j} \newcommand{\InputQuantizationScale}{s_X} \newcommand{\InputResolution}{r} \newcommand{\InputStageServiceRate}{r} \newcommand{\InputTokenPrice}{c_{\text{in}}} \newcommand{\InputTokenSequence}{x_{1:S}} \newcommand{\InputVariableIndex}{m} \newcommand{\InsetAvailableBrakingDistance}{D_{\text{avail}}} \newcommand{\InstanceReplenishTime}{T_{\text{init}}} \newcommand{\InstantaneousPhaseCurrent}{i_{\text{phase}}} \newcommand{\InstantaneousRequestOccupancy}{Q} \newcommand{\IntegerWeightCode}{q} \newcommand{\IntegralControlEffort}{\mathbf{u}_{\text{int}}} \newcommand{\IntegralGainMatrix}{\mathbf{K}_{i}} \newcommand{\IntegratedPixelResponse}{I_{\text{pixel}}} \newcommand{\IntegrationCandidateCommitHash}{h_{\text{candidate}}} \newcommand{\IntegrationDummyTime}{t'} \newcommand{\IntegrationHeadCommitHash}{h_{\text{head}}} \newcommand{\IntegrationPoint}{\mathbf{y}} \newcommand{\IntegrationPointCoordinate}{y} \newcommand{\IntegrationTimeInstant}{s} \newcommand{\IntegratorState}{\mathbf{z}} \newcommand{\IntegratorStateRate}{\dot{\mathbf{z}}} \newcommand{\IntegratorUnwindDelay}{T_{\text{unwind}}} \newcommand{\IntegrityProvenance}{\iota} \newcommand{\IntegrityTrustLabel}{\iota} \newcommand{\IntentAcknowledgmentEvent}{e_{\text{flush}}} \newcommand{\IntentAdministrativeLease}{T_{\text{admin}}} \newcommand{\IntentDemonstrationDataset}{\mathcal{D}_{\text{intent}}} \newcommand{\IntentLease}{\mathcal{I}_{\text{intent}}} \newcommand{\IntentLeaseExpiry}{t_{\text{intent\_exp}}} \newcommand{\IntentProposalPeriod}{T_{\text{period}}} \newcommand{\InterAnnotatorAgreement}{\kappa} \newcommand{\InterFeedInterval}{T_{\text{feed}}} \newcommand{\InterGroupColumnDelay}{t_{\text{CCD\_S}}} \newcommand{\InterKernelGapTime}{T_{\text{gap}}} \newcommand{\InterNodeContextParallelDegree}{c_{\text{inter}}} \newcommand{\InterQueryIntervalDeviation}{\sigma_{\text{inter-query}}} \newcommand{\InterSensorClockSkew}{\Delta t_{\text{skew}}} \newcommand{\InteractionHistory}{h} \newcommand{\InteractionPortForce}{F} \newcommand{\InteractionPortVelocity}{v} \newcommand{\InterarrivalVariationCoefficient}{c_{a}} \newcommand{\InterfaceMaterialThermalResistance}{R_{\text{th,TIM}}} \newcommand{\InterferenceSlowdownFactor}{r_{\text{slow}}} \newcommand{\InterframeSpacingTime}{t_{\text{interframe},i}} \newcommand{\InterleavedPipelineBubbleFraction}{b_{\text{interleaved}}} \newcommand{\IntermediateTensorSize}{M_{\text{tensor}}} \newcommand{\InternalDissipationPower}{g} \newcommand{\IntervalCompletionTime}{T_{\text{total}}} \newcommand{\IntervalMean}{\bar{T}} \newcommand{\IntervalMeanOccupancy}{\bar{Q}} \newcommand{\IntervalNormalQuantile}{z} \newcommand{\IntervalStandardDeviation}{\sigma} \newcommand{\IntervalTransitionMatrix}{\boldsymbol{\Phi}} \newcommand{\IntervalVariationCoefficient}{c} \newcommand{\InterventionDensity}{D_{\text{int}}} \newcommand{\InterventionRate}{\lambda_{\text{int}}} \newcommand{\InterventionWindowDuration}{W} \newcommand{\IntraClusterCorrelation}{\rho_{\text{ICC}}} \newcommand{\IntraGroupColumnDelay}{t_{\text{CCD\_L}}} \newcommand{\IntraNodeContextParallelDegree}{c_{\text{intra}}} \newcommand{\IntrusionDistance}{C} \newcommand{\IntrusionDistanceAllowance}{C} \newcommand{\InvalidatedArtifactNode}{v} \newcommand{\InverseDepth}{\rho} \newcommand{\InverseDepthLandmarkParameters}{\mathbf{y}} \newcommand{\InverseKinematicsDamping}{\lambda} \newcommand{\InverseSensorLogOdds}{L_{\text{sensor}}} \newcommand{\InverterCurrentLimit}{I_{\max}} \newcommand{\InverterDeadTime}{t_{\text{dead}}} \newcommand{\IoTransferTime}{T_{\text{IO}}} \newcommand{\IronCaseThermalResistance}{R_{\text{th,iron-case}}} \newcommand{\IronLawComputeTime}{T_{\text{compute}}} \newcommand{\IronLawMemoryTime}{T_{\text{memory}}} \newcommand{\IronLossPower}{P_{\text{iron}}} \newcommand{\IronThermalCapacitance}{C_{\text{iron}}} \newcommand{\IrreducibleLoss}{C_{\mathcal{L}}} \newcommand{\IsolatedEnforcerExecutionTime}{t_{\text{iso}}} \newcommand{\IsolatedJobRunTime}{T} \newcommand{\IspProcessingTime}{t_{\text{ISP}}} \newcommand{\IsrExecutionTime}{t_{\text{ISR}}} \newcommand{\IterationCost}{C_{\text{iter}}} \newcommand{\IterationTokenBudget}{N_{\text{budget}}} \newcommand{\JaccardSimilarity}{J} \newcommand{\JacobianLeftSingularMatrix}{\mathbf{U}} \newcommand{\JacobianLeftSingularVector}{\mathbf{u}} \newcommand{\JacobianPseudoinverse}{\mathbf{J}^\dagger} \newcommand{\JacobianRightSingularMatrix}{\mathbf{V}} \newcommand{\JacobianRightSingularVector}{\mathbf{v}} \newcommand{\JacobianSingularNumber}{\sigma} \newcommand{\JacobianSingularNumberMatrix}{\boldsymbol{\Sigma}} \newcommand{\JawAperture}{w_{\text{aperture}}} \newcommand{\JensenShannonDivergence}{\mathcal{D}_{\text{JS}}} \newcommand{\JensenShannonMixtureDistribution}{\bar{P}} \newcommand{\JerkLimit}{j_{\max}} \newcommand{\JerkWeightMatrix}{\mathbf{W}_j} \newcommand{\JitterBufferPlayoutDelay}{T_{\text{buf}}} \newcommand{\JobAbsoluteDeadline}{d} \newcommand{\JobAvailability}{A_{\text{all}}} \newcommand{\JobDuration}{T_{\text{job}}} \newcommand{\JobIndex}{j} \newcommand{\JobQueueWaitTime}{W} \newcommand{\JobReleaseTime}{r} \newcommand{\JobRestartTime}{T_{\text{restart}}} \newcommand{\JobSlowdown}{S} \newcommand{\JobStartupTime}{T_{\text{startup}}} \newcommand{\JointAcceleration}{\ddot{q}} \newcommand{\JointAngle}{\theta_{\text{joint}}} \newcommand{\JointAngleLowerLimit}{q_{\min}} \newcommand{\JointAngleUpperLimit}{q_{\max}} \newcommand{\JointAngularAcceleration}{\dot{\omega}} \newcommand{\JointAngularRate}{\omega} \newcommand{\JointAngularSpeed}{\omega} \newcommand{\JointBaseInertiaCoupling}{\mathbf{M}_{jb}} \newcommand{\JointBiasTorque}{\tau_{\text{bias}}} \newcommand{\JointCoordinate}{q} \newcommand{\JointCount}{n} \newcommand{\JointFrictionTorque}{\tau_{\text{fric}}} \newcommand{\JointIndex}{i} \newcommand{\JointJerk}{j_{\text{joint}}} \newcommand{\JointLoadTorque}{\tau_{\text{load}}} \newcommand{\JointOutputImpedance}{Z_{\text{out}}} \newcommand{\JointOutputTorque}{\tau_{\text{out}}} \newcommand{\JointPathCurvature}{\mathbf{q}''} \newcommand{\JointPathTangent}{\mathbf{q}'} \newcommand{\JointPosition}{q} \newcommand{\JointPositionLowerLimit}{\mathbf{q}_{\min}} \newcommand{\JointPositionSetpoint}{\mathbf{q}^*} \newcommand{\JointPositionTarget}{q_{\text{des}}} \newcommand{\JointPositionUpperLimit}{\mathbf{q}_{\max}} \newcommand{\JointReflectedRotorInertia}{J_{m}} \newcommand{\JointSampleTimestamp}{t_{\text{joint}}} \newcommand{\JointTorque}{\boldsymbol{\tau}} \newcommand{\JointTorqueConstant}{K_t} \newcommand{\JointTorqueLimit}{\tau_{\max}} \newcommand{\JointTorqueLimits}{\boldsymbol{\tau}_{\max}} \newcommand{\JointTorqueLowerLimit}{\boldsymbol{\tau}_{\min}} \newcommand{\JointTorqueSlew}{\dot{\boldsymbol{\tau}}} \newcommand{\JointTorqueSlewLimit}{\dot{\boldsymbol{\tau}}_{\max}} \newcommand{\JointTorqueTarget}{\tau_{\text{des}}} \newcommand{\JointTorqueUpperLimit}{\boldsymbol{\tau}_{\max}} \newcommand{\JointTorsionalStiffnessMatrix}{\mathbf{K}} \newcommand{\JointTrackingError}{\mathbf{e}} \newcommand{\JointVelocity}{\dot{q}} \newcommand{\JointVelocityCeiling}{\dot{q}_{\max}} \newcommand{\JointVelocityLimit}{\dot{\mathbf{q}}_{\max}} \newcommand{\JointVelocitySetpoint}{\dot{\mathbf{q}}^*} \newcommand{\JointVelocityTarget}{\dot{q}_{\text{des}}} \newcommand{\JouleanTemperatureRise}{\Delta T} \newcommand{\JunctionAmbientThermalResistance}{R_{\text{th,JA}}} \newcommand{\JunctionCaseThermalResistance}{R_{\text{th,JC}}} \newcommand{\JunctionTemperature}{T_{\text{j}}} \newcommand{\KalmanBucyObserverGain}{\mathbf{L}} \newcommand{\KalmanGain}{\mathbf{G}} \newcommand{\KeepContextPathCost}{C_{\text{keep}}} \newcommand{\KendallMarkovianCode}{M} \newcommand{\KernelActiveTime}{T_{\text{compute}}} \newcommand{\KernelColumnOffset}{n} \newcommand{\KernelExecutionTime}{T_{\text{kernel}}} \newcommand{\KernelHeight}{K_h} \newcommand{\KernelHorizontalLoopOffset}{k_{x}} \newcommand{\KernelRowOffset}{m} \newcommand{\KernelSize}{K} \newcommand{\KernelVerticalLoopOffset}{k_{y}} \newcommand{\KernelWeight}{W} \newcommand{\KernelWidth}{K_w} \newcommand{\KeyAxisLabel}{j} \newcommand{\KeyBufferPosition}{j} \newcommand{\KeyComponent}{k_{jm}} \newcommand{\KeyLeftSingularMatrix}{\mathbf{U}} \newcommand{\KeyLeftSingularVector}{\mathbf{u}} \newcommand{\KeyProjectionMatrix}{\mathbf{W}_{K}} \newcommand{\KeyRightSingularMatrix}{\mathbf{V}} \newcommand{\KeyRightSingularVector}{\mathbf{v}} \newcommand{\KeySingularNumber}{\sigma} \newcommand{\KeySingularSpectrumMatrix}{\mathbf{\Sigma}} \newcommand{\KeySourceMatrix}{\mathbf{X}_{K}} \newcommand{\KeySpectrumLength}{q} \newcommand{\KeyVector}{\mathbf{k}} \newcommand{\KineticEnergy}{E_k} \newcommand{\KineticEnergyCeiling}{E_{\max}} \newcommand{\KineticInsetBarrierFunction}{h_{\text{kinetic}}} \newcommand{\KineticInsetBarrierRate}{\dot{h}_{\text{kinetic}}} \newcommand{\KlDivergence}{\mathcal{D}_{\text{KL}}} \newcommand{\KlPenaltyCoefficient}{\beta_{\text{KL}}} \newcommand{\KlSampleStatistic}{d} \newcommand{\KnownComponentStopDistance}{d_{\text{budget}}} \newcommand{\KolmogorovSmirnovCriticalThreshold}{c_{\text{crit}}} \newcommand{\KolmogorovSmirnovStatistic}{\mathcal{D}_{\text{KS}}} \newcommand{\KroneckerIndicator}{\delta} \newcommand{\KrumClientCount}{n} \newcommand{\KrylovSubspace}{\mathcal{K}} \newcommand{\KsCriticalCoefficient}{c} \newcommand{\KvBlockSize}{S_{\text{blk}}} \newcommand{\KvBlockTailWaste}{\Delta_{\text{tail}}} \newcommand{\KvCacheBytesPerToken}{m_{\text{token}}} \newcommand{\KvCacheHandoffTime}{T_{\text{handoff}}} \newcommand{\KvCacheMemory}{M_{\text{KV}}} \newcommand{\KvElementStorageSize}{s_{\text{elem,KV}}} \newcommand{\KvHeadCount}{H_{\text{KV}}} \newcommand{\KvPoolHeadroomFraction}{f_{\text{head}}} \newcommand{\KvPoolMemory}{M_{\text{pool}}} \newcommand{\KvRecomputeTime}{T_{\text{recompute}}} \newcommand{\KvReloadTime}{T_{\text{reload}}} \newcommand{\KvTileCount}{T_c} \newcommand{\KvTileIndex}{j} \newcommand{\KvTileSize}{B_c} \newcommand{\LaSalleInvariantSet}{\Omega} \newcommand{\LabelCategoryIndex}{i} \newcommand{\LabelVector}{\mathbf{y}} \newcommand{\LabeledRecord}{x} \newcommand{\LabeledSampleCount}{D_{\text{labeled}}} \newcommand{\LabelingRoundIndex}{k} \newcommand{\LaggedModelInput}{x_{t-\Delta}} \newcommand{\LaggedStateDigest}{h_{\text{state},t-k}} \newcommand{\LandmarkDepth}{d} \newcommand{\LanguageInstruction}{c_{\text{instr}}} \newcommand{\LanguageSkillPrior}{p_{\text{LLM}}} \newcommand{\LaplaceLikelihoodScale}{b} \newcommand{\LaplaceNoiseSample}{x} \newcommand{\LaplaceNoiseScale}{b} \newcommand{\LaplaceVariable}{s} \newcommand{\LargestDrivenWheelLoadShare}{\varphi} \newcommand{\LargestEigenvalue}{\lambda_{\max}} \newcommand{\LargestInvariantSet}{\mathcal{M}} \newcommand{\LargestSingularNumber}{\sigma_{\max}} \newcommand{\LarsGlobalLearningRate}{\eta_{\text{global}}} \newcommand{\LastCandidateEmbeddingVector}{\mathbf{x}_N} \newcommand{\LastFunctionInputComponent}{x_N} \newcommand{\LastMeasurementTime}{t_{\text{last}}} \newcommand{\LastRankComputeTime}{T_{\text{rank}_{N-1}}} \newcommand{\LatchApproachSpeed}{v_{\text{latch}}} \newcommand{\LatchClearance}{c} \newcommand{\LatchContactForce}{f} \newcommand{\LatchForceLimit}{F_{\text{lim}}} \newcommand{\LatchPlateStiffness}{k_{\text{latch}}} \newcommand{\LatchStallForce}{F} \newcommand{\LatchStrengthFloor}{F_{\text{floor}}} \newcommand{\LateHandoffProbability}{p} \newcommand{\Latency}{L_{\text{lat}}} \newcommand{\LatencyBandwidthCrossoverSize}{n^*} \newcommand{\LatencyBoundedBatchSize}{B_{\text{SLO}}} \newcommand{\LatencyObjective}{S_{\text{latency}}} \newcommand{\LatencyQuantileFunction}{Q_p} \newcommand{\LatencyRewardExponent}{\beta_{\text{lat}}} \newcommand{\LatencySlo}{L_{\text{lat,SLO}}} \newcommand{\LatentActionComponent}{u} \newcommand{\LatentComponentMean}{\mu_{\phi, j}} \newcommand{\LatentComponentStandardDeviation}{\sigma_{\phi, j}} \newcommand{\LatentDimension}{d_z} \newcommand{\LatentGaussianPolicyDensity}{\mu} \newcommand{\LatentKlWeight}{\beta} \newcommand{\LatentPosteriorDistribution}{q} \newcommand{\LatentPosteriorMean}{\boldsymbol{\mu}_\phi} \newcommand{\LatentPosteriorStandardDeviation}{\boldsymbol{\sigma}_\phi} \newcommand{\LatentStateEncoder}{q_\phi} \newcommand{\LatentStyleVariable}{\mathbf{z}} \newcommand{\LatentVariableSpace}{\mathcal{Z}} \newcommand{\LaterBaseFlangeTransform}{\mathbf{T}_{\text{base}, k+1}^{\text{flange}}} \newcommand{\LaterCameraTargetTransform}{\mathbf{T}_{\text{cam}, k+1}^{\text{target}}} \newcommand{\LaterRolloutTurnIndex}{j} \newcommand{\LaterStepIndex}{j} \newcommand{\LateralClearance}{W_{\text{clear}}} \newcommand{\LatestSequentialObservation}{X_m} \newcommand{\LayerAllReduceTime}{T_{\text{layer comm}}} \newcommand{\LayerBackwardTime}{T_{\text{layer backward}}} \newcommand{\LayerCount}{N_L} \newcommand{\LayerExposedCommunicationTime}{T_{\text{exposed}}} \newcommand{\LayerFunction}{f} \newcommand{\LayerIndex}{\ell} \newcommand{\LayerInputComponent}{x} \newcommand{\LayerInputMatrix}{\mathbf{X}} \newcommand{\LayerInputVector}{\mathbf{x}} \newcommand{\LayerInputWidth}{d_{\text{in}}} \newcommand{\LayerIntermediateStateMemory}{s_{\ell}} \newcommand{\LayerNonlinearity}{\phi} \newcommand{\LayerNormMean}{\mu_{\text{LN}}} \newcommand{\LayerNormStandardDeviation}{\sigma_{\text{LN}}} \newcommand{\LayerOutputMatrix}{\mathbf{Y}} \newcommand{\LayerOutputVector}{\mathbf{y}} \newcommand{\LayerOutputWidth}{d_{\text{out}}} \newcommand{\LayerParameterPayload}{M_{\text{layer}}} \newcommand{\LayerSavedTensorCount}{n_{\text{saved}}} \newcommand{\LayerSelectionIndex}{i} \newcommand{\LayerWeightEntry}{W} \newcommand{\LayerWeights}{\mathbf{w}} \newcommand{\LayerWidth}{n} \newcommand{\LcResonantFrequency}{f_0} \newcommand{\LeaderForwardWave}{\mathbf{u}_m} \newcommand{\LeaderJointPositions}{\mathbf{q}_{\text{leader}}} \newcommand{\LeaderPortEffort}{\mathbf{F}_m} \newcommand{\LeaderPortFlow}{\dot{\mathbf{x}}_m} \newcommand{\LeaderPortPower}{P_m} \newcommand{\LeaderReturnWave}{\mathbf{w}_m} \newcommand{\LeaderWristRollAngle}{\theta_{\text{roll}}} \newcommand{\LeadingSupportDistance}{d_{\text{lead}}} \newcommand{\LeakageCurrent}{I_{\text{leak}}} \newcommand{\LeakagePower}{P_{\text{leakage}}} \newcommand{\LearnedActionProposal}{\hat{\mathbf{a}}_{\text{learned}}} \newcommand{\LearnedNominalTrajectory}{\hat{\mathbf{q}}_{\text{learned}}} \newcommand{\LearnedRemainingReturnEstimate}{\widehat{V}} \newcommand{\LearnedVelocityField}{v_\theta} \newcommand{\LearnerStateDisagreementRate}{\epsilon_\pi} \newcommand{\LearnerStateVisitationDistribution}{p^{\pi}} \newcommand{\LearningCurveSampleCount}{n} \newcommand{\LearningRate}{\eta} \newcommand{\LeaseAdmissionInstant}{t_{\text{adm}}} \newcommand{\LeaseDirtyMemory}{M_{\text{dirty}}} \newcommand{\LeaseExpiryDelaySubtotal}{\tau_{\text{delay,sub}}} \newcommand{\LeaseHoldTime}{T_{\text{hold}}} \newcommand{\LeasePathTravel}{d_{\text{lease}}} \newcommand{\LeaseRefreshInstant}{t_{\text{refresh}}} \newcommand{\LeftEvasionAction}{\mathbf{a}_{\text{left}}} \newcommand{\LeftSingularVectorMatrix}{\mathbf{P}} \newcommand{\LengthPenaltyWeight}{\lambda_{\text{len}}} \newcommand{\LeverArmLength}{r_{\text{arm}}} \newcommand{\LeverArmSweepError}{e_{\text{rot}}} \newcommand{\LewisFormFactor}{Y} \newcommand{\LexicalDocument}{x} \newcommand{\LexicalFrequencySaturation}{k_1} \newcommand{\LexicalLengthNormalization}{b} \newcommand{\LexicalQuery}{Q} \newcommand{\LidarAzimuthAngle}{\theta_{\text{az}}} \newcommand{\LidarBeamDirection}{\mathbf{d}} \newcommand{\LidarElevationAngle}{\phi} \newcommand{\LidarFramePoint}{\mathbf{p}_{\text{lidar}}} \newcommand{\LidarReferenceFrame}{\mathcal{F}_{\text{lidar}}} \newcommand{\LidarScanRate}{f_{\text{scan}}} \newcommand{\LidarSweepPeriod}{T_{\text{sweep}}} \newcommand{\LidarSweepStartTime}{t_{\text{sweep}}} \newcommand{\LieDerivativeAlongControl}{L_{\mathbf{g}} h} \newcommand{\LieDerivativeAlongDrift}{L_{\mathbf{f}} h} \newcommand{\LieDerivativeOrder}{k} \newcommand{\LikelihoodRatioWeight}{w} \newcommand{\LimitMarginFunction}{M} \newcommand{\LinearAcceleration}{\mathbf{a}} \newcommand{\LinearBarrierDecayRate}{\gamma_{\text{cbf}}} \newcommand{\LinearMomentum}{p} \newcommand{\LinearizedVirtualInput}{\mathbf{v}} \newcommand{\LinkAngularAcceleration}{\ddot{\theta}_{\text{link}}} \newcommand{\LinkBandwidth}{\beta} \newcommand{\LinkBitRate}{R_{\text{link}}} \newcommand{\LinkLength}{l} \newcommand{\LinkOutputPosition}{q_{\text{out}}} \newcommand{\LintFalseAcceptFraction}{\phi} \newcommand{\LipschitzConstant}{K} \newcommand{\LiveAutomatonStateSet}{Q_{\text{live}}} \newcommand{\LoadCurrent}{I_{\text{load}}} \newcommand{\LoadInertia}{J_{\text{load}}} \newcommand{\LoadStepCurrentDeficit}{\Delta I_{\text{step}}} \newcommand{\LoadStepDeficitDuration}{\Delta t_{\text{step}}} \newcommand{\LoadedEnforcerExecutionTime}{t_{\text{enf}}} \newcommand{\LoadedJunctionTemperature}{T_{\text{load}}} \newcommand{\LocalBatchSize}{B_{\text{local}}} \newcommand{\LocalEpochCount}{E} \newcommand{\LocalGradient}{\mathbf{g}} \newcommand{\LocalInferenceEnergy}{E_{\text{local}}} \newcommand{\LocalPathTime}{T_{\text{local}}} \newcommand{\LocalRankIndex}{i} \newcommand{\LocalTokenCount}{B_{\text{tok}}} \newcommand{\LocalUpdateCount}{H_{\text{local}}} \newcommand{\LocalityPenaltyFunction}{w} \newcommand{\LocalizationBound}{\delta_{\text{loc}}} \newcommand{\LogFailureRatio}{s_{\text{fail}}} \newcommand{\LogOddsLowerClamp}{L_{\min}} \newcommand{\LogOddsUpperClamp}{L_{\max}} \newcommand{\LogPositionIndex}{j} \newcommand{\LoggedEvent}{e} \newcommand{\LoggedEventPrefix}{\mathbf{e}_{1:j}} \newcommand{\LoggpLongMessageTime}{T_{\text{long}}} \newcommand{\LogisticProbability}{p_{\text{sig}}} \newcommand{\LogitMask}{\mathbf{M}} \newcommand{\LogitMaskEntry}{M} \newcommand{\LogitStorageSize}{s_{\text{logit}}} \newcommand{\LogitVector}{\mathbf{z}} \newcommand{\LogpNetworkLatency}{L_{\text{LogGP}}} \newcommand{\LonePassAdvantage}{\hat{A}_{\text{pass}}} \newcommand{\LongMessageGapPerByte}{G} \newcommand{\LongestInterruptMaskTime}{t_{\text{irq\_disabled,max}}} \newcommand{\LongitudinalFrictionCoefficient}{\mu_x} \newcommand{\LongitudinalSlipRatio}{\lambda} \newcommand{\LongitudinalTractionStiffness}{C_x} \newcommand{\LongitudinalVehicleSpeed}{v_x} \newcommand{\LookaheadStepIndex}{l} \newcommand{\LoopAcceptanceProbability}{p_{\text{loop}}} \newcommand{\LoopGainScalingFactor}{\kappa} \newcommand{\LoopNestDepth}{n_{\text{loops}}} \newcommand{\LoopOrderCount}{N_{\text{order}}} \newcommand{\LoopParallelizationChoiceCount}{\mathcal{P}_{\text{parallel}}} \newcommand{\LoopTurnCost}{C} \newcommand{\Loss}{L} \newcommand{\LossAdjointSeed}{\bar{\mathcal{L}}} \newcommand{\LossFunction}{\mathcal{L}} \newcommand{\LossGradient}{g} \newcommand{\LossGradientVector}{\mathbf{g}} \newcommand{\LossHessian}{\mathbf{H}} \newcommand{\LossLowerBound}{\mathcal{L}_{\inf}} \newcommand{\LossScaleFactor}{s_{\text{loss}}} \newcommand{\LossTimeDerivative}{\dot{\mathcal{L}}} \newcommand{\LostMotionDeflection}{\delta_{\text{lost}}} \newcommand{\LostSuffixTurnCount}{H_{\text{suffix},i}} \newcommand{\LostWorkReplayTime}{T_{\text{replay}}} \newcommand{\LotSamplingProbability}{q} \newcommand{\LowRankLeftFactor}{\mathbf{U}} \newcommand{\LowRankRightFactor}{\mathbf{V}} \newcommand{\LowerPriorityFrames}{lp} \newcommand{\LowerPriorityTasks}{lp} \newcommand{\LowerRatioClippingWidth}{\epsilon_{\text{low}}} \newcommand{\LqrControlWeightMatrix}{\mathbf{R}_u} \newcommand{\LqrCostToGoMatrix}{\mathbf{P}} \newcommand{\LqrFeedbackGain}{\mathbf{K}_{\text{lqr}}} \newcommand{\LqrQuadraticObjective}{J} \newcommand{\LqrStateWeightMatrix}{\mathbf{Q}_x} \newcommand{\LshBandCount}{L} \newcommand{\LshCandidateProbability}{p_{\text{candidate}}} \newcommand{\LshRowsPerBand}{r} \newcommand{\LyapunovAnalysisDomain}{\mathcal{D}} \newcommand{\LyapunovFunction}{V} \newcommand{\LyapunovFunctionDerivative}{\dot{V}} \newcommand{\LyapunovPositivityMargin}{\epsilon_{\text{pos}}} \newcommand{\LyapunovSublevelSet}{\Omega_c} \newcommand{\MacAccumulator}{\text{acc}} \newcommand{\MachineTaxonomyAxis}{\mathsf{Machine}} \newcommand{\MahalanobisDistance}{d_M} \newcommand{\ManifestTrackIndex}{k} \newcommand{\ManipulatorBaseFrame}{\mathcal{F}_{\text{base}}} \newcommand{\ManipulatorJacobian}{\mathbf{J}} \newcommand{\ManualLease}{T_{\text{lease,man}}} \newcommand{\ManualResetTime}{t_{\text{reset,manual}}} \newcommand{\ManualReviewCost}{C_{\text{manual}}} \newcommand{\ManualReviewFraction}{r_{\text{manual}}} \newcommand{\MapCovarianceJacobian}{\mathbf{J}_{\text{map}}} \newcommand{\MapOdometryTransform}{\mathbf{T}_{\text{map}}^{\text{odom}}} \newcommand{\MapParameterEstimate}{\theta_{\text{MAP}}} \newcommand{\MapPoseCovariance}{\boldsymbol{\Sigma}_{\text{map}}} \newcommand{\MapReferenceFrame}{\mathcal{F}_{\text{map}}} \newcommand{\MappedCommandTap}{a_{\text{cmd}}} \newcommand{\MappingSearchSpaceSize}{\mathcal{S}_{\text{mapping}}} \newcommand{\MarginalFalseApprovalProbability}{p} \newcommand{\MarginalRequestServiceTime}{t_{\text{req}}} \newcommand{\MarginalStoppingThreshold}{\epsilon_{\text{stop}}} \newcommand{\MarginalVelocityField}{u} \newcommand{\MarginalizedModelParameters}{\theta'} \newcommand{\MarkovDecisionProcess}{\mathcal{M}} \newcommand{\MaskTokenIndex}{i} \newcommand{\MaskedClientUpdate}{\mathbf{y}} \newcommand{\MaskedFinetuningLoss}{\mathcal{L}_{\text{SFT}}} \newcommand{\MaskedImitationDataset}{\mathcal{D}_{\text{train}}} \newcommand{\MaskedImitationLoss}{\mathcal{L}_{\text{imitation}}} \newcommand{\MaskedLogitVector}{\mathbf{z}'} \newcommand{\MaskedTokenLogit}{z'} \newcommand{\Mass}{m} \newcommand{\MassCenterAcceleration}{\ddot{\mathbf{c}}} \newcommand{\MassCenterHeight}{z_c} \newcommand{\MassCenterPosition}{\mathbf{c}} \newcommand{\MasterProcessingTime}{t_{\text{master}}} \newcommand{\MatchingRowCount}{K} \newcommand{\MatrixColumnIndex}{j} \newcommand{\MatrixEigenvalue}{\lambda} \newcommand{\MatrixMultiplyDestination}{\mathbf{D}} \newcommand{\MatrixRowIndex}{i} \newcommand{\MaxBatchSize}{B_{\text{max}}} \newcommand{\MaxBatchingWindow}{T_{\text{max}}} \newcommand{\MaxReceivedTokenCount}{B_{\text{max}}} \newcommand{\MaxResidentContextCount}{B_{\max}} \newcommand{\MaximumActuatorEffort}{u_{\max}} \newcommand{\MaximumBreakerCooldownInterval}{T_{\text{cool}}^{\max}} \newcommand{\MaximumCompletionOffset}{c_{\max}} \newcommand{\MaximumDepthHypothesis}{d_{\max}} \newcommand{\MaximumEntropyObjective}{J} \newcommand{\MaximumLoadCurrentStep}{\Delta I_{\max}} \newcommand{\MaximumLogit}{z_{\max}} \newcommand{\MaximumObservationAge}{t_{\text{age},\max}} \newcommand{\MaximumPlateIndentation}{x_{\max}} \newcommand{\MaximumRetryBackoffInterval}{b_{\max}} \newcommand{\MaximumTurnOffDelay}{t_{\text{off, max}}} \newcommand{\McnemarTestStatistic}{\chi^2} \newcommand{\McuCaptureTime}{t_{\text{MCU,capture}}} \newcommand{\McuDispatchTime}{t_{\text{MCU,dispatch}}} \newcommand{\MealTokenKeyVector}{\mathbf{k}_{\text{meal}}} \newcommand{\MealTokenQueryVector}{\mathbf{q}_{\text{meal}}} \newcommand{\MeanAcceptedDraftLength}{\bar{m}} \newcommand{\MeanAttemptCost}{c} \newcommand{\MeanClusterSize}{m} \newcommand{\MeanContextLength}{\bar{S}} \newcommand{\MeanDeliveryPayloadLength}{L} \newcommand{\MeanDocumentLength}{\overline{|x|}} \newcommand{\MeanHoldTime}{\bar{T}_{\text{hold}}} \newcommand{\MeanLatchContactForce}{\bar{F}} \newcommand{\MeanMessageQueueDelay}{\bar{T}_q} \newcommand{\MeanNeesStatistic}{\bar{\epsilon}} \newcommand{\MeanQueryDistance}{\mu_D} \newcommand{\MeanRolloutLength}{\bar{N}} \newcommand{\MeanSlotOccupancy}{\bar{N}_{\text{slot}}} \newcommand{\MeanSquaredErrorCloningLoss}{\mathcal{L}_{\text{MSE}}} \newcommand{\MeanStoredTokensPerRecord}{\bar{S}} \newcommand{\MeanTargetTokensPerRecord}{\bar{w}} \newcommand{\MeanTimeBetweenFailures}{\text{MTBF}} \newcommand{\MeanTimeToFailure}{\text{MTTF}} \newcommand{\MeanTimeToRepair}{\text{MTTR}} \newcommand{\MeanVerifierServiceTime}{\bar{T}_{\text{svc}}} \newcommand{\MeasuredAxisPosition}{x_{\text{meas}}} \newcommand{\MeasuredContactForce}{\mathbf{F}_{\text{contact}}} \newcommand{\MeasuredJointVelocities}{\dot{\mathbf{q}}_{\text{meas}}} \newcommand{\MeasuredPixelDepth}{Z_{\text{meas}}} \newcommand{\MeasuredResponseTap}{a_{\text{meas}}} \newcommand{\MeasuredSeamAccelerations}{\ddot{\mathbf{q}}_{\text{meas}}} \newcommand{\MeasuredSeamConfiguration}{\mathbf{q}_{\text{meas}}} \newcommand{\MeasuredSeamVelocities}{\dot{\mathbf{q}}_{\text{meas}}} \newcommand{\MeasuredTrackedPosition}{\mathbf{p}_{\text{meas}}} \newcommand{\MeasurementCovariance}{\boldsymbol{\Sigma}_z} \newcommand{\MeasurementDimension}{m} \newcommand{\MeasurementErrorStandardDeviation}{\sigma} \newcommand{\MeasurementFunction}{h} \newcommand{\MeasurementHistory}{\mathbf{y}_{1:k}} \newcommand{\MeasurementInnovation}{\boldsymbol{\nu}} \newcommand{\MeasurementMatrix}{\mathbf{H}} \newcommand{\MeasurementNoiseCovariance}{\boldsymbol{\Sigma}_{\text{meas}}} \newcommand{\MeasurementNoiseVector}{\mathbf{v}_{\text{meas}}} \newcommand{\MeasurementVector}{\mathbf{y}} \newcommand{\MeasurementVectorDerivative}{\dot{\mathbf{y}}} \newcommand{\MeasurementWindowEnd}{t_{\text{end}}} \newcommand{\MechanicalEnergy}{E} \newcommand{\MechanicalEnergyDerivative}{\dot{E}} \newcommand{\MechanicalImpedanceMap}{Z} \newcommand{\MechanicalPlantState}{\mathbf{x}} \newcommand{\MechanicalWork}{W} \newcommand{\MechanismAcceptanceProbability}{p'_{\text{acc}}} \newcommand{\MechanismAttemptCost}{C'_{\text{attempt}}} \newcommand{\MechanismLogMoment}{\alpha_{\mathcal{M}}} \newcommand{\MechanismOutcome}{o} \newcommand{\MechanismOutputSet}{\mathcal{S}} \newcommand{\MechanismOutputVector}{\mathbf{y}} \newcommand{\MechanismRenyiPrivacyBudget}{\epsilon_{\text{R},i}} \newcommand{\MemoryBusQueueDelay}{t_{\text{queue}}} \newcommand{\MemoryEntryBirthGeneration}{g_{\text{birth}}} \newcommand{\MemoryEntryDeathGeneration}{g_{\text{death}}} \newcommand{\MemoryHierarchyLevelCount}{N_{\text{mem}}} \newcommand{\MemoryHoldDuringWait}{O_{\text{mem}}} \newcommand{\MemoryPlacementCount}{\mathcal{M}_{\text{placement}}} \newcommand{\MemorySubsystemEnergy}{E_{\text{memory}}} \newcommand{\MergedAttentionOutput}{\mathbf{O}^{\text{new}}} \newcommand{\MergedSoftmaxMaximum}{m^{\text{new}}} \newcommand{\MergedSoftmaxNormalizer}{z^{\text{new}}} \newcommand{\MergedWeightMatrix}{\mathbf{W}_{\text{final}}} \newcommand{\MessageInjectionGap}{g} \newcommand{\MessageQueueDelay}{T_q} \newcommand{\MessageStartupLatency}{\alpha} \newcommand{\MessageTimestamp}{t_{\text{msg}}} \newcommand{\MetricDepth}{z_{\text{metric}}} \newcommand{\MicroUnitPrefix}{\text{µ}} \newcommand{\MicrobatchCount}{m} \newcommand{\MicrobatchGradient}{\mathbf{g}} \newcommand{\MicrobatchIndex}{j} \newcommand{\MicrobatchPassTime}{T_{\text{micro},j}} \newcommand{\MicrobatchSize}{B_{\text{micro}}} \newcommand{\MicrocontrollerClockTime}{t_{\text{MCU}}} \newcommand{\MillerCapacitance}{C_{\text{gd}}} \newcommand{\MillerCharge}{Q_{\text{gd}}} \newcommand{\MillerDisplacementCurrent}{I_{\text{miller}}} \newcommand{\MillerPlateauDuration}{t_{\text{plateau}}} \newcommand{\MillerPlateauVoltage}{V_{\text{plateau}}} \newcommand{\MinHashPermutation}{\sigma} \newcommand{\MinHashPermutationCount}{n_{\sigma}} \newcommand{\MinHashSketchSize}{s} \newcommand{\MiniBatchActivation}{a} \newcommand{\MiniBatchSet}{\mathcal{B}} \newcommand{\MinibatchGradient}{\mathbf{g}} \newcommand{\MinimumActuatorEffort}{u_{\min}} \newcommand{\MinimumCellSupportCount}{N_{\min}} \newcommand{\MinimumChunkSetpointCount}{h_{\min}} \newcommand{\MinimumCompletionOffset}{c_{\min}} \newcommand{\MinimumDepthHypothesis}{d_{\min}} \newcommand{\MinimumDetectableEffect}{\delta_{\text{MDE}}} \newcommand{\MinimumPrefetchBufferCount}{Q_{\text{prefetch,min}}} \newcommand{\MinimumRailVoltage}{V_{\text{rail,min}}} \newcommand{\MinimumRoundTripLatency}{L_{\text{lat,min}}} \newcommand{\MinimumStableBatchSize}{B_{\text{min}}} \newcommand{\MinimumTransitTime}{t_{\min}} \newcommand{\MinimumTurnOnDelay}{t_{\text{on, min}}} \newcommand{\MisclassifiedFraction}{r_{\text{error}}} \newcommand{\MisroutedQueryFraction}{m} \newcommand{\MissAcceptanceProbability}{\alpha} \newcommand{\MissPathServiceTime}{T_{\text{cold}}} \newcommand{\MissionDuration}{T_{\text{mission}}} \newcommand{\MissionEnergy}{E_{\text{mission}}} \newcommand{\MissionExceedanceBudget}{\epsilon_{\text{mission}}} \newcommand{\MissionHandoffCount}{K} \newcommand{\MixtureComponentCount}{M} \newcommand{\MixtureComponentCovariance}{\boldsymbol{\Sigma}_m} \newcommand{\MixtureComponentIndex}{m} \newcommand{\MixtureComponentMean}{\boldsymbol{\mu}_m} \newcommand{\MixtureComponentWeight}{w_m} \newcommand{\MixupSample}{\tilde{x}} \newcommand{\MixupWeight}{\lambda_{\text{mix}}} \newcommand{\MlProductivityGoodput}{\text{MPG}} \newcommand{\MlpWeightArithmeticIntensity}{I_{\text{MLP}}} \newcommand{\MobileBaseBarrierFunction}{h_{\text{base}}} \newcommand{\MobilenetWidthMultiplier}{\alpha_{\text{width}}} \newcommand{\ModelBandwidthUtilization}{\text{MBU}} \newcommand{\ModelCallIndex}{i} \newcommand{\ModelCallRequest}{\mathcal{R}} \newcommand{\ModelDownloadEnergy}{E_{\text{download}}} \newcommand{\ModelFlopsUtilization}{\text{MFU}} \newcommand{\ModelGenerationIndex}{n} \newcommand{\ModelInput}{x} \newcommand{\ModelLifetimeCost}{C_{\text{total}}} \newcommand{\ModelParameters}{\theta} \newcommand{\ModelPointAbscissa}{X} \newcommand{\ModelPointHeight}{Z} \newcommand{\ModelPointOrdinate}{Y} \newcommand{\ModelPrediction}{\hat{y}} \newcommand{\ModelPredictor}{f} \newcommand{\ModelScore}{s} \newcommand{\ModelStepOperations}{O_{\text{model}}} \newcommand{\ModelTime}{T_{\text{model}}} \newcommand{\ModelTimeFraction}{f} \newcommand{\ModelWeight}{w} \newcommand{\MomentOrder}{\lambda_{\text{mom}}} \newcommand{\MonitorStartupTime}{T_{\text{vmm}}} \newcommand{\MonitoredFairnessMetricCount}{m} \newcommand{\MonitoredFeatureLevel}{x_{\text{feat}}} \newcommand{\MonitoredGroupCount}{k} \newcommand{\MonitoredMetric}{X} \newcommand{\MonitoredMetricMean}{\mu} \newcommand{\MonitoredMetricStandardDeviation}{\sigma} \newcommand{\MonitoringAlertCost}{C_{\text{alert}}} \newcommand{\MonitoringComputeCost}{C_{\text{compute}}} \newcommand{\MonitoringCostComponent}{C_*} \newcommand{\MonitoringIngestionCost}{C_{\text{ingest}}} \newcommand{\MonitoringStorageCost}{C_{\text{storage}}} \newcommand{\MonotonicClockInstant}{t} \newcommand{\MonthlyOptimizationSavings}{C_{\text{save,monthly}}} \newcommand{\MotionBlurLength}{L} \newcommand{\MotionCyclePeriod}{T_{\text{cycle}}} \newcommand{\MotionModelInput}{\mathbf{u}} \newcommand{\MotorBackEmfConstant}{K_e} \newcommand{\MotorConstant}{K_m} \newcommand{\MotorPhaseRmsCurrent}{I_{\text{phase}}} \newcommand{\MotorRotorAccelerations}{\ddot{\boldsymbol{\theta}}_{\text{motor}}} \newcommand{\MotorRotorCoordinates}{\boldsymbol{\theta}_{\text{motor}}} \newcommand{\MotorRotorVelocities}{\dot{\boldsymbol{\theta}}_{\text{motor}}} \newcommand{\MotorShaftDamping}{D_{\text{motor}}} \newcommand{\MotorShaftPosition}{q_{\text{motor}}} \newcommand{\MotorTorque}{\tau_{\text{motor}}} \newcommand{\MotorTorqueConstant}{K_t} \newcommand{\MotorViscousDamping}{B_{m}} \newcommand{\MotorViscousDampingMatrix}{\mathbf{B}_m} \newcommand{\MpcControlSequence}{\mathbf{u}_{0:N_{\text{mpc}}-1}} \newcommand{\MpcControlSequenceTail}{\mathbf{u}_{1:N_{\text{mpc}}-1}} \newcommand{\MpcHorizonObjective}{J} \newcommand{\MpcPredictionHorizon}{N_{\text{mpc}}} \newcommand{\MpcTerminalCost}{\ell_f} \newcommand{\MpcTerminalCostMatrix}{\mathbf{P}_{N_{\text{mpc}}}} \newcommand{\MultiAgentAcceptanceProbability}{p_{\text{multi}}} \newcommand{\MultiDeviceRunTime}{T_N} \newcommand{\MultimodalFusedTokenStream}{\mathbf{Z}} \newcommand{\MultimodalObservation}{\mathbf{o}} \newcommand{\MutatingToolAction}{a} \newcommand{\MutualInformation}{I} \newcommand{\NaturalLogarithmBase}{e} \newcommand{\NearestCandidateDistance}{D_{\min}} \newcommand{\NeesStatistic}{\epsilon} \newcommand{\NegativeGateSupplyVoltage}{V_{\text{ee}}} \newcommand{\NeighborCount}{k} \newcommand{\NeighborUserIndex}{j} \newcommand{\NeighboringDataset}{X} \newcommand{\NetAngularBrakingDeceleration}{\alpha_{\text{net}}} \newcommand{\NetBrakingDeceleration}{a_{\text{net}}} \newcommand{\NetworkBandwidth}{\text{BW}_{\text{network}}} \newcommand{\NetworkDelayStandardDeviation}{\sigma_d} \newcommand{\NetworkEnergy}{E_{\text{network}}} \newcommand{\NetworkEquipmentPower}{P_{\text{network}}} \newcommand{\NetworkFunction}{f_{\text{net}}} \newcommand{\NetworkLatency}{L_{\text{lat,network}}} \newcommand{\NetworkOutput}{y} \newcommand{\NetworkTrafficVolume}{M} \newcommand{\NeuralLyapunovFactor}{\mathbf{L}_{\phi}} \newcommand{\NeuronActivation}{a} \newcommand{\NeuronBias}{b} \newcommand{\NeuronConnectionWeight}{w_{ij}} \newcommand{\NeuronIndex}{j} \newcommand{\NeuronPreactivation}{z} \newcommand{\NewSoftmaxRunningMaximum}{m_{\text{new}}} \newcommand{\NextDecisionProcessState}{s'} \newcommand{\NextFailureTime}{F} \newcommand{\NextLayerActivationMemory}{M_{\text{activations}}^{(\ell+1)}} \newcommand{\NextProprioceptiveObservation}{\mathbf{o}_{\text{proprio}, t+1}} \newcommand{\NextRobotAction}{\mathbf{a}'} \newcommand{\NextTokenDistribution}{p} \newcommand{\NextTokenEntropy}{\mathcal{H}} \newcommand{\NextTokenLogitFunction}{\mathbf{f}_\theta} \newcommand{\NgramLength}{n} \newcommand{\NicMttf}{\text{MTTF}_{\text{nic}}} \newcommand{\NicsPerNode}{n_{\text{nic}}} \newcommand{\NodeAcceleratorCount}{n_{\text{acc}}} \newcommand{\NodeHbmCapacity}{M_{\text{HBM}}} \newcommand{\NodeMtbf}{\text{MTBF}_{\text{node}}} \newcommand{\NodeStragglerProbability}{p_{\text{straggle}}} \newcommand{\NoisePredictionNetwork}{\boldsymbol{\epsilon}_\theta} \newcommand{\NoisedActionChunk}{\mathbf{A}^k} \newcommand{\NoisyClassProbability}{\tilde{p}} \newcommand{\NoisyClassProbabilityVector}{\tilde{\mathbf{p}}} \newcommand{\NoisyLabelSampleCount}{D_{\text{noisy}}} \newcommand{\NominalBitRate}{R_{\text{nom}}} \newcommand{\NominalBitTime}{T_{\text{bit,nom}}} \newcommand{\NominalBrakingDeceleration}{a_{\text{nominal}}} \newcommand{\NominalClearance}{C_{\text{nominal}}} \newcommand{\NominalClockFrequency}{f_{\text{nom}}} \newcommand{\NominalCommandWindow}{\mathbf{u}_{\text{nom}, t:t+H-1}} \newcommand{\NominalContactForces}{\mathbf{f}_{\text{nom}}} \newcommand{\NominalControlCommand}{\mathbf{u}_{\text{nom}}} \newcommand{\NominalFrameInterval}{T_{\text{nominal}}} \newcommand{\NominalFrictionCoefficient}{\mu_{\text{nom}}} \newcommand{\NominalOscillatorFrequency}{f_{\text{nom}}} \newcommand{\NominalPlanExpiry}{t_{\text{plan\_exp}}} \newcommand{\NominalRatedSpeed}{v_{\text{nominal}}} \newcommand{\NominalReferenceClearance}{c} \newcommand{\NominalSupplyVoltage}{V_{\text{nom}}} \newcommand{\NominalTickPeriod}{T_{\text{period}}} \newcommand{\NominalTrackingTolerance}{\epsilon_{\text{nom}}} \newcommand{\NonconformityScore}{s} \newcommand{\NoninferiorityRatioMargin}{\delta} \newcommand{\NoninferiorityTolerance}{\delta_{\text{tol}}} \newcommand{\NonlinearBiasTorque}{\mathbf{h}} \newcommand{\NonlinearObservationSpace}{\mathbf{O}_{\text{NL}}} \newcommand{\NonlinearOutputFunction}{\mathbf{h}} \newcommand{\NonzeroCount}{n_{\text{nz}}} \newcommand{\NonzeroParameterBudget}{k_{\text{nz}}} \newcommand{\NormWeightMatrix}{\mathbf{W}} \newcommand{\NormalContactForce}{f_{k, \perp}} \newcommand{\NormalContactImpulse}{P_n} \newcommand{\NormalizationScale}{\gamma} \newcommand{\NormalizationScaleVector}{\boldsymbol{\gamma}} \newcommand{\NormalizationShift}{\beta} \newcommand{\NormalizationShiftVector}{\boldsymbol{\beta}} \newcommand{\NormalizedActionCommand}{\tilde{a}} \newcommand{\NormalizedActionResidual}{e} \newcommand{\NormalizedActivation}{\hat{a}} \newcommand{\NormalizedCandidateScore}{c} \newcommand{\NormalizedElapsedTimeRatio}{D} \newcommand{\NormalizedGearRatio}{\tilde{N}} \newcommand{\NormalizedImageAbscissa}{x_n} \newcommand{\NormalizedImageOrdinate}{y_n} \newcommand{\NormalizedMetricBaseline}{v} \newcommand{\NormalizedPredicateMargin}{\bar{f}} \newcommand{\NormalizedRadialDistance}{r} \newcommand{\NormalizedStatusEnvelope}{\mathcal{N}} \newcommand{\NormalizerTokenIndex}{w} \newcommand{\NormalizingClassIndex}{k} \newcommand{\NormalizingKeyIndex}{m} \newcommand{\NormalizingNextState}{\tilde{s}} \newcommand{\NoticeByteAllocation}{M_{\text{notice}}} \newcommand{\NucleusProbabilityMass}{p} \newcommand{\NullSpaceProjector}{\mathbf{N}} \newcommand{\NullSpaceVelocityBias}{\dot{\mathbf{q}}_0} \newcommand{\NumericBitWidth}{b} \newcommand{\NumericalStabilityConstant}{\epsilon} \newcommand{\ObjectHandle}{h} \newcommand{\ObjectWrench}{\mathbf{w}_{\text{obj}}} \newcommand{\ObservabilityMatrix}{\mathbf{O}_{\text{obs}}} \newcommand{\ObservableModelOutput}{O} \newcommand{\ObservationAge}{t_{\text{age}}} \newcommand{\ObservationAgeBudget}{t_{\text{age},\max}} \newcommand{\ObservationAgeDisplacement}{\Delta \mathbf{p}} \newcommand{\ObservationBinding}{\lambda} \newcommand{\ObservationByteBudget}{M_{\text{obs},\max}} \newcommand{\ObservationCount}{N} \newcommand{\ObservationDataset}{\mathcal{D}} \newcommand{\ObservationEncodingTime}{t_{\text{enc}}} \newcommand{\ObservationFunction}{h} \newcommand{\ObservationHistory}{\mathbf{O}} \newcommand{\ObservationHistoryLength}{H_{\text{hist}}} \newcommand{\ObservationHistorySequence}{\mathbf{o}_{0:t}} \newcommand{\ObservationHistoryWindow}{\mathbf{o}_{t-H_{\text{hist}}:t}} \newcommand{\ObservationIntervalEnd}{t_{b}} \newcommand{\ObservationIntervalLength}{T_{\text{obs}}} \newcommand{\ObservationIntervalStart}{t_{a}} \newcommand{\ObservationPairingLag}{\Delta t_{\text{lag}}} \newcommand{\ObservationPayload}{\mathbf{T}_{\text{payload}}} \newcommand{\ObservationResponseLatency}{T_{\text{total}}} \newcommand{\ObservationTimestamp}{t_{\text{obs}}} \newcommand{\ObservationTokenCount}{S_{\text{obs}}} \newcommand{\ObservationTokenSequence}{\mathbf{z}_{\text{token}}} \newcommand{\ObservedAnnotatorAgreement}{p_o} \newcommand{\ObservedCategoryCount}{n_i^{\text{obs}}} \newcommand{\ObservedCycleCount}{N} \newcommand{\ObservedDataPoint}{\mathbf{x}} \newcommand{\ObservedFailureCount}{k} \newcommand{\ObservedFailureFraction}{\hat{p}} \newcommand{\ObservedFreeSpace}{\mathcal{M}_{\text{free}}} \newcommand{\ObservedLabelCount}{n} \newcommand{\ObservedOccupiedSpace}{\mathcal{M}_{\text{occ}}} \newcommand{\ObservedPixelCoordinates}{\tilde{\mathbf{m}}_{\text{observed}}} \newcommand{\ObservedPlantState}{\mathbf{x}_{\text{obs}}} \newcommand{\ObservedPointRange}{r} \newcommand{\ObservedRelativeSpeed}{v_{\text{rel}}} \newcommand{\ObservedSignificanceLevel}{p_{\text{val}}} \newcommand{\ObservedSuccessFraction}{\hat{p}} \newcommand{\ObservedTrialFailureCount}{k} \newcommand{\ObservedViolationFraction}{V} \newcommand{\ObservedVolume}{V_{\text{obs}}} \newcommand{\ObstacleConfigurationSet}{\mathcal{C}_{\text{obs}}} \newcommand{\ObstacleCostWeight}{\lambda_{\text{obs}}} \newcommand{\ObstaclePoint}{\mathbf{o}} \newcommand{\ObstaclePosition}{x_{\text{obstacle}}} \newcommand{\ObstacleProximityCost}{c_{\text{obs}}} \newcommand{\ObstacleRiskRadius}{r_{\text{risk}}} \newcommand{\ObstacleSeparationDistance}{d} \newcommand{\ObstacleStateSet}{\mathcal{X}_{\text{obs}}} \newcommand{\ObstacleSurfaceArea}{A_{\text{surface}}} \newcommand{\OccupancyCoverageMultiplier}{k_\sigma} \newcommand{\OccupancyLogOdds}{L} \newcommand{\OccupancyThreshold}{k} \newcommand{\OccupiedLogOddsIncrement}{L_{\text{occ}}} \newcommand{\OccupiedScenarioCellCount}{N_{\text{supported}}} \newcommand{\OdometryBaseTransform}{\mathbf{T}_{\text{odom}}^{\text{base}}} \newcommand{\OdometryCovarianceJacobian}{\mathbf{J}_{\text{odom}}} \newcommand{\OdometryNoiseStandardDeviation}{\sigma_{w}} \newcommand{\OdometryPoseCovariance}{\boldsymbol{\Sigma}_{\text{odom}}} \newcommand{\OdometryReferenceFrame}{\mathcal{F}_{\text{odom}}} \newcommand{\OfflineTransitionDataset}{\mathcal{D}_{\text{offline}}} \newcommand{\OffloadTailNetworkTime}{t_{\text{net}}^{\text{tail}}} \newcommand{\OffloadTailProcessingTime}{t_{\text{proc}}^{\text{tail}}} \newcommand{\OffloadTransactionWindow}{W} \newcommand{\OhmUnit}{\Omega} \newcommand{\OilBulkModulus}{\beta} \newcommand{\OldSoftmaxRunningMaximum}{m_{\text{old}}} \newcommand{\OnDieDecouplingCapacitance}{C_{\text{die}}} \newcommand{\OnlineSoftmaxKeyTile}{\mathbf{K}_{\text{tile}}} \newcommand{\OnlineSoftmaxQueryBlock}{\mathbf{Q}_{\text{block}}} \newcommand{\OnlineSoftmaxScoreBlock}{\mathbf{A}_{\text{block}}} \newcommand{\OpenLoopTransferFunction}{L} \newcommand{\OpenLoopTransferMatrix}{\mathbf{L}} \newcommand{\OperationChargeBound}{\bar{c}} \newcommand{\OperationDispatchOverhead}{t_{\text{dispatch}}} \newcommand{\OperationRecipient}{r} \newcommand{\OperationReconciliationTime}{T_{\text{rec}}} \newcommand{\OperationalFailureProbability}{p_F} \newcommand{\OperationalOverheadFraction}{f_{\text{overhead}}} \newcommand{\OperationalScenarioDistribution}{p} \newcommand{\OperationalTaxonomyDimension}{C} \newcommand{\OperationalTestDistribution}{\mathcal{D}} \newcommand{\Operations}{O} \newcommand{\OperationsPerSample}{O_{\text{sample}}} \newcommand{\OperatorCognitiveTime}{T_{\text{cognitive}}} \newcommand{\OperatorMotorTime}{T_{\text{motor}}} \newcommand{\OperatorResponseLatency}{t_{\text{hum}}} \newcommand{\OperatorSensoryTime}{T_{\text{sensory}}} \newcommand{\OperatorStabilizationInstant}{t_{\text{stabilize}}} \newcommand{\OperatorWindowTime}{t'} \newcommand{\OperatorWorkspaceMemory}{M_{\text{workspace}}} \newcommand{\OpticalFrequency}{\nu} \newcommand{\OpticalWavelength}{\lambda_{\text{wl}}} \newcommand{\OptimalCheckpointInterval}{T^\ast_{\text{ckpt}}} \newcommand{\OptimalCostToGoDerivative}{\dot{V}} \newcommand{\OptimalCostToGoFunction}{V} \newcommand{\OptimalModelParameters}{\theta^*} \newcommand{\OptimalStateReturn}{V_{\text{RL}}} \newcommand{\OptimizationBreakevenTime}{T_{\text{breakeven}}} \newcommand{\OptimizationImplementationCost}{C_{\text{optimization}}} \newcommand{\OptimizationIterate}{x} \newcommand{\OptimizerStateMemory}{M_{\text{optimizer}}} \newcommand{\OptimizerStepIndex}{t} \newcommand{\OptimizerStepTime}{T_{\text{update}}} \newcommand{\OptimizerUpdateCount}{T} \newcommand{\OptimumMissFactor}{x} \newcommand{\OrderedTestRank}{r} \newcommand{\OrientationTolerance}{\theta_{\text{tol}}} \newcommand{\OrphanSweepInterval}{T} \newcommand{\OscillationPriorStateDigest}{h_{\text{state},t-2}} \newcommand{\OscillatorAcceleration}{\ddot{q}} \newcommand{\OscillatorNaturalFrequency}{\omega} \newcommand{\OscillatorPosition}{q} \newcommand{\OscillatorStepVelocity}{v} \newcommand{\OscillatorVelocity}{\dot{q}} \newcommand{\OutcomeAlphabet}{\mathcal{X}} \newcommand{\OutcomeCheckPassProbability}{p_{\text{out}}} \newcommand{\OutcomeCheckSlotTime}{T_{\text{out}}} \newcommand{\OutcomePairPrivacyLoss}{\mathcal{L}_{\text{priv},(X,X')}^{(o)}} \newcommand{\OutcomeStandardDeviation}{\sigma} \newcommand{\OutgoingChannelCommand}{u_{\text{prior}}} \newcommand{\OutgoingCommandDerivative}{\dot{u}_{\text{prior}}} \newcommand{\OutputBearingDamping}{D_{\text{joint}}} \newcommand{\OutputChannel}{y} \newcommand{\OutputChannelCount}{C_{\text{out}}} \newcommand{\OutputChannelIndex}{k} \newcommand{\OutputComponentFunction}{h} \newcommand{\OutputDimension}{p} \newcommand{\OutputFeatureMapHeight}{H_{\text{out}}} \newcommand{\OutputFeatureMapWidth}{W_{\text{out}}} \newcommand{\OutputIndex}{\ell} \newcommand{\OutputLayerBiasVector}{\mathbf{b}_{\text{out}}} \newcommand{\OutputLayerWeightMatrix}{\mathbf{W}_{\text{out}}} \newcommand{\OutputLength}{K} \newcommand{\OutputLengthStandardDeviation}{\sigma} \newcommand{\OutputLimit}{K_{\max}} \newcommand{\OutputLogit}{z} \newcommand{\OutputNodeAdjoint}{\bar{v}_W} \newcommand{\OutputNodePrimal}{v_W} \newcommand{\OutputProjectionOperations}{O_{\text{out}}} \newcommand{\OutputQuantizationScale}{s_Y} \newcommand{\OutputRelativeDegree}{r} \newcommand{\OutputToken}{y} \newcommand{\OutputTokenPrefix}{y_{<t}} \newcommand{\OutputTokenPrice}{c_{\text{out}}} \newcommand{\OutputTokenSequence}{y_{1:K}} \newcommand{\OutputTorqueCeiling}{\tau_{\text{out,max}}} \newcommand{\OutstandingItemCount}{N_{\text{out}}} \newcommand{\OverheadCameraEmbedding}{\mathbf{e}_{\text{overhead}}} \newcommand{\OverlappedBackwardCommunicationTime}{T_{\text{pipelined}}} \newcommand{\OverlappedTime}{T_{\text{overlap}}} \newcommand{\OverlappingGaussianSet}{\mathcal{N}} \newcommand{\OversubscriptionRatio}{R} \newcommand{\OwnershipAcquisitionTime}{T_{\text{own}}} \newcommand{\PackageDecouplingCapacitance}{C_{\text{pkg}}} \newcommand{\PackageInductance}{L_{\text{pkg}}} \newcommand{\PackageResistance}{R_{\text{pkg}}} \newcommand{\PackageThermalCapacitance}{C_{\text{th}}} \newcommand{\PackageThermalTimeConstant}{\tau_{\text{th}}} \newcommand{\PackedExampleIndex}{k} \newcommand{\PackedExampleLength}{s} \newcommand{\PackedExampleOffset}{b} \newcommand{\PacketBuffer}{b} \newcommand{\PaddingWasteFraction}{W} \newcommand{\PageRankDampingFactor}{d} \newcommand{\PageRankScoreVector}{\mathbf{r}} \newcommand{\PairedAcceptanceDifference}{\Delta} \newcommand{\PairedDifferenceLowerLimit}{L_{\Delta}} \newcommand{\PairedDifferenceUpperLimit}{U_{\Delta}} \newcommand{\PairedOutcomeCellCount}{n} \newcommand{\PairedRandomVariable}{Y} \newcommand{\PairedTaskIndex}{j} \newcommand{\PairedTimeInstant}{s} \newcommand{\PairedVerdictCorrelation}{\hat{\phi}} \newcommand{\PairingLagCeiling}{\Delta t_{\text{lag,max}}} \newcommand{\PairwiseCoordinationCoefficient}{\beta_{\text{pair}}} \newcommand{\PairwiseMaskSecret}{\mathbf{s}} \newcommand{\ParallelEnvironmentCount}{n_{\text{env}}} \newcommand{\ParallelFraction}{f_{\text{parallel}}} \newcommand{\ParallelLoopCount}{k_{\text{parallel}}} \newcommand{\ParallelRigCount}{N_{\text{rig}}} \newcommand{\ParameterPayload}{M_{\text{param}}} \newcommand{\ParameterRandomizationRanges}{\mathcal{P}} \newcommand{\ParameterScaleCoefficient}{A} \newcommand{\ParameterScalingExponent}{\alpha} \newcommand{\ParameterServerCount}{K_{\text{srv}}} \newcommand{\ParameterSpace}{\Theta} \newcommand{\ParameterSpaceDirection}{u} \newcommand{\ParameterStreamingTime}{t_{\text{stream}}} \newcommand{\ParameterVelocity}{\dot{\theta}} \newcommand{\ParameterizedPredictor}{f_{\theta}} \newcommand{\Parameters}{P} \newcommand{\ParametricProposalDistribution}{q_{\boldsymbol{\psi}}} \newcommand{\ParasiticLoopInductance}{L_{\text{parasitic}}} \newcommand{\ParentCapabilityGrant}{\Gamma_{\text{parent}}} \newcommand{\ParentFreeBalance}{F_{P}} \newcommand{\ParentNodeIndex}{k} \newcommand{\ParentReservedFunds}{R_{P}} \newcommand{\ParentSettledCharges}{E_{P}} \newcommand{\ParetoMinimumDemand}{x_{\min}} \newcommand{\ParetoTailExponent}{\alpha_{\text{tail}}} \newcommand{\ParetoTaskDemand}{X} \newcommand{\ParticipatingClientCount}{N_{\text{clients}}} \newcommand{\PartnerBitIndex}{k} \newcommand{\PassAtKEstimate}{\widehat{\operatorname{pass@}k}} \newcommand{\PassedTrialCount}{N_{\text{pass}}} \newcommand{\PassingRunCount}{s} \newcommand{\PassingSampleCount}{c} \newcommand{\PassiveModelPrediction}{\hat{Y}} \newcommand{\PastSynchronizationStepIndex}{j} \newcommand{\PatchColumnIndex}{w} \newcommand{\PatchRowIndex}{h} \newcommand{\PatchTokenCount}{N} \newcommand{\PathAcceleration}{\ddot{s}} \newcommand{\PathAccelerationInput}{u} \newcommand{\PathAccelerationLowerBound}{\ddot{s}_{\min}} \newcommand{\PathAccelerationTorqueCoefficient}{\mathbf{a}_{\tau}} \newcommand{\PathAccelerationUpperBound}{\ddot{s}_{\max}} \newcommand{\PathCoordinate}{s} \newcommand{\PathDelayAsymmetry}{\Delta t_{\text{asym}}} \newcommand{\PathGridPointCount}{N_{\text{grid}}} \newcommand{\PathVelocity}{\dot{s}} \newcommand{\PathVelocityField}{v} \newcommand{\PathVelocitySquaredTorqueCoefficient}{\mathbf{b}_{\tau}} \newcommand{\PayloadGravityTorque}{\tau_{g}} \newcommand{\PayloadLeverArm}{r} \newcommand{\PcieLinkFailureRate}{\lambda_{\text{PCIe}}} \newcommand{\PdnBranchCurrent}{I_{\text{branch}}} \newcommand{\PdnBranchResistance}{R_{\text{PDN}}} \newcommand{\PdnTargetImpedance}{Z_{\text{target}}} \newcommand{\PeakBridgeJerk}{j_{\text{peak}}} \newcommand{\PeakContactForce}{F_{\text{peak}}} \newcommand{\PeakCopperLossPower}{P_{\text{peak}}} \newcommand{\PeakCurrent}{I_{\text{peak}}} \newcommand{\PeakMemoryBandwidth}{\text{BW}_{\text{peak}}} \newcommand{\PeakPenetrationDepth}{\delta_{\max}} \newcommand{\PeakRate}{R_{\text{peak}}} \newcommand{\PeakRegenerativePower}{P_{\text{regen, peak}}} \newcommand{\PeakRotorAngularSpeed}{\omega_{\max}} \newcommand{\PeakSlipRatio}{\lambda_{\text{peak}}} \newcommand{\PeakStopDeceleration}{a_{\text{peak}}} \newcommand{\PeakTorque}{\tau_{\text{peak}}} \newcommand{\PeakTractionCoefficient}{\mu_{\text{peak}}} \newcommand{\PearsonFitStatistic}{\chi^2} \newcommand{\PeerReviewerIndex}{i} \newcommand{\PeerToolCallIndex}{j} \newcommand{\PenaltyContactDamping}{c} \newcommand{\PenaltyContactStiffness}{k_{\text{pen}}} \newcommand{\PenaltyPenetrationDepth}{\delta_{\text{pen}}} \newcommand{\PenaltyRestitutionDuration}{\Delta t_{\text{res}}} \newcommand{\PendulumNaturalFrequency}{\omega_0} \newcommand{\PenetrationDepth}{\delta} \newcommand{\PenetrationRate}{\dot{\delta}} \newcommand{\PenultimateLayerWidth}{n_{N_L-1}} \newcommand{\PerDeviceComputeTime}{T_{\text{compute,local}}} \newcommand{\PerDeviceWeightReadTime}{T_{\text{read}}} \newcommand{\PerExperimentComputeCost}{C_{\text{compute,per-exp}}} \newcommand{\PerExperimentEngineeringCost}{C_{\text{engineer,per-exp}}} \newcommand{\PerFrameDetectionProbability}{p_{\text{frame}}} \newcommand{\PerGpuNetworkFailureRate}{\lambda_{\text{network/GPU}}} \newcommand{\PerGpuPowerFailureRate}{\lambda_{\text{power/GPU}}} \newcommand{\PerGpuTotalFailureRate}{\lambda_{\text{total/GPU}}} \newcommand{\PerStepCostBound}{C_{\max}} \newcommand{\PerStepErrorRate}{\epsilon} \newcommand{\PerStreamTokenRate}{R} \newcommand{\PerTaskRunCount}{R} \newcommand{\PerTestSignificanceLevel}{\alpha_{\text{sig}}'} \newcommand{\PerTokenDecodeTime}{t_{\text{decode}}} \newcommand{\PerTokenKlEstimate}{\hat{\mathcal{D}}} \newcommand{\PerTokenMaskingTime}{t_{\text{mask}}} \newcommand{\PerTokenPrefillTime}{t_{\text{prefill}}} \newcommand{\PerWorkerBatchSize}{B_{\text{per-worker}}} \newcommand{\PerceptionDepthCovariance}{\boldsymbol{\Sigma}_{\text{depth}}} \newcommand{\PerceptionDispatchTime}{t_{\text{IPC}}} \newcommand{\PerceptionErrorScale}{\epsilon_{\text{scale}}} \newcommand{\PeriodicPeakWindingTemperature}{T_{\text{peak}}} \newcommand{\PeriodicTaskCount}{n} \newcommand{\PermanentMagnetFluxLinkage}{\lambda_{\text{pm}}} \newcommand{\PermissionLoopPeriod}{T_{\text{tick}}} \newcommand{\PermissionPathKernel}{G_\kappa} \newcommand{\PermissionPathParameters}{\kappa} \newcommand{\PermissionTickWaitTime}{t_{\text{wait}}} \newcommand{\PermissionTickWcet}{T_{\text{wcet}}} \newcommand{\PermittedActions}{\mathcal{A}_{\text{perm}}} \newcommand{\PermittedUsePassProbability}{p_{\text{use}}} \newcommand{\PersonApproachTravel}{S_h} \newcommand{\PersonPositionUncertainty}{Z_d} \newcommand{\PersonalizationPenaltyWeight}{\lambda_{\text{reg}}} \newcommand{\PersonalizationVector}{\mathbf{p}} \newcommand{\PerturbationNoiseStandardDeviation}{\sigma} \newcommand{\PerturbationNormOrder}{p} \newcommand{\PerturbedPose}{\mathbf{T}'} \newcommand{\PerturbedSignalDimension}{D} \newcommand{\PerturbedSignalVector}{\mathbf{x}} \newcommand{\PfcWatchdogTimeout}{T_{\text{watchdog}}} \newcommand{\PhaseInductance}{L_{\text{phase}}} \newcommand{\PhaseJoulePower}{P_{\text{phase}}} \newcommand{\PhaseMargin}{\Phi_m} \newcommand{\PhaseResistance}{R_{\text{phase}}} \newcommand{\PhotodiodeQuantumEfficiency}{\eta_{\text{QE}}} \newcommand{\PhysicalPlantDynamics}{f_{\text{real}}} \newcommand{\PhysicalRestoreTime}{t_{\text{physical\_restore}}} \newcommand{\PhysicalReturnLevel}{z_{T, \text{real}}} \newcommand{\PhysicalStateTrajectory}{s_{\text{real}}} \newcommand{\PhysicalStlRobustness}{\rho_{\text{real}}} \newcommand{\PhysicalTrajectorySet}{\mathcal{S}_{\text{real}}} \newcommand{\PhysicalWorldState}{s} \newcommand{\PidDerivativeGain}{K_d} \newcommand{\PidIntegralGain}{K_i} \newcommand{\PidProportionalGain}{K_p} \newcommand{\PidProportionalGainMatrix}{\mathbf{K}_p} \newcommand{\PipelineBubbleFraction}{b_{\text{pipe}}} \newcommand{\PipelineBufferMemory}{M_{\text{required}}} \newcommand{\PipelineClockSkew}{t_{\text{skew}}} \newcommand{\PipelineFlushDelay}{t_{\text{hw\_pipe}}} \newcommand{\PipelineIterationTime}{T_{\text{iteration}}} \newcommand{\PipelineParallelDegree}{N_{\text{PP}}} \newcommand{\PipelineTimeSlot}{t} \newcommand{\PipelinedExecutionTime}{T_{\text{pipelined}}} \newcommand{\PistonArea}{A} \newcommand{\PixelColumnCoordinate}{u} \newcommand{\PixelLastEventTime}{t_{\text{last}}} \newcommand{\PixelOpacityContribution}{\alpha'} \newcommand{\PixelRowCoordinate}{v} \newcommand{\PixelRowStandardDeviation}{\sigma_v} \newcommand{\PixelStandardDeviation}{\sigma_u} \newcommand{\PlacementChoiceCount}{n} \newcommand{\PlaintextInput}{m} \newcommand{\PlanAction}{a} \newcommand{\PlanarHomographyMatrix}{\mathbf{H}} \newcommand{\PlanarPositionEmbedding}{\mathbf{E}_{\text{pos}}^{2D}} \newcommand{\PlanarSpecialEuclideanGroup}{SE(2)} \newcommand{\PlanckConstant}{h} \newcommand{\PlanningOperator}{o} \newcommand{\PlanningStageLatency}{T_{\text{plan}}} \newcommand{\PlanningStartInstant}{t_{\text{plan}}} \newcommand{\PlantDynamicsFunction}{\mathbf{f}} \newcommand{\PlantDynamicsParameters}{\theta_{\text{plant}}} \newcommand{\PlantOutcomeFunction}{g} \newcommand{\PlantParameters}{m} \newcommand{\PlantStateAcceleration}{\ddot{\mathbf{x}}} \newcommand{\PlantStateComponentCount}{N_s} \newcommand{\PlantStateDimension}{n} \newcommand{\PlantStateRate}{\dot{\mathbf{x}}} \newcommand{\PlantStateSpace}{\mathcal{X}} \newcommand{\PlantTransitionDensity}{p_m} \newcommand{\PlantTransitionKernel}{\mathcal{T}} \newcommand{\PlatformAnnualOperationsCost}{C_{\text{after}}} \newcommand{\PlatformResourceCapacity}{\text{Cap}} \newcommand{\PlatformResourceIndex}{i} \newcommand{\PlatformTotalCost}{C_{\text{platform}}} \newcommand{\PlatformUtilization}{U_{\text{platform}}} \newcommand{\PointClearanceMargin}{d_{\text{margin}}} \newcommand{\PointToPointMessageSize}{n} \newcommand{\PointToPointTransferTime}{T} \newcommand{\PoisonedModel}{f_{\mathcal{S} \cup \mathcal{S}_{\text{poison}}}} \newcommand{\PoisoningDataset}{\mathcal{S}_{\text{poison}}} \newcommand{\PoisoningTargetDataset}{\mathcal{S}_{\text{test}}} \newcommand{\PoissonSubintervalCount}{n} \newcommand{\Policy}{\pi_\theta} \newcommand{\PolicyAction}{a} \newcommand{\PolicyActionStandardDeviation}{\sigma^{\pi}} \newcommand{\PolicyActionWindow}{\mathbf{A}_{t:t+H-1}} \newcommand{\PolicyCheckpoint}{v} \newcommand{\PolicyEnsembleCovariance}{\boldsymbol{\Sigma}_{\pi}} \newcommand{\PolicyEntropy}{\mathcal{H}} \newcommand{\PolicyGaussianMean}{\boldsymbol{\mu}_{\theta}} \newcommand{\PolicyGaussianMeanComponent}{\mu^{\pi}} \newcommand{\PolicyGaussianStandardDeviation}{\boldsymbol{\sigma}_{\theta}} \newcommand{\PolicyGradientBaseline}{b} \newcommand{\PolicyGradientEstimate}{\widehat{g}} \newcommand{\PolicyHistoryActionReturn}{Q^{\pi}} \newcommand{\PolicyHistoryAdvantage}{A^{\pi}} \newcommand{\PolicyImitationLoss}{\mathcal{L}_{\text{policy}}} \newcommand{\PolicyLipschitzBound}{L_{\text{lip}}} \newcommand{\PolicyObservedState}{s} \newcommand{\PolicyPassRate}{f} \newcommand{\PolicyProbabilityRatio}{\rho} \newcommand{\PolicyRemainingReturn}{V^{\pi}} \newcommand{\PolicyRequestLength}{S_{\pi}} \newcommand{\PolicyStateActionDistribution}{\rho_{\pi_\theta}} \newcommand{\PolicyTrajectoryDistribution}{p_\theta} \newcommand{\PolicyTti}{T_{\text{TTI}}} \newcommand{\PolicyUpdateStepTime}{T_{\text{step}}} \newcommand{\PolyakAveragingCoefficient}{\tau} \newcommand{\PolynomialCoefficientVector}{\mathbf{a}} \newcommand{\PolynomialTrajectoryCoefficient}{a} \newcommand{\PomdpActionSet}{\mathsf{A}} \newcommand{\PomdpObservationFunction}{\mathsf{O}} \newcommand{\PomdpObservationSet}{\Omega} \newcommand{\PomdpRewardFunction}{\mathsf{R}} \newcommand{\PomdpStateSpace}{\mathsf{S}} \newcommand{\PomdpTransitionFunction}{\mathsf{T}} \newcommand{\PoolResidentMemory}{M_{\text{pool}}} \newcommand{\PooledAcceptanceProbability}{\bar{p}} \newcommand{\PooledConversionRate}{\hat{p}} \newcommand{\PooledSampleApprovalRate}{\hat{p}} \newcommand{\PopulationStabilityBinCount}{n_{\text{bins}}} \newcommand{\PopulationStabilitySmoothingConstant}{\epsilon_{\text{smooth}}} \newcommand{\PortCycleNetEnergy}{\Delta E} \newcommand{\PortEffort}{\mathbf{F}} \newcommand{\PortFlow}{\dot{\mathbf{x}}} \newcommand{\PortInput}{\mathbf{u}} \newcommand{\PortOutput}{\mathbf{y}} \newcommand{\PortStoredEnergy}{E} \newcommand{\PortVelocity}{v} \newcommand{\Pose}{\mathbf{T}} \newcommand{\PoseTwistPerturbation}{\boldsymbol{\epsilon}} \newcommand{\PoseTwistPerturbationMatrix}{\hat{\boldsymbol{\epsilon}}} \newcommand{\PositionComponent}{p} \newcommand{\PositionConfidenceEllipsoidRadius}{\chi_{3,0.95}} \newcommand{\PositionErrorBound}{E} \newcommand{\PositionErrorCeiling}{e_{\max}} \newcommand{\PositionErrorCovariance}{\mathbf{P}_{pp}} \newcommand{\PositionErrorEnvelope}{e} \newcommand{\PositionLossMask}{m} \newcommand{\PositionUncertaintyRadius}{r} \newcommand{\PositionalTaskTolerance}{r_{\text{tol}}} \newcommand{\PositiveClassInput}{x_{+}} \newcommand{\PositiveIntegerExponent}{n} \newcommand{\PostContactDrivenStroke}{\Delta x_{\text{driven}}} \newcommand{\PostImpactNormalVelocity}{v_n^+} \newcommand{\PostRevocationDelay}{\tau_{\text{rev}}} \newcommand{\PosteriorCovarianceMatrix}{\boldsymbol{\Sigma}_{\text{post}}} \newcommand{\PosteriorDifferentialEntropy}{h_{\text{post}}} \newcommand{\PostprocessingLatency}{L_{\text{lat,post}}} \newcommand{\PotentialOutcome}{Y^{\text{pot}}} \newcommand{\PowerCriticalQuantile}{z_{\beta}} \newcommand{\PowerLimitBase}{a} \newcommand{\PowerRailInductance}{L_{\text{bus}}} \newcommand{\PowerRailResistance}{R_{\text{bus}}} \newcommand{\PoweredHoldCommand}{\mathbf{u}_{\text{hold}}} \newcommand{\PoweredHoldState}{\mathbf{x}_{\text{hold}}} \newcommand{\PoweredServerCount}{N} \newcommand{\PpoClippedSurrogateObjective}{\mathcal{L}^{\text{CLIP}}} \newcommand{\PqApproximateDistance}{\tilde{d}} \newcommand{\PqCentroidCode}{c^{\text{pq}}} \newcommand{\PqSubspaceIndex}{j} \newcommand{\PqSubvectorCount}{m} \newcommand{\PreForwardEnvironmentState}{\sigma_0} \newcommand{\PreImpactNormalVelocity}{v_n^-} \newcommand{\PreImpactSeparationDistance}{d_{\text{sep}}} \newcommand{\PrePivotCatchRate}{v} \newcommand{\PreTriggerWindowDuration}{T_{\text{pre}}} \newcommand{\PreactivationMatrix}{\mathbf{Z}} \newcommand{\PreactivationVector}{\mathbf{z}} \newcommand{\PrebrakeDelay}{\tau_{\text{delay}}} \newcommand{\PrebrakeDelayCeiling}{\tau_{\text{delay},\max}} \newcommand{\PredecessorGraphVertex}{u} \newcommand{\PredicateLipschitzConstant}{L_{\phi}} \newcommand{\PredicateNormalizationScale}{c} \newcommand{\PredictedActionComponent}{\hat{a}} \newcommand{\PredictedClassProbability}{p} \newcommand{\PredictedConfidence}{\hat{p}} \newcommand{\PredictedDecision}{\hat{Y}} \newcommand{\PredictedEnvironmentLatent}{\hat{\mathbf{z}}} \newcommand{\PredictedErrorCovariance}{\mathbf{P}_{k|k-1}} \newcommand{\PredictedForceReading}{\hat{y}} \newcommand{\PredictedOutput}{\hat{\mathbf{y}}} \newcommand{\PredictedOutputComponent}{\hat{y}} \newcommand{\PredictedPolicyAction}{\hat{\mathbf{a}}} \newcommand{\PredictedProtectedAttribute}{\hat{a}} \newcommand{\PredictedRelativeDepth}{z_{\text{pred}}} \newcommand{\PredictedStateEmbedding}{\mathbf{e}_{\text{state}}} \newcommand{\PredictedStateEstimate}{\hat{\mathbf{x}}_{k|k-1}} \newcommand{\PredictionHeadFunction}{g} \newcommand{\PredictionStepIndex}{i} \newcommand{\PredictiveEntropy}{H_{\text{pred}}} \newcommand{\PreemptionFanoutCount}{k} \newcommand{\PreemptionRate}{\lambda_{\text{preempt}}} \newcommand{\PreemptionTaxTime}{T_{\text{preempt}}} \newcommand{\PreferenceMargin}{z} \newcommand{\PreferencePairDataset}{\mathcal{D}} \newcommand{\PreferenceScale}{\beta} \newcommand{\PreferenceScoredPositionSet}{\mathcal{A}} \newcommand{\PreferredReferenceRelativeScore}{\Delta_w} \newcommand{\PreferredTrajectory}{\tau_w} \newcommand{\PrefetchBufferCount}{N_{\text{prefetch}}} \newcommand{\PrefillAllocatedTokenCount}{C} \newcommand{\PrefillArithmeticIntensity}{I_{\text{prefill}}} \newcommand{\PrefillChunkSize}{C_{\text{chunk}}} \newcommand{\PrefillOperations}{O_{\text{prefill}}} \newcommand{\PrefillRequestIndex}{i} \newcommand{\PrefillTime}{T_{\text{prefill}}} \newcommand{\PrefixHitRate}{\rho_{\text{prefix}}} \newcommand{\PregraspPosition}{\mathbf{p}_{\text{pre}}} \newcommand{\PreprocessingLatency}{L_{\text{lat,pre}}} \newcommand{\PreprocessingServiceTime}{T_{\text{preprocessing}}} \newcommand{\PreprocessingThroughput}{R_{\text{preprocessing}}} \newcommand{\PresaturationTorqueCommand}{\boldsymbol{\tau}_{\text{cmd}}} \newcommand{\PreviousLayerWidth}{n_{\ell-1}} \newcommand{\PreviousPeriodCost}{C_{\text{previous}}} \newcommand{\PreviousRangeObservationHistory}{z_{1:t-1}} \newcommand{\PreviousUpdatedErrorCovariance}{\mathbf{P}_{k-1|k-1}} \newcommand{\PreviousUpdatedStateEstimate}{\hat{\mathbf{x}}_{k-1|k-1}} \newcommand{\PrimitiveOperation}{\phi} \newcommand{\PrincipalPointColumn}{c_x} \newcommand{\PrincipalPointRow}{c_y} \newcommand{\PriorCovarianceMatrix}{\boldsymbol{\Sigma}_{\text{prior}}} \newcommand{\PriorDifferentialEntropy}{h_{\text{prior}}} \newcommand{\PriorStandardDeviation}{\sigma_0} \newcommand{\PriorTurnCount}{j} \newcommand{\PrivacyAdditiveSlack}{\delta} \newcommand{\PrivacyBudget}{\epsilon} \newcommand{\PrivacyLossVariable}{\mathcal{L}_{\text{priv}}} \newcommand{\PrivacyNoiseMultiplier}{\sigma} \newcommand{\PrivatizedQuery}{\tilde{f}} \newcommand{\PrivilegeTrapTime}{T_{\text{trap}}} \newcommand{\PrivilegedSimulatorState}{s_{\text{priv}}} \newcommand{\PrivilegedStateDimension}{d_{\text{priv}}} \newcommand{\PrivilegedStateEncoder}{E} \newcommand{\ProbabilityFunction}{p} \newcommand{\ProbabilitySimplex}{\Delta} \newcommand{\ProbedCellCount}{n_{\text{probe}}} \newcommand{\ProcessConditionCheckTime}{T_{\text{proc}}} \newcommand{\ProcessConditionPassProbability}{p_{\text{proc}}} \newcommand{\ProcessNoiseCovariance}{\mathbf{Q}} \newcommand{\ProcessNoiseIntensity}{\mathbf{Q}} \newcommand{\ProcessNoiseVector}{\mathbf{w}} \newcommand{\ProcessedDataVolume}{D_{\text{vol,processed}}} \newcommand{\ProcessedKeyTileIndex}{t} \newcommand{\ProcessedSampleCount}{N_{\text{samples}}} \newcommand{\ProcessingBufferCount}{N_{\text{processing}}} \newcommand{\ProcessingPrice}{R_{\text{process/GB}}} \newcommand{\ProductFactorIndex}{j} \newcommand{\ProductionExecutionCount}{N_{\text{prod}}} \newcommand{\ProductionModelCount}{N_{\text{models}}} \newcommand{\ProductionOnlyFailureCount}{n_{\text{prod}}} \newcommand{\ProfileAccelerationBound}{a_{\max}} \newcommand{\ProfileJerk}{\dot{a}} \newcommand{\ProgramGoodput}{\eta_{\text{program}}} \newcommand{\ProgramInvariantPredicate}{P} \newcommand{\ProgramState}{s} \newcommand{\ProgramStateSpace}{\Sigma} \newcommand{\ProjectedSeamState}{\hat{\mathbf{x}}_{\text{seam}}} \newcommand{\ProjectedTrajectoryRecord}{R} \newcommand{\ProjectedTurnGradientContribution}{Z} \newcommand{\ProjectionBallRadius}{\epsilon} \newcommand{\ProjectionConstraintSet}{\mathcal{C}} \newcommand{\ProjectiveDistanceSample}{s} \newcommand{\ProjectiveRayScale}{\lambda} \newcommand{\ProjectiveScaleFactor}{s} \newcommand{\PromotedFusionInputRank}{r'} \newcommand{\PromptLength}{S_{\text{prompt}}} \newcommand{\PromptToken}{x} \newcommand{\PromptTokensSent}{S_{\text{sent}}} \newcommand{\PropagatedPositionStandardDeviation}{\sigma_p} \newcommand{\PropensityPriorApprovalShape}{a} \newcommand{\PropensityPriorRejectionShape}{b} \newcommand{\ProportionTestStatistic}{z} \newcommand{\ProportionalGainMatrix}{\mathbf{K}_{p}} \newcommand{\ProportionalPotentialEnergy}{\mathcal{L}_{\text{pos}}} \newcommand{\ProposalDeserializationTime}{t_{\text{deser}}} \newcommand{\ProposalExpiryInstant}{t_{\text{valid}}} \newcommand{\ProposalFirstWaypoint}{\mathbf{a}_0} \newcommand{\ProposalLinkTransportTime}{t_{\text{link}}} \newcommand{\ProposalParameterVector}{\boldsymbol{\psi}} \newcommand{\ProposalPayload}{\mathcal{P}} \newcommand{\ProposedAccess}{r} \newcommand{\ProposedContactForce}{F_{\text{nom}}} \newcommand{\ProposedEndEffectorPoseSequence}{\mathbf{X}_{1:H}} \newcommand{\ProposedGripperCommandSequence}{\mathbf{g}_{1:H}} \newcommand{\ProposedJointPositionSequence}{\mathbf{Q}_{1:H}} \newcommand{\ProposedJointVelocitySequence}{\dot{\mathbf{Q}}_{1:H}} \newcommand{\ProposedOperation}{o} \newcommand{\ProposerConfidenceScore}{\hat{p}} \newcommand{\ProposerEvaluationRate}{f} \newcommand{\ProposerInferenceTime}{t_{\text{infer}}} \newcommand{\ProprioceptiveInputSpace}{\mathcal{X}} \newcommand{\ProprioceptiveInputVector}{\mathbf{x}} \newcommand{\ProprioceptiveTokenEmbeddings}{\mathbf{z}_{\text{proprio}}} \newcommand{\ProtectedAttribute}{a} \newcommand{\ProtectedGroupMembership}{G} \newcommand{\ProtectedTrainingRecord}{R} \newcommand{\ProtectionSwitchResistance}{R_{\text{switch}}} \newcommand{\ProtectiveClearanceMargin}{\delta_{\text{margin}}} \newcommand{\ProtectiveSeparationDistance}{S_p} \newcommand{\ProtectiveSpringStiffness}{k_{\text{spring}}} \newcommand{\ProtectiveSpringTravel}{\delta} \newcommand{\ProxyTrajectoryReward}{\hat{R}} \newcommand{\PrunedWeightMatrix}{\hat{\mathbf{W}}} \newcommand{\PruningMask}{\mathbf{M}} \newcommand{\PruningMaskEntry}{M_{i,j}} \newcommand{\PruningThreshold}{\delta_{\text{prune}}} \newcommand{\PsuMttf}{\text{MTTF}_{\text{psu}}} \newcommand{\PtpExchangeTimestamp}{t} \newcommand{\PtpForwardPathDelay}{T_{\text{prop}, M \to S}} \newcommand{\PtpHardwareTimestamp}{t_{\text{PTP}}} \newcommand{\PtpPropagationDelay}{T_{\text{prop}}} \newcommand{\PtpReversePathDelay}{T_{\text{prop}, S \to M}} \newcommand{\PublicationEpoch}{t_{\text{pub}}} \newcommand{\PufChallenge}{C} \newcommand{\PufResponse}{R} \newcommand{\PufResponseBit}{r} \newcommand{\PulseRoundTripTime}{\Delta t} \newcommand{\PureNoiseActionChunk}{\mathbf{A}^N} \newcommand{\PureTransportDelay}{T_d} \newcommand{\PwmPeriod}{T_{\text{pwm}}} \newcommand{\QuadratureAxisInductance}{L_q} \newcommand{\QuadratureAxisVoltage}{v_q} \newcommand{\QualifiedAdmissionRate}{r} \newcommand{\QualityObjective}{S_{\text{quality}}} \newcommand{\QuantileLevel}{u} \newcommand{\QuantileProbabilityLevel}{q} \newcommand{\QuantileThresholdCandidate}{x} \newcommand{\QuantizationBitWidth}{b} \newcommand{\QuantizationBlockSize}{b_{\text{block}}} \newcommand{\QuantizationScale}{s} \newcommand{\QuantizationStep}{\delta} \newcommand{\QuantizationZeroPoint}{z} \newcommand{\QuantizedGradient}{\mathbf{g}_{\text{int8}}} \newcommand{\QuantizedIntegerCode}{x_q} \newcommand{\QuantizedWeightEntry}{W_{ik}} \newcommand{\QuantizerInput}{x} \newcommand{\QuarterCycleCompressionTime}{t_{\text{peak}}} \newcommand{\QueryAxisLabel}{i} \newcommand{\QueryBlockCount}{T_r} \newcommand{\QueryBlockIndex}{i} \newcommand{\QueryBlockSize}{B_r} \newcommand{\QueryBoundaryCount}{S_{\text{eff}}} \newcommand{\QueryBufferPosition}{i} \newcommand{\QueryComponent}{q_{im}} \newcommand{\QueryPrice}{p_{\text{query}}} \newcommand{\QueryProjectionMatrix}{\mathbf{W}_{Q}} \newcommand{\QuerySensitivity}{\Delta} \newcommand{\QuerySourceMatrix}{\mathbf{X}_{Q}} \newcommand{\QueryVector}{\mathbf{q}} \newcommand{\QueryWord}{q} \newcommand{\QueryWordDocumentFrequency}{n} \newcommand{\QueryWordFrequency}{f} \newcommand{\QueryWorkspaceGeneration}{g_q} \newcommand{\QueueArrivalTime}{t_{\text{arr}, i}} \newcommand{\QueueServerCount}{c} \newcommand{\QueueServiceVariationCoefficient}{c_{s}} \newcommand{\QueueSystemCapacity}{K} \newcommand{\QueueWaitTime}{W_{q}} \newcommand{\QueuedJobCount}{N_{\text{queue}}} \newcommand{\QueuedTransactionBytes}{D_{\text{vol}}} \newcommand{\QueuedTransactionCount}{K} \newcommand{\QueuedTransactionSet}{\mathcal{Q}} \newcommand{\QueueingLatency}{L_{\text{lat,queue}}} \newcommand{\QuiescentJunctionTemperature}{T_{\text{j},\text{target}}} \newcommand{\QuiescentSocPower}{P_{\text{base}}} \newcommand{\QuinticBlendCoefficient}{\mathbf{a}} \newcommand{\QuotaReductionSensitivity}{\gamma_{\text{rate}}} \newcommand{\RadarRangeResolution}{\Delta R} \newcommand{\RadialBasisKernelCoefficient}{\gamma} \newcommand{\RadialDistortionCoefficient}{k} \newcommand{\RadialRange}{R} \newcommand{\RadialRangeStandardDeviation}{\sigma_R} \newcommand{\RadiationWavelength}{\lambda} \newcommand{\RailVoltageTolerance}{\delta_{\text{tol}}} \newcommand{\RandomEnvironmentState}{S} \newcommand{\RandomRetainedElementCount}{K_{\text{rand}}} \newcommand{\RandomSampleCollectionSize}{D_{\text{eval,total}}} \newcommand{\RandomVectorDimension}{d} \newcommand{\RandomizationClusterCount}{K} \newcommand{\RandomizedMechanism}{\mathcal{M}} \newcommand{\RandomizedSmoothingNoise}{\boldsymbol{\delta}} \newcommand{\RangeObservation}{z} \newcommand{\RangeObservationHistory}{z_{1:t}} \newcommand{\RankComponentIndex}{s} \newcommand{\RankConstrainedMatrix}{\mathbf{A}} \newcommand{\RankContribution}{x} \newcommand{\RankCountBinaryExponent}{m} \newcommand{\RankFusionSmoothingConstant}{k_{\text{rrf}}} \newcommand{\RankIndex}{i} \newcommand{\RankReductionResult}{y} \newcommand{\RankingFunction}{V} \newcommand{\RatedActuatorTorque}{\tau_{\text{rated}}} \newcommand{\RatedCurrentEquilibriumTemperature}{T_{\text{eq}}} \newcommand{\RatedFatigueLife}{L_{10}} \newcommand{\RatedJointTorque}{\boldsymbol{\tau}_{\text{rated}}} \newcommand{\RatingCategory}{y} \newcommand{\RatioClippingWidth}{\epsilon_{\text{clip}}} \newcommand{\RationaleTokens}{z} \newcommand{\RawClearanceBarrierFunction}{h_{\text{raw}}} \newcommand{\RawDataUploadEnergy}{E_{\text{raw}}} \newcommand{\RawHardwareFaultRate}{\lambda_{\text{raw}}} \newcommand{\RawPipelineInput}{x} \newcommand{\RawRecordCount}{N} \newcommand{\RawSensoryData}{\mathbf{S}} \newcommand{\RayReturnRange}{r_{\text{hit}}} \newcommand{\RayStepCount}{N_{\text{steps}}} \newcommand{\RayTraversalLength}{d_{\text{ray}}} \newcommand{\RayVoxelRange}{r_{\text{voxel}}} \newcommand{\RayleighDissipationFunction}{\mathcal{D}} \newcommand{\ReachabilityCostate}{\mathbf{p}} \newcommand{\ReachabilityHamiltonian}{\mathcal{H}} \newcommand{\ReachabilityHorizonInstant}{t'} \newcommand{\ReachabilityLevelFunction}{V} \newcommand{\ReachabilityTerminalTime}{T} \newcommand{\ReachableArtifactNode}{u} \newcommand{\ReachableDistance}{d_{\text{reach}}} \newcommand{\ReachableWorkspace}{\mathcal{W}} \newcommand{\ReadEndSequenceCount}{c_{\text{end}}} \newcommand{\ReadStartSequenceCount}{c_{\text{start}}} \newcommand{\ReadTimeCeiling}{R} \newcommand{\RealDataset}{\mathcal{S}_{\text{real}}} \newcommand{\RealTimeTaskIndex}{i} \newcommand{\RealityGapVector}{\boldsymbol{\Delta}_{\text{sim2real}}} \newcommand{\RealizedActuatorEffort}{u_{\text{act}}} \newcommand{\RealizedArrivalCount}{n} \newcommand{\RealizedDamageOutcome}{y} \newcommand{\RealizedDampingPower}{P_d} \newcommand{\RealizedDeviceComputeRate}{R} \newcommand{\RealizedFalseAlarmProbability}{\alpha_{*}} \newcommand{\RealizedMissedDegradationProbability}{\beta_{*}} \newcommand{\RealizedServiceTime}{s} \newcommand{\ReceiptSampleIndex}{t_{\text{recv}}} \newcommand{\ReceiveBandwidth}{\text{BW}_{\text{rx}}} \newcommand{\ReceiverOverhead}{o_{\text{recv}}} \newcommand{\ReceiverTimingJitter}{\sigma_{\Delta t}} \newcommand{\RecentUsageShare}{F_{\text{actual}}} \newcommand{\RecommenderItemCount}{N_{\text{items}}} \newcommand{\RecommenderUserCount}{N_{\text{users}}} \newcommand{\ReconcilableToolInterface}{\mathbb{T}_{a}} \newcommand{\ReconstructedGradient}{\hat{\mathbf{g}}} \newcommand{\ReconstructedWeight}{\hat{w}} \newcommand{\RecordAdequacyPassProbability}{p_{\text{record}}} \newcommand{\RecordSizeCeiling}{s_{\max}} \newcommand{\RecordedAuthorityState}{S_{\text{auth}}} \newcommand{\RecoveryCompletionInstant}{t_{\text{rec}}} \newcommand{\RecoveryPoseTolerance}{\epsilon_{\text{sync}}} \newcommand{\RecoveryTargetLogPosition}{j_{\text{target}}} \newcommand{\RecoveryWarmupTime}{T_{\text{warmup}}} \newcommand{\RecurrentHiddenBias}{\mathbf{b}_{\text{h}}} \newcommand{\RecurrentHiddenState}{\mathbf{h}} \newcommand{\RecurrentInputWeights}{\mathbf{W}_{\text{hx}}} \newcommand{\RecurrentOutputWeights}{\mathbf{W}_{\text{yh}}} \newcommand{\RecurrentStateWeights}{\mathbf{W}_{\text{hh}}} \newcommand{\ReduceScatterCompletionTime}{T_{\text{reducescatter}}} \newcommand{\ReducedBoundaryConditionVector}{\mathbf{b}_{\text{red}}} \newcommand{\ReducedImpactMass}{m_{\text{red}}} \newcommand{\ReducibleLoss}{\hat{\mathcal{L}}} \newcommand{\ReductionInputCount}{n} \newcommand{\RedundantComponentCount}{N_{\text{red}}} \newcommand{\RedundantReplicaCount}{k} \newcommand{\RedundantServiceAvailability}{A_{\text{system}}} \newcommand{\ReferenceActionDisadvantage}{A_t^{\pi^*}} \newcommand{\ReferenceAssessedFailure}{F} \newcommand{\ReferenceBinIndex}{b} \newcommand{\ReferenceBinProportion}{E} \newcommand{\ReferenceCostToGo}{Q_t^{\pi^*}} \newcommand{\ReferenceDisagreementProbability}{\mathcal{L}} \newcommand{\ReferenceDistribution}{p} \newcommand{\ReferenceJointAccelerations}{\ddot{\mathbf{q}}^{\text{ref}}} \newcommand{\ReferenceJointPosition}{q_{\text{reference}}} \newcommand{\ReferenceJointPositions}{\mathbf{q}^{\text{ref}}} \newcommand{\ReferenceJointVelocities}{\dot{\mathbf{q}}^{\text{ref}}} \newcommand{\ReferenceLogProbabilitySum}{\Delta_{\text{ref}}} \newcommand{\ReferenceMixingProbability}{\lambda} \newcommand{\ReferenceNextTokenDistribution}{q} \newcommand{\ReferencePosition}{\mathbf{r}} \newcommand{\ReferenceProbabilityRatio}{z} \newcommand{\ReferenceRelativeScore}{\Delta_\theta} \newcommand{\ReferenceRequestLength}{S_{\text{ref}}} \newcommand{\ReferenceSampleEmpiricalCdf}{F} \newcommand{\ReferenceStateDisagreementRate}{\epsilon_E} \newcommand{\ReferenceStateDistribution}{d_{\pi^*}} \newcommand{\ReferenceStepDisagreementRate}{\epsilon} \newcommand{\ReferenceWindingResistance}{R_0} \newcommand{\ReflectedContactForce}{F_{\text{contact}}} \newcommand{\ReflectedRotorInertia}{J_{\text{ref}}} \newcommand{\ReflectedRotorInertiaMatrix}{\mathbf{J}_m} \newcommand{\ReflectedTransmissionInputInertia}{J_{\text{ref,in}}} \newcommand{\ReflectionAngle}{\theta_{\text{refl}}} \newcommand{\ReflexCollisionBudget}{T_{\text{reflex\_budget}}} \newcommand{\RegeneratedBrakingEnergy}{E_{\text{regen}}} \newcommand{\RegenerativeBrakingTorque}{\tau_{\text{brake}}} \newcommand{\RegenerativeRecoveryEfficiency}{\eta_{\text{regen}}} \newcommand{\RegisterSetupTime}{t_{\text{setup}}} \newcommand{\RegisteredDescriptorCount}{n_{\text{reg}}} \newcommand{\RegularizedEulerIntegral}{I} \newcommand{\RejectionDecodeStep}{t_{\text{cut}}} \newcommand{\RelationalSelection}{\sigma} \newcommand{\RelativeContrastTolerance}{\epsilon_{\text{contrast}}} \newcommand{\RelativeDeviationBound}{\delta} \newcommand{\RelativeImprovementFraction}{\delta} \newcommand{\RelativeStandardError}{r} \newcommand{\RelevantRecordSet}{\mathcal{D}^*} \newcommand{\ReliabilityTargetIndex}{i} \newcommand{\ReliableDetectionFrameCount}{N_{\text{frames}}} \newcommand{\RemainingCallCount}{N_{\text{rem}}} \newcommand{\RemainingDistanceEstimate}{\hat{s}} \newcommand{\RemainingExecutionLease}{T_{\text{lease,rem}}} \newcommand{\RemainingHarmDistance}{d_{\text{rem}}} \newcommand{\RemainingIntentTime}{T_{\text{rem}}} \newcommand{\RemainingReturn}{R_{\geq k}} \newcommand{\RemainingUprightDistance}{s} \newcommand{\RemoteHardwareEfficiency}{\eta_{\text{hw,remote}}} \newcommand{\RemotePathTime}{T_{\text{remote}}} \newcommand{\RemotePeakRate}{R_{\text{peak,remote}}} \newcommand{\RenderedPixelColor}{C} \newcommand{\RenewalJitterAllowance}{T_{\text{jitter}}} \newcommand{\RenyiDivergence}{\mathcal{D}_{\alpha_{\text{R}}}} \newcommand{\RenyiOrder}{\alpha_{\text{R}}} \newcommand{\RenyiPrivacyBudget}{\epsilon_{\text{R}}} \newcommand{\RepairAttemptCost}{C_{\text{repair}}} \newcommand{\RepairCap}{K_{\text{repair}}} \newcommand{\RepairCapabilityGrant}{\Gamma_{\text{repair}}} \newcommand{\RepairFirstCost}{C_{\text{repair\ first}}} \newcommand{\RepairPatchArtifact}{P} \newcommand{\RepairSuccessProbability}{p} \newcommand{\RepairTurnLatency}{T_{\text{repair}}} \newcommand{\ReparameterizationNoise}{\boldsymbol{\epsilon}} \newcommand{\RepeatedRunCount}{k} \newcommand{\RepeatedRunMean}{\mu_{\text{run}}} \newcommand{\RepeatedRunStandardDeviation}{\sigma_{\text{run}}} \newcommand{\ReplacementLatency}{L} \newcommand{\ReplacementTimingReserve}{T_{\text{reserve}}} \newcommand{\ReplanRequestOffset}{T_{\text{request}}} \newcommand{\ReplayBuffer}{\mathcal{M}} \newcommand{\ReplayBufferTransitionCount}{n_{\text{replay}}} \newcommand{\ReplayedErrorCovariance}{\mathbf{P}_{t_{\text{recv}}}} \newcommand{\ReplayedStateEstimate}{\hat{\mathbf{x}}_{t_{\text{recv}}}} \newcommand{\ReplicaAvailability}{A_{\text{single}}} \newcommand{\ReplicaColdStartTime}{T_{\text{cold-start}}} \newcommand{\ReplicaCount}{R} \newcommand{\ReplicaModelLoadTime}{T_{\text{load}}} \newcommand{\ReplicaProvisioningTime}{T_{\text{provision}}} \newcommand{\ReplicaWarmupTime}{T_{\text{warmup}}} \newcommand{\ReplyLossProbability}{q_{\text{rep}}} \newcommand{\RepositoryEdgeSourceIndex}{i} \newcommand{\RepositoryEdgeTargetIndex}{j} \newcommand{\RepositoryEdgeWeight}{A} \newcommand{\RepositoryEdgeWeightMatrix}{\mathbf{A}} \newcommand{\RepositoryFileCount}{n} \newcommand{\RepositoryGraphEdgeSet}{E} \newcommand{\RepositoryGraphVertexSet}{V} \newcommand{\RepositoryTransitionMatrix}{\mathbf{P}_{\text{graph}}} \newcommand{\ReprojectionResidual}{\epsilon_{\text{reproj}}} \newcommand{\RepublicationIndex}{k} \newcommand{\RepublicationPeriod}{T_{\text{rep}}} \newcommand{\RequantizationScale}{s_{\text{eff}}} \newcommand{\RequestCompressionRatio}{\gamma_{\text{req}}} \newcommand{\RequestConcurrency}{Q_{\text{req}}} \newcommand{\RequestLossProbability}{q_{\text{req}}} \newcommand{\RequestOutputLength}{S} \newcommand{\RequestPromptTokens}{\mathbf{x}} \newcommand{\RequestQueueTime}{T_{\text{queue}}} \newcommand{\RequestResidenceTime}{W} \newcommand{\RequestResponseTime}{t} \newcommand{\RequestSeenBatchSize}{B_{\text{req}}} \newcommand{\RequestServiceTime}{T_{\text{svc}}} \newcommand{\RequestTimeInSystem}{T_{\text{lat}}} \newcommand{\RequestedActionTap}{a_{\text{req}}} \newcommand{\RequiredClearance}{C_{\text{safe}}} \newcommand{\RequiredComponentCount}{N} \newcommand{\RequiredDetectionRange}{d_{\text{detect}}} \newcommand{\RequiredInputBandwidth}{\text{BW}_{\text{required}}} \newcommand{\RequiredMemoryBandwidth}{\text{BW}_{\text{req}}} \newcommand{\RequiredPremiseClaim}{P} \newcommand{\RequiredPremiseConfidence}{p} \newcommand{\RequiredPremiseCount}{n} \newcommand{\RequiredResultCount}{k} \newcommand{\RequiredScenarioCellCount}{N_{\text{req}}} \newcommand{\RequiredScenarioSet}{\mathcal{S}_{\text{req}}} \newcommand{\RequiredServiceRate}{\mu_{\text{required}}} \newcommand{\RequiredTaskPairCount}{N'} \newcommand{\RequiredUsersPerVariant}{n} \newcommand{\ResampledReplacementToken}{T_4'} \newcommand{\ReservedDeviceMemory}{M_{\text{reserve}}} \newcommand{\ResetCalibrationTime}{t_{\text{calibration}}} \newcommand{\ResetDuration}{t_{\text{rst}}} \newcommand{\ResetLatency}{T_{\text{reset}}} \newcommand{\ResidentStopDistance}{d_{\text{suffix}}} \newcommand{\ResidentWeightMemory}{M_{\text{weights,resident}}} \newcommand{\ResidualAdapterFunction}{A} \newcommand{\ResidualBlockOutput}{\mathbf{y}} \newcommand{\ResidualCorrectionCeiling}{\Delta_{\max}} \newcommand{\ResidualDynamicsPerturbation}{\Delta \mathbf{f}} \newcommand{\ResidualFrequencyError}{\Delta f_{\text{res}}} \newcommand{\ResidualFunction}{\mathcal{F}} \newcommand{\ResidualGate}{g} \newcommand{\ResidualPolicyTorque}{\boldsymbol{\tau}_{\text{res},\theta}} \newcommand{\ResidualSamplingDistribution}{p_{\text{res}}} \newcommand{\ResizedWorkerCount}{N_{\text{new}}} \newcommand{\ResolutionScalingRatio}{\gamma} \newcommand{\ResourceChangeRate}{r_{\text{chg}}} \newcommand{\ResourceCostBudget}{C_{\text{max}}} \newcommand{\ResourceTypeIndex}{r} \newcommand{\ResourceUtilization}{U} \newcommand{\ResponseActionTokens}{a} \newcommand{\ResponseMetadata}{\mathbf{m}} \newcommand{\ResponsePayload}{\mathbf{y}} \newcommand{\ResponseReward}{r} \newcommand{\ResponseThreshold}{\tau} \newcommand{\ResponseTimeDistributionFunction}{F} \newcommand{\ResponseTimeIterationIndex}{\ell} \newcommand{\ResponseTimeStandardDeviation}{\sigma_t} \newcommand{\RestConfiguration}{\mathbf{q}_{\text{rest}}} \newcommand{\RestitutionCoefficient}{e} \newcommand{\RestoreWorkerCount}{w} \newcommand{\RestrictedAccelerationBound}{a_{\text{restricted}}} \newcommand{\RestrictedSpeedBound}{v_{\text{restricted}}} \newcommand{\ResultActionTime}{T_{\text{action}}} \newcommand{\ResumeTime}{T_{\text{resume}}} \newcommand{\RetainedDigestCount}{m} \newcommand{\RetainedGradientElementCount}{K_{\text{top}}} \newcommand{\RetainedProductiveTime}{T_{\text{productive}}} \newcommand{\RetainedSpectralEnergyFraction}{\eta_r} \newcommand{\RetainingCallCount}{H_{\text{rem}}} \newcommand{\RetiringChunkJointVelocity}{\dot{q}_A} \newcommand{\RetiringChunkReferenceState}{\mathbf{x}_A} \newcommand{\RetrainingComputeCost}{C_{\text{compute}}} \newcommand{\RetrainingDeploymentCost}{C_{\text{deployment}}} \newcommand{\RetrainingInterval}{T} \newcommand{\RetrainingRiskCost}{C_{\text{risk}}} \newcommand{\RetrainingRunCost}{C} \newcommand{\RetrainingValidationCost}{C_{\text{validation}}} \newcommand{\RetrievalCollectionSize}{N} \newcommand{\RetrievalCutoffCount}{k} \newcommand{\RetrievalMethodIndex}{i} \newcommand{\RetrievedRecordSet}{\mathcal{R}} \newcommand{\RetryAttemptIndex}{j} \newcommand{\RetryBackoffInterval}{b} \newcommand{\RetryJitterDelay}{d} \newcommand{\ReturnLevel}{z} \newcommand{\ReturnPeriodTrialCount}{T} \newcommand{\ReturnStepOffset}{k} \newcommand{\ReturnedClassLabel}{c} \newcommand{\ReusedPrefixLength}{S_{\text{match}}} \newcommand{\ReverseModeWorkConstant}{C} \newcommand{\ReverseTransitionCovariance}{\boldsymbol{\Sigma}} \newcommand{\ReverseTransitionMean}{\boldsymbol{\mu}_\theta} \newcommand{\RevertFidelity}{\rho_{\text{revert}}} \newcommand{\ReviewerFalseApprovalIndicator}{X} \newcommand{\ReviewerIndex}{j} \newcommand{\RevisionPassProbability}{p_{\text{rev}}} \newcommand{\Reward}{r} \newcommand{\RewardFunction}{r} \newcommand{\RewardModel}{r} \newcommand{\RightEvasionAction}{\mathbf{a}_{\text{right}}} \newcommand{\RightSingularVectorMatrix}{\mathbf{Q}} \newcommand{\RigidGangJob}{J} \newcommand{\RigidImpactInstant}{t_{\text{impact}}} \newcommand{\RigidTransformTranslation}{\mathbf{t}} \newcommand{\RingAllReduceBandwidthTime}{T_{\text{bandwidth}}} \newcommand{\RingAllReduceCompletionTime}{T_{\text{ring}}} \newcommand{\RingAllReduceStartupTime}{T_{\text{latency}}} \newcommand{\RingBufferHorizon}{T_{\text{buffer}}} \newcommand{\RingBufferSlotCount}{N_{\text{buffer}}} \newcommand{\RingStepIndex}{s} \newcommand{\RingTreeCrossoverPayload}{M_{\text{crossover}}} \newcommand{\RmsMotorTorque}{\tau_{\text{rms}}} \newcommand{\RmspropSquaredGradientAverage}{s} \newcommand{\RobotAction}{\mathbf{a}} \newcommand{\RobotApproachSpeed}{v_r} \newcommand{\RobotApproachVelocity}{v_{\text{robot}}} \newcommand{\RobotObservation}{\mathbf{o}} \newcommand{\RobotPosition}{x_{\text{robot}}} \newcommand{\RobotPositionUncertainty}{Z_r} \newcommand{\RobotReactionTime}{T_r} \newcommand{\RobotReactionTravel}{S_r} \newcommand{\RobotStoppingTravel}{S_s} \newcommand{\RobotStructuralStiffness}{k_{\text{robot}}} \newcommand{\RobotTransitVolume}{\mathcal{T}_{\text{robot}}} \newcommand{\RollingShutterDistortion}{\Delta \mathbf{x}} \newcommand{\RollingShutterFrameSkew}{\Delta t_{\text{skew}}} \newcommand{\RollingShutterRowReadout}{t_{\text{row}}} \newcommand{\RolloutAction}{a} \newcommand{\RolloutActionSequence}{\mathbf{a}_{0:T}} \newcommand{\RolloutAdmissionAge}{\Delta T_{\text{rollout}}} \newcommand{\RolloutAssessmentTime}{T_{v}} \newcommand{\RolloutDuration}{T_{\text{rollout}}} \newcommand{\RolloutEnvironmentState}{s} \newcommand{\RolloutHorizon}{T} \newcommand{\RolloutLoss}{\mathcal{L}} \newcommand{\RolloutPolicyParameters}{\theta_{\text{old}}} \newcommand{\RolloutPolicyTokenCount}{N} \newcommand{\RolloutStateSequence}{s_{0:T}} \newcommand{\RolloutStepCount}{N} \newcommand{\RolloutStepIndex}{k} \newcommand{\RolloutSurrogateObjective}{\mathcal{L}} \newcommand{\RolloutTurnIndex}{k} \newcommand{\RooflineRidgePoint}{I_{\text{ridge}}} \newcommand{\RotaryRotationMatrix}{\mathbf{R}} \newcommand{\RotatedActivationMatrix}{\mathbf{X}'} \newcommand{\RotatedWeightMatrix}{\mathbf{W}'} \newcommand{\RotatingBodyAngularSpeed}{\omega} \newcommand{\RotatingBodyInertia}{J} \newcommand{\RotationOriginAcceleration}{\mathbf{a}_O} \newcommand{\RotationOriginVelocity}{\mathbf{v}_O} \newcommand{\RotationalKineticEnergy}{E_{k,\text{rot}}} \newcommand{\RotationalSpringStiffness}{K} \newcommand{\RotorAngularSpeed}{\omega_m} \newcommand{\RotorInertia}{J_{\text{rotor}}} \newcommand{\RotorPolePairCount}{N_{\text{poles}}} \newcommand{\RoundCommunicationVolume}{M_r} \newcommand{\RoundDownloadVolume}{M_{\text{download},r}} \newcommand{\RoundDuration}{t_r} \newcommand{\RoundEmittedTokenCount}{N_{\text{emit}}} \newcommand{\RoundProtocolVolume}{M_{\text{protocol},r}} \newcommand{\RoundRetryVolume}{M_{\text{retry},r}} \newcommand{\RoundSampleCount}{n_{\text{round}}} \newcommand{\RoundUploadVolume}{M_{\text{upload},r}} \newcommand{\RoundedClassProbability}{p^{\text{rnd}}} \newcommand{\RoundingDecimalCount}{d_{\text{dec}}} \newcommand{\RoutedExpertCount}{k_{\text{experts}}} \newcommand{\RouterGateProbability}{p_{\text{gate}}} \newcommand{\RowActivationDelay}{t_{\text{RCD}}} \newcommand{\RowActiveTime}{t_{\text{RAS}}} \newcommand{\RowAttitudeIncrement}{\Delta \boldsymbol{\theta}_{\text{att}}} \newcommand{\RowConflictCount}{N_{\text{conflict}}} \newcommand{\RowCycleTime}{t_{\text{RC}}} \newcommand{\RowExposureStartTime}{t_{\text{scan}}} \newcommand{\RowModeComponentVector}{\mathbf{a}_s} \newcommand{\RowModeFactorMatrix}{\mathbf{A}} \newcommand{\RowModeFactorSlice}{\mathbf{a}} \newcommand{\RowParallelOutputMatrix}{\mathbf{Z}} \newcommand{\RowParallelWeightMatrix}{\mathbf{B}} \newcommand{\RowPrechargeTime}{t_{\text{RP}}} \newcommand{\RunIndexSubset}{J} \newcommand{\RuntimeGoodput}{\eta_{\text{runtime}}} \newcommand{\RuntimeReserveMemory}{M_{\text{runtime}}} \newcommand{\SCurveAccelerationPhaseTime}{T_{\text{acc}}} \newcommand{\SafeApproachSpeedEnvelope}{v_{\text{safe}}} \newcommand{\SafeControlSet}{\mathcal{U}_{\text{safe}}} \newcommand{\SafeOverrideCommand}{\mathbf{u}_{\text{safe}}} \newcommand{\SafeSeparationDistance}{d_{\text{safe}}} \newcommand{\SafeSetProjection}{\mathcal{P}_{\mathcal{C}}} \newcommand{\SafeStateConstraintSet}{\mathcal{X}_{\text{safe}}} \newcommand{\SafeStateSet}{\mathcal{X}_{\text{safe}}} \newcommand{\SafeWorldState}{s_A} \newcommand{\SafeguardSeparationDistance}{S} \newcommand{\SafeguardStoppingTime}{T} \newcommand{\SafetyBoundaryManifold}{\partial \mathcal{C}} \newcommand{\SagaCompensatingStep}{C} \newcommand{\SagaFailedForwardStep}{F_k^{\text{fail}}} \newcommand{\SagaForwardStep}{F} \newcommand{\SagaStepIndex}{k} \newcommand{\SampleAcquisitionPrice}{c_{\text{sample}}} \newcommand{\SampleGradientStandardDeviation}{\sigma} \newcommand{\SampleLabelingPrice}{c_{\text{label}}} \newcommand{\SampleStatistic}{\widehat{\theta}} \newcommand{\SampleStorageSize}{s_{\text{sample}}} \newcommand{\SampledPolicyToken}{w} \newcommand{\SampledSimulationParameterVector}{\tilde{\boldsymbol{\xi}}} \newcommand{\SampledUnit}{y} \newcommand{\SampledUnitCount}{m} \newcommand{\SamplingParameters}{\mathbf{\Theta}_{\text{sample}}} \newcommand{\SamplingPeriod}{T_s} \newcommand{\SamplingRate}{f_s} \newcommand{\SamplingTemperature}{\tau_{\text{temp}}} \newcommand{\SandboxColdBootTime}{T_{\text{cold}}} \newcommand{\SaturatedJointTorque}{\boldsymbol{\tau}_{\text{act}}} \newcommand{\SavedEngineeringTime}{T_{\text{saved}}} \newcommand{\ScalarFieldSize}{k} \newcommand{\ScalarGraphFunction}{f} \newcommand{\ScalarKalmanGain}{g} \newcommand{\ScalarTrackingError}{e} \newcommand{\ScalarTrackingErrorAcceleration}{\ddot{e}} \newcommand{\ScalarTrackingErrorRate}{\dot{e}} \newcommand{\ScaleCoefficient}{A_{\mathcal{L}}} \newcommand{\ScaledBatchSize}{B_{\text{new}}} \newcommand{\ScaledJointStiffnessMatrix}{\tilde{\mathbf{K}}} \newcommand{\ScaledLearningRate}{\eta_{\text{new}}} \newcommand{\ScaledResource}{X} \newcommand{\ScaledSerialFraction}{s} \newcommand{\ScalingCurveWorkerCount}{k} \newcommand{\ScalingEfficiency}{\eta_{\text{scaling}}} \newcommand{\ScalingExponent}{\alpha_{\text{scale}}} \newcommand{\ScalingLawLoss}{\mathcal{L}} \newcommand{\ScanCapabilityGrant}{\Gamma_{\text{scan}}} \newcommand{\ScatteringCrossSection}{\sigma_s} \newcommand{\ScenarioCellRecordCount}{N_{\text{cell}}} \newcommand{\SceneRadiance}{I} \newcommand{\ScheduleFinishTime}{T_{\text{finish}}} \newcommand{\ScheduledSessionDuration}{T_{\text{sched}}} \newcommand{\SchedulingClassWeight}{w} \newcommand{\SchedulingGoodput}{\eta_{\text{scheduling}}} \newcommand{\SchedulingIntervalLength}{t} \newcommand{\ScoreNoiseStandardDeviation}{\sigma} \newcommand{\ScoreNoiseVector}{\mathbf{z}} \newcommand{\ScoreRefreshInterval}{k_{\text{refresh}}} \newcommand{\ScoredPrefixLength}{S_{\text{step}}} \newcommand{\ScoredStepCount}{J} \newcommand{\ScoredStepIndex}{j} \newcommand{\ScoredToolCall}{a} \newcommand{\ScoredToolCallCount}{N} \newcommand{\ScoringErrorStandardDeviation}{\sigma} \newcommand{\ScreenSpaceCovariance}{\boldsymbol{\Sigma}_{2D}} \newcommand{\ScreenedFeature}{x} \newcommand{\ScreenedFeatureSet}{X} \newcommand{\ScreeningMissRate}{m} \newcommand{\SeamActualAccelerations}{\ddot{\mathbf{q}}_{\text{actual}}} \newcommand{\SeamActualConfiguration}{\mathbf{q}_{\text{actual}}} \newcommand{\SeamActualVelocities}{\dot{\mathbf{q}}_{\text{actual}}} \newcommand{\SeamBlendReference}{\mathbf{s}} \newcommand{\SeamBridgeDuration}{T_{\text{blend}}} \newcommand{\SeamBridgePosition}{q_{\text{blend}}} \newcommand{\SeamInstant}{t_{\text{seam}}} \newcommand{\SeamStepTorque}{\tau_{\text{request}}} \newcommand{\SearchBranchingFactor}{b} \newcommand{\SearchDepth}{d_{\max}} \newcommand{\SearchDepthIndex}{d} \newcommand{\SearchQueryEmbedding}{\mathbf{q}} \newcommand{\SecondAdjacentCheckIndex}{b} \newcommand{\SecondAdjacentCheckPassProbability}{p_{b}} \newcommand{\SecondAdjacentCheckSlotTime}{T_{b}} \newcommand{\SecondAtomicGradientUpdate}{B} \newcommand{\SecondCatalogDefinitionCount}{n_{\text{def},B}} \newcommand{\SecondCatalogDefinitionSize}{S_{B}} \newcommand{\SecondClassCoverageFloor}{b} \newcommand{\SecondClientMaskedUpdate}{\mathbf{y}_B} \newcommand{\SecondClientModelParameters}{\theta_B} \newcommand{\SecondComparedGroupLabel}{b} \newcommand{\SecondComparedItem}{j} \newcommand{\SecondFloatingPointAddend}{b} \newcommand{\SecondGroupClassificationThreshold}{\tau_{\text{thr},b}} \newcommand{\SecondGroupQualifiedFraction}{q_b} \newcommand{\SecondGroupSampleApprovalRate}{\hat{p}_b} \newcommand{\SecondGroupSampleSize}{n_b} \newcommand{\SecondJaccardSet}{\mathcal{B}} \newcommand{\SecondRankComputeTime}{T_{\text{rank}_1}} \newcommand{\SecondRaterCategoryFraction}{p_{y,2}} \newcommand{\SecondRingTraceElement}{b} \newcommand{\SecondSummandStandardDeviation}{\sigma_b} \newcommand{\SecondTwinCriticReturnEstimate}{Q_{\phi_2}} \newcommand{\SecurityLabelLattice}{\mathbb{L}} \newcommand{\SecurityLabelSet}{\mathcal{S}_{\text{lab}}} \newcommand{\SelectedActuationCommand}{\mathbf{u}_{\text{act}}} \newcommand{\SelectedDescriptorCount}{n_{\text{sel}}} \newcommand{\SelectedLayerSet}{\mathcal{S}} \newcommand{\SelectionOverheadSize}{S_{\text{sel}}} \newcommand{\SelectionScoreFunction}{f} \newcommand{\SelectionTime}{T_{\text{selection}}} \newcommand{\SelectiveAcceptanceScore}{\kappa} \newcommand{\SelfConsistencySampleCount}{k} \newcommand{\SelfWatchdogTimeout}{T_{\text{self}}} \newcommand{\SenderOverhead}{o_{\text{send}}} \newcommand{\SensingRealityGap}{\Delta_{\text{sens}}} \newcommand{\SensingStageLatency}{T_{\text{sense}}} \newcommand{\SensorErrorBound}{\epsilon} \newcommand{\SensorFeatureTokens}{\mathbf{z}_{\text{sensor}}} \newcommand{\SensorLeverArm}{\mathbf{r}_{P/O}} \newcommand{\SensorLeverArmLength}{r} \newcommand{\SensorLinkTransportTime}{t_{\text{transport}}} \newcommand{\SensorNoiseBound}{\epsilon} \newcommand{\SensorNoiseDensity}{N_{\text{IMU}}} \newcommand{\SensorNoiseStandardDeviation}{\sigma} \newcommand{\SensorObservationFunction}{g} \newcommand{\SensorPatternDictionary}{\mathbf{\Phi}_{\text{dict}}} \newcommand{\SensorPitchAngle}{\theta_{\text{pitch}}} \newcommand{\SensorPointAcceleration}{\mathbf{a}_P} \newcommand{\SensorPointVelocity}{\mathbf{v}_P} \newcommand{\SensorReadoutTime}{t_{\text{readout}}} \newcommand{\SensorReferenceFrame}{\mathcal{F}_{\text{sensor}}} \newcommand{\SensorRowIndex}{y} \newcommand{\SensorTraceMatrix}{\mathbf{X}} \newcommand{\SequenceCounterReading}{S} \newcommand{\SequenceIterationOperations}{c_{\text{decode}}} \newcommand{\SequenceLength}{S} \newcommand{\SequenceToken}{x} \newcommand{\SequentialAttemptIndex}{j} \newcommand{\SequentialBackwardCommunicationTime}{T_{\text{sequential}}} \newcommand{\SequentialCandidateCount}{M} \newcommand{\SequentialCostPerAcceptedTask}{C_{\text{eff,seq}}} \newcommand{\SequentialExecutionTime}{T_{\text{sequential}}} \newcommand{\SequentialLikelihoodRatio}{\Lambda_m} \newcommand{\SequentialLogLikelihoodRatio}{\Lambda_m} \newcommand{\SequentialTestObservation}{X} \newcommand{\SequentialTrialCount}{m} \newcommand{\SerialAutocorrelation}{\rho} \newcommand{\SerialCallCount}{n} \newcommand{\SerialFraction}{r} \newcommand{\SerialLinkClockFrequency}{f_{\text{link}}} \newcommand{\SerialReferenceTime}{T_{\text{serial}}} \newcommand{\SerializationLatency}{L_{\text{lat,serialization}}} \newcommand{\SerializedChunkVolume}{D_{\text{vol,chunk}}} \newcommand{\SerializedTrainingExample}{X} \newcommand{\SeriesComponentCount}{N_{\text{series}}} \newcommand{\SeriesElasticStiffness}{k} \newcommand{\SeriesPsuCount}{n_{\text{psu}}} \newcommand{\ServerAggregationEnergy}{E_{\text{aggregation}}} \newcommand{\ServerIndex}{i} \newcommand{\ServerPower}{P_{\text{server}}} \newcommand{\ServerRoutingWeight}{w} \newcommand{\ServiceRate}{\mu} \newcommand{\ServiceTimeStandardDeviation}{\sigma} \newcommand{\ServiceTimeVariationCoefficient}{c_{s}} \newcommand{\ServingCostPerQuery}{C_{\text{serving}}} \newcommand{\ServingEmpiricalCdf}{F_{P_t}} \newcommand{\ServingPathPredictor}{f_{\text{serve}}} \newcommand{\ServingTransformFunction}{f_{\text{serve}}} \newcommand{\ServingUtilization}{\rho_{\text{serv}}} \newcommand{\ServoFrequencyCorrection}{\Delta f} \newcommand{\SessionAttemptCount}{N_{\text{att}}} \newcommand{\SessionRequestCount}{N_{\text{session}}} \newcommand{\SetMemberPoint}{\mathbf{z}} \newcommand{\SetpointSampleIndex}{k} \newcommand{\SetpointStepInterval}{\Delta t_{\text{step}}} \newcommand{\SettledOperationCharge}{c} \newcommand{\SettledTrajectoryCost}{C} \newcommand{\SetupShareCap}{\phi} \newcommand{\ShadowOnlyFailureCount}{n_{\text{shadow}}} \newcommand{\ShannonEntropy}{H} \newcommand{\ShapedObservationSize}{S_{\text{shaped}}} \newcommand{\ShapedTotalReward}{r_{\text{total}}} \newcommand{\ShapingPotential}{\Phi} \newcommand{\ShardIndex}{s} \newcommand{\ShardReaderCount}{n_{\text{workers}}} \newcommand{\SharedBusBandwidth}{\text{BW}_{\text{bus}}} \newcommand{\SharedHardwareInterferenceDelay}{T_{\text{interf,shared}}} \newcommand{\SharedPoolWorkerCount}{N_{\text{pool}}} \newcommand{\SharedPrefixFraction}{f} \newcommand{\SharedPrefixLength}{S_{\text{prefix}}} \newcommand{\SharedPrefixRequestCount}{n_{\text{req}}} \newcommand{\ShellRelativeThickness}{\epsilon} \newcommand{\ShieldInterceptionCoverage}{c_h} \newcommand{\ShiftedMpcControlSequence}{\tilde{\mathbf{u}}_{0:N_{\text{mpc}}-1}} \newcommand{\ShiftedTestDistribution}{\mathcal{D}'} \newcommand{\ShingleLength}{w} \newcommand{\ShipDecision}{\mathbf{1}_{\text{ship}}} \newcommand{\ShootThroughCurrent}{I_{\text{shoot-through}}} \newcommand{\SiblingPolicyAction}{a'} \newcommand{\SiblingTeamAllocation}{U_{\text{allocated}}} \newcommand{\SightlineRange}{d} \newcommand{\SigmoidFunction}{\sigma} \newcommand{\SignalDimension}{n} \newcommand{\SignalHandoff}{\mathcal{H}} \newcommand{\SignalPropagationDelay}{t_{\text{prop}}} \newcommand{\SignalTrajectory}{s} \newcommand{\SignatureBandCount}{b} \newcommand{\SignificanceCriticalQuantile}{z_{1-\alpha_{\text{sig}}/2}} \newcommand{\SignificanceLevel}{\alpha} \newcommand{\SiliconThermalTimeConstant}{\tau_{\text{th,silicon}}} \newcommand{\SimplexProjection}{\Pi_{\Delta^{K-1}}} \newcommand{\SimulatedPlantDynamics}{f_{\text{sim}}} \newcommand{\SimulatedReturnLevel}{z_{T, \text{sim}}} \newcommand{\SimulatedStateTrajectory}{s_{\text{sim}}} \newcommand{\SimulatedStlRobustness}{\rho_{\text{sim}}} \newcommand{\SimulatedTrajectorySet}{\mathcal{S}_{\text{sim}}} \newcommand{\SimulatedTransportDelay}{T_{d,\text{sim}}} \newcommand{\SimulatedUnbrakedImpactForce}{F_{\text{unbraked,sim}}} \newcommand{\SimulationParameterSet}{\Xi} \newcommand{\SimulationParameterVector}{\boldsymbol{\xi}} \newcommand{\SimulatorStepFunction}{\mathbf{F}} \newcommand{\SingleAgentAcceptanceProbability}{p_{\text{single}}} \newcommand{\SingleDeviceContextLength}{S_{\text{single}}} \newcommand{\SingleDeviceRunTime}{T_1} \newcommand{\SingleJointAccelerationLimit}{\ddot{q}_{i,\max}} \newcommand{\SingleJointInertia}{M} \newcommand{\SingleJointVelocityLimit}{\dot{q}_{i,\max}} \newcommand{\SingleLinkBandwidth}{\text{BW}_{\text{link}}} \newcommand{\SinglePrecisionGemvIntensity}{I_{\text{GEMV, 32-bit}}} \newcommand{\SingleStepImitationError}{\epsilon} \newcommand{\SingularSpectrumMatrix}{\mathbf{\Sigma}} \newcommand{\SisaShardCount}{K} \newcommand{\SisaTrainingShard}{S} \newcommand{\SixthHarmonicTorqueRipple}{\tau_{\text{ripple}}} \newcommand{\SkewDisplacementEnvelope}{d_{\text{skew}}} \newcommand{\SkillSelectionDistribution}{p} \newcommand{\SlaveDriveCount}{S} \newcommand{\SlaveDriveIndex}{s} \newcommand{\SlaveForwardingDelay}{t_{\text{slave},s}} \newcommand{\SlipAccelerationBound}{a_{\text{slip}}} \newcommand{\SlipRegularizationSpeed}{\epsilon_{\text{reg}}} \newcommand{\SloVector}{\mathbf{S}} \newcommand{\SlowdownPersistenceUpdateCount}{K} \newcommand{\SmallChange}{\delta} \newcommand{\SmallPerturbation}{\delta} \newcommand{\SmallestJacobianSingularNumber}{\sigma_{\min}} \newcommand{\SmallestKeySingularNumber}{\sigma_{\min(S, d_{\text{head}})}} \newcommand{\SmoothedClassifier}{g} \newcommand{\SmoothedRunnerUpProbability}{p_{B}} \newcommand{\SmoothedTargetAction}{\tilde{\mathbf{a}}'} \newcommand{\SmoothedTopClassProbability}{p_{A}} \newcommand{\SmoothingNoiseClipBound}{c} \newcommand{\SmoothingNoiseStandardDeviation}{\sigma} \newcommand{\SmoothnessConstant}{L_s} \newcommand{\SnapshotReadTime}{t_{\text{own}}} \newcommand{\SnapshotResetCycleTime}{T_{\text{cycle,snap}}} \newcommand{\SnapshotStepIndex}{s} \newcommand{\SoftExpectedActionReturn}{Q} \newcommand{\SoftExpectedRemainingReturn}{V} \newcommand{\SoftenedStudentProbabilityVector}{\mathbf{p}_{\text{student}}^{(T_{\text{distill}})}} \newcommand{\SoftenedTeacherProbabilityVector}{\mathbf{p}_{\text{teacher}}^{(T_{\text{distill}})}} \newcommand{\SoftmaxFunction}{\sigma} \newcommand{\SoftmaxInputScore}{x} \newcommand{\SoftmaxInputVector}{\mathbf{x}} \newcommand{\SoftmaxNormalizer}{z} \newcommand{\SoftmaxOutputProbability}{p} \newcommand{\SoftmaxRowMaximum}{m} \newcommand{\SoftmaxRowScore}{s} \newcommand{\SoftmaxRunningMaximum}{m} \newcommand{\SoftmaxVectorLength}{n} \newcommand{\SontagStabilizingControl}{\mathbf{u}_{\text{Sontag}}} \newcommand{\SourceCurrent}{I_{\text{source}}} \newcommand{\SourceEventTime}{T_{\text{event}}} \newcommand{\SourceFramePoint}{\mathbf{p}_B} \newcommand{\SourceSinkPathSet}{\Pi} \newcommand{\SourceVoltage}{V_{\text{source}}} \newcommand{\SourceWriteShardGrant}{\Gamma_{c}} \newcommand{\SpareStoppingClearance}{d_{\text{spare}}} \newcommand{\SparseMatrixEntryCount}{n_{\text{elem}}} \newcommand{\SparseMatrixRowCount}{n_{\text{rows}}} \newcommand{\SparseProductInputComponent}{v} \newcommand{\SparseWeightMatrix}{\mathbf{W}_{\text{sparse}}} \newcommand{\SparsityPenaltyWeight}{\lambda_{\text{L1}}} \newcommand{\SparsityRatio}{\rho_{\text{sparse}}} \newcommand{\SpatialClearancePredicate}{P_{\text{clear}}} \newcommand{\SpatialColumnIndex}{j} \newcommand{\SpatialCovarianceEmbedding}{\mathbf{e}_{\Sigma}} \newcommand{\SpatialErrorVector}{\boldsymbol{\epsilon}_{\text{spatial}}} \newcommand{\SpatialHashFunction}{h} \newcommand{\SpatialMemoryMap}{\mathcal{M}} \newcommand{\SpatialPositionCount}{N_{\text{pix}}} \newcommand{\SpatialRowIndex}{i} \newcommand{\SpatialTransformation}{\mathcal{T}} \newcommand{\SpecialEuclideanAlgebra}{\mathfrak{se}(3)} \newcommand{\SpecialEuclideanGroup}{SE(3)} \newcommand{\SpecialOrthogonalGroup}{SO(3)} \newcommand{\SpecializedEnergyProductivity}{\rho_{\text{energy,specific}}} \newcommand{\SpecificHeatCapacity}{c_p} \newcommand{\SpectrallyNormalizedWeightMatrix}{\overline{\mathbf{W}}} \newcommand{\SpeculativeDecodingSpeedup}{S_{\text{spec}}} \newcommand{\SpeculativeDraftLength}{K} \newcommand{\SpeculativeDraftTokenCount}{k} \newcommand{\SpeedAtDetection}{v} \newcommand{\SpeedBound}{v_{\max}} \newcommand{\SpendingWindowDuration}{T_{\text{win}}} \newcommand{\SphereSurfaceArea}{S_{D-1}} \newcommand{\SplineControlPoint}{\mathbf{p}} \newcommand{\SplineDegree}{p} \newcommand{\SplineFinalControlIndex}{L} \newcommand{\SplineKnotTime}{\xi} \newcommand{\SplitAssignmentMap}{s} \newcommand{\SplitMessageCount}{N_{\text{msg}}} \newcommand{\SpotHourlyPrice}{C_{\text{spot}}} \newcommand{\SpringBrakeEngagementTime}{t_{\text{engage}}} \newcommand{\SpringCompressionForce}{F} \newcommand{\SprtExpectedLogIncrement}{m} \newcommand{\SprtLowerBoundary}{\Lambda_{\text{lo}}} \newcommand{\SprtLowerLogBoundary}{b_{\text{low}}} \newcommand{\SprtStoppingSampleCount}{N_{\text{stop}}} \newcommand{\SprtUpperBoundary}{\Lambda_{\text{up}}} \newcommand{\SprtUpperLogBoundary}{u} \newcommand{\SquareGemmDimension}{N} \newcommand{\SquaredGaussianSumQuantile}{\chi} \newcommand{\SquaredPathVelocity}{x} \newcommand{\SquaredRadiusSubstitution}{u} \newcommand{\SquashedActionComponent}{a} \newcommand{\SramCapacity}{M_{\text{SRAM}}} \newcommand{\StabilizationErrorThreshold}{\epsilon_{\text{stable}}} \newcommand{\StabilizationSlewCeiling}{j_{\text{stable}}} \newcommand{\StackedContactForces}{\mathbf{f}_{\text{c}}} \newcommand{\StageConditionalAcceptanceProbability}{q} \newcommand{\StageEpisodeCount}{N_{\text{episodes}}} \newcommand{\StageReachProbability}{r} \newcommand{\StagedDefinitionCount}{n_{\text{def}}} \newcommand{\StagingExhaustionTime}{T_{\text{exhaust}}} \newcommand{\StagingStoreCapacity}{M_{\text{stage}}} \newcommand{\StaleSupportRate}{\epsilon_{\text{stale}}} \newcommand{\StalenessAdjustedLearningRate}{\eta'} \newcommand{\StalenessBound}{s} \newcommand{\StallCounterTorque}{\tau_{\text{stall}}} \newcommand{\StallTravelBound}{d_{\text{F1}}} \newcommand{\StandardDeviationMultiple}{k} \newcommand{\StandardNormalCumulativeDistribution}{\Phi} \newcommand{\StandardNormalQuantile}{z_q} \newcommand{\StandbyInstanceMemory}{M_{\text{standby}}} \newcommand{\StandbyPower}{P_{\text{idle}}} \newcommand{\StandbyReserveCount}{N_{\text{reserve}}} \newcommand{\StandstillSpeedThreshold}{\epsilon_{\text{vel}}} \newcommand{\StateConstraintMatrix}{\mathbf{H}_x} \newcommand{\StateConstraintVector}{\mathbf{b}_x} \newcommand{\StateCotangentSpace}{T_{\mathbf{x}}^*} \newcommand{\StateDimension}{n} \newcommand{\StateDistribution}{d_\pi} \newcommand{\StateEstimate}{\hat{\mathbf{x}}} \newcommand{\StateEstimateDerivative}{\dot{\hat{\mathbf{x}}}} \newcommand{\StateEstimationError}{\mathbf{e}} \newcommand{\StateExposureLevel}{S} \newcommand{\StateNormWeighting}{W} \newcommand{\StateOperation}{f} \newcommand{\StateParameterSensitivity}{\mathbf{S}} \newcommand{\StateRecurrencePeriod}{\ell} \newcommand{\StateScalarFunction}{\phi} \newcommand{\StateSpaceDimension}{d_s} \newcommand{\StateSpaceInputMatrix}{\mathbf{B}} \newcommand{\StateSpaceSystemMatrix}{\mathbf{A}_{\text{sys}}} \newcommand{\StateTokenCount}{K_s} \newcommand{\StateTrackingWeightMatrix}{\mathbf{W}_q} \newcommand{\StateTransitionMatrix}{\mathbf{F}} \newcommand{\StatelessCursorPayload}{d} \newcommand{\StaticBatchingOperations}{O_{\text{traditional}}} \newcommand{\StaticChassisPower}{P_{\text{chassis\_static}}} \newcommand{\StaticDataDistribution}{p_{\text{data}}} \newcommand{\StationaryConditionPolynomial}{P} \newcommand{\StatisticalDivergence}{\mathcal{D}(P_t \| P_0)} \newcommand{\StatisticalFalseNegativeRate}{\beta} \newcommand{\StatisticalHypothesis}{H} \newcommand{\StatisticalPowerQuantile}{z_{1-\beta}} \newcommand{\StatisticalSignificanceLevel}{\alpha_{\text{sig}}} \newcommand{\StatorCoreTemperature}{T_{\text{core}}} \newcommand{\StatorIronTemperature}{T_{\text{iron}}} \newcommand{\StatorThermalCapacitance}{C_{\text{th}}} \newcommand{\StatusPollCount}{N_{\text{poll}}} \newcommand{\SteadyDeceleration}{a} \newcommand{\SteadyStateAvailability}{A} \newcommand{\SteadyStateCurrent}{I_{\text{final}}} \newcommand{\SteadyStateErrorCovariance}{\mathbf{P}_{\text{est}}} \newcommand{\SteadyStateIntegratorState}{\mathbf{z}_{\text{ss}}} \newcommand{\SteadyStateTemperatureRise}{\Delta T_{\max}} \newcommand{\SteadyStateTrackingError}{\mathbf{e}_{\text{ss}}} \newcommand{\SteeringTransferTime}{T} \newcommand{\StepFailureHazard}{a} \newcommand{\StepGenerationCost}{C_{\text{gen}}} \newcommand{\StepGenerationTime}{T_{\text{step}}} \newcommand{\StepIoTime}{T_{\text{IO}}} \newcommand{\StepResponsePhaseLag}{\Delta \phi} \newcommand{\StepSettlingTime}{t_{\text{settle}}} \newcommand{\StepSuccessProbability}{p} \newcommand{\StepTestVoltage}{V_{\text{step}}} \newcommand{\StepTimePenalty}{c_{\text{time}}} \newcommand{\StepTokenLogit}{z_{t,v}} \newcommand{\StereoBaseline}{b} \newcommand{\StereoDisparity}{d} \newcommand{\StlEventuallyDeadline}{\tau} \newcommand{\StlFormula}{\phi} \newcommand{\StlIntervalEnd}{b} \newcommand{\StlIntervalStart}{a} \newcommand{\StlPredicateFunction}{f} \newcommand{\StlRobustness}{\rho} \newcommand{\StlUntilOperator}{\mathcal{U}_{[a, b]}} \newcommand{\StockoutNormalQuantile}{z_{1-\epsilon}} \newcommand{\StockoutProbabilityTarget}{\epsilon} \newcommand{\StopAxisAcceleration}{\ddot{q}_{\text{stop}}} \newcommand{\StopAxisPosition}{q_{\text{stop}}} \newcommand{\StopCompletionInstant}{t_{\text{stop\_end}}} \newcommand{\StopDecisionComputeBound}{T_{\text{compute}}} \newcommand{\StopProgress}{u} \newcommand{\StopSequenceSet}{\mathcal{S}_{\text{stop}}} \newcommand{\StoppingBoundaryClearance}{z} \newcommand{\StoppingCrossoverSpeed}{v^{*}} \newcommand{\StoppingDeadline}{t_{\text{deadline,stop}}} \newcommand{\StoppingDistance}{d_{\text{stop}}} \newcommand{\StoppingDistanceBudget}{d_{\text{budget}}} \newcommand{\StoppingDuration}{T_{\text{stop}}} \newcommand{\StorageAccessFactor}{F_{\text{access}}} \newcommand{\StorageBandwidth}{\text{BW}_{\text{storage}}} \newcommand{\StorageCapacityPrice}{C_{\text{storage/byte-time}}} \newcommand{\StorageEquipmentPower}{P_{\text{storage}}} \newcommand{\StorageFunction}{V} \newcommand{\StorageFunctionDerivative}{\dot{V}} \newcommand{\StorageIngestBandwidth}{\text{BW}_{\text{ingest}}} \newcommand{\StoragePrice}{c_{\text{storage}}} \newcommand{\StorageReadTime}{T_{\text{read}}} \newcommand{\StorageRetentionTime}{T_{\text{months}}} \newcommand{\StorageThroughput}{R_{\text{storage}}} \newcommand{\StoredDataVolume}{D_{\text{vol,store}}} \newcommand{\StoredEmbedding}{\mathbf{z}} \newcommand{\StoredIndexVector}{\mathbf{x}} \newcommand{\StoredSystemState}{s} \newcommand{\StoredTokenVolume}{V} \newcommand{\StragglerStepTime}{T_{\text{step,straggler}}} \newcommand{\StreamAcceptanceProbability}{p} \newcommand{\StreamingEndToEndLatency}{T_{\text{streaming}}} \newcommand{\StrideCheckpointCount}{N} \newcommand{\StrongConfigurationAttemptCost}{c_{\text{big}}} \newcommand{\StrongConfigurationPassProbability}{p_{\text{big}}} \newcommand{\StruckObjectMass}{m_{\text{obj}}} \newcommand{\StructuredSparsityGroupSize}{m_{\text{group}}} \newcommand{\StructuredSparsityNonzeroCount}{n_{\text{keep}}} \newcommand{\StudentProbabilityVector}{\mathbf{p}_{\text{student}}} \newcommand{\StuffBitTime}{t_{\text{stuff},i}} \newcommand{\SubgroupIndex}{g} \newcommand{\SubgroupSampleSize}{n} \newcommand{\SubintervalFailureProbability}{p} \newcommand{\SublevelSetThreshold}{c} \newcommand{\SubsequentArrivalTime}{\tau} \newcommand{\SubsetAllPassIndicator}{I_J^{\text{all}}} \newcommand{\SubsetAnyPassIndicator}{I_J} \newcommand{\SubsetDatasetSize}{D_{\text{subset}}} \newcommand{\SuccessCountIndex}{j} \newcommand{\SuccessLowerConfidenceLimit}{p_{\text{lower}}} \newcommand{\SuccessfulTrialCount}{k} \newcommand{\SuccessorActionVector}{\mathbf{a}'} \newcommand{\SuccessorPlanningState}{s'} \newcommand{\SuffixFoldTime}{T_{\text{fold}}} \newcommand{\SummaryOutputLength}{K_{\text{sum}}} \newcommand{\SummaryTokenEmbedding}{\mathbf{x}_{\text{class}}} \newcommand{\SupervisoryMtbi}{T_{\text{MTBI}}} \newcommand{\SupervisoryTakeoverLatency}{T_{\Sigma}} \newcommand{\SupplyVoltage}{V} \newcommand{\SupportPolygon}{\mathcal{P}_{\text{support}}} \newcommand{\SupportSetSize}{n_{\text{shot}}} \newcommand{\SustainableAttemptRate}{R_{\text{attempt}}} \newcommand{\SustainableCopperLossPower}{P_{\text{loss,ss}}} \newcommand{\SustainableHoldingTorque}{\tau_{\text{hold,max}}} \newcommand{\SustainedComputeRate}{R_{\text{sustained}}} \newcommand{\SustainedDropoutFrameCount}{N_{\text{drop}}} \newcommand{\SustainedMemoryBandwidth}{\text{BW}_{\text{mem}}} \newcommand{\SweepCandidateCostFraction}{f} \newcommand{\SweepCandidateCount}{k} \newcommand{\SwitchBreakdownVoltage}{V_{\text{breakdown}}} \newcommand{\SwitchInputCapacitance}{C_{\text{iss}}} \newcommand{\SwitchOnResistance}{R_{\text{ds(on)}}} \newcommand{\SwitchRadix}{k} \newcommand{\SwitchedCapacitance}{C} \newcommand{\SwitchingActivityFactor}{\alpha} \newcommand{\SwitchingEnergy}{E} \newcommand{\SwitchingTransitionTime}{t_{\text{sw}}} \newcommand{\SymbolicPlanningState}{s} \newcommand{\SymmetricClippingThreshold}{\alpha_{\text{sym}}} \newcommand{\SymmetricMessageOverhead}{o} \newcommand{\SymplecticEulerTransitionMatrix}{\mathbf{A}_{\text{symp}}} \newcommand{\SyncMessageInterval}{\Delta t_{\text{interval}}} \newcommand{\SyncPairingDisplacement}{\Delta \mathbf{x}_{\text{sync}}} \newcommand{\SynchronizationBlackout}{T_{\text{blackout}}} \newcommand{\SynchronizationClearanceMargin}{d_{\text{sync}}} \newcommand{\SynchronizationErrorBound}{\epsilon_{\text{sync}}} \newcommand{\SynchronizationStepIndex}{k} \newcommand{\SynchronizationTime}{T_{\text{sync}}} \newcommand{\SyntheticDataGenerator}{G_{\theta}} \newcommand{\SyntheticDataset}{\mathcal{S}_{\text{synthetic}}} \newcommand{\SystemCallFilterTime}{T_{\text{filter}}} \newcommand{\SystemCallOverheadTime}{T_{\text{syscall}}} \newcommand{\SystemFailureRate}{\lambda_{\text{system}}} \newcommand{\SystemHazardRate}{\lambda_{\text{system}, h}} \newcommand{\SystemInstructionTokenCount}{S_{\text{system}}} \newcommand{\SystemMatrixPowerIndex}{k} \newcommand{\SystemMemoryBandwidth}{\text{BW}_{\text{system}}} \newcommand{\SystemMtbf}{\text{MTBF}_{\text{system}}} \newcommand{\SystemReliability}{R_{\text{system}}} \newcommand{\TableRowCount}{N} \newcommand{\TailByteAllocation}{M_{\text{tail}}} \newcommand{\TailMomentOrder}{k} \newcommand{\TailPerformanceMetric}{X} \newcommand{\TailRequestLatency}{T_{\text{lat},\text{p99}}} \newcommand{\TailRequestSeenBatchSize}{B_{\text{req,p99}}} \newcommand{\TailRiskDistributionFunction}{F} \newcommand{\TailRiskObservation}{X} \newcommand{\TailRiskObservationLevel}{x} \newcommand{\TailShapeParameter}{\xi} \newcommand{\TailStepIoTime}{T_{\text{IO,p99}}} \newcommand{\TailSupportUpperEndpoint}{x_F} \newcommand{\TakeoverInstant}{t_{\text{takeover}}} \newcommand{\TakeoverResponseTime}{T_{\Sigma, 1}} \newcommand{\TakeoverStateVisitationDistribution}{p^{\text{takeover}}} \newcommand{\TakeoverTrackingError}{\mathbf{e}_{\text{track}}} \newcommand{\TangentDirection}{\mathbf{v}} \newcommand{\TangentSeedVector}{\dot{\mathbf{x}}} \newcommand{\TangentialContactShear}{\mathbf{f}_{k, \parallel}} \newcommand{\TangentialSpeed}{v_{\text{tangential}}} \newcommand{\TapeIntermediateResult}{y_{\text{tape}}} \newcommand{\TargetAcceptanceDifference}{\Delta} \newcommand{\TargetActionReturnEstimate}{\hat{Q}} \newcommand{\TargetActorParameters}{\theta'} \newcommand{\TargetBatchSize}{B_{\text{target}}} \newcommand{\TargetCompletionQuantile}{q} \newcommand{\TargetComputeRate}{R_{\text{ops}}} \newcommand{\TargetComputeTimeFraction}{\eta_{\text{target}}} \newcommand{\TargetCriticParameters}{\phi'} \newcommand{\TargetCriticReturnEstimate}{Q_{\phi'}} \newcommand{\TargetDeterministicPolicy}{\mu_{\theta'}} \newcommand{\TargetError}{\epsilon} \newcommand{\TargetExceedanceProbability}{\epsilon} \newcommand{\TargetFairShare}{F_{\text{target}}} \newcommand{\TargetFramePoint}{\mathbf{p}_A} \newcommand{\TargetHazardRate}{\lambda_{\text{target}}} \newcommand{\TargetImpedanceDampingMatrix}{\mathbf{D}_d} \newcommand{\TargetImpedanceInertiaMatrix}{\mathbf{M}_d} \newcommand{\TargetImpedanceStiffnessMatrix}{\mathbf{K}_d} \newcommand{\TargetInferenceLatency}{L_{\text{lat,target}}} \newcommand{\TargetKeyAttentionWeight}{\alpha_{\text{target}}} \newcommand{\TargetKeyLogit}{z_{\text{target}}} \newcommand{\TargetModelDistribution}{p_{\theta}} \newcommand{\TargetOrientation}{\mathbf{R}_{\text{target}}} \newcommand{\TargetPlantState}{\mathbf{x}_{f}} \newcommand{\TargetPolicyEntropy}{\overline{\mathcal{H}}} \newcommand{\TargetPose}{\mathbf{T}_{\text{target}}} \newcommand{\TargetPosition}{\mathbf{p}_{\text{target}}} \newcommand{\TargetPositionComponent}{p_{\text{target},i}} \newcommand{\TargetRange}{z} \newcommand{\TargetRepeatedRunConsistency}{p_{\text{target}}} \newcommand{\TargetSamplingDistribution}{p} \newcommand{\TargetServingUtilization}{\rho_{\text{target}}} \newcommand{\TargetSmoothingNoise}{\boldsymbol{\epsilon}} \newcommand{\TargetSmoothingNoiseStandardDeviation}{\sigma} \newcommand{\TargetTokenVolume}{W} \newcommand{\TargetTravelDistance}{d} \newcommand{\TargetTrialFailureProbability}{p_{*}} \newcommand{\TargetTrialSuccessProbability}{p_{\text{target}}} \newcommand{\TargetTwinCriticReturnEstimate}{Q_{\phi'_i}} \newcommand{\TargetUnitQuaternion}{\mathbf{q}_{\text{quat,target}}} \newcommand{\TargetUpdateCount}{K_{\text{target}}} \newcommand{\TargetUtilizationBatchSize}{B_{\text{util}}} \newcommand{\TargetXPosition}{x} \newcommand{\TargetYPosition}{p_y} \newcommand{\TargetZPosition}{z} \newcommand{\TaskAcceptanceLabel}{x} \newcommand{\TaskBlockingTime}{B} \newcommand{\TaskContract}{\mathcal{C}} \newcommand{\TaskContractGoal}{G} \newcommand{\TaskCost}{C_{\text{task}}} \newcommand{\TaskCount}{K} \newcommand{\TaskCoverageProbability}{Q} \newcommand{\TaskCriticalSections}{cs} \newcommand{\TaskDerivativeGain}{\mathbf{K}_{d,i}} \newcommand{\TaskDistance}{d_{\text{task}}} \newcommand{\TaskEnvironment}{\mathcal{E}_{\text{env}}} \newcommand{\TaskErrorTolerance}{\tau_{\text{tol}}} \newcommand{\TaskGroupMap}{g} \newcommand{\TaskIndex}{i} \newcommand{\TaskInterferenceTime}{I} \newcommand{\TaskJacobian}{\mathbf{J}} \newcommand{\TaskJacobianDerivative}{\dot{\mathbf{J}}} \newcommand{\TaskJacobianPseudoinverse}{\mathbf{J}^\dagger} \newcommand{\TaskKinematicMap}{f} \newcommand{\TaskLoss}{\mathcal{L}_{\text{task}}} \newcommand{\TaskLossGradient}{\nabla \mathcal{L}} \newcommand{\TaskPeriod}{T} \newcommand{\TaskProportionalGain}{\mathbf{K}_{p,i}} \newcommand{\TaskReadCount}{n_{\text{read}}} \newcommand{\TaskRelativeDeadline}{D} \newcommand{\TaskRelevantOutcome}{\mathbf{Y}_{\text{task}}} \newcommand{\TaskReward}{r_{\text{task}}} \newcommand{\TaskSetUtilization}{U} \newcommand{\TaskSpaceAcceleration}{\ddot{\mathbf{x}}} \newcommand{\TaskSpaceCoordinates}{\mathbf{x}} \newcommand{\TaskSpaceDimension}{m} \newcommand{\TaskSpaceReference}{\mathbf{x}_i^{\text{ref}}} \newcommand{\TaskSpaceReferenceAcceleration}{\ddot{\mathbf{x}}^{\text{ref}}} \newcommand{\TaskSpaceReferenceVelocity}{\dot{\mathbf{x}}^{\text{ref}}} \newcommand{\TaskSpaceVelocity}{\dot{\mathbf{x}}} \newcommand{\TaskSpecificLoss}{\mathcal{L}} \newcommand{\TaskStateTokenCount}{S_{\text{state}}} \newcommand{\TaskToleranceSemiAxes}{\mathbf{r}} \newcommand{\TaskToleranceSemiAxis}{r} \newcommand{\TaskTurnCost}{C_{\text{call}}} \newcommand{\TaskWeight}{w} \newcommand{\TasksPerComparisonArm}{N_{\text{arm}}} \newcommand{\TeacherProbabilityVector}{\mathbf{p}_{\text{teacher}}} \newcommand{\TeamQuotaCap}{Q_{\text{team}}} \newcommand{\TelemetryFlushTime}{t_{\text{telemetry\_flush}}} \newcommand{\TelemetryFreshnessBound}{\Delta t_{\text{fresh}}} \newcommand{\TelemetryRetentionDuration}{T_{\text{retention}}} \newcommand{\TelemetrySamplingFrequency}{f_{\text{sample}}} \newcommand{\TelemetrySeriesCount}{N_{\text{series}}} \newcommand{\TelemetryTickInterval}{\Delta t_s} \newcommand{\TeleoperationCommandLatency}{t_{\text{cmd}}} \newcommand{\TeleoperationDownlinkTime}{T_{\text{downlink}}} \newcommand{\TeleoperationRoundTripLatency}{t_{\text{loop}}} \newcommand{\TeleoperationRoundTripTime}{T_{\text{RTT}}} \newcommand{\TeleoperationStateVisitationDistribution}{p^{\pi_{\text{teleop}}}} \newcommand{\TeleoperationUplinkTime}{T_{\text{uplink}}} \newcommand{\TeleoperationVideoLatency}{T_{\text{video}}} \newcommand{\TemperatureDualObjective}{\mathcal{L}} \newcommand{\TemperatureStepSize}{\lambda_{\alpha}} \newcommand{\TemplateSharedMemory}{M_{\text{template}}} \newcommand{\TemporalDifferenceResidual}{\delta} \newcommand{\TemporalEnsemblingWeight}{w_i} \newcommand{\TenantIndex}{i} \newcommand{\TenantResourceAllocation}{a_{i,r}} \newcommand{\TensorAxisCount}{n} \newcommand{\TensorColumnModeSize}{J} \newcommand{\TensorCoreAccumulatorMatrix}{\mathbf{C}_{\text{acc}}} \newcommand{\TensorCoreLeftInput}{\mathbf{A}_{\text{tc}}} \newcommand{\TensorCoreOutputMatrix}{\mathbf{D}_{\text{tc}}} \newcommand{\TensorCoreRightInput}{\mathbf{B}_{\text{tc}}} \newcommand{\TensorDepthModeSize}{T} \newcommand{\TensorElementCount}{N} \newcommand{\TensorModeIndex}{n_{\text{mode}}} \newcommand{\TensorParallelDegree}{N_{\text{TP}}} \newcommand{\TensorParallelLayerTime}{T_{\text{inference}}} \newcommand{\TensorRowModeSize}{I} \newcommand{\TerminalFeedbackGain}{\mathbf{K}_f} \newcommand{\TerminalInvariantSet}{\mathcal{X}_{f}} \newcommand{\TerminalPlantState}{\mathbf{x}_N} \newcommand{\TerminalTransitTime}{t_{\text{transit}}} \newcommand{\TerminalVoltageLimit}{V_{\max}} \newcommand{\TerminationProtocol}{\kappa} \newcommand{\TestExample}{z_{\text{test}}} \newcommand{\TestFamilySize}{k} \newcommand{\TestPhaseCapabilityGrant}{\Gamma_{\text{test}}} \newcommand{\TestsDirectoryShardGrant}{\Gamma_{a}} \newcommand{\TextTokenCount}{S_{\text{text}}} \newcommand{\TextTokenEmbeddings}{\mathbf{z}_{\text{text}}} \newcommand{\ThermalExpansionCoefficient}{\alpha} \newcommand{\ThermalPenaltyWeight}{\lambda_T} \newcommand{\ThermalPowerLimit}{P_{\text{thermal}}} \newcommand{\ThermalResistance}{R_{\text{th}}} \newcommand{\ThermalTimeConstant}{\tau_{\text{th}}} \newcommand{\ThirdAtomicGradientUpdate}{C} \newcommand{\ThirdFloatingPointAddend}{c} \newcommand{\ThirdRingTraceElement}{c} \newcommand{\ThresholdExceedanceCount}{N_u} \newcommand{\ThresholdExceedanceRate}{\zeta_u} \newcommand{\ThresholdExcess}{y} \newcommand{\ThresholdExcessVariable}{Y} \newcommand{\ThresholdedSparsityRatio}{\rho_{\text{sparse},\delta}} \newcommand{\ThrottleClearTemperature}{T_{\text{clear}}} \newcommand{\ThrottleOnsetJunctionTemperature}{T_{\text{j},\text{start}}} \newcommand{\ThrottleRecoveryTime}{t_{\text{recov}}} \newcommand{\ThrottleTripTemperature}{T_{\text{trip}}} \newcommand{\ThrottledClockFrequency}{f_{\text{throt}}} \newcommand{\TickCycleCount}{N} \newcommand{\TickIndex}{n} \newcommand{\TickPeriodJitterBound}{J_{\text{phase}}} \newcommand{\TieredRequestServiceTime}{T} \newcommand{\TightenedDiscreteSafeSet}{\mathcal{C}_{\text{discrete}}} \newcommand{\TileRowIndex}{m} \newcommand{\TiltAngle}{\theta_{\text{tilt}}} \newcommand{\Time}{T} \newcommand{\TimeBudgetUsedFraction}{\rho_T} \newcommand{\TimeInstant}{t} \newcommand{\TimeScaleSeparationRatio}{\epsilon} \newcommand{\TimeStepIndex}{t} \newcommand{\TimeToResult}{T_{\text{result}}} \newcommand{\TimeToTarget}{T_{\text{target}}} \newcommand{\TimeoutSafetyMultiplier}{k} \newcommand{\TimeoutTrialCount}{n_{\text{timeout}}} \newcommand{\TimerClockPeriod}{T_{\text{timer\_clk}}} \newcommand{\TimestampJitterDelay}{\delta_{\text{jitter}}} \newcommand{\TimestampQuantizationBound}{T_{\text{quant}}} \newcommand{\TimestampSkew}{t_{\text{skew}}} \newcommand{\TimingJitter}{\sigma_{\text{jitter}}} \newcommand{\TimingRealityGap}{\Delta_{\text{lat}}} \newcommand{\TokenAuthenticationCode}{\sigma} \newcommand{\TokenAveragedBatchLoss}{\mathcal{L}_{\text{token}}} \newcommand{\TokenBucketDepth}{b} \newcommand{\TokenBucketRefillRate}{r} \newcommand{\TokenBudgetUsedFraction}{\rho_N} \newcommand{\TokenByteDecoding}{s} \newcommand{\TokenCaveat}{c} \newcommand{\TokenDispatchTime}{T_{\text{dispatch}}} \newcommand{\TokenIdentifierSize}{s_{\text{id}}} \newcommand{\TokenIndex}{t} \newcommand{\TokenPrefix}{x_{<t}} \newcommand{\TokenVocabulary}{\mathcal{V}} \newcommand{\TokenizationTime}{T_{\text{tokenize}}} \newcommand{\ToleranceEllipsoidMatrix}{\mathbf{E}} \newcommand{\ToleratedFailureProbability}{\epsilon} \newcommand{\ToleratedPositionError}{\epsilon_{\text{pos}}} \newcommand{\TombstonedNodeSet}{V_{\text{tomb}}} \newcommand{\TombstonedRecordFraction}{\rho_{\text{dead}}} \newcommand{\ToolArgumentKey}{p} \newcommand{\ToolCallCategory}{y} \newcommand{\ToolCallCost}{c_{\text{tool}}} \newcommand{\ToolCallIndex}{i} \newcommand{\ToolCallReadSet}{R} \newcommand{\ToolCallWriteSet}{W} \newcommand{\ToolCartesianPose}{\mathbf{x}} \newcommand{\ToolCartesianVelocity}{\dot{\mathbf{x}}} \newcommand{\ToolCenterPointAxis}{\hat{\mathbf{z}}_{\text{TCP}}} \newcommand{\ToolCenterPointFrame}{\mathcal{F}_{\text{TCP}}} \newcommand{\ToolCenterPointPose}{\mathbf{T}_{\text{TCP}}} \newcommand{\ToolCenterPointPosition}{\mathbf{p}_{\text{TCP}}} \newcommand{\ToolClearanceDistance}{d_{\text{tool}}} \newcommand{\ToolDeclarationTokenCount}{S_{\text{tools}}} \newcommand{\ToolDescriptorSize}{S_{\text{desc}}} \newcommand{\ToolPlanarAbscissa}{x} \newcommand{\ToolPlanarOrdinate}{y} \newcommand{\ToolPositionError}{e_{\text{tool}}} \newcommand{\ToolServiceCount}{N_{\text{tool}}} \newcommand{\ToolSpeedLimit}{v_{\text{TCP}}} \newcommand{\ToolTargetState}{s} \newcommand{\ToolTime}{T_{\text{tool}}} \newcommand{\ToolTipPose}{\mathbf{T}_{\text{tool}}} \newcommand{\TopClassCount}{k} \newcommand{\TopMagnitudeIndicator}{\mathbf{1}_{|\mathbf{g}| \geq |\mathbf{g}|_{(K_{\text{top}})}}} \newcommand{\TopTokenSampleCount}{k} \newcommand{\TopologicalPlaceNode}{p^{\text{place}}} \newcommand{\TopologyEndpointCount}{N} \newcommand{\TorqueCutoffCommand}{\mathbf{u}_{\text{cutoff}}} \newcommand{\TorqueEffortPenaltyWeight}{\lambda_{\tau}} \newcommand{\TorqueProducingCurrent}{i_q} \newcommand{\TorqueRateLimit}{\dot{\tau}_{\max}} \newcommand{\TorqueRegularizationWeight}{w_\tau} \newcommand{\TorqueSlewPenaltyWeight}{\lambda_{\dot{\tau}}} \newcommand{\TorusFirstAxisChipCount}{X} \newcommand{\TorusSecondAxisChipCount}{Y} \newcommand{\TorusThirdAxisChipCount}{Z} \newcommand{\TotalChipPower}{P_{\text{total}}} \newcommand{\TotalCollisionQueryTime}{T_{\text{query\_total}}} \newcommand{\TotalDataCost}{C_{\text{total}}} \newcommand{\TotalDelayPhaseShift}{\phi_{\text{total}}} \newcommand{\TotalEnergy}{E_{\text{total}}} \newcommand{\TotalExecutedTrialCount}{N_{\text{total}}} \newcommand{\TotalFailureRecoveryTime}{T_{\text{recovery}}} \newcommand{\TotalGateCharge}{Q_g} \newcommand{\TotalInterventionCount}{N_{\text{int}}} \newcommand{\TotalKineticEnergy}{E_{k,\text{total}}} \newcommand{\TotalMemoryFootprint}{M_{\text{total}}} \newcommand{\TotalPipelineLatency}{L_{\text{lat,total}}} \newcommand{\TotalTrainingRunCost}{C_{\text{total}}} \newcommand{\TraceCrashCount}{N_{\text{crash}}} \newcommand{\TraceCrashIndex}{i} \newcommand{\TraceDecay}{\lambda} \newcommand{\TraceIntermediateAdjoint}{\bar{v}} \newcommand{\TraceIntermediateTangent}{\dot{v}} \newcommand{\TraceIntermediateVariable}{v} \newcommand{\TrackIndex}{i} \newcommand{\TrackLastUpdateTime}{t_{\text{last}}} \newcommand{\TrackLossTimeout}{T_{\text{lost}}} \newcommand{\TrackPositionDeviation}{\sigma_{\text{track}}} \newcommand{\TrackPredictedErrorCovariance}{\mathbf{P}_{t|t-1}} \newcommand{\TrackPredictedStateEstimate}{\hat{\mathbf{x}}_{t|t-1}} \newcommand{\TrackedEvidenceHorizon}{\tau_{\text{ev,tracked}}} \newcommand{\TrackerFrameIndex}{t} \newcommand{\TrackingErrorAcceleration}{\ddot{\mathbf{e}}} \newcommand{\TrackingErrorAllowance}{\epsilon_{\text{pos}}} \newcommand{\TrackingErrorBound}{\epsilon_{\text{track}}} \newcommand{\TrackingErrorDistance}{e} \newcommand{\TrackingErrorRate}{\dot{\mathbf{e}}} \newcommand{\TrackingErrorVector}{\mathbf{e}} \newcommand{\TrackingRelaxationSlack}{\delta} \newcommand{\TrackingSlackPenaltyWeight}{p} \newcommand{\TrackingStartInstant}{t_{\text{start}}} \newcommand{\TractionLimitedDeceleration}{a} \newcommand{\TractiveForce}{F_x} \newcommand{\TrainableStateMemory}{M_{\text{train}}} \newcommand{\TrainerUpdateTime}{T_{\text{train}}} \newcommand{\TrainingCompute}{O_{\text{train}}} \newcommand{\TrainingCost}{C_{\text{train}}} \newcommand{\TrainingDataset}{D} \newcommand{\TrainingDistribution}{P_0} \newcommand{\TrainingEmpiricalCdf}{F_{P_0}} \newcommand{\TrainingExample}{z} \newcommand{\TrainingFailureCount}{N_{\text{failures}}} \newcommand{\TrainingFeatureMean}{\mu} \newcommand{\TrainingFeatureStandardDeviation}{\sigma} \newcommand{\TrainingLabelMask}{\mathcal{M}_{\text{train}}} \newcommand{\TrainingLoss}{\mathcal{L}_{\text{train}}} \newcommand{\TrainingPathPredictor}{f_{\text{train}}} \newcommand{\TrainingPipelineFunction}{f} \newcommand{\TrainingRunCount}{N_{\text{runs}}} \newcommand{\TrainingSampleThroughput}{R_{\text{train}}} \newcommand{\TrainingSchemaKeySet}{\mathcal{K}_{\text{train}}} \newcommand{\TrainingServingSkew}{S_{\text{skew}}} \newcommand{\TrainingSplitFraction}{f_{\text{train}}} \newcommand{\TrainingStepCount}{K} \newcommand{\TrainingStepEnergy}{E_{\text{step}}} \newcommand{\TrainingStepOperations}{O_{\text{step}}} \newcommand{\TrainingStepTime}{T_{\text{step}}} \newcommand{\TrainingThroughput}{R_{\text{training}}} \newcommand{\TrainingTime}{T_{\text{train}}} \newcommand{\TrainingTransformFunction}{f_{\text{train}}} \newcommand{\Trajectory}{\tau} \newcommand{\TrajectoryAction}{a} \newcommand{\TrajectoryAdmissionRate}{\lambda_{\text{traj}}} \newcommand{\TrajectoryBudget}{\mathbf{B}} \newcommand{\TrajectoryCallCount}{N_{\text{call}}} \newcommand{\TrajectoryCategoryIndex}{j} \newcommand{\TrajectoryCheckpointCount}{N_{\text{ckpt}}} \newcommand{\TrajectoryDivergenceResidual}{e_{\text{div}}} \newcommand{\TrajectoryDuration}{T_{\text{traj}}} \newcommand{\TrajectoryGoodput}{\mathcal{G}} \newcommand{\TrajectoryObservation}{o} \newcommand{\TrajectoryOptimizationObjective}{\mathcal{U}} \newcommand{\TrajectoryRecordDuration}{T_{\text{record}}} \newcommand{\TrajectoryRecordFrame}{\mathcal{F}} \newcommand{\TrajectoryReturn}{R} \newcommand{\TrajectoryReward}{R} \newcommand{\TrajectorySampleCount}{N} \newcommand{\TrajectoryState}{s} \newcommand{\TrajectoryStateSpace}{\mathcal{S}} \newcommand{\TrajectoryTimeLimit}{T_{\max}} \newcommand{\TrajectoryTokenCost}{C_{\text{session}}} \newcommand{\TrajectoryTokenLimit}{N_{\max}} \newcommand{\TrajectoryTurnLimit}{H_{\max}} \newcommand{\TransceiverDelay}{t_{\text{transceiver}}} \newcommand{\TransductionInstant}{t_{\text{transduction}}} \newcommand{\TransferBufferCount}{N_{\text{transfer}}} \newcommand{\TransferDiscrepancyBound}{\epsilon_{\text{gap}}} \newcommand{\TransferTimeForPayload}{T_{\text{transfer}}} \newcommand{\TransferredDataVolume}{D_{\text{vol,transfer}}} \newcommand{\TransformGraph}{\mathcal{G}} \newcommand{\TransformGraphEdgeSet}{\mathcal{E}} \newcommand{\TransformGraphFrame}{\mathcal{F}} \newcommand{\TransformGraphVertexSet}{\mathcal{V}} \newcommand{\TransformRotationBlock}{\mathbf{R}_{AB}} \newcommand{\TransformTranslationBlock}{\mathbf{t}_{AB}} \newcommand{\TransformationInputCount}{k} \newcommand{\TransformedCartesianPosition}{\mathbf{p}'} \newcommand{\TransformedHomogeneousPointCoordinates}{\tilde{\mathbf{p}}'} \newcommand{\TransistorThresholdVoltage}{V_{\text{th}}} \newcommand{\TransitionStorageSize}{b_{\text{tr}}} \newcommand{\TranslationComponent}{v} \newcommand{\TranslationVector}{\mathbf{v}} \newcommand{\TranslationalDriftError}{e_{\text{trans}}} \newcommand{\TranslationalJerk}{j} \newcommand{\TranslationalKineticEnergy}{E_{k,\text{trans}}} \newcommand{\TransmissionEnergyPerByte}{E_{\text{tx}}} \newcommand{\TransmissionInputInertia}{J_{\text{in}}} \newcommand{\TransmissionTorsionalStiffness}{K_{\text{joint}}} \newcommand{\TransverseStandardDeviation}{\sigma_\perp} \newcommand{\TravelPosition}{x} \newcommand{\TraverseDistance}{d} \newcommand{\TreatedNeighborFraction}{e} \newcommand{\TreatmentAssignment}{w} \newcommand{\TreatmentConversionRate}{\hat{p}_B} \newcommand{\TreatmentSampleSize}{m_B} \newcommand{\TreeAllReduceCompletionTime}{T_{\text{tree}}} \newcommand{\TreeLikeAllReduceTime}{T_{\text{tree-like}}} \newcommand{\TreeSearchExplorationWeight}{c_{\text{explore}}} \newcommand{\TreeSearchLeafScore}{V} \newcommand{\TreeSearchMeanReturn}{Q} \newcommand{\TreeSearchPriorDistribution}{p_{\text{prior}}} \newcommand{\TreeSearchVisitCount}{N_{\text{visit}}} \newcommand{\TrialCampaignWallTime}{T_{\text{wall}}} \newcommand{\TrialCompletionIndicator}{Y} \newcommand{\TrialCondition}{c} \newcommand{\TrialControlStepCount}{N_{\text{steps}, i}} \newcommand{\TrialCount}{N} \newcommand{\TrialFailureIndicator}{x} \newcommand{\TrialFailureProbability}{p_{\text{fail}}} \newcommand{\TrialIndex}{n} \newcommand{\TrialInterventionCount}{n_{\text{int}}} \newcommand{\TrialLoadReversalCount}{n_{\text{rev}}} \newcommand{\TrialPassProbability}{p_{\text{trial}}} \newcommand{\TrialPathDistance}{d} \newcommand{\TrialResetLatency}{T_{\text{reset}}} \newcommand{\TrialResetTime}{t_{\text{reset}}} \newcommand{\TrialRolloutTime}{t_{\text{rollout}}} \newcommand{\TrialRunTime}{t_{\text{run}}} \newcommand{\TrialSuccessProbability}{p} \newcommand{\TriggeredWindowArrivalCount}{Q_{\text{arr}}} \newcommand{\TrueClearance}{C_{\text{true}}} \newcommand{\TrueLabelComponent}{y} \newcommand{\TrueOutcome}{Y} \newcommand{\TrueOutcomeLevel}{v} \newcommand{\TrueReferentScore}{c_{y_j}} \newcommand{\TruncatedDistanceSample}{d_{\mu}} \newcommand{\TruncatedKeyApproximation}{\hat{\mathbf{K}}_r} \newcommand{\TruncatedKeyLeftSingularMatrix}{\mathbf{U}_r} \newcommand{\TruncatedKeyRightSingularMatrix}{\mathbf{V}_r} \newcommand{\TruncatedKeySpectrumMatrix}{\mathbf{\Sigma}_r} \newcommand{\TruncationBandVolume}{V_{\text{band}}} \newcommand{\TruncationRank}{r} \newcommand{\TruthInstrumentSet}{\mathcal{I}_{\text{truth}}} \newcommand{\TsdfAccumulatedDistance}{D} \newcommand{\TsdfAccumulatedWeight}{W} \newcommand{\TsdfObservationWeight}{w} \newcommand{\TsdfTruncationBand}{\mu_{\text{tsdf}}} \newcommand{\TsdfWeightCap}{W_{\max}} \newcommand{\TuckerCoreTensor}{\mathcal{G}} \newcommand{\TurnAppendLength}{\Delta S_{\text{turn}}} \newcommand{\TurnBoundaryDelay}{t_{\text{boundary}}} \newcommand{\TurnBudgetUsedFraction}{\rho_H} \newcommand{\TurnContext}{c} \newcommand{\TurnContributionDeviationBound}{\sigma} \newcommand{\TurnCovarianceBoundScale}{C} \newcommand{\TurnCovarianceDecayRatio}{\alpha_{\text{corr}}} \newcommand{\TurnFailureRate}{\lambda_{\text{fail}}} \newcommand{\TurnGeneratedTokenCount}{n_{\text{gen}}} \newcommand{\TurnHorizon}{H} \newcommand{\TurnIndex}{t} \newcommand{\TurnInputTokenCost}{C_{\text{in}}} \newcommand{\TurnOffGateCurrent}{I_{g,\text{off}}} \newcommand{\TurnOffGateResistance}{R_{g,\text{off}}} \newcommand{\TurnOnGateResistance}{R_{g,\text{on}}} \newcommand{\TurnOutputTokenCost}{C_{\text{out}}} \newcommand{\TurnPayloadProbability}{q_{\text{turn}}} \newcommand{\TurnReadCount}{r} \newcommand{\TurnReconstructionTime}{T_{\text{recon}}} \newcommand{\TurnReexecutionTime}{T_{\text{exec}}} \newcommand{\TurnReward}{r} \newcommand{\TurnSandboxCost}{C_{\text{sandbox}}} \newcommand{\TurnStateGrowth}{s_{\text{turn}}} \newcommand{\TurnToolFeeCost}{C_{\text{tools}}} \newcommand{\TustinEigenvalue}{\lambda_{\text{Tustin}}} \newcommand{\TustinTransitionMatrix}{\mathbf{A}_{\text{Tustin}}} \newcommand{\TwinCriticReturnEstimate}{Q_{\phi_i}} \newcommand{\TwistCoordinates}{\boldsymbol{\xi}} \newcommand{\TwistCovarianceMatrix}{\boldsymbol{\Sigma}_{\boldsymbol{\xi}}} \newcommand{\TwistMatrix}{\hat{\boldsymbol{\xi}}} \newcommand{\TwistRotationAngle}{\theta_{\text{rot}}} \newcommand{\TwistRotationCoordinates}{\boldsymbol{\omega}} \newcommand{\TwistTranslationMatrix}{\mathbf{V}} \newcommand{\TwistWedgeOperator}{\wedge} \newcommand{\UnacceptedTaskMeanCost}{C_{\text{fail}}} \newcommand{\UnassistedCompletionCount}{N_{\text{unassisted}}} \newcommand{\UnassistedSuccessIndicator}{A} \newcommand{\UnbiasedAngularBrakingDeceleration}{\alpha_{\text{nom}}} \newcommand{\UnbrakedImpactForce}{F_{\text{unbraked}}} \newcommand{\UncachedInputTokenCount}{n_{\text{in}}} \newcommand{\UncachedPromptLength}{S_{\text{new}}} \newcommand{\UncertainScenarioParameters}{x} \newcommand{\UnconstrainedCallLatency}{T_{\text{free}}} \newcommand{\UnconstrainedParseFailureRate}{p_{\text{err}}} \newcommand{\UndampedNaturalFrequency}{\omega_n} \newcommand{\UnfoldedConvolutionOutput}{\mathbf{Y}_{\text{col}}} \newcommand{\UnfoldedPatchMatrix}{\mathbf{X}_{\text{col}}} \newcommand{\UniformDistribution}{\mathcal{U}} \newcommand{\UniformLoopTurnCost}{C_{\text{turn}}} \newcommand{\UnitAliasMultiplier}{k} \newcommand{\UnitImpulseFunction}{\delta} \newcommand{\UnitQuaternion}{\mathbf{q}_{\text{quat}}} \newcommand{\UnitQuaternionScalarComponent}{q_w} \newcommand{\UnitQuaternionSphere}{S^3} \newcommand{\UnitQuaternionXComponent}{q_x} \newcommand{\UnitQuaternionYComponent}{q_y} \newcommand{\UnitQuaternionZComponent}{q_z} \newcommand{\UnitTemperatureProbabilityVector}{\mathbf{p}_{\tau_{\text{temp}}=1}} \newcommand{\UnlabeledPool}{U} \newcommand{\UnloadedTickExecutionTime}{t_{\text{unloaded}}} \newcommand{\UnmitigatedHardwareFaultRate}{\lambda_{\text{unmitigated}}} \newcommand{\UnmodeledCommandPathDelay}{\Delta t_{\text{bus}}} \newcommand{\UnobservableForceOffset}{\Delta} \newcommand{\UnobservedUnknownSpace}{\mathcal{M}_{\text{unknown}}} \newcommand{\UnprojectionJacobian}{\mathbf{J}_{\text{unproj}}} \newcommand{\UnrecoverableDamageCost}{C_{\text{blast}}} \newcommand{\UnreservedStopDelay}{\delta} \newcommand{\UnscaledAttentionScoreMatrix}{\mathbf{A}} \newcommand{\UnshardedLocalExecutionTime}{T_{\text{compute}}} \newcommand{\UnsquashedLatentAction}{\mathbf{u}} \newcommand{\UntilPrefixTime}{t''} \newcommand{\UntrackedEvidenceHorizon}{\tau_{\text{ev,untracked}}} \newcommand{\UpdatedErrorCovariance}{\mathbf{P}_{k|k}} \newcommand{\UpdatedModelParameters}{\theta_{\text{new}}} \newcommand{\UpdatedParameterSubset}{\theta_{\text{updated}}} \newcommand{\UpdatedSoftmaxRunningMaximum}{m'} \newcommand{\UpdatedStateEstimate}{\hat{\mathbf{x}}_{k|k}} \newcommand{\UpperRatioClippingWidth}{\epsilon_{\text{high}}} \newcommand{\UprightPosition}{\mathbf{p}_{\text{upright}}} \newcommand{\UprightRange}{r} \newcommand{\UpstreamGradientElement}{\bar{y}} \newcommand{\UpstreamGradientVector}{\mathbf{v}} \newcommand{\UpstreamStageLatency}{X} \newcommand{\UsableDemonstrationYield}{Y_{\text{usable}}} \newcommand{\UsefulAcceleratorHourCost}{C_{\text{useful}}} \newcommand{\UsefulComputeFraction}{f_{\text{compute}}} \newcommand{\UsefulModelFlops}{O_{\text{useful}}} \newcommand{\UsefulStepCount}{N} \newcommand{\UsefulTrainingTime}{T_{\text{useful}}} \newcommand{\UserConnectionSet}{\mathcal{N}} \newcommand{\UserSpaceSetupTime}{T_{\text{user}}} \newcommand{\UvloThresholdVoltage}{V_{\text{UVLO}}} \newcommand{\VacuumLightSpeed}{c} \newcommand{\ValidCandidateRate}{p_{\text{valid}}} \newcommand{\ValidTokenSet}{\mathcal{V}_{\text{valid}}} \newcommand{\ValidatedMotionDuration}{T_{\text{yield}}} \newcommand{\ValidatedProposalEvent}{e_{\text{prop}}} \newcommand{\ValidationDataset}{\mathcal{D}_{\text{val}}} \newcommand{\ValidationGateThreshold}{\gamma_{\text{gate}}} \newcommand{\ValidationLoss}{\mathcal{L}_{\text{val}}} \newcommand{\VanishingTimeOffset}{\epsilon} \newcommand{\VariationalDistribution}{q_\phi} \newcommand{\VariationalParameters}{\phi} \newcommand{\VectorAngle}{\phi} \newcommand{\VectorElementCount}{N_{\text{vec}}} \newcommand{\Velocity}{\mathbf{v}} \newcommand{\VelocitySaturationExponent}{\alpha} \newcommand{\VerificationCheckCost}{C_{\text{ver}}} \newcommand{\VerificationCheckCount}{K} \newcommand{\VerificationPoolCapacity}{\mu_{\text{verify}}} \newcommand{\VerificationScheduleCost}{C} \newcommand{\VerificationTrialCount}{n_{\text{trial}}} \newcommand{\VerificationTrialIndex}{j} \newcommand{\VerificationTrialTime}{T_{\text{trial}}} \newcommand{\VerifiedDemonstrationDataset}{\mathcal{D}_{\text{verified}}} \newcommand{\VerifierFalseAcceptanceRate}{\epsilon_{\text{FA}}} \newcommand{\VerifierFalseRejectionRate}{\epsilon_{\text{FR}}} \newcommand{\VerifierPassProbability}{q} \newcommand{\VerifierPrecision}{\Pi_{V}} \newcommand{\VerifierTimeout}{T_{\text{out}}} \newcommand{\VerifierTrueAcceptanceRate}{u} \newcommand{\VerifierVerdict}{V} \newcommand{\VersionSkewBound}{k_{\text{skew}}} \newcommand{\VertexSlotTime}{d} \newcommand{\VerticalFocalLength}{f_y} \newcommand{\VibrationFrequency}{f_{\text{vib}}} \newcommand{\VirtualAccelerationCommand}{\ddot{\mathbf{q}}^*} \newcommand{\VirtualDampingMatrix}{\mathbf{D}_{\text{virt}}} \newcommand{\VirtualPipelineStagesPerDevice}{V} \newcommand{\ViscousDampingMatrix}{\mathbf{D}} \newcommand{\VisionBackboneTime}{t_{\text{backbone}}} \newcommand{\VisionTokenEmbeddings}{\mathbf{z}_{\text{vision}}} \newcommand{\VisualConditioningEmbedding}{\mathbf{E}} \newcommand{\VisualEncodingTime}{t_{\text{vis}}} \newcommand{\VitImagePatch}{\mathbf{x}_p} \newcommand{\VitPatchProjectionWeights}{\mathbf{W}_{\text{patch}}} \newcommand{\VitPatchSize}{p_{\text{patch}}} \newcommand{\VitPatchTokenEmbedding}{\mathbf{z}} \newcommand{\VocabularyToken}{v} \newcommand{\VocabularyTokenLogit}{o} \newcommand{\VolumetricFlowRate}{\dot{V}} \newcommand{\VoxelBlockCoordinate}{\mathbf{b}} \newcommand{\VoxelBlockEdgeLength}{L_{\text{blk}}} \newcommand{\VoxelCenterPosition}{\mathbf{p}_{\text{vox}}} \newcommand{\VoxelIndex}{i} \newcommand{\VoxelOccupancyState}{m} \newcommand{\VoxelPitch}{r} \newcommand{\VoxelStorageSize}{s_{\text{voxel}}} \newcommand{\VoxelUpdateTraffic}{s_{\text{rw}}} \newcommand{\WarmupEpochCount}{N_{\text{warmup}}} \newcommand{\WarmupStepCount}{W} \newcommand{\WatchdogClockFrequency}{f_{\text{wdg}}} \newcommand{\WatchdogCounterReading}{W} \newcommand{\WatchdogEarliestServiceTime}{T_{\text{lower}}} \newcommand{\WatchdogLatestServiceTime}{T_{\text{upper}}} \newcommand{\WatchdogLowerWindowCount}{W_{\text{lower}}} \newcommand{\WatchdogReloadCount}{W_{\text{init}}} \newcommand{\WatchdogServiceTime}{t_{\text{service}}} \newcommand{\WatchdogToken}{T} \newcommand{\WatchdogUpperWindowCount}{W_{\text{upper}}} \newcommand{\WaveImpedance}{b} \newcommand{\WeightElementStorageSize}{s_{\text{elem,W}}} \newcommand{\WeightMatrix}{\mathbf{W}} \newcommand{\WeightMatrixColumnCount}{n} \newcommand{\WeightMatrixEntry}{W_{ij}} \newcommand{\WeightMatrixRowCount}{m} \newcommand{\WeightMemory}{M_{\text{weights}}} \newcommand{\WeightOnlyStepTime}{t} \newcommand{\WeightPenaltyStrength}{\lambda_{\text{reg}}} \newcommand{\WeightQuantizationScale}{s_W} \newcommand{\WeightRangeBound}{W_{\text{max}}} \newcommand{\WeightStreamingDecodeTime}{T_{\text{decode}}} \newcommand{\WeightVector}{\mathbf{w}} \newcommand{\WeightedNormArgument}{\mathbf{z}} \newcommand{\WheelAngularSpeed}{\omega} \newcommand{\WheelDiameter}{D_{\text{wheel}}} \newcommand{\WheelInertia}{J_{\text{wheel}}} \newcommand{\WheelNormalLoad}{F_z} \newcommand{\WheelRadius}{r} \newcommand{\WheelRevolutionCount}{N_{\text{rev}}} \newcommand{\WheelTrackWidth}{b} \newcommand{\WhiteNoiseProcess}{\mathcal{WN}} \newcommand{\WholeBodyDecisionVariables}{\mathbf{z}} \newcommand{\WholeRepositoryShardGrant}{\Gamma_{b}} \newcommand{\WidthMultiplier}{w_{\text{mult}}} \newcommand{\WidthScalingRatio}{\beta} \newcommand{\WilsonIntervalCenter}{\tilde{p}} \newcommand{\WindingCoreThermalResistance}{R_{\text{th,wc}}} \newcommand{\WindingCurrent}{I} \newcommand{\WindingJouleHeat}{E_{\text{thermal}}} \newcommand{\WindingLossPower}{P_{\text{loss}}} \newcommand{\WindingTemperature}{T_{\text{winding}}} \newcommand{\WindingTemperatureLimit}{T_{\text{limit}}} \newcommand{\WindingTerminalVoltage}{V_{\text{terminal}}} \newcommand{\WindingThermalCapacitance}{C_{\text{wind}}} \newcommand{\WindowArrivalCount}{k} \newcommand{\WindowArrivalOffset}{t} \newcommand{\WindowSpendingLimit}{C_{\text{win}}} \newcommand{\WithinTaskRunStandardDeviation}{\sigma_{\text{run}}} \newcommand{\WorkedTraceProduct}{c} \newcommand{\WorkedTraceProductAdjoint}{\bar{c}} \newcommand{\WorkedTraceSine}{b} \newcommand{\WorkedTraceSineAdjoint}{\bar{b}} \newcommand{\WorkedTraceSquare}{a} \newcommand{\WorkedTraceSquareAdjoint}{\bar{a}} \newcommand{\WorkerBaseCommitHash}{h_{\text{base}}} \newcommand{\WorkerCandidateCommitHash}{h_{\text{worker}}} \newcommand{\WorkerCompletionDistribution}{F} \newcommand{\WorkerCompletionTime}{T} \newcommand{\WorkerCount}{N_{\text{workers}}} \newcommand{\WorkerDelayProbability}{p} \newcommand{\WorkerIndex}{k} \newcommand{\WorkerMinibatch}{B} \newcommand{\WorkerOverheadSlope}{\gamma} \newcommand{\WorkerTransformTime}{T_{\text{transform}}} \newcommand{\WorkerWrittenFileCount}{w} \newcommand{\WorkloadMeanOutputLength}{\mu} \newcommand{\WorkloadRequestIndex}{i} \newcommand{\WorkspaceExtentX}{L_x} \newcommand{\WorkspaceExtentY}{L_y} \newcommand{\WorkspaceExtentZ}{L_z} \newcommand{\WorkspaceRestoreTime}{T_{\text{ws}}} \newcommand{\WorkspaceVolume}{V_{\text{ws}}} \newcommand{\WorldBaseTransform}{\mathbf{T}_{WB}} \newcommand{\WorldBodyTransform}{\mathbf{T}_{wb}} \newcommand{\WorldFramePoint}{\mathbf{p}_{\text{world}}} \newcommand{\WorldLidarTransform}{\mathbf{T}_{wl}} \newcommand{\WorldMapTransform}{\mathbf{T}_{\text{world}}^{\text{map}}} \newcommand{\WorldPointCovariance}{\boldsymbol{\Sigma}_{\text{world}}} \newcommand{\WorldReferenceFrame}{\mathcal{F}_W} \newcommand{\WorldStateSpace}{\mathcal{S}} \newcommand{\WorldToCameraRotation}{\mathbf{R}_{CW}} \newcommand{\WorldToCameraTransform}{\mathbf{T}_{CW}} \newcommand{\WorldToCameraTranslation}{\mathbf{t}_{CW}} \newcommand{\WornPlantTransitionDistribution}{p_{n \gg 1}} \newcommand{\WorseArmSuccessProbability}{p_{\text{low}}} \newcommand{\WorstCaseExecutionTime}{C} \newcommand{\WorstCaseInterruptLatency}{t_{\text{irq,lat}}} \newcommand{\WorstCasePermissionCycleTime}{T_{\text{exec}}} \newcommand{\WorstCaseResponseTime}{R} \newcommand{\WristAngularVelocity}{\boldsymbol{\omega}_{\text{wrist}}} \newcommand{\WristCameraEmbedding}{\mathbf{e}_{\text{wrist}}} \newcommand{\WristLinearVelocity}{\mathbf{v}_{\text{wrist}}} \newcommand{\WristObjectTransform}{\mathbf{T}_{\text{wrist} \leftarrow \text{object}}} \newcommand{\WristSkewDisplacement}{\Delta \mathbf{p}_{\text{skew}}} \newcommand{\XAxisAngularRate}{\omega_x} \newcommand{\XAxisRotationCoordinate}{\omega_x} \newcommand{\XForceCeiling}{F_x} \newcommand{\XPositionErrorEnvelope}{e_x} \newcommand{\XTaskToleranceSemiAxis}{r_x} \newcommand{\XTorqueCeiling}{\tau_x} \newcommand{\YAxisAngularRate}{\omega_y} \newcommand{\YAxisRotationCoordinate}{\omega_y} \newcommand{\YForceCeiling}{F_y} \newcommand{\YPositionErrorEnvelope}{e_y} \newcommand{\YTaskToleranceSemiAxis}{r_y} \newcommand{\YTorqueCeiling}{\tau_y} \newcommand{\YawRate}{\omega_z} \newcommand{\YoshikawaManipulability}{w} \newcommand{\ZAxisRotationCoordinate}{\omega_z} \newcommand{\ZForceCeiling}{F_z} \newcommand{\ZPositionErrorEnvelope}{e_z} \newcommand{\ZTaskToleranceSemiAxis}{r_z} \newcommand{\ZTorqueCeiling}{\tau_z} \newcommand{\ZTransformVariable}{z} \newcommand{\ZeroEntryIndicator}{\mathbf{1}_{\{(\mathbf{W}_{\text{sparse}})_{ij} = 0\}}} \newcommand{\ZeroFailureTrialCount}{n} \newcommand{\ZeroFailureUpperConfidenceLimit}{p_{\text{fail, upper}}^{95\%}} \newcommand{\ZeroMatrix}{\mathbf{0}} \newcommand{\ZeroMomentPoint}{\mathbf{p}_{\text{ZMP}}} \newcommand{\ZeroVector}{\mathbf{0}} \newcommand{\ZohHoldTravel}{d_{\text{ZOH}}} \newcommand{\ZohPhaseShift}{\phi_{\text{ZOH}}} \newcommand{\ZohTransportDelay}{\tau_{\text{ZOH}}} \newcommand{\AuthorityLevels}{\AuthorityExposureLevel} \newcommand{\BreakEvenTaskVolume}{\BreakEvenTaskCount} \newcommand{\PertokenPricesCache}{\CachedInputTokenPrice} \newcommand{\ContentionAndCoherencyCoefficientsTwo}{\CoherencyCoefficient} \newcommand{\CoherencyContentionCoefficient}{\CoherencyCoefficient} \newcommand{\TaskDeadline}{\CompletionDeadline} \newcommand{\Deadline}{\CompletionDeadline} \newcommand{\Confidentiality}{\ConfidentialityLabel} \newcommand{\ContentionAndCoherencyCoefficients}{\ContentionCoefficient} \newcommand{\CostPerAcceptedTaskEff}{\CostPerAcceptedTask} \newcommand{\DuplicateeffectProbability}{\DuplicateEffectProbability} \newcommand{\EstimatedAdvantageK}{\EstimatedHistoryAdvantage} \newcommand{\EstimatedValueK}{\EstimatedRemainingReturn} \newcommand{\ExpectedIrreversibleLossA}{\ExpectedIrreversibleLoss} \newcommand{\PertokenPricesIn}{\InputTokenPrice} \newcommand{\CohensKappa}{\InterAnnotatorAgreement} \newcommand{\KvBlockSizeBlk}{\KvBlockSize} \newcommand{\MaskedFinetuningLossSft}{\MaskedFinetuningLoss} \newcommand{\ValidityIntervalOfAMemoryEntryBirth}{\MemoryEntryBirthGeneration} \newcommand{\ValidityIntervalOfAMemoryEntryDeath}{\MemoryEntryDeathGeneration} \newcommand{\MemoryHeldDuringAWait}{\MemoryHoldDuringWait} \newcommand{\OptimalCheckpointIntervalCkpt}{\OptimalCheckpointInterval} \newcommand{\PertokenPricesOut}{\OutputTokenPrice} \newcommand{\PertokenDecodeTime}{\PerTokenDecodeTime} \newcommand{\TokenLossMask}{\PositionLossMask} \newcommand{\LossMaskT}{\PositionLossMask} \newcommand{\ValidityIntervalOfAMemoryEntryQ}{\QueryWorkspaceGeneration} \newcommand{\RequestAndReplylossProbabilitiesTwo}{\ReplyLossProbability} \newcommand{\RequestAndReplylossProbabilities}{\RequestLossProbability} \newcommand{\EnvironmentStateK}{\RolloutEnvironmentState} \newcommand{\StalesupportRate}{\StaleSupportRate} \newcommand{\StateLevels}{\StateExposureLevel} \newcommand{\GoalContract}{\TaskContractGoal} \newcommand{\Environment}{\TaskEnvironment} \newcommand{\Vocabulary}{\TokenVocabulary} \newcommand{\ActionProposal}{\TrajectoryAction} \newcommand{\ConcurrentTrajectoriesTwo}{\TrajectoryAdmissionRate} \newcommand{\ActionObservation}{\TrajectoryObservation} \newcommand{\Observation}{\TrajectoryObservation} \newcommand{\StateAtTurn}{\TrajectoryState} \newcommand{\PerturnAppend}{\TurnAppendLength} \newcommand{\Context}{\TurnContext} \newcommand{\Horizon}{\TurnHorizon} \newcommand{\VerifierFalseacceptance}{\VerifierFalseAcceptanceRate} \newcommand{\VerifierFalseacceptanceFr}{\VerifierFalseRejectionRate} \newcommand{\WorkerCountWorkers}{\WorkerCount} \newcommand{\AllocationHoldTime}{\AllocatedWallTime} \newcommand{\CheckpointIntervalCkpt}{\CheckpointInterval} \newcommand{\AcceleratorsPerNodeNodes}{\ClusterNodeCount} \newcommand{\CommunicationcomputationRatio}{\CommunicationComputeRatio} \newcommand{\PercomponentFailureRate}{\ComponentFailureRate} \newcommand{\Correlation}{\CorrelationCoefficient} \newcommand{\DataparallelDegreeDp}{\DataParallelDegree} \newcommand{\NumberOfDevices}{\DeviceCount} \newcommand{\TypeIAndTypeIiErrorRatesStat}{\HypothesisTestFalseNegativeRate} \newcommand{\TypeIAndTypeIiErrorRatesSig}{\HypothesisTestSignificanceLevel} \newcommand{\DollarCostInfer}{\InferenceCost} \newcommand{\KvcacheBytesPerToken}{\KvCacheBytesPerToken} \newcommand{\KvcacheMemory}{\KvCacheMemory} \newcommand{\CrossoverPoint}{\LatencyBandwidthCrossoverSize} \newcommand{\LoggpLongmessageTime}{\LoggpLongMessageTime} \newcommand{\LogploggpNetworkLatency}{\LogpNetworkLatency} \newcommand{\LongmessageGapPerByte}{\LongMessageGapPerByte} \newcommand{\MeanTimeBetweenFailuresThree}{\MeanTimeBetweenFailures} \newcommand{\PermessageLatency}{\MessageStartupLatency} \newcommand{\NdeviceTime}{\MultiDeviceRunTime} \newcommand{\PipelineparallelDegreePp}{\PipelineParallelDegree} \newcommand{\MlProductivityGoodputFactorsProgram}{\ProgramGoodput} \newcommand{\ReceiverOverheadRecv}{\ReceiverOverhead} \newcommand{\CollectiveCompletionTimeRing}{\RingAllReduceCompletionTime} \newcommand{\RingtreeCrossoverPayload}{\RingTreeCrossoverPayload} \newcommand{\MlProductivityGoodputFactorsRuntime}{\RuntimeGoodput} \newcommand{\GoodputRatio}{\RuntimeGoodput} \newcommand{\ScalingExponentScale}{\ScalingExponent} \newcommand{\MlProductivityGoodputFactorsScheduling}{\SchedulingGoodput} \newcommand{\SingledeviceTimeOne}{\SingleDeviceRunTime} \newcommand{\ReliabilityFunctionSystem}{\SystemReliability} \newcommand{\TensorparallelDegreeTp}{\TensorParallelDegree} \newcommand{\SmallConstant}{\ToleratedFailureProbability} \newcommand{\DollarCostTrain}{\TrainingCost} \newcommand{\CollectiveCompletionTimeTree}{\TreeAllReduceCompletionTime} \newcommand{\UsefulComputetimeFraction}{\UsefulComputeFraction} \newcommand{\AccuracyAtTime}{\AccuracyAfterDeployment} \newcommand{\NumberOfAttentionHeads}{\AttentionHeadCount} \newcommand{\Distribution}{\InputDistribution} \newcommand{\NumberOfKeyValueHeads}{\KvHeadCount} \newcommand{\NumberOfKeyvalueHeadsKv}{\KvHeadCount} \newcommand{\NumberOfLayers}{\LayerCount} \newcommand{\LayerInputAndOutputWidths}{\LayerInputWidth} \newcommand{\LayerInputAndOutputWidthsTwo}{\LayerOutputWidth} \newcommand{\Gradient}{\LossGradient} \newcommand{\TrainingDistributionZero}{\TrainingDistribution} \newcommand{\AcceleratorCountGpu}{\AcceleratorCount} \newcommand{\ActivationMemoryActivations}{\ActivationMemory} \newcommand{\BatchServiceTimeSvc}{\BatchServiceTime} \newcommand{\EnergyPerOperationCompute}{\EnergyPerOperation} \newcommand{\GradientMemoryGradients}{\GradientMemory} \newcommand{\IronlawTermTimesCompute}{\IronLawComputeTime} \newcommand{\SingleDeviceComputeTime}{\IronLawComputeTime} \newcommand{\IronlawTermTimesMemory}{\IronLawMemoryTime} \newcommand{\LossscaleFactor}{\LossScaleFactor} \newcommand{\OptimizerstateMemory}{\OptimizerStateMemory} \newcommand{\RequestTimeInSystemLat}{\RequestTimeInSystem} \newcommand{\StoragePricePerByteTime}{\StorageCapacityPrice} \newcommand{\WeightMemoryWeights}{\WeightMemory} \newcommand{\WindingAndAmbientTemperatureTwo}{\AmbientTemperature} \newcommand{\BackemfVoltageBemf}{\BackEmfVoltage} \newcommand{\CoordinateReferenceFramesB}{\BodyReferenceFrame} \newcommand{\CameraframeThreedCoordinate}{\CameraFramePoint} \newcommand{\CartesianThreedPosition}{\CartesianPosition} \newcommand{\CommandTransportTimeBus}{\CommandTransportTime} \newcommand{\ContactForceVectorK}{\ContactPointForce} \newcommand{\ContactPointJacobianK}{\ContactPointJacobian} \newcommand{\ContinuousPeakCurrent}{\ContinuousCurrent} \newcommand{\CredibleDecelerationBrake}{\CredibleBrakingDeceleration} \newcommand{\OpenloopCrossoverFrequency}{\CrossoverFrequency} \newcommand{\PhaseLagDegradation}{\DelayPhaseLag} \newcommand{\DiffusionScheduleParameterK}{\DiffusionCumulativeSchedule} \newcommand{\DispatchtoadmissionIntervalDa}{\DispatchAdmissionInterval} \newcommand{\EmittedTokenCountOut}{\EmittedTokenCount} \newcommand{\FundamentalAndEssentialMatricesTwo}{\EssentialMatrix} \newcommand{\ForwardinvariantSafeSet}{\ForwardInvariantSafeSet} \newcommand{\FreespaceDepth}{\FreeSpaceDepth} \newcommand{\FundamentalAndEssentialMatrices}{\FundamentalMatrix} \newcommand{\TransmissionEfficiencyGear}{\GearboxTransmissionEfficiency} \newcommand{\HardwareAndCommoncauseRateOther}{\HardwareCommonCauseRate} \newcommand{\ContinuousPeakTorqueHold}{\HoldingTorque} \newcommand{\OptimalInertiamatchingRatio}{\InertiaMatchingRatio} \newcommand{\IntentleaseExpiryIntentexp}{\IntentLeaseExpiry} \newcommand{\LatentStyleStateEmbedding}{\LatentStyleVariable} \newcommand{\LinearBarrierDecayRateCbf}{\LinearBarrierDecayRate} \newcommand{\Momentum}{\LinearMomentum} \newcommand{\RotorAndLoadInertiaTwo}{\LoadInertia} \newcommand{\LqrGainAndWeights}{\LqrFeedbackGain} \newcommand{\CenterOfMass}{\MassCenterPosition} \newcommand{\TorqueAndBackemfConstants}{\MotorTorqueConstant} \newcommand{\NoisePredictionNetworkTwo}{\NoisedActionChunk} \newcommand{\ObservabilityMatricesNl}{\NonlinearObservationSpace} \newcommand{\ObservabilityMatrices}{\ObservabilityMatrix} \newcommand{\ContinuousPeakCurrentTwo}{\PeakCurrent} \newcommand{\ContinuousPeakTorque}{\PeakTorque} \newcommand{\PermissionloopPeriodTick}{\PermissionLoopPeriod} \newcommand{\PhaseInductanceAndResistance}{\PhaseInductance} \newcommand{\PhaseInductanceAndResistanceTwo}{\PhaseResistance} \newcommand{\InitialAndCeilingError}{\PositionErrorCeiling} \newcommand{\RenewaljitterAllowance}{\RenewalJitterAllowance} \newcommand{\ResidentStopDistanceSuffix}{\ResidentStopDistance} \newcommand{\CoefficientOfRestitution}{\RestitutionCoefficient} \newcommand{\RigidtransformTranslation}{\RigidTransformTranslation} \newcommand{\RotorAndLoadInertia}{\RotorInertia} \newcommand{\SamplingPeriodAndRate}{\SamplingPeriod} \newcommand{\SensorLeverarmVector}{\SensorLeverArm} \newcommand{\SequentialLoglikelihoodRatioM}{\SequentialLogLikelihoodRatio} \newcommand{\SinglestepImitationError}{\SingleStepImitationError} \newcommand{\SprtBoundariesLo}{\SprtLowerBoundary} \newcommand{\SprtBoundariesUp}{\SprtUpperBoundary} \newcommand{\LinearStatespaceMatrices}{\StateSpaceInputMatrix} \newcommand{\LinearStatespaceMatricesSys}{\StateSpaceSystemMatrix} \newcommand{\PertrialProbabilitiesTarget}{\TargetTrialSuccessProbability} \newcommand{\TorqueproducingCurrent}{\TorqueProducingCurrent} \newcommand{\TrackingerrorBound}{\TrackingErrorBound} \newcommand{\PertrialProbabilitiesFail}{\TrialFailureProbability} \newcommand{\TsdfAccumulatedVolumeVox}{\TsdfAccumulatedWeight} \newcommand{\VirtualDampingAndStiffness}{\VirtualDampingMatrix} \newcommand{\Radius}{\WheelRadius} \newcommand{\WindingAndAmbientTemperature}{\WindingTemperature} \newcommand{\CoordinateReferenceFramesW}{\WorldReferenceFrame} \newcommand{\ZerofailureTrialCount}{\ZeroFailureTrialCount} \newcommand{\ZeroMomentPointZmp}{\ZeroMomentPoint} \newcommand{\Glyph}[1]{#1} $$

6 Distributed Training

Isometric distributed training map showing a large workload partitioned across accelerators along data, tensor, and pipeline axes with synchronization paths.

Purpose

Fleet Machine Learning Systems Stack

Fleet stack focus for this chapter.

Why can adding accelerators make training slower?

Splitting a training job across machines creates more compute capacity, but it also requires those machines to exchange state and agree on updates. Each accelerator may finish its local work sooner while spending more of the step waiting for other workers. Once communication and waiting consume the time saved by parallel execution, adding accelerators raises the bill without shortening the run. Single-node optimization remains necessary, yet faster local arithmetic cannot remove a dependency on data that another machine has not delivered. Memory pressure complicates the decision, because a model may require distribution simply to fit, even when the resulting exchanges are expensive. Dividing its state across more devices can relieve that limit while exposing another in network bandwidth or scheduling. Conversely, replicating a model can process more examples at once without reducing the memory needed for each copy. Neither improvement alone establishes that training will finish sooner. Changing how examples are grouped or when updates become available can change the work required to reach the target quality. Engineers must therefore compare complete training configurations, accounting for memory, communication, update behavior, and elapsed time together. The practical question is where additional hardware buys useful progress and where it merely creates more coordination. That judgment determines which models and experiments fit the available schedule and budget. In C³ terms, each partitioning strategy trades parallelized compute against network-bound communication and coordination across workers.

Learning Objectives
  • Apply the Fleet Law to diagnose compute-, memory-, communication-, or coordination-bound distributed training regimes
  • Calculate scaling efficiency, estimate useful batch size, and budget synchronization overhead for data-parallel training
  • Design memory-sharding plans that trade accelerator capacity for additional communication
  • Map tensor, pipeline, sequence, expert, and data parallelism onto hardware bandwidth tiers and model structure
  • Analyze microbatch pipeline schedules for bubble overhead, activation residency, and synchronous update ordering
  • Evaluate synchronization and low-precision policies under staleness, straggler, and numerical-stability constraints
  • Synthesize hybrid parallelism configurations for frontier, recommendation, and alignment training constraints

6.1 Why Distribution Is Necessary

A 175B-parameter reference model cannot even load onto a single accelerator because its FP16 weights alone exceed the memory of the device that must hold them (Data Storage), and the empirical scaling law (principle 9) keeps pushing frontier models further past what one machine can store or finish in calendar time. The accelerator hierarchy, network fabric, and storage pipeline form the physical foundation of the fleet, and Collective Communication priced the collective operations that move state across it. The remaining challenge is deciding how to partition the training job: which intermediate results and gradients must cross that fabric, and when workers must synchronize, while preserving the optimization process a single device would have followed.

↩︎ The power-law relationship between quality and compute, data, and parameters, and the compute-optimal allocation it implies, are established in AI Scaling Laws.

A hypothetical accelerator with 100 terabytes of memory and an exaflop of compute would make distributed training unnecessary for that model. Real accelerators instead have finite high-bandwidth memory (HBM) capacity, compute throughput, and input bandwidth, and more capable designs move the distribution threshold without removing it. The reference workload must be evaluated against those limits before selecting a partition. In the fleet stack (The Fleet Stack), distributed training occupies the Distributed Execution row of the Distribution band, the logic that partitions the mathematical workload across the physical fleet. Data, tensor, pipeline, and hybrid parallelism create different traffic patterns for the interconnect to carry.

Three distinct limits push a training workload past a single accelerator. Memory exhaustion hits first when model parameters, optimizer states, and activation storage exceed single-device capacity. For full mixed-precision training with Adaptive Moment Estimation (Adam), the convention of 16 bytes per parameter can exceed an 80 GB accelerator at roughly 5 billion parameters before activations. Larger 10–20B models therefore need sharding, offload, or another memory-saving approach (Rajbhandari et al. 2020); the failed allocation establishes a capacity problem without by itself choosing the remedy.

↪ Accelerator HBM capacity, the ceiling these per-parameter budgets are measured against, is developed in Accelerator Memory Hierarchy.

Even when a model fits in memory, unacceptable training duration can still force distribution because a single device may require weeks or months to converge, turning wall-clock time itself into a systems constraint. GPT-3’s 175B-parameter training run used a cluster of V100 GPUs (Brown et al. 2020), illustrating why the calendar, alongside HBM capacity, drives scale-out.

Input demand at dataset scale adds a third pressure: dataset bytes govern storage capacity, whereas the training schedule governs the required delivery rate. As The Data Pipeline Equation showed, either can motivate distributed data services, although a large dataset alone does not require distributing model computation. Together, capacity, calendar, and input delivery define the constraints a training configuration must satisfy.

The first signal, memory exhaustion, has a long history, traced in figure 1. Over the plotted span, single-accelerator memory grew about 15× from the K80 to the B200, while the memory needed to train a state-of-the-art model grew by roughly 4 orders of magnitude. Among the plotted models, the curves cross in 2020 at GPT-3, whose training state exceeded the largest accelerator then available by about 35×. GPT-3 marks where the gap passed an order of magnitude, and every later plotted frontier model also sits far above the capacity curve. For those models, spreading state beyond one device’s memory is a precondition for training at all rather than a way to train faster.

Figure 1: The Memory Wall: Accelerator memory capacity plotted against the memory a state-of-the-art model needs to train. Capacity climbs steadily while demand climbs faster, and the widening gap is why weights, gradients, and optimizer state must be split across devices rather than merely compressed. Training memory assumes 16 bytes per parameter for mixed-precision Adam state; parameter counts are from Epoch AI (2026) and capacities are vendor specifications.
Epoch AI. 2026. Notable AI Models.

Whichever signal motivates distribution, the system must state which optimization update it implements. In the synchronous baseline developed first, the 1,024 GPUs of the volume’s Archetype A (GPT-4/Llama-3) reference cluster, whose running instance in this chapter is a GPT-3-class 175B-parameter dense transformer, combine their contributions before advancing to the next parameter version. Matching the global batch, loss normalization, and optimizer state preserves the corresponding single-device update mathematically. Later synchronization models deliberately relax that update ordering and must be evaluated under their own convergence assumptions.

↩︎ The three systems archetypes and their binding constraints are established in Three systems archetypes.

Definition 6.1: Distributed training

Distributed training partitions the optimization loop across multiple compute nodes, distributing data or model computation and coordinating contributions according to a specified update protocol.

  1. Significance: Partitioning training state across devices can meet a memory budget that exceeds one accelerator. GPT-3 (175B parameters) requires approximately 350 GB in BF16 (FP16 also stores 2 bytes per value, so the chapter’s byte counts hold for either format), more than 4× the 80 GB capacity of a single H100. If weights remain entirely in HBM, their aggregate capacity lower bound is 5 H100s. Adding BF16 gradients plus FP32 Adam master weights and moments gives about 2.8 TB, or at least 35 H100s before activations. These lower bounds do not establish a runnable placement; offload changes the capacity calculation, and the time budget can require more accelerators than memory alone.
  2. Distinction: CPU threads can share a coherent address space, while accelerators generally hold separate training-state allocations even within one node. Distributed training extends coordination across those devices and node boundaries through collectives or point-to-point transfers governed by the chosen update protocol.
  3. Common pitfall: A frequent misconception is that distributed training scales linearly with node count. In practice, communication overhead grows with cluster size and the serial fraction of each step (Amdahl’s Law): a fixed serial fraction of the single-device baseline bounds strong-scaling speedup.

Distribution expands three costs that determine whether a partition is viable. Communication overhead includes gradient aggregation through AllReduce, which returns the same reduced tensor to each participant, or rank. For \(\Parameters\) parameters across \(\DeviceCount\) devices, a ring AllReduce, in which each worker passes gradient chunks only to its neighbor in a logical ring, sends approximately \(2(\DeviceCount-1)/\DeviceCount\times \GradientPayload\) bytes per worker per step, where the gradient payload \(\GradientPayload\) is the \(\Parameters\) gradient values times their storage width; this is not total fleet traffic.

↩︎ The ring schedule and the derivation of its \(2(\DeviceCount-1)/\DeviceCount\) volume are established in Collective Communication.

Fault tolerance becomes more demanding as the number of failure sources grows. Under independent constant-rate failures, 1,024 GPUs that each have a mean time to failure (MTTF) of 50,000 hours produce a GPU failure about every 49 hours, the cluster’s mean time between failures (MTBF). Whether each event interrupts training depends on recovery and redundancy; The MTBF cascade develops the assumptions.

Algorithmic stability adds a separate constraint when the partition changes global batch size or update ordering. Learning-rate scaling and warmup are candidate responses to large-batch behavior (Goyal et al. 2017), not requirements unique to multiple machines. A viable design must satisfy all three budgets.

Communication and coordination costs enter every step through the Fleet Law (principle 10), which decomposes the per-step time:

\[ \DistributedStepTime(\DeviceCount) = \frac{\IronLawComputeTime}{\DeviceCount} + \CommunicationTime(\DeviceCount) + \SynchronizationTime(\DeviceCount) - \OverlappedTime \]

↩︎ The Fleet Law and its compute, communication, and coordination terms are established in The Fleet Law.

The communication-computation ratio, \(\CommunicationComputeRatio= \CommunicationTime(\DeviceCount)/(\IronLawComputeTime/\DeviceCount)\), compares communication time with ideally partitioned compute time for fixed global work. It is the time consequence of communication intensity \(\CommunicationIntensity\) (equation 1.1), the bytes moved per operation of the workload. When transfers run at link bandwidth \(\LinkBandwidth\) and each device computes at sustained rate \(\PeakRate\EfficiencyHw\), \(\CommunicationComputeRatio\approx \CommunicationIntensity \times \PeakRate\EfficiencyHw/\LinkBandwidth\), so the same workload becomes more communication-bound on faster accelerators or slower links. This ratio identifies the pressure to overlap communication; the complete step time also depends on how much exchange is hidden and how much coordination remains exposed.

↩︎ The \(\MessageStartupLatency\)-\(\LinkBandwidth\) message model, with startup latency \(\MessageStartupLatency\) and sustained bandwidth \(\LinkBandwidth\), is established in The \MessageStartupLatency-\LinkBandwidth performance model.

↪ The communication-computation ratio, evaluated for representative data-parallel and point-to-point transfers and related to communication intensity, is developed in The communication-computation ratio.

Two regimes follow from this ratio. When \(\IronLawComputeTime/\DeviceCount\gg \CommunicationTime(\DeviceCount)\), the cluster is compute-bound, and communication is small relative to useful computation, provided coordination and input delivery do not introduce another limit. Large-batch training of a dense convolutional model such as ResNet commonly sits here. When \(\CommunicationComputeRatio\gtrsim 1\), \(\CommunicationTime(\DeviceCount)\) matches or exceeds \(\IronLawComputeTime/\DeviceCount\), the cluster is communication-bound, and insufficient overlap leaves substantial time waiting for gradients or activations. Large language models (LLMs) with billions of parameters to synchronize, and Deep Learning Recommendation Model (DLRM)-style workloads whose embedding exchanges saturate the network, frequently land in this regime. These are typical operating points rather than fixed labels. Batch size, partitioning, and placement can move the same workload across the boundary, so the ratio must be measured for the configuration at hand. Where a workload lands also depends on how its training loop is cut across devices, the choice each parallelism strategy makes.

↪ The optimizations that help, and the ones that are wasted, for a compute-bound, communication-bound, or coordination-bound fleet are collected for reference in The bottleneck diagnostic table.

Self-Check: Question
  1. A research team is training a 3B-parameter transformer that fits comfortably in one H100 GPU’s 80 GB of memory, but projected single-GPU training would take 18 months to reach target loss. The dataset is 3 TB and fits on local NVMe storage. Which signal makes distributed training necessary in this scenario?

    1. Dataset exceeding GPU HBM capacity, which automatically mandates tensor parallelism regardless of execution time
    2. The presence of NVLink inside the node, which makes multi-machine scaling mandatory by default
    3. Unacceptable wall-clock training duration, even though single-device memory capacity and local storage are sufficient
    4. Fault tolerance limitations, because single-GPU training cannot survive hardware restarts
  2. A team doubles a data-parallel cluster from 64 to 128 GPUs and observes that total step time drops by only 12 percent even though per-worker compute time halves. Using the distributed step-time equation \(T_{\text{step}}(N) = T_{\text{compute}}/N + T_{\text{comm}}(N) + T_{\text{sync}}(N) - T_{\text{overlap}}\), explain what the observation establishes and what measurement would distinguish possible causes.

  3. True or False: A cluster of 1,024 GPUs, each with a 50,000-hour mean time to failure, should expect a GPU failure roughly every two days if failures are independent, even though any single GPU fails only about once every five to six years.

  4. The dimensionless ratio \(\rho = T_{\text{comm}}(N) / (T_{\text{compute}}/N)\), which screens communication demand relative to per-worker compute time, is defined as the ____.

See Answers →

6.2 The Parallelism Design Space

Once a model or its training time outgrows a single GPU, the training loop offers three nested axes to split across devices: the examples in a batch, the layers of the model, and the matrix operations inside each layer. Data parallelism assigns different examples to model replicas; pipeline parallelism assigns successive layer groups to different devices; tensor parallelism splits the operations inside a layer. Because every split adds inter-device communication and synchronization overhead on top of single-machine compute and memory limits (The D·A·M Taxonomy), profiling and design must treat these three strategies as loop transformations applied by a cluster-level compiler.

In compiler terms, data parallelism acts like a parallel for-loop that assigns different batch indices to devices running the same model, whereas tensor parallelism resembles vectorization, or single instruction, multiple data (SIMD), by partitioning the work inside matrix operations—an analogy for the work split rather than a shared instruction stream or register file, since the devices still exchange tensor shards over an interconnect. Pipeline parallelism instead resembles instruction pipelining, assigning successive layer groups to stages so that overlapping microbatches keep those stages active, subject to dependency delays and load balance.

Whichever loop a strategy unrolls, distributed training1 spreads the workload across machines that must coordinate to train a single model. Coordination here means keeping every model shard or replica on a compatible training step. Basic barriers can keep a small research run ordered, but long-running training jobs also need timeout, checkpoint, and recovery mechanisms so one failed worker does not waste days of compute.

1 Distributed training: Google’s DistBelief (2012) was an early framework for training neural networks across thousands of machines, but its parameter server architecture created bandwidth bottlenecks at central nodes. This limitation drove the shift to decentralized AllReduce patterns in successors such as Horovod and PyTorch DistributedDataParallel (DDP), where each data-parallel worker sends and receives about \(2(\DeviceCount-1)/\DeviceCount\) times the gradient size per step rather than concentrating traffic at a single server (Dean et al. 2012; Sergeev and Balso 2018; Li et al. 2020; Patarasuk and Yuan 2009).

Dean, Jeffrey, Greg Corrado, Rajat Monga, Kai Chen, Matthieu Devin, Quoc V. Le, Mark Z. Mao, et al. 2012. “Large Scale Distributed Deep Networks.” In Advances in Neural Information Processing Systems (NeurIPS), edited by Peter L. Bartlett, Fernando C. N. Pereira, Christopher J. C. Burges, Léon Bottou, and Kilian Q. Weinberger, vol. 25. Curran Associates.
Sergeev, Alexander, and Mike Del Balso. 2018. “Horovod: Fast and Easy Distributed Deep Learning in TensorFlow.” CoRR abs/1802.05799.
Li, Shen, Yanli Zhao, Rohan Varma, Omkar Salpekar, Pieter Noordhuis, Teng Li, Adam Paszke, et al. 2020. “PyTorch Distributed: Experiences on Accelerating Data Parallel Training.” Proceedings of the VLDB Endowment 13 (12): 3005–18. https://doi.org/10.14778/3415478.3415530.
Patarasuk, Pitch, and Xin Yuan. 2009. “Bandwidth Optimal All-Reduce Algorithms for Clusters of Workstations.” Journal of Parallel and Distributed Computing 69 (2): 117–24. https://doi.org/10.1016/j.jpdc.2008.09.002.

↪ Checkpointing and recovery for long-running training jobs are developed in Fault Tolerance.

2 NVLink: NVIDIA’s point-to-point GPU interconnect delivers 300 GB/s–450 GB/s per-direction bandwidth, roughly 12×–18× InfiniBand HDR per port. This bandwidth gap is why tensor parallelism, which requires AllReduce on every layer, favors the fast NVLink domain, while pipeline and data parallelism can tolerate slower links when their traffic budgets fit. NVLink Switch systems can extend that fast domain beyond one server.

Each rung of the scaling path inherits earlier challenges. A single GPU already needs input delivery, memory management, scheduling, and recovery from interrupted work. Multiple GPUs add coordination across separate device memories, even within one node. Interconnects such as NVLink or PCIe carry these exchanges,2 with collective libraries such as NCCL selecting communication schedules.

The leap to multi-node training adds network communication overhead, fault tolerance requirements, and cluster orchestration. Because each stage compounds the previous one’s bottlenecks, single-GPU performance must be optimized before scaling out, so inefficiency does not multiply across the fleet. The resulting design space decomposes onto a three-dimensional grid, \(\DeviceCount= \DataParallelDegree \times \PipelineParallelDegree \times \TensorParallelDegree\), that partitions cluster execution across tensor parallelism (\(\TensorParallelDegree\), intra-layer sharding), pipeline parallelism (\(\PipelineParallelDegree\), sequential stage partitioning), and data parallelism (\(\DataParallelDegree\), batch replication), and each cell of the grid is one accelerator coordinate (figure 2).

Figure 2: The 3D Parallelism Cube: The configuration space decomposes cluster training across three orthogonal axes: tensor parallelism (\(\TensorParallelDegree\), intra-layer sharding), pipeline parallelism (\(\PipelineParallelDegree\), sequential stage partitioning), and data parallelism (\(\DataParallelDegree\), batch replication). Each cell is one accelerator, identified by its \((\DataParallelDegree, \PipelineParallelDegree, \TensorParallelDegree)\) coordinate, so the cube holds \(\DeviceCount = \DataParallelDegree \times \PipelineParallelDegree \times \TensorParallelDegree\) devices. A feasible point must jointly satisfy model divisibility, per-device memory limits, and the network hierarchy that carries each axis’s traffic.

Under the three-dimensional partitioning of figure 2, called 3D parallelism, the total accelerator allocation scales as the product \(\DeviceCount= \DataParallelDegree \times \PipelineParallelDegree \times \TensorParallelDegree\). The axes represent distinct mathematical partitions, but they are not independent configuration knobs. Tensor and pipeline degrees must divide the model structure, the data-parallel degree and microbatch schedule must produce a viable global batch, every partition must fit memory, and each communication group must map onto an adequate topology and acceptable failure domain. Training systems therefore select a jointly feasible coordinate rather than tuning \(\DataParallelDegree\), \(\PipelineParallelDegree\), and \(\TensorParallelDegree\) in isolation.

6.2.1 Parallelism strategy selection and engineering trade-offs

A parallelism strategy that places frequent, high-volume exchanges on a slow link fails before it leaves the whiteboard, because communication stalls the accelerators it was meant to feed. Choosing a strategy is therefore a constraint satisfaction problem governed by parameter count \((\Parameters)\), batch size \((\BatchSize)\), and interconnect bandwidth. A first feasibility screen compares the traffic each strategy creates against the hardware topology (table 1). In that screen, \(\LayerCount\) denotes layer count, \(\SequenceLength\) sequence length, and \(\HiddenDimension\) hidden width. The table identifies traffic sources rather than complete byte budgets; datatype width, partition degree, and communication frequency enter the worked mechanisms below.

Table 1: Parallelism Communication Costs: Tensor parallelism exchanges partial layer results frequently and favors a fast communication domain, which can span servers. Pipeline parallelism transfers boundary activations; its bandwidth need depends on tensor shape and microbatch schedule. Data parallelism synchronizes gradient bytes, whose exposed cost depends on overlap and topology. Memory sharding addresses capacity but does not automatically reduce communication.
Strategy Communication pattern Comm. volume Hardware constraint
Data Parallel (DP) AllReduce Gradients \(\propto \GradientPayload\) (gradient bytes) Requires high bisection BW
Tensor Parallel (TP) AllReduce Activations \(\propto \BatchSize\times \SequenceLength\times \HiddenDimension\times \LayerCount\) (per-layer activations) Fast domain matched to layer traffic
Pipeline Parallel (PP) Point-to-Point (P2P) \(\propto \BatchSize\times \SequenceLength\times \HiddenDimension\) (Activations) Link must sustain stage activations

Those bandwidth requirements impose a hard constraint on hardware placement: each parallelism axis must map onto an interconnect tier that can sustain its traffic within the compute budget. A quick back-of-envelope bandwidth feasibility check catches a mismatch before any code is written.

↩︎ The communication domains and bandwidth hierarchy used to evaluate placement are established in Bandwidth hierarchy.

Systems Perspective 6.1: Bandwidth feasibility check
Frequent tensor-parallel collectives must fit the layer-time budget. The test compares the time one layer’s local share of computation takes with the time its collectives take on each candidate link. For the forward pass of one GPT-3 layer split 8 ways, processing one 2,048-token sequence at half of an H100’s dense FP16 peak:

  • Local compute per layer: about 1.9 ms
  • Tensor-parallel transfer per layer over NVLink: about 0.4 ms
  • The same transfer over one NDR InfiniBand port: about 3.5 ms

On NVLink the exchange is a fraction of the layer’s compute; across InfiniBand it would take longer than the compute it serves. The amount hidden depends on independent work available in the execution schedule. NVLink is one suitable fast domain, but the test uses message bytes, exposed latency, and sustained link rate rather than an interconnect brand or chassis boundary. Cross-rack placement may favor pipeline or data parallelism when the available fabric cannot meet the tensor-parallel budget; their activation and gradient traffic must also be checked.

The communication costs in table 1 already narrow the choice before any mechanism has been developed, because a strategy is viable only when its traffic fits the tier that must carry it. What each formula implies in practice depends on the mechanics of data, tensor, and pipeline parallelism developed over the rest of the chapter, and section 6.8 turns the same constraints into a decision procedure once those mechanics are in place.

Self-Check: Question
  1. Framing distributed parallelism strategies as compiler loop transformations across the training loop’s iterators (batches, layers, and operations), which distributed strategy corresponds to vectorization (SIMD) of inner matrix multiplications?

    1. Tensor parallelism, which partitions inner matrix-multiplication operations across devices and exchanges partial results over the interconnect
    2. Data parallelism, which unrolls the outer batch loop across devices so each rank processes independent data indices
    3. Pipeline parallelism, which stages sequential layer operations across devices analogous to CPU instruction pipelining
    4. Model replication, which duplicates the entire forward and backward execution redundantly across machines
  2. In the 3D parallelism cube, where the device count equals the product of the data-, pipeline-, and tensor-parallel degrees, how do the three scaling axes interact to allocate cluster accelerators for large models?

    1. The three axes are mutually exclusive; choosing data parallelism precludes using tensor or pipeline parallelism in the same cluster
    2. Tensor and pipeline parallelism can combine within a node, but data parallelism can only be used if model parallelism is disabled
    3. The total accelerator count is the sum of the three degrees, with each parallelism type requiring a disjoint node pool
    4. The axes compose multiplicatively, so one layout can split layers (TP), stage the layer stack (PP), and replicate the pipeline across data shards (DP), and its device count is the product of the three degrees
  3. True or False: If a neural network’s parameters exceed a single GPU’s memory capacity, tensor parallelism can be scaled across standard commodity Ethernet switches between server racks, provided the global batch size is made large enough.

  4. For one GPT-3 layer split eight ways, the chapter’s bandwidth feasibility check finds about 1.9 ms of local compute, about 0.4 ms of tensor-parallel transfer over NVLink, and about 3.5 ms for the same transfer over one NDR InfiniBand port. Explain what these numbers imply for where the tensor-parallel group should be placed and what a planner must still check before accepting that placement.

See Answers →

6.3 Data Parallelism

When a model fits on one accelerator but training takes weeks, replicating its computation lets several workers process examples concurrently. The initial data-parallel baseline gives each worker the same model state and a local portion of one global minibatch. Combining those local contributions before the optimizer update preserves the intended global-batch estimator; the sampling and weighting conditions below explain when that equivalence holds.

Definition 6.2: Data parallelism

Data parallelism distributes training examples across workers that execute the model and combine their contributions to its optimization updates.

  1. Significance: With \(\DeviceCount\) workers each processing a local batch of \(\LocalBatchSize\) examples once per update, the global batch size is \(\DeviceCount\times \LocalBatchSize\). At fixed local work, 1,024 workers offer an ideal 1,024\(\times\) throughput increase before exposed overhead. A 1B-parameter model with BF16 gradients contributes a 2 GB gradient payload; ring AllReduce moves \(2(\DeviceCount-1)/\DeviceCount\) times that payload per worker. Realized speedup depends on local compute, collective service, overlap, and load balance.
  2. Distinction: The replicated synchronous baseline keeps a full model copy on each worker and aggregates gradients before each optimizer update. Model parallelism instead partitions the model’s computation. Sharded data parallelism, developed below, retains data-parallel computation while distributing training-state storage.
  3. Common pitfall: Data parallelism does not scale indefinitely with worker count. Holding the local batch \(\LocalBatchSize\) fixed while adding workers grows the global batch. Beyond the workload-dependent critical batch size, additional examples yield diminishing reductions in the steps needed to reach target quality (Shallue et al. 2019). The crossover developed in section 6.4.6 therefore limits the statistical benefit even when gradient variance continues to decrease.
He, Kaiming, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. 2016. “Deep Residual Learning for Image Recognition.” 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 770–78. https://doi.org/10.1109/cvpr.2016.90.

Data parallelism applies when examples can be processed independently, as in training a ResNet model (He et al. 2016) on ImageNet. Each replica computes its local loss gradient, and the workers combine those contributions to reproduce the intended global-batch gradient. The averaging rule makes the sampling and weighting assumptions explicit.

Consider a model with parameters \(\ModelParameters\) training on a dataset \(\TrainingDataset\). The loss function for a single data point \(\ModelInput_i\) is \(\LossFunction(\ModelParameters, \ModelInput_i)\). In standard stochastic gradient descent (SGD) with batch size \(\BatchSize\), the gradient update for a minibatch is: \[ \MinibatchGradient= \frac{1}{\BatchSize} \sum_{i=1}^\BatchSize\nabla_{\ModelParameters} \LossFunction(\ModelParameters, \ModelInput_i) \]

In data parallelism with \(\DeviceCount\) devices, each device \(\WorkerIndex\) computes gradients on its own minibatch \(\MiniBatchSet_k\): \[ \MinibatchGradient_k = \frac{1}{|\MiniBatchSet_k|} \sum_{\ModelInput_i \in \MiniBatchSet_k} \nabla_{\ModelParameters} \LossFunction(\ModelParameters, \ModelInput_i) \]

When all workers use the same local batch size, the global update averages these local gradients: \[ \GlobalBatchGradient= \frac{1}{\DeviceCount} \sum_{k=1}^\DeviceCount\MinibatchGradient_k \]

Under that equal-batch assumption, the averaging is mathematically equivalent to computing the gradient on the combined batch \(\CombinedBatch= \bigcup_{k=1}^\DeviceCount \MiniBatchSet_k\): \[ \GlobalBatchGradient= \frac{1}{|\CombinedBatch|} \sum_{\ModelInput_i \in \CombinedBatch} \nabla_{\ModelParameters} \LossFunction(\ModelParameters, \ModelInput_i) \]

For unequal local batch sizes, the combined-batch gradient is the weighted average \(\GlobalBatchGradient= (1/|\CombinedBatch|)\sum_k |\MiniBatchSet_k|\MinibatchGradient_k\). Data parallelism therefore maintains the statistical properties of SGD training, because sampling the intended global batch across devices, computing local gradient sums independently, and normalizing by the aggregate denominator reproduces its estimator. The reduction step uses an AllReduce over local gradient sums and valid-item counts.

Three batch quantities recur from here on, and the chapter keeps them apart. A worker’s local batch \(\LocalBatchSize\) is the set of examples it processes for one update, playing the role of \(\MiniBatchSet_k\) above. The global batch \(\GlobalBatchSize= \DeviceCount\times \LocalBatchSize\) is the set the update averages over. Pipeline parallelism later splits a batch into \(\MicrobatchCount\) microbatches of size \(\MicrobatchSize\) that flow through stages one after another; the word microbatch is reserved for those pipeline slices.

↪ The ring and tree AllReduce cost models that set the price of this synchronization are developed in AllReduce.

Checkpoint 6.1: Data parallelism mechanics

Verify your understanding of how data parallelism distributes work:

The method parallels gradient accumulation, where a device accumulates contributions from multiple forward and backward passes before one optimizer update. Both techniques use gradient addition and the intended loss denominator to process a larger effective batch. Distribution adds communication, partial failures, and coordination to that arithmetic. The implementation must preserve the update while accounting for those costs.

6.3.1 Data parallelism implementation

The implementation details matter because the SGD equivalence only holds when each phase preserves the intended aggregate sampling and weighting, complete local gradient contributions, and a single synchronized update. The concrete workflow follows the dataflow from assigning local batches to synchronizing the computed gradients. The five-stage execution pipeline in figure 3 follows four GPU swimlanes, tracking how identical model replicas ingest disjoint batch shards, compute local gradients (\(\MinibatchGradient_0\)–\(\MinibatchGradient_3\)), and synchronize through a ring AllReduce collective before applying uniform parameter updates.

Figure 3: Data Parallelism Implementation Pipeline: The five-stage workflow for data-parallel training: (1) partition the global batch, (2) assign sharded mini-batches to individual GPUs, (3) compute independent forward and backward passes to produce local gradients \(\MinibatchGradient_i\), (4) execute an AllReduce collective across the cluster to obtain the average gradient \(\GlobalBatchGradient\), and (5) update parameters identically across all devices. This strategy preserves the mathematical semantics of single-device SGD while distributing the compute burden.

The gradient synchronization stage of figure 3 (stage 4) creates a dependency, because each rank must receive the completed reduction before applying its optimizer update. The exposed wait can reflect bandwidth, collective startup, or a late contribution. Measuring that wait determines whether synchronization limits scaling; the dependency alone does not identify the binding resource.

Dataset splitting

Data splitting is the first place where the SGD equivalence can fail, but uniqueness and equal-sized shards are sufficient conditions rather than the invariant itself. The aggregate examples or tokens, their sampling probabilities, and their gradient weights must reproduce the intended global-batch estimator. Uniform sampling without replacement can assign disjoint shards; sampling with replacement can legitimately repeat examples; and variable-length batches can assign unequal token counts if the reduction weights each worker by its valid-example or valid-token denominator. An unweighted mean of unequal local means instead overweights workers with smaller denominators.

The sampler is therefore an integral component of the distributed training system rather than merely an input-loader convenience. A distributed sampler coordinates workers by rank and can deterministically partition or draw indices from a seeded sampling stream. The 1.28 million training images of ImageNet-1k do not divide evenly across 32 GPUs, so a sampler that pads by repeating examples gives each GPU 40,037 examples per epoch and adds 17 repeats across the job. The loss normalization or sample weights must account for those repeats when exact epoch-level weighting matters. A recorded seed and deterministic index stream make sample assignment repeatable; bitwise run reproducibility additionally depends on kernel determinism, collective reduction order, numerical precision, and checkpointed random-number-generator state.

Compute-phase forward and backward passes

For a replicated model whose local forward and backward operations require no cross-worker state, the computation phase is embarrassingly parallel. Each GPU executes the model on its local batch; synchronized normalization or additional model partitioning can introduce communication within that phase. To isolate the activation term, consider an unpartitioned 175B reference model at a local batch of 4 sequences and sequence length 2048. This is a hypothetical memory budget, not a feasible one-GPU training configuration, because weights and optimizer state must fit as well. Without optimization, storing these activations for backpropagation would consume roughly 1.1 TB of HBM, an order of magnitude beyond the capacity of even an H100 GPU. Activation checkpointing recomputes selected activations during the backward pass rather than retaining them, reducing this example’s footprint to ~19.3 GB at the cost of extra computation.

The capacity test must include activations rather than stopping at bytes per parameter. Numeric Precision and Training Memory tabulates the 16-byte-per-parameter training state from which this test starts. At the point of peak residency, \[ \TotalMemoryFootprint = \WeightMemory + \GradientMemory + \OptimizerStateMemory + \ActivationMemory, \] with communication buffers and temporary workspaces consuming additional headroom. Sharding reduces the first three terms according to its stage, whereas sequence length, local batch size, and pipeline scheduling govern \(\ActivationMemory\). Activation checkpointing reduces that last term by retaining only selected boundaries and recomputing the omitted forward operators during backpropagation (Narayanan et al. 2021). Full recomputation re-executes about one extra forward pass per step. Because a backward pass costs roughly two forward passes, a step that needed three forward-pass equivalents of arithmetic now needs four, about a third more (Chen et al. 2016). Selective recomputation re-executes only operators whose activations are large but cheap to produce, such as the attention softmax and dropout, and keeps most of the memory saving for a few percent of extra arithmetic (Korthikanti et al. 2023). Recomputed operations raise hardware FLOPs utilization (HFU) but not model FLOPs utilization (MFU), which credits only the model’s own forward and backward work, so a plan that buys feasibility with full recomputation pays for it in useful throughput. The memory saved is therefore purchased with additional FLOPs and a longer critical path; a feasible parallelism plan must budget both effects.

Narayanan, Deepak, Mohammad Shoeybi, Jared Casper, Patrick LeGresley, Mostofa Patwary, Vijay Korthikanti, Dmitri Vainbrand, et al. 2021. “Efficient Large-Scale Language Model Training on GPU Clusters Using Megatron-LM.” Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis, 1–15. https://doi.org/10.1145/3458817.3476209.
Chen, Tianqi, Bing Xu, Chiyuan Zhang, and Carlos Guestrin. 2016. “Training Deep Nets with Sublinear Memory Cost.” arXiv Preprint arXiv:1604.06174.

As the backward pass traverses the computation graph in reverse, it produces gradients for the parameters held by each replica or shard. Under pure data parallelism, a full 175B FP16 replica would imply a 350 GB gradient tensor per worker, which exceeds single-accelerator memory budgets; large runs therefore combine data parallelism with sharding, tensor parallelism, or pipeline parallelism. Each local gradient contributes to the intended global-batch estimator. Aggregation can begin as gradient tensors become ready, overlapping later backward computation, but the optimizer must wait for the completed contributions it consumes. This readiness schedule connects local computation to collective communication.

Gradient synchronization

Gradient synchronization combines local contributions into the synchronous update. Each replica must receive the aggregate before applying that update. In a centralized parameter-server design with fixed per-worker payload and update frequency, the server receives \(\mathcal{O}(\DeviceCount)\) incoming traffic. That concentration becomes a bottleneck when demand exceeds the server tier’s service capacity; sharding the server state or changing the communication pattern can relieve it.

The replicated synchronous baseline distributes aggregation through collective communication. AllReduce lets each worker contribute its local gradient tensor and receive the same reduced result, which the training loop normalizes to obtain the global average. In sharded variants such as ZeRO and FSDP, ReduceScatter and AllGather change which result each worker retains, leaving each worker only its own shard of the reduced gradient and reconstructing full parameters on demand. Small messages emphasize startup latency; large messages emphasize sustained bandwidth. Centralized aggregation remains another design choice, particularly for the sparse workloads developed later.

↩︎ The result contracts of AllReduce, ReduceScatter, and AllGather, and the decomposition of AllReduce into a ReduceScatter followed by an AllGather, are established in The six core primitives.

At the Distributed Execution row of the fleet stack, the loop specifies an AllReduce contract while its implementation determines the cost. For a large worker group, ring AllReduce transfers approximately \(2\GradientPayload\) bytes per worker for an \(\GradientPayload\)-byte gradient payload. Collective Communication derived this approximate \(2\GradientPayload\) volume, compared algorithms whose startup costs, topology, and contention differ, and examined how libraries such as NCCL schedule exchanges within and across communication domains.

When a measured collective deviates from these estimates, the diagnosis compares the trace against what each candidate algorithm predicts on the same hardware, for example a flat ring against a hierarchical AllReduce that reduces within each NVLink node before crossing the inter-node fabric. A hypothetical trace on an A100 cluster with HDR InfiniBand shows the comparison at work. An AllReduce of a 3 GB gradient tensor across 128 nodes (1,024 GPUs) takes 100 ms, against a flat-ring estimate of 239.8 ms and an idealized hierarchical estimate of 48.5 ms. The observation rules out the flat schedule, and the residual above the hierarchical ideal must come from lower achieved rates, startup, or a late participant. Switch counters showing inter-node links at 60 percent utilization do not settle the question, because an aggregate can hide one saturated port during the exposed interval; per-port and per-channel traces must locate the bottleneck before any topology change.

↩︎ Hierarchical AllReduce and its cost relative to a flat ring are established in Hierarchical AllReduce.

Gibiansky, A. 2017. Bringing HPC Techniques to Deep Learning. Baidu Research Technical Blog.

Across the wider design space, figure 4 compares three synchronization topologies: the bandwidth-optimal ring AllReduce that circulates chunks along neighbor links (\(2(\DeviceCount-1)/\DeviceCount\) volume), the centralized parameter server constrained by network interface card (NIC) saturation at the server node, and the dense mesh of logical AllToAll peer traffic (\(\DeviceCount(\DeviceCount-1)\) messages). In dense synchronous data-parallel settings, ring AllReduce avoids a single reducer bottleneck by distributing traffic evenly across participating links, as Baidu’s implementation illustrates (Gibiansky 2017).

Figure 4: Communication Patterns and Their Costs: Ring AllReduce and a parameter server illustrate two ways to aggregate updates. AllToAll instead routes distinct data to each peer; the complete graph shows logical destinations, not a requirement for dedicated physical links. A switched fabric can carry this traffic, with cost determined by message size, routes, and contention.

The panels separate an aggregation algorithm, a centralized architecture, and a collective traffic pattern. They do not provide interchangeable implementations of the same operation. Only the first two aggregate gradients; the AllToAll panel previews the exchange that sparse embedding tables and mixture-of-experts layers need, in which every worker sends different data to every other worker (section 6.5.5). Libraries choose algorithms and routes for the requested collective on the available fabric; a logical complete graph does not guarantee one-round physical delivery.

Parameter updating

Parameter updating closes the replicated synchronous contract. After the gradient AllReduce (Patarasuk and Yuan 2009), every worker holds the same global gradient and applies it to its own replica with SGD, momentum, or Adam, so the update stays decentralized without losing equivalence to single-device training. Identical gradients alone are insufficient, because optimizer moments, learning rates, and step counts must also match across replicas. Frameworks automate the cycle of splitting data, computing gradients, synchronizing, and updating, but they cannot remove the ordering constraint that keeps the replicas coherent, which requires every worker to update only after the synchronized gradient is complete.

Synchronization models

Distributed training systems use synchronization models to specify when workers observe and apply updates. The baseline is bulk synchronous parallel (BSP), the superstep-and-barrier model. In the replicated training loop, workers compute from one parameter version, combine their gradient contributions, and complete the update before computing from the next version. This is a dependency order, not a requirement that every device update at the same wall-clock instant. Relaxing it changes the optimization process as well as the waiting time.

↩︎ Bulk synchronous parallel execution and its barrier cost are established in How ML Networking Inverts Data-Center Assumptions.

BSP provides synchronous update semantics, in which every worker computes from the same parameter version and reaches the next update boundary together. With the same global batch and reduction, this matches the corresponding synchronous single-device update mathematically. It does not by itself guarantee bitwise reproducibility. Floating-point reduction order, nondeterministic kernels, data-order state, and failure recovery can still change the result. The synchronization cost is that the slowest worker determines iteration time. A worker that keeps producing correct results but runs markedly slower than its peers is a straggler, and under BSP every straggler delays the entire step.

Stale synchronous parallel (SSP) relaxes this constraint by allowing workers to proceed up to \(\StalenessBound\) iterations ahead of the slowest worker before blocking. This bounds staleness while reducing synchronization delays. SSP requires careful learning rate tuning since workers compute gradients on slightly different parameter versions. The bounded staleness guarantee provides a middle ground between BSP’s strong consistency and fully asynchronous approaches (Ho et al. 2013).

Asynchronous parallel (ASP) execution removes the global update barrier, allowing a worker’s contribution to be applied while others continue computing; asynchronous SGD is the optimizer run under that protocol. Less barrier waiting can improve update throughput, but communication and shared-state contention remain. Gradients computed from older parameter versions introduce staleness that can affect convergence. Section 6.4.4 develops the objective and delay assumptions needed to evaluate that trade-off. The three models lie on one spectrum, from the strong consistency of BSP to the barrier-free updates of ASP (table 2).

Table 2: Synchronization Model Trade-Offs: BSP, SSP, and ASP trade consistency for throughput along a spectrum. BSP preserves synchronous update boundaries but pays for the slowest worker; SSP permits bounded progress ahead of slower workers; ASP removes the global update barrier without a finite protocol-wide staleness bound. Throughput and time to target quality depend on the workload and implementation. Reproducibility requires a separate deterministic-execution contract.
Model Consistency Throughput Convergence Use case
BSP Strong Bounded by slowest worker Same synchronous update semantics Controlled final training runs
SSP Bounded staleness Less global-barrier waiting Depends on delay and tuning Hyperparameter search
ASP Weak No global update barrier Depends on staleness and objective Large heterogeneous clusters

Execution traces for four workers with one straggler make the differences visible (figure 5). Under BSP, global barriers force the faster workers into idle wait blocks while straggler W3 completes. Under SSP, bounded slack (\(\StalenessBound=1\)) lets them run ahead and throttles the drift with brief pauses. Under ASP, asynchronous updates remove the global barrier without imposing a finite staleness bound, although communication and resource contention can still leave workers waiting.

Figure 5: Distributed Synchronization Models: The timelines compare three synchronization strategies. Top: bulk synchronous parallel (BSP) forces all workers to wait at a global barrier every step. Middle: stale synchronous parallel (SSP) allows workers to proceed up to \(\StalenessBound\) steps ahead of the slowest worker. Bottom: asynchronous parallel (ASP) execution removes the global update barrier while allowing gradient staleness; communication and resource contention can still delay progress.

Barrier semantics and failure modes

An optimizer update that consumes an AllReduce result must wait for every required contribution. Workers can execute independent computation while a collective is in flight, but they must issue compatible collectives in the same group order and wait for completion before consuming the result. This coupling creates failure modes absent from single-device training.

A worker failure can leave peers waiting for a contribution that will never arrive. The runtime may report a communication error, or the operation may remain blocked until a timeout detects the failure. Watchdogs bound that wait so the job can enter recovery rather than retain an unusable allocation indefinitely.

Five worker dots in a column. Four blue workers have gray lanes that stop just short of a red vertical barrier, each ending in a pause mark; the middle worker is a dashed red hollow circle labeled missing with no lane, so the barrier never releases.

One missing worker stalls the entire AllReduce barrier.

Collective mismatches occur when workers issue incompatible operations, tensor shapes, or ordering within a communication group. Conditional computation can create such a mismatch if some workers omit an expected reduction. Variable sequence lengths or different expert routes do not inherently violate the protocol; the runtime must construct a compatible communication schedule for those varying local computations.

Stragglers extend an iteration when their late work lies on its critical path. Thermal throttling, network congestion, or OS jitter can delay a required contribution even when other workers are ready. At 1,000 GPUs with a 1 percent straggler probability per GPU per step, the expected count is 10 stragglers per step, but the number that matters under BSP is the chance of a step with none at all. That chance is the per-GPU on-time probability raised to the GPU count, about 0.004 percent. Almost every step therefore waits for at least one slow worker, which is why the slowest worker, not the typical one, sets step time. The resulting exposed wait depends on how late that contribution arrives and what independent work remains. Deployed systems bound these waits with timeouts and heartbeat monitoring, and elastic training lets a job continue with a resized worker group after a failure.

↪ Heartbeat and collective-timeout failure detection, and the trade-off between restarting healthy workers and leaving peers blocked, are developed in Failure detection mechanisms.

6.3.2 Data parallelism trade-offs

Data parallelism is the simplest way to add accelerators because it leaves each replica’s model computation intact, but adding workers eventually hits either a communication wall or a statistical wall (Ben-Nun and Hoefler 2019). Near-linear throughput scaling requires local compute efficiency, balanced input delivery, and small exposed synchronization costs. Which wall arrives first depends on whether the global batch stays fixed or grows as workers are added. Holding the global batch fixed while adding workers is strong scaling: each worker’s local batch shrinks, so communication must hide behind less computation. Holding the local batch fixed so that the global batch grows with \(\DeviceCount\) is weak scaling: per-worker computation stays constant, but each update averages more examples, which eventually stops reducing the number of updates needed. The rest of the chapter refers to the two regimes by these names.

Ben-Nun, Tal, and Torsten Hoefler. 2019. “Demystifying Parallel and Distributed Deep Learning: An in-Depth Concurrency Analysis.” ACM Computing Surveys 52 (4): 1–43. https://doi.org/10.1145/3320060.

Weak scaling pays off when the larger global batch still reaches the target accuracy. Goyal et al. (2017) trained ResNet-50 on ImageNet in about one hour on 256 GPUs at a global batch of 8,192 images; the learning-rate rules that let that batch reach the target accuracy are developed in section 6.4.5. Replicated data parallelism retains the model’s local operators, and frameworks can trigger gradient reductions as backward computation produces them. Each replica executes a complete forward and backward pass, avoiding the layer-stage fill and drain bubbles of pipeline parallelism. Input stalls, imbalance, and exposed reductions can still leave devices idle.

These advantages hold only until replication runs into memory capacity, communication bandwidth, or statistical diminishing returns. The memory wall binds first on large models because a replicated worker holds every parameter, gradient, and optimizer state, demanding more than 1 TB per replica for the 175B-parameter example before activations. Even when the state fits, communication limits useful scaling once its exposed cost grows relative to local work: as \(\DeviceCount\) increases, the ideal ring bandwidth term \(\frac{2(\DeviceCount-1)}{\DeviceCount} \frac{\GradientPayload}{\LinkBandwidth}\) approaches a constant for a fixed gradient payload \(\GradientPayload\) and link bandwidth \(\LinkBandwidth\), while startup latency, topology, and shrinking local computation worsen the balance. Statistical efficiency then sets the ceiling under weak scaling, because growing \(\GlobalBatchSize= \DeviceCount\times \LocalBatchSize\) with \(\DeviceCount\) eventually yields diminishing reductions in update count, whereas strong scaling avoids that batch-size ceiling only by shrinking each worker’s local batch and exposing the communication trade-off sooner.

Napkin Math 6.1: GPT-2 data parallel scaling: Single node
A GPT-2 scaling scenario makes the efficiency loss concrete by holding the model fixed and changing only the communication domain. GPT-2 stands in for the 175B reference here because it fits on one GPU, so pure replicated data parallelism applies and communication is the only variable. The first case keeps all eight GPUs inside a single NVLink node.

Single-GPU baseline

  • Batch size: 16 (with gradient checkpointing, fits in 32 GB)
  • Time per step: 1.8 s
  • Baseline time for 50K single-GPU steps: 25 hours

The following durations hold the total sample budget fixed, so larger global batches require fewer optimizer updates. They assume those samples attain the same quality; the calculation establishes throughput scaling, not convergence equivalence.

8 GPUs: single node with NVLink

  • Per-GPU batch: 16, global batch: 128
  • Gradient synchronization: 5.2 GB @ 450 GB/s (NVLink, per direction) \(\approx\) 11.7 ms

Performance results:

  • Compute: 1800 ms per step
  • Communication: 11.7 ms per step
  • Total: 1811.7 ms per step
  • Speedup (throughput): 8×
  • Parallel efficiency: 99.4 percent

Training time: 25 hours ÷ 8 = 3.1 hours

Inside the node, NVLink keeps gradient exchange small relative to compute, so efficiency stays near 99.4 percent. The picture inverts once the same model must synchronize across nodes over a commodity network.

Napkin Math 6.2: GPT-2 data parallel scaling: Commodity scale-out

The second case scales the same GPT-2 run across multiple nodes, replacing the intra-node NVLink hop with inter-node Ethernet for the bulk of the AllReduce. The 10 Gb Ethernet link models a commodity cloud tier without a dedicated training fabric, far slower than the InfiniBand of the reference cluster, which makes the cost of leaving the node easy to see.

Commodity network configuration: 32 GPUs across 4 nodes

  • Per-GPU batch: 16, global batch: 512
  • Intra-node communication: 11.7 ms (NVLink)
  • Inter-node communication: 5.8 GB @ 1.25 GB/s (10GbE) \(\approx\) 4650 ms

Performance results:

  • Compute: 1800 ms (27.9 percent of time)
  • Communication: 4661.7 ms (72.1 percent of time), so communication dominates and becomes the bottleneck.
  • Total: 6461.7 ms per step
  • Speedup (throughput): 8.9× faster → 2.8 hours
  • Parallel efficiency: 27.9 percent

The scale-out run bought its larger global batch with four nodes on a slow network. A single node can reach the same global batch another way, by running several local microsteps and accumulating their gradients before one AllReduce. The comparison below is therefore between two placements, one node with accumulation against four nodes without it; accumulation’s job is to keep the global batch equal, while the saving comes from never leaving the NVLink domain.

Napkin Math 6.3: Gradient accumulation speedup
Problem: A GPT-2 run on a commodity 10G network is communication-bound at 32 GPUs across 4 nodes, costing $359 for a fixed number of samples. Can a single 8-GPU node that uses gradient accumulation to match that global batch process the same samples for less?

Math:

  1. Effective batch size: 8 GPUs \(\times\) batch 16 \(\times\) 4 accumulation steps = 512.
  2. Communication overhead: With 4-step accumulation, the job AllReduces once every 4 steps (overhead = 11.7 ms / (4 \(\times\) 1800 ms) \(\approx\) \(0.162\%\)).
  3. Training duration: Total time is 3.1 hours.
  4. Scale-out baseline cost: 4 nodes \(\times\) 2.8 hours \(\times\) $32/hr = $359.
  5. Accumulation cost: 3.1 hours \(\times\) $32/hr = $100.

Systems insight: The one-node plan saves $259 (72.1 percent). Almost all of that saving comes from placement, because the four-node run spent most of each step on the slow inter-node link and the single node never uses it. Gradient accumulation is what makes the single node a fair substitute, because it reproduces the four-node global batch, and its own contribution to speed is small, since the same node already ran at 99.4 percent parallel efficiency without accumulation. Accumulation on a multi-node job still requires inter-node synchronization once per window.

In this GPT-2 scenario, changing the communication domain drops efficiency from 99.4 percent to 27.9 percent. Accumulation can preserve the effective batch while avoiding the slow scale-out link, at the cost of additional local computation between updates. It leaves each worker’s replicated model state unchanged, however; reducing that memory burden requires sharding.

6.3.3 Memory-efficient data parallelism with ZeRO and FSDP

Replicated data parallelism stores an identical copy of weights, gradients, and optimizer state on every GPU, so a 7B-parameter model demands 112 GB on each device and overflows an 80 GB accelerator before a single activation is allocated. The Zero Redundancy Optimizer (ZeRO) (Rajbhandari et al. 2020) and PyTorch’s Fully Sharded Data Parallel (FSDP) (Zhao et al. 2023) remove that duplication by sharding training state across workers while keeping each worker’s full forward and backward computation.3 Sharding can make a model fit in memory without splitting its layer computations across devices.

Rajbhandari, Samyam, Jeff Rasley, Olatunji Ruwase, and Yuxiong He. 2020. “ZeRO: Memory Optimizations Toward Training Trillion Parameter Models.” SC20: International Conference for High Performance Computing, Networking, Storage and Analysis, 1–16. https://doi.org/10.1109/sc41405.2020.00024.
Zhao, Yanli, Andrew Gu, Rohan Varma, Liang Luo, Chien-Chin Huang, Min Xu, Less Wright, et al. 2023. “PyTorch FSDP: Experiences on Scaling Fully Sharded Data Parallel.” Proceedings of the VLDB Endowment 16 (12): 3848–60. https://doi.org/10.14778/3611540.3611569.

3 ZeRO (Zero Redundancy Optimizer): Introduced by Microsoft researchers in 2019 and released in the DeepSpeed library (Rasley et al. 2020), ZeRO’s stages progressively partition optimizer states, gradients, and parameters. FSDP draws on the fully sharded approach associated with ZeRO’s deepest stage; the shared partitioning principle does not imply identical implementations or communication schedules.

Rasley, Jeff, Samyam Rajbhandari, Olatunji Ruwase, and Yuxiong He. 2020. “DeepSpeed: System Optimizations Enable Training Deep Learning Models with over 100 Billion Parameters.” Proceedings of the 26th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining, 3505–6. https://doi.org/10.1145/3394486.3406703.
Definition 6.3: Sharded data parallelism

Sharded data parallelism partitions optimizer state, gradients, and at the deepest stage the parameters themselves across data-parallel workers. Each worker processes its own minibatch shard and uses collectives to obtain the parameters and reduced gradients it needs. Full sharding reduces each worker’s persistent state toward \(1/\DeviceCount\) of the replicated training state; activations and temporary buffers still contribute to peak memory.

  1. Significance: Under the mixed-precision Adam convention used here, 16 bytes of state per parameter gives a 7B-parameter model 112 GB of training state, exceeding a 80 GB accelerator before activations. ZeRO Stage 3 across 64 workers reduces persistent state per device to 1.75 GB (0.25 bytes per parameter). The resulting AllGather and ReduceScatter traffic trades memory capacity for communication whose exposed cost depends on the interconnect and available overlap.
  2. Distinction: Unlike vanilla data parallelism, which replicates training state, sharded data parallelism partitions its storage. Unlike model parallelism, it retains each worker’s full forward and backward computation. Fully sharded execution gathers parameters for the current computation; the resharding schedule determines when it releases them.
  3. Common pitfall: A frequent misconception is that sharding is free memory. The on-demand AllGathers place parameter traffic on the critical path of every layer in every step; on slower interconnects or at small per-worker batch sizes, the exposed communication erodes throughput faster than the memory savings help. Capacity is purchased with bandwidth.

The scale of the savings is clearest on a model whose replicated training state only modestly overflows one accelerator, so that the effect of each sharding stage stays visible. The 175B reference returns after this trace when the question becomes whether sharding alone is enough.

Napkin Math 6.4: ZeRO memory savings
Problem: Training a 7B parameter Llama-2 model in mixed precision requires 16 bytes per parameter for weights, gradients, and optimizer state. Does the full training state fit on a single A100-80 GB, and how does ZeRO Stage 3 with 64 GPUs change the per-device memory requirement?

Baseline: Standard DDP (replicated state) Per-Parameter Memory Cost:

  • Weights (FP16): 2 bytes
  • Gradients (FP16): 2 bytes
  • Optimizer state (FP32): 12 bytes (4 master weight + 4 momentum + 4 variance)
  • Total: 16 bytes/parameter

Total Memory for 7B Model:

\[C_{\text{state,total}} = 7 \times 10^9 \times 16 \text{ bytes} \approx 112 \text{ GB}\]

Baseline outcome: Out-of-memory (OOM) on A100-80 GB.

Optimization: ZeRO-3 (fully sharded) With \(\DeviceCount=\) 64 GPUs, state is partitioned:

  • Weights: 2\(/\DeviceCount\) bytes
  • Gradients: 2\(/\DeviceCount\) bytes
  • Optimizer: 12\(/\DeviceCount\) bytes
  • Total: 16\(/\DeviceCount=\) 0.25 bytes/parameter effective storage

Per-GPU Memory:

\[C_{\text{state,ZeRO3}} = \frac{112 \text{ GB}}{64} \approx 1.75 \text{ GB}\]

Result: The persistent state fits, leaving ~78 GB for activations, gathered parameters, temporary buffers, and runtime allocations. Their simultaneous peak determines whether the chosen batch size fits.

ZeRO reaches that result in stages, and the intermediate stages matter because each one buys memory with a different communication pattern. Optimizer sharding alone (ZeRO-1) already brings the replicated footprint of the same model under the accelerator ceiling, because optimizer state is three-quarters of it; gradient sharding (ZeRO-2) and parameter sharding (ZeRO-3/FSDP) continue toward the fully sharded figure (figure 6). Each stage also changes which collectives the update uses (table 3).

Figure 6: ZeRO Memory Reduction: Standard data parallelism (DDP) replicates all model states across every GPU. ZeRO progressively partitions these states: ZeRO-1 shards optimizer states, ZeRO-2 adds gradient sharding, and ZeRO-3 shards the parameters themselves; each dashed outline marks the replicated stack a stage no longer holds. ZeRO-3 achieves linear memory scaling, enabling models with 100B+ parameters to fit on accelerators that could not hold the replicated state.
Table 3: ZeRO Sharding Stages: Each stage shards a different layer of training state and trades a different communication primitive. ZeRO-1 and ZeRO-2 both replace the gradient AllReduce with a reduction to each shard’s owner and a parameter AllGather, matching DDP volume, and differ only in whether each worker keeps a full-size gradient buffer; ZeRO-3 (FSDP) adds per-layer AllGathers during forward and backward passes, unlocking near-linear memory scaling at \(1.5\times\) communication.
Stage What is sharded Memory reduction Communication overhead
ZeRO-1 Optimizer states only ~4\(\times\) Reduce to owner + AllGather (\(1\times\) DDP volume)
ZeRO-2 + Gradients ~8\(\times\) ReduceScatter + AllGather (\(1\times\) DDP volume)
ZeRO-3/FSDP + Parameters ~\(\DeviceCount\) (linear in workers) AllGather before each layer (\(1.5\times\) DDP volume)

The first step, ZeRO-1, shards optimizer states across GPUs so each GPU stores only \(1/\DeviceCount\) of the Adam optimizer-related state. Gradients need only be reduced to the worker responsible for each parameter shard; after updating that shard, workers AllGather the updated parameters to restore the full replicas. This schedule supports the table’s baseline communication volume, whereas a full gradient AllReduce followed by a parameter AllGather would add traffic. Under the 12-byte convention that counts FP32 master weights, momentum, and variance, memory savings reduce optimizer state from \(12\DeviceCount\) bytes/param to \(12\) bytes/param total across the cluster.

Building on that owner-update contract, ZeRO-2 also shards gradients by replacing the full reduction with a ReduceScatter that leaves each GPU with only its \(1/\DeviceCount\) shard of reduced gradients. Each worker updates its \(1/\DeviceCount\) parameter partition using the corresponding optimizer state, and an AllGather then restores the updated parameter replicas. In the ideal ring accounting, each phase transfers \(\Parameters(\DeviceCount-1)/\DeviceCount\) elements per worker, for \(2\Parameters(\DeviceCount-1)/\DeviceCount\) across both phases, matching DDP’s byte volume (\(1\times\)) when gradient and parameter communication widths match. Replicated parameters avoid forward parameter gathers, although model operations may still communicate. Under the FP16-gradient convention, gradient storage falls from \(2\DeviceCount\) bytes per parameter across \(\DeviceCount\) workers to \(2\) bytes per parameter in total, or \(2/\DeviceCount\) per GPU, apart from transient buffers.

At the deepest stage, ZeRO-3 and FSDP partition the parameters as well, leaving each GPU with a \(1/\DeviceCount\) persistent slice of all three training states. The full-shard schedule considered here gathers each unit before forward computation, releases its unsharded parameters, and gathers them again for backward, before a ReduceScatter distributes the completed gradients for local shard updates. Across four ranks (figure 7) and under matching communication widths, ZeRO-1 (\(\OptimizerStateMemory/4\)) and ZeRO-2 (\(\OptimizerStateMemory/4, \GradientMemory/4\)) retain baseline \(1\times\) communication volume, whereas ZeRO-3 (\(\WeightMemory/4, \GradientMemory/4, \OptimizerStateMemory/4\)) adds the second parameter gather, yielding \(1.5\times\) the baseline volume in this accounting.

Figure 7: ZeRO State Partitioning across GPU Ranks: Which copy of each training state every GPU holds, for 4 workers. A filled full-width tile is a replicated copy; a quarter-width segment inside a dashed outline is that GPU’s shard, stepping one quarter per rank. ZeRO-1 shards optimizer state (\(\OptimizerStateMemory/4\)), ZeRO-2 adds gradients (\(\GradientMemory/4\)), and ZeRO-3 shards parameters too (\(\WeightMemory/4\)). The footers give per-worker communication volume relative to DDP: only ZeRO-3 pays more, for the parameter AllGathers.

Full sharding adds parameter-readiness dependencies that replicated DDP avoids. With one sharding unit per layer, the forward pass needs an AllGather to reconstruct parameters (\(\LayerParameterPayload\) bytes); resharding after forward requires another gather before backward (\(\LayerParameterPayload\) bytes), followed by a ReduceScatter for gradients (\(\LayerParameterPayload\) bytes under equal communication precision). For a model with \(\LayerCount\) layers, this schedule performs about \(3\LayerCount\) collective operations per step; DDP instead AllReduces gradient buckets as they become ready. At large worker counts, the ideal per-worker transfer volumes approach \(3\ParameterPayload\) bytes versus \(2\ParameterPayload\) for DDP, where \(\ParameterPayload\) is the model’s parameter bytes at the communication precision, not full training state, and equals \(\GradientPayload\) when parameters and gradients travel at the same width. These volumes do not determine elapsed time alone. While layer \(\LayerIndex\) computes, layer \(\LayerIndex+1\) can prefetch parameters, subject to memory headroom and fabric contention.

The choice between FSDP and DDP begins with peak memory. If replicated state, activations, and working buffers fit, DDP avoids repeated parameter gathers. When optimizer and gradient storage are the obstacle, ZeRO-2 offers savings while leaving parameters replicated. If parameters themselves do not fit, ZeRO-3/FSDP, offload, or partitioned computation must address that remaining constraint. For a 70B+ model on 80 GB devices, the need for tensor parallelism depends on the gathered layer size, activation budget, and throughput target; parameter count alone does not decide it.

Memory-efficient data parallelism requires careful tuning of sharding strategy (by layer, by transformer block, or flat) and mixed precision settings. Finer sharding reduces per-GPU memory but increases communication frequency, because more AllGather and ReduceScatter operations must execute per training step. Replicated or sharded, a data-parallel design earns its added workers only when they turn into faster progress toward target quality, and scaling efficiency measures that conversion.

Self-Check: Question
  1. A 7B-parameter transformer in mixed precision requires 112 GB of static memory for standard replicated DDP (14 GB for FP16 weights, 14 GB for FP16 gradients, and 84 GB for FP32 Adam master weights, momentum, and variance). Under ZeRO Stage 3 (or FSDP Full Shard) across 64 GPUs, what is the resulting static training memory per GPU?

    1. \(112\text{ GB}\), because ZeRO-3 only reduces dynamic activation memory rather than model state
    2. \(28\text{ GB}\), because only optimizer states are sharded while parameters and gradients remain fully replicated
    3. \(1.75\text{ GB}\), because weights, gradients, and optimizer states are each partitioned equally across all 64 workers
    4. \(0.25\text{ GB}\), because INT4 quantization eliminates floating-point representation entirely
  2. An 8-GPU node can use four-step gradient accumulation to match the effective batch of 32 GPUs connected by 10 Gb/s Ethernet. Explain why the smaller allocation can cost less even when the larger allocation completes the fixed-sample workload sooner.

  3. Order the memory sharding stages of data parallelism from least sharded (highest memory footprint) to deepest sharded (lowest memory footprint):

  1. ZeRO-2 (shards optimizer states and gradients using ReduceScatter)
  2. Standard DDP (full replication of parameters, gradients, and optimizer states)
  3. ZeRO-3 / FSDP (shards optimizer states, gradients, and model parameters with layer-wise AllGather/ReduceScatter)
  4. ZeRO-1 (shards optimizer states only, keeping parameters and gradients replicated)
  1. If a model’s parameters, gradients, optimizer state, activations, and working buffers already fit comfortably within single-GPU memory with high compute utilization under standard DDP, what is the expected throughput impact of enabling ZeRO-3 / FSDP Full Sharding?

    1. Throughput will increase linearly by \(N\times\) because sharding reduces per-GPU gradient memory
    2. Throughput can decrease because FSDP introduces additional AllGather collectives before forward and backward passes and ReduceScatter on the critical path
    3. Throughput will remain exactly identical because NCCL automatically hides all collective communication overhead
    4. Throughput will double because parameter sharding eliminates the backward pass entirely
  2. Why did modern distributed training frameworks replace centralized parameter servers with decentralized AllReduce collective topologies for dense synchronous training?

    1. Parameter servers cannot execute stochastic gradient descent updates with mathematical validity
    2. Parameter servers are restricted to CPU hosts and cannot interface with GPU accelerators
    3. AllReduce eliminates all network traffic by updating weights locally without exchanging data
    4. Centralized parameter servers create an \(\mathcal{O}(N)\) network bottleneck at the server’s network interface, whereas AllReduce distributes communication symmetrically across all workers
  3. In standard PyTorch DistributedDataParallel, each worker uses a ____ to partition dataset indices deterministically and assign rank-specific shards based on process rank and epoch seed.

See Answers →

6.4 Scaling Efficiency and Convergence

When doubling the number of GPUs yields only 1.5\(\times\) speedup for the same work, scaling efficiency is 75 percent. The ratio quantifies the shortfall but does not identify its cause; communication, synchronization, input delivery, and changed local kernel efficiency require separate examination. Understanding why scaling efficiency degrades and how convergence changes with parallelism also requires distinguishing hardware throughput from time to a target loss. The scaling metrics apply to every strategy; the convergence analysis that follows concerns data-parallel batch growth and stale updates. It supplies a batch-size constraint that tensor and pipeline configurations must also respect when they are combined with data parallelism.

6.4.1 The mathematics of scaling efficiency

Whether scaling from one device to many is worthwhile is measured by scaling efficiency, the fleet-level ratio introduced with the Fleet Law in The Fleet Law. If a model trains in time \(\SingleDeviceRunTime\) on one device, ideal (linear) scaling would train it in time \(\SingleDeviceRunTime/\DeviceCount\) on \(\DeviceCount\) devices; communication overhead, pipeline bubbles, and load imbalance reduce the speedup. Equation 1 restates the ratio:

\[\ScalingEfficiency = \frac{\SingleDeviceRunTime}{\DeviceCount\times \MultiDeviceRunTime} \tag{1}\]

where \(\MultiDeviceRunTime\) is the training time on \(\DeviceCount\) devices. Measured per step of the same work, \(\SingleDeviceRunTime\) is the quantity the Fleet Law writes as \(\IronLawComputeTime\), the single-device compute time that its compute term divides by \(\DeviceCount\). An efficiency of 1.0 means perfect linear scaling; an efficiency of 0.5 means the run achieves only half the ideal speedup.

Definition 6.4: Scaling efficiency

Scaling efficiency \((\ScalingEfficiency)\) is the ratio of actual training throughput to ideal linear throughput when increasing the number of ML compute devices (\(\DeviceCount\)).

  1. Significance: The ratio in equation 1 measures added devices against the specified baseline. At 0.50 efficiency, a 10,000-GPU run delivers the throughput that 5,000 perfectly scaled devices would, so half of the accelerator-hours buy no progress relative to ideal scaling. The equivalence is to an idealized baseline; a real 5,000-GPU run would have its own, typically higher, efficiency, and the loss is spread across every device as waiting rather than concentrated in idle ones.
  2. Distinction: Unlike single-node efficiency, which captures local bottlenecks like \(\Bandwidth\), scaling efficiency measures how performance changes with device count. Communication time \((\CommunicationTime(\DeviceCount))\) and synchronization contribute, but changing local kernel shapes or input delivery can also affect the ratio.
  3. Common pitfall: A frequent misconception is that scaling efficiency is constant. In reality, it depends on both device count and problem size. For a fixed model, the communication-to-compute ratio typically worsens as \(\DeviceCount\) increases (Amdahl’s Law). At a fixed \(\DeviceCount\), a smaller model or local batch leaves less computation per device to hide startup latency and coordination, so its efficiency falls sooner.

The Fleet Law leads to the scaling efficiency metric for fixed global work. Substituting its step time (principle 10) for \(\MultiDeviceRunTime\) in equation 1, with \(\IronLawComputeTime\) standing for \(\SingleDeviceRunTime\) per step as noted there, gives equation 2:

\[ \ScalingEfficiency = \frac{\IronLawComputeTime}{\DeviceCount\times \DistributedStepTime(\DeviceCount)} = \frac{1}{1 + \frac{\DeviceCount(\CommunicationTime(\DeviceCount) + \SynchronizationTime(\DeviceCount) - \OverlappedTime)}{\IronLawComputeTime}} \tag{2}\]

This form states the scaling efficiency bound (principle 12), under which perfect linear scaling \((\ScalingEfficiency = 1.0)\) is a theoretical limit, not a practical target. Real systems fall short of it by an amount that depends on the configuration and grows with \(\DeviceCount\). The 175B data-parallel example below reaches only 15 percent, and the hybrid layouts later in the chapter recover much of that loss without reaching 1.0. The gap between \(\ScalingEfficiency = 1.0\) and the achieved efficiency is the price of distributed execution, paid in communication and coordination.

The equation also exposes the scaling wall. As \(\DeviceCount\) increases, the compute term \((\IronLawComputeTime/\DeviceCount)\) shrinks, but the communication and synchronization terms can remain constant or grow; a ring AllReduce’s bandwidth term, for example, stays near its bound however many workers join (principle 11). Eventually, the denominator is dominated by overhead, driving efficiency toward zero.

For data-parallel training of the 175B reference model, the per-step communication cost is dominated by the AllReduce of 350 GB of gradients, and how much of that exchange hides behind computation decides the efficiency. The scaling efficiency depends critically on computation per communicated byte. At fixed tokens per update, increasing parameter count raises both transformer computation and gradient bytes roughly proportionally, so model size alone does not guarantee better scaling. Larger batches raise computation per optimizer step without changing gradient size; the catch is that large batches can harm convergence and so require learning-rate tuning and warmup schedules. Network bandwidth enters directly because doubling InfiniBand bandwidth halves the bandwidth term, but efficiency changes according to the full step-time denominator rather than in direct proportion. The network fabric is therefore a first-order determinant of cluster productivity, not a secondary concern. Every point of scaling efficiency it recovers is returned across the much larger accelerator investment, which is why fabric spending is judged by the efficiency it buys rather than by its own price.

These factors interact, so efficiency cannot be inferred from model size or GPU count alone. The following worked model fixes the parameter count, tokens per update, accelerator count, effective bandwidth, local compute efficiency before communication, and overlap before calculating one efficiency point. Changing any of those inputs requires recomputing the full step-time model.

Napkin Math 6.5: Scaling efficiency for a 175B model
Setup: A communication-only model for training a 175B model on a DGX H100 cluster with 400 Gb/s InfiniBand per GPU. Pure replicated data parallelism is a counterfactual baseline here: the calculation isolates gradient exchange but does not establish that the full training state fits on each device.

  • Compute per step (assuming batch size 2M tokens, 6 FLOPs per parameter per token): \(\TrainingStepOperations = 6 \times 175 \times 10^9 \times 2 \times 10^6 \approx 2.1 \times 10^{18}\) FLOPs

  • Per-GPU compute time on 1,024 GPUs, each at 1,979 TFLOP/s peak in the 8-bit floating-point (FP8) format developed in section 6.4.8 (50 percent local compute efficiency before communication). The general matrix multiplications (GEMMs) run in FP8 while the gradients below still cross the wire in FP16, because the collective’s data type is chosen independently of the arithmetic’s: \(\IronLawComputeTime/\DeviceCount \approx 2.1\) seconds

  • AllReduce time (for 350 GB of gradients using ring-AllReduce with overlap): \(\ExposedCommunicationTime(\DeviceCount) \approx 11.9\) seconds (raw ring transfer takes \(2 \times (N-1)/N \times 350 / 50\), about 14 seconds; the schedule could hide 75 percent of that transfer, but the available compute window caps hidden communication at 15 percent of raw transfer time)

  • Scaling efficiency: \(\ScalingEfficiency = \PerDeviceComputeTime/(\PerDeviceComputeTime+ \ExposedCommunicationTime)\), which is equation 2 with the per-device compute window \(\PerDeviceComputeTime= \IronLawComputeTime/\DeviceCount\) and the exposed term standing for \(\CommunicationTime(\DeviceCount) + \SynchronizationTime(\DeviceCount) - \OverlappedTime\). Here the numerator is 2.1 s and the complete denominator is 14 s, giving 15 percent. The exposed communication term already subtracts the hidden portion from the raw transfer time and includes collective synchronization; subtracting overlap again would double-count the same saving.

Systems insight: The low efficiency (15 percent) shows why naive data parallelism at this scale is insufficient. It is one operating point, fixed by 2M per update, 1,024 GPUs, and 15 percent overlap, not a universal threshold; another cluster size requires recomputing per-device compute time, collective cost, overlap, and topology. Hierarchy-aware systems recover much of the lost efficiency by combining data parallelism with tensor parallelism, which communicates over NVLink, and pipeline parallelism, which overlaps computation with communication.

↩︎ The compute window that bounds how much of a collective can hide is established in Overlap limits and exposed communication.

Parallelism-infrastructure interaction

The scaling efficiency of a run is set by the interaction between the model’s communication requirements and the infrastructure’s bandwidth hierarchy, not by the model architecture alone. Recovering the efficiency that pure data parallelism lost above means mapping each parallelism dimension onto the bandwidth tier that can carry its traffic, which section 6.6 works through three concrete configurations once tensor and pipeline parallelism have been developed.

The collective algorithm adds its own dependence on message size. Tree-based AllReduce reaches every rank in \(\mathcal{O}(\log \DeviceCount)\) steps and suits small, latency-bound messages, whereas large gradient buffers favor the bandwidth-optimal ring; message size, topology, and contention decide between them.

↩︎ The message size at which ring AllReduce overtakes tree AllReduce, derived from the latency and bandwidth terms of each algorithm, is established in The algorithm crossover point.

Interconnect selection determines whether large-scale deployments remain compute-bound or collapse into communication-bound regimes, and the bandwidth requirements for efficient distributed training are substantial, particularly for transformer models. BERT-Base (110M parameters) requires approximately 440 MB of gradient synchronization per iteration in FP32, while BERT-Large (340M parameters) requires approximately 1.4 GB. A ring AllReduce across 64 GPUs moves nearly twice the gradient bytes through each GPU’s link, so finishing BERT-Large synchronization within 50 ms requires roughly 54 GB/s of sustained per-GPU bandwidth, and BERT-Base about a third of that. For 175B-parameter language models, exact bandwidth requirements depend on the 3D-parallel configuration, gradient accumulation, overlap, and interconnect topology rather than a single universal number.

6.4.2 Scaling physics and Amdahl’s Law with communication

Even a small unscalable cost in a single-device step eventually dominates distributed execution, because adding \(\DeviceCount\) devices shrinks the parallelizable compute share (\(\SingleDeviceRunTime / \DeviceCount\)) while leaving the fixed residual untouched. An Amdahl-style model separates that scalable work from the fixed residual fraction \(\SerialFraction\) of the single-device baseline (Amdahl's Law at fleet scale).

That baseline fraction is not the synchronization share a profiler reports for a distributed step (the distributed Amdahl pitfall of The Fleet Law), because the compute share has been divided by \(\DeviceCount\) while the residual has not. A residual of 1 percent of the single-device step occupies about 84 percent of each step on 512 GPUs. Reading the observed share as \(\SerialFraction\) would therefore overstate the residual many times over and predict a far lower speedup ceiling than the model implies.

Plotted on log-log axes up to 512 GPUs, the same fixed-residual model shows how much speedup each residual fraction gives up (figure 8), complementing the scaling efficiency bound (principle 12). In this illustrative model, a small baseline fraction (\(\SerialFraction= 0.1\%\)) stays closer to ideal scaling than a larger fraction (\(\SerialFraction= 1\%\)). A residual equal to a tenth of baseline time (\(\SerialFraction= 0.10\)) limits asymptotic speedup to \(1/\SerialFraction= 10\times\). Actual collective and coordination costs can change with worker count, so predicting a training run requires the full step-time accounting of equation 2.

Figure 8: Speedup under a Fixed Residual: Effective speedup \(\DeviceCount/(1+(\DeviceCount-1)\SerialFraction)\) against GPU count on log-log axes, for illustrative fixed residual fractions \(\SerialFraction\) of baseline step time. Ideal scaling (dashed) is linear. Each curve bends away from it and flattens near \(1/\SerialFraction\): at 512 GPUs, \(\SerialFraction\) = 0.1 percent still delivers about two-thirds of ideal speedup, 1 percent about one-sixth, and 10 percent under 10\(\times\) in total. Darker curves carry larger \(\SerialFraction\).

Published benchmark runs show the same shortfall in practice. MLPerf Training times complete runs to a fixed quality target, and several submitters report the same system at several sizes within one round (Mattson et al. 2020; MLCommons 2025). Each of 5 such series for the GPT-3 and Llama 3.1 405B benchmarks falls below the ideal line drawn through its smallest configuration (figure 9). On NVIDIA’s Eos cluster, GPT-3 trained in about 58 minutes on 512 H100 GPUs and 3.9 minutes on 10,752, so a 21× increase in accelerators cut the time 14.9×, a scaling efficiency (equation 1, measured relative to the smallest configuration rather than one device) of 71 percent. Across the series, the largest configuration keeps 71–84 percent of ideal. Two effects compound in these numbers. Communication and coordination grow with worker count, and the larger configurations also train with larger global batches, which can require more samples to reach the target (section 6.4.6). Separating the two requires the step-level accounting of equation 2.

Mattson, Peter, Christine Cheng, Cody Coleman, Greg Diamos, Paulius Micikevicius, David Patterson, Hanlin Tang, et al. 2020. “MLPerf Training Benchmark.” Proceedings of Machine Learning and Systems (MLSys) 2: 336–49.

Figure 9: Measured Scaling in MLPerf Training: Time to train against accelerator count on logarithmic axes for five same-round series of the GPT-3 175B and Llama 3.1 405B benchmarks. Each dashed line is ideal scaling from that series’ smallest configuration, and the label gives the scaling efficiency of its largest configuration relative to its smallest. Global batch size grows with scale in several series, so the gap from ideal includes batch-dependent convergence as well as communication and coordination. Times are recomputed from the published run logs and can differ slightly from official scores. Data from MLCommons (2025).
MLCommons. 2025. MLPerf Training Benchmark Results, Rounds V3.1 to V5.1.

Predicting a run means pricing each term of equation 2 for the configuration at hand. For a large-message ring AllReduce, the communication term’s bandwidth contribution, the fleet counterpart of the single-machine iron law’s data-movement ratio \(\DataVolume/\Bandwidth\), is \(\frac{2(\DeviceCount-1)}{\DeviceCount} \frac{\DataVolume}{\LinkBandwidth}\), where \(\DataVolume\) is the payload being reduced (the gradient bytes \(\GradientPayload\) under data parallelism, or a shard of model state under sharding) and \(\LinkBandwidth\) is sustained per-link bandwidth; this expression omits per-message startup latency. Each wait must enter the accounting once.

↪ The single-machine iron law and its data-movement term are developed in Iron Law Mapping.

Orange energy-per-bit ladder with representative midpoints: InfiniBand 35 pJ/bit, NVLink 7.5 pJ/bit, and HBM 3.5 pJ/bit.

Communication energy climbs from HBM out to the network.

This communication overhead costs energy as well as wall-clock time, and the energy cost of communication grows with the physical distance between devices. At the scale of 10,000 GPUs, moving data is itself a power load. A full H100 NVLink envelope of roughly 9 PB/s at 7.5 pJ/bit represents about 540 kW before cooling and switch overhead, and the smaller NDR InfiniBand envelope (500 TB/s at 35 pJ/bit) still represents about 140 kW. The per-boundary accounting behind these per-bit costs is developed in The Physics of Data Movement. Overlap hides communication time but not its energy, so avoiding unnecessary movement is the direct way to reduce the power term.

As the device count grows for a fixed workload, the balance can move from a linear scaling regime toward a communication-bound regime. The transition has no universal GPU count, because it depends on compute per device, message sizes, topology, and overlap. Coordination overhead becomes consequential when its exposed time is no longer small relative to useful computation. Measurements at the intended workload and placement must establish the efficiency curve.

Two schematic step-time bars. Top, labeled Few GPUs: a long orange compute segment and a short violet comm segment. Bottom, labeled Many GPUs: the orange segment is a quarter as long while the violet segment keeps the same length, now longer than compute.

More GPUs shrink each step’s compute, not its communication.

The efficiency metrics directly influence the choice of parallelism strategy. Data parallelism works well in the linear scaling regime but becomes communication bound at scale, whereas the model-parallel strategies developed after this section replace part of that gradient traffic with other costs that the same efficiency equation prices once each mechanism is in place. Hardware efficiency metrics govern throughput, yet convergence theory determines whether distributed training reaches the same solution quality as single-device training. Parallelism affects optimization convergence in three ways: convergence rate changes with batch size, adding workers yields diminishing returns beyond the critical batch size, and learning-rate schedules must be revalidated when the global batch changes.

6.4.3 Convergence rate for synchronous data parallel SGD

Averaging gradients across \(\DeviceCount\) workers processes \(\DeviceCount\) times as many examples per step, but only reduces the number of steps to convergence when gradient noise—rather than loss curvature—is what holds back a larger step size. Formally, let \(\LossFunction\) be lower bounded by \(\LossLowerBound\) and have \(\SmoothnessConstant\)-Lipschitz gradients, so the smoothness constant limits how sharply the gradient can change as parameters move. Each worker computes gradients from \(\LocalBatchSize\) independent samples. At update \(\OptimizerStepIndex\), the aggregated estimator \(\MinibatchGradient_t\), the average of the \(\DeviceCount\) workers’ local gradients, is unbiased, and its conditional variance satisfies \(\mathbb{E}[\|\MinibatchGradient_t-\nabla\LossFunction(\ModelParameters_t)\|^2\mid\ModelParameters_t]\leq\SampleGradientStandardDeviation^2/(\DeviceCount \LocalBatchSize)\). When averaging reduces that noise, synchronous SGD makes steady progress toward parameters where the gradient is small; these assumptions bound progress toward a small gradient norm, not convergence to a global minimizer or a particular validation accuracy.

Theorem 6.1: Convergence rate for distributed SGD
For the update \(\ModelParameters_{t+1}=\ModelParameters_t-\LearningRate\MinibatchGradient_t\) with constant step size \(0<\LearningRate\leq 1/\SmoothnessConstant\), after \(\OptimizerUpdateCount\) synchronized updates,

\[ \frac{1}{\OptimizerUpdateCount}\sum_{t=0}^{\OptimizerUpdateCount-1}\mathbb{E}\!\left[\|\nabla\LossFunction(\ModelParameters_t)\|^2\right] \leq \underbrace{\frac{2\bigl(\LossFunction(\ModelParameters_0)-\LossLowerBound\bigr)}{\LearningRate \OptimizerUpdateCount}}_{\text{optimization term}} + \underbrace{\frac{\LearningRate \SmoothnessConstant\SampleGradientStandardDeviation^2}{\DeviceCount \LocalBatchSize}}_{\text{stochastic-variance term}}. \]

Choosing \(\LearningRate=\min\!\left\{1/\SmoothnessConstant,\sqrt{2(\LossFunction(\ModelParameters_0)-\LossLowerBound)\DeviceCount \LocalBatchSize/(\SmoothnessConstant\SampleGradientStandardDeviation^2\OptimizerUpdateCount)}\right\}\) balances the two terms. Before the smoothness cap becomes active, the stochastic contribution scales as \(\mathcal{O}(1/\sqrt{\DeviceCount \LocalBatchSize \OptimizerUpdateCount})\).

The theorem isolates the benefit that follows from the assumptions. With equal local batch size \(\LocalBatchSize\), synchronous data-parallel SGD computes the same minibatch estimator as one worker using batch size \(\DeviceCount\times \LocalBatchSize\) for that update, and the estimator variance decreases as \(1/(\DeviceCount\times \LocalBatchSize)\). It does not say that every increase in batch size proportionally reduces time to a target loss; learning-rate limits and critical-batch-size effects still apply. This distinction is the statistical efficiency of distributed training, separate from hardware efficiency. Because the theorem assumes perfect synchronization (BSP), convergence guarantees degrade as staleness increases whenever workers proceed at different rates or apply stale gradients.

6.4.4 Staleness impact across synchronization models

When a slow worker applies a gradient computed on an older parameter version, the update pushes the model along a direction that the current parameters may have already outgrown. The staleness parameter \(\GradientStaleness\) counts how many updates occur between computing and applying a gradient, tying the barrier savings of BSP, SSP, and ASP (section 6.3.1.5) to solution quality (Ho et al. 2013; Dutta et al. 2018). Because the damage from stale gradients depends on the objective, step-size schedule, worker count, and delay distribution, no single additive penalty applies across all runs.

Definition 6.5: Gradient staleness

Gradient staleness (\(\GradientStaleness\)) is the number of parameter updates that occur between the time a gradient is computed and the time it is applied to the global model state.

  1. Significance: It represents the synchronization error in distributed optimization. Increasing \(\GradientStaleness\) can improve throughput by reducing barrier waits \((\SynchronizationTime(\DeviceCount))\), but it typically degrades the rate of convergence, requiring more optimizer steps, and therefore more FLOPs, to reach the same accuracy.
  2. Distinction: Unlike network latency, which is a physical delay, staleness is an algorithmic offset that arises from the choice of synchronization protocol (e.g., ASP, SSP).
  3. Common pitfall: A frequent misconception is that staleness is “always bad.” In reality, it is a throughput-convergence trade-off: for some large-scale workloads, allowing bounded staleness is one practical way to keep thousands of GPUs in use.

The convergence behavior differs across these models in ways that directly affect training cost and solution quality. In BSP (\(\GradientStaleness=0\)), all workers compute on the same parameter version and aggregate before updating. Under the assumptions of theorem 6.1, the synchronized estimator inherits the \(\DeviceCount\times \LocalBatchSize\) minibatch guarantee.

SSP (\(\GradientStaleness\leq \StalenessBound\)) allows workers to proceed up to \(\StalenessBound\) iterations ahead of the slowest worker. Ho et al. (2013) bound the average regret of their SSP update sequence, the per-update gap between the loss its iterates incur and the loss of the best fixed parameters chosen in hindsight, at \(\mathcal{O}(\sqrt{(\StalenessBound+1)\DeviceCount/\OptimizerUpdateCount})\) for \(\DeviceCount\) workers and \(\OptimizerUpdateCount\) updates. The bound assumes convex Lipschitz component functions, a bounded domain, and a decreasing step size. It makes the staleness dependence explicit, since the bound grows with \(\StalenessBound\), but it measures a different quantity from the gradient-norm bound of theorem 6.1, which covers nonconvex objectives, so the two rates cannot be compared directly.

Dutta, Sanghamitra, Gauri Joshi, Soumyadip Ghosh, Parijat Dube, and Priya Nagpurkar. 2018. “Slow and Stale Gradients Can Win the Race: Error-Runtime Trade-Offs in Distributed SGD.” Proceedings of the Twenty-First International Conference on Artificial Intelligence and Statistics 84: 803–12.

Asynchronous SGD imposes no protocol-wide finite delay bound. Removing the barrier can improve update throughput, but a convergence rate requires additional assumptions about realized delays, the objective, and the step-size schedule. Dutta et al. (2018) analyze this as an error-runtime trade-off in which worker speed and gradient staleness jointly determine whether accepting a delayed update helps. Therefore neither a fixed square-of-average-delay penalty nor the complete loss of \(\DeviceCount\)-worker variance reduction follows from asynchronous execution alone. The protocol fixes each model’s delay control, but the strength of its convergence guarantee depends on further assumptions (table 4).

Table 4: Convergence Properties by Synchronization Model: The synchronization protocol determines the delay model; the convergence rate follows only after the objective, gradient, delay, and step-size assumptions are fixed.
Model Delay control Scoped guarantee Systems effect
BSP \(\GradientStaleness=0\) Synchronous \(\DeviceCount\times \LocalBatchSize\)-minibatch theorem 6.1 Waits for the slowest worker
SSP \(\GradientStaleness\leq \StalenessBound\) \(\mathcal{O}(\sqrt{(\StalenessBound+1)\DeviceCount/\OptimizerUpdateCount})\) average regret under convex assumptions (Ho et al. 2013) Bounds delay while reducing some waits
ASP No protocol-wide finite bound No universal rate without additional delay and objective assumptions Removes the global barrier but applies stale updates
Ho, Qirong, James Cipar, Henggang Cui, Seunghak Lee, Jin Kyu Kim, Phillip B. Gibbons, Garth A. Gibson, Greg Ganger, and Eric P. Xing. 2013. “More Effective Distributed ML via a Stale Synchronous Parallel Parameter Server.” Advances in Neural Information Processing Systems (NeurIPS) 26.

6.4.5 Learning rate scaling rules

Multiplying the global batch by \(\BatchScalingFactor\) across data-parallel workers cuts the number of optimizer updates per epoch by the same factor, so keeping the single-GPU learning rate leaves the model under-trained while jumping straight to a \(\BatchScalingFactor\)-fold larger step size can destabilize early epochs. Whenever data parallelism changes the effective batch size, the learning-rate schedule must be revalidated against the target quality. Two scaling rules provide starting points for that adjustment.

The linear scaling rule (Goyal et al. 2017) proposes that when batch size is multiplied by \(\BatchScalingFactor\), learning rate also increases by \(\BatchScalingFactor\):

\[ \ScaledLearningRate = \BatchScalingFactor\cdot \BaseLearningRate\]

The approximation compares one large-batch step at learning rate \(\BatchScalingFactor\LearningRate\) with \(\BatchScalingFactor\) consecutive small-batch steps at learning rate \(\LearningRate\). At batch size \(\BatchScalingFactor\times \BatchSize\), independent gradient contributions reduce estimator variance by factor \(\BatchScalingFactor\), but lower variance alone does not establish stability. The approximation also requires gradients to change little over the corresponding \(\BatchScalingFactor\) small-batch steps. Goyal et al. (2017) validated the recipe for ResNet-50/ImageNet at global batch size 8,192 with gradual warmup. Layer-wise adaptive rate scaling (LARS) and layer-wise adaptive moments based optimizer (LAMB) provide related large-batch approaches for ImageNet and BERT-style pretraining (You et al. 2017; You et al. 2020). A warmup period increases the learning rate from \(\BaseLearningRate\) to \(\BatchScalingFactor\cdot \BaseLearningRate\) over the first \(\WarmupStepCount\) iterations to reduce early instability; the schedule still requires validation:

\[ \LearningRate_t = \BaseLearningRate+ \frac{\OptimizerStepIndex}{\WarmupStepCount}(\BatchScalingFactor\cdot \BaseLearningRate- \BaseLearningRate) \quad \text{for } \OptimizerStepIndex< \WarmupStepCount\]

The rule and the warmup were introduced together, and the run that introduced them shows why the scaled learning rate needs the warmup. A learning-rate schedule tuned for an eight-GPU run need not reach the same accuracy at 256 GPUs once the global batch grows with the worker count.

War Story 6.1: The one-hour ImageNet run (2017)
Context: Facebook AI Research set out to train ResNet-50 on ImageNet in one hour using 256 GPUs, pushing data parallelism far beyond the batch sizes that earlier practice treated as safe (Goyal et al. 2017).

Mechanism: Scaling the global batch to 8,192 cut the number of optimizer updates per epoch by the same factor. Keeping the small-batch learning rate left too few effective updates to reach the target accuracy, while scaling the learning rate up by the same factor destabilized optimization in the first epochs, when the loss surface changes fastest.

Impact: Without the gradual warmup recipe, the large-batch runs reported higher training and validation error than the small-batch baseline. Higher hardware throughput alone did not preserve the quality target.

Fix: The team introduced the linear learning-rate scaling rule paired with a 5-epoch gradual warmup schedule, stabilizing optimization at batch size 8,192.

Systems lesson: Distributed training demands more than parallel hardware alone. Scaling changes the optimization regime, so the cluster, communication schedule, batch size, and learning-rate schedule must be tuned as one system.

The square root scaling rule is an alternative learning-rate heuristic to test when increasing batch size:

\[ \ScaledLearningRate = \sqrt{\BatchScalingFactor} \cdot \BaseLearningRate\]

This rule increases the learning rate more slowly than linear scaling. Its suitability depends on the optimizer, schedule, and training regime; exceeding a critical-batch estimate does not make it mandatory or guarantee convergence. The learning rate must be validated against the same target quality.

LARS (You et al. 2017) scales each layer’s update relative to its weight norm. The simplified LARS expression below illustrates the ratio of weight norm to gradient norm with weight decay. LAMB (You et al. 2020) applies a related layer-wise adaptation to an Adam-based update rather than using this raw-gradient denominator:

\[ \LearningRate_\ell = \LarsGlobalLearningRate\cdot \frac{\|\LayerWeights_\ell\|}{\|\MinibatchGradient_\ell\| + \WeightPenaltyStrength\|\LayerWeights_\ell\|} \]

Here \(\WeightPenaltyStrength\) is the weight-decay coefficient in the illustrated LARS expression, distinct from the failure-rate parameter used in reliability analysis. Layer-wise scaling controls update magnitude relative to parameter magnitude, but does not guarantee convergence for arbitrary batches. Its systems role is to extend the range of validated batch sizes over which added data-parallel workers can reduce time to quality.

6.4.6 Critical batch size and diminishing returns

Increasing the global batch eventually yields diminishing reductions in the optimization steps needed to reach a fixed target quality. The critical batch size \(\CriticalBatchSize\) marks the transition point beyond which increasing batch size yields diminishing returns in convergence per sample seen.

Definition 6.6: Critical batch size

Critical batch size \((\CriticalBatchSize)\) is a workload-dependent crossover batch size beyond which further batch growth yields diminishing reductions in optimization steps per added sample (McCandlish et al. 2018; Shallue et al. 2019).

  1. Significance: It characterizes statistical scaling, separately from hardware throughput. In the gradient-noise model, batches well below \(\CriticalBatchSize\) can reduce step count approximately in proportion to batch growth; above it, additional samples buy progressively smaller step-count reductions.
  2. Distinction: Unlike the memory-limited batch size (determined by memory capacity and activation footprint), the critical batch size depends on the model, data, optimizer, training phase, and target quality.
  3. Common pitfall: A frequent misconception is that training can be sped up indefinitely by adding GPUs. In reality, \(\CriticalBatchSize\) is a guide to diminishing statistical returns, not a hard physical ceiling or a universal optimum in wall-clock time.
Shallue, Christopher J, Jaehoon Lee, Joseph Antognini, Jascha Sohl-Dickstein, Roy Frostig, and George E Dahl. 2019. “Measuring the Effects of Data Parallelism on Neural Network Training.” Journal of Machine Learning Research 20: 1–49.

The gradient-noise-scale proxy for the critical batch size can be estimated as:

\[ \CriticalBatchSize\approx \frac{\text{tr}(\GradientCovarianceMatrix)}{\|\nabla \LossFunction(\ModelParameters)\|^2} \]

where \(\text{tr}(\GradientCovarianceMatrix)\) is the trace of the gradient covariance matrix (total gradient variance) and \(\|\nabla \LossFunction(\ModelParameters)\|^2\) is the squared gradient norm (signal strength). Intuitively, \(\CriticalBatchSize\) is the batch size at which averaging reduces gradient variance to the level of the true gradient magnitude.

Published large-batch regimes illustrate the scale rather than providing fixed thresholds. On ImageNet, Goyal et al. (2017) stabilized ResNet-50 at global batch 8,192 with warmup, and LARS extends ImageNet large-batch training further in some settings (You et al. 2017). For BERT-Large pretraining, LAMB reports training at 32K–64K batch sizes with layer-wise adaptive updates (You et al. 2020). Across other domains, McCandlish et al. (2018) show useful batch-size limits ranging from tens of thousands in ImageNet-like settings to millions in reinforcement-learning workloads, so new frontier-language-model thresholds should be measured rather than copied.

Goyal, Priya, Piotr Dollár, Ross Girshick, Pieter Noordhuis, Lukasz Wesolowski, Aapo Kyrola, Andrew Tulloch, Yangqing Jia, and Kaiming He. 2017. “Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour.” arXiv Preprint arXiv:1706.02677 abs/1706.02677.
You, Yang, Igor Gitman, and Boris Ginsburg. 2017. “Large Batch Training of Convolutional Networks.” arXiv Preprint arXiv:1708.03888.
You, Y., J. Li, S. Reddi, J. Hseu, S. Kumar, S. Bhojanapalli, X. Song, J. Demmel, K. Keutzer, and C.-J. Hsieh. 2020. “Large Batch Optimization for Deep Learning: Training BERT in 76 Minutes.” International Conference on Learning Representations (ICLR).

The gradient-noise model separates statistical efficiency from hardware efficiency. Well below \(\CriticalBatchSize\), increasing batch size can reduce optimization steps almost proportionally while preserving similar total sample use. Near \(\CriticalBatchSize\), the trade-off between fewer updates and more samples becomes material. Above it, step count approaches a lower limit while sample use continues to increase. Neither maximum samples per second nor minimum training time necessarily occurs at \(\CriticalBatchSize\): those objectives also depend on device utilization, communication, and the validated learning-rate schedule.

On log-log axes, the gradient-noise trade-off appears as a divergence between optimization step count and total sample consumption (figure 10). Below the critical threshold (\(\BatchSize/\CriticalBatchSize< 1\)), increasing batch size yields near-linear reductions in optimization steps with negligible sample waste; past the crossover point at \(\BatchSize/\CriticalBatchSize= 1\) (where both normalized costs equal 2), the step count curve asymptotically flattens toward 1 while total examples processed climb steeply along the \(1 + \BatchSize/\CriticalBatchSize\) trajectory.

Figure 10: Statistical Cost of Larger Batches: A normalized illustration of the gradient-noise trade-off model, with batch size divided by the fitted critical batch. Optimization steps approach a lower limit as batches grow, while total examples processed increase. The crossover is not a hardware-throughput optimum or a measured threshold for a particular model (McCandlish et al. 2018).
McCandlish, Sam, Jared Kaplan, Dario Amodei, and OpenAI Dota Team. 2018. “An Empirical Model of Large-Batch Training.” arXiv Preprint arXiv:1812.06162, ahead of print. https://doi.org/10.48550/arXiv.1812.06162.

Dividing the critical batch by the per-worker batch \(\LocalBatchSize\) estimates where worker growth leaves the near-proportional statistical scaling regime. With one local batch per update and its size held fixed, the crossover occurs around \(\DeviceCount\approx \CriticalBatchSize/\LocalBatchSize\) workers. Past that point, additional workers mainly raise sample throughput that the optimizer cannot convert into proportionally fewer steps. Gradient accumulation increases each worker’s contribution per update and lowers the corresponding worker count. Shrinking \(\LocalBatchSize\) moves the crossover outward but leaves less computation per worker to hide communication, coupling statistical and hardware efficiency.

That crossover informs a cost-time trade-off rather than setting a mandatory worker count. Larger batches may still reduce time to target even as they consume more examples. That benefit must be established with measured step time and a validated learning-rate schedule at the same target quality. Changing synchronization or compression also changes the optimization process, so its communication savings must be weighed against any additional steps required.

Checkpoint 6.2: Scaling decisions

Given a 7B-parameter model distributed across a cluster of 64 A100 GPUs (80 GB HBM2e each), estimate the critical-batch crossover. Use a pilot trace with \(\text{tr}(\GradientCovarianceMatrix)=1.6 \times 10^6\), \(\|\nabla \LossFunction(\ModelParameters)\|^2=100\), per-GPU batch \(\LocalBatchSize=4\), and a proposed gradient-accumulation depth of 32 steps, giving \(\GlobalBatchSize= 64 \times 4 \times 32 = 8{,}192\) samples.

6.4.7 Communication cost versus convergence speed

Communication savings matter only through the resulting time and cost to reach target model quality. Scaling a transformer language model from 8 to 64 workers, with a per-worker batch of \(\LocalBatchSize= 32\), shows how shorter steps and extra iterations to the same target combine into that cost.

Napkin Math 6.6: Scaling from 8 to 64 workers
Setup: This illustrative comparison assumes the iteration counts needed to reach one fixed target quality. They are scenario inputs, not measured convergence results or predictions from GPU count. The baseline is 100K iterations on single GPU with \(\LocalBatchSize=\) 32.

8 workers (BSP)

  • Effective batch size: \(\BatchSize=\) 8 \(\times\) 32 = 256
  • Learning rate: \(\LearningRate=\) 8 \(\times \BaseLearningRate\) (illustrative candidate with warmup; validate for the workload)
  • Expected iterations: 100K \(/\) 8 = 12.5K iterations
  • Assumed iterations to the same target: 12.8K iterations (98 percent efficiency)
  • Communication overhead: 15 percent (NVLink intra-node)
  • Wall-clock speedup: 100K \(\times\) 1 \(/\) (12.8K \(\times\) 1.15×) = 6.8×

64 workers (BSP)

  • Effective batch size: \(\BatchSize=\) 64 \(\times\) 32 = 2,048
  • Learning rate (\(\DeviceCount=\) 64 workers): \(\LearningRate= \DeviceCount\times \BaseLearningRate\) is the scenario’s assumed candidate schedule, not a prescription determined by \(\CriticalBatchSize\) alone
  • Assuming \(\CriticalBatchSize\approx\) 4,000 (below critical): the useful-worker bound is \(\CriticalBatchSize/\LocalBatchSize\approx\) 4,000 \(/\) 32 \(\approx\) 125 workers, so 64 workers stay inside the near-proportional regime; this estimate does not validate a learning-rate schedule
  • Expected iterations: 100K \(/\) 64 = 1.56K iterations
  • Assumed iterations to the same target: 1.72K iterations (91 percent efficiency)
  • Communication overhead: 45 percent (InfiniBand inter-node, 8 nodes)
  • Wall-clock speedup: 100K \(\times\) 1 \(/\) (1.72K \(\times\) 1.45×) = 40.1×

SSP workers: 64 workers (\(\StalenessBound=\) 4)

  • Same effective batch size: \(\BatchSize=\) 2,048
  • Illustrative learning-rate reduction, not a staleness theorem: \(\StalenessAdjustedLearningRate= \BspLearningRate/ \sqrt{1 + \StalenessBound}\) with \(\StalenessBound=\) 4, giving \(\StalenessAdjustedLearningRate\approx\) 0.45 \(\times \BspLearningRate\)
  • Expected iterations: Higher due to staleness penalty
  • Assumed iterations to the same target: 2.1K iterations (74 percent efficiency)
  • Communication overhead: 25 percent (reduced synchronization)
  • Wall-clock speedup: 100K \(\times\) 1 \(/\) (2.1K \(\times\) 1.25×) = 38.1×

Analysis (table 5)

Table 5: Illustrative Scaling Comparison: Assumed iteration counts to one target quality, communication increments relative to local compute time, and the resulting speedup and sample efficiency. These are scenario calculations, not empirical optimizer benchmarks.
Configuration Iterations Comm. overhead Wall-clock speedup Sample efficiency
1 GPU (baseline) 100,000 0% 1\(\times\) 100%
8 GPU BSP 12,800 15% 6.8× 98%
64 GPU BSP 1,720 45% 40.1× 91%
64 GPU SSP 2,100 25% 38.1× 74%

The 64-GPU BSP configuration achieves 40× speedup despite only 91 percent sample efficiency because the communication overhead (45 percent) is offset by the larger worker count. SSP at 64 workers comes close in wall-clock time with lower per-iteration communication (25 percent), but the extra iterations its stale updates require hold it to 38.1× against BSP’s 40.1×. In this scenario it therefore finishes slightly later and costs slightly more than 64-worker BSP.

Cost Analysis (assuming $2/GPU-hour):

  • 8: 12.8K iters \(\times\) 0.46 s/iter \(\times\) 8/3600 \(\times\) $2/GPU-hour = $26
  • 64 BSP: 1.72K iters \(\times\) 0.58 s/iter \(\times\) 64/3600 \(\times\) $2/GPU-hour = $35
  • 64 SSP: 2.1K iters \(\times\) 0.50 s/iter \(\times\) 64/3600 \(\times\) $2/GPU-hour = $37

Despite higher parallelism, 64-GPU training costs more per run due to communication overhead and reduced sample efficiency. The 8-GPU configuration is more cost-efficient, but its 6.8× speedup against the 64-GPU run’s 40.1× leaves it several times slower in wall-clock time. The choice depends on whether minimizing cost or minimizing time-to-result is the priority.

On the cost-time plane of figure 11, 64-worker BSP dominates 64-worker SSP on both axes. SSP saves communication per iteration, but its stale updates need enough extra iterations to cost more and finish later, while 8-worker BSP remains the cheaper and slower option.

Figure 11: Cost and Time in the Illustrative Scaling Scenario: Points reuse the assumed convergence counts and step times in the preceding notebook. The eight-worker configuration costs less but finishes later; the assumed sixty-four-worker SSP configuration is dominated by BSP in both cost and time. This is not a universal ranking of synchronization methods.

Moving a job along this cost-time frontier requires shrinking each message, synchronizing less often, or relaxing the global reduction topology. Gradient compression shrinks the payload directly by transmitting quantized, sparsified, or low-rank approximations, as in sign-based updates (Bernstein et al. 2018), Deep Gradient Compression (Lin et al. 2018), PowerSGD (Vogels et al. 2019), quantized SGD with convergence analysis (Alistarh et al. 2017), and empirical sparse gradient dropping for neural machine translation (Aji and Heafield 2017).

Bernstein, Jeremy, Yu-Xiang Wang, Kamyar Azizzadenesheli, and Animashree Anandkumar. 2018. “signSGD: Compressed Optimisation for Non-Convex Problems.” International Conference on Machine Learning (ICML) 80: 560–69.
Lin, Yujun, Song Han, Huizi Mao, Yu Wang, and William J Dally. 2018. “Deep Gradient Compression: Reducing the Communication Bandwidth for Distributed Training.” International Conference on Learning Representations (ICLR).
Vogels, Thijs, Sai Praneeth Karimireddy, and Martin Jaggi. 2019. “PowerSGD: Practical Low-Rank Gradient Compression for Distributed Optimization.” Advances in Neural Information Processing Systems (NeurIPS) 32.
Alistarh, Dan, Demjan Grubic, Jerry Z. Li, Ryota Tomioka, and Milan Vojnovic. 2017. “QSGD: Communication-Efficient SGD via Gradient Quantization and Encoding.” Advances in Neural Information Processing Systems (NeurIPS) 30: 1709–20.
Aji, Alham Fikri, and Kenneth Heafield. 2017. “Sparse Communication for Distributed Gradient Descent.” Proceedings of the 2017 Conference on Empirical Methods in Natural Language Processing, 440–45. https://doi.org/10.18653/v1/d17-1045.

↩︎ Quantized, sparsified, and low-rank gradient compression, the error feedback that keeps them convergent, and the criteria for when they pay, are established in Gradient Compression Under Bandwidth Scarcity.

Stich, Sebastian U. 2019. “Local SGD Converges Fast and Communicates Little.” International Conference on Learning Representations (ICLR).

Instead of shrinking each payload, Local SGD lowers synchronization frequency by letting workers perform \(\LocalUpdateCount\) local updates before averaging, which cuts collective calls per local update by a factor of \(\LocalUpdateCount\). Results for smooth, strongly convex objectives can recover synchronous SGD’s asymptotic rate under specified learning-rate and local-update-interval conditions (Stich 2019), so the synchronization interval remains part of the convergence contract rather than an unrestricted communication saving.

Where Local SGD keeps a global AllReduce at wider intervals, Decentralized SGD replaces the global collective with sparse neighbor exchanges along a communication graph. Immediate bandwidth demand drops, at the cost of taking additional rounds to spread information across the group; graph connectivity, link service time, and the optimization effect of delayed mixing determine whether that trade-off helps a geographically distributed workload.

Choosing among these three levers depends on which bottleneck binds and how many extra iterations the altered update costs. Each candidate must be judged by measured time to the same target quality. A narrower numeric format offers one more way to shrink the payload without changing the collective schedule, under conditions that FP8 makes precise.

6.4.8 FP8 for distributed training

Running matrix multiplications in 8-bit floating point (FP8) accelerates local compute, which can make a distributed job more communication-bound if gradients still cross the network in 16-bit precision. Compute precision and communication precision are separate choices: casting GEMM operands to half as many bytes reduces operand storage and local memory traffic, but it halves a collective payload only when the communication path explicitly transmits that narrower representation.

↩︎ The throughput that narrower precisions buy on current accelerators is established in Precision and throughput trade-offs.

FP8 matters to distributed training only after four dtypes are distinguished: the stored parameter dtype, the GEMM operand dtype, the accumulator or master-state dtype, and the collective wire dtype. Traditional mixed-precision training commonly retains FP32 optimizer or master state while using FP16/BF16 operands. FP8-capable accelerators add E4M3 (four exponent bits and three mantissa bits) and E5M2 (five exponent bits and two mantissa bits) operand formats optimized for different tensor distributions (Micikevicius et al. 2022).

The two FP8 formats trade precision against range. E4M3 keeps an extra mantissa bit for scaled weights and activations, which cluster within a predictable range, while E5M2 keeps an extra exponent bit for scaled gradients, which can span many orders of magnitude during backpropagation. Because tensor magnitudes drift during training, each tensor is multiplied before conversion by a scale, commonly derived from its recent maximum absolute value, a policy called dynamic scaling. Neither the format nor the scaling policy guarantees that every value survives conversion, so training quality must be validated for each workload.

↪ Per-parameter training memory under each of these formats is collected for reference in Numeric Precision and Training Memory.

Micikevicius, Paulius, Dusan Stosic, Neil Burgess, Marius Cornea, Pradeep Dubey, Richard Grisenthwaite, Sangwon Ha, et al. 2022. “FP8 Formats for Deep Learning.” arXiv Preprint arXiv:2209.05433.

An FP8 training contract pairs FP32 master or optimizer state and FP8 GEMM operands with higher-precision accumulation, and it can approach FP16 training quality on suitable workloads (Micikevicius et al. 2022). FP8 halves bytes only for tensors actually stored or transmitted in FP8, so a collective that reduces FP16 gradients still moves FP16 bytes even when every preceding GEMM ran in FP8. FP8 therefore earns its place in distributed training when lower-precision compute shortens the local critical path, or when an explicit communication cast shrinks payloads while the accumulation and scaling policy protects convergence. It changes representation, not the parallelization axis. Compression, local updates, and narrower formats all make each data-parallel step cheaper, yet none of them partitions an individual layer or its activations; that remaining capacity constraint motivates model parallelism.

Self-Check: Question
  1. A team scales a data-parallel training run from 8 to 64 workers, increasing the effective global batch size from 512 to 4,096 samples. If the model operates comfortably below its critical batch size, which learning-rate adjustment follows the linear scaling heuristic?

    1. Keep the learning rate unchanged, because large-batch variance reduction automatically stabilizes optimization
    2. Multiply the learning rate by 64 to match the total worker count rather than the batch expansion ratio
    3. Multiply the learning rate by \(\sqrt{8}\) from step zero without a warmup schedule
    4. Multiply the learning rate by \(8\times\) (matching the batch expansion ratio) and include a gradual linear warmup schedule
  2. Explain the distinction between hardware efficiency and statistical efficiency in distributed training, and describe a concrete scenario where a cluster configuration achieves high hardware efficiency but poor statistical efficiency.

  3. Why must the learning-rate schedule be revalidated when moving from Bulk-Synchronous Parallel (BSP) to Stale-Synchronous Parallel (SSP) at the same global batch size?

    1. Gradients computed against stale parameters can alter update stability, with effects that depend on delay, objective, and optimizer schedule
    2. SSP workers compute exact full-batch gradients instead of stochastic minibatches
    3. SSP eliminates all inter-GPU network communication, which alters the loss landscape
    4. SSP is mathematically restricted to second-order quasi-Newton optimizers that require small step sizes
  4. The threshold batch size \(B^* \approx \frac{\text{tr}(\Sigma)}{\|\nabla \mathcal{L}(\theta)\|^2}\), representing the point where gradient variance equals true gradient magnitude and past which larger batches yield diminishing returns in sample efficiency, is known as the ____.

  5. Why does the FP8 recipe described in this chapter pair the E4M3 format for forward-pass activations and weights with the E5M2 format for backward-pass gradients?

    1. E4M3 has a wider numerical range than E5M2, which prevents gradient underflow during backpropagation
    2. E4M3 spends more bits on the mantissa, giving finer precision for bounded weights and activations, while E5M2 spends more bits on the exponent, giving the wider dynamic range that small and widely varying gradients need
    3. E4M3 is an integer format while E5M2 is a floating-point format supported exclusively on CPU hosts
    4. E5M2 requires half the memory bandwidth of E4M3, accelerating the backward pass AllReduce
  6. Explain why per-tensor dynamic scaling is necessary in FP8 distributed training and describe how the scaling factor is computed during execution.

See Answers →

6.5 Model Parallelism

Sharded data parallelism distributes stored state but still asks each worker to execute every layer on its local examples. If one layer’s gathered parameters and working memory exceed device capacity, or its execution is too slow for the target schedule, splitting that computation becomes a candidate. Model parallelism addresses this form of the memory capacity gap (principle 2) by assigning different computations to different devices. Its value must be compared with offload, recomputation, and smaller local batches under the same throughput and quality requirements.

Definition 6.7: Model parallelism

Model parallelism is a distributed training strategy that partitions a single neural network’s parameters or operations across multiple devices so each device computes a distinct portion of the model.

  1. Significance: If a model with parameter state \(\WeightMemory\) is split across \(\TensorParallelDegree \PipelineParallelDegree\) model-parallel devices, the ideal per-device parameter footprint falls toward \(\WeightMemory/(\TensorParallelDegree \PipelineParallelDegree)\), enabling training of models that exceed single-device memory. The cost is extra communication for activations and gradients plus idle time from sequential dependencies, so the memory gain must exceed the transfer and pipeline-bubble overhead introduced by the partition.
  2. Distinction: Unlike data parallelism, which replicates the full model on every worker and shards the minibatch, model parallelism shards the model itself. Pipeline parallelism and tensor parallelism are implementation forms of model parallelism: one partitions layers into stages, while the other partitions individual tensor operations.
  3. Common pitfall: A frequent misconception is that model parallelism automatically speeds up training. Its primary benefit is capacity, not throughput; without careful scheduling and overlap, downstream devices wait for upstream activations and utilization can fall below a single-device baseline.

Ladder of three blue memory rungs for a 175B-parameter mixed-precision Adam training state: optimizer 2,100 GB (longest), gradients 350 GB, and weights 350 GB.

Weights are only a small slice of the full Adam training state.

Memory fit alone does not settle whether a model needs this kind of partition. For a 175B-parameter model, weights alone occupy 350 GB, or about 5.5 GB per GPU across a 64-GPU group, one-sixteenth of the 1,024-GPU reference cluster. Full mixed-precision Adam training state is much larger, 2,800 GB globally, yet ZeRO-3 across the same 64 GPUs reduces it to roughly 43.8 GB per GPU before activations, which fits an 80 GB accelerator. ZeRO-3 can therefore make the static state fit, as the notebook below confirms. It pays for that fit in traffic, because every step regathers every layer’s parameters across the data-parallel fabric, roughly three times the model’s parameter bytes per worker (section 6.3.3). It also cannot split an individual layer’s computation or activations across devices. Tensor parallelism addresses both limits by partitioning individual weight matrices across devices, using the column-then-row pairing of figure 15, detailed in section 6.5.3, which confines collective communication to block boundaries. Pipeline parallelism instead stages sequential layers across devices (section 6.5.2).

Activations add a separate memory requirement. Under the earlier unchecked-storage assumptions, a 2048-token sequence through 175B parameters produces roughly 1.1 TB at a local batch of 4 sequences; optimizer sharding does not reduce that storage. Recomputation trades memory for extra FLOPs, partitioning distributes activations, and offload moves them to another memory tier. Kernel and batch-size choices also change the budget. Full activation checkpointing brings the same modeled case down to ~19.3 GB. The following notebook, which uses a single-sequence local batch, checks whether ZeRO-3 plus checkpointing fits the model without partitioning its computation.

Napkin Math 6.7: The memory wall of scale
Problem: Training a 175B-parameter model (like GPT-3) on a 64-GPU group of NVIDIA A100s (80 GB), smaller than the 1,024-GPU reference cluster. The A100 carries the same 80 GB of HBM as the reference H100, so the capacity verdict carries over, and a small group is the harder test of whether sharding alone suffices. Can data parallelism with ZeRO-3 handle this?

Math:

  1. Parameter storage: 175B params \(\times\) 2 bytes (FP16) = 350 GB.
  2. Gradients and optimizer state: Gradients add 175B params \(\times\) 2 bytes = 350 GB, while Adam FP32 master weights, momentum, and variance add 175B params \(\times\) 12 bytes = 2,100 GB.
  3. Total static memory: 2,800 GB.
  4. ZeRO-3 sharding: With 64 GPUs, per-GPU static memory = 2,800 GB/64 GPUs \(\approx\) 43.8 GB.
  5. Activation memory: For sequence length 2048 and batch size 1, the canonical full-checkpointing strategy stores \(\approx\) 4.8 GB of activations per GPU.

Systems insight: 43.8 GB (static) + 4.8 GB (dynamic) = 48.6 GB. Under this simplified accounting, ZeRO-3 plus full activation checkpointing fits within the 80 GB A100 capacity, leaving material headroom for framework buffers and transient layer gathers. If those additional allocations exceed the remaining HBM, the design can reduce the local batch, offload state, increase the sharding degree, or add tensor or pipeline parallelism; tensor parallelism is not the only recourse.

In this example, sharding and checkpointing make the modeled state fit, leaving two distinct reasons to partition the model itself. One is regather traffic: on the 1,024-GPU reference cluster, ZeRO-3 moves about 1.1 TB per worker per step for this model, which on one NDR InfiniBand port takes about 10× as long as the step’s computation. The other is layer execution, since full sharding gathers parameters on demand without ever splitting a single layer’s computation or activations across devices. Model parallelism instead cuts the computation graph directly, either between sequential layer groups (such as layers 1–4 and layers 5–8) or inside a layer across channels and attention heads. Layer cuts introduce pipeline dependencies that leave downstream devices idle while an upstream stage computes, creating the pipeline bubble that governs utilization for this partition, whereas channel and head cuts expose concurrent work within a layer at the price of intra-layer exchanges. Other workloads still need these cuts simply to fit peak memory capacity.

These cuts enable the large-scale cases that exceed a single device for different reasons. GPT-3, with 175B parameters, was trained with model parallelism within each matrix multiplication and across layers (Brown et al. 2020), avoiding a full-parameter regather on every step; vision transformers processing high-resolution \(16\Glyph{k}{\times}16\Glyph{k}\) pixel images use model parallelism to bound activation memory; and mixture-of-experts (MoE) architectures, whose sparsely activated feed-forward blocks are developed in section 6.5.5, distribute their conditional computation paths across hardware (Shazeer et al. 2017; Lepikhin et al. 2021; Fedus et al. 2022).

Brown, Tom B., Benjamin Mann, Nick Ryder, Melanie Subbiah, Jared Kaplan, Prafulla Dhariwal, Arvind Neelakantan, et al. 2020. “Language Models Are Few-Shot Learners.” Advances in Neural Information Processing Systems 33: 1877–901. https://doi.org/10.48550/arxiv.2005.14165.

Each partitioning strategy trades single-device memory overflow for a different systems cost: layer-wise partitioning pays in idle time, pipeline parallelism pays in scheduling complexity to hide that idle time, and tensor parallelism pays in NVLink bandwidth to split individual layers. Sequence and context parallelism, expert parallelism, and sparse embedding sharding then extend the same trade-off to long-context activations, sparsely activated experts, and sparsely touched embedding tables.

Checkpoint 6.3: Model parallelism foundations

Verify your understanding of model sharding:

6.5.1 Layer-wise partitioning

Assigning consecutive blocks of layers to separate GPUs cuts each device’s weight footprint in proportion to the number of stages, but a single batch passing through those stages in sequence leaves every other GPU waiting for its turn. Where ZeRO-3 met the capacity limit by sharding storage while every worker still executed every layer, layer-wise model parallelism gives each device a unique fraction of the model to compute. With 8-way partitioning, the 175B-parameter model’s 350 GB of FP16 weights fall to approximately 44 GB per GPU. That is only the weights budget; activations, gradients, and optimizer state still need sharding, offload, or pipeline scheduling, the composition developed in section 6.6.

Layer-wise partitioning is the least invasive model cut. It saves memory by assigning consecutive layers to separate devices, but it preserves the model’s sequential dependence. In transformer architectures, this translates to specific devices managing defined sets of attention and feed-forward blocks. For a 16-layer transformer on four GPUs (figure 12), panel (a) maps the weight footprint reduction to one-quarter per device alongside forward activation and backward gradient transfers across stage boundaries, while panel (b) charts the resulting execution timeline, revealing that each GPU remains idle for six of eight time slots without microbatch pipelining.

Figure 12: Layer-Wise Model Parallelism: (a) A 16-layer transformer placed four consecutive layers per GPU, cutting each GPU’s weight footprint to one-quarter of the model. Forward activations cross each stage boundary left to right; gradients return right to left. (b) Without microbatching, one batch visits the stages in turn, forward (F) and then backward (B) in reverse, in equal schematic time slots, so each GPU works in only 2 of 8 slots. The microbatched schedule in figure 13 fills much of that idle time.

Partitioning layers changes where an optimizer update runs without necessarily changing the update rule. Each GPU can apply Adam (Kingma and Ba 2015), AdaFactor, or another optimizer to its parameter slice once the required gradients are complete. A device holding transformer layers 1–12 updates those layers; tied parameters, global gradient clipping, or a combined data-parallel group can still require coordination. Preserving synchronous optimization also requires the schedule to use consistent parameter versions. Sequential dependencies introduce pipeline bubbles, and unequal stage service times add waiting. The engineering problem is to overlap microbatches and balance stage work while preserving that update contract (Rasley et al. 2020).

Kingma, Diederik P., and Jimmy Ba. 2015. “Adam: A Method for Stochastic Optimization.” 3rd International Conference on Learning Representations (ICLR).

6.5.2 Pipeline parallelism

Without pipelining, a four-stage layer partition leaves three of the four GPUs idle at any moment because downstream stages cannot start until upstream stages finish the entire batch (figure 12). Pipeline parallelism breaks that stall by splitting the batch into smaller microbatches and streaming them through the stages like a relay race. As soon as GPU 1 finishes the initial transformer blocks on microbatch 1, it hands the resulting activation tensor to GPU 2 and immediately starts microbatch 2. For the 175B model with hidden dimension 12,288 and a microbatch of 4 sequences at 2,048 tokens each, that forward handoff carries approximately 201 MB per stage boundary per microbatch. GPU 2 needs that payload before processing the same microbatch, creating a dependency chain through the stages, while other microbatches occupy the remaining stages concurrently. Backward propagates activation gradients in reverse as each stage computes gradients for its own parameters.

Definition 6.8: Pipeline parallelism

Pipeline parallelism is a model parallelism technique that partitions a neural network’s layers into sequential stages assigned to different devices, passing activations forward and gradients backward between stages while overlapping computation across stages using microbatches to maintain throughput.

  1. Significance: Each boundary transfers forward activations and backward activation gradients. A forward tensor contains \(\MicrobatchSize \times \SequenceLength\times \HiddenDimension\times 2\) bytes at BF16, where \(\MicrobatchSize\) is the microbatch size. For a hidden dimension of 8,192 with microbatch size 1 and a 2,048-token sequence, the forward payload is approximately 8,192 \(\times\) 2,048 \(\times\) 2 \(\approx\) 34 MB per microbatch per boundary. Backward traffic and all microbatches must be counted before comparing this with a per-update gradient AllReduce or sizing a 50 GB/s InfiniBand link. In a balanced noninterleaved schedule with ideal transfers, the idle fraction is approximately \((\PipelineParallelDegree-1)/(\MicrobatchCount+\PipelineParallelDegree-1)\), where \(\PipelineParallelDegree\) is the stage count and \(\MicrobatchCount\) the microbatch count.
  2. Distinction: Tensor parallelism partitions operations within a layer and introduces communication among their participants. Pipeline parallelism instead transfers activations and their gradients between sequential stages. This coarser exchange can suit slower links when the transfer fits within the stage schedule; the interconnect name alone does not establish feasibility.
  3. Common pitfall: A frequent misconception is that adding pipeline stages always improves throughput. Each additional stage increases the pipeline bubble fraction \((\PipelineParallelDegree-1)/(\MicrobatchCount+\PipelineParallelDegree-1)\) unless the number of microbatches \(\MicrobatchCount\) scales proportionally, causing hardware to idle and erasing the benefit of deeper partitioning.

In the GPipe schedule of figure 13, a four-stage pipeline processes four microbatches (\(\PipelineParallelDegree=4, \MicrobatchCount=4\)), and dividing the global batch into discrete microbatches allows forward passes to overlap diagonally across stages before backward passes unfold in reverse order. While microbatching raises hardware utilization above naive sequential placement, pipeline fill (\(\PipelineTimeSlot_1\)–\(\PipelineTimeSlot_3\)) and drain (\(\PipelineTimeSlot_{12}\)–\(\PipelineTimeSlot_{14}\)) bubbles still leave each device idle for 6 of 14 time slots.

Figure 13: Pipeline Parallelism Schedule: A 4-stage pipeline processes 4 microbatches with all forward passes (F) before any backward pass (B), as in GPipe. Rows are pipeline stages and columns are equal time slots. Each backward pass enters a stage only after the next stage has produced that microbatch’s gradient, so every stage idles \(\PipelineParallelDegree-1\) slots in the forward phase and \(\PipelineParallelDegree-1\) in the backward phase, 6 of 14 slots in all.

Tracing the schedule grid in figure 13 column by column reveals how the fill and drain bubbles arise. In the first slot only stage 0 has work, the forward pass of microbatch 1. In the second, stage 0 starts microbatch 2 while stage 1 receives microbatch 1’s activations, and by the fourth slot every stage holds a different microbatch. The last stage then turns microbatch 4 around into its backward pass, and gradients travel upstream in reverse microbatch order, so stage 0 waits until the eleventh slot for its first gradient. Each stage therefore idles 3 slots in the forward phase and 3 more in the backward phase, 6 of the 14 slots in the step, whether those slots fall at the start of its row, the middle, or the end. That share, about 43 percent, is the bubble fraction \((\PipelineParallelDegree-1)/(\MicrobatchCount+\PipelineParallelDegree-1)\) at \(\PipelineParallelDegree=\MicrobatchCount=\) 4. Adding microbatches lengthens the busy diagonal without lengthening fill and drain in this balanced schedule. Increasing \(\MicrobatchCount\) is therefore one way to reduce the idle fraction; later schedules also change which work can occupy the gaps.

Two proportional bars, each split into orange busy time and red idle time: p = 4, m = 4 is 43 percent idle; p = 8, m = 32 is 18 percent idle.

Enough microbatches shrink the bubble even as stages double.

The same bubble term becomes concrete in the following worked example, where an 8-stage pipeline and 32 microbatches still leave a measurable amount of idle time.

↪ The bubble fraction across stage and microbatch counts, and its interleaved-schedule variant, are developed in Pipeline Arithmetic.

Napkin Math 6.8: The cost of the pipeline bubble
Problem: A large-model training run uses pipeline parallelism across 8 stages. To hide the sequential delay, the batch is split into 32 microbatches. What fraction of GPU cycles does the pipeline bubble leave idle?

Math: For balanced, noninterleaved synchronous stages under the one-forward-one-backward (1F1B) schedule developed below, with ideal transfers, the bubble fraction follows from the stage and microbatch counts. The time units below each combine one forward and one backward service interval; they are not individual optimizer steps.

  1. Wait time: At the start and end of each batch, GPUs sit idle for \(\PipelineParallelDegree-1\) steps.
  2. Productive time: GPUs compute for \(\MicrobatchCount\) steps.
  3. Bubble fraction: \((\PipelineParallelDegree-1) / (\PipelineParallelDegree-1+\MicrobatchCount) =\) 7 \(/\) (7 \(+\) 32) \(\approx\) 17.9 percent.

Systems insight: Pipeline parallelism is a utilization-memory trade-off. With this stage count and schedule fixed, reducing the bubble from 18 percent to 5 percent requires more microbatches \((\MicrobatchCount)\). In general, holding the bubble under 10 percent requires \(\MicrobatchCount> 9(\PipelineParallelDegree-1)\), because \((\PipelineParallelDegree-1)/(\MicrobatchCount+\PipelineParallelDegree-1) < 0.1\) rearranges to that bound. The activation memory those microbatches need depends on the schedule. GPipe retains activations across the microbatches, whereas the 1F1B schedule developed next releases them during the steady state. The modeled 17.9 percent idle fraction also motivates interleaved pipelining, which divides each device’s work into smaller stages. Interleaving can reduce the original 18 percent bubble, but additional transfers and memory requirements determine the net gain.

GPipe4 (Huang et al. 2019) introduced synchronous pipeline parallelism with microbatch accumulation, while PipeDream (Narayanan et al. 2019) developed asynchronous approaches with weight stashing. Modern systems employ 1F1B (one-forward-one-backward)5 scheduling to reclaim activation memory earlier; that lower memory pressure makes larger microbatch counts practical, and the larger \(\MicrobatchCount\) is what shrinks the bubble term.

4 GPipe: Published by Google in 2019, GPipe introduced synchronous microbatch pipelining that trained a 557M-parameter AmoebaNet across 8 Tensor Processing Units (TPUs) with near-linear scaling. Its schedule keeps every microbatch’s activations live until the backward pass, the cost that later schedules reduce.

Huang, Y., Y. Cheng, A. Bapna, O. Firat, D. Chen, M. X. Chen, H. Lee, et al. 2019. “GPipe: Efficient Training of Giant Neural Networks Using Pipeline Parallelism.” Advances in Neural Information Processing Systems (NeurIPS) 32: 103–12.
Narayanan, Deepak, Aaron Harlap, Amar Phanishayee, Vivek Seshadri, Nikhil R. Devanur, Gregory R. Ganger, Phillip B. Gibbons, and Matei Zaharia. 2019. “PipeDream: Generalized Pipeline Parallelism for DNN Training.” Proceedings of the 27th ACM Symposium on Operating Systems Principles, 1–15. https://doi.org/10.1145/3341301.3359646.

5 1F1B (one-forward-one-backward) scheduling: Unlike GPipe (which processes all forward passes before any backward passes), 1F1B interleaves them. For equal-sized microbatch activations and a non-interleaved schedule, peak retained activations per stage fall from \(\mathcal{O}(\MicrobatchCount)\) under GPipe to at most \(\mathcal{O}(\PipelineParallelDegree)\) under 1F1B, where \(\MicrobatchCount\) is the microbatch count and \(\PipelineParallelDegree\) the pipeline-stage count. Summed across stages, the corresponding bounds are \(\mathcal{O}(\MicrobatchCount\PipelineParallelDegree)\) and \(\mathcal{O}(\PipelineParallelDegree^2)\). This memory reclamation is what enables the large microbatch counts \((\MicrobatchCount\gg \PipelineParallelDegree)\) required to keep the pipeline bubble small.

At the schedule level, 1F1B is a warmup, steady-state, and drain loop. In algorithm 1, each stage alternates forward work for newer microbatches with backward work for older microbatches once gradients arrive, so activations can be released before the whole batch has completed.

Run on four stages with eight microbatches, the schedule gives each stage a short warm-up of forward passes, a steady state that alternates one backward with one forward, and a drain of the remaining backward passes (figure 14). The warm-up and drain phases still leave a bubble of roughly \((\PipelineParallelDegree-1)/(\MicrobatchCount+\PipelineParallelDegree-1)\), 6 of 22 slots here. Interleaving backward work in the steady state, however, frees each activation as soon as its backward consumes it. Stage 0 never holds more than four microbatches’ activations where an all-forwards-first schedule would hold all eight, so peak activation memory grows with the stage count rather than the microbatch count. That is the gain over GPipe-style all-forward-then-all-backward scheduling, and it lets the system raise \(\MicrobatchCount\) until activation memory, recomputation, or the global-batch constraint becomes the next limit.

Figure 14: One-Forward-One-Backward (1F1B) Pipeline Schedule: Four stages process eight microbatches in equal schematic slots. After a warm-up of forward passes, each stage alternates one backward pass with one forward pass, then drains its remaining backward passes. Fill and drain still idle every stage for 6 of 22 slots, the bubble fraction \((\PipelineParallelDegree-1)/(\MicrobatchCount+\PipelineParallelDegree-1)\), but each stage releases a microbatch’s activations as soon as that microbatch’s backward pass runs. The bars at the right count the most microbatches whose activations a stage holds at once, four at stage 0 and one at the last stage, against the eight an all-forwards-first schedule would hold (dashed).

The activation handoff has shape \(\MicrobatchSize \times \SequenceLength\times \HiddenDimension\); its completion still constrains the next stage. The 1F1B schedule in algorithm 1 reduces activation residency, but fill, drain, communication, and load imbalance leave idle time. Filling those remaining slots requires separating work that releases an upstream dependency from work that can wait.

Zero-bubble pipeline schedules further reduce idle time by overlapping weight gradient computation with activation gradient communication. In a standard backward pass, the GPU computes \(\partial \LossFunction/ \partial \WeightMatrix\) (weight gradient) and \(\partial \LossFunction/ \partial \LayerInputMatrix\) (activation gradient, sent to the previous stage) together. Zero-bubble scheduling splits these into separate kernels: a B kernel that computes only the activation gradient \(\partial \LossFunction/ \partial \LayerInputMatrix\) and sends it to the previous stage, and a W kernel that computes the weight gradient \(\partial \LossFunction/ \partial \WeightMatrix\) locally. The B kernel must execute promptly (it is on the critical path), but the W kernel can be scheduled opportunistically to fill bubbles.

The B/W split creates scheduling freedom, but weight-gradient work must still finish before the corresponding optimizer update. In the balanced four-stage, eight-microbatch schedule of figure 14, noninterleaved 1F1B still leaves \(3/11 \approx 27\%\) of each stage’s time idle, by the bubble fraction derived above. Reordering forward, activation-gradient, and weight-gradient work can reduce that gap. Approaching zero also depends on kernel durations, memory headroom, and optimizer synchronization; splitting backward alone does not guarantee it.

The trade-off is memory. Zero-bubble scheduling requires storing intermediate activations for longer (because the W computation is deferred), increasing peak memory usage. Some implementations address this by combining zero-bubble scheduling with activation checkpointing, selectively recomputing certain activations rather than storing them. The interaction between these techniques creates a three-way trade-off among pipeline bubble size, memory consumption, and recomputation overhead, an example of the displacement of overhead (principle 14).

6.5.3 Tensor parallelism

Every pipeline schedule so far keeps whole layers on each device, which is why its traffic is confined to stage boundaries and tolerates moderate interconnect bandwidth. The same property sets its limit. A pipeline cannot help when a single layer’s weights or activations exceed one device, and it cannot shorten the time one layer takes, because that layer still runs on one accelerator.

Tensor parallelism splits the weight matrices within each layer instead of assigning complete layers to devices. This operator-level parallelism (also called intra-layer parallelism) enables finer-grained distribution but requires high-bandwidth interconnects for the frequent intra-layer communication it introduces.

Definition 6.9: Tensor parallelism

Tensor parallelism partitions individual tensor operations across devices, commonly through column-parallel or row-parallel weight splits. Communication combines or redistributes the resulting tensor shards as required by the next operation. The Megatron-style forward-pass example below illustrates one such arrangement.

  1. Significance: The Megatron-LM arrangement developed below uses two AllReduce operations per transformer block in the forward pass, one after attention and one after the MLP, each reducing a 2-byte activation tensor of \(\BatchSize\times \SequenceLength\times \HiddenDimension\) elements, where \(\BatchSize\) counts the sequences in flight through the layer. A ring AllReduce moves roughly \(2(\TensorParallelDegree-1)/\TensorParallelDegree\) times that payload per GPU, and the exchange recurs in every one of the 96 blocks of the GPT-3 shape, with backward adding corresponding exchanges. Whether that traffic hides behind computation depends on the link that carries it, which the arithmetic after the mechanism quantifies. Computing model FLOPs utilization (MFU) requires the complete compute and exposed-communication time, not the bandwidth ratio alone.
  2. Distinction: Unlike pipeline parallelism, which communicates only at layer boundaries and transfers small activation slices, tensor parallelism synchronizes within every layer via AllReduce, making it sensitive to the per-operation latency of the interconnect and favoring a fast communication domain such as NVLink, which can extend beyond one node.
  3. Common pitfall: Extending tensor parallelism across nodes without checking the transfer budget can erase the compute saving. The reference NVLink specification is approximately 900 GB/s bidirectional, or 450 GB/s per direction; InfiniBand NDR provides 50 GB/s per port, a 9× per-direction gap. These specifications identify a placement risk. Whether the split helps depends on sustained bandwidth, operation size, compute saved, and overlap.

Frequent intra-layer exchanges favor placing tensor-parallel groups within the fastest available communication domain. Pipeline stages communicate at coarser boundaries and can often span slower domains when their transfers fit the schedule. This difference motivates a hybrid that maps each exchange to a suitable fabric tier; it does not impose a universal node boundary for either strategy.

Two violet bars: NVLink at 450 GB/s per direction and InfiniBand NDR at 50 GB/s, with a 9× arrow between their ends.

Tensor-parallel exchanges belong on the fast tier, about 9\(\times\) an NDR port.

6 Megatron-LM: NVIDIA’s 2019 framework that trained an 8.3B-parameter transformer (24× BERT-Large and 5.5× GPT-2 at the time) with only two AllReduce operations per transformer block in the forward pass (one after attention, one after the multilayer perceptron (MLP)). The run reached 76 percent scaling efficiency across 512 GPUs, and its partitioning remains influential in large-scale transformer training.

Shoeybi, Mohammad, Mostofa Patwary, Raul Puri, Patrick LeGresley, Jared Casper, and Bryan Catanzaro. 2019. “Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism.” arXiv Preprint arXiv:1909.08053.

Megatron-style tensor parallelism6 (Shoeybi et al. 2019) partitions matrix multiplications by alternating column and row splits. In the two-GPU dataflow of figure 15, column-parallel splitting partitions the first weight matrix \(\ColumnParallelWeightMatrix= [\ColumnParallelWeightMatrix_1 \mid \ColumnParallelWeightMatrix_2]\) to produce local activation slices \(\LayerOutputMatrix_1, \LayerOutputMatrix_2\) from replicated input \(\LayerInputMatrix\); row-parallel splitting then partitions the second weight matrix \(\RowParallelWeightMatrix= [\RowParallelWeightMatrix_1 ; \RowParallelWeightMatrix_2]\) so that each GPU computes partial products \(\RowParallelOutputMatrix_1, \RowParallelOutputMatrix_2\) locally, deferring cross-device communication to a single amber AllReduce that reconstructs output \(\RowParallelOutputMatrix\).

Column-parallel linear layers split weights along columns. For input \(\LayerInputMatrix\) and weight matrix \(\WeightMatrix= [\WeightMatrix_1 \mid \WeightMatrix_2]\) split across 2 GPUs: \[\LayerOutputMatrix= \LayerInputMatrix\WeightMatrix= \LayerInputMatrix[\WeightMatrix_1 \mid \WeightMatrix_2] = [\LayerInputMatrix\WeightMatrix_1 \mid \LayerInputMatrix\WeightMatrix_2]\] Each GPU computes its partition independently. The concatenation in the equation is logical, because when the next operation is row-parallel, each output shard remains on its producing device and feeds the matching weight shard without an AllGather. The row-parallel half of the pattern splits weights along rows, \(\WeightMatrix= \begin{bmatrix} \WeightMatrix_1 \\ \WeightMatrix_2 \end{bmatrix}\): \[\LayerOutputMatrix= \LayerInputMatrix\WeightMatrix= \LayerInputMatrix_1 \WeightMatrix_1 + \LayerInputMatrix_2 \WeightMatrix_2\] Each GPU computes a partial sum, and the system pays one AllReduce to combine the partial outputs.

Figure 15: Matrix Partitioning under Tensor Parallelism: A Megatron-LM layer pair on two GPUs, read left to right. The first layer (for example, QKV or the first feed-forward layer) is split by columns, \(\ColumnParallelWeightMatrix = [\ColumnParallelWeightMatrix_1 \mid \ColumnParallelWeightMatrix_2]\), so each GPU computes its own slice \(\LayerOutputMatrix_i\) of the replicated input’s output. The second layer is split by rows, \(\RowParallelWeightMatrix = [\RowParallelWeightMatrix_1 ; \RowParallelWeightMatrix_2]\), so each slice feeds its matching shard on the same GPU without communication. The only collective is the amber AllReduce that sums the partial outputs \(\RowParallelOutputMatrix_1 + \RowParallelOutputMatrix_2\), leaving the full result on both GPUs.

The column-then-row sequence of figure 15 embodies the governing architectural invariant. Pairing a column-parallel layer directly with a row-parallel layer allows intermediate activations (\(\LayerOutputMatrix_1, \LayerOutputMatrix_2\)) to remain strictly local on each GPU, confining inter-device synchronization to a single collective at the end of the block. Megatron applies that pattern twice in each transformer block. The QKV projection is column-parallel and its attention output projection is row-parallel, then the first feed-forward layer is column-parallel and the second feed-forward layer is row-parallel. The design places one AllReduce after attention and one after the feed-forward network, for two AllReduce operations per transformer layer. Communication volume per transformer layer depends on sequence length \(\SequenceLength\), hidden dimension \(\HiddenDimension\), tensor-parallel degree \(\TensorParallelDegree\), and batch size \(\BatchSize\), the number of sequences in flight through the layer (the local batch, or the microbatch \(\MicrobatchSize\) when the layer also sits in a pipeline). The activation payload is: \[\ActivationPayloadSize= \BatchSize\times \SequenceLength\times \HiddenDimension\times \ElementStorageSize\]

A ring AllReduce transfers approximately \(2(\TensorParallelDegree-1)/\TensorParallelDegree \times \ActivationPayloadSize\) bytes per GPU, which is close to \(2\ActivationPayloadSize\) for large \(\TensorParallelDegree\). For the GPT-3 shape (\(\SequenceLength=\) 2048, \(\HiddenDimension=\) 12,288, 96 layers) with \(\BatchSize=\) 4 and FP16, the activation payload is 4 \(\times\) 2048 \(\times\) 12,288 \(\times\) 2 \(\approx\) 201 MB.

At \(\TensorParallelDegree=\) 8 the ring factor is 1.75, giving roughly 352 MB per AllReduce. With two AllReduces in each of the 96 layers, this totals approximately 67.6 GB per forward microbatch. The symmetric backward exchanges bring the total to roughly 135 GB per forward/backward microbatch, before any recomputation. Set against the computation it serves, that volume is modest on the right link and prohibitive on the wrong one. At the per-layer compute rate of the earlier feasibility check, one such microbatch takes about 2.2 s of forward and backward computation per GPU; its tensor-parallel traffic takes about 0.3 s on NVLink but about 2.7 s on one InfiniBand port, longer than the computation. The number of microbatches per update and the available overlap then determine the required fabric service rate.

Tensor parallelism eventually reaches a workload-dependent limit because smaller operation shards leave less computation to cover communication. Per-GPU ring AllReduce bytes approach 2\(\times\) the activation tensor size, while local matrix shapes and collective startup costs change with group size. The useful degree therefore depends on layer shape, microbatch size, and the fast communication domain. Llama 3 405B’s TP=8 arrangement within NVLink-connected H100 nodes (Dubey et al. 2024) and node-local groups in other large training systems (Z. Jiang et al. 2024) illustrate a placement choice, not a universal eight-device limit. Tensor parallelism also costs more to adopt than data parallelism. It replaces standard linear layers with column-parallel and row-parallel variants inside the model definition, whereas data parallelism wraps the model externally without modifying its internals.

Dubey, Abhimanyu, Abhinav Jauhri, Abhinav Pandey, Abhishek Kadian, et al. 2024. The Llama 3 Herd of Models. arXiv preprint arXiv:2407.21783.
Jiang, Ziheng, Haibin Lin, Yinmin Zhong, Qi Huang, Yangrui Chen, Zhi Zhang, Yanghua Peng, et al. 2024. “MegaScale: Scaling Large Language Model Training to More Than 10,000 GPUs.” 21st USENIX Symposium on Networked Systems Design and Implementation (NSDI 24), 745–60.

6.5.4 Sequence and context parallelism

While tensor parallelism partitions weight matrices within linear layers, the memory footprint of large-scale transformer training is increasingly dominated by activations. As models scale their context length from thousands to hundreds of thousands or millions of tokens (\(\SequenceLength\ge 32\text{k}\dots 1\text{M}+\)), the activation footprint scales proportionally: \[\ActivationMemory = \mathcal{O}(\BatchSize\times \SequenceLength\times \HiddenDimension\times \LayerCount)\] for linear, normalization, and residual layers, and \(\mathcal{O}(\BatchSize\times \AttentionHeadCount \times \SequenceLength^2 \times \LayerCount)\) for un-tiled attention (or \(\mathcal{O}(\BatchSize\times \SequenceLength\times \HiddenDimension\times \LayerCount)\) with tiled FlashAttention). At long contexts, activation memory dwarfs parameter storage, exposing the memory capacity gap (principle 2). Two complementary paradigms address this constraint by sharding along the sequence axis: sequence parallelism (SP) within the tensor-parallel domain, and context parallelism (CP) across dedicated long-sequence process groups.

Definition 6.10: Sequence and context parallelism

Sequence and context parallelism partition the token sequence dimension to reduce per-device activation storage. Sequence parallelism (SP) retains sequence shards during operations such as LayerNorm and Dropout within a tensor-parallel group. Context parallelism (CP) partitions the sequence across a dedicated group and exchanges the information needed for attention, through mechanisms developed below that either pass key/value blocks around a ring or transpose between sequence and head partitions.

  1. Significance: Long contexts can exhaust activation memory even when sharded model state fits. The relevant limit depends on batch size, layer shapes, attention kernels, and checkpointing. Sequence parallelism divides the targeted activation storage by \(\TensorParallelDegree\) while preserving the ideal collective payload volume in the decomposition below. Context parallelism distributes sequence-dependent storage; linear context growth (\(\ContextParallelDegree\times \SingleDeviceContextLength\), with \(\ContextParallelDegree\) denoting the context-parallel degree) is an ideal capacity estimate that still requires communication buffers and computation to fit the budget.
  2. Distinction: Tensor parallelism partitions weight matrices along hidden dimensions \(\HiddenDimension\), whereas context parallelism partitions the sequence axis \(\SequenceLength\). Ring Attention exchanges key/value chunks between devices, while Ulysses uses an AllToAll to transpose between sequence and head dimensions. Both require placement that can service their exchanges within the attention schedule.
  3. Common pitfall: Assuming context parallelism eliminates the quadratic attention compute complexity. CP distributes the attention computation across devices, reducing per-device memory and FLOPs by \(1/\ContextParallelDegree\), but the aggregate cluster FLOPs for dense self-attention still scale quadratically as \(\mathcal{O}(\SequenceLength^2)\).

Megatron sequence parallelism

In the Megatron-style arrangement just derived, the column-then-row pairing in figure 15 splits the QKV projection and first MLP layer column-wise, and the attention output projection and second MLP layer row-wise. The surrounding LayerNorm, Dropout, and residual operations retain replicated activations across all \(\TensorParallelDegree\) devices. LayerNorm operates across a token’s hidden features, while Dropout and residual addition operate element-wise; none requires another token’s features. This token independence permits partitioning the otherwise replicated \(\BatchSize\times \SequenceLength\times \HiddenDimension\) activation tensor along its sequence dimension.

Megatron Sequence Parallelism (Korthikanti et al. 2023) eliminates this redundancy by sharding the sequence dimension across the \(\TensorParallelDegree\) ranks for all non-tensor-parallel operations. Instead of replicating activations, each GPU holds only a \(\BatchSize\times (\SequenceLength/\TensorParallelDegree) \times \HiddenDimension\) slice during LayerNorm and Dropout.

Korthikanti, Vijay Anand, Jared Casper, Sangkug Lym, Lawrence McAfee, Michael Andersch, Mohammad Shoeybi, and Bryan Catanzaro. 2023. “Reducing Activation Recomputation in Large Transformer Models.” Proceedings of Machine Learning and Systems (MLSys) 5: 341–53.

This sharding incurs zero additional communication volume. In standard tensor parallelism, the row-parallel matrix multiplication is followed by an AllReduce to sum partial products across ranks. An AllReduce decomposes into a ReduceScatter followed by an AllGather, the identity established among the collective primitives in The six core primitives: \[\text{AllReduce}(\RankContribution) \equiv \text{AllGather}(\text{ReduceScatter}(\RankContribution))\] Megatron-SP decouples this collective pair across the transformer block. Following the row-parallel linear layer, a ReduceScatter reduces partial sums while scattering the resulting activations along the sequence dimension, leaving each GPU with an \(\SequenceLength/\TensorParallelDegree\) token slice. LayerNorm, residual additions, and Dropout then execute on these local slices with zero cross-device communication. Immediately before the next column-parallel linear layer, an AllGather across the sequence dimension reassembles the complete \(\SequenceLength\) tokens required for the weight-partitioned matrix multiplication.

In this ideal payload accounting, standard TP executes two AllReduces per transformer block (\(2 \times 2(\TensorParallelDegree-1)/\TensorParallelDegree \times \ActivationPayloadSize\) bytes), while Megatron-SP executes two ReduceScatter and AllGather pairs (\(2 \times [(\TensorParallelDegree-1)/\TensorParallelDegree + (\TensorParallelDegree-1)/\TensorParallelDegree] \times \ActivationPayloadSize= 2 \times 2(\TensorParallelDegree-1)/\TensorParallelDegree \times \ActivationPayloadSize\) bytes). The volumes match while the targeted activation storage falls by a factor of \(\TensorParallelDegree\). Equal bytes do not imply equal elapsed time, because separating the collectives changes readiness, startup costs, and overlap opportunities.

Context parallelism with ring attention versus Ulysses

Increasing sequence length \(\SequenceLength\) can exhaust the remaining activation budget after sequence parallelism and checkpointing. Context parallelism of degree \(\ContextParallelDegree\) distributes the sequence across \(\ContextParallelDegree\) accelerators. Attention then needs exchanges across sequence partitions. Ring-based point-to-point transfers and AllToAll transpositions provide two ways to supply that information, and can also be combined hierarchically. The ring method relies on an online softmax, which keeps a running maximum and a running sum of the attention scores seen so far. Each arriving key/value tile can then be folded into the partial result, with the earlier contribution rescaled whenever the maximum changes, so no device ever stores the full attention matrix.

Ring Attention (Liu et al. 2023) organizes devices in a logical ring where each GPU holds a query chunk \(\AttentionQueryMatrix_i\) of length \(\SequenceLength/\ContextParallelDegree\) and an initial key/value chunk \((\AttentionKeyMatrix_i, \AttentionValuesMatrix_i)\). Computation proceeds in \(\ContextParallelDegree\) rounds along the ring. In each round, GPU \(\ContextParallelRankIndex\) computes block attention between its stationary \(\AttentionQueryMatrix_i\) and resident \((\AttentionKeyMatrix_j, \AttentionValuesMatrix_j)\) tiles using an online softmax accumulator, while asynchronously transmitting \((\AttentionKeyMatrix_j, \AttentionValuesMatrix_j)\) to ring neighbor \((\ContextParallelRankIndex+1) \bmod \ContextParallelDegree\) and receiving \((\AttentionKeyMatrix_{j-1}, \AttentionValuesMatrix_{j-1})\) from \((\ContextParallelRankIndex-1) \bmod \ContextParallelDegree\). After \(\ContextParallelDegree\) rounds every query chunk has attended to every key/value tile, yet no device ever stores the full key/value sequence (figure 16).

Liu, Hao, Matei Zaharia, and Pieter Abbeel. 2023. “Ring Attention with Blockwise Transformers for Near-Infinite Context.” arXiv Preprint arXiv:2310.01889, ahead of print. https://doi.org/10.48550/arXiv.2310.01889.
Figure 16: Ring Attention Rounds: Context parallelism of degree four on four GPUs. Each GPU keeps its query chunk and, in each round, attends to the key/value tile it currently holds while sending that tile to the next GPU in the ring; dashed arrows close the ring from GPU 3 back to GPU 0. After four rounds every query chunk has seen every tile, so each GPU’s attention output for its own queries is complete. The transfer hides behind the block computation only when chunks are long enough, the overlap condition derived next.

For one sequence with standard multi-head attention, let \(\ContextChunkTokenCount=\SequenceLength/\ContextParallelDegree\) be the tokens per chunk, \(\HiddenDimension\) the total head width, \(\ElementStorageSize\) the bytes per stored element, \(\PeakRate\EfficiencyHw\) the sustained attention FLOP/s, and \(\SingleLinkBandwidth\) the one-way transfer rate. Computing both \(\AttentionQueryMatrix\AttentionKeyMatrix^T\) and the weighted-value product costs approximately \(4\ContextChunkTokenCount^2 \HiddenDimension\) FLOPs, while sending \(\AttentionKeyMatrix\) and \(\AttentionValuesMatrix\) costs \(2 \ContextChunkTokenCount \HiddenDimension\, \ElementStorageSize\) bytes. Ignoring startup, softmax, and overlap interference gives the necessary tile-size estimate: \[\frac{4\ContextChunkTokenCount^2 \HiddenDimension}{\PeakRate\EfficiencyHw} \ge \frac{2 \ContextChunkTokenCount \HiddenDimension\, \ElementStorageSize}{\SingleLinkBandwidth} \iff \ContextChunkTokenCount\ge \frac{\ElementStorageSize \PeakRate\EfficiencyHw}{2\SingleLinkBandwidth}\] This compares computation time with transfer time; HBM bandwidth cannot substitute for \(\PeakRate\EfficiencyHw\). It is an idealized overlap condition, not a guarantee.

For an H100 sustaining half its dense FP16 peak with 2-byte elements, the condition requires chunks of at least about 1,100 tokens per device when KV tiles travel over NVLink, and about 9,900 tokens when they cross one NDR InfiniBand port. A million-token context split across a few dozen devices clears both bounds, whereas splitting a 32K context across many nodes can leave each chunk too short to hide its transfers.

Grouped-query attention changes the transferred KV width, and causal masking changes the tile work; both require recomputing the two costs. In causal autoregressive attention, upper-triangular tiles are masked out (\(\KvTileIndex> \ContextParallelRankIndex\)). A naive ring execution leaves half the GPUs idle during later rounds; production implementations employ zigzag or striped token partitioning, which gives each device a mix of early and late tokens (for example, one chunk from the start of the sequence and one from the end), so every device holds a similar share of the unmasked causal tiles.

DeepSpeed Ulysses (Jacobs et al. 2023) exploits the independence of attention heads rather than circulating tiles along a ring. Each head attends over the whole sequence without reading any other head’s scores, so the attention work can be split by heads instead of by tokens. Outside the attention core, activations are sharded along the sequence dimension (\(\SequenceLength/\ContextParallelDegree\) tokens, all \(\AttentionHeadCount\) attention heads). Before computing self-attention, an AllToAll collective transposes the tensor from sequence-partitioned [S/c, h, d_head] to head-partitioned [S, h/c, d_head]. Each GPU now holds the full sequence length \(\SequenceLength\), but only a subset \(\AttentionHeadCount/\ContextParallelDegree\) of attention heads. Each device computes standard local FlashAttention across the full sequence for its heads; each rank owns complete heads, while the kernel handles causal masking locally. A second AllToAll collective transposes the attention output back to [S/c, h, d_head]. Ulysses is conceptually clean and reuses single-GPU attention kernels, but requires that the head count be divisible by the context degree (\(\AttentionHeadCount \ge \ContextParallelDegree\)). Under Grouped Query Attention (GQA), where the key-value head count \(\KvHeadCount\) is smaller, a direct head-sharding implementation requires compatible divisibility and \(\ContextParallelDegree\le \KvHeadCount\). Replicating KV heads changes that limit and its communication budget.

Jacobs, Sam Ade, Masahiro Tanaka, Chengming Zhang, Minjia Guo, Shuaiwen Zhu, Shuai Song, Samyam Rajbhandari, Ammar Ahmad Awan, Connor Zheng, and Yuxiong He. 2023. “DeepSpeed Ulysses: System Optimizations for Enabling Training of Extreme Long Sequence Transformer Models.” arXiv Preprint arXiv:2309.14509.

A hierarchical configuration can combine head-sequence transposes within a fast domain and ring exchanges between domains. For an eight-device intra-node domain, a Ulysses group satisfies (\(\IntraNodeContextParallelDegree\le 8\)), while a second degree (\(\InterNodeContextParallelDegree\)) determines the ring’s inter-node partition. In this example, Ulysses partitions heads locally and Ring Attention circulates KV blocks across nodes. The arrangement is feasible only if head divisibility, peak memory, link service time, and the overlap condition all hold; hierarchy alone does not prevent fabric saturation.

6.5.5 Expert parallelism (mixture of experts)

Scaling a dense model’s parameter count increases its per-token compute cost in lockstep, because every token must multiply through every weight matrix in the network. MoE architectures (Shazeer et al. 2017) break that lockstep through conditional computation, and expert parallelism distributes the resulting capacity across devices. In an MoE layer, the feed-forward block contains \(\ExpertCount\) independent feed-forward networks (“experts”), and a gating network selects only a small subset—often top-1 or top-2—for each token. Adding more experts while holding each expert’s shape and the selected count fixed expands stored parameters without increasing expert FLOPs per token, trading dense matrix work for routing and all-to-all communication.

Shazeer, Noam, Azalia Mirhoseini, Krzysztof Maziarz, Andy Davis, Quoc Le, Geoffrey Hinton, and Jeff Dean. 2017. “Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer.” International Conference on Learning Representations (ICLR).

In a distributed setting, experts are partitioned across workers, with each rank hosting a disjoint subset of expert networks. One routing cycle across four ranks shows the sequence (figure 17). After top-\(\RoutedExpertCount\) gating selects destination experts, an AllToAll dispatch shuffles tokens across the fabric to the hosting ranks, expert FFNs compute locally, and a second AllToAll return routes the processed activations back to the originating ranks to form the gate-weighted sum. The backward pass repeats both exchanges in reverse order, sending output gradients to the ranks hosting the experts and returning input gradients to the ranks that own the tokens. The primary advantage is decoupling model size from per-token compute, which lets parameter count grow within feasible hardware budgets, while the primary constraint is the AllToAll communication, which is bandwidth-intensive and sensitive to load imbalance.

Figure 17: Mixture-of-Experts (MoE) AllToAll Routing: Expert parallelism on four ranks, one expert per rank, read left to right and drawn for top-1 routing with one token traced. Each rank’s gate picks the top-\(\RoutedExpertCount\) experts for its tokens; the first AllToAll dispatches every token to the rank that hosts its expert, the experts compute, and a second AllToAll returns the results so each rank can form the gate-weighted sum for its own tokens. In both exchanges every rank may send to every other rank, which is why the pattern stresses the fabric’s bisection bandwidth.
Definition 6.11: Expert parallelism

Expert parallelism is the distribution strategy for mixture-of-experts models that places different experts on different devices and routes each token’s activations to the devices hosting its selected experts through AllToAll collectives, scaling total parameter count across the cluster without scaling the compute each token consumes.

  1. Significance: It decouples model capacity from compute budget. For illustration, a trillion-parameter MoE model may activate on the order of 10B parameters per token, so per-token FLOPs remain near those of a 10B dense model while capacity grows roughly 100\(\times\). The price is communication structure: every MoE layer requires two AllToAll shuffles per pass (dispatch and combine) whose volume scales with tokens moved times hidden dimension, stressing the cluster’s bisection bandwidth rather than any single link.
  2. Distinction: Unlike tensor parallelism, which splits dense operations so that every device computes a fraction of every token, expert parallelism is conditional computation: each device computes only the tokens routed to its experts, making both the communication pattern and the load distribution data-dependent rather than fixed by the architecture.
  3. Common pitfall: A frequent misconception is that experts share work evenly. A hot expert receiving, for example, 3–5\(\times\) its uniform share can overflow its device’s activation buffer while sibling devices idle. Capacity limits and routing penalties are possible responses; a design that retains every assignment must instead accommodate the resulting memory and scheduling demand.

↩︎ The terms that set an AllToAll’s completion time, from traffic across the fabric bisection to hotspots created by skewed expert loads, are established in AllToAll Exchanges at Scale.

Fedus, William, Barret Zoph, and Noam Shazeer. 2022. “Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity.” Journal of Machine Learning Research 23 (120): 1–39.
Lepikhin, Dmitry, HyoukJoong Lee, Yuanzhong Xu, Dehao Chen, Orhan Firat, Yanping Huang, Maxim Krikun, Noam Shazeer, and Zhifeng Chen. 2021. “GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding.” International Conference on Learning Representations (ICLR).

AllToAll dispatch routes token activations to their assigned experts. Consider \(\ExpertCount=\) 64 experts across 64 GPUs, processing a routing-group batch of \(\BatchSize=\) 4 sequences of length \(\SequenceLength=\) 2048 and hidden dimension \(\HiddenDimension=\) 4096. Under top-1 routing, \(\BatchSize\times \SequenceLength\) tokens each contribute one activation vector. At FP16, the logical dispatch payload is \(\BatchSize\cdot \SequenceLength\cdot \HiddenDimension\cdot 2\) bytes, approximately 67 MB; returning expert outputs doubles the forward payload to about 134 MB per block. Local destinations reduce bytes crossing the network, multiple selected experts increase routes, and backward adds gradient transfers. The resulting service time depends on placement and load balance, including in Switch Transformer (Fedus et al. 2022) (up to 2,048 experts) and GShard (Lepikhin et al. 2021).

Uniform routing is a useful capacity baseline, not a guarantee. An expert receiving several times its uniform share, the hot expert of the definition above, needs correspondingly more token processing and activation storage. The actual skew depends on the learned router and batch. A hot expert can exhaust its buffer or delay the step while other experts remain underused, coupling memory feasibility to load balance.

One response bounds expert workload with a capacity factor \(\ExpertCapacityFactor\). For top-1 routing, a capacity of roughly \(\ExpertCapacityFactor\cdot (\BatchSize\times \SequenceLength)/\ExpertCount\) token assignments per expert provides headroom above uniform load. A dropping implementation sends excess tokens past that expert through the residual connection; implementations that retain every assignment instead need memory and scheduling to accommodate the imbalance. An auxiliary load balancing loss can encourage less concentrated routing. Models using more than one expert per token, such as Mixtral 8x7B with top-2 routing (A. Q. Jiang et al. 2024), require a capacity budget that counts all selected assignments rather than reusing the top-1 denominator unchanged.

Jiang, A. Q., A. Sablayrolles, A. Roux, A. Mensch, B. Savary, C. Bamford, D. S. Chaplot, et al. 2024. “Mixtral of Experts.” arXiv Preprint arXiv:2401.04088.

Sparse routing gives MoE layers the same coordination problem that the embedding tables of Archetype B (DLRM at Scale) pose. In both, which device a token’s data must reach depends on the data itself, so load balance cannot be fixed in advance. MoE language models nonetheless remain Archetype A (GPT-4/Llama-3) workloads, because their dense layers still carry the tensor, pipeline, and data-parallel traffic developed above.

6.5.6 Sparse embedding sharding

Expert parallelism places parameters that only some tokens touch. Recommendation models push that sparsity much further. Their parameters are dominated by embedding tables (often 10 TB+) that no single GPU can hold, and their updates are sparse, because a batch of users interacts with only a tiny fraction of the items. Sharding those tables is model parallelism over stored state rather than over computation. The parameter server (PS) architecture, formalized by Li et al. (2014), remains a common way to do it. A parameter server architecture separates workers, which compute gradients, from servers, which store parameters and apply updates.

For dense models such as ResNet or BERT, that separation concentrates traffic, as section 6.3.1.3 noted. With \(\DeviceCount\) workers, a server’s inbound links must absorb \(\DeviceCount\) gradient streams at once. This incast problem is why dense training moved to ring AllReduce, in which every worker sends and receives at its own link rate and the aggregate load spreads across all nodes.

Sparse embedding tables reverse that balance. In a sparse parameter-server design, the tables are sharded across servers, and workers request only rows indexed by their local minibatches. A sparse pull returns those embedding vectors; a sparse push sends updates for the touched rows. This pattern avoids exchanging the complete table, but hot rows, lookup rates, and network contention can still limit throughput. Embedding-sharding frameworks such as TorchRec also support accelerator-based layouts, so sparse partitioning should not be equated with a CPU-only server architecture. Recommendation training at this scale is the volume’s Archetype B (DLRM at Scale) regime, and it differs from the dense running example in which resource binds first.

Whether the shards live on servers or in accelerator memory, each table must be split along some axis. Row-wise sharding partitions embedding tables by row, placing the whole embedding vector of the entity with identifier id on the shard that equation 3 selects:

\[\ShardIndex = \text{hash}(\text{id}) \bmod \EmbeddingShardCount \tag{3}\]

Each shard \(\ShardIndex\) contains approximately \(\EntityCount/\EmbeddingShardCount\) embeddings, where \(\EntityCount\) is the total number of entities and \(\EmbeddingShardCount\) is the shard count. Column-wise sharding instead partitions each embedding vector \(\EntityEmbedding\) across devices, as equation 4 writes it:

\[\EntityEmbedding = [\EntityEmbedding^{(0)}, \EntityEmbedding^{(1)}, \ldots, \EntityEmbedding^{(\EmbeddingShardCount-1)}] \tag{4}\]

Each device stores a slice of every embedding. Hybrid sharding combines both approaches, and the choice among the three depends on lookup patterns and communication overhead (table 6).

Table 6: Embedding Sharding Strategies: Comparison of row-wise, column-wise, and hybrid embedding placement strategies, balancing lookup locality against network communication collectives and memory load balancing.
Sharding strategy Lookup pattern Communication Best for
Row-wise Single device per lookup AllToAll gather Uniform access patterns
Column-wise All devices per lookup AllGather Hot embeddings
Hybrid Varies by embedding Mixed Production RecSys

The trade-off is locality against load balance. Row-wise sharding keeps each embedding vector whole on one device, while column-wise sharding spreads its dimensions across devices. Both require returning the pieces each consuming computation needs, but placement alone does not prescribe a collective; the runtime can use shard RPCs or collectives according to where inputs and outputs reside. A row-wise layout commonly realizes its lookups as an AllToAll of whole vectors, and a column-wise layout as an AllGather of slices of each vector (figure 18). Hybrid placement can replicate or column-partition hot embeddings while row-sharding the cold tail, trading additional storage and communication against concentrated lookup load.

Figure 18: Embedding Sharding Strategies: Row-wise sharding places complete embedding vectors on specific servers based on entity ID, requiring a network gather for lookup. Column-wise sharding splits each vector across all servers, allowing parallel local lookups followed by an AllGather, which is efficient for popular “hot” embeddings. Hybrid sharding combines these approaches, using replication or column sharding for hot items and row sharding for the “cold” long tail to balance load and memory.

On accelerators, a row-wise layout turns each training step’s lookups into an AllToAll exchange. Every worker sends the indices its minibatch touches to the shards that own them and receives the embedding vectors back, and the backward pass returns gradients for the touched rows along the same routes. The exchange obeys the AllToAll bound of AllToAll Exchanges at Scale, and like MoE dispatch its volume and balance depend on which rows the data touches, so hot rows overload their owners unless the layout replicates or splits them.

Lighthouse 6.1: Archetype B (DLRM at Scale): DLRM vs. LLM scaling
Each workload scales through a distinct mechanism and is bound by a different resource. Dense LLMs scale through data, tensor, and pipeline parallelism, constrained by compute throughput and by the bandwidth that dense gradient and activation collectives need over fabrics such as NVLink and InfiniBand. Sparse recommendation models such as DLRM scale by sharding embedding tables of 10 TB or more across parameter servers or accelerator memory, where aggregate memory capacity, lookup rate, and the latency of many small random accesses dominate. The distinction shapes cluster design, favoring accelerator pods built around high-bandwidth dense fabrics for LLMs and memory-capacity-rich layouts for recommendation systems, whether the embedding shards live in CPU-hosted servers, in accelerator HBM, or in a tiered hybrid that keeps hot rows on accelerators and cold rows in host memory.

Self-Check: Question
  1. In Megatron-LM style tensor parallelism for a transformer layer, how are the linear projections in the multi-head attention block arranged to minimize cross-device collective communication?

    1. Both QKV and Output projections are column-parallel, requiring an AllGather after each projection
    2. Both QKV and Output projections are row-parallel, requiring an AllReduce before each projection
    3. The QKV projection is column-parallel and the Output projection is row-parallel, requiring only a single AllReduce at the end of the attention block
    4. The QKV projection is partitioned across pipeline stages while the Output projection is replicated across data-parallel ranks
  2. In a synchronous 1F1B pipeline-parallel training schedule with \(p=8\) stages and \(m=32\) microbatches, calculate the theoretical pipeline bubble fraction and explain how increasing the microbatch count \(m\) affects bubble overhead and activation memory.

  3. Order the four sequential phases of token routing and execution in Expert Parallelism (Mixture of Experts) across distributed workers:

  1. AllToAll Combine: Processed token embeddings are routed back to their original source devices for residual connections
  2. Computation: Sharded expert feed-forward networks process their assigned token batches
  3. Gating: A router network evaluates tokens and selects top-k destination experts
  4. AllToAll Dispatch: Tokens are shuffled across the network fabric to the devices hosting their selected experts
  1. In a capacity-limited Mixture of Experts (MoE) system using top-1 routing and token dropping, what occurs when a hot expert receives more tokens than its allocated buffer capacity determined by the Capacity Factor \(C\)?

    1. Excess tokens are dropped and pass through the MoE layer unprocessed via the residual connection
    2. The expert GPU dynamically allocates host CPU memory over PCIe, halting computation on other ranks
    3. The AllToAll collective automatically pauses until all sibling experts process matching token counts
    4. The extra tokens are rerouted to a random cold expert regardless of gating network weights
  2. Contrast the communication patterns and hardware interconnect requirements of dense LLM training (Megatron-style Tensor Parallelism) with large-scale Recommendation Systems (DLRM embedding sharding).

  3. True or False: Ring Attention scales context length beyond single-GPU memory capacity by circulating key/value blocks in an accelerator ring across \(N-1\) communication rounds while overlapping transfer with block-level attention computation.

See Answers →

6.6 Hybrid Parallelism

The 175B running example has now exhausted each family on its own. Data parallelism with ZeRO-3 makes the state fit, but the per-step parameter regather priced in section 6.5 would take about 10× as long as the computation it serves. Tensor parallelism confined to one 8-GPU node, meanwhile, still leaves several hundred gigabytes of training state per device. The preceding strategies address different constraints and need not be used in isolation. Section 6.3 established how replication and state sharding distribute examples and storage; section 6.5 showed how partitioned operations and pipeline stages distribute computation. Hybrid design chooses the dimensions needed to satisfy memory, communication, and global-batch constraints together.

Hybrid parallelism applies both families orthogonally: model parallelism splits the architecture to fit available memory, while data parallelism scales throughput across multiple model replicas. Training a 175B parameter language model on a dataset of 300 billion tokens demonstrates this approach in practice. The neural network layers distribute across multiple GPUs through model parallelism, while data parallelism enables different GPU groups to process separate batches. This dual strategy addresses both memory constraints from model size and computational demands from dataset scale simultaneously, and this combination defines Archetype A training at large-model scale.

Lighthouse 6.2: Archetype A (GPT-4/Llama-3): Physics of 3D parallelism
Archetype A (GPT-4/Llama-3) illustrates the motivation for hybrid parallelism. Parameter count \((\Parameters)\) must first be converted to a complete memory budget before comparison with device capacity \((\DeviceMemoryCapacity)\), while dataset size \((\DatasetSize)\) and the deadline determine the throughput target. Tensor parallelism partitions layer computations within a suitable communication domain; pipeline parallelism assigns consecutive layers to stages; and data parallelism distributes examples from \(\DatasetSize\) across replicas. A design combines the dimensions that address its constraints; efficient execution does not require all three in every case.

To see why the combination matters, consider three parallelism configurations for training the 175B model on a 1,024-GPU cluster organized as 128 nodes of 8 GPUs each. The progression from pure data parallelism through tensor and pipeline parallelism makes the efficiency gain concrete.

In Configuration A, pure data parallelism (DP-1024) serves as a communication counterfactual rather than a feasible placement for this model. The FP16 weights alone occupy 350 GB, so an A100 or H100 cannot replicate them; sharding only optimizer states does not change that fact. If replication were possible, all 1,024 ranks would form one data-parallel group, and each rank would participate in an AllReduce of the 350 GB gradient tensor across the InfiniBand fabric. The 15 percent calculation in section 6.4 isolates that communication cost.

Configuration B introduces intra-node tensor parallelism alongside data parallelism (TP-8, DP-128). Within each of 128 model replicas, 8 GPUs use tensor parallelism over NVLink. The corresponding tensor shard from every replica forms one 128-rank data-parallel group, so the layout contains 8 such groups. Each rank AllReduces its 1/8 gradient shard, 43.75 GB rather than 350 GB, and TP communication remains within the fast NVLink domain. This is a communication comparison only. At 16 bytes per parameter each GPU would still hold about 350 GB of training state, so the layout also needs optimizer and gradient sharding across its data-parallel group before it fits. The inter-node AllReduce time drops from 14 seconds to approximately 1.75 seconds. If the compute time is still 2.1 seconds, the unoverlapped efficiency improves to about 54.5 percent. The smaller transfer also fits inside the compute window, so the same optimistic schedule assumed for the data-parallel baseline can now hide its full 75 percent of the transfer behind backward computation, which lifts efficiency to about 83 percent.

Configuration C adds pipeline stages across nodes (TP-8, PP-4, DP-32) so that each of 32 model replicas uses 8-way tensor parallelism within a stage and 4 pipeline stages across nodes. For each of the 8 \(\times\) 4 tensor-and-pipeline shard positions, the corresponding ranks from all replicas form one 32-rank data-parallel group. Each rank therefore AllReduces a \(350/(8\times4)\approx10.94\) GB gradient shard. Pipeline communication forwards activations between stages and has lower volume than a full-model AllReduce. The trade-off is the pipeline bubble. At the beginning and end of each training step, some pipeline stages are idle while waiting for activations from earlier stages or gradients from later stages. The bubble fraction is approximately \((\PipelineParallelDegree-1)/(\MicrobatchCount+\PipelineParallelDegree-1)\), so with 4 pipeline stages and 32 microbatches per training step, the bubble wastes roughly 9 percent of compute (\(3/35 \approx 8.6\%\)). The smaller shard takes about 0.44 seconds to AllReduce, and under the same overlap model as configuration B most of it hides behind backward computation. Charging the bubble against the compute window and adding the remaining exposed transfer gives a predicted efficiency of about 87 percent, a few points above configuration B’s 83 percent. The pipeline cuts the data-parallel traffic by another factor of 4, and that saving slightly outweighs the bubble it introduces. Configuration C does not fit memory by itself either. Its training state is about 87.5 GB per GPU, above the 80 GB of an H100. Adding ZeRO-1 across its 32-rank data-parallel group closes that gap. Each GPU then keeps its tensor-and-pipeline slice of weights and gradients but only a 1/32 share of that slice’s optimizer state, about 24 GB in all, which leaves most of the HBM for activations and buffers. ZeRO-1 matches plain DDP’s ideal data-parallel byte volume at matching communication widths (table 3), but equal bytes do not preserve the overlap schedule. Gradient reduction to owners must precede their optimizer updates, and the updated-parameter AllGather follows those updates. The predicted efficiency remains conditional on that schedule achieving the modeled exposed communication time. TP-8, PP-4, DP-32 with ZeRO-1 passes this simplified persistent-state memory budget; its reduction, update, and parameter-gather readiness must still be priced before accepting the throughput prediction.

Within this comparison’s communication model, the configuration that places frequent tensor-parallel exchanges in the fast NVLink domain, pipelines across nodes, and leaves only small data-parallel gradient shards for InfiniBand has the best predicted efficiency. Peak memory, kernel shape, and scheduling still need verification before that prediction becomes a runnable design. The infrastructure hierarchy therefore dictates the parallelism hierarchy. Here, hierarchy-aware parallelism means matching exchange requirements to measured communication domains rather than choosing each degree independently.

Definition 6.12: Hierarchy-aware parallelism

Hierarchy-aware parallelism is the strategy of mapping different parallel execution modes to the physical bandwidth tiers of the cluster.

  1. Significance: It places high-frequency synchronization (for example, tensor parallelism) on fast links such as NVLink, while assigning lower-frequency exchanges (for example, data parallelism) to slower tiers when their transfers fit the schedule. This alignment can improve scaling efficiency \((\ScalingEfficiency)\) by reducing exposed communication time \((\CommunicationTime)\) and latency \((\Latency)\); the gain depends on readiness, contention, and available overlap.
  2. Distinction: Unlike uniform parallelism, which treats all node-to-node links as equal, hierarchy-aware strategies respect the bandwidth cliffs between die, node, and rack boundaries.
  3. Common pitfall: A frequent misconception is that any model can be sharded across any number of nodes. In reality, if the hierarchy mapping is wrong (for example, sharding a large tensor across a slow inter-rack link), the communication time will dwarf the compute time, making the scale-out useless.

The dependence runs both ways, because a parallelism configuration also determines which traffic the fabric must carry. In the TP-8, PP-4, DP-32 layout, tensor reductions stay within each fast local domain, pipeline traffic crosses neighboring stages, and data-parallel groups synchronize corresponding shards across replicas. Rail-optimized and hierarchical fabrics can exploit that structure, but a workload mix that adds expert AllToAll traffic changes the global bandwidth requirement. Infrastructure planning must therefore evaluate the anticipated communication groups together rather than optimizing the fabric for a single layout.

↩︎ Rail-optimized fabrics, which cable each GPU slot position to its own rail switch, are established in Rail-optimized topology.

6.6.1 The 3D training loop

Training a 175B-parameter model using 3D parallelism—the coordinated composition of data, pipeline, and tensor parallelism introduced with figure 2—can be traced on a fleet configured with tensor parallelism (TP) of 8 GPUs, pipeline parallelism (PP) of 16, and data parallelism (DP) of 128. This configuration uses 16,384 GPUs (8 GPUs \(\times\) 16 \(\times\) 128) organized into a hierarchy of bandwidth domains, sixteen times the 1,024-GPU reference cluster so that every level of the hierarchy is exercised even though parameter count alone would not require all three dimensions.

The training step begins at the data-parallel level. Each of the 128 model replicas receives a distinct slice of the global batch. Within each replica, the model is split across 16 pipeline stages (nodes), with microbatches flowing sequentially from the embedding layer on Node 0 to the loss calculation on Node 15. At the finest granularity, within each node, the 8 GPUs fuse into a single “super-accelerator” via TP. The transformer matrix multiplications are split across these devices; column- and row-parallel pairs retain local intermediate shards and exchange partial results at the reduction points already derived. For a 175B-scale hidden dimension, the activation payload is roughly 201.3 MB; the resulting tensor-parallel traffic is about 4.2 GB per pipeline stage per microbatch in the forward pass, or 8.5 GB including the backward pass. Across the full 96-layer replica, the forward tensor-parallel traffic is about 67.6 GB. This traffic is the highest-intensity in the system, but its exposed latency can remain small relative to compute because the chips communicate over 300 GB/s–450 GB/s of local bandwidth per direction.

The backward pass exposes dependencies between parallelism dimensions. Nodes exchange activation gradients point-to-point, roughly 201.3 MB per microbatch per stage boundary in this example. A smaller payload still stalls a stage if it arrives after the stage needs it. Data-parallel synchronization creates another dependency. Although full-model gradients occupy about 350 GB, each data-parallel group exchanges only the corresponding tensor- and pipeline-parallel parameter shard. Gradient bucketing groups ready gradients as backward computation proceeds. Which exchange limits the step depends on its readiness, service time, and overlap; data parallelism is not necessarily the final bottleneck.

↩︎ Bucket fusion, which groups gradients that become ready together into larger reductions so communication can begin during backpropagation, is established in Bucket fusion.

The architectural imperative is bandwidth matching, in which each exchange’s startup and transfer time must fit its available compute or overlap interval. In this mapping, frequent TP exchanges use the NVLink domain (300 GB/s per direction or higher), while PP transfers cross nodes and DP reductions overlap backward computation. Accumulation can enlarge the compute interval between DP synchronizations, subject to the global-batch constraint. An infeasible mapping leaves part or all of the 16,384 GPUs fleet waiting. Comparing service time with the schedule completes the feasibility check introduced in section 6.2.1.

6.6.2 Hybrid-parallelism worked example

Applied to physical infrastructure, bandwidth matching turns cluster design into a placement problem, and memory capacity per device (80 GB–80 GB) bounds every placement. For the 3D training loop’s layout on 16,384 GPUs, built from 8-GPU NVLink nodes, this reasoning leads to a concrete placement. Fix tensor parallelism at \(\TensorParallelDegree=8\) so the bandwidth-heavy matrix-multiplication collectives stay within one 8-GPU node. Map pipeline parallelism across nodes in the same high-bandwidth rack or island, here \(\PipelineParallelDegree=16\), with \(\PipelineParallelDegree=8\) as the alternative when the per-device memory budget allows. Use data parallelism for the remaining scale-out dimension across pods. The result is not a generic rule but a consequence of matching each traffic pattern to the cheapest fabric tier that can carry it, and with the placement fixed, the next question is whether the static model state fits inside each accelerator’s HBM budget.

The memory budget for a 175B model must include every persistent training component. Under the mixed-precision Adam convention used here, each parameter has FP16 weights and gradients, an FP32 master weight, and two FP32 optimizer moments, totaling 16 bytes before activations and workspaces. With tensor parallelism degree 8 alone, these components occupy 350 GB per device, exceeding H100-class capacity. Adding 16 pipeline stages spreads that state across the product of the two degrees, yielding 21.9 GB per device under even partitioning. A budget that counts only weights and optimizer moments, about 13.7 GB per device here, understates this total. Activation peaks, layer imbalance, and communication workspaces must fit in the remaining memory before this configuration is feasible.

Once the configuration fits in memory, its traffic still follows the same tiers, and each data-parallel group reduces only its tensor-and-pipeline shard of the 350 GB gradient buffer once per update. Gradient bucketing overlaps that reduction with backward computation, so its exposed cost depends on the computation remaining before the optimizer needs the reduced shard.

The last cost is scheduling rather than bandwidth, because a pipelined model is only efficient when enough microbatches are in flight to keep all stages busy. This remaining cost is the pipeline bubble developed in section 6.5.2. Applying its bubble fraction \(\frac{\PipelineParallelDegree-1}{\MicrobatchCount+ \PipelineParallelDegree - 1}\) to this hybrid layout, \(\PipelineParallelDegree=\) 16 stages with \(\MicrobatchCount=\) 32 microbatches waste \(\frac{15}{47} \approx 31.9\%\) of theoretical compute capacity, nearly one-third, against roughly 9 percent for configuration C’s 4 stages at the same microbatch count. The deeper pipeline is chosen at this scale for two reasons. Its 16 stages spread the full training state to about 21.9 GB per device without optimizer sharding. Filling 16,384 GPUs with configuration C’s 32-GPU replicas would instead need 4× as many data-parallel replicas, which multiplies the global batch \(\DataParallelDegree \times \MicrobatchCount\times \MicrobatchSize\) by the same factor at the same per-replica schedule. The shallow pipeline spends global batch; the deep one spends bubble. The 1F1B scheduling that reclaims activation memory, and the larger microbatch counts it makes practical, drive the bubble fraction down asymptotically, but every added microbatch also enlarges the global batch, so the bubble target must be reconciled with the critical-batch constraint from section 6.4.6.

The Blackwell reference shows how a wider fast communication domain changes 3D parallelism choices. NVLink 5 provides 1.8 TB/s of bidirectional bandwidth per GPU, twice the Hopper reference’s capacity, which shortens the transfer term for a fixed payload but does not reduce message startup latency. Larger tensor-parallel (\(\TensorParallelDegree\)) groups, such as \(\TensorParallelDegree=\) 16 or \(\TensorParallelDegree=\) 32 across nodes, remain subject to topology and local-kernel efficiency. For a 1 trillion-parameter model, one candidate uses \(\TensorParallelDegree=\) 16 across two 8-GPU nodes joined by NVLink Switch and \(\PipelineParallelDegree=\) 8. Relative to the Hopper layout’s \(\TensorParallelDegree=\) 8 and \(\PipelineParallelDegree=\) 16, this preserves the model-partition product while halving stage count, and the bubble must be recomputed from the new stage and microbatch counts rather than assumed to halve. The 10 TB/s internal link joins Blackwell’s two dies behind one logical GPU, so those dies are not separate tensor-parallel ranks. Improving local bandwidth shifts pressure outward. Once intra-node exchanges bind less, the inter-node fabric that carries pipeline and data-parallel traffic, together with any expert AllToAll service, becomes the term to check against the next tier. The same placement constraints can be made operational through design-space search.

Example 6.1: Automated design space search
Scenario: An engineering team schedules a 175B-parameter model across 8,192 H100 GPUs (80 GB HBM each), eight times the 1,024-GPU reference cluster so that the pipeline and data-parallel degrees both have room to vary, navigating the multi-dimensional 3D-parallelism search space (TP \(\times\) PP \(\times\) DP).

Diagnosis: Candidate configurations must fit within 80 GB HBM and satisfy the modeled communication budget. The search evaluates TP \(\times\) PP \(\times\) DP factorizations and selects TP=8 GPUs, PP=8, and DP=128 as the best predicted MFU among configurations feasible under its assumptions. That result is a candidate for measurement, not proof of the best attainable runtime.

Systems lesson: This search favors TP=8 GPUs within the reference topology’s fast domain and PP=8, with 36.4 percent projected MFU. The result balances memory, local computation, transfers, and pipeline idle time within the model. A different topology, microbatch schedule, or kernel efficiency can change the preferred factorization.

Adjusting any one dimension shifts the pressure onto the other two, making the factorization TP \(\times\) PP \(\times\) DP a tightly coupled system rather than three independent knobs. A projected MFU such as this search’s still needs comparison with measured execution, and published runs report MFU well below peak that can fall as the same model moves to more GPUs (figure in Program goodput and its measure).

Checkpoint 6.4: Hybrid 3D parallelism

Verify your understanding of how parallelism strategies combine:

The three configurations and the worked layout tell one story. Pure data parallelism moves the full 350 GB gradient over the slowest tier and reaches only 15 percent scaling efficiency. Keeping tensor parallelism inside the NVLink domain cuts each rank’s share of that traffic by the tensor-parallel degree, and pipeline stages cut it again at the price of a bubble. Communication alone does not make a layout feasible, however. Each layout must also hold the full training state, which is why configurations B and C still need optimizer sharding and why the worked layout adds pipeline depth until the persistent state falls to about 21.9 GB per device. Hybrid parallelism is therefore the joint solution of a memory constraint, a bandwidth hierarchy, and a batch-size limit, and every axis added to satisfy one of them tightens another. Alignment training tests that joint solution hardest, because it asks one fleet to host several models with different memory and compute profiles at the same time.

Self-Check: Question
  1. In a 3D parallelism layout whose device count is the product of the data-, pipeline-, and tensor-parallel degrees, what hardware-matching principle dictates mapping tensor parallelism intra-node while pipeline parallelism spans inter-node links?

    1. Pipeline parallelism requires more memory bandwidth than NVLink can provide, forcing it onto InfiniBand
    2. Tensor parallelism requires only point-to-point transfers, making it insensitive to link latency
    3. Hierarchy-aware parallelism maps frequent TP exchanges to the fastest local fabric and PP boundary transfers to slower inter-node links.
    4. Data parallelism cannot execute across nodes that use tensor parallelism internally
  2. A 175B-parameter model uses mixed-precision Adam with 2-byte weights, 2-byte gradients, a 4-byte master copy, and two 4-byte moments per parameter. With tensor degree \(t=8\) and pipeline degree \(p=16\), calculate the ideally balanced static memory per GPU before data-parallel state sharding, and explain why tensor parallelism alone cannot fit this state on 80 GB GPUs.

  3. For one rank in a balanced 3D layout with eight transformer layers per pipeline stage, 32 microbatches per update, two tensor-parallel reductions per layer in each pass, and one unbucketed data-parallel reduction after accumulation, order these communication patterns by invocation count per update, highest to lowest:

  1. Data-parallel gradient reduction
  2. Tensor-parallel reductions
  3. Pipeline stage-boundary transfers
  1. In a 16,384-GPU cluster configured with \(\text{TP}=8\), \(\text{PP}=16\), and \(\text{DP}=128\), how many GPUs participate in each individual data-parallel AllReduce communicator group?

    1. \(16{,}384\text{ GPUs}\), because all accelerators in the cluster must synchronize in a single global collective
    2. \(128\text{ GPUs}\), because each rank communicates only with its corresponding tensor-and-pipeline shard position across the 128 model replicas
    3. \(8\text{ GPUs}\), matching the tensor-parallel degree within each local node
    4. \(16\text{ GPUs}\), matching the pipeline stage depth across the cluster spine
  2. True or False: A uniform fat-tree network topology providing equal bisection bandwidth between all node pairs is always more cost-effective than a rail-optimized topology when training large language models with hierarchy-aware 3D parallelism.

See Answers →

6.7 Multi-Model Training for Alignment and RLHF

A cluster partitioned to train a single model cannot simply run post-training alignment in place, because reinforcement learning from human feedback (RLHF) coordinates up to four distinct models inside a single training step. In proximal policy optimization (PPO), an active policy generates responses token by token, a preference-trained reward model scores them, a frozen reference copy constrains policy drift, and a learned value model estimates expected returns to guide the gradient update. Those roles carry wildly different memory footprints and alternate between memory-bandwidth-bound autoregressive generation and compute-bound backward passes. Direct preference optimization (DPO) sidesteps online generation and drops the separate reward and value models, trading live exploration for a simpler two-model loop. Designing an alignment cluster therefore starts by tallying which models, states, and execution phases must coexist on the fleet.

6.7.1 The multi-model coordination problem

Holding four models in accelerator memory at once multiplies the static state budget before a single prompt is even decoded, and only two of those models ever run a backward pass. In PPO (Schulman et al. 2017), as used in InstructGPT-style systems (Ouyang et al. 2022), the four roles differ sharply in execution mode and memory burden (table 7). In figure 19, the policy \(\Policy\) generates responses for scoring by the frozen reference and reward models and evaluation by the value model \(\CriticModel\). The penalized reward (\(\ResponseReward- \KlPenaltyCoefficient\,\text{KL}\)) subtracts a Kullback–Leibler divergence penalty, weighted by a coefficient \(\KlPenaltyCoefficient\) unrelated to link bandwidth \(\LinkBandwidth\), to discourage drift from the reference. Generalized advantage estimation (GAE) combines rewards and value estimates to judge how much better a response was than expected. Those estimates guide policy updates; the value model learns to predict returns, the cumulative discounted reward that follows each generated token. Reference and reward models remain forward-only in this loop, and shared-backbone implementations can combine roles without changing their distinct responsibilities.

Schulman, John, Filip Wolski, Prafulla Dhariwal, Alec Radford, and Oleg Klimov. 2017. “Proximal Policy Optimization Algorithms.” arXiv Preprint arXiv:1707.06347, ahead of print. https://doi.org/10.48550/arXiv.1707.06347.
Ouyang, L., J. Wu, X. Jiang, D. Almeida, C. L. Wainwright, P. Mishkin, C. Zhang, et al. 2022. “Training Language Models to Follow Instructions with Human Feedback.” Advances in Neural Information Processing Systems (NeurIPS) 35: 27730–44. https://doi.org/10.52202/068431-2011.
Figure 19: One PPO-Style RLHF Step: The policy generates responses to a batch of prompts. The frozen reference model supplies log-probabilities for the KL penalty, the frozen reward model supplies a scalar score, and the trained value model supplies value estimates. The penalized reward and value estimates form advantages, which update the policy and value models. Blue cards carry gradients and optimizer state; slate cards run forward passes only and hold weights alone, as each card’s weight, gradient, and optimizer-state strip shows; strip widths follow the 2, 2, and 12 bytes per parameter of mixed-precision Adam, unlike the equal-width columns of figure 7. That asymmetry drives placement.
Table 7: RLHF Model Coordination Roles: PPO-style RLHF coordinates models with different execution modes and memory footprints, so placement decisions must separate trainable policy and value state from inference-only reference and reward state.
Model Role in PPO-style RLHF Execution mode Memory burden
Policy Model The model being aligned and optimized. Training mode with gradients, optimizer moments, and activations. For a 70B-parameter model in mixed precision with Adam, memory is approximately 70B \(\times\) (2 \(+\) 2 \(+\) 12) = 1,120 GB, the same budget as standard pretraining.
Reference Model A frozen copy of the pretrained policy that supplies the KL-divergence penalty. Inference mode only. FP16/BF16 parameters without gradients or optimizer state; a 70B model needs about 70B \(\times\) 2 = 140 GB, roughly 8× less than the training configuration.
Reward Model A preference-trained scorer that produces scalar rewards for generated sequences. Inference mode only. Often smaller than the policy; a 13B reward model requires approximately 26 GB in FP16, but it must process every generated sequence.
Value Model The PPO critic that estimates expected future reward. Training mode, either separate or sharing a policy backbone. A full-size separate critic can add another 1,120 GB; smaller models or shared-backbone designs reduce this to 200–400 GB.

The aggregate memory demand of the four-model PPO system dwarfs standard pretraining. A naive co-location of a 70B policy, 70B reference, 13B reward, and 13B value model requires approximately 1,494 GB of accelerator memory, before accounting for the KV caches and intermediate activations generated during sequence generation. A key-value (KV) cache stores attention keys and values for previously processed tokens so the policy can generate the next token without recomputing that state. It grows with the number and length of active sequences, creating a temporary memory budget distinct from weights and optimizer state. On H100 GPUs with 80 GB of HBM each, this system requires a minimum of 19 GPUs as an aggregate static-state capacity lower bound, including optimizer state and gradients. This division does not establish a feasible placement, because each phase must also fit its KV or activation peak, workspaces, and uneven shards. Replicated policy groups increase the total state further.

6.7.2 Infrastructure asymmetry between training and inference models

The defining infrastructure challenge of RLHF is not the total memory footprint but the asymmetry between the models’ compute profiles. The policy and value models require full backward passes with gradient computation, activation checkpointing, and optimizer updates, compute-intensive operations that benefit from tensor parallelism and high arithmetic intensity. The reference and reward models, by contrast, perform only forward passes over generated sequences. Their scoring passes do not require optimizer state, and they need not decode token by token. The policy’s rollout phase creates the autoregressive generation workload and its KV-cache budget. Separating scoring from generation matters because forward-only execution does not imply a single memory or compute profile.

The asymmetry creates a placement dilemma. Co-location permits devices to serve different phases, but inactive model state can occupy memory needed for the active phase. Dedicated pools allow each role to use a suitable execution configuration, but pools may idle while waiting for another role’s output. Separation also adds transfers of generated sequences, scores, and updated policy weights. The design must compare phase utilization and data movement rather than assume that either placement eliminates waste.

The PPO rollout phase introduces autoregressive dependencies absent from the teacher-forced pretraining baseline. The policy generates responses before sequence-level rewards guide its updates. At small active batches, decoding is often memory bandwidth bound because each new token requires another model pass. For a Llama-2-70B-style grouped-query attention policy generating 1,024 tokens for each of 256 active sequences, the per-token cache bytes of equation 10.5 put the generated-token portion at 85.9 GB. That portion alone already exceeds the 80 GB of HBM on one H100, and prompt tokens add KV state as well. This temporary cache must fit alongside the state live during rollout; its lifetime differs from training activations and optimizer state.

↪ The capacity wall this cache imposes on serving systems is developed in The KV cache wall and memory capacity.

RLHF systems address this asymmetry through temporal multiplexing. During the generation phase, the cluster behaves like an inference system. The policy model generates sequences while the reference model computes log-probabilities, and the dominant resource is HBM reserved for token-by-token attention state. During the training phase, the same fleet switches back to training mode and computes gradients through the policy and value models using the 3D parallelism configuration developed in section 6.6. During generation, batching active sequences and placing their KV state determine how much useful work shares each weight read. During the update phase, activation residency and gradient synchronization again govern the schedule. RLHF is not one steady training loop, but an alternation between inference-shaped work and training-shaped work, and standard training frameworks rarely manage that transition by themselves.

6.7.3 Resource requirements for PPO versus DPO

Standard offline DPO (Rafailov et al. 2023) removes the separate reward and value models from the update loop by reformulating alignment as a loss over preference pairs. The policy learns from preferred and dispreferred responses using their log-probabilities relative to a frozen reference. Because those responses are already in the training data, the update requires neither online generation nor advantage estimation.

A DPO implementation that retains a resident reference has two model roles, the trainable policy and the frozen reference. For fixed preference pairs and a fixed reference, reference log-probabilities can instead be precomputed, removing that model from the repeated update loop. Offline DPO needs no autoregressive rollout during those updates. Variable lengths still require padding, packing, or length-aware batching, and policy training can use the same partitioning, accumulation, and overlap mechanisms as pretraining.

The infrastructure difference follows from how each method obtains feedback. Offline DPO learns from a fixed preference dataset, so the policy never receives feedback on new responses. PPO-style training scores responses from the evolving policy and can expose behavior the dataset lacks, provided the reward signal is reliable. The generation phase, the reward and value models, and the memory they occupy are the price of that online loop, so the choice is settled by achieved quality per unit of total resource cost.

To make the infrastructure trade-off concrete, consider aligning a 70B policy model using a policy/reference pool of 256 H100 GPUs (80 GB HBM each). PPO’s separate reward and value pools sit outside that allocation. The policy is a 70B-class model rather than the 175B reference, a size at which each role’s memory budget stays readable while the four PPO roles together still need at least 19 GPUs, more than one node.

Napkin Math 6.9: RLHF infrastructure budget: PPO vs. DPO
Problem: This alignment setup co-locates a 70B policy model with a 70B reference model and, for PPO, uses pools outside the 256-GPU policy/reference allocation for a 13B reward model and a 13B value model. Under 3D parallelism (TP=8 GPUs, PP=4, DP=8), how much memory resides on each policy GPU, and which separate model pools and generation-phase memory requirements does DPO remove?

PPO memory budget (per-GPU, with TP=8 GPUs, PP=4, DP=8 for policy)

The policy model under 3D parallelism with TP=8 GPUs and PP=4 distributes one replica’s 1,120 GB training state across 32 GPUs, yielding 35 GB per GPU. The reference model, requiring only 140 GB for inference, can instead be sharded across an additional 8 GPUs pool outside the policy allocation at 17.5 GB each, or co-located with the policy GPUs at an additional 4.4 GB per GPU (140 GB / 32 GPUs). The 13B reward model adds 26 GB shared across its pool. The 13B value model in training mode adds approximately 208 GB (13B \(\times\) 16 bytes/param) across its pool.

Total static memory (one co-located policy + reference replica on 32 GPUs): 35 GB + 4.4 GB \(\approx\) 39.4 GB per GPU, leaving \(\sim\) 46.5 GB for activations and KV cache. With generation-phase KV caches for a rollout batch containing 256 sequences and 1,024 tokens inside one \(\Glyph{T} \Glyph{P}{\times}\Glyph{P} \Glyph{P}\) policy replica, each policy GPU must reserve an additional 85.9 GB/32 GPUs \(\approx\) 2.7 GB for its KV cache shard. The remaining \(\sim\) 43.8 GB is generation-phase headroom. Once rollout KV state is released, the update phase recovers the 46.5 GB headroom before allocating training activations and other runtime buffers. The phase peaks must be evaluated separately.

DPO memory budget (same parallelism configuration)

The policy model uses the same 35 GB per GPU. The reference model adds 4.4 GB per GPU (co-located). No reward model, no value model, no KV cache for generation.

On the policy GPUs, total static memory is 35 GB + 4.4 GB = 39.4 GB per GPU, identical to PPO’s co-located policy/reference footprint. Both have 46.5 GB available before update-phase activations and runtime buffers when PPO releases its rollout KV cache. DPO removes the separate generation peak and the reward/value model pools; the absence of rollout KV state alone does not establish larger update microbatches.

Throughput comparison

PPO alternates generation and parameter updates. If generation consumes 60 percent of an iteration in this illustrative schedule, updates occupy the remaining 40 percent; this time fraction is not MFU. Update-phase MFU must be multiplied by that fraction to report update computation over the whole iteration, using the same allocated hardware denominator. DPO eliminates online generation, but its measured throughput still depends on sequence lengths, reference scoring, parallelism, and memory use. The static-state comparison in table 8 is therefore kept separate from these schedule-dependent effects.

Table 8: PPO vs. DPO State and Execution Phases: Static-state totals sum one copy of each model across its device pool, including trainable optimizer state and gradients. Data-parallel replication and phase-specific runtime allocations add to these totals; the table does not determine a minimum device count or measured MFU.
Metric PPO (70B policy) DPO (70B policy)
Models required 4 (policy, ref, reward, value) 2 (policy, reference)
Static state, one copy of each model \(\sim\) 1,494 GB \(\sim\) 1,260 GB
Device count Depends on placement and phase peak Depends on placement and activation peak
Generation phase Yes (autoregressive) None
Update throughput Shares the schedule with generation No online-generation phase
Data pipeline Online generation Static preference pairs

Systems insight: In this 13B reward/value-model scenario, DPO reduces the one-copy static-state budget by 15.7 percent by eliminating the reward and value models. It also removes online generation, but the throughput benefit requires a measured schedule. Infrastructure constraints therefore weigh on the choice between PPO and DPO as much as modeling preferences do, and an organization with a limited GPU budget may prefer DPO because it restores the workload to a fixed-data training loop. If the PPO value model is policy-sized rather than 13B, the reduction is larger still, from 2,406 GB to 1,260 GB.

6.7.4 Sequence length variance and batching challenges

PPO and DPO make variable sequence length a prominent scheduling concern. Pretraining often packs documents into fixed-length blocks, such as 2,048 or 4,096 tokens, although variable-length workloads also occur. Alignment batches combine prompts and responses whose lengths can differ substantially; an illustrative batch can span a 10–50\(\times\) length range. Those lengths determine activation residency, padding, and work assigned to each worker.

Length variance creates two interacting problems. Padding every sequence to the longest in a batch can leave most token positions unused. A batch of one 2,048-token sequence and fifteen 128-token sequences, padded to 2,048 tokens, fills only 3,968 of its 32,768 positions, so kernels that execute padded positions spend about 88 percent of their work on padding; kernels that skip them recover most of that waste. Dynamic batching groups similar lengths to reduce padding, but assignments across workers still need balancing. A worker processing longer sequences can have a larger activation peak and finish later, leaving other workers waiting for the required gradient contributions.

Sequence packing combines short sequences within a fixed-length input, with attention masking that keeps their contexts separate, and adaptive microbatching sizes each microbatch by token count or predicted memory. Alignment adds a constraint that pretraining lacks. The reduction must keep the objective’s own denominator, valid-token counts for a token-mean PPO loss and pair counts for standard DPO (Rafailov et al. 2023), so packing changes layout but not weighting. Balancing token work across workers then remains a performance goal rather than a correctness requirement.

Rafailov, Rafael, Archit Sharma, Eric Mitchell, Stefano Ermon, Christopher D. Manning, and Chelsea Finn. 2023. “Direct Preference Optimization: Your Language Model Is Secretly a Reward Model.” Advances in Neural Information Processing Systems (NeurIPS) 36: 53728–41. https://doi.org/10.52202/075280-2338.

RLHF shows why no single parallelism strategy is sufficient by itself. The policy model may need tensor and pipeline parallelism, the reference and reward models behave like inference services, the value model may require training state, and the rollout data pipeline changes shape from step to step. The procedure that handles this case is the general one, which identifies the binding constraint first and then chooses the parallelism pattern that moves the least data while fitting the required state.

Self-Check: Question
  1. Why does Proximal Policy Optimization (PPO) in multi-model RLHF create an infrastructure asymmetry challenge that does not exist in standard pretraining?

    1. It combines policy and value-model training with policy-generated autoregressive rollouts and forward-only scoring by frozen reference and reward models.
    2. All four models in PPO must be trained with identical optimizer hyperparameters on the same GPU
    3. PPO requires all models to be converted to INT4 precision to enable cross-node gradient synchronization
    4. PPO eliminates backward passes entirely, turning distributed training into a stateless inference service
  2. Explain how Direct Preference Optimization (DPO) simplifies cluster infrastructure compared to PPO, detailing which models and computational phases are eliminated.

  3. During the autoregressive generation phase of PPO alignment for a 70B-parameter model, which growing runtime state can limit generation concurrency in accelerator memory?

    1. FP32 Adam momentum and variance buffers stored on CPU hosts
    2. Key-Value (KV) cache memory in GPU HBM, bounded by memory bandwidth during token-by-token generation
    3. AllReduce gradient communication buffers across InfiniBand switches
    4. Host filesystem NVMe write bandwidth for checkpoint dumping
  4. The scheduling approach in RLHF distributed systems where the accelerator fleet alternates between an autoregressive rollout phase dominated by KV cache memory and a backward training phase dominated by matrix GEMM compute is known as ____.

  5. True or False: Because Direct Preference Optimization (DPO) eliminates reward and value models and avoids online sequence generation, it is strictly superior to PPO for all model alignment and exploration tasks.

See Answers →

6.8 Parallelism Strategy Comparison

A parallelism strategy is useful only if it moves the binding constraint without creating a larger one. Assembling data, tensor, pipeline, and hybrid partitioning into a coherent decision procedure requires evaluating where each strategy relocates overhead across the cluster’s memory and interconnect hierarchy. For a new model, the decisive questions are which memory state fits, how often communication occurs, where the pipeline bubble appears, and which abstraction cost the engineering team can tolerate. Sequence, context, and expert parallelism sit beside the 3D core in table 9, and they remain subject to the same batch, memory, and topology constraints.

Table 9: Parallel Training Strategies: Data, tensor, and pipeline parallelism form the canonical 3D core. Sequence/context parallelism extends the partition along token positions, while expert parallelism extends it across sparse model capacity. Strategy selection remains an engineering feasibility test: identify the binding constraint, the communication primitive it creates, the placement decision it forces, and the measurement that proves the strategy is helping.
Strategy Binding constraint Primary movement Placement decision Validation signal
DDP Model state fits on one accelerator AllReduce gradients every step Replicate full model across data-parallel workers Step time dominated by compute, not synchronization
FSDP/ZeRO Model state exceeds one accelerator Gather parameters; ReduceScatter gradients Size prefetch and reshard windows within peak memory State plus activations and workspaces fit
Tensor parallelism One layer or tensor operation exceeds local capacity Reduce or gather partial layer results Keep tightly coupled partitions on fast local links Exposed collective time fits the layer-time budget
Pipeline parallelism Layer stack fits only when split by stage Activations and gradients between stages Balance stages and live microbatch activations Bubble and peak activation memory meet budget
Sequence/context parallelism Activations or attention context exceed local capacity Exchange sequence shards or attention state Partition long sequences across a low-latency group Longer context fits without communication dominating
Expert parallelism Sparse expert capacity exceeds local memory Route token activations with AllToAll Balance expert load across a high-bisection group Expert imbalance and dropped-token rate stay bounded
Hybrid parallelism More than one constraint binds at once Multiple collectives on coupled axes Satisfy divisibility, batch, topology, and failure domains MFU improves within memory and network budgets

A decision path condenses the table, starting from memory fit and then asking which structure breaks the budget (figure 20). Before accepting any branch, check peak memory, global batch, communication service time, and load balance together; bandwidth is a feasibility constraint throughout the decision, not an afterthought.

Figure 20: Parallelism Strategy Decision Framework: A selection guide that begins with memory fit. For a model that fits on one device, evaluate data parallelism against the throughput target and input-delivery budget; the complete dataset need not fit in accelerator memory. A model that does not fit is routed by the structure that breaks the budget, with sequential depth leading to pipeline parallelism, an oversized single layer to tensor parallelism, and otherwise sharded data parallelism (FSDP/ZeRO). Combine parallelism axes when the workload requires them. Peak memory, global batch, bandwidth, and workload imbalance constrain every candidate.

Identifying the binding constraint comes before choosing an implementation stack, which is why both the strategy comparison and the decision path stay deliberately coarse. Dense large-model training and recommendation-style workloads motivated each of these partitioning strategies, but the same constraint logic also reaches the federated edge case (table 10), where the bottleneck shifts from accelerator memory and fabric bandwidth to unreliable devices, privacy, and intermittent connectivity. A configuration chosen across these regimes still has to be expressed in software, and the way a framework expresses it decides which of the chapter’s budgets the engineer controls directly.

Lighthouse 6.3: Distributed archetype spectrum

Partitioning and coordination choices differ with the system’s primary bottleneck:

Table 10: Partitioning Strategy by Archetype: Partitioning and coordination choices differ with the dominant bottleneck.
Archetype Primary partitioning strategy The logic
Archetype A (GPT-4/Llama-3) Hybrid 3D parallelism Combine tensor (width), pipeline (depth), and data (throughput) parallelism to fit roughly 3.5 TB of weights under third-party estimates (OpenAI has not disclosed the parameter count).
Archetype B (DLRM at Scale) Embedding sharding Partition massive 10 TB+ tables across parameter servers or accelerator shards; use sparse AllToAll updates.
Archetype C (Federated MobileNet) Federated learning The same logic extends to coordinating on-device MobileNet updates across unreliable, privacy-constrained edge devices; Federated Learning Systems at Scale develops this regime.
Self-Check: Question
  1. According to the chapter’s parallelism decision framework, which condition indicates that standard DistributedDataParallel (DDP) is a sensible baseline to evaluate over FSDP, TP, or PP?

    1. The model’s single layer weight matrices exceed the HBM capacity of an individual GPU
    2. The cluster is connected by slow 10 Gb/s commodity Ethernet across 1,024 nodes
    3. The entire model state (parameters, gradients, and optimizer state) fits comfortably within single-device memory with sufficient headroom for activations
    4. The model architecture contains sparse Mixture-of-Experts routing layers
  2. An engineering team observes that an 8-GPU training job using pure pipeline parallelism achieves only 35 percent Model Flops Utilization (MFU), while interconnect links are largely idle. Using the bubble formula \(F_{\text{bubble}} = \frac{p-1}{m+p-1}\), explain how to assess the pipeline-bubble hypothesis and propose two adjustments if the trace confirms it.

  3. Order the following parallelism strategies by their structural granularity from coarsest (whole model / batch level) to finest (intra-operator level):

  1. Tensor Parallelism (Megatron column/row splits)
  2. Standard Data Parallelism (batch dimension splitting)
  3. Pipeline Parallelism (inter-layer stage splitting)

See Answers →

6.9 Frameworks and Runtime Contracts

A TP-8, PP-16, DP-128 layout that passes every feasibility check on paper can still hang at its first collective if two ranks disagree on group membership, or run slowly if gradient buckets become ready in an order the collective runtime cannot overlap. Choosing DDP, FSDP/ZeRO-style sharding, tensor parallelism, or pipeline parallelism is therefore also a decision about which constraints the runtime owns and which constraints the engineer must manage directly. Sparse workloads add a fourth contract, the parameter-server push/pull interface (Li et al. 2014) developed for Archetype B in section 6.5.6.

Li, M., D. G. Andersen, J. W. Park, A. J. Smola, A. Ahmed, V. Josifovski, J. Long, E. J. Shekita, and B.-Y. Su. 2014. “Scaling Distributed Machine Learning with the Parameter Server.” Proceedings of the 2014 International Conference on Big Data Science and Computing, 583–98. https://doi.org/10.1145/2640087.2644155.

The training framework defines process groups, gradient buckets, and the point in backpropagation when each reduction becomes ready; the collective runtime maps those reductions onto ring, tree, or hierarchical algorithms. The engineer must choose compatible group membership and bucket order and verify which communication remains exposed on the step’s critical path.

Production frameworks expose these same strategies under different names, which makes a translation aid useful when reading their documentation or configuration files. Four widely used stacks name the chapter’s strategies differently (table 11); the names change between releases, but the partition each one implements does not.

Table 11: Framework Names for the Parallelism Strategies: A translation aid, not a ranking. Each entry names the mechanism a framework uses for the partition developed in this chapter; exact class and option names vary across releases.
Strategy PyTorch DeepSpeed Megatron-LM JAX
Data parallel DistributedDataParallel (DDP) DeepSpeed engine, ZeRO stage 0 Data-parallel process groups Batch axis sharded over a device mesh
Sharded data parallel Fully Sharded Data Parallel (FSDP) ZeRO stages 1–3 Distributed optimizer Parameter and optimizer state sharded over a mesh axis
Tensor parallel DTensor tensor-parallel APIs AutoTP or Megatron integration Column- and row-parallel linear layers Sharding annotations on model axes, partitioned by the compiler
Pipeline parallel torch.distributed.pipelining Pipeline engine Pipeline schedules (1F1B, interleaved) User-written stage schedules

The training design therefore determines message size, readiness order, and frequency, while collective algorithms determine how those messages move. No framework abstraction changes those physical costs, so distributed-training efficiency ultimately depends on interconnect bandwidth, memory capacity, synchronization latency, and the useful overlap admitted by the computation graph.

↩︎ Overlap of gradient exchange with backpropagation, the lever that takes communication off a step’s critical path, is established in Communication-Computation Overlap.

Self-Check: Question
  1. In distributed training framework runtimes (such as PyTorch DDP), what mechanism combines multiple small layer gradient tensors into contiguous memory buffers before launching collective communication?

    1. Activation checkpointing
    2. ZeRO Stage 3 parameter gathering
    3. Temporal multiplexing
    4. Gradient bucketing
  2. Contrast the collective communication primitive invocation frequency of standard DDP against full-shard FSDP with resharding for a model with \(N_L\) layers during a single training step.

  3. Explain why framework optimizations such as CUDA graphs and asynchronous communication streams cannot eliminate the physical scaling penalty of distributed training as the cluster size \(N\) becomes very large.

See Answers →

6.10 Fallacies and Pitfalls

The GPT-2 notebooks showed the trap in miniature. Moving the same model from one NVLink node to four Ethernet-connected nodes quadrupled the GPU count but cut parallel efficiency from 99.4 percent to 27.9 percent. The following misconceptions generalize that error, each treating one term of the step-time accounting as if it were the whole budget.

Fallacy: Linear speedup is achievable with sufficient engineering effort.

Amdahl’s Law limits speedup when a fixed serial component remains exposed. Synchronous gradient aggregation creates an update dependency, but some of its work can overlap backward computation. As section 6.4 shows, \(\ScalingEfficiency = 1/(1 + \DeviceCount(\CommunicationTime(\DeviceCount) + \SynchronizationTime(\DeviceCount) - \OverlappedTime)/\IronLawComputeTime)\) depends on the exposed overhead relative to useful compute as \(\DeviceCount\) changes. A 1,000-GPU allocation therefore does not by itself justify a 1,000\(\times\) speedup forecast. Local kernel efficiency, memory feasibility, communication, and convergence must be evaluated against the specified baseline. Linear scaling is a result to demonstrate for an operating range, not a return guaranteed by device count.

Pitfall: Optimizing MFU without considering scaling efficiency.

A single-node MFU measurement does not predict fleet throughput by itself. For a fixed workload and hardware peak convention, scaling efficiency compares measured distributed throughput with ideal replication of that single-node baseline. Multiplying the baseline MFU by this scaling efficiency gives distributed MFU; multiplying an already measured distributed MFU by the same scaling efficiency counts communication and synchronization losses twice. The chapter’s own numbers make the difference concrete. A single node running at 50 percent MFU, scaled with the 83 percent scaling efficiency of the overlapped TP-8 layout in section 6.6, delivers about 41 percent MFU across the fleet. A planner who measures that 41 percent on the full cluster and then applies the 83 percent again would budget for about 34 percent and buy capacity the job does not need. Capacity planning must state the device count and measurement window for each metric. Checkpointing, recovery, and replay require additional accounting only when those losses fall outside that window, and useful goodput must count retained model progress rather than repeated work, under the accounting boundaries of Accounting boundaries.

Fallacy: Hyperparameters tuned on small clusters transfer directly to large-scale training.

Engineers tune hyperparameters on 8-GPU workstations then deploy to 256-GPU clusters expecting identical behavior. At scale, convergence behavior changes. The most critical hyperparameter is learning rate. As section 6.3 explains, global batch increases with GPU count when local batch and accumulation depth remain fixed, so the learning-rate schedule must be revalidated. The linear scaling rule of section 6.4.5, which the one-hour ImageNet run established, suggests \(\ScaledLearningRate = \BaseLearningRate\times (\ScaledBatchSize/\BaseBatchSize)\), but this relationship holds only within bounds. As models scale, they eventually encounter the critical batch size of section 6.4.6, where adding more data per step yields diminishing returns in convergence.

Beyond the critical batch size, this relationship breaks down in a model-, data-, and optimizer-dependent way. A team that takes a small-cluster learning rate, multiplies it mechanically with GPU count, and jumps directly to a much larger global batch may see lower final quality or slower sample efficiency even though hardware throughput improved. Warmup schedules, weight decay adjustment, layer-wise optimizers such as LARS/LAMB, and careful momentum tuning can recover accuracy in some regimes, but require systematic experimentation at target scale. Organizations that skip these scaling studies waste thousands of GPU-hours on suboptimal runs.

Pitfall: Adding GPUs to data-parallel jobs without modeling communication.

More GPUs improve time to target only if the gain in processing rate outweighs communication overhead and any additional sample use. With fixed local batch size, adding data-parallel workers increases the global batch; fixing the global batch instead reduces local work and can expose more communication. The critical-batch analysis in section 6.4.6 supplies a workload-dependent statistical guide, not universal GPU-count or model-size thresholds. Compare complete learning curves and cost at the same target quality before committing to a larger allocation.

Fallacy: Memory capacity alone determines the parallelism strategy.

A model that exceeds device capacity needs a feasible partition, but memory fit does not select the fastest one. Tensor parallelism exchanges partial results within layers, while pipeline parallelism transfers stage-boundary activations and introduces scheduling bubbles. Their relative cost depends on layer shapes, microbatch count, placement, and overlap. Compare complete training-state and activation budgets together with measured time to target; an unsupported throughput percentage or a weights-only fit cannot settle the choice.

Pitfall: Applying FSDP or ZeRO without measuring efficiency trade-offs.

Engineers adopt FSDP universally after reading that it “reduces memory and enables larger models.” Sharding trades memory capacity for communication overhead: full-shard FSDP gathers parameters before layer execution and reduces gradient shards during backward, with another parameter gather when the forward pass resharded them. The relevant comparison begins with the complete training-state budget. Under the mixed-precision Adam convention established here, the 7B worked example exceeds single-device capacity before activations, so standard DDP cannot fit that state on an A100-80 GB. A weights-only fit does not establish a feasible training baseline. When the complete state, activations, and workspaces fit without sharding, DDP can avoid the repeated gathers; when they exceed the 80 GB capacity, the comparison must include a feasible alternative such as sharding or offload. FSDP provides value when it enables training at all or when the larger local batch it permits offsets its communication cost. ZeRO-Offload extends capacity through CPU memory but adds transfers of its own. The decision therefore requires measuring peak memory and exposed communication for the same workload and optimizer contract.

Fallacy: Parallelism overhead is roughly constant regardless of model size.

Engineers benchmark parallelism strategies on convenient small models then apply those conclusions to large-scale training. For dense transformers at fixed tokens per update, computation and gradient bytes both grow roughly proportionally with parameter count, as the earlier scaling analysis established. Larger parameter count alone therefore does not imply a better computation-to-communication ratio. Architecture, sequence length, local batch size, partition degree, and kernel efficiency determine how much useful work each rank performs; gradient representation and process-group membership determine how much it communicates. A larger model can also require a different partition that introduces new layer collectives or pipeline bubbles. Reliable strategy selection holds the workload and target quality explicit, then recomputes memory fit, local compute time, communication volume, and the available overlap window at the target scale. A small-model benchmark becomes transferable evidence only when those governing terms remain comparable.

Pitfall: Treating scaling efficiency as a property of the hardware alone.

A vendor benchmark might report 85 percent scaling efficiency at 1,024 GPUs, and procurement teams then plan capacity as if that number were a cluster constant. Scaling efficiency is a joint property of four things: the workload’s communication-to-computation ratio, the parallelism strategy (data, pipeline, tensor, hybrid), the network topology (fat-tree vs. torus vs. dragonfly), and the software stack (NCCL version, kernel fusion, overlap quality). Reference numbers from dense large-language-model benchmarks transfer poorly to other workloads and fabrics. They may overstate scaling for graph neural networks with irregular communication and for embedding-heavy recommendation models, whose AllToAll embedding exchanges and many small random lookups load the fabric differently from dense gradient AllReduce (section 6.5.6), and they say nothing about a commodity-Ethernet placement like the GPT-2 scale-out, which lost most of its parallel efficiency on leaving the node. Capacity planning should use measured scaling on the target workload, not a vendor hero benchmark.

Fallacy: Gradient accumulation is free.

Gradient accumulation can reduce synchronization from every microstep to once per window of \(\AccumulationStepCount\) microsteps, eliminating \((\AccumulationStepCount-1)/\AccumulationStepCount\) of those synchronization events when the implementation defers reduction. The saving has costs. A resident gradient buffer remains live throughout the accumulation window; for the 7B model, the FP16 buffer occupies 14 GB. Retaining graphs across microsteps or increasing the local batch size can add activation pressure. Accumulating eight microsteps makes updates 8\(\times\) less frequent per processed microstep, but wall-clock spacing also depends on the communication saved. Larger effective batches can change convergence, and narrow accumulation formats can lose small contributions or overflow. The dtype, loss normalization, and reduction schedule must therefore be validated at the intended batch size. Accumulation trades communication frequency against update spacing, memory residency, and numerical stability.

Self-Check: Question
  1. A team achieves 50 percent Model Flops Utilization (MFU) on a single node, scales to 1,024 GPUs, and measures a scaling efficiency \((\eta_{\text{scaling}})\) of 50 percent on their communication-heavy workload. What is the cluster’s realized model-FLOP rate during distributed execution as a fraction of peak hardware compute?

    1. 25 percent of peak compute (delivering 256 GPU-equivalents of model computation)
    2. 50 percent of peak compute (delivering 512 GPU-equivalents of useful work)
    3. 100 percent of peak compute (delivering 1,024 GPU-equivalents of useful work)
    4. 12.5 percent of peak compute (delivering 128 GPU-equivalents of useful work)
  2. A procurement team plans capacity for a graph neural network workload using a vendor benchmark that reports 85 percent scaling efficiency at 1,024 GPUs for large-language-model training. Explain why this figure cannot be treated as a property of the cluster and what the team should measure instead.

  3. Why is gradient accumulation NOT a cost-free substitute for true physical scale-out even though it reduces gradient AllReduce communication frequency by a factor of \(k\)?

    1. It is mathematically incompatible with the Adam optimizer
    2. It keeps a live gradient buffer resident, spaces optimizer updates by \(k\) microsteps, and requires appropriate accumulation precision and normalization
    3. It requires dedicated InfiniBand links between CPU and GPU for each microstep
    4. It forces batch normalization layers to synchronize across all nodes on every forward pass
  4. The largest global batch size beyond which adding more samples per step yields diminishing reductions in the number of steps needed to reach target quality is called the ____.

  5. True or False: If a 7B-parameter model fits comfortably in single-GPU memory with high compute utilization under standard DDP, universally enabling ZeRO-3 / FSDP full sharding will always increase training throughput by reducing per-GPU memory consumption.

See Answers →

6.11 Summary

Scaling laws keep pushing frontier training budgets past what one machine can hold or finish in time, and distributed training is how the fleet absorbs that growth. It confronts the scaling wall, the workload-dependent operating point beyond which communication and coordination can consume the compute time saved by adding accelerators. A feasible design must preserve the intended optimization update while satisfying model-state, activation, batch-size, and interconnect constraints. Hardware throughput alone is insufficient; the comparison must also account for time to the target model quality.

Each partition relocates cost along the C³ axes. Data parallelism divides compute across replicas and pays in communication, the gradient aggregation whose exposed share set the scaling efficiency of the 175B communication example. Tensor parallelism divides work inside a layer and pays in communication on the critical path, which confines it to a fast domain. Pipeline parallelism divides layer depth and pays mostly in coordination, the fill and drain bubble that only more microbatches, better balance, or a smarter schedule can shrink. The 3D parallelism cube in figure 2 unites these trade-offs in one coordinate space (\(\DataParallelDegree \times \PipelineParallelDegree \times \TensorParallelDegree\)). A feasible point must satisfy peak memory and global-batch constraints as well as communication and coordination budgets.

Sharding and model partitioning make different parts of the training state fit, while synchronization and precision policies determine whether the resulting updates remain useful. Hybrid layouts compose these choices within the bandwidth hierarchy. The alignment workload extends the same reasoning to multiple models and alternating generation and update phases, where peak memory depends on which state is live together.

The chapter’s strategies are complementary dimensions of one design space rather than alternatives. Systems such as Megatron-LM map tensor, pipeline, data, and expert exchanges to the communication domains that can carry them, and that matching is what delays the communication-bound regime as the fleet grows. The workload archetypes weight those dimensions differently. Archetype A (GPT-4/Llama-3) combines dense-model partitioning with state sharding and, at long contexts, sequence or context partitioning; Archetype B (DLRM at Scale) shards sparse embedding state and pays in lookup traffic rather than layer collectives; Archetype C (Federated MobileNet) moves the coordination problem onto unreliable edge devices. In each case the binding constraint, not the archetype label, selects the configuration.

Key Takeaways: Parallelism relocates overhead
  • Splitting work moves the bottleneck: Distributed training does not make the underlying computation smaller; it converts memory pressure into communication volume, synchronization delay, or idle pipeline time (principle 12). The winning strategy is the split that sends overhead to the least binding part of the fleet.
  • The slowest worker sets synchronous step time: Under bulk-synchronous updates every step waits for its last required contribution, so a rare per-worker delay becomes a near-certain per-step delay at thousands of workers. Stale and asynchronous protocols trade that waiting for staleness, which can cost extra steps to the same target quality.
  • Throughput must serve convergence: Larger global batches can improve hardware efficiency while yielding diminishing progress per sample. Compare time to the same target quality, and treat the critical-batch estimate as a workload-dependent guide for selecting batch size and update schedules.
  • Sharding buys memory with messages: ZeRO and FSDP partition optimizer state, gradients, and parameters (principle 2), reducing replicated storage. Peak memory must still include activations, temporary gathers, and workspaces; exposed ReduceScatter and AllGather costs determine whether the capacity gain also improves throughput.
  • Tensor parallelism needs a fast domain: Splitting operations inside layers creates frequent communication on the dependency path. Place those groups on links with sufficient bandwidth and low latency; the relevant boundary is the communication domain, which may span nodes, rather than the server enclosure.
  • Pipeline parallelism trades bytes for bubbles: Layer staging reduces communication frequency, but fill and drain slots leave accelerators idle (principle 10). Microbatching with \(\MicrobatchCount\gg \PipelineParallelDegree\) is the mechanism that turns model depth into throughput rather than pipeline slack.
  • Hybrid layouts are joint decisions: Combine only the partitioning and sharding strategies needed to satisfy the workload’s constraints (principle 14). Model divisibility, batch size, peak memory, communication groups, and failure domains must form one feasible configuration; improving one axis can expose a limit on another.

The displacement of overhead (principle 14) makes a feasible partition the beginning of the design problem. A memory-saving split is useful only if its communication and schedule still meet the run’s time-to-quality budget. Every mechanism in this chapter shrinks the per-device compute term \(\IronLawComputeTime/\DeviceCount\) or the per-device training state, and pays for it in \(\CommunicationTime(\DeviceCount)\), in \(\SynchronizationTime(\DeviceCount)\) through barriers, stragglers, and pipeline bubbles, or in lost overlap. In C³ terms, no partition removes the overhead of scale; it only relocates that overhead among compute, communication, and coordination. The engineering judgment is therefore to compare complete configurations, including their exposed dependencies, rather than optimize each parallelism axis independently.

What’s Next: From logic to resilience
The fleet now has its traffic patterns (communication) and its logic (parallelism). Every configuration in this chapter, however, assumed that all ranks in each communication group arrive, on time and with correct data. A collective is not a barrier, but each dependent consumer still waits for every contribution, so one crashed node, failed link, or GPU that slows down without failing stalls the whole synchronous group, and a contribution corrupted in transit is reduced into every replica’s update. Across thousands of accelerators such events stop being rare. Fault Tolerance begins by computing how often they arrive, then builds the checkpointing, recovery, and elastic training that keep the computation making progress on imperfect hardware.

6.12 Self-Check Answers

Self-Check: Answer
  1. A research team is training a 3B-parameter transformer that fits comfortably in one H100 GPU’s 80 GB of memory, but projected single-GPU training would take 18 months to reach target loss. The dataset is 3 TB and fits on local NVMe storage. Which signal makes distributed training necessary in this scenario?

    1. Dataset exceeding GPU HBM capacity, which automatically mandates tensor parallelism regardless of execution time
    2. The presence of NVLink inside the node, which makes multi-machine scaling mandatory by default
    3. Unacceptable wall-clock training duration, even though single-device memory capacity and local storage are sufficient
    4. Fault tolerance limitations, because single-GPU training cannot survive hardware restarts

    Answer: The correct answer is C. The deadline is the binding constraint even though the complete model fits and local storage is sufficient. Memory exhaustion can motivate sharding, offload, or other capacity remedies; dataset capacity and delivery rate can motivate distributed data services without forcing model computation across devices. NVLink enables exchanges when needed but does not mandate distribution. Single-device jobs can checkpoint and recover from interruption.

    Learning Objective: Analyze which physical trigger necessitates distributed training when model memory and dataset storage are not binding constraints

  2. A team doubles a data-parallel cluster from 64 to 128 GPUs and observes that total step time drops by only 12 percent even though per-worker compute time halves. Using the distributed step-time equation \(T_{\text{step}}(N) = T_{\text{compute}}/N + T_{\text{comm}}(N) + T_{\text{sync}}(N) - T_{\text{overlap}}\), explain what the observation establishes and what measurement would distinguish possible causes.

    Answer: The observation establishes that halving per-worker compute did not halve the complete step. Exposed communication, synchronization, reduced overlap, or another critical-path delay can explain the residual; the step-time ratio alone does not identify which one binds. Compare aligned rank timelines for gradient readiness, collective transfer, barrier waiting, input delivery, and kernel execution. Collective waiting may reflect a late participant rather than limited fabric capacity, so link utilization during the critical interval is needed to support a network diagnosis.

    Learning Objective: Analyze how the communication-computation ratio limits scaling when per-worker compute shrinks faster than communication cost

  3. True or False: A cluster of 1,024 GPUs, each with a 50,000-hour mean time to failure, should expect a GPU failure roughly every two days if failures are independent, even though any single GPU fails only about once every five to six years.

    Answer: True. Independent constant-rate failures add, so the cluster failure rate is about 1,024/50,000 per hour and the cluster mean time between failures is about 49 hours. Whether each failure interrupts training depends on recovery and redundancy, which is why distribution makes fault tolerance a first-order budget rather than an afterthought.

    Learning Objective: Estimate how cluster size converts a rare per-device failure into a frequent cluster-level event

  4. The dimensionless ratio \(\rho = T_{\text{comm}}(N) / (T_{\text{compute}}/N)\), which screens communication demand relative to per-worker compute time, is defined as the ____.

    Answer: Communication-Computation Ratio. The ratio compares communication time with per-worker compute time. A large ratio warns that communication may limit scaling, but actual step time depends on overlap, readiness, and other exposed work. A small ratio alone does not guarantee near-linear scaling.

    Learning Objective: Define the metric governing the transition between compute-bound and communication-bound cluster operation

← Back to Questions

Self-Check: Answer
  1. Framing distributed parallelism strategies as compiler loop transformations across the training loop’s iterators (batches, layers, and operations), which distributed strategy corresponds to vectorization (SIMD) of inner matrix multiplications?

    1. Tensor parallelism, which partitions inner matrix-multiplication operations across devices and exchanges partial results over the interconnect
    2. Data parallelism, which unrolls the outer batch loop across devices so each rank processes independent data indices
    3. Pipeline parallelism, which stages sequential layer operations across devices analogous to CPU instruction pipelining
    4. Model replication, which duplicates the entire forward and backward execution redundantly across machines

    Answer: The correct answer is A. Tensor parallelism partitions inner matrix operations, analogous to vectorizing the inner loop. The analogy describes the computational cut; NVLink still exchanges messages between devices with separate memory and does not provide a shared vector register file. Unrolling the outer batch loop describes data parallelism, while staging layer groups describes pipeline parallelism. Replication does not partition an operation.

    Learning Objective: Classify distributed parallelism strategies according to compiler loop transformations

  2. In the 3D parallelism cube, where the device count equals the product of the data-, pipeline-, and tensor-parallel degrees, how do the three scaling axes interact to allocate cluster accelerators for large models?

    1. The three axes are mutually exclusive; choosing data parallelism precludes using tensor or pipeline parallelism in the same cluster
    2. Tensor and pipeline parallelism can combine within a node, but data parallelism can only be used if model parallelism is disabled
    3. The total accelerator count is the sum of the three degrees, with each parallelism type requiring a disjoint node pool
    4. The axes compose multiplicatively, so one layout can split layers (TP), stage the layer stack (PP), and replicate the pipeline across data shards (DP), and its device count is the product of the three degrees

    Answer: The correct answer is D. Data, pipeline, and tensor parallelism partition different workload dimensions, and the product of their degrees gives the accelerator count. The degrees are not independent knobs: tensor and pipeline degrees must divide the model, the data-parallel degree and microbatch schedule must give a viable global batch, every partition must fit memory, and each axis’s traffic must map onto a tier that can carry it. Large-model configurations routinely compose all three, for example TP=8 inside an NVLink node, PP=16 across nodes, and DP=128 across the cluster. Mutual exclusivity, a ban on combining data and model parallelism, and an additive count all contradict that multiplicative composition.

    Learning Objective: Calculate total cluster resource allocation using the multiplicative axes of the 3D parallelism cube

  3. True or False: If a neural network’s parameters exceed a single GPU’s memory capacity, tensor parallelism can be scaled across standard commodity Ethernet switches between server racks, provided the global batch size is made large enough.

    Answer: False. Increasing global batch size does not guarantee that frequent tensor-parallel exchanges fit within the compute window. Slow inter-rack links can dominate every layer. Tensor parallelism should use the fastest available domain; pipeline or data parallelism usually better matches slower links, subject to measured workload and topology constraints.

    Learning Objective: Evaluate the physical feasibility of tensor parallelism across commodity network fabrics

  4. For one GPT-3 layer split eight ways, the chapter’s bandwidth feasibility check finds about 1.9 ms of local compute, about 0.4 ms of tensor-parallel transfer over NVLink, and about 3.5 ms for the same transfer over one NDR InfiniBand port. Explain what these numbers imply for where the tensor-parallel group should be placed and what a planner must still check before accepting that placement.

    Answer: Over NVLink the per-layer exchange is a fraction of the layer’s compute, so it can fit inside the layer-time budget; over one InfiniBand port it takes longer than the compute it serves, so every layer would wait on the network. The tensor-parallel group therefore belongs in the fast communication domain. The planner must still check how much of the transfer the schedule can actually hide, the message startup latency, and whether the pipeline and data-parallel traffic placed on the slower tiers fits their own budgets.

    Learning Objective: Apply a per-layer bandwidth feasibility test to place tensor parallelism on a fabric tier

← Back to Questions

Self-Check: Answer
  1. A 7B-parameter transformer in mixed precision requires 112 GB of static memory for standard replicated DDP (14 GB for FP16 weights, 14 GB for FP16 gradients, and 84 GB for FP32 Adam master weights, momentum, and variance). Under ZeRO Stage 3 (or FSDP Full Shard) across 64 GPUs, what is the resulting static training memory per GPU?

    1. \(112\text{ GB}\), because ZeRO-3 only reduces dynamic activation memory rather than model state
    2. \(28\text{ GB}\), because only optimizer states are sharded while parameters and gradients remain fully replicated
    3. \(1.75\text{ GB}\), because weights, gradients, and optimizer states are each partitioned equally across all 64 workers
    4. \(0.25\text{ GB}\), because INT4 quantization eliminates floating-point representation entirely

    Answer: The correct answer is C. ZeRO-3 / FSDP partitions all three components of static training state, namely FP16 model weights (2 bytes/param), FP16 gradients (2 bytes/param), and FP32 Adam states (12 bytes/param), across the \(N=64\) ranks (\(16\text{ bytes/param} / 64 = 0.25\text{ bytes/param}\) per device). For a 7B model (\(7 \times 10^9 \times 0.25\text{ bytes} = 1.75\text{ GB}\) per GPU), this leaves substantial HBM headroom for dynamic activations. Asserting that state remains 112 GB ignores parameter and optimizer sharding. ZeRO-1 retains 28 GB of weights and gradients plus its optimizer shard, so its total is greater than 28 GB. Claiming INT4 compression confuses precision quantization with state sharding.

    Learning Objective: Calculate per-GPU static memory reduction under ZeRO-3 parameter, gradient, and optimizer state sharding

  2. An 8-GPU node can use four-step gradient accumulation to match the effective batch of 32 GPUs connected by 10 Gb/s Ethernet. Explain why the smaller allocation can cost less even when the larger allocation completes the fixed-sample workload sooner.

    Answer: Four accumulation microsteps synchronize once per optimizer update, keeping collective traffic inside the fast local interconnect while matching the effective global batch. The 32-GPU allocation adds arithmetic capacity but pays inter-node communication overhead and rents four nodes. Compare node-hours at the same sample budget and target quality: lower hourly capacity cost can outweigh longer elapsed time, so better cost efficiency does not imply higher throughput.

    Learning Objective: Compare gradient accumulation on high-speed intra-node fabrics against naive scale-out across bandwidth-constrained networks

  3. **Order the memory sharding stages of data parallelism from least sharded (highest memory footprint) to deepest sharded (lowest memory footprint):

  1. ZeRO-2 (shards optimizer states and gradients using ReduceScatter)
  2. Standard DDP (full replication of parameters, gradients, and optimizer states)
  3. ZeRO-3 / FSDP (shards optimizer states, gradients, and model parameters with layer-wise AllGather/ReduceScatter)
  4. ZeRO-1 (shards optimizer states only, keeping parameters and gradients replicated)**

Answer: (2) -> (4) -> (1) -> (3). First, (2) Standard DDP replicates all 16 bytes/param on every GPU. Next, (4) ZeRO-1 shards optimizer states (~4\(\times\) static reduction). Then, (1) ZeRO-2 additionally shards gradients (~8\(\times\) static reduction). Finally, (3) ZeRO-3 / FSDP shards the parameters themselves, achieving linear \(1/N\) memory reduction.

Learning Objective: Classify the memory sharding stages of ZeRO and FSDP by depth of partitioned state

  1. If a model’s parameters, gradients, optimizer state, activations, and working buffers already fit comfortably within single-GPU memory with high compute utilization under standard DDP, what is the expected throughput impact of enabling ZeRO-3 / FSDP Full Sharding?

    1. Throughput will increase linearly by \(N\times\) because sharding reduces per-GPU gradient memory
    2. Throughput can decrease because FSDP introduces additional AllGather collectives before forward and backward passes and ReduceScatter on the critical path
    3. Throughput will remain exactly identical because NCCL automatically hides all collective communication overhead
    4. Throughput will double because parameter sharding eliminates the backward pass entirely

    Answer: The correct answer is B. With full resharding, FSDP adds parameter AllGathers before forward and backward computation and uses ReduceScatter for gradients. When memory savings do not enable a better execution configuration, exposed extra communication can reduce throughput. The penalty depends on overlap and topology; neither linear speedup nor perfect hiding follows from sharding alone.

    Learning Objective: Evaluate the communication throughput overhead of FSDP when device memory is not the binding constraint

  2. Why did modern distributed training frameworks replace centralized parameter servers with decentralized AllReduce collective topologies for dense synchronous training?

    1. Parameter servers cannot execute stochastic gradient descent updates with mathematical validity
    2. Parameter servers are restricted to CPU hosts and cannot interface with GPU accelerators
    3. AllReduce eliminates all network traffic by updating weights locally without exchanging data
    4. Centralized parameter servers create an \(\mathcal{O}(N)\) network bottleneck at the server’s network interface, whereas AllReduce distributes communication symmetrically across all workers

    Answer: The correct answer is D. A centralized server must service the dense gradient and parameter streams of all workers, concentrating traffic at its interfaces. AllReduce distributes that exchange among participants. For an ideal ring, each worker transfers \(2(N-1)/N \times M_{\text{grad}}\) bytes; tree schedules have their own transfer and startup accounting. Whether either design meets the step budget depends on sustained bandwidth, topology, readiness, and overlap. Parameter servers can implement valid SGD on CPU or GPU hosts, and AllReduce still requires communication.

    Learning Objective: Compare centralized and decentralized synchronization topologies in terms of bandwidth bottlenecks for dense gradient traffic

  3. In standard PyTorch DistributedDataParallel, each worker uses a ____ to partition dataset indices deterministically and assign rank-specific shards based on process rank and epoch seed.

    Answer: DistributedSampler. It assigns rank-specific dataset indices using the rank and epoch seed. When the dataset size is not divisible by the worker count, padding can repeat samples unless the remainder is dropped; the sampler and loss accounting must handle that boundary explicitly.

    Learning Objective: Identify deterministic rank-specific dataset partitioning and account for repeated or dropped remainder samples

← Back to Questions

Self-Check: Answer
  1. A team scales a data-parallel training run from 8 to 64 workers, increasing the effective global batch size from 512 to 4,096 samples. If the model operates comfortably below its critical batch size, which learning-rate adjustment follows the linear scaling heuristic?

    1. Keep the learning rate unchanged, because large-batch variance reduction automatically stabilizes optimization
    2. Multiply the learning rate by 64 to match the total worker count rather than the batch expansion ratio
    3. Multiply the learning rate by \(\sqrt{8}\) from step zero without a warmup schedule
    4. Multiply the learning rate by \(8\times\) (matching the batch expansion ratio) and include a gradual linear warmup schedule

    Answer: The correct answer is D. The batch expansion is \(4096/512=8\), so the linear scaling heuristic multiplies the learning rate by eight, with warmup to limit early instability. It is a starting configuration to validate, not a universal optimizer rule. Scaling by the total worker count uses the wrong ratio; square-root scaling is a different heuristic.

    Learning Objective: Apply linear learning rate scaling with warmup for large-batch data-parallel training

  2. Explain the distinction between hardware efficiency and statistical efficiency in distributed training, and describe a concrete scenario where a cluster configuration achieves high hardware efficiency but poor statistical efficiency.

    Answer: Hardware efficiency measures how effectively compute capacity produces step throughput after exposed execution overhead. Statistical efficiency measures how effectively processed samples advance learning toward the target quality. A global batch far beyond the critical-batch crossover can keep MFU high while added examples yield diminishing reductions in update count. This can increase the examples and allocated GPU-hours needed to reach the target. Whether wall-clock time also increases depends on achieved throughput and the measured steps to the same target; high throughput alone does not establish either a faster or slower complete run.

    Learning Objective: Compare hardware throughput efficiency with statistical sample efficiency in distributed optimization

  3. Why must the learning-rate schedule be revalidated when moving from Bulk-Synchronous Parallel (BSP) to Stale-Synchronous Parallel (SSP) at the same global batch size?

    1. Gradients computed against stale parameters can alter update stability, with effects that depend on delay, objective, and optimizer schedule
    2. SSP workers compute exact full-batch gradients instead of stochastic minibatches
    3. SSP eliminates all inter-GPU network communication, which alters the loss landscape
    4. SSP is mathematically restricted to second-order quasi-Newton optimizers that require small step sizes

    Answer: The correct answer is A. SSP permits gradients from parameter snapshots that lag behind the current state. Their effect on stability depends on the delay bound, objective, and optimizer schedule; there is no universal staleness penalty or mandatory learning-rate reduction. A smaller learning rate is one candidate to validate by comparing complete runs to the same target quality. SSP still communicates, uses stochastic minibatches, and is not restricted to second-order optimizers.

    Learning Objective: Explain the impact of bounded gradient staleness on optimizer stability and learning rate selection

  4. The threshold batch size \(B^* \approx \frac{\text{tr}(\Sigma)}{\|\nabla \mathcal{L}(\theta)\|^2}\), representing the point where gradient variance equals true gradient magnitude and past which larger batches yield diminishing returns in sample efficiency, is known as the ____.

    Answer: critical batch size. The gradient-noise-scale proxy estimates the crossover where larger batches give diminishing reductions in optimization steps per added sample. Below that crossover, steps can fall approximately inversely with batch size; the relationship depends on optimizer, training phase, and target quality.

    Learning Objective: Define critical batch size in terms of gradient covariance trace and gradient norm

  5. Why does the FP8 recipe described in this chapter pair the E4M3 format for forward-pass activations and weights with the E5M2 format for backward-pass gradients?

    1. E4M3 has a wider numerical range than E5M2, which prevents gradient underflow during backpropagation
    2. E4M3 spends more bits on the mantissa, giving finer precision for bounded weights and activations, while E5M2 spends more bits on the exponent, giving the wider dynamic range that small and widely varying gradients need
    3. E4M3 is an integer format while E5M2 is a floating-point format supported exclusively on CPU hosts
    4. E5M2 requires half the memory bandwidth of E4M3, accelerating the backward pass AllReduce

    Answer: The correct answer is B. E4M3 provides finer precision, while E5M2 provides a wider representable range. The cited recipe uses these properties for scaled weights/activations and gradients respectively. Tensor distributions and scaling determine suitability; neither format guarantees that all values avoid underflow or overflow. Both are one-byte floating-point formats, so choosing E5M2 rather than E4M3 does not halve wire traffic.

    Learning Objective: Compare E4M3 and E5M2 FP8 formats based on numerical range, precision, and training tensor roles

  6. Explain why per-tensor dynamic scaling is necessary in FP8 distributed training and describe how the scaling factor is computed during execution.

    Answer: FP8 scaling maps each tensor into the limited representable range. A simple current-maximum rule uses \(S=\mathrm{FP8}_{\max}/\max(|X|)\) before casting, with an appropriate zero-tensor guard. For a product of independently scaled operands, the output must be divided by the product of their scales. Practical policies may use history or smaller scaling blocks; the objective is to balance rounding, underflow, and overflow.

    Learning Objective: Explain how scaling balances rounding, underflow, and overflow in FP8 tensors

← Back to Questions

Self-Check: Answer
  1. In Megatron-LM style tensor parallelism for a transformer layer, how are the linear projections in the multi-head attention block arranged to minimize cross-device collective communication?

    1. Both QKV and Output projections are column-parallel, requiring an AllGather after each projection
    2. Both QKV and Output projections are row-parallel, requiring an AllReduce before each projection
    3. The QKV projection is column-parallel and the Output projection is row-parallel, requiring only a single AllReduce at the end of the attention block
    4. The QKV projection is partitioned across pipeline stages while the Output projection is replicated across data-parallel ranks

    Answer: The correct answer is C. In Megatron-LM, the first linear layer (QKV projection) is column-parallel (\(W = [W_1 | W_2]\)), producing partitioned intermediate activations without communication. The second linear layer (Output projection) is row-parallel (\(W = [W_1 ; W_2]\)), taking those partitioned activations directly as inputs and generating partial sums. Only a single AllReduce at the end of the row-parallel projection is required to sum the partial outputs. Using column-parallel for both layers would require an intermediate AllGather. Using row-parallel for both layers would require an AllReduce before the second layer. Splitting QKV and Output across pipeline stages confuses intra-layer tensor parallelism with inter-layer pipelining.

    Learning Objective: Analyze the column-then-row linear layer pairing in Megatron-LM tensor parallelism

  2. In a synchronous 1F1B pipeline-parallel training schedule with \(p=8\) stages and \(m=32\) microbatches, calculate the theoretical pipeline bubble fraction and explain how increasing the microbatch count \(m\) affects bubble overhead and activation memory.

    Answer: The bubble fraction is \(F_{\text{bubble}} = \frac{p-1}{m+p-1} = \frac{8-1}{32+8-1} = \frac{7}{39} \approx 17.9\%\). Increasing the microbatch count \(m\) relative to stage count \(p\) drives the bubble fraction down toward zero (\(F_{\text{bubble}} \to 0\)). Under 1F1B scheduling, with equal activation sizes per microbatch, peak activation memory per stage is bounded at \(\mathcal{O}(p)\) rather than GPipe’s \(\mathcal{O}(m)\), making larger microbatch counts practical.

    Learning Objective: Calculate pipeline bubble overhead and explain the role of microbatch count in pipeline utilization

  3. **Order the four sequential phases of token routing and execution in Expert Parallelism (Mixture of Experts) across distributed workers:

  1. AllToAll Combine: Processed token embeddings are routed back to their original source devices for residual connections
  2. Computation: Sharded expert feed-forward networks process their assigned token batches
  3. Gating: A router network evaluates tokens and selects top-k destination experts
  4. AllToAll Dispatch: Tokens are shuffled across the network fabric to the devices hosting their selected experts**

Answer: (3) -> (4) -> (2) -> (1). First, (3) Gating evaluates token representations to select destination experts. Next, (4) AllToAll Dispatch routes tokens across the interconnect to the GPUs hosting the chosen experts. Then, (2) Computation executes the local expert feed-forward layers on the received tokens. Finally, (1) AllToAll Combine routes the processed representations back to their originating devices.

Learning Objective: Order the four phases of token routing and execution in expert parallelism

  1. In a capacity-limited Mixture of Experts (MoE) system using top-1 routing and token dropping, what occurs when a hot expert receives more tokens than its allocated buffer capacity determined by the Capacity Factor \(C\)?

    1. Excess tokens are dropped and pass through the MoE layer unprocessed via the residual connection
    2. The expert GPU dynamically allocates host CPU memory over PCIe, halting computation on other ranks
    3. The AllToAll collective automatically pauses until all sibling experts process matching token counts
    4. The extra tokens are rerouted to a random cold expert regardless of gating network weights

    Answer: The correct answer is A. To prevent memory overflow and load-imbalance stalls on devices hosting popular experts, the stated top-1 dropping implementation enforces a capacity limit \(C \cdot (B \times S)/E\). When an expert’s assigned token count exceeds this buffer, the excess tokens are dropped and bypass the feed-forward computation, flowing directly through the residual connection. Dynamically allocating host CPU memory would stall GPU execution. Collective communication does not pause dynamically for uneven token counts. Rerouting to random unselected experts would violate gating semantics.

    Learning Objective: Explain the function of the capacity factor and token dropping in distributed MoE routing

  2. Contrast the communication patterns and hardware interconnect requirements of dense LLM training (Megatron-style Tensor Parallelism) with large-scale Recommendation Systems (DLRM embedding sharding).

    Answer: Dense LLM tensor parallelism places frequent activation reductions on the layer critical path, favoring high-bandwidth, low-latency local fabrics. DLRM instead shards large embedding tables and exchanges the rows selected by each batch. Its memory-capacity and random-access constraints differ from dense arithmetic, but sparse lookup and redistribution traffic can still saturate network links under fan-out or skew.

    Learning Objective: Compare dense model tensor parallelism against sparse embedding sharding communication patterns

  3. True or False: Ring Attention scales context length beyond single-GPU memory capacity by circulating key/value blocks in an accelerator ring across \(N-1\) communication rounds while overlapping transfer with block-level attention computation.

    Answer: True. Ring Attention partitions the query, key, and value sequences across \(N\) GPUs so each device holds only \(S/N\) tokens of key/value state. Each GPU evaluates its query block against all \(N\) key/value blocks, including its local block, using \(N-1\) transfers. Transfer can overlap block computation when the interconnect and compute budget permit; the distributed state capacity grows with worker count.

    Learning Objective: Evaluate the memory and communication mechanism of Ring Attention for long-context sequence parallelism

← Back to Questions

Self-Check: Answer
  1. In a 3D parallelism layout whose device count is the product of the data-, pipeline-, and tensor-parallel degrees, what hardware-matching principle dictates mapping tensor parallelism intra-node while pipeline parallelism spans inter-node links?

    1. Pipeline parallelism requires more memory bandwidth than NVLink can provide, forcing it onto InfiniBand
    2. Tensor parallelism requires only point-to-point transfers, making it insensitive to link latency
    3. Hierarchy-aware parallelism maps frequent TP exchanges to the fastest local fabric and PP boundary transfers to slower inter-node links.
    4. Data parallelism cannot execute across nodes that use tensor parallelism internally

    Answer: The correct answer is C. Tensor parallelism communicates inside each layer, so its exposed latency strongly favors the fastest local fabric. Pipeline parallelism exchanges boundary activations and gradients between stages and can tolerate slower links when enough compute separates transfers. Data parallelism can wrap both dimensions. This is bandwidth matching, not a universal minimum bandwidth or prohibition on inter-node tensor parallelism.

    Learning Objective: Apply the hierarchy-aware bandwidth matching principle to place 3D parallelism dimensions onto hardware tiers

  2. A 175B-parameter model uses mixed-precision Adam with 2-byte weights, 2-byte gradients, a 4-byte master copy, and two 4-byte moments per parameter. With tensor degree \(t=8\) and pipeline degree \(p=16\), calculate the ideally balanced static memory per GPU before data-parallel state sharding, and explain why tensor parallelism alone cannot fit this state on 80 GB GPUs.

    Answer: The 16-byte-per-parameter state totals \(175\times10^9\times16=2{,}800\) GB. Tensor parallelism alone leaves \(2{,}800/8=350\) GB per GPU, exceeding 80 GB. Adding 16 balanced pipeline stages reduces the static state to \(2{,}800/(8\times16)=21.875\) GB per GPU. Activations, temporary parameter gathers, communication buffers, and uneven layer placement require additional headroom.

    Learning Objective: Calculate per-GPU static memory requirements in a 3D hybrid parallelism configuration

  3. **For one rank in a balanced 3D layout with eight transformer layers per pipeline stage, 32 microbatches per update, two tensor-parallel reductions per layer in each pass, and one unbucketed data-parallel reduction after accumulation, order these communication patterns by invocation count per update, highest to lowest:

  1. Data-parallel gradient reduction
  2. Tensor-parallel reductions
  3. Pipeline stage-boundary transfers**

Answer: (2) -> (3) -> (1). Tensor reductions recur within each layer of each microbatch. Pipeline transfers recur at stage boundaries for each microbatch. The specified unbucketed data-parallel reduction occurs once after accumulation. This ordering depends on the supplied layer count, schedule, and bucketing; it is not a universal ranking of bandwidth demand or exposed time.

Learning Objective: Compare communication invocation counts under an explicitly specified hybrid schedule

  1. In a 16,384-GPU cluster configured with \(\text{TP}=8\), \(\text{PP}=16\), and \(\text{DP}=128\), how many GPUs participate in each individual data-parallel AllReduce communicator group?

    1. \(16{,}384\text{ GPUs}\), because all accelerators in the cluster must synchronize in a single global collective
    2. \(128\text{ GPUs}\), because each rank communicates only with its corresponding tensor-and-pipeline shard position across the 128 model replicas
    3. \(8\text{ GPUs}\), matching the tensor-parallel degree within each local node
    4. \(16\text{ GPUs}\), matching the pipeline stage depth across the cluster spine

    Answer: The correct answer is B. In 3D parallelism, the cluster contains \(\text{DP}=128\) complete model replicas, each partitioned across \(\text{TP} \times \text{PP} = 8 \times 16 = 128\) distinct shard positions. For each shard position, the corresponding rank in every replica forms an independent data-parallel group of 128 GPUs that AllReduces its specific parameter shard. Participating in a single global collective of 16,384 GPUs would discard 3D partitioning. Confining DP groups to 8 or 16 GPUs confuses data-parallel replica count with tensor or pipeline dimensions.

    Learning Objective: Analyze communicator group sizes and partitioning in a large-scale 3D parallelism cluster

  2. True or False: A uniform fat-tree network topology providing equal bisection bandwidth between all node pairs is always more cost-effective than a rail-optimized topology when training large language models with hierarchy-aware 3D parallelism.

    Answer: False. A rail-optimized fabric can reduce hardware and cabling costs when its connectivity matches the intended pipeline and data-parallel groups. The saving requires a workload and placement comparison; expert AllToAll traffic, mixed jobs, routing constraints, and contention can change the required fabric. Neither topology is always more cost-effective.

    Learning Objective: Evaluate how network topology design interacts with hierarchy-aware parallelism communication locality

← Back to Questions

Self-Check: Answer
  1. Why does Proximal Policy Optimization (PPO) in multi-model RLHF create an infrastructure asymmetry challenge that does not exist in standard pretraining?

    1. It combines policy and value-model training with policy-generated autoregressive rollouts and forward-only scoring by frozen reference and reward models.
    2. All four models in PPO must be trained with identical optimizer hyperparameters on the same GPU
    3. PPO requires all models to be converted to INT4 precision to enable cross-node gradient synchronization
    4. PPO eliminates backward passes entirely, turning distributed training into a stateless inference service

    Answer: The correct answer is A. The policy generates autoregressive rollouts, requiring a generation-time KV cache; policy and value updates require backward passes and optimizer state. Frozen reference and reward models score generated sequences without generating those sequences themselves. These phases have different memory and compute demands. Freezing scoring models does not eliminate the policy and value-model training work.

    Learning Objective: Analyze the infrastructure asymmetry between training and inference models in multi-model RLHF

  2. Explain how Direct Preference Optimization (DPO) simplifies cluster infrastructure compared to PPO, detailing which models and computational phases are eliminated.

    Answer: Standard offline DPO removes separate reward and value models and online autoregressive rollouts from the update loop. It trains on fixed preference pairs using a policy and a frozen reference, whose scores may be precomputed. Static-state savings depend on the PPO model sizes and placement. Removing rollout KV state eliminates a generation peak; it does not by itself enlarge update microbatches because both methods still need policy activations and other live buffers.

    Learning Objective: Compare the memory and execution pipeline requirements of PPO and DPO alignment architectures

  3. During the autoregressive generation phase of PPO alignment for a 70B-parameter model, which growing runtime state can limit generation concurrency in accelerator memory?

    1. FP32 Adam momentum and variance buffers stored on CPU hosts
    2. Key-Value (KV) cache memory in GPU HBM, bounded by memory bandwidth during token-by-token generation
    3. AllReduce gradient communication buffers across InfiniBand switches
    4. Host filesystem NVMe write bandwidth for checkpoint dumping

    Answer: The correct answer is B. The KV cache grows with concurrent sequence count, context length, layer count, and KV-head width. It can limit how many rollouts fit beside model weights and other resident state. Small-batch decoding is often memory-bandwidth bound, but cache capacity and compute limits must be evaluated separately. Optimizer buffers and checkpoint I/O do not explain this per-sequence growth.

    Learning Objective: Identify the binding resource bottleneck during the generation phase of online RLHF

  4. The scheduling approach in RLHF distributed systems where the accelerator fleet alternates between an autoregressive rollout phase dominated by KV cache memory and a backward training phase dominated by matrix GEMM compute is known as ____.

    Answer: temporal multiplexing. Temporal multiplexing reconfigures hardware resources dynamically between inference-shaped sequence generation and training-shaped gradient backpropagation.

    Learning Objective: Define temporal multiplexing as the scheduling strategy for alternating execution phases in RLHF

  5. True or False: Because Direct Preference Optimization (DPO) eliminates reward and value models and avoids online sequence generation, it is strictly superior to PPO for all model alignment and exploration tasks.

    Answer: False. DPO is restricted to optimizing against a static offline dataset of preference pairs, preventing the policy from generating novel outputs and exploring beyond the provided data. For tasks requiring iterative self-improvement and exploration (such as multi-step mathematical reasoning), PPO’s online rollout and reward feedback loop can discover superior trajectories, justifying its higher infrastructure overhead.

    Learning Objective: Evaluate the functional trade-offs between static DPO optimization and dynamic PPO exploration

← Back to Questions

Self-Check: Answer
  1. According to the chapter’s parallelism decision framework, which condition indicates that standard DistributedDataParallel (DDP) is a sensible baseline to evaluate over FSDP, TP, or PP?

    1. The model’s single layer weight matrices exceed the HBM capacity of an individual GPU
    2. The cluster is connected by slow 10 Gb/s commodity Ethernet across 1,024 nodes
    3. The entire model state (parameters, gradients, and optimizer state) fits comfortably within single-device memory with sufficient headroom for activations
    4. The model architecture contains sparse Mixture-of-Experts routing layers

    Answer: The correct answer is C. Comfortable full-state and activation fit makes DDP a sensible baseline because it avoids sharded parameter reconstruction and pipeline bubbles. Memory fit alone does not prove maximum throughput; exposed communication and useful batch size still need evaluation. An oversized layer makes tensor parallelism a candidate, while offload or recomputation may enable other layouts. Slow Ethernet requires a workload-specific communication budget; accumulation or a faster fabric may help. Sparse MoE routing motivates evaluating expert placement and its AllToAll demand.

    Learning Objective: Identify the binding constraint criteria that validate using standard Data Parallelism

  2. An engineering team observes that an 8-GPU training job using pure pipeline parallelism achieves only 35 percent Model Flops Utilization (MFU), while interconnect links are largely idle. Using the bubble formula \(F_{\text{bubble}} = \frac{p-1}{m+p-1}\), explain how to assess the pipeline-bubble hypothesis and propose two adjustments if the trace confirms it.

    Answer: Low MFU and idle interconnect links make pipeline bubbles a candidate, but they do not prove the cause. Measure stage timelines and the microbatch count, and compare observed fill/drain idle slots with the bubble formula. Stage imbalance, input stalls, or inefficient local kernels can also lower MFU. If bubbles bind, increasing microbatch count can reduce their fraction, subject to activation memory and useful global batch size. Reducing stage count can also help when the revised memory budget fits; replacing some intra-node stages with tensor parallelism additionally requires a suitable communication budget.

    Learning Objective: Analyze pipeline bubble underutilization and propose architectural remedies

  3. **Order the following parallelism strategies by their structural granularity from coarsest (whole model / batch level) to finest (intra-operator level):

  1. Tensor Parallelism (Megatron column/row splits)
  2. Standard Data Parallelism (batch dimension splitting)
  3. Pipeline Parallelism (inter-layer stage splitting)**

Answer: (2) -> (3) -> (1). First, (2) Standard Data Parallelism operates at the coarsest granularity, replicating the entire model and partitioning only the outer batch loop. Next, (3) Pipeline Parallelism partitions at the inter-layer boundary (assigning sequential layer groups to stages). Finally, (1) Tensor Parallelism operates at the finest intra-operator granularity, partitioning individual weight matrices within each layer.

Learning Objective: Rank distributed parallelism strategies by their structural decomposition granularity

← Back to Questions

Self-Check: Answer
  1. In distributed training framework runtimes (such as PyTorch DDP), what mechanism combines multiple small layer gradient tensors into contiguous memory buffers before launching collective communication?

    1. Activation checkpointing
    2. ZeRO Stage 3 parameter gathering
    3. Temporal multiplexing
    4. Gradient bucketing

    Answer: The correct answer is D. Gradient bucketing groups individual layer gradient tensors into larger contiguous memory buffers (typically 25–50 MB buckets) during the backward pass. Launching an AllReduce on a single aggregated bucket amortizes collective invocation latency and saturates network link bandwidth far more effectively than issuing hundreds of tiny per-tensor transfers. Activation checkpointing recomputes activations to save memory. ZeRO-3 parameter gathering reconstructs sharded weights on demand. Temporal multiplexing alternates execution modes in multi-model RLHF.

    Learning Objective: Explain the role of gradient bucketing in amortizing collective communication latency

  2. Contrast the collective communication primitive invocation frequency of standard DDP against full-shard FSDP with resharding for a model with \(N_L\) layers during a single training step.

    Answer: DDP launches one AllReduce per ready gradient bucket, often overlapping those calls with backward computation. Full-shard FSDP with layer-level wrapping and resharding after forward typically adds an AllGather before forward, another before backward, and a ReduceScatter after backward: approximately \(3N_L\) calls. Actual counts depend on wrapping, bucketing, prefetch, and resharding policy.

    Learning Objective: Compare collective communication primitive invocations between standard DDP and full-shard FSDP

  3. Explain why framework optimizations such as CUDA graphs and asynchronous communication streams cannot eliminate the physical scaling penalty of distributed training as the cluster size \(N\) becomes very large.

    Answer: Framework optimizations can reduce launch overhead and change readiness, overlap, and effective communication service time. They cannot make a required payload cross a finite-bandwidth link instantaneously. At fixed global work, adding ranks reduces local compute while required transfers and coordination can remain exposed. A scaling prediction therefore needs the actual workload, collective schedule, and critical path; a fixed-residual Amdahl ceiling applies only under that model’s assumptions.

    Learning Objective: Evaluate the physical limits of framework-level communication optimizations

← Back to Questions

Self-Check: Answer
  1. A team achieves 50 percent Model Flops Utilization (MFU) on a single node, scales to 1,024 GPUs, and measures a scaling efficiency \((\eta_{\text{scaling}})\) of 50 percent on their communication-heavy workload. What is the cluster’s realized model-FLOP rate during distributed execution as a fraction of peak hardware compute?

    1. 25 percent of peak compute (delivering 256 GPU-equivalents of model computation)
    2. 50 percent of peak compute (delivering 512 GPU-equivalents of useful work)
    3. 100 percent of peak compute (delivering 1,024 GPU-equivalents of useful work)
    4. 12.5 percent of peak compute (delivering 128 GPU-equivalents of useful work)

    Answer: The correct answer is A. Starting from the single-node MFU baseline, the distributed model-FLOP rate is \(0.50\times0.50=0.25\) of fleet peak, or 256 peak-GPU equivalents. The scaling factor accounts for losses relative to that baseline. A measured distributed MFU would already include those losses and must not be multiplied by scaling efficiency again. Retained-progress goodput additionally requires accounting for replay and recovery outside this measurement.

    Learning Objective: Calculate distributed model-FLOP rate from a local MFU baseline and scaling efficiency without double-counting losses

  2. A procurement team plans capacity for a graph neural network workload using a vendor benchmark that reports 85 percent scaling efficiency at 1,024 GPUs for large-language-model training. Explain why this figure cannot be treated as a property of the cluster and what the team should measure instead.

    Answer: Scaling efficiency is a joint property of the workload’s communication-to-computation ratio, the parallelism strategy, the network topology, and the software stack (collective library version, kernel fusion, overlap quality). The benchmark fixes all four for a language model; a graph neural network with irregular communication changes the first and likely the second, so the same hardware can deliver much lower efficiency. The team should measure scaling on the target workload, at the intended device count and parallelism layout, and plan capacity from that measured curve rather than from a hero benchmark.

    Learning Objective: Explain why scaling efficiency must be measured on the target workload rather than inherited from vendor benchmarks.

  3. Why is gradient accumulation NOT a cost-free substitute for true physical scale-out even though it reduces gradient AllReduce communication frequency by a factor of \(k\)?

    1. It is mathematically incompatible with the Adam optimizer
    2. It keeps a live gradient buffer resident, spaces optimizer updates by \(k\) microsteps, and requires appropriate accumulation precision and normalization
    3. It requires dedicated InfiniBand links between CPU and GPU for each microstep
    4. It forces batch normalization layers to synchronize across all nodes on every forward pass

    Answer: The correct answer is B. One optimizer update follows \(k\) forward/backward microsteps, but this does not imply \(k\) times the wall-clock update latency: saved synchronization and the comparison schedule affect elapsed time. A live gradient buffer remains resident during the window. Unscaled FP16 accumulation can overflow; accumulation precision and loss normalization must preserve the intended update. Changes in effective batch size must be evaluated at matched target quality. Accumulation is compatible with Adam and requires neither special CPU-GPU links nor mandatory cross-node batch normalization.

    Learning Objective: Analyze the memory, latency, and numerical stability trade-offs of gradient accumulation

  4. The largest global batch size beyond which adding more samples per step yields diminishing reductions in the number of steps needed to reach target quality is called the ____.

    Answer: critical batch size. Beyond this workload-dependent point, larger global batches can raise hardware throughput without proportionally reducing the steps to target quality, so hardware scaling and statistical scaling must be evaluated separately.

    Learning Objective: Identify the critical batch size as the statistical limit on useful data-parallel scale-out.

  5. True or False: If a 7B-parameter model fits comfortably in single-GPU memory with high compute utilization under standard DDP, universally enabling ZeRO-3 / FSDP full sharding will always increase training throughput by reducing per-GPU memory consumption.

    Answer: False. FSDP trades memory capacity for parameter-gather and gradient-reduction traffic. If its memory savings do not enable a more efficient batch or layout, the exposed communication can lower throughput. The outcome depends on wrapping, resharding, overlap, and network capacity, so neither a universal gain nor a fixed percentage penalty follows from sharding.

    Learning Objective: Evaluate the performance pitfall of applying FSDP when memory capacity is not binding

← Back to Questions

Back to top