modelEvaluateRecurrentNeuralNet
Extends from BaseClasses.BaseRecurrentNeuralNet.
Information
Use this block if you want to include a recurrent neural network in Modelica.
Please place this block in your model and
- give the path to the TFLite/ONNX model
- specify the number of inputs
- specify the sampling interval and how many elements from previous times should be fed into the net
- provide the values for the input of the block and use the outputs in the same manner as it was done during training
In continuous mode the historic values are generated by a delay. You could choose between the computational improved Clara-Delay and the delay in the Modelica-Standard-Library. If continuous is deactivated the model will create an event when reaching the sampling time - this should be avoided for performance reasons.
As tensorflow lite uses a flattened input array, you have to specify the flattening method. In the standard tensorflow setting you have to use the predefined option OldFirstInputSequential.
The example TF_PI_RNN_tflite uses this block.
TensorFlow Lite FlexOps
To use FlexOps with the TensorFlow Lite runtime, additional dynamic libraries must be provided in the SMArtInt library resources. Follow the steps below:
-
Copy the appropriate FlexOps library into the corresponding platform folder
(
win64orlinux64) inside the Resources Library folder:- Windows:
tensorflowlite_flex.dll - Linux:
libtensorflowlite_flex.so
- Windows:
- Activate TensorFlow Lite FlexOps usage in the model parameter dialog.
CUDA GPU Support for ONNX Runtime
To use ONNX Runtime with GPU acceleration, CUDA must be installed on the operating system (tested with CUDA version 13.0), and a CUDA-compatible GPU must be available. In addition, the required ONNX Runtime GPU provider libraries must be provided in the SMArtInt library resources. Follow the steps below:
-
Download the ONNX Runtime build with GPU support from:
ONNX Runtime v1.23.2 Release -
Select and extract the appropriate package for your operating system:
- Windows:
onnxruntime-win-x64-gpu-1.23.2.zip - Linux:
onnxruntime-linux-x64-gpu-1.23.2.tgz
- Windows:
-
Copy the required provider libraries into the corresponding platform folder
(
win64orlinux64) inside the Resources Library folder:onnxruntime_providers_cuda.dll/.soonnxruntime_providers_shared.dll/.so
- Activate GPU usage in the model parameter dialog.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Integer | nInputElements (from BaseNeuralNet) | product(inputSizes) | |
| Integer | nOutputElements (from BaseNeuralNet) | product(outputSizes) | |
| Selected Model | |||
| String | pathToAIModel (from BaseNeuralNet) | "" | Choose path to AI model |
| Tensor sizing | |||
| Integer | inputDimensions (from BaseNeuralNet) | 1 | Number of input dimension |
| Integer | inputSizes (from BaseNeuralNet) | {1} | Vector with size of tensor in each dimension |
| Integer | outputDimensions (from BaseNeuralNet) | 1 | Number of output dimension |
| Integer | outputSizes (from BaseNeuralNet) | {1} | Vector with size of tensor in each dimension |
| RNN Timing Settings | |||
| Boolean | stateful (from BaseNeuralNet) | false | Activate state handling for RNN with state in-/outputs |
| Real | samplePeriod (from BaseNeuralNet) | 0 | Fixed sample period for RNNs |
| Integer | nHistoricElements (from BaseRecurrentNeuralNet) | 10 | Number of elements from sampling steps for each input fed to the neural net |
| Boolean | continuous (from BaseRecurrentNeuralNet) | false | =true: model operates continuously; input values are delayed |
| Boolean | useClaRaDelay (from BaseRecurrentNeuralNet) | true | Use the ClaRa delay instead of MSL delay |
| Advanced › Performance | |||
| Integer | numberOfThreads (from BaseNeuralNet) | 1 | Number of threads used for inference (0: Number of CPU cores) |
| Advanced › TFLite | |||
| Boolean | useFlexOps (from BaseNeuralNet) | false | Activate to allow Tensorflow Flex Ops for tflite models |
| Advanced › ONNX | |||
| Boolean | useGPU (from BaseNeuralNet) | false | Activate to use a compatible CUDA GPU for inference |
| Integer | gpuDeviceID (from BaseNeuralNet) | 0 | CUDA device ID |
| SMArtInt.Internal.Types.ExecutionMode | executionMode (from BaseNeuralNet) | SMArtInt.Internal.Types.ExecutionMode.Sequential | Execution mode for run inference |
| Input/Output Sizing | |||
| Integer | numberOfInputs (from BaseRecurrentNeuralNet) | 1 | Number of input values |
| Integer | numberOfOutputs (from BaseRecurrentNeuralNet) | 1 | Number of output values |
| Integer | batchSize (from BaseRecurrentNeuralNet) | 1 | Number of parallel batched simulations |
| Boolean | returnSequences (from BaseRecurrentNeuralNet) | false | |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Blocks.Interfaces.RealInput[batchSize,numberOfInputs] | u | ||
| Modelica.Blocks.Interfaces.RealOutput[batchSize,numberOfOutputs] | y | ||
| Modelica.Blocks.Interfaces.RealOutput[batchSize,numberOfOutputs,nHistoricElements] | ySequences |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Internal.Utilities.Dependencies.OnnxGpuDependencies | onnxGpuDependencies (from BaseNeuralNet) | ||
| Internal.Utilities.Dependencies.TFFlexOpsDependencies | tFFlexOpsDependencies (from BaseNeuralNet) | ||
| Internal.Utilities.RunInterferenceRNN | runInterferenceHistory (from BaseRecurrentNeuralNet) |