OnnxScoringEstimator Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
IEstimator<TTransformer> para pontuar modelos ONNX na estrutura ML.NET.
public sealed class OnnxScoringEstimator : Microsoft.ML.Data.TrivialEstimator<Microsoft.ML.Transforms.Onnx.OnnxTransformer>
type OnnxScoringEstimator = class
inherit TrivialEstimator<OnnxTransformer>
Public NotInheritable Class OnnxScoringEstimator
Inherits TrivialEstimator(Of OnnxTransformer)
- Herança
Comentários
Características do estimador
Esse estimador precisa examinar os dados para treinar seus parâmetros? | No |
Tipo de dados de coluna de entrada | Vetor de tamanho conhecido ou SingleDouble tipos |
Tipo de dados de coluna de saída | Conforme especificado pelo modelo ONNX |
NuGet necessário além de Microsoft.ML | Microsoft.ML.OnnxTransformer (sempre), Microsoft.ML.OnnxRuntime 1.6.0 (para processamento de CPU) ou Microsoft.ML.OnnxRuntime.Gpu 1.6.0 (para processamento de GPU se a GPU estiver disponível) |
Exportável para ONNX | No |
Para criar esse estimador, use as seguintes APIs: ApplyOnnxModel
Dá suporte à inferência de modelos no formato ONNX 1.6 (opset 11), usando a biblioteca Microsoft.ML.OnnxRuntime . Os modelos serão pontuados na CPU se o projeto fizer referência a Microsoft.ML.OnnxRuntime e à GPU se o projeto fizer referência a Microsoft.ML.OnnxRuntime.Gpu. Cada projeto que usa o OnnxScoringEstimator deve fazer referência a um dos dois pacotes acima.
Para executar em uma GPU, use o pacote NuGet Microsoft.ML.OnnxRuntime.Gpu em vez do nuget Microsoft.ML.OnnxRuntime (que é para processamento de CPU). O Microsoft.ML.OnnxRuntime.Gpu requer uma GPU compatível com CUDA, o Kit de Ferramentas CUDA 10.2 e cuDNN 8.0.3 (conforme indicado na documentação do Onnxruntime). Ao criar o estimador por meio de ApplyOnnxModel, defina o parâmetro 'gpuDeviceId' como um inteiro não negativo válido. Os valores típicos de ID do dispositivo são 0 ou 1. Se o dispositivo GPU não for encontrado, mas 'fallbackToCpu = true', o estimador será executado na CPU. Se o dispositivo GPU não for encontrado, mas 'fallbackToCpu = false', o estimador lançará uma exceção
As entradas e saídas dos modelos ONNX devem ser do tipo Tensor. Ainda não há suporte para Sequência e Mapas.
Internamente, OnnxTransformer (o valor retornado de OnnxScoringEstimator.Fit()) mantém uma referência a uma sessão de inferência que aponta para a memória não gerenciada de propriedade de OnnxRuntime.dll. Sempre que houver uma chamada para ApplyOnnxModel em um pipeline, é recomendável converter o valor retornado da chamada Fit() para IDisposable e chamar Dispose() para garantir que não haja vazamentos de memória.
O OnnxRuntime funciona em plataformas Windows, MacOS e Ubuntu 16.04 Linux de 64 bits. Visite modelos ONNX para ver uma lista de modelos prontamente disponíveis para começar. Consulte ONNX para obter mais informações.
Métodos
Fit(IDataView) |
IEstimator<TTransformer> para pontuar modelos ONNX na estrutura ML.NET. (Herdado de TrivialEstimator<TTransformer>) |
GetOutputSchema(SchemaShape) |
Retorna o SchemaShape esquema que será produzido pelo transformador. Usado para propagação e verificação de esquema em um pipeline. |
Métodos de Extensão
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
Acrescente um "ponto de verificação de cache" à cadeia de estimativas. Isso garantirá que os estimadores downstream serão treinados em relação aos dados armazenados em cache. É útil ter um ponto de verificação de cache antes dos treinadores que fazem várias passagens de dados. |
WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
Dado um estimador, retorne um objeto de encapsulamento que chamará um delegado uma vez Fit(IDataView) chamado. Geralmente, é importante que um estimador retorne informações sobre o que estava em forma, e é por isso que o Fit(IDataView) método retorna um objeto especificamente tipado, em vez de apenas um geral ITransformer. No entanto, ao mesmo tempo, IEstimator<TTransformer> muitas vezes são formados em pipelines com muitos objetos, portanto, talvez seja necessário construir uma cadeia de estimadores por meio EstimatorChain<TLastTransformer> de onde o estimador para o qual queremos que o transformador seja enterrado em algum lugar nesta cadeia. Para esse cenário, podemos por meio desse método anexar um delegado que será chamado quando fit for chamado. |