# What is ProjectVM

Project VM is a flexible package of hardware and software resources needed to perform different data science and machine learning tasks. A single user can create and manage multiple projects each with its own set of compute resources. All the compute resources created within these projects are the responsibility of the user.&#x20;

### TL;DR

Users can perform different tasks on the project compute using JupyterLab, RStudio or VSCode Integrated Development Environments (IDEs). The project compute can be scaled vertically or horizontally based on the stage of their data pipeline. Users can securely access different data sources like S3 buckets and database credentials to build their data pipelines and machine learning models. Each project comes with a managed MLflow server to keep track of experiments, code, and models. Users can deploy models as containers along with a REST API endpoint for integrating machine learning models to business applications. &#x20;

### Data Persistence

An Elastic File Share (EFS) is created for every user during the creation of the first project. All projects will have access to EFS to share code and data across projects. &#x20;

In the following sections, we will discuss different project states:

### Create State

During project creation an IAM role with access to different data sources, an EC2 instance (hereafter referred to as **Master Node**) of default size determined by your administrator (based on a pre-configured AMI = Amazon Machine Image), an RDS instance to track experiments, runs, models, and a folder in S3 bucket to save artifacts.&#x20;

![Resource orchestration during project creation](https://3395810496-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Frocketml-user-guide%2F-McQfX6QN5dTRTG3aKiz%2F-McQfj49NDeKH25yiACK%2F0.png?generation=1623962088847927\&alt=media)

### ON State

In ON state, users can access project compute resources via IDEs like JupyterLab, RStudio, and VSCode. Users can also access all the resources permitted through the IAM role using these IDEs. An experiment tracking server based on mlflow automatically starts on the EC2 instance. A tracking URL will be shown in the project details page and the same is accessible as an environment variable TRACKING\_URL in JupyterLab.

![](https://3395810496-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Frocketml-user-guide%2F-McQfX6QN5dTRTG3aKiz%2F-McQfj4AFKQzm4U47OAY%2F1.png?generation=1623962088943745\&alt=media)

### Updating Master State

In ON state, the master node can be scaled up or down based on the available compute instances. Open the side panel by clicking on the floating power button on the right and then click on the Update Master Node button. Select one of the available nodes and click on Update. The master node will transition to “Updating Master” state. Once the update is complete, the master node will go back to ON state. In the example below, we have updated the master node from a 2 core, 4 GB instance to a 4 core, 16 GB instance.

![](https://3395810496-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Frocketml-user-guide%2F-McQfX6QN5dTRTG3aKiz%2F-McQfj4Bp9wZCSX-XiTv%2F2.png?generation=1623962088917114\&alt=media)

![](https://3395810496-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Frocketml-user-guide%2F-McQfX6QN5dTRTG3aKiz%2F-McQfj4CxLg7n_QyAkFt%2F3.png?generation=1623962088963482\&alt=media)

![](https://3395810496-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Frocketml-user-guide%2F-McQfX6QN5dTRTG3aKiz%2F-McQfj4DAc4mW-bDD5N9%2F4.png?generation=1623962088928185\&alt=media)

![](https://3395810496-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Frocketml-user-guide%2F-McQfX6QN5dTRTG3aKiz%2F-McQfj4EtVj2uTBdI0wW%2F5.png?generation=1623962088962810\&alt=media)

### Creating Cluster State

When in ON state, users can horizontally scale their project compute by adding child nodes. Open the right-hand side panel, click on Add Child Node, select one of the instance types with the required CPUs and memory, select the number of instances, and click on Update. The project will switch to Creating Cluster state. Cluster creation will take 10-15 minutes based on the instance type and number of nodes in the cluster. Project will reach ON state once the cluster creation is complete.

The figure below shows an architecture diagram of the resources that are orchestrated during cluster creation.

![Resource orchestration during cluster creation for four child nodes](https://3395810496-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Frocketml-user-guide%2F-McQfX6QN5dTRTG3aKiz%2F-McQfj4FYpGnySLzP3c4%2F6.png?generation=1623962088907952\&alt=media)

![](https://3395810496-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Frocketml-user-guide%2F-McQfX6QN5dTRTG3aKiz%2F-McQfj4GyR0KT2wSYvcB%2F7.png?generation=1623962088927981\&alt=media)

![](https://3395810496-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Frocketml-user-guide%2F-McQfX6QN5dTRTG3aKiz%2F-McQfj4HF1XDOwfamcG7%2F8.png?generation=1623962088940606\&alt=media)

![](https://3395810496-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Frocketml-user-guide%2F-McQfX6QN5dTRTG3aKiz%2F-McQfj4I6UmsFhkP9d4h%2F9.png?generation=1623962089059625\&alt=media)

### Scaling Cluster State - Remove child nodes

Clusters can be scaled up, down and moved back to a single node.&#x20;

To remove all the child nodes, click on Remove Child Node. The project will switch to Scaling Cluster state. Once the child nodes are removed, the project will come back to ON state, only with the master node.

![](https://3395810496-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Frocketml-user-guide%2F-McQfX6QN5dTRTG3aKiz%2F-McQfj4JQjV0Jh3Zw01L%2F10.png?generation=1623962088932584\&alt=media)

![](https://3395810496-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Frocketml-user-guide%2F-McQfX6QN5dTRTG3aKiz%2F-McQfj4K3dREdUp9Dl4Z%2F11.png?generation=1623962088974038\&alt=media)

![](https://3395810496-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Frocketml-user-guide%2F-McQfX6QN5dTRTG3aKiz%2F-McQfj4LPaXI5Ok4cVtZ%2F12.png?generation=1623962088911767\&alt=media)

![](https://3395810496-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Frocketml-user-guide%2F-McQfX6QN5dTRTG3aKiz%2F-McQfj4MNHCw05JKIuwm%2F13.png?generation=1623962088909028\&alt=media)

### Scaling Cluster State - Update child nodes

In order to add more child nodes or update their instance type, click on *Update Child Node*. Users can pick the instance type, the number of nodes and click on Update. Project will switch to the “*Scaling Cluster*” state. Once scaling is complete, the project will go back to ON state.

![](https://3395810496-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Frocketml-user-guide%2F-McQfX6QN5dTRTG3aKiz%2F-McQfj4NFLiYKKRYkK2w%2F14.png?generation=1623962088917410\&alt=media)

![](https://3395810496-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Frocketml-user-guide%2F-McQfX6QN5dTRTG3aKiz%2F-McQfj4OJR04mDE-fxMu%2F15.png?generation=1623962088936270\&alt=media)

![](https://3395810496-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Frocketml-user-guide%2F-McQfX6QN5dTRTG3aKiz%2F-McQfj4Pdb_TU2r7VgHb%2F16.png?generation=1623962088904671\&alt=media)

### Starting and Stopping States

Transitioning from ON → OFF will be shown as Stopping and OFF → ON as Starting.

### OFF State

Users can turn off the entire project using the toggle button on the right side panel. Project will move to Stopping state and then to OFF state.

### Deleting State

Users can delete a project that is in OFF state. The “Delete project” option appears by hovering the cursor over the project name. This option will be grayed-out when the project is turned on, and will only be active when the project is in OFF state. This action will delete all the project’s resources: all virtual machines, databases, and project folders. For that reason, the application will require that the user types the project name to confirm the delete action. The project will switch to “Deleting” state and then be removed from the list of projects.\\

![](https://3395810496-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Frocketml-user-guide%2F-McQfX6QN5dTRTG3aKiz%2F-McQfj4QeaQgCovfAUni%2F17.png?generation=1623962088904761\&alt=media)

![](https://3395810496-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Frocketml-user-guide%2F-McQfX6QN5dTRTG3aKiz%2F-McQfj4RVhslkC7CS0s3%2F18.png?generation=1623962088907776\&alt=media)

![](https://3395810496-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Frocketml-user-guide%2F-McQfX6QN5dTRTG3aKiz%2F-McQfj4SefiMbSrGF8Hc%2F19.png?generation=1623962088900149\&alt=media)

![](https://3395810496-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Frocketml-user-guide%2F-McQfX6QN5dTRTG3aKiz%2F-McQfj4TTHXXwFbtPS4l%2F20.png?generation=1623962088894953\&alt=media)

###
