diff --git a/docs/assets/fonts/GeistPixel-Circle.woff2 b/docs/assets/fonts/GeistPixel-Circle.woff2 new file mode 100644 index 000000000..100da9fb0 Binary files /dev/null and b/docs/assets/fonts/GeistPixel-Circle.woff2 differ diff --git a/docs/assets/fonts/GeistPixel-Square.woff2 b/docs/assets/fonts/GeistPixel-Square.woff2 new file mode 100644 index 000000000..232cae2c1 Binary files /dev/null and b/docs/assets/fonts/GeistPixel-Square.woff2 differ diff --git a/docs/assets/stylesheets/extra.css b/docs/assets/stylesheets/extra.css index e0a16fcec..8880e2bb2 100644 --- a/docs/assets/stylesheets/extra.css +++ b/docs/assets/stylesheets/extra.css @@ -174,7 +174,7 @@ border-style: solid; border-color: rgba(0, 0, 0, 0.87); border-width: 1px; - border-radius: 6px; + border-radius: 3px; box-shadow: none; padding: .6rem .8rem; background: none; @@ -184,14 +184,14 @@ border-style: solid; border-color: rgba(0, 0, 0, 0.87); border-width: 1px; - border-radius: 6px; + border-radius: 3px; box-shadow: none; padding: .6rem .8rem; /*background: -webkit-linear-gradient(45deg, rgba(0, 42, 255, 0.1), rgb(0 114 255 / 1%), rgba(0, 42, 255, 0.05));*/ } .md-typeset iframe { - border-radius: 6px; + border-radius: 3px; } [dir=ltr] .md-typeset :is(.admonition,details) blockquote { @@ -260,6 +260,8 @@ @media screen and (min-width: 76.1875em) { .md-header__topic:first-child { font-size: 24px; + top: 2px; + left: 1px; /*font-family: Poppins, metro-web, Metro, -apple-system, "system-ui", "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;*/ /*font-weight: 500;*/ } @@ -329,84 +331,19 @@ } @font-face { - font-family: 'Poppins'; - font-style: normal; - font-weight: 500; - font-display: swap; - src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z11lFd2JQEl8qw.woff2) format('woff2'); - unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB; -} -/* latin-ext */ -@font-face { - font-family: 'Poppins'; - font-style: normal; - font-weight: 500; - font-display: swap; - src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z1JlFd2JQEl8qw.woff2) format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Poppins'; - font-style: normal; - font-weight: 500; - font-display: swap; - src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z1xlFd2JQEk.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* devanagari */ -@font-face { - font-family: 'Poppins'; - font-style: normal; - font-weight: 600; - font-display: swap; - src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLEj6Z11lFd2JQEl8qw.woff2) format('woff2'); - unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB; -} -/* latin-ext */ -@font-face { - font-family: 'Poppins'; - font-style: normal; - font-weight: 600; - font-display: swap; - src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLEj6Z1JlFd2JQEl8qw.woff2) format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Poppins'; - font-style: normal; - font-weight: 600; - font-display: swap; - src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLEj6Z1xlFd2JQEk.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* devanagari */ -@font-face { - font-family: 'Poppins'; - font-style: normal; - font-weight: 700; - font-display: swap; - src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z11lFd2JQEl8qw.woff2) format('woff2'); - unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB; -} -/* latin-ext */ -@font-face { - font-family: 'Poppins'; + font-family: 'Geist Pixel Square'; font-style: normal; - font-weight: 700; + font-weight: 400; font-display: swap; - src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z1JlFd2JQEl8qw.woff2) format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; + src: url(../fonts/GeistPixel-Square.woff2) format('woff2'); } -/* latin */ + @font-face { - font-family: 'Poppins'; + font-family: 'Geist Pixel Circle'; font-style: normal; - font-weight: 700; + font-weight: 400; font-display: swap; - src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z1xlFd2JQEk.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; + src: url(../fonts/GeistPixel-Circle.woff2) format('woff2'); } /* latin */ @@ -519,7 +456,7 @@ h4.doc-heading { border-radius: 3px; font-size: 15px; - /*border-radius: 6px;*/ + /*border-radius: 3px;*/ /*border-top: 1px solid #dce0e6;*/ /*background-color: rgba(0,0,0,.87);*/ /*padding: 15px 20px;*/ @@ -1115,7 +1052,7 @@ html .md-footer-meta.md-typeset a:is(:focus,:hover) { @media screen and (min-width: 76.1875em) { .md-typeset .tabbed-block > .highlight:first-child > pre > code, .md-typeset .tabbed-block > pre:first-child > code { - border-radius: 6px; + border-radius: 3px; } } @@ -1135,8 +1072,8 @@ html .md-footer-meta.md-typeset a:is(:focus,:hover) { background: none; z-index: 1; padding: 5px; - border-radius: 6px; - border: 1px solid black; + border-radius: 3px; + border: 1px dotted black; bottom: -0.7px; top: -0.7px; left: -0.7px; @@ -1172,7 +1109,7 @@ html .md-footer-meta.md-typeset a:is(:focus,:hover) { height: 100%; background: -webkit-linear-gradient(45deg, rgba(0, 42, 255, 0.025), rgb(0 114 255 / 0.25%), rgba(0, 42, 255, 0.0125)); z-index: 1; - border-radius: 6px; + border-radius: 3px; border: 0.5px solid rgba(0,0,0, 0.5); overflow: unset; } @@ -1213,7 +1150,7 @@ html .md-footer-meta.md-typeset a:is(:focus,:hover) { display: block; margin: 0; padding: 1rem 1.4rem; - border-radius: 6px; + border-radius: 3px; border: rgba(0,0,0,0.6) 0.5px solid; } @@ -1686,7 +1623,7 @@ html .md-footer-meta.md-typeset a:is(:focus,:hover) { border: none; color: var(--md-default-fg-color); padding: 8px 25px; - border-radius: 6px; + border-radius: 3px; background: -webkit-linear-gradient(45deg, rgba(0, 42, 255, 0.1), rgb(0 114 255 / 1%), rgba(0, 42, 255, 0.05)); } diff --git a/docs/assets/stylesheets/landing.css b/docs/assets/stylesheets/landing.css index 6efd82de9..f364a7358 100644 --- a/docs/assets/stylesheets/landing.css +++ b/docs/assets/stylesheets/landing.css @@ -66,7 +66,8 @@ @media screen and (max-width: 76.1875em) { .tx-landing h1 { - font-size: 1.4rem; + font-size: 1.9rem; + margin: 24px -24px; } .tx-landing__hero_text { @@ -110,9 +111,9 @@ } .tx-landing__hero_text h1 { - font-size: 3rem; + font-size: 3.2rem; max-width: 36rem; - line-height: 1.2; + line-height: 1.1; } .tx-landing__hero_text p { @@ -241,7 +242,7 @@ .md-typeset .md-button { margin-top: 0.6rem; margin-bottom: 1.5rem; - font-size: 19px; + font-size: 20px; font-weight: 400 !important; text-align: center; border-radius: 3px; @@ -296,7 +297,6 @@ [data-md-color-primary=white] .md-header__buttons .md-button--primary, [data-md-color-primary=white].md-header__buttons .md-button--primary:hover, [data-md-color-primary=white] .md-typeset .md-button--primary, [data-md-color-primary=white] .md-typeset .md-button--primary:hover { background: rgba(0, 0, 0, 0.87); - border: 1.5px solid rgba(0, 0, 0, 0.87); border-radius: 3px; font-weight: 400 !important; /*margin-right: 10px;*/ @@ -353,7 +353,7 @@ .md-typeset .md-button-secondary:focus { background: transparent; color: rgba(0, 0, 0, 0.87); - border: 1px solid rgba(0, 0, 0, 0.87); + border: 0.5px solid rgba(0, 0, 0, 0.87); border-radius: 3px; } @@ -770,7 +770,7 @@ } .tx-landing__major_feature h2 { - font-size: 1.7em; + font-size: 2em; max-width: 500px; margin-top: 0; margin-bottom: 1.5em; @@ -778,6 +778,7 @@ -webkit-background-clip: text; -webkit-text-fill-color: transparent; /*letter-spacing: -1.5px;*/ + line-height: 1.1; } .tx-landing__major_feature { @@ -1135,3 +1136,28 @@ border: 0; } } + +.tx-landing h1, +.tx-landing h2, +.tx-landing h3, +.tx-landing h4, +.tx-landing h5, +.tx-landing h6 { + font-family: 'Geist Pixel Circle', var(--md-text-font-family); +} + +.tx-faq__item-title { + font-family: 'Geist Pixel Square', var(--md-text-font-family); +} + +.md-header__title { + font-family: 'Geist Pixel Square', var(--md-text-font-family); +} + +.md-header__buttons .md-button { + font-family: 'Geist Pixel Square', var(--md-text-font-family); +} + +.tx-landing .md-button { + font-family: 'Geist Pixel Square', var(--md-text-font-family); +} diff --git a/docs/assets/stylesheets/pricing.css b/docs/assets/stylesheets/pricing.css index b358d7860..93ba7484f 100644 --- a/docs/assets/stylesheets/pricing.css +++ b/docs/assets/stylesheets/pricing.css @@ -143,7 +143,7 @@ position: relative; padding-right: 40px; color: #2A292D; - font-size: 0.85rem; + font-size: 1rem; font-weight: 800; line-height: 1.33; cursor: pointer; diff --git a/docs/overrides/home.html b/docs/overrides/home.html index 7cebed7b6..36a932623 100644 --- a/docs/overrides/home.html +++ b/docs/overrides/home.html @@ -50,12 +50,12 @@
-

The orchestration layer for modern ML teams

+

The new GPU-native orchestration

- dstack provides ML teams with a unified control plane for GPU provisioning and orchestration - across cloud, Kubernetes, and on-prem. It streamlines development, training, and inference — reducing costs 3–7x and - preventing lock-in. + dstack is a GPU-native orchestration built for modern AI teams. It simplifies + GPU provisioning and workload management across clouds, Kubernetes, and on-prem — + through a single unified control plane.

@@ -82,22 +82,21 @@

The orchestration layer for modern ML teams

- One control plane for GPUs across cloud, Kubernetes, and on-prem. + Reduce GPU costs by 3–7× and eliminate vendor lock-in.
-

An open platform for GPU orchestration

+

A unified control plane for GPU orchestration

- Managing AI infrastructure requires efficient GPU orchestration, whether workloads run - on a single GPU cloud, across multiple GPU providers, or on-prem clusters. + Managing AI infrastructure requires efficient GPU orchestration tightly integrated with open-source training and + inference frameworks.

- dstack provides an open stack for GPU orchestration that streamlines development, training, - and inference, and can be used with any hardware, open-source tools, and frameworks. + dstack provides a unified control plane—so workloads stay portable, reproducible, and infrastructure remains interchangeable.

@@ -173,22 +172,21 @@

An open platform for GPU orchestration

Native integration with GPU clouds

- dstack natively integrates with top GPU clouds—automating cluster provisioning and - workload orchestration to maximize efficiency and minimize overhead. + dstack natively integrates with leading GPU clouds for fast, efficient provisioning.

- It can provision and manage VM clusters through native integrations or via Kubernetes. + It can provision and manage GPU VMs directly through cloud APIs, or operate through Kubernetes when required.

- + Backends - +

@@ -201,35 +199,32 @@

Native integration with GPU clouds

Easy to use with on-prem clusters

- For provisioned Kubernetes clusters, connect them to dstack using the Kubernetes backend. - If you run vanilla bare-metal servers or VMs without Kubernetes, use SSH fleets - instead. + If you already run Kubernetes on-prem, connect your cluster to dstack using the Kubernetes backend. +

+ +

+ For bare-metal servers or VMs without Kubernetes, use SSH fleets to orchestrate GPUs directly.

- + SSH fleets - + - + Kubernetes - +

- -

- Either way, connecting existing on-prem clusters to dstack takes just minutes. -

@@ -250,18 +245,19 @@

Easy to use with on-prem clusters

Dev environments

- Before training or deployment, ML engineers explore and debug their code. + Before training or deploying models, ML engineers need interactive GPU access to experiment and debug.

-

dstack's dev environments make it easy to connect your - desktop IDE to powerful cloud or on-prem GPUs—streamlining the entire development loop. +

dstack's dev environments let you connect desktop IDEs such as VS + Code, Cursor, and + Windsurf directly to cloud or on-prem GPUs.

+ class="md-button md-button-secondary"> Dev environments - +

@@ -274,18 +270,19 @@

Dev environments

Single-node & distributed tasks

- Move from single-instance experiments to multi-node distributed training without friction. dstack lets you define complex jobs with a simple configuration, - handling the scheduling and orchestration for you. + Run training or batch workloads on a single GPU, or scale to multi-GPU and multi-node clusters using simple task configurations. + dstack automates cluster provisioning, resource allocation, and job scheduling.

-

This allows your team to focus on research while ensuring that expensive cluster resources are utilized efficiently.

+

+ During execution, dstack reports GPU utilization, memory usage, and GPU health metrics for each job. +

+ class="md-button md-button-secondary"> Tasks - +

@@ -308,23 +305,27 @@

Single-node & distributed tasks

Scalable model inference

- With dstack, you can easily deploy any model as a secure, - auto-scaling OpenAI-compatible endpoint, all while using your custom code, Docker image, and - serving framework. + With dstack, you can deploy models as secure, + auto-scaling, OpenAI-compatible endpoints, integrating with top open-source serving frameworks. +

+ +

+ dstack supports disaggregated prefill/decode and cache-aware routing, providing + production-grade, optimized inference.

+ class="md-button md-button-secondary"> Services - + - +

@@ -332,7 +333,7 @@

Scalable model inference

-

Loved by world-class ML teams

+

Loved by world-class AI teams

@@ -617,7 +618,7 @@

dstack Sky

+ class="md-button md-button--primary sky external"> Sign up free
@@ -641,7 +642,7 @@

dstack Enterprise

diff --git a/docs/overrides/main.html b/docs/overrides/main.html index 6b2f47dbc..dc800b594 100644 --- a/docs/overrides/main.html +++ b/docs/overrides/main.html @@ -1,5 +1,10 @@ {% extends "base.html" %} +{% block extrahead %} + + +{% endblock %} + {% block container %}
{% if "navigation.path" in features %}