| # 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. | |