Deploy/Run/Execute a simulation
Now that you have authored & built your simulation, it's now time to run or deploy it.
We see three use cases for simulation deployments:
1. Deploy locally to run individual tests and visualizations
After creating the simulation in Unity you can turn it into a local build. We will walk through how to create this independent executable that will run the simulation instance. You can optionally connect to multiple GPUs for distributed rendering if the scene has complex geometry or you need multiple display outputs - but you will need to have access to all the computing locally.
- Share this simulation with other members of your team to use locally
- Visualize live results in the simulator as they happen.
- Interact with the simulation in real-time (e.g. flight or driving simulators).
2. Deploy to servers for continuous integration testing
Simulation can provide a virtual world that can be used to test software. Often times users want to have the software tested against this simulation in a continuous integration context. In this guide, we'll walk through how to optimize the build and deploy the system to a tool like Jenkins, CircleCI, or GithubActions.
- Test software changes against 100s of simulated scenarios on nightly builds.
- Smoke test individual changes against a few simple runs to make sure the obvious stuff works together.
- Identify metrics and only try changes on real devices that are likely to cause positive results by trying many scenarios first.
You can optionally distribute the compute across multiple compute nodes. The servers you deploy to can be your own private servers or on a public or private cloud.
3. Deploy to servers for an ML pipeline
Simulation can be used to generate synthetic data for machine learning systems. Often times this data augments real data in places where data generation is difficult or expensive. These ML pipelines can be purely outputs of data (images and their labeled counterparts) or they can have actions in the loop from a human or software system for Reinforcement Learning.
You can optionally distribute the compute across multiple compute nodes. The servers you deploy to can be your own private servers or on a public or private cloud.
What tools does Unity provide for deploying simulations?
We have two key components that help you unlock the true power of scalable simulations in a server farm, be it cloud or on-prem.
- Optimize deployments with the Linux Headless Simulation Platform Binary.
- Distribute the compute with the Distributed Rendering Unity Package.
Tip
You are not required to use these together.
They work fine independent of each other as well. If for some reason, you do not need to distribute your rendering, but just need headless mode in your Linux server environment, feel free to use the corresponding module listed in this page. And conversely, if you'd rather just have distributed rendering, and you are fine with actually rendering to an OS-based windowing system for graphics output to render frames, you can opt for just the distributed rendering module