0.19.27
Run configurations
Repo directory
It's now possible to specify the directory in the container where the repo is mounted:
type: dev-environment
ide: vscode
repos:
- local_path: .
path: my_repo
# or using short syntax:
# - .:my_repoThe path property can be an absolute path or a relative path (with respect to working_dir). It's available inside run as the $DSTACK_REPO_DIR environment variable. If path is not set, the /workflow path is used.
Working directory
Previously, the working_dir property had complicated semantics: it defaulted to the repo path (/workflow), but for tasks and services without commands, the image working directory was used. You could also specify custom working_dir relative to the repo directory. This is now reversed: you specify working_dir as absolute path, and the repo path can be specified relative to it.
Note
During transitioning period, the legacy behavior of using /workflow is preserved if working_dir is not set. In future releases, this will be simplified, and working_dir will always default to the image working directory.
Fleet configuration
Nodes, retry, and target
dstack now indefinitely maintains nodes.min specified for cloud fleets. If instances get terminated for any reason and there are fewer instances than nodes.min, dstack will provision new fleet instances in the background.
There is also a new nodes.target property that specifies the number of instances to provision on fleet apply. Since now nodes.min is always maintained, you may specify nodes.target different from nodes.min to provision more instances than needs to be maintained.
Example:
type: fleet
name: default-fleet
nodes:
min: 1 # Maintain one instance
target: 2 # Provision two instances initially
max: 3dstack will provision two instances. After deleting one instance, there will be one instances left. Deleting the last instance will trigger dstack to re-create the instance.
Offers
The UI now has a dedicated page showing GPU offers available across all configured backends.
Digital Ocean and AMD Developer Cloud
The release adds native integration with DigitalOcean and
AMD Developer Cloud.
A backend configuration example:
projects:
- name: main
backends:
- type: amddevcloud
project_name: TestProject
creds:
type: api_key
api_key: ...For DigitalOcean, set type to digitalocean.
The digitalocean and amddevcloud backends support NVIDIA and AMD GPU VMs, respectively, and allow you to run
dev environments (interactive development), tasks
(training, fine-tuning, or other batch jobs), and services (inference).
Security
Important
This update fixes a vulnerability in the cloudrift, cudo, and datacrunch backends. Instances created with earlier dstack versions lack proper firewall rules, potentially exposing internal APIs and allowing unauthorized access.
Users of these backends are advised to update to the latest version and re-create any running instances.
What's changed
- Minor Hot Aisle Cleanup by @Bihan in #2978
- UI for offers #3004 by @olgenn in #3042
- Add
repos[].pathproperty by @un-def in #3041 - style(frontend): Add missing final newline by @un-def in #3044
- Implement fleet state-spec consolidation to maintain
nodes.minby @r4victor in #3047 - Add digital ocean and amd dev backend by @Bihan in #3030
- test: include amddevcloud and digitalocean in backend types by @Bihan in #3053
- Fix missing digitaloceanbase configurator methods by @Bihan in #3055
- Expose job working dir via environment variable by @un-def in #3049
- [runner] Ensure
working_direxists by @un-def in #3052 - Fix server compatibility with pre-0.19.27 runners by @un-def in #3054
- Bind shim and exposed container ports to localhost by @jvstme in #3057
- Fix client compatibility with pre-0.19.27 servers by @un-def in #3063
- [Docs] Reflect the repo and working directory changes (#3041) by @peterschmidt85 in #3064
- Show a CLI warning when using autocreated fleets by @r4victor in #3060
- Improve UX with private repos by @un-def in #3065
- Set up instance-level firewall on all backends by @jvstme in #3058
- Exclude target when equal to min for responses by @r4victor in #3070
- [Docs] Shorten the default
working_dirwarning by @peterschmidt85 in #3072 - Do not issue empty update for deleted_fleets_placement_groups by @r4victor in #3071
- Exclude target when equal to min for responses (attempt 2) by @r4victor in #3074
Full changelog: 0.19.26...0.19.27