A distributed job can request the correct number of TPU chips and still be scheduled incorrectly. If workers land on hosts from different TPU slices, they lose the dedicated Inter-Chip Interconnect required for collective operations. Training may not merely slow down; it can hang.
Ray 2.55 addresses that topology constraint as part of official, first-class Google Cloud TPU support. Ray now ships prebuilt images and integrates TPU support across its release pipeline, while GKE and KubeRay label physical slice boundaries so Ray can reserve an intact slice atomically.
For teams already using Ray on GPUs, this reduces the amount of custom scheduling code required to evaluate TPU training, data, and serving workloads. It does not make TPU topology disappear.
The constraint is physical, not cosmetic
TPU chips are organized into fixed slices. A multi-host slice spans several virtual machines whose accelerators are connected through ICI. The topology is described by a shape such as 4x4, not only by a chip count.

Google’s diagram shows why workers for one distributed job must remain inside a connected TPU slice. Source: Google Developers Blog.
The useful GPU analogy is a multi-GPU server connected by NVLink. A scheduler cannot spread an all-reduce job across unrelated machines and pretend the same fast interconnect exists. TPU placement needs the same physical awareness at slice scale.
Ray’s abstraction therefore has to preserve two truths at once: developers should request compute through familiar task, actor, Train, Data, and Serve APIs; the scheduler must understand that a TPU slice is an indivisible placement unit.
Figure: Atomic reservation keeps every worker inside the ICI-connected slice. Yield Signal Daily editorial diagram.
GKE supplies the topology map
The GKE Ray Operator add-on installs KubeRay and a TPU-specific webhook. When GKE provisions TPU hosts, the webhook adds labels including a slice identifier. Ray reads those labels to learn which machines belong to the same physical group.
Developers declare the accelerator generation, topology, TPU resource count, and number of hosts in the RayCluster specification. Google shows a v6e 4x4 topology spanning four hosts. The infrastructure layer turns that declaration into labeled nodes and one worker pod per host.

The official architecture separates Ray libraries, atomic slice reservation in Ray Core, and hardware provisioning in GKE. Source: Google Developers Blog.
Ray Core exposes ray.util.tpu.slice_placement_group(), which reserves a complete slice on an all-or-none basis. Most application teams should not call it directly. Ray Train, Data, and Serve are intended to use the primitive underneath higher-level APIs.
That is the real usability improvement. The topology rule becomes infrastructure behavior instead of application-specific placement code.
First-class support changes the adoption calculation
Before this release, TPU use through Ray followed an experimental path: teams built containers, depended more heavily on community guidance, and carried integration risk themselves. Inclusion in official release pipelines means a more predictable compatibility and support story.
The practical opportunity is accelerator comparison. A Ray-based application can retain its orchestration model while teams test JAX training, Ray Data input pipelines, Ray Serve, or vLLM deployment on TPU. Shared job definitions and evaluation harnesses make cost, throughput, startup time, and reliability comparisons more credible than separate one-off stacks.
It may also reduce organizational friction. Teams often avoid an accelerator because adopting it requires a second scheduler and operating model. Ray does not eliminate platform differences, but it gives GPU-oriented Python teams a familiar control surface.
The alpha label and operational costs still matter
Google notes that slice_placement_group() is public but marked alpha. Production users should pin Ray versions, test upgrades against real multi-host workloads, and avoid exposing the low-level API throughout application code.
Figure: Official support improves integration, while topology, capacity, API stability, startup behavior, and observability remain operational responsibilities. Yield Signal Daily editorial checklist.
Capacity is another separate concern. A scheduler can correctly request a slice without that slice being available in the chosen region. Quota, reservation strategy, provisioning latency, and failure recovery still affect whether a workload starts when expected.
Observability should include the accelerator generation, requested topology, assigned slice name, worker-to-host mapping, collective initialization time, and any placement timeout. “The job is pending” is not enough information when the missing resource is a complete topology rather than an interchangeable node.
Portability also needs measurement. Code may run through the same Ray API while performance depends on framework kernels, precision formats, compilation behavior, input pipelines, and model architecture. First-class scheduling is the beginning of a fair comparison, not proof that the workload is accelerator-neutral.
Teams can now test TPU without rebuilding orchestration
Ray 2.55 lowers the integration cost for organizations that already use Ray and want a serious TPU experiment. The correct first project is a bounded workload with established GPU measurements: one training job or serving service, fixed quality criteria, and a complete cost model that includes startup and idle time.
The architectural lesson extends beyond TPU. Accelerator APIs become useful when they expose hardware constraints without leaking those constraints into every application. Ray’s slice-aware scheduler does exactly that: developers keep the distributed Python model, while the platform preserves the physical boundary that makes the computation possible.
Scheduling is one layer of TPU economics. Google’s Qwen 397B optimization covers model-aware kernels and sharding, while Microsoft’s optical interconnect deal maps the networking constraints around clusters. The Kimi K3 serving review shows why open weights do not remove the infrastructure decision.


