Class ManagedOnnxEngine

Namespace
NT2I.ONNX.Architectures.ONNX
Assembly
NT2I.ONNX.Architectures.dll

Fournit une surcouche managée de haut niveau pour OnnxEngine, simplifiant la gestion des tenseurs (OrtValue) et offrant des méthodes directes pour manipuler les données CPU et GPU.

public class ManagedOnnxEngine : IManagedOnnxEngine, IDisposable
Inheritance
ManagedOnnxEngine
Implements
Inherited Members

Constructors

ManagedOnnxEngine()

Initialise une nouvelle instance de la classe ManagedOnnxEngine.

public ManagedOnnxEngine()

ManagedOnnxEngine(IOnnxSessionOptions)

Initialise une nouvelle instance de la classe ManagedOnnxEngine avec les options de session spécifiées.

public ManagedOnnxEngine(IOnnxSessionOptions options)

Parameters

options IOnnxSessionOptions

Les options pour configurer la session ONNX Runtime.

Properties

IsInitialized

Obtient une valeur indiquant si le moteur a été initialisé.

public bool IsInitialized { get; }

Property Value

bool

IsRunning

Obtient une valeur indiquant si une inférence est actuellement en cours.

public bool IsRunning { get; }

Property Value

bool

Methods

CleanModelFolder()

Nettoie le dossier contenant les modèles extraits (si applicable).

public void CleanModelFolder()

CleanProfilingFile()

Supprime le fichier de profilage généré par la session (si applicable).

public void CleanProfilingFile()

ClearInput()

Efface toutes les données d'entrée précédemment définies.

public void ClearInput()

Dispose()

Libère les ressources utilisées par le moteur ONNX.

public void Dispose()

GetAllOutputData<T>()

Récupère les données de tous les nœuds de sortie du modèle.

public Dictionary<string, T[]> GetAllOutputData<T>() where T : unmanaged

Returns

Dictionary<string, T[]>

Un dictionnaire contenant les données de chaque sortie, avec le nom du nœud comme clé.

Type Parameters

T

Le type des données de sortie (doit être non managé).

GetAllOutputData<T>(out Dictionary<string, T[]>)

Récupère les données de tous les nœuds de sortie du modèle.

public void GetAllOutputData<T>(out Dictionary<string, T[]> outputDatas) where T : unmanaged

Parameters

outputDatas Dictionary<string, T[]>

Un dictionnaire qui contiendra les données de chaque sortie, avec le nom du nœud comme clé.

Type Parameters

T

Le type des données de sortie (doit être non managé).

GetAllUniformBatchOutputData<T>()

Récupère les données de tous les nœuds de sortie et les structure en formats de batch uniformes.

public Dictionary<string, SpanUniformBatchOutput<T>> GetAllUniformBatchOutputData<T>() where T : unmanaged

Returns

Dictionary<string, SpanUniformBatchOutput<T>>

Un dictionnaire contenant les sorties structurées en batch de chaque nœud.

Type Parameters

T

Le type des données de sortie (doit être non managé).

GetAllUniformBatchOutputData<T>(out Dictionary<string, SpanUniformBatchOutput<T>>)

Récupère les données de tous les nœuds de sortie et les structure en formats de batch uniformes.

public void GetAllUniformBatchOutputData<T>(out Dictionary<string, SpanUniformBatchOutput<T>> outputDatas) where T : unmanaged

Parameters

outputDatas Dictionary<string, SpanUniformBatchOutput<T>>

Un dictionnaire qui contiendra les sorties structurées en batch de chaque nœud.

Type Parameters

T

Le type des données de sortie (doit être non managé).

GetInputDimensions(int)

Récupère les dimensions d'un nœud d'entrée à partir de son index.

public IReadOnlyCollection<long> GetInputDimensions(int inputIndex = 0)

Parameters

inputIndex int

L'index du nœud d'entrée (par défaut 0).

Returns

IReadOnlyCollection<long>

Une collection en lecture seule des dimensions de l'entrée.

GetInputDimensions(string)

Récupère les dimensions d'un nœud d'entrée à partir de son nom.

public IReadOnlyCollection<long> GetInputDimensions(string inputName)

Parameters

inputName string

Le nom du nœud d'entrée.

Returns

IReadOnlyCollection<long>

Une collection en lecture seule des dimensions de l'entrée.

GetInputNames()

Récupère les noms des nœuds d'entrée du modèle.

public IReadOnlyDictionary<int, string>? GetInputNames()

Returns

IReadOnlyDictionary<int, string>

Un dictionnaire en lecture seule associant l'index de l'entrée à son nom.

GetOutputData<T>(int)

Récupère les données de sortie brutes pour un nœud de sortie spécifié par son index.

public T[] GetOutputData<T>(int outputIndex = 0) where T : unmanaged

Parameters

outputIndex int

L'index du nœud de sortie.

Returns

T[]

Un tableau contenant les données de sortie.

Type Parameters

T

Le type des données de sortie (doit être non managé).

GetOutputData<T>(string)

Récupère les données de sortie brutes pour un nœud de sortie spécifié.

public T[] GetOutputData<T>(string outputName) where T : unmanaged

Parameters

outputName string

Le nom du nœud de sortie.

Returns

T[]

Un tableau contenant les données de sortie.

Type Parameters

T

Le type des données de sortie (doit être non managé).

GetOutputData<T>(out T[], int)

Récupère les données de sortie brutes pour un nœud de sortie spécifié par son index.

public void GetOutputData<T>(out T[] outputData, int outputIndex = 0) where T : unmanaged

Parameters

outputData T[]

Le tableau qui contiendra les données de sortie.

outputIndex int

L'index du nœud de sortie.

Type Parameters

T

Le type des données de sortie (doit être non managé).

GetOutputData<T>(out T[], string)

Récupère les données de sortie brutes pour un nœud de sortie spécifié et les copie dans un tableau CPU.

public void GetOutputData<T>(out T[] outputData, string outputName) where T : unmanaged

Parameters

outputData T[]

Le tableau qui contiendra les données de sortie.

outputName string

Le nom du nœud de sortie.

Type Parameters

T

Le type des données de sortie (doit être non managé).

GetOutputDimensions(int)

Récupère les dimensions d'un nœud de sortie à partir de son index.

public IReadOnlyCollection<long> GetOutputDimensions(int outputIndex = 0)

Parameters

outputIndex int

L'index du nœud de sortie (par défaut 0).

Returns

IReadOnlyCollection<long>

Une collection en lecture seule des dimensions de la sortie.

GetOutputDimensions(string)

Récupère les dimensions d'un nœud de sortie à partir de son nom.

public IReadOnlyCollection<long> GetOutputDimensions(string outputName)

Parameters

outputName string

Le nom du nœud de sortie.

Returns

IReadOnlyCollection<long>

Une collection en lecture seule des dimensions de la sortie.

GetOutputNames()

Récupère les noms des nœuds de sortie du modèle.

public IReadOnlyDictionary<int, string> GetOutputNames()

Returns

IReadOnlyDictionary<int, string>

Un dictionnaire en lecture seule associant l'index de la sortie à son nom.

GetUniformBatchOutputData<T>(out SpanUniformBatchOutput<T>, int)

Récupère les données de sortie par index et les structure dans un format de batch uniforme.

public void GetUniformBatchOutputData<T>(out SpanUniformBatchOutput<T> OutputDatas, int outputIndex = 0) where T : unmanaged

Parameters

OutputDatas SpanUniformBatchOutput<T>

L'objet qui contiendra la sortie structurée en batch.

outputIndex int

L'index du nœud de sortie.

Type Parameters

T

Le type des données de sortie (doit être non managé).

GetUniformBatchOutputData<T>(out SpanUniformBatchOutput<T>, string)

Récupère les données de sortie et les structure dans un format de batch uniforme.

public void GetUniformBatchOutputData<T>(out SpanUniformBatchOutput<T> OutputDatas, string outputName) where T : unmanaged

Parameters

OutputDatas SpanUniformBatchOutput<T>

L'objet qui contiendra la sortie structurée en batch.

outputName string

Le nom du nœud de sortie.

Type Parameters

T

Le type des données de sortie (doit être non managé).

GetUniformBatchOutputData<T>(int)

Récupère les données de sortie par index et les structure dans un format de batch uniforme.

public SpanUniformBatchOutput<T> GetUniformBatchOutputData<T>(int outputIndex = 0) where T : unmanaged

Parameters

outputIndex int

L'index du nœud de sortie.

Returns

SpanUniformBatchOutput<T>

Un objet SpanUniformBatchOutput<T> contenant la sortie structurée.

Type Parameters

T

Le type des données de sortie (doit être non managé).

GetUniformBatchOutputData<T>(string)

Récupère les données de sortie et les structure dans un format de batch uniforme.

public SpanUniformBatchOutput<T> GetUniformBatchOutputData<T>(string outputName) where T : unmanaged

Parameters

outputName string

Le nom du nœud de sortie.

Returns

SpanUniformBatchOutput<T>

Un objet SpanUniformBatchOutput<T> contenant la sortie structurée.

Type Parameters

T

Le type des données de sortie (doit être non managé).

Initialize(IOnnxSessionOptions)

Initialise le moteur d'inférence avec les options de session fournies.

public void Initialize(IOnnxSessionOptions options)

Parameters

options IOnnxSessionOptions

Les options pour configurer la session ONNX Runtime.

InitializeAsync(IOnnxSessionOptions, CancellationToken)

Initialise le moteur de manière asynchrone (le travail synchrone d'ORT est offload sur un thread du ThreadPool).

public Task InitializeAsync(IOnnxSessionOptions options, CancellationToken cancellationToken = default)

Parameters

options IOnnxSessionOptions

Les options pour configurer la session ONNX Runtime.

cancellationToken CancellationToken

Jeton d'annulation.

Returns

Task

RunInference(bool)

Exécute l'inférence sur les données d'entrée actuellement définies.

public void RunInference(bool clearInputAfterRun = true)

Parameters

clearInputAfterRun bool

Si vrai, efface les entrées après l'exécution pour libérer la mémoire.

RunInferenceAsync(bool, CancellationToken)

Exécute l'inférence de manière asynchrone.

public Task RunInferenceAsync(bool clearInputAfterRun = true, CancellationToken cancellationToken = default)

Parameters

clearInputAfterRun bool

Si vrai, efface les entrées après l'exécution.

cancellationToken CancellationToken

Le jeton d'annulation.

Returns

Task

Une tâche représentant l'opération asynchrone.

SetInputData<T>(T[], int, long[])

Définit les données d'entrée pour le modèle ONNX à partir d'un buffer CPU, en utilisant l'index de l'entrée.

public void SetInputData<T>(T[] inputData, int inputIndex, long[] inputDimensions) where T : unmanaged

Parameters

inputData T[]

Le tableau de données d'entrée.

inputIndex int

L'index du nœud d'entrée.

inputDimensions long[]

Les dimensions du tenseur d'entrée. La première dimension doit être la taille du batch.

Type Parameters

T

Le type des données (doit être non managé).

SetInputData<T>(T[], string, long[])

Définit les données d'entrée pour le modèle ONNX à partir d'un buffer CPU.

public void SetInputData<T>(T[] inputData, string inputName, long[] inputDimensions) where T : unmanaged

Parameters

inputData T[]

Le tableau de données d'entrée.

inputName string

Le nom du nœud d'entrée du modèle.

inputDimensions long[]

Les dimensions du tenseur d'entrée. La première dimension doit être la taille du batch.

Type Parameters

T

Le type des données (doit être non managé).

SetInputData<T>(T[][], int, long[][])

Définit les données d'entrée pour le modèle ONNX à partir d'un batch de données, en utilisant l'index de l'entrée.

Attention : Les données doivent être préalablement préparées pour l'inférence.

public void SetInputData<T>(T[][] inputBatch, int inputIndex, long[][] inputDimensions) where T : unmanaged

Parameters

inputBatch T[][]

Tableau contenant les données pour chaque échantillon du batch.

inputIndex int

Index de l'entrée du modèle ONNX.

inputDimensions long[][]

Tableau des dimensions pour chaque échantillon du batch.

Type Parameters

T

Type des données d'entrée (doit être non managé).

Remarks

Cette méthode délègue l'appel à la surcharge prenant le nom de l'entrée en paramètre.

Exceptions

ArgumentException

Lancée si le batch est null, vide, ou si les échantillons n'ont pas tous la même taille.

SetInputData<T>(T[][], string, long[][])

Définit les données d'entrée pour le modèle ONNX à partir d'un batch de données.

Attention : Les données doivent être préalablement préparées pour l'inférence et donc de taille identique.

public void SetInputData<T>(T[][] inputBatch, string inputName, long[][] inputDimensions) where T : unmanaged

Parameters

inputBatch T[][]

Tableau contenant les données pour chaque échantillon du batch.

inputName string

Nom de l'entrée du modèle ONNX.

inputDimensions long[][]

Tableau des dimensions pour chaque échantillon du batch.

Type Parameters

T

Type des données d'entrée (doit être non managé).

Remarks

Cette méthode combine les données du batch en un seul tableau contigu.

Exceptions

ArgumentException

Lancée si le batch est null, vide, ou si les échantillons n'ont pas tous la même taille.

SetInputFromGpuPointer<T>(nint, int, long[])

Définit les données d'entrée à partir d'un pointeur de mémoire GPU (CUDA), en utilisant l'index de l'entrée.

public void SetInputFromGpuPointer<T>(nint gpuDataPtr, int inputIndex, long[] inputDimensions) where T : unmanaged

Parameters

gpuDataPtr nint

Le pointeur vers les données sur le GPU.

inputIndex int

L'index du nœud d'entrée.

inputDimensions long[]

Les dimensions du tenseur d'entrée. La première dimension doit être la taille du batch.

Type Parameters

T

Le type des données (doit être non managé).

SetInputFromGpuPointer<T>(nint, string, long[])

Définit les données d'entrée à partir d'un pointeur de mémoire GPU (CUDA).

public void SetInputFromGpuPointer<T>(nint gpuDataPtr, string inputName, long[] inputDimensions) where T : unmanaged

Parameters

gpuDataPtr nint

Le pointeur vers les données sur le GPU.

inputName string

Le nom du nœud d'entrée du modèle.

inputDimensions long[]

Les dimensions du tenseur d'entrée. La première dimension doit être la taille du batch.

Type Parameters

T

Le type des données (doit être non managé).

WarmUp(int, int)

Exécute des inférences à blanc pour préchauffer le moteur et allouer les ressources nécessaires.

public void WarmUp(int batchSize = 1, int iterations = 1)

Parameters

batchSize int

La taille de batch à utiliser pour le préchauffage des entrées dynamiques.

iterations int

Nombre d'itérations de préchauffage (défaut 1).

WarmUpAsync(int, int, CancellationToken)

Exécute de manière asynchrone des inférences à blanc pour préchauffer le moteur.

public Task WarmUpAsync(int batchSize = 1, int iterations = 1, CancellationToken cancellationToken = default)

Parameters

batchSize int

La taille de batch à utiliser pour le préchauffage.

iterations int

Nombre d'itérations de préchauffage (défaut 1).

cancellationToken CancellationToken

Le jeton d'annulation.

Returns

Task

Une tâche représentant l'opération asynchrone.