Skip to content

Commit 0bf0968

Browse files
author
Andrey Cheptsov
committed
[Blog] Minor edits; plus styling
1 parent c68ed1a commit 0bf0968

7 files changed

Lines changed: 21 additions & 36 deletions

File tree

mkdocs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ plugins:
7575
categories_url_format: "{slug}"
7676
archive: false
7777
categories_name: Blog
78-
categories_sort_reverse: true
78+
# categories_sort_reverse: true
7979
- social:
8080
cards_layout_options:
8181
background_color: "black"

mkdocs/assets/stylesheets/cloudscape-docs.css

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1861,6 +1861,7 @@
18611861
}
18621862
.md-typeset :is(h1, h2, h3, h4, h5, h6) a:hover {
18631863
text-decoration: underline;
1864+
color: inherit; /* keep the heading color — don't pick up Material's accent (lilac) on hover */
18641865
}
18651866

18661867
/* Blog excerpt header (author avatars + date · category · read time) removed entirely on the
@@ -1875,31 +1876,13 @@
18751876
}
18761877

18771878
/* ===== Blog post (article) layout ========================================== */
1878-
/* Blog posts render NO left sidebar (overrides/blog-post.html) — only the article + right rail.
1879-
The content div carries .md-content--blog (NOT Material's .md-content--post, which is a
1880-
column-reverse flex meant to pair the post sidebar with the article). It's a CSS hook to widen
1881-
the article to the same "collapsed left menu" layout as a docs page with the nav hidden: a
1882-
1280px region (960 body + 40 gap + 280 rail) centered in the viewport. :has() reaches ancestors. */
1879+
/* Blog posts use the same desktop layout as the blog index/category pages: left nav sidebar +
1880+
article + right rail (On this page, then the relocated post metadata). The content div carries
1881+
.md-content--blog purely as a hook for that metadata relocation (see .cs-post-meta); layout-wise
1882+
it now matches a normal page, so no width/sidebar overrides are needed here. */
18831883
@media screen and (min-width: 76.1875em) {
1884-
.md-main__inner.md-grid:has(.md-content--blog) {
1885-
max-width: 1280px;
1886-
margin-left: auto;
1887-
margin-right: auto;
1888-
}
1889-
.md-main__inner:has(.md-content--blog) .md-content {
1890-
margin-left: 0;
1891-
}
1892-
.md-main__inner:has(.md-content--blog) .md-sidebar--secondary {
1893-
margin-right: 0;
1894-
}
1895-
/* Blog posts render the primary nav only so the mobile drawer (burger) has it; on desktop the
1896-
article spans the full width, so hide the left sidebar here. */
1897-
.md-main__inner:has(.md-content--blog) .md-sidebar--primary {
1898-
display: none;
1899-
}
1900-
/* No left sidebar → drop the full-height vertical divider drawn at left:280px. Applies to blog
1901-
posts and to any page that hides the nav (e.g. /terms, /privacy → .md-sidebar--primary[hidden]). */
1902-
body:has(.md-content--blog)::before,
1884+
/* Pages that hide the nav entirely (/terms, /privacy → .md-sidebar--primary[hidden]) have no
1885+
left sidebar, so drop the full-height vertical divider drawn at left:280px. */
19031886
body:has(.md-sidebar--primary[hidden])::before {
19041887
display: none;
19051888
}

mkdocs/blog/posts/state-of-cloud-gpu-2025.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ date: 2025-09-10
44
description: "TBA"
55
slug: state-of-cloud-gpu-2025
66
image: https://dstack.ai/static-assets/static-assets/images/cloud-gpu-providers.png
7-
# categories:
8-
# - Benchmarks
7+
categories:
8+
- Reports
99
---
1010

1111
# The state of cloud GPUs in 2025: costs, performance, playbooks

mkdocs/blog/posts/state-of-heterogeneous-compute-2026.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@ date: 2026-06-23
44
description: "How supply, software readiness, orchestration, and networking shape accelerator choices across NVIDIA, AMD, TPUs, Trainium, and specialized inference systems."
55
slug: state-of-heterogeneous-compute-2026
66
image: https://dstack.ai/static-assets/static-assets/images/state-of-heterogeneous-compute-2026.png
7-
# categories:
8-
# - Benchmarks
7+
categories:
8+
- Reports
99
---
1010

1111
# The state of heterogeneous AI compute in 2026
1212

1313
Heterogeneous AI compute is becoming harder to ignore. The reason is practical: supply pressure, pricing, and stack readiness are making more than one accelerator path worth evaluating.
1414

15+
<img src="https://dstack.ai/static-assets/static-assets/images/state-of-heterogeneous-compute-2026.png" width="750"/>
16+
1517
This report focuses on accelerator choices behind training and inference workloads: the main patterns, the evidence behind them, how readiness differs across NVIDIA, AMD, TPUs, Trainium, and specialized inference systems, and why orchestration and networking determine whether capacity can be used in practice.
1618

1719
<!-- more -->
@@ -160,7 +162,7 @@ The open question is portability. Ethernet has momentum through [Spectrum-X](htt
160162
- **Software.** An accelerator path matters only if the model, framework, runtime, kernels, distributed training path, serving stack, containers, and debugging tools are ready enough for the workload.
161163
- **Orchestration.** Kubernetes and Slurm remain important, but heterogeneous compute needs a higher-level way to provision, place, and operate workloads across fragmented clouds, clusters, datacenters, and accelerator stacks without leaving platform teams to stitch every path together themselves.
162164

163-
## Outside of the scope
165+
## Out of scope
164166

165167
- Custom silicon controlled by individual hyperscalers or frontier labs. It matters as a supply signal because large buyers can reserve or build capacity outside the public accelerator market, but it is not a generally adoptable path for most teams.
166168
- Chinese accelerators, including Huawei Ascend and Cambricon. These may be important, especially in China, but comparable public data is limited and hard to verify from outside the region.

mkdocs/overrides/main.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@
228228
{% endblock %}
229229

230230
{% block announce %}
231-
<a href="/blog/agentic-orchestration/" target="_blank">Infrastructure orchestration is an agent skill<span class="icon"><svg viewBox="0 0 24 24" width="17" height="17" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 12h15"/><path d="m12.5 5.5 6.5 6.5-6.5 6.5"/></svg></span></a>
231+
<a href="/blog/state-of-heterogeneous-compute-2026/">The state of heterogeneous AI compute in 2026<span class="icon"><svg viewBox="0 0 24 24" width="17" height="17" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 12h15"/><path d="m12.5 5.5 6.5 6.5-6.5 6.5"/></svg></span></a>
232232
{% endblock %}
233233

234234
{# Footer is rendered INSIDE .md-content (above, after the article) — NOT as a full-width sibling —

website/src/components/SiteBanner.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import { BLOG_URL } from '../routes';
33
// Top announcement banner, mirroring the one on the MkDocs docs site. It sits above the top
44
// nav; the two stick to the top together (see .site-header). Update the copy/href here when
55
// the announcement changes.
6-
const BANNER_TEXT = 'Infrastructure orchestration is an agent skill';
7-
const BANNER_HREF = `${BLOG_URL}/agentic-orchestration/`;
6+
const BANNER_TEXT = 'The state of heterogeneous AI compute in 2026';
7+
const BANNER_HREF = `${BLOG_URL}/state-of-heterogeneous-compute-2026/`;
88

99
export function SiteBanner() {
1010
return (

website/src/components/SiteNavigation.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ const dstackGithubUrl = 'https://github.com/dstackai/dstack';
1414
const externalIconAriaLabel = 'External link icon';
1515

1616
// Primary links in the desktop top navigation (plain same-origin MkDocs links). The blog
17-
// categories are listed individually (Case studies / Benchmarks / Blog) to mirror the docs
17+
// categories are listed individually (Case studies / Reports / Blog) to mirror the docs
1818
// header tabs — no "Resources" dropdown.
1919
const audienceNavItems: Array<{ label: string; href: string }> = [
2020
{ label: 'Docs', href: DOCS_URL },
2121
{ label: 'Case studies', href: `${BLOG_URL}/case-studies/` },
22-
{ label: 'Benchmarks', href: `${BLOG_URL}/benchmarks/` },
22+
{ label: 'Reports', href: `${BLOG_URL}/reports/` },
2323
{ label: 'Blog', href: BLOG_URL },
2424
];
2525

@@ -46,7 +46,7 @@ const productDropdownItems: ButtonDropdownProps.Items = [
4646
const mobileNavigationItems: SideNavigationProps.Item[] = [
4747
{ type: 'link', text: 'Docs', href: DOCS_URL },
4848
{ type: 'link', text: 'Case studies', href: `${BLOG_URL}/case-studies/` },
49-
{ type: 'link', text: 'Benchmarks', href: `${BLOG_URL}/benchmarks/` },
49+
{ type: 'link', text: 'Reports', href: `${BLOG_URL}/reports/` },
5050
{ type: 'link', text: 'Blog', href: BLOG_URL },
5151
{ type: 'link', text: 'GitHub', href: dstackGithubUrl, external: true, externalIconAriaLabel },
5252
{

0 commit comments

Comments
 (0)