Docs - Hosting

Hosting

Vast is a GPU marketplace. Hosts sell GPU resources on the marketplace. Hosts are responsible for:

  • Setup: installing Ubuntu, creating disk partitions, installing NVIDIA drivers, opening network ports on the router and installing the Vast hosting software.
  • Testing and troubleshooting all issues that can arise, such as driver conflicts, errors, bad GPUs, and bad network ports. Vast does not offer support for getting your machine working. There is a host discord with helpful members and the host-general channel is searchable for specific errors.
  • Managing the listings and GPU offers for rentals, including setting pricing and end dates for the offers
  • Planning for maintenance so that no client jobs are affected

Account Setup #

Start by registering a new account on Vast.ai. Make sure to select the "Host" dropdown so that you have a hosting account and accept the hosting terms of service.

If you have an existing account on Vast.ai that you use for renting as a client, you will need to make a new account. Do not use your existing client account to host.

Machine Setup #

Follow the host setup guide closely. Once you are ready to list your machine, come back to this guide.

General concepts #

Clients high expectations coming from AWS or GCP. As a host, plan to offer 100% uptime for your machine during the contracted period. Expect that the GPU is going to be used at close to max capacity for the rental period. Ensure that your Internet, power source and heat dissipation systems are all functioning and that you have thought through how hosting will affect each one of those items.

Listings and Contracts #

Hosts can create machine listings (offers) through the CLI command list machine or the machine control panel GUI on the host machines page.

The main listing parameters include:

  • the pricing for GPUs,internet,storage
  • the discount schedule param which determines the price difference between on-demand and reserved instances
  • the min bid price for interruptible instances
  • the min_gpu param controlling 'slicing' (explained below)
  • the end/expiration date which determines how long the listing lasts

The listing offer is good until the end date. When a client creates an instance on your machine, this creates a contract from your listing.

Once you list and get rental contracts, it is very important to honor the terms of the contract until the end date.

The Rental Contract #

By listing your machine or compute services, you are offering up a rental contract to potential clients.

Once a client accepts this listing, you and the client have entered into a rental agreement - a contract.

As the provider you are promising to provide the services as advertized in your listing:

  • the provider must provide the hardware/services according to all the advertized specs
  • the hardware can not be used for any other purposes
  • the client's data must be isolated and protected according to the data protection policy
  • the advertized services must be provided up until the end date (contract expiration)

For full details, see the hosting agreement and Service Level Agreement.

Expiration date (end date) #

The expiration date can be set in the hosting interface by clicking on the date field under expiration and selecting a date for when the listing contract will expire. The CLI command to 'list machine' includes a field for end date, which is the same date.

Make sure to set an end date before listing your machine, or else the listing will not expire.

The "client end date" is the date of the longest client contract on a given machine.

Min GPU #

When clicking on the set pricing button, there is a min GPU field. The min GPU field allows you to set the smallest grouping of GPU rentals available on your machine in powers of 2, or down to 1. For example, if you have an 8X 3090 and set min gpu to 2, clients can create instances with 2, 4, or 8 GPUs. If you set min gpus to 1, then clients can make instances with 1, 2, 4 or 8 GPUs.

On-demand Price #

The on-demand price is the price per hour for the GPU rental. On demand rentals are the highest priority and if met will stop interruptibles.

Interruptible min price (optional) #

The interruptible price allows for the host to set the minimum interruptible price for a client to rent. Interruptibles work in a bidding system: clients set a bid price for their instance; the current highest bid is the instance that runs, the others are paused. more info

Reserved Discount Pricing Factor #

Reserved Instance Discounts are a feature for clients which allows them to rent machines over a long period of time at a reduced price. The Reserved Discount Pricing Factor represents the maximum possible discount a user can achieve on your machines.

The reserved discount pricing factor is a decimal value that represents the maximum discount a client can achieve on your contract. Eg: 0.4 represents a maximum of 40% discount.

This discount is not static, but rather scales over time that the user rents the machine for. EG: A client will get a 20% discount rate for 1 month, and a 30% discount rate for 3 months on the default setting.

You can set this number yourself to 0 if you wish to opt out of this feature.

Extending contracts #

To extend the current contracts for all clients on a given machine, change the expiration date to a later time with the same or lower pricing.

If you have raised the pricing, you cannot extend the current contract.

Testing your own machine #

It is vital to test your own machine to ensure the ports and software is running smoothly.

Setup a separate client account #

There are two supported ways to test your own machine. If you want to use the website GUI, you will need to setup a new account on a different email address, add a credit card and then find your machine and create instances on it like a client. This has the benefit of showing you the entire client experience. Testing the recommended Pytorch template is vital to ensure that SSH and Jupyter are working properly.

Use the CLI (preferred) #

The preferred method of testing your own machine is to run the CLI. For Windows users, we suggest setting up WSL which will require you to install Ubuntu on your Windows machine and change your bios settings to allow virtualization. Then you can start an Ubuntu terminal and run the CLI.

To rent your own machine you will need to first search the offers with your machine ID to find the ID and then create an instance using that ID. The show machine command will show all your connected machines.

./vast show machines

Then for each machine id you will need to find the available instance IDs.

./vast search offers 'machine_id = <machine ID>'

You can see the number of available listings as well as information about the machine. This is the fastest way to also see all the offers listed for a given machine. The website GUI stacks similar offers and so it is not easy to see all the listings for a given machine. That is not a problem for the CLI.

Take the ID number from the first column and use that to create a free instance on your own machine. This example loads the latest pytorch image along with both jupyter and ssh direct launch modes.

./vast create instance <ID> --image pytorch/pytorch:latest --jupyter --direct --env '-e TZ=PDT -p 22:22 -p 8080:8080'

You can then look at your instance tab to make sure that pytorch loaded correctly along with jupyter and ssh. Click on the <_ button to get the ssh command to connect to the instance. Test the direct ssh command. Click on the open button to test jupyter. If the button is stuck "connecting" then there is most likely a problem with the port configuration on the router in front of the machine. Once finished, destroy the instance.

Maintenance #

The proper way to perform maintenance on your machine is to wait until all active contracts have expired or the machine is vacant.

Unlisting will prevent new contracts from starting on the machine. However if you have a current client rental, you could set the end date to the client end date to allow for other clients to create instances on that machine that expire at the same date. Once the end date is reached, you can then unlist the machine and then perform maintenance.

For unplanned or unscheduled maintenance, use the CLI and the schedule maint command. That will notify the client that you have to take the machine down and that they should save their work. You can specify a date and duration.