0.18.30
AWS Capacity Reservations and Capacity Blocks
dstack
now allows provisioning AWS instances using Capacity Reservations and Capacity Blocks. Given a CapacityReservationId
, you can specify it in a fleet or a run configuration:
type: fleet
nodes: 1
name: my-cr-fleet
reservation: cr-0f45ab39cd64a1cee
The instance will use the reserved capacity, so as long as you have enough, the provisioning is guaranteed to succeed.
Non-root users in Docker images
Previously, dstack
always executed the workload as root
, ignoring the user property set in the image. Now, dstack
executes the workload with the default image user, and you can override it with a new user
property:
type: task
image: nvcr.io/nim/meta/llama-3.1-8b-instruct
user: nim
The format of the user
property is the same as Docker uses: username[:groupname]
, uid[:gid]
, and so on.
Improved dstack apply
and repos UX
Previously, dstack apply
used the current directory as the repo that's made available within the run at /workflow
. The directory had to be initialized with dstack init
before running dstack apply
.
Now you can pass --repo
to dstack apply
. It can be a path to a local directory or a remote Git repo URL. The specified repo will be available within the run at /workflow
. You can also specify --no-repo
if the run doesn't need any repo. With --repo
or --no-repo
specified, you don't need to run dstack init
:
$ dstack apply -f task.dstack.yaml --repo .
$ dstack apply -f task.dstack.yaml --repo ../parent_dir
$ dstack apply -f task.dstack.yaml --repo https://github.com/dstackai/dstack.git
$ dstack apply -f task.dstack.yaml --no-repo
Specifying --repo
explicitly can be useful when running dstack apply
from scripts, pipelines, or CI. dstack init
stays relevant for use cases when you work with dstack apply
interactively and want to set up the repo to work with once.
Lightweight pip install dstack
pip install dstack
used to install all the dstack
server dependencies. Now pip install dstack
installs only the CLI and Python API, which is optimal for use cases when a remote dstack server is used. You can do pip install "dstack[server]"
to install the server or do pip install "dstack[all]"
to install the server with all backends supported.
Breaking changes
pip install dstack
no longer install the server dependencies. If you relied on it to install the server, ensure you usepip install "dstack[server]"
orpip install "dstack[all]"
.
What's Changed
- [chore]: Move
run_async
to_internal/utils
by @jvstme in #2057 - Move server deps to dstack[server] extra by @r4victor in #2058
- Add
user
property to run configurations by @un-def in #2055 - [Blog] Exploring inference memory saturation effect: H100 vs MI300x by @peterschmidt85 in #2061
- [Internal]: Fix building docs in CI by @jvstme in #2063
- [chore]: Drop unused gateway-related runner code by @jvstme in #2062
- [shim] Clean up and document API by @un-def in #2060
- Improve RESP API docs by @r4victor in #2064
- Allow underscores in custom GCP tags by @r4victor in #2065
- Make repo optional when submitting runs via HTTP API by @r4victor in #2066
- Fix changing configuration type with dstack apply by @r4victor in #2070
- Fix instances stuck in busy status by @r4victor in #2071
- [Minor] If errors should be passed silently, then in pythonic way by @dimitriillarionov in #2075
- AWS Capacity Reservation support by @solovyevt in #1977
- [Blog] Beyond Kubernetes: 2024 recap and what's next for AI infra by @peterschmidt85 in #2074
- Fix
reservation
property backward compatibility by @un-def in #2077 - Fix ~/.ssh write permissions check by @r4victor in #2079
- Fix errors exit codes in dstack apply by @r4victor in #2081
- Fix RESERVATIONS display in fleets table by @r4victor in #2082
- Support --repo, --no-repo, and autoinit in dstack apply by @r4victor in #2080
- Support AWS partitioned volumes by @r4victor in #2084
- [shim] Update OpenAPI doc by @un-def in #2085
New Contributors
- @dimitriillarionov made their first contribution in #2075
- @solovyevt made their first contribution in #1977
Full Changelog: 0.18.29...0.18.30