docs(blog): add Prepared Image Specification cold-start post - #5934
Spencer Libbing (stl327) wants to merge 13 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a new AKS Engineering blog post explaining how Prepared Image Specification (PIS) can reduce node/workload cold-start latency, along with the required author metadata entry.
Changes:
- Added a new blog article detailing PIS benefits, boundaries, and benchmark results plus a “Try PIS” walkthrough.
- Added a new author profile entry for Spencer Libbing in the shared blog author registry.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| website/blog/2026-08-27-reducing-aks-cold-starts-with-prepared-image-specification/index.md | New blog post content for the PIS cold-start/scale-out latency topic (includes preview notice, methodology, and how-to links). |
| website/blog/authors.yml | Adds the spencer-libbing author record used by the new post. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.
Suppressed comments (2)
website/blog/2026-08-27-reducing-aks-cold-starts-with-prepared-image-specification/index.md:4
- The front-matter
descriptionis shorter than the 150–160 character SEO target used for this blog. Expand it slightly so it meets the length requirement.
title: "Reducing AKS Cold Starts with Prepared Image Specification"
description: "Learn how Prepared Image Specification can reduce AKS scale-out latency by preparing container images and host customizations ahead of time."
date: 2026-08-27
website/blog/2026-08-27-reducing-aks-cold-starts-with-prepared-image-specification/index.md:24
- This post is missing a hero image immediately after
<!-- truncate -->, which is the consistent pattern in other recent posts (for example,website/blog/2026-06-29-llm-routing-on-aks/index.mdandwebsite/blog/2026-04-08-agent-skills-for-aks/index.md). Add./hero-image.png(or another suitable hero asset) and include meaningful alt text.
<!-- truncate -->
In our controlled comparisons, the strongest end-to-end result was a Windows burst that added three nodes: PIS reduced median time to start all three workloads by **74%**. PIS also reduced the median slowest image pull by **92% on Linux** and **98% on Windows**. For a T4 GPU model-serving pool, median model-ready and first-token latency improved by about **3%**, while p95 latency improved by about **14%** and **13%**, respectively.
> **Preview notice:** PIS is currently an AKS preview feature. Preview features are opt-in, provided as-is and as-available, and not intended for production use. Review the current prerequisites, regions, limitations, and support policy before testing it.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 3 changed files in this pull request and generated 1 comment.
Suppressed comments (1)
website/blog/2026-08-27-reducing-aks-cold-starts-with-prepared-image-specification/index.md:136
- The unquoted
<digest>is interpreted as input redirection by Bash, causing the sample to fail with a missing-file error instead of passing an image reference to Azure CLI. Quote the complete placeholder argument so readers can replace the digest without changing the command structure.
--container-images myacr.azurecr.io/model-server@sha256:<digest> \
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 3 changed files in this pull request and generated no new comments.
Suppressed comments (7)
Previously missed (3) — in code that hasn't changed since the last review.
website/blog/2026-08-27-reducing-aks-cold-starts-with-prepared-image-specification/index.md:2
- This title uses headline-style capitalization, but repository guidance requires sentence-style capitalization for titles and headings. Lowercase “cold starts” to match that requirement.
title: "Reducing AKS Cold Starts with Prepared Image Specification"
website/blog/2026-08-27-reducing-aks-cold-starts-with-prepared-image-specification/index.md:56
- This row combines model readiness and first-token latency but reports only the 14% p95 value. Line 95 states that these endpoints had different p95 reductions (14% and 13%), so the table currently makes the first-token result ambiguous.
| Serve a model on a T4 GPU node | Model healthy and first token returned | **3% at median; 14% at p95** |
website/blog/2026-08-27-reducing-aks-cold-starts-with-prepared-image-specification/index.md:24
- Spell out GPU on first use. The repository’s acronym guidance requires the expanded term before the abbreviation.
This issue also appears in the following locations of the same file:
- line 40
- line 67
- line 73
In our controlled comparisons, the strongest end-to-end result was a Windows burst that added three nodes: PIS reduced median time to start all three workloads by **74%**. PIS also reduced the median slowest image pull by **92% on Linux** and **98% on Windows**. For a T4 GPU model-serving pool, median model-ready and first-token latency improved by about **3%**, while p95 latency improved by about **14%** and **13%**, respectively.
website/blog/2026-08-27-reducing-aks-cold-starts-with-prepared-image-specification/index.md:40
- Spell out SAS on first use so the security guidance is clear and follows the repository’s acronym requirements.
| Protect private dependencies | Managed identity and data-plane role-based access control (RBAC) can retrieve private artifacts without embedding keys or SAS tokens in scripts. |
website/blog/2026-08-27-reducing-aks-cold-starts-with-prepared-image-specification/index.md:67
- Spell out CA on first use. As written, readers encounter the abbreviation before “CA certificates” later in the post.
Not every task should be baked. A small Linux CA-and-policy setup was **14% slower at the median** in this test, even though its tail favored PIS. For small tasks, normal scale-out variation and other provisioning stages can outweigh the preparation that PIS removes.
website/blog/2026-08-27-reducing-aks-cold-starts-with-prepared-image-specification/index.md:73
- Spell out SLO on first use to meet the repository’s acronym guidance.
PIS moves that repeated work out of the burst path. In the three-node Windows comparison, this reduced median workload-start latency by 74%. For services with a strict scale-out SLO, that changes the capacity conversation from "How many idle nodes do we need?" to "How quickly can prepared capacity serve traffic?"
website/blog/2026-08-27-reducing-aks-cold-starts-with-prepared-image-specification/index.md:136
- The unquoted
<digest>placeholder is parsed by Bash as input/output redirection, so copying this example causes a shell error instead of passing the image reference to Azure CLI. Quote the complete placeholder argument (or assign it to a quoted variable).
--container-images myacr.azurecr.io/model-server@sha256:<digest> \
Nikhil Kaul (nikhilkaul1234)
left a comment
There was a problem hiding this comment.
Really strong post. The structure works, the results are presented honestly, and the "How to read these results" section is especially helpful. I left three small comments from the perspective of someone new to PIS, mostly about making the benchmark framing easier to follow. Otherwise, this looks great.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 3 changed files in this pull request and generated no new comments.
Suppressed comments (3)
Previously missed (2) — in code that hasn't changed since the last review.
website/blog/2026-08-27-reducing-aks-cold-starts-with-prepared-image-specification/index.md:119
postScriptActionisn't part of the current PIS customization-script schema; the CLI accepts onlyname,script,scriptType, andexecutionPointfor each item. Leaving this property in the copy-paste example can cause argument validation to fail. Remove it and makeexecutionPointthe final property.
"postScriptAction": "None"
website/blog/2026-08-27-reducing-aks-cold-starts-with-prepared-image-specification/index.md:143
az aks nodepool adddoesn't support--pis-id; the documented flag is--prepared-image-specification-id. As written, this copy-paste command fails with an unrecognized argument instead of creating the PIS-backed pool.
--pis-id "$PIS_VERSION_ID"
website/blog/2026-08-27-reducing-aks-cold-starts-with-prepared-image-specification/index.md:4
- The publish date is already stale: it is August 27, while this review is occurring on September 1. Because this front-matter value overrides the folder-derived date, the newly published post would display the drafting date; update it to the actual publication date before merge, or mark the post as a draft until then.
date: 2026-08-27
There was a problem hiding this comment.
🟡 Changes recommended
The CLI example uses an invalid option, benchmark claims conflict with the PR description, and the required conclusion is missing.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Review details
- Files reviewed: 2/3 changed files
- Comments generated: 4
- Review effort level: Balanced
There was a problem hiding this comment.
🟡 Changes recommended
The article lacks the required conclusion and uses inconsistent title capitalization.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Review details
Suppressed comments (1)
website/blog/2026-09-02-reducing-aks-cold-starts-with-prepared-image-specification/index.md:143
- Add the required conclusion before the resources section. The blog post structure calls for a conclusion that summarizes the key takeaway; ending directly with links leaves the article without that closing guidance.
## Resources
- Files reviewed: 2/3 changed files
- Comments generated: 1
- Review effort level: Balanced
There was a problem hiding this comment.
🟢 Approval recommended
The article meets repository publishing requirements, and its links, metadata, assets, and documented commands are consistent.
Review details
- Files reviewed: 2/3 changed files
- Comments generated: 0 new
- Review effort level: Balanced
There was a problem hiding this comment.
🔵 Needs a closer look
Update the stale publication date to the intended release date before merging.
Review details
Suppressed comments (1)
Previously missed (1) — in code that hasn't changed since the last review.
website/blog/2026-09-02-reducing-aks-cold-starts-with-prepared-image-specification/index.md:4
- The publication date is already 12 days stale. Because this front-matter value overrides the folder-derived date, merging now publishes the article as September 2 rather than its actual release date. Update it to the intended publication day before merge; rename the folder too only if the route should change.
- Files reviewed: 2/3 changed files
- Comments generated: 0 new
- Review effort level: Balanced
Summary
Publishes an AKS Engineering Blog article about Prepared Image Specification (PIS), an AKS preview feature that moves stable, repeated node preparation into an AKS-managed, versioned node image.
This change:
Customer impact
PIS prepares pinned images and stable Bash or PowerShell customizations ahead of recurring scale-outs. Customers can spend preparation time when a version is released, then avoid repeating the same work on every new node.
Headline results in the post include:
The post keeps the boundary clear: PIS doesn't remove VM allocation, node registration, networking, scheduling, driver initialization, or application startup.
The image-pull figures isolate download time, which is the work PIS moves out of scale-out. The GPU result measures the broader customer path through VM provisioning, node registration, managed driver readiness, model loading, health, and first token. Across the 46 pairs, the 95% confidence intervals for the paired mean savings were 5 to 24 seconds for model readiness and 4 to 23 seconds for first token.
Benchmark context
The GPU A/B test concurrently scaled matched
Standard_NC4as_T4_v3standard and PIS-backed pools from one to two nodes. It covered GPU VM provisioning, node bootstrapping and registration, managed driver readiness, image availability, model download or prepared-asset verification, model loading, health, and first token. The standard node downloaded and hash-verified the model and pulled the pinned image if absent; the PIS-backed node verified the same preloaded model and used the preloaded pinned image.Image-caching tests used 100 rounds per arm, customization scenarios used 10 same-round pairs per cell, and the GPU scenario used 46 same-round pairs. PIS build and initial prepared-pool creation were excluded from recurring scale-out timing. The tests did not measure GPU node upgrades or replacement disruption, production traffic, autoscaler decision time, or billing impact. For teams that reserve scarce GPU capacity, planned upgrades or node replacement might matter more than routine scale-out. The post explains how PIS participates in supported Kubernetes upgrades, but it doesn't claim measured upgrade-duration or replacement-disruption savings because those events were outside this benchmark.
Validation
npm run buildnpm run typecheck