AI Workbench Projects#

Diagram of the folder structure of a Workbench project showing the .project folder with spec.yaml, requirements.txt, apt.txt, preBuild.sh, and postBuild.sh files, as well as the src folder with the project code.

Overview#

A project is a Git repository with configuration files defining a containerized environment.

Projects contain code along with the configuration files used to build the container to run the code.

When you move a project to a different location (e.g from your laptop to a collaborator’s machine), Workbench automatically rebuilds the container.

Versioning the environment in the repository keeps everything reproducible across different machines.

Projects put your code on the host system and your environment in the container.

Git manages the repository on the host and AI Workbench mounts the repository into the container. This gives you the option to edit the files with tools on the host or tools installed in the container.

You can work in a project without AI Workbench because it’s a Git repository and a container.

Anyone can clone and work with them however they like. They don’t need to use AI Workbench.

However, the UX will be a lot more manual. They can build their own container or just edit code with their preferred editor and Git client.

Everyone works on the same repository with their own workflows and UX.

The project defines not just what runs, but how AI Workbench presents and manages it.

The project view in the Workbench UI is shaped on a project-by-project basis. The configuration files also defines the project UX because user created configurations shape affordances in the Workbench UI.

For example, configuring an application with a name puts that name in the relevant AI Workbench UI buttons for that project.

Key Concepts#

Project Specification:

The core configuration file (project/.project/spec.yaml) that AI Workbench reads to interpret and manage the repository. It defines a variety of things, include the base image, mounts, environment variables, and applications.

Build Files:

Optional files that customize the container during build. .apt.txt lists system packages, .requirements.txt lists Python packages, and .preBuild.bash / .postBuild.bash run custom setup scripts. Changes to these files prep AI Workbench for a container rebuild.

Base Image:

The container image that provides the foundation for the project container. Specified by a url in the .spec.yaml file, Base environments come pre-configured with common software stacks like Python, CUDA, PyTorch, or TensorFlow. You build on top of this foundation by adding your project-specific packages.

Project Container:

The running containerized environment where you do your work. It’s built from the base environment plus any packages or scripts defined in environment configuration files. The project directory itself is mounted into the container, so changes to your code persist after the container stops.

Mounts:

Connections between the host filesystem and the container. The project directory is automatically mounted so your code persists. You can add additional mounts for datasets, shared resources, or output directories that need to outlive the container.