agent-platform release v4.39.0
Changed
- The cache claim’s defaults are
100Gi at 500 MiB/s and 3000 IOPS; the default class is named with a digest of its parameters, and an existing claim keeps its class and its size (giantswarm/agent-platform#570). The claim defaulted to 500Gi on a gp3 class at 1000 MiB/s and 4000 IOPS — sized far above what the serving slice uses: the shipped presets hold 8–9 GiB (L4) and 25 GiB (L40S) of weights each plus a few GiB of compiled graphs, so two served models fit in well under 40 GiB, and the volume is billed at its size from the first bind; vLLM loads a model’s weights at about 300 MB/s on a 1000 MiB/s volume exactly as on a 500 MiB/s one (the loader is the ceiling, measured on two GPU instance sizes) and the storage-initializer writes at the Hub’s ≈ 200 MB/s, so only the baseline tier bounds either. At list prices the old volume cost about three and a half times the new one a month for the same load and download times. modelServing.cache.pvc.size is now 100Gi, modelServing.cache.storageClass.parameters throughput: "500", iops: "3000" (the tier’s included IOPS), mirrored in the meta chart. Two mechanics made the change safe for an installation that already has the claim: a StorageClass’s provisioner and parameters are immutable, so the default class name now carries eight hex characters of their sha256 (agent-platform-connectivity-hf-cache-<digest>; agent-platform.modelServing.cacheStorageClass.digest) and a parameter change renders a new class, the old Helm-owned one going with the upgrade instead of a forbidden update failing the release (a name of the operator’s carries no digest); and the hook applies an existing claim on the class it has (storageClassName is immutable) at the larger of its size and the rendered one (quantities compared in bytes; a claim never shrinks), its log line naming what was kept — a Pending claim on a class the cluster no longer has fails the hook naming the claim and the way out (delete it; the next upgrade applies it on the rendered class). make verify-serving-slice asserts the defaults and the digest name, that a parameter change renders a new class the claim references, and runs the hook’s script against a stub kubectl over the cases (a Bound 500Gi claim on the former class kept as it is, a smaller one grown, an equal size in another spelling left alone, the Pending-on-a-missing-class refusal, a claim without a class or on the empty class). README “The Hugging Face cache claim” and “The claim’s StorageClass”; UPGRADE.md.