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
optionsIOnnxSessionOptionsLes 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
IsRunning
Obtient une valeur indiquant si une inférence est actuellement en cours.
public bool IsRunning { get; }
Property Value
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
TLe 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
outputDatasDictionary<string, T[]>Un dictionnaire qui contiendra les données de chaque sortie, avec le nom du nœud comme clé.
Type Parameters
TLe 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
TLe 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
outputDatasDictionary<string, SpanUniformBatchOutput<T>>Un dictionnaire qui contiendra les sorties structurées en batch de chaque nœud.
Type Parameters
TLe 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
inputIndexintL'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
inputNamestringLe 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
outputIndexintL'index du nœud de sortie.
Returns
- T[]
Un tableau contenant les données de sortie.
Type Parameters
TLe 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
outputNamestringLe nom du nœud de sortie.
Returns
- T[]
Un tableau contenant les données de sortie.
Type Parameters
TLe 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
outputDataT[]Le tableau qui contiendra les données de sortie.
outputIndexintL'index du nœud de sortie.
Type Parameters
TLe 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
outputDataT[]Le tableau qui contiendra les données de sortie.
outputNamestringLe nom du nœud de sortie.
Type Parameters
TLe 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
outputIndexintL'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
outputNamestringLe 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
OutputDatasSpanUniformBatchOutput<T>L'objet qui contiendra la sortie structurée en batch.
outputIndexintL'index du nœud de sortie.
Type Parameters
TLe 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
OutputDatasSpanUniformBatchOutput<T>L'objet qui contiendra la sortie structurée en batch.
outputNamestringLe nom du nœud de sortie.
Type Parameters
TLe 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
outputIndexintL'index du nœud de sortie.
Returns
- SpanUniformBatchOutput<T>
Un objet SpanUniformBatchOutput<T> contenant la sortie structurée.
Type Parameters
TLe 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
outputNamestringLe nom du nœud de sortie.
Returns
- SpanUniformBatchOutput<T>
Un objet SpanUniformBatchOutput<T> contenant la sortie structurée.
Type Parameters
TLe 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
optionsIOnnxSessionOptionsLes 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
optionsIOnnxSessionOptionsLes options pour configurer la session ONNX Runtime.
cancellationTokenCancellationTokenJeton d'annulation.
Returns
RunInference(bool)
Exécute l'inférence sur les données d'entrée actuellement définies.
public void RunInference(bool clearInputAfterRun = true)
Parameters
clearInputAfterRunboolSi 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
clearInputAfterRunboolSi vrai, efface les entrées après l'exécution.
cancellationTokenCancellationTokenLe 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
inputDataT[]Le tableau de données d'entrée.
inputIndexintL'index du nœud d'entrée.
inputDimensionslong[]Les dimensions du tenseur d'entrée. La première dimension doit être la taille du batch.
Type Parameters
TLe 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
inputDataT[]Le tableau de données d'entrée.
inputNamestringLe nom du nœud d'entrée du modèle.
inputDimensionslong[]Les dimensions du tenseur d'entrée. La première dimension doit être la taille du batch.
Type Parameters
TLe 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
inputBatchT[][]Tableau contenant les données pour chaque échantillon du batch.
inputIndexintIndex de l'entrée du modèle ONNX.
inputDimensionslong[][]Tableau des dimensions pour chaque échantillon du batch.
Type Parameters
TType 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
inputBatchT[][]Tableau contenant les données pour chaque échantillon du batch.
inputNamestringNom de l'entrée du modèle ONNX.
inputDimensionslong[][]Tableau des dimensions pour chaque échantillon du batch.
Type Parameters
TType 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
gpuDataPtrnintLe pointeur vers les données sur le GPU.
inputIndexintL'index du nœud d'entrée.
inputDimensionslong[]Les dimensions du tenseur d'entrée. La première dimension doit être la taille du batch.
Type Parameters
TLe 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
gpuDataPtrnintLe pointeur vers les données sur le GPU.
inputNamestringLe nom du nœud d'entrée du modèle.
inputDimensionslong[]Les dimensions du tenseur d'entrée. La première dimension doit être la taille du batch.
Type Parameters
TLe 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
batchSizeintLa taille de batch à utiliser pour le préchauffage des entrées dynamiques.
iterationsintNombre 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
batchSizeintLa taille de batch à utiliser pour le préchauffage.
iterationsintNombre d'itérations de préchauffage (défaut 1).
cancellationTokenCancellationTokenLe jeton d'annulation.
Returns
- Task
Une tâche représentant l'opération asynchrone.