| # Unity Inference Engine |
|
|
| The ML-Agents Toolkit allows you to use pre-trained neural network models inside |
| your Unity games. This support is possible thanks to the |
| [Unity Inference Engine](https://docs.unity3d.com/Packages/com.unity.barracuda@latest/index.html) |
| (codenamed Barracuda). The Unity Inference Engine uses |
| [compute shaders](https://docs.unity3d.com/Manual/class-ComputeShader.html) to |
| run the neural network within Unity. |
|
|
| ## Supported devices |
|
|
| See the Unity Inference Engine documentation for a list of the |
| [supported platforms](https://docs.unity3d.com/Packages/com.unity.barracuda@latest/index.html#supported-platforms). |
|
|
| Scripting Backends : The Unity Inference Engine is generally faster with |
| **IL2CPP** than with **Mono** for Standalone builds. In the Editor, It is not |
| possible to use the Unity Inference Engine with GPU device selected when Editor |
| Graphics Emulation is set to **OpenGL(ES) 3.0 or 2.0 emulation**. Also there |
| might be non-fatal build time errors when target platform includes Graphics API |
| that does not support **Unity Compute Shaders**. |
|
|
| ## Using the Unity Inference Engine |
|
|
| When using a model, drag the model file into the **Model** field in the |
| Inspector of the Agent. Select the **Inference Device** : CPU or GPU you want to |
| use for Inference. |
|
|
| **Note:** For most of the models generated with the ML-Agents Toolkit, CPU will |
| be faster than GPU. You should use the GPU only if you use the ResNet visual |
| encoder or have a large number of agents with visual observations. |
|
|
| # Unsupported use cases |
| ## Externally trained models |
| The ML-Agents Toolkit only supports the models created with our trainers. Model |
| loading expects certain conventions for constants and tensor names. While it is |
| possible to construct a model that follows these conventions, we don't provide |
| any additional help for this. More details can be found in |
| [TensorNames.cs](https://github.com/Unity-Technologies/ml-agents/blob/release_20_docs/com.unity.ml-agents/Runtime/Inference/TensorNames.cs) |
| and |
| [BarracudaModelParamLoader.cs](https://github.com/Unity-Technologies/ml-agents/blob/release_20_docs/com.unity.ml-agents/Runtime/Inference/BarracudaModelParamLoader.cs). |
|
|
| If you wish to run inference on an externally trained model, you should use |
| Barracuda directly, instead of trying to run it through ML-Agents. |
|
|
| ## Model inference outside of Unity |
| We do not provide support for inference anywhere outside of Unity. The `.onnx` files produced by training use the open format ONNX; if you wish to convert a `.onnx` file to another |
| format or run inference with them, refer to their documentation. |
|
|