Skip to main content

Collaborative Projects for Resource Sharing

· 5 min read

Teams can now create collaborative projects to share access to jobs, datasets, and models.

trainML Projects organize trainML resources into groups that can be shared with others or can have access to different third-party resources. All trainML accounts have a Personal project that cannot be shared, modified, or removed. Additional projects can be created and those projects can be shared with other users. All projects have a single owner (the creator of the project) that can control user access to the project and configure the project's access to third-party resources. All resource charges (compute and storage) accrue to the project owner (or their billing account, if configured). Additional members to the project can have either read-only or full access to the three different resource types: jobs, datasets, and models.

warning

Only add users you trust and know personally as members to your project.

How It Works

The Projects Dashboard allows you create and manage the projects you own as well as view or leave projects that you are a member of. To create a new project, click the Create button. Enter a name for the new project and indicate if you wish to prepopulate this project with your Personal project third-party keys. Once the project is created, click on the name of the new project under My Projects to view the current project configuration. Here you can configure the third-party keys for this project as well as add new project members.

To share access to your project with another trainML user, click the Add Member button in the Project Members section. Enter the email address the new project member in the Email field and configure the type of access the user should have to the project. Be sure the email entered matches the email address the user created their trainML account with. Read-Only access allows the user to list the resources, view resource details, and download resource logs. All access allows the user to create, edit, and delete resources. Additionally, Read-Only job access allows the user to access and therefore edit the contents of a Notebook, but not create, start, stop, or remove one.

A common member configuration is to enable All access to jobs, but Read-Only access to datasets and models. This allows the member to use datasets and models as part of their jobs but not to create new ones or delete ones that exist. They would also be able to create new model versions by using the trainML output type for Training Jobs, but would not be able to remove or edit the model the job produced.

Once you have access to a non-personal project (either by creating one or being invited to one), the Project menu item will appear in the header bar. It will display the currently active project and allow you to select from the other projects you have access to. To change your active project, click on the project name from the header bar menu. Once the project is changed, the list of jobs, datasets, and models will update to show only those resources in that project. All new resources created while a project is active remain in that project. Resources cannot be copied or moved between projects, so be sure to have the correct project selected when creating jobs, datasets, or models.

Configuring the SDK/CLI

By default, all operations using the trainML SDK/CLI will use the Personal project for trainML account the API keys were generated from. To change the active project, run the configure command:

trainml configure

This command will output the currently configured active project (UNSET defaults to Personal) and allows you to specify any project you have access to as the new active project.

Current Active Project: Personal
Select Active Project: (My Other Project, Personal, Project Shared With Me) [Personal]:

Once you select a project, it will store the results of your selection in the config.json file in the TRAINML_CONFIG_DIR folder (~/.trainml by default). Once the active project is set, all subsequent operations will use the selected project.

This setting can also be overridden at runtime using the environment variable TRAINML_PROJECT:

TRAINML_PROJECT=<PROJECT ID> python create_job.py

or by instantiating the trainML client with the project keyword argument:

from trainml import TrainML
trainml = TrainML(project="PROJECT ID")
await trainml.jobs.create(...)
tip

You must specify the project ID (not name) when using the runtime options. The project ID can be found by running trainml project list.