-
Notifications
You must be signed in to change notification settings - Fork 9
Document global placement, GPU preference lists, and global storage #298
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 5 commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
b69bc2f
Document global placement, GPU preference lists, and global storage
kylegani d572cc0
Remove us-east1 as a deployable region; eu-north-1 is self-serve
kylegani 07f3d44
Remove Crusoe region references; confirm deployable regions against l…
kylegani 9124f5a
Drop the dash vs non-dash region callout
kylegani f80398f
Prettified Code!
kylegani 1ea9a8b
Address review feedback on PR 298
kylegani dad32af
State that the region parameter is optional
kylegani File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,9 +1,9 @@ | ||
| --- | ||
| title: Multi-Region Deployment | ||
| description: Deploy your apps globally across multiple regions for improved latency and data residency compliance | ||
| description: Deploy an app once and run it across multiple regions, or pin it to a specific region for data residency | ||
| --- | ||
|
|
||
| Deploy apps globally across multiple continents to reduce latency through co-location and meet data residency requirements. | ||
| Deploy an app once and run it in multiple regions. The `region` parameter in `cerebrium.toml` controls placement: run globally on whatever capacity is available (recommended), or pin the app to a specific region. | ||
|
|
||
| <Warning> | ||
| Multi-region deployment is currently in **beta**. Rapid updates and | ||
|
|
@@ -14,97 +14,149 @@ Deploy apps globally across multiple continents to reduce latency through co-loc | |
|
|
||
| ## Why Use Multi-Region Deployment | ||
|
|
||
| - **Reduced Latency**: Deploy closer to users for faster response times and better experience with real-time applications like voice agents and LLMs | ||
| - **Data Residency**: Meet data protection requirements by keeping sensitive data within specific geographic regions to comply with regulations like GDPR and CCPA | ||
| - **High Availability**: Ensure fault tolerance and continuous service through geographic redundancy, disaster recovery, and load balancing across multiple regions | ||
| - **More capacity, less queueing**: An app that can run anywhere draws on the GPU capacity of every region. Constraining placement shrinks the pool of available hardware. | ||
| - **High availability**: Traffic shifts away from degraded or busy regions automatically. | ||
| - **Reduced latency**: Requests are routed to healthy capacity, preferring lower-latency regions. | ||
| - **Data residency**: Pin an app to a region to keep sensitive data within a specific geographic region and comply with regulations like GDPR and CCPA. | ||
| - **No duplicate apps**: One app, one endpoint, and one configuration instead of a separate deployment per region. | ||
|
|
||
| ## Available Regions | ||
| ## Run Globally | ||
|
|
||
| Cerebrium supports deployment across three major continents with the following regions: | ||
| Set `region = "global"` to let the platform place the app in any region with available capacity that matches its hardware requirements: | ||
|
|
||
| ### United States | ||
| ```toml | ||
| [cerebrium.hardware] | ||
| region = "global" | ||
| compute = "AMPERE_A10" | ||
| cpu = 2 | ||
| memory = 8.0 | ||
| ``` | ||
|
|
||
| - **us-east-1** (N. Virginia) - Default region | ||
| When Cerebrium brings new capacity online, global apps can run there without a configuration change or redeploy. | ||
|
|
||
| ### Europe | ||
| <Note> | ||
| Geography-based placement is coming soon. This constrains an app to a | ||
| geographic area such as the US or the EU to meet data-residency requirements. | ||
| </Note> | ||
|
|
||
| ## Pin a Region | ||
|
|
||
| Set `region` to a specific region to run the app only there: | ||
|
|
||
| ```toml | ||
| [cerebrium.hardware] | ||
| region = "us-east-1" | ||
| compute = "AMPERE_A10" | ||
| cpu = 2 | ||
| memory = 8.0 | ||
| ``` | ||
|
|
||
| Pinning guarantees placement but limits the app to that region's capacity, which increases the likelihood of request queuing when the region is busy. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "guarantees placement in that region"
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Will fix |
||
|
|
||
| ### Available Regions | ||
|
|
||
| #### United States | ||
|
|
||
| - **us-east-1** (N. Virginia) | ||
| - **us-central1** (Kansas City) | ||
|
|
||
| #### Europe | ||
|
|
||
| - **eu-west-2** (United Kingdom) | ||
| - **eu-north-1** (Stockholm) | ||
| - **eu-north1** (Finland) | ||
|
|
||
| #### Available on request | ||
|
|
||
| ### Asia Pacific | ||
| Contact [support](mailto:support@cerebrium.ai) to enable access to these regions: | ||
|
|
||
| - **us-west-2** (Oregon) | ||
| - **eu-west-2** (United Kingdom) | ||
| - **eu-central-1** (Frankfurt) | ||
| - **ap-south-1** (Mumbai) | ||
| - **ap-northeast-1** (Tokyo) | ||
| - **sa-east-1** (São Paulo) | ||
| - **ca-central-1** (Montreal) | ||
| - **me-central-1** (Dubai) | ||
|
|
||
| <Info> | ||
| Additional regions are being evaluated and will be added based on user demand | ||
| and infrastructure availability. Contact | ||
| [support](mailto:support@cerebrium.ai) if you need deployment in a specific | ||
| region not currently listed. | ||
| Some regions run on cloud providers other than AWS: when pinning `us-central1` | ||
| or `eu-north1`, set `provider = "nebius"`. | ||
| </Info> | ||
|
|
||
| ## CLI Configuration | ||
| ## Hardware Preferences | ||
|
|
||
| Placement respects both the region and the hardware requirements of an app. Specify acceptable GPU types in preference order with a `compute` list (see [GPU preference lists](/hardware/using-gpus#gpu-preference-lists)): | ||
|
|
||
| ```toml | ||
| [cerebrium.hardware] | ||
| region = "global" | ||
| compute = ["HOPPER_H100", "HOPPER_H200", "AMPERE_A100_80GB"] | ||
| ``` | ||
|
|
||
| The set of eligible regions is the intersection of both constraints: any region with several acceptable GPU types is the widest pool; one region with a single GPU type is the narrowest. | ||
|
|
||
| Configure the CLI to work with different regions in two ways: | ||
| ## Endpoints | ||
|
|
||
| Set a default region for all CLI commands: | ||
| Apps keep a single endpoint no matter how many regions they run in: | ||
|
|
||
| ```text | ||
| https://api.cerebrium.ai/v4/p-xxxxxxxx/{app-name}/{function-name} | ||
| ``` | ||
|
|
||
| Requests enter through the global router and are directed to a region where the app is running. Regioned hostnames continue to work but add a proxy hop. See [REST API](/endpoints/inference-api). | ||
|
|
||
| ## How Requests Are Routed | ||
|
|
||
| - Requests are served from running capacity first: a request routes to a region with a warm instance before a cold start is triggered elsewhere. | ||
|
milo157 marked this conversation as resolved.
Outdated
|
||
| - Routing prefers lower-latency regions but does not guarantee the nearest region. | ||
| - There is no session affinity. Consecutive requests can be served from different regions. | ||
|
|
||
| ## Scaling Across Regions | ||
|
|
||
| `min_replicas`, `max_replicas`, and `scaling_buffer` apply to the app as a whole, not per region. The platform distributes instances across eligible regions based on traffic and available capacity. | ||
|
|
||
| View where containers are running: | ||
|
|
||
| ```bash | ||
| cerebrium region set us-east-1 | ||
| cerebrium containers list my-app | ||
| ``` | ||
|
|
||
| This sets the default region for commands like listing storage volumes, running applications, and other operations. | ||
| The output includes the region of each container. | ||
|
|
||
| ## Storage | ||
|
|
||
| Persistent storage is managed per region. Files written to `/persistent-storage` in one region are not guaranteed to be available in other regions, and region-local caches, such as model weights downloaded on first load, fill independently in each region an app runs in. | ||
|
milo157 marked this conversation as resolved.
Outdated
|
||
|
|
||
| Apps deployed with `region = "global"` also mount `/global-persistent-storage`, a single volume shared across every region the app runs in. Files written there are visible from all regions, and reads are cached per region. Use the global volume for data that must be available everywhere and `/persistent-storage` for region-local data. Manage files on the global volume by passing `--region global` to the file commands. See [Managing Files](/storage/managing-files#global-storage). | ||
|
|
||
| Alternatively, specify the region for individual commands using `--region` (or its short form `-r`). This works for all file commands — `cp`, `ls`, `rm`, and `download`: | ||
| Target a region with the file commands using `--region` (or its short form `-r`). This works for all file commands: `cp`, `ls`, `rm`, and `download`. | ||
|
|
||
| ```bash | ||
| cerebrium ls --region eu-north-1 | ||
| cerebrium cp model.bin -r eu-north-1 | ||
| cerebrium rm old_file.txt --region eu-north-1 | ||
| cerebrium download results.json -r eu-north-1 | ||
| ``` | ||
|
|
||
| Set a default region for CLI commands: | ||
|
|
||
| ```bash | ||
| cerebrium region set us-east-1 | ||
| ``` | ||
|
|
||
| <Info> | ||
| `--region` applies only to the command it's attached to. The default set by | ||
| `cerebrium region set` is not modified. | ||
| </Info> | ||
|
|
||
| ## App Deployment | ||
|
|
||
| Set the deployment region using the `region` parameter in the `[cerebrium.hardware]` section of `cerebrium.toml`: | ||
|
|
||
| ```toml | ||
| [cerebrium.hardware] | ||
| region = "us-east-1" | ||
| provider = "aws" | ||
| compute = "AMPERE_A10" | ||
| cpu = 2 | ||
| memory = 8.0 | ||
| ``` | ||
|
|
||
| ## Pricing | ||
|
|
||
| Pricing varies by region based on local infrastructure costs and availability: | ||
|
|
||
| ## GPU Availability by Region | ||
|
|
||
| GPU availability and pricing vary across regions due to infrastructure constraints and local demand: | ||
|
|
||
| | GPU Model | US East | US Central | EU West | EU North | AP South | | ||
| | ----------------- | ------- | ---------- | ------- | -------- | -------- | | ||
| | BLACKWELL_B300 | ✅ | ❌ | ❌ | ❌ | ❌ | | ||
| | BLACKWELL_B200 | ✅ | ✅ | ❌ | ❌ | ❌ | | ||
| | HOPPER_H200 | ✅ | ✅ | ✅ | ✅ | ✅ | | ||
| | HOPPER_H100 | ✅ | ❌ | ✅ | ✅ | ✅ | | ||
| | BLACKWELL_RTX6000 | ❌ | ✅ | ❌ | ❌ | ❌ | | ||
| | AMPERE_A100_80GB | ✅ | ❌ | ✅ | ✅ | ✅ | | ||
| | AMPERE_A100_40GB | ✅ | ❌ | ✅ | ✅ | ✅ | | ||
| | ADA_L40 | ✅ | ❌ | ❌ | ✅ | ❌ | | ||
| | ADA_L4 | ✅ | ❌ | ✅ | ✅ | ✅ | | ||
| | AMPERE_A10 | ✅ | ❌ | ✅ | ✅ | ✅ | | ||
| | TURING_T4 | ✅ | ❌ | ✅ | ✅ | ✅ | | ||
|
|
||
| ### Limitations | ||
|
|
||
| - Each region requires a separate deployment. Apps deployed in one region do not automatically replicate to other regions. | ||
| - Each region has its own isolated persistent storage volume. Data stored in `/persistent-storage` in one region is not accessible | ||
| from other regions. | ||
| GPU availability varies across regions due to infrastructure constraints and local demand. CPU workloads run in every region. | ||
|
|
||
| | Region | Available GPUs | | ||
|
milo157 marked this conversation as resolved.
|
||
| | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | | ||
| | us-east-1 | BLACKWELL_B300, BLACKWELL_B200, HOPPER_H200, HOPPER_H100, AMPERE_A100_80GB, AMPERE_A100_40GB, ADA_L40, ADA_L4, AMPERE_A10, TURING_T4, INF2, TRN1 | | ||
| | us-central1 | BLACKWELL_RTX6000, BLACKWELL_B200, HOPPER_H200 | | ||
| | eu-north1 | HOPPER_H200, HOPPER_H100, ADA_L40 | | ||
| | us-west-2 (on request) | HOPPER_H200, HOPPER_H100, AMPERE_A100_80GB, AMPERE_A100_40GB, ADA_L40, ADA_L4, AMPERE_A10, INF2, TRN1 | | ||
| | eu-west-2 (on request) | HOPPER_H100, AMPERE_A10, ADA_L4, TURING_T4 | | ||
| | eu-north-1 | HOPPER_H100, ADA_L40, ADA_L4, AMPERE_A10, TURING_T4, INF2, TRN1 | | ||
| | ap-south-1 (on request) | ADA_L4, AMPERE_A10, TURING_T4 | | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.