Releases: dstackai/dstack-enterprise
0.18.28-v1
CLI improvements
- Added alias
-R
for--reuse
withdstack apply
- Show OpenAI-compatible endpoint URL in CLI by @jvstme in dstackai/dstack#2022 and dstackai/dstack#2035
dstack apply
anddstack attach
no longer rely on external tools such asps
andgrep
on Unix-like systems andpowershell
on Windows. With this change, it's now possible to usedstack
CLI client in minimal environments such as Docker containers, including
the official dstackai/dstack image
WebUI improvements
- Model page code snippets fixes and improvements by @olgenn in dstackai/dstack#2026 and @jvstme in dstackai/dstack#2027
What's Changed
- Another batch of many minor improvements to the docs by @peterschmidt85 in dstackai/dstack#2016
- Show OpenAI-compatible endpoint URL in CLI by @jvstme in dstackai/dstack#2022 and dstackai/dstack#2035
- [Bug]: Cannot open UI login screen by @olgenn in dstackai/dstack#2025
- [UI] Model page code snippets fixes and improvements by @olgenn in dstackai/dstack#2026 and @jvstme in dstackai/dstack#2027
- Add
DSTACK_{RUNNER,SHIM}_DOWNLOAD_URL
env vars by @un-def in dstackai/dstack#2023 - [Feature] Add alias
-R
for--reuse
withdstack apply
by @peterschmidt85 in dstackai/dstack#2032 - Replace
ps | grep
with psutil in SSHAttach by @un-def in dstackai/dstack#2029
Full Changelog: dstackai/dstack@0.18.26...0.18.28
0.18.26-v1
Git
Previously, when you called dstack init
, Git credentials were reused between users of the same project and repository.
Starting with this release, to improve security, dstack
no longer shares Git credentials across users.
Warning
If you submitted credentials earlier with dstack init
, they will continue to work. However, it is recommended that each user call dstack init
again to ensure they do not reuse credentials from other users.
Deleting legacy credentials
To ensure no credentials submitted earlier are shared across users, you can run the following SQL statements:
UPDATE repos SET creds = NULL;
UI
This update brings a few UI improvements:
- Added
Delete
button to theVolumes
page - Added
Refresh
button to all pages with lists:Runs
,Models
,Fleets
,Volumes
,Projects
- Improved
Code
button on the model page
What's changed
- Implement per-user repo creds storage by @un-def in dstackai/dstack#2004
- [UI] Add Refresh button to all pages with lists by @olgenn in dstackai/dstack#2007
- [UI] Include base URL and authentication token in the code snippets by @olgenn in dstackai/dstack#2006
- [UI] The Code button improvements on the Model page by @olgenn in dstackai/dstack#2001
- [UI] It's not possible to select and delete volumes by @olgenn in dstackai/dstack#2000
- [UI] [Bug]: Services without model mapping are displayed in Models UI by @olgenn in dstackai/dstack#1993
- Ensure sshd privsep dir in container is properly set up by @un-def in dstackai/dstack#2008
- [Docs] Many minor improvements to docs and examples by @peterschmidt85 in dstackai/dstack#2013
- [Docs] Services without a gateway by @jvstme in dstackai/dstack#2011
- [Docs] Add deployment section with vLLM, TGI and NIM. Remove alignment handbook by @Bihan in dstackai/dstack#1990
- [Docs] Updated Installation and Server deployment guides to include CloudFormation by @peterschmidt85
- [Docs] Update services docs to reflect that gateway is now optional by @peterschmidt85 in dstackai/dstack#2005
- [Examples] Add a CloudFormation template showing how to deploy dstack server to AWS by @peterschmidt85 in dstackai/dstack#1944
- [Examples] Add Airflow example by @r4victor in dstackai/dstack#1991
Full changelog: dstackai/dstack@0.18.25...0.18.26
0.18.25-v1
Okta Single Sign-On
dstack
Enterprise now supports Single Sign-On via Okta Workforce Identity Cloud. When Okta integration is configured, the dstack
login page will display the Sign in with Okta button. After signing in with Okta for the first time, a new dstack
user account is created and linked to the Okta account. Subsequently, users can log in to dstack
using their Okta account without entering any dstack
-specific credentials.
To learn how to set up dstack
Enterprise with Okta, follow this guide.
Multiple volumes per mount point
It's now possible to specify a list of volumes for a mount point in run configurations:
...
volumes:
- name: [my-aws-eu-west-1-volume, my-aws-us-east-1-volume]
path: /volume_data
dstack
will choose and mount one volume from the list. This can be used to increase GPU availability by specifying different volumes for different regions, which is desirable for use cases like caching. Previously, it was possible to specify only one volume per mount point, so if there was no compute capacity in the volume's region, provisioning would fail.
DSTACK_NODES_IPS
environment variable
A new DSTACK_NODES_IPS
environment variable is now available for multi-node tasks. It contains a list of internal IP addresses of all nodes in the cluster, e.g. DSTACK_NODES_IPS="10.128.0.47\n10.128.0.48\n10.128.0.49"
. This feature enables cluster workloads that require configuring IP addresses of all the nodes.
What's Changed
- Adding an example of NIM by @deep-diver in dstackai/dstack#1853
- Support specifying multiple volumes per mount point by @r4victor in dstackai/dstack#1983
- Expose DSTACK_NODES_IPS env var by @r4victor in dstackai/dstack#1985
- Set minimum paramiko version to 3.2.0 by @un-def in dstackai/dstack#1984
- Limit azure-mgmt-network>=23.0.0,<28.0.0 by @r4victor in dstackai/dstack#1988
Full Changelog: dstackai/dstack@0.18.24...0.18.25
0.18.24-v1
Gateway is optional
Previously, running any service required setting up a gateway. With this update, a gateway is no longer needed to run a service for development purposes.
Service endpoint
- If no gateway is created, the service’s endpoint will be accessible at
<dstack server URL>/proxy/services/<project name>/<run name>/
. - If a service has a model mapping, the model will be accessible via the OpenAI-compatible endpoint at
<dstack server URL>/proxy/models/<project name>/
.
Note
While this change makes it much easier to use services for development, you will still need a gateway if you want to use a custom domain, enable HTTPS, or use auto-scaling.
Gateway property
If a gateway is created but isn’t needed for a service, set the gateway
property to false
. If you have multiple gateways, you can choose one by setting gateway
to the name of the gateway.
Model mapping
If the model is in OpenAI format, you can now use a shorter syntax for model mapping—simply set the model
property to the model's name.
type: service
image: ollama/ollama
commands:
- ollama serve &
- sleep 3
- ollama pull llama3.1
- fg
port: 11434
model: llama3.1
The longer syntax with more settings remains available.
Updating running services
Previously, updating a service’s configuration required restarting it. Now, you can update the replicas
and scaling
properties in place. Just run dstack apply
, and the changes will take effect. New replicas will be created while the old ones continue running.
What's changed
- [dind] Update
start-dockerd
script by @un-def in dstackai/dstack#1928 - Add
/proxy
prefix to dstack-proxy endpoints by @jvstme in dstackai/dstack#1939 - [shim] Unmount volumes when run exits by @un-def in dstackai/dstack#1937
- Return error when instance added to multiple fleets(#1699) by @swsvc in dstackai/dstack#1938
- unify project administration by @olgenn in dstackai/dstack#1946
- [shim] Change NVIDIA GPU detection method by @un-def in dstackai/dstack#1945
- Support service scaling via in-place updates by @r4victor in dstackai/dstack#1958
- [Docs] Document
resources.gpu.vendor
property by @un-def in dstackai/dstack#1957 - Fix SSH fleet hosts validation by @un-def in dstackai/dstack#1955
- Support chat models in
dstack-proxy
by @jvstme in dstackai/dstack#1953 - Add user tag to AWS and GCP volumes by @james-boydell in dstackai/dstack#1948
- Fix dstack-proxy dependencies by @jvstme in dstackai/dstack#1959
- Support DSTACK_SERVER_ADMIN_TOKEN env by @r4victor in dstackai/dstack#1960
- Fix migration
82b32a135ea2
by @un-def in dstackai/dstack#1962 - Fix dstack apply runs with new names by @r4victor in dstackai/dstack#1964
- [Blog] Introducing instance volumes to persist data on instances by @peterschmidt85 in dstackai/dstack#1965
- [UI]: Support in-server model proxy by @olgenn in dstackai/dstack#1966
- Short model mapping syntax by @jvstme in dstackai/dstack#1967
- Fix VolumeModel.user not loaded for volume detach by @r4victor in dstackai/dstack#1970
- Drop the
PROXY
feature flag by @jvstme in dstackai/dstack#1971 - Allow specifying gateway in service configurations by @jvstme in dstackai/dstack#1972
- Improve error handling in model proxy by @jvstme in dstackai/dstack#1973
- Fix backward compatibility broken in 0.18.23 by @jvstme in dstackai/dstack#1974
New contributors
- @james-boydell made their first contribution in dstackai/dstack#1948
Full changelog: dstackai/dstack@0.18.22...0.18.24
0.18.22-v1
Custom OS images on AWS
You can now configure your own AMIs for the AWS backend.
projects:
- name: main
backends:
- type: aws
creds:
type: default
os_images:
cpu:
name: my-cpu-ami
user: admin
nvidia:
name: my-nvidia-ami
user: ubuntu
This can be used as an alternative way to bring your software or data to the AWS instance and mount it into your runs using Instance volumes.
See the AWS backend reference for details on configuring OS images. Support for custom OS images in other backends is coming in future releases.
What's Changed
- [Blog] Docker and Docker Compose inside container by @peterschmidt85 in dstackai/dstack#1916
- [Examples] Update Chat UI compose.yaml by @un-def in dstackai/dstack#1919
- [Bug]: [UI] Dark YAML editor theme won't work bug ui by @olgenn in dstackai/dstack#1923
- Remove Cloud NAT check when provisioning by @r4victor in dstackai/dstack#1925
- Allow to customize AMIs used by AWS backend by @un-def in dstackai/dstack#1920
- Fix Azure hostname assignment by @r4victor in dstackai/dstack#1930
- Support GCP Shared VPC for some subnets by @r4victor in dstackai/dstack#1933
- Increase request body size limit for services by @jvstme in dstackai/dstack#1934
Full Changelog: dstackai/dstack@0.18.21...0.18.22
0.18.21-v2
This release fixes a bug with GCP Cloud NAT check taking place during provisioning even with nat_check: false
(dstackai/dstack#1924).
0.18.21-v1
0.18.21
The update includes all the features and bug fixes from version 0.18.21.
Instance volumes
In addition to network volumes, dstack
now allows to mount instance (host) filesystems inside the run container. As contents of the instance volume are specific to the instance where the run is executed, such volumes can be used in cases where data persistence is not critical, for example, as a cache:
type: task
commands:
- pip install -r requirements.txt
volumes:
# reuse pip cache between runs
- /dstack-cache/pip:/root/.cache/pip
See the instance volumes documentation for more information.
Azure custom and private networks
dstack
now supports configuring custom Azure networks, which was only possible on AWS and GCP before. In addition, you can now configure dstack
to provision instances without public IPs on Azure to take advantage of private networks:
type: azure
tenant_id: my_tenant_id
subscription_id: my_subscription_id
regions: [westeurope]
public_ips: false
vpc_ids:
westeurope: test-networks-rg/test-network
creds:
type: default
Read more about Azure networking configuration in the docs.
Python 3.13 support for dstack
package
The previous 0.18.20 release added support for Python 3.13 in run configurations. This release updates the dstack
package itself so that it works under Python 3.13. The dstack
package also drops Python 3.8 support that reached end of life. Note that python: 3.8
in run configurations is deprecated but still supported.
Multi-job UI
The control plain UI now displays detailed info on each job in the run, improving support for multi-node tasks and replicated services:
What's Changed
- Show all jobs in runs UI by @olgenn in dstackai/dstack#1887
- Revert the list of projects and users in Administration by @olgenn in dstackai/dstack#1888
- Fix instance price discrepancies in RunPod by @jvstme in dstackai/dstack#1891
- [Website] Change
Backends
toPartners
by @peterschmidt85 in dstackai/dstack#1893 - Support
auth: true
services in dstack-proxy by @jvstme in dstackai/dstack#1885 - [Docs]: Fix typos by @dheerajsir in dstackai/dstack#1897
- Support custom and private networks for Azure by @r4victor in dstackai/dstack#1896
- Fix Dstack Server Deployment Link by @SagarSharma101 in dstackai/dstack#1898
- Add instance volumes by @un-def in dstackai/dstack#1895
- Add nat_check option to GCP config by @r4victor in dstackai/dstack#1904
- Handle deleted volumes in attach_volume() by @r4victor in dstackai/dstack#1907
- Fix log message on getting run volumes by @r4victor in dstackai/dstack#1909
- [dind] Improve start-dockerd script by @un-def in dstackai/dstack#1908
- Show warning on missing backend deps by @r4victor in dstackai/dstack#1911
- Support Python 3.13, drop Python 3.8 by @jvstme in dstackai/dstack#1910
- Update pydantic-duality to fix the infinite recursion bug by @zmievsa in dstackai/dstack#1902
- Set ping_interval on WebSocket connection by @r4victor in dstackai/dstack#1918
New Contributors
- @dheerajsir made their first contribution in dstackai/dstack#1897
- @SagarSharma101 made their first contribution in dstackai/dstack#1898
- @zmievsa made their first contribution in dstackai/dstack#1902
Full Changelog: dstackai/dstack@0.18.20...0.18.21
0.18.20-v1
0.18.20
The update includes all the features and bug fixes from version 0.18.20.
Python 3.13 support
Following a recent Python 3.13 release on October 7, 2024, dstack
now supports python: 3.13
in run configurations. python: 3.8
is still supported but deprecated.
Note: the dstack
package itself does not yet work on Python 3.13 due to some limitations in dependencies. We're looking into supporting it as well.
Custom backend tags
You can now define custom tags that dstack
will assign to all cloud resources it creates including instances and volumes. The tags are defined in the backend configuration:
type: aws
tags:
company_department: finance
company_project: dstack
company_user: victor
creds:
type: default
Custom tags are supported for AWS, Azure, and GCP.
Improved support of AWS private subnets
Previously, when configuring an AWS backend to use private subnets (public_ips: false
), dstack
would require a NAT Gateway. Now dstack
supports more networking setups that provide outbound internet traffic including NAT Gateway, Transit Gateway, and VPC Peering Connection.
New required permissions
dstack
now sets labels on GCP volumes which requires acompute.disks.setLabels
permission.
Deprecations
python: 3.8
in run configurations is deprecated.
What's Changed
- Add created_at to projects and users by @r4victor in dstackai/dstack#1857
- Improvements for model details page in the UI by @olgenn in dstackai/dstack#1860
- [Bug]: Users logged out after rotating their tokens without seeing tokens by @olgenn in dstackai/dstack#1861
- [dind] Move dind processes to a separate cgroup by @un-def in dstackai/dstack#1859
- [Docs] Add Docker protip and Docker Compose example by @un-def in dstackai/dstack#1858
- Implement custom backend tags by @r4victor in dstackai/dstack#1872
- [shim] Remove anonymous volumes along associated container by @un-def in dstackai/dstack#1873
- Allow running services without a gateway by @jvstme in dstackai/dstack#1869
- [UX]: Resize chat input field based on content #1562 by @olgenn in dstackai/dstack#1875
- Collect AMD GPU metrics by @r4victor in dstackai/dstack#1877
- [Blog] Monitoring GPU usage and other container metrics by @peterschmidt85 in dstackai/dstack#1874
- [Docs] Rename
HUGGING_FACE_HUB_TOKEN
toHF_TOKEN
by @peterschmidt85 in dstackai/dstack#1871 - Support Python 3.13 and deprecate 3.8 in run configurations by @jvstme in dstackai/dstack#1878
- Support AWS private subnets with Transit Gateway by @r4victor in dstackai/dstack#1881
- Fix collecting metrics from CPU instances by @r4victor in dstackai/dstack#1882
Full Changelog: dstackai/dstack@0.18.19...0.18.20
0.18.18-v1
0.18.18
The update includes all the features and bug fixes from version 0.18.18.
Hardware metrics
The CLI introduces a new command, dstack stats
, which displays real-time hardware metrics for runs, including CPU, memory, and GPU usage per replica and job.
$ dstack stats hot-frog-1
NAME CPU MEMORY GPU
hot-frog-1 2% 15307MB/49152MB #0 22764MB/24576MB 0% Util
Use the -w
option to view stats updating every few seconds in the loop.
You can also retrieve the metrics using the REST API.
Docker inside dstack
Run configurations now have a new optional privileged
property (equivalent to the --privileged
Docker CLI flag). When it is set to true
, the run container gets extended privileges, making it possible to use Docker insidedstack
.
To use Docker and Docker Compose within dstack
, set the image
property to dstackai/dind
. Additionally, you must invoke start-dockerd
as the first command to start the Docker daemon.
type: task
name: misc-task-dind
image: dstackai/dind
privileged: true
commands:
- start-dockerd
- docker compose up
Dev environment example
type: dev-environment
name: vscode-dind
image: dstackai/dind
privileged: true
ide: vscode
init:
- start-dockerd
See more examples in examples/misc/dind
.
Note
The privileged
property is only supported by VM backends (all backends except runpod
, vastai
, and kubernetes
).
What's changed
- [Feature] Track hardware metrics by @r4victor in dstackai/dstack#1827
- [Feature] Add
privileged
run property by @un-def in dstackai/dstack#1835 - [Feature] Run container as
--privileged
ifDSTACK_DOCKER_PRIVILEGED
by @mtaran in dstackai/dstack#1821 - [Feature] Added the
Code
button on the model page in UI by @olgenn in dstackai/dstack#1825 - [Feature] Publish
dstackai/dind
image by @un-def in dstackai/dstack#1837 - [Bugfix] Fix running NVIDIA NIM images by @jvstme in dstackai/dstack#1843
- [Bugfix] Mitigate concurrent
dstack attach
issues by @un-def in dstackai/dstack#1816 - [Bugfix] Fixed runs ordering and pagination in UI by @un-def in dstackai/dstack#1812
- [Bugfix] Removed dummy Test fleet in UI by @priyanshuverma-dev in dstackai/dstack#1819
- [UX] Display the SSH and vscode prompt to after executing
init
commands by @fool1280 in dstackai/dstack#1818 - [Blog] AMD MI300X inference benchmark by @peterschmidt85 and @Bihan in dstackai/dstack#1808
- [Docs] Add AWS EFA support info by @un-def in dstackai/dstack#1803
- [Docs] Fixed typos and added minor enhancements by @FarukhS52 in dstackai/dstack#1810 and dstackai/dstack#1811
- [Docs] Fixed typos and added minor enhancements by @amantyagiprojects in dstackai/dstack#1800
- [Docs] Use correct discord server invite in readme by @sravan1946 in dstackai/dstack#1824
- [Docs] Fixed a minor issue in
README.md
by @Hacker24a9 in dstackai/dstack#1823 - [Docs] Fixed typos and added minor enhancements @VaibhavWakde52 in dstackai/dstack#1813
- [UX] Show run error on the run page in the UI by @olgenn in dstackai/dstack#1829
- [UX] Normalize AMD Instinct accelerator names by @un-def in dstackai/dstack#1817
- [Bugfix] Fixed the issue with attaching volume to existing instance by @un-def in dstackai/dstack#1836
- [Bugfix] Fix GCP config
public_ips
not allowed via the API by @r4victor in dstackai/dstack#1840 - [Internal] Don't cache
GpuVendor
inglobal var
by @un-def in dstackai/dstack#1845 - [Internal] Fix shim tests binding to 0 port by @r4victor in dstackai/dstack#1846
New contributors
- @FarukhS52 made their first contribution in dstackai/dstack#1810
- @amantyagiprojects made their first contribution in dstackai/dstack#1800
- @priyanshuverma-dev made their first contribution in dstackai/dstack#1819
- @sravan1946 made their first contribution in dstackai/dstack#1824
- @Hacker24a9 made their first contribution in dstackai/dstack#1823
- @VaibhavWakde52 made their first contribution in dstackai/dstack#1813
- @fool1280 made their first contribution in dstackai/dstack#1818
- @mtaran made their first contribution in dstackai/dstack#1821
Full changelog: dstackai/dstack@0.18.17...0.18.18
0.18.17-v1
0.18.17
The update includes all the features and bug fixes from version 0.18.17.
On-prem AMD GPU support
dstack
now supports SSH fleets with AMD GPUs. Hosts should be pre-installed with Docker and AMDGPU-DKMS kernel driver (e.g. via native package manager or AMDGPU installer).
Elastic Fabric Adapter support
dstack
now automatically enables AWS EFA if it is supported by the instance type, no extra configuration needed. The following EFA-enabled instance types are supported: p4d.24xlarge
, g4dn.12xlarge
, g4dn.16xlarge
, g4dn.8xlarge
, g4dn.metal
, g5.12xlarge
, g5.16xlarge
, g5.24xlarge
, g5.48xlarge
, g5.8xlarge
, g6.12xlarge
, g6.16xlarge
, g6.24xlarge
, g6.48xlarge
, g6.8xlarge
, gr6.8xlarge
.
Improved apply plan
Previously, dstack apply
showed a plan only for run configurations. Now it shows a plan for all configuration types including fleets, volumes, and gateways. Here's a fleet plan showing configuration parameters and the offers that will be tried for provisioning:
✗ dstack apply -f .dstack/confs/fleet.yaml
Project main
User admin
Configuration .dstack/confs/fleet.yaml
Type fleet
Fleet type cloud
Nodes 2
Placement cluster
Backends aws
Resources 2..xCPU, 8GB.., 100GB.. (disk)
Spot policy on-demand
# BACKEND REGION INSTANCE RESOURCES SPOT PRICE
1 aws eu-west-1 m5.large 2xCPU, 8GB, 100.0GB (disk) no $0.107
2 aws eu-central-1 m5.large 2xCPU, 8GB, 100.0GB (disk) no $0.115
3 aws eu-west-1 c5.xlarge 4xCPU, 8GB, 100.0GB (disk) no $0.192
...
Shown 3 of 82 offers, $40.9447 max
Fleet my-cluster-fleet does not exist yet.
Create the fleet? [y/n]:
Volumes UI
Server administrators and regular users can now see volumes in the UI.
What's Changed
- Dstack version on UI by @olgenn in dstackai/dstack#1742
- Fix restarting gateway connections by @jvstme in dstackai/dstack#1746
- Fix Handle KeyboardInterrupt in CLI when getting run plan #1626 by @IshuSinghSE in dstackai/dstack#1756
- Add AMD support on on-prem fleets by @un-def in dstackai/dstack#1754
- Implement fleet apply plan by @r4victor in dstackai/dstack#1765
- chore: update provisioning.py by @eltociear in dstackai/dstack#1768
- Fix use all available runpod regions by default by @IshuSinghSE in dstackai/dstack#1757
- Implement apply plan for gateways and volumes by @r4victor in dstackai/dstack#1774
- Fix connection to ssh instance on non-standard ssh port by @un-def in dstackai/dstack#1766
- Fix docker SSH commands by @un-def in dstackai/dstack#1771
- Add Llama3.2 Vision Model Example by @Bihan in dstackai/dstack#1770
- Disable backend autoconfig via default creds by @r4victor in dstackai/dstack#1778
- Set backends requests timeouts by @r4victor in dstackai/dstack#1793
- Add UI for volumes #1683 by @olgenn in dstackai/dstack#1785
- UI for volumes 1683 by @olgenn in dstackai/dstack#1795
- [Docs] Add AMD GPU info to ssh fleets section by @un-def in dstackai/dstack#1779
- [shim] Use DockerRootDir to detect free disk space by @un-def in dstackai/dstack#1802
- Add AWS EFA support by @un-def in dstackai/dstack#1801
New Contributors
- @IshuSinghSE made their first contribution in dstackai/dstack#1756
- @eltociear made their first contribution in dstackai/dstack#1768
Full Changelog: dstackai/dstack@0.18.16...0.18.17