Install Determined Using Windows Subsystem for Linux (Windows)#
This user guide provides step-by-step instructions for installing Determined on the Windows Subsystem for Linux (WSL). You have two options for installation: using the Debian or RPM packages provided by Determined, or using Docker containers published by Determined with Docker Desktop. In this user guide, we’ll focus on achieving a single-machine installation of Determined, with both the master and agent running on the same machine within WSL.
Requirements#
Minimum
Windows 10 version 1903, or later.
WSL 2 installed and enabled on your Windows machine.
An Ubuntu or Red Hat Enterprise Linux-based WSL distribution installed from the Microsoft Store, such as:
systemd enabled within your chosen WSL distribution.
Recommended
Windows 10 version 1903, or later. Recommended: Windows 11 version 22H2.
Enable systemd
#
Edit the configuration file to enable systemd
within your WSL distribution. To do this:
Open a terminal window in your WSL distribution.
Add
systemd=true
to the[boot]
section of/etc/wsl.conf
in your WSL distribution:echo '[boot]' >> /etc/wsl.conf && echo 'systemd=true' >> /etc/wsl.conf
Then restart your WSL distribution:
wsl --shutdown <distribution name>
Install using Debian or RPM packages#
This section provides instructions for installing Determined on WSL using Debian or RPM packages.
Install PostgreSQL using apt
or yum
#
Since Determined uses a PostgreSQL database to store experiment and trial metadata, start by installing PostgreSQL. You’ll need PostgreSQL 10 or later.
Debian Distributions
On Debian distributions, use the following command:
sudo apt install postgresqlRed Hat Distributions
On Red Hat distributions, you’ll need to configure the PostgreSQL yum repository as described in the Red Hat Linux documentation. Then, install version 10:
sudo yum install postgresql-server -y sudo postgresql-setup initdb sudo systemctl start postgresql.service sudo systemctl enable postgresql.service
The authentication methods enabled by default may vary depending on the provider of your PostgreSQL
distribution. To enable the determined-master
to connect to the database, ensure that an
appropriate authentication method is configured in the pg_hba.conf
file.
When configuring the database connection in Configure and Start the Cluster, note the following:
If you specify the
db.hostname
property, you must use a PostgreSQLhost
(TCP/IP) connection.If you omit the
db.hostname
property, you must use a PostgreSQLlocal
(Unix-domain socket) connection.
Finally, create a database for Determined’s use and configure a system account that Determined will use to connect to the database.
For example, executing the following commands will create a database named determined
, create a
user named determined
with the password determined-password
, and grant the user access to
the database:
sudo -u postgres psql
postgres=# CREATE DATABASE determined;
postgres=# CREATE USER determined WITH ENCRYPTED PASSWORD 'determined-password';
postgres=# GRANT ALL PRIVILEGES ON DATABASE determined TO determined;
Install the Determined Master and Agent#
To find the latest release of Determined, visit the Determined repo.
Download the appropriate Debian or RPM package file, which will have the name
determined-master_VERSION_linux_amd64.[deb|rpm]
(where VERSION
is the actual version, e.g.,
0.24.0). Similarly, the agent package is named
determined-agent_VERSION_linux_amd64.[deb|rpm]
.
Install the master and agent package on one machine.
Debian Distributions
On Debian distributions, use the following command:
sudo apt install <path to downloaded package>Red Hat Distributions
On Red Hat distributions, use the following command:
sudo rpm -i <path to downloaded package>
Before running the Determined agent, install Docker on each agent machine.
Note
If you are not using Docker Desktop, you may disregard the prompt to use Docker Desktop and allow Docker to be installed within the WSL distribution.
Configure and Start the Cluster#
Ensure that an instance of PostgreSQL is running and accessible from the machine where the Determined master will run.
To start the Determined master, you’ll need to first edit the master and agent configuration files.
Edit the YAML configuration files at /etc/determined/master.yaml
(for
the master) and /etc/determined/agent.yaml
(for the agent) as appropriate for your setup.
Important
Ensure that the user, password, and database name correspond to your PostgreSQL configuration.
In /etc/determined/master.yaml
:
db:
host: localhost
port: <PostgreSQL port, e.g., 5432 by default>
name: <Database name, e.g., determined>
user: <PostgreSQL user, e.g., postgres>
password: <Database password>
In /etc/determined/agent.yaml
:
master_host: localhost
master_port: <Master port, e.g., 8080 by default>
Start the master by typing the following command:
sudo systemctl start determined-master
Note
You can also run the master directly using the command determined-master
. This may be useful
when experimenting with Determined such as when you want to quickly test different configuration
options before writing them to the configuration file.
Optionally, you can configure the master to start upon launching the WSL distro by using the following command:
sudo systemctl enable determined-master
Verify that the master started successfully by viewing the log.
journalctl -u determined-master
You should see logs indicating that the master can successfully connect to the database, and the
last line should indicate http server started
on the configured WebUI port (8080 by default).
You can also validate that the WebUI is running by navigating to http://<master>:8080
with your
web browser (or https://<master>:8443
if TLS is enabled). You should see No Agents
on the
right side of the top navigation bar.
Start the agent on each agent machine.
sudo systemctl start determined-agent
Similarly, the agent can be run with the command determined-agent
.
Optionally, you can configure the agent to start upon launching the WSL distro by using the following command:
sudo systemctl enable determined-agent
Verify that each agent started successfully by viewing the log.
journalctl -u determined-agent
You should see logs indicating that the agent started successfully, detected compute devices, and
connected to the master. On the Determined WebUI, you should now see slots available, both on the
right-hand side of the top navigation bar and if you select the Cluster
view in the left-hand
navigation panel.
Launch the Determined WebUI from within WSL.
powershell.exe /C start http://localhost:8080
The Determined WebUI opens in your browser.
Install using Docker Desktop#
This section provides instructions for installing Determined on WSL using Docker Desktop.
Install Docker Desktop#
Install Docker Desktop on Windows.
Ensure the Docker daemon is reachable from your WSL distribution.
Open the
Settings
dialog from the Docker Desktop tray icon, and selectResources
. UnderWSL Integration
, selectEnable integration with my default WSL distro
, and enable integration for the WSL distribution where you will be working with Determined.
Pull the PostgreSQL Image#
Pull the official Docker image for PostgreSQL. We recommend using the version listed below.
docker pull postgres:10
This image is not provided by Determined AI. For more information, visit its Docker Hub page.
Pull the Determined AI Image#
Pull the Docker image for the master or agent on each machine where these services will run. There is a single master container running in a Determined cluster and typically there is one agent container running on a given machine. A single machine can host both the master container and an agent container.
To run the commands below, replace VERSION
with a valid Determined version, such as the current
version, 0.24.0:
docker pull determinedai/determined-master:VERSION
docker pull determinedai/determined-agent:VERSION
Start the Cluster#
The cluster can now be started, first by starting the database, then by launching the Determined master and agent containers.
Start the PostgreSQL Container#
To start the PostgreSQL container, use the following command. Replace <DB password>
with the
password you would like to use for the database:
docker run \
--name determined-db \
-p 5432:5432 \
-v determined_db:/var/lib/postgresql/data \
-e POSTGRES_DB=determined \
-e POSTGRES_PASSWORD=<DB password> \
postgres:10
Obtain the WSL IP Address#
To allow Determined to reach the PostgreSQL container, you will need to determine the IP address.
Run the following command to determine the IP address of the WSL distribution and store it as an environment variable:
export WSL_IP=$(hostname -I | awk '{print $1}')
Start the Determined Master#
To start the master container, run the following command, replacing <DB password>
with the
database password:
Optionally, you may now launch the Determined WebUI from within WSL:
powershell.exe /C start http://localhost:8080
Start the Determined Agent#
To start the agent container, run the following command:
docker run \
-v /var/run/docker.sock:/var/run/docker.sock \
--name determined-agent \
-e DET_MASTER_HOST=$WSL_IP \
-e DET_MASTER_PORT=8080 \
determinedai/determined-agent:VERSION
Optionally, you may now launch the Determined WebUI from within WSL to verify the agent is running and connected:
powershell.exe /c start http://$WSLIP:8080/det/clusters
Determined internally makes use of Fluent Bit. The agent uses the
fluent/fluent-bit:1.9.3
Docker image at runtime. It will attempt to pull the image
automatically. If the agent machines in the cluster are not able to connect to Docker Hub, you must
manually place the image onto the agent machines in the cluster before Determined can run. To
specify a different image to use for running Fluent Bit (generally to make use of a custom Docker
registry—the image should not normally need to be changed otherwise), use the agent’s
--fluent-logging-image
command-line option or fluent_logging_image
config file option.
To ensure proper GPU access for the agent container, use the --gpus
flag to specify the GPUs.
Failure to include this flag will result in the agent not having access to any GPUs. For example:
# Use all GPUs.
docker run --gpus all ...
# Use any four GPUs (selected by Docker).
docker run --gpus 4 ...
# Use the GPUs with the given IDs or UUIDs.
docker run --gpus '"device=1,3"' ...
You can also disable and enable GPUs at runtime using the det slot disable
and det slot
enable
CLI commands, respectively.
Manage the Cluster#
By default, docker run
runs in the foreground. You can stop a container simply by pressing
Control-C. If you wish to keep Determined running for the long term, consider running the
containers detached and/or with
restart policies. You
can also use the deployment tool.