Microsoft ONNX Runtime 1.14 lançado com grande otimização de desempenho Intel AMX

Microsoft ONNX Runtime 1.14 lançado com grande otimização de desempenho Intel AMX

O recurso Microsoft ONNX Runtime 1.14 acaba de ser lançado com uma grande otimização de desempenho Intel AMX. A Microsoft lançou na sexta-feira a versão 1.14 de seu ONNX Runtime. Este é um acelerador de treinamento e inferência de aprendizado de máquina de plataforma cruzada e de alto desempenho.

Com ONNX Runtime 1.14, ele adiciona suporte para ONNX 1.13, que é o padrão definido para interoperabilidade de aprendizado de máquina. Já o ONNX 1.13 lançado em dezembro veio com suporte a Python 3.11, suporte ao processador Apple Silicon M1/M2, novas operadoras, extensões para operadoras existentes e outros aprimoramentos.

O ONNX Runtime 1.14 também possui melhorias em relação ao encadeamento e torna seu pool de encadeamento ORT agora com reconhecimento de NUMA, uma refatoração do provedor de execução multistream, melhorias de desempenho NVIDIA CUDA EP e melhorias de desempenho para vários operadores.

Microsoft ONNX Runtime 1.14 lançado com grande otimização de desempenho Intel AMX

Tempo de execução ONNX

Na frente do desempenho, uma das mudanças mais empolgantes é o suporte para quantização com Advanced Matrix Extensions (AMX) para os novos processadores Intel Xeon Scalable “Sapphire Rapids” de 4ª geração. O ONNX Runtime já pode ser construído com a biblioteca oneDNN da Intel que suporta AMX (usando o argumento –use_dnnl build para o ONNX Runtime), enquanto com o ONNX Runtime 1.14 há suporte para fazer uso de instruções AMX diretamente como parte do código de quantização. 

Este commit mostra os grandes aumentos de velocidade do AMX no código GEMM quantizado em comparação com o uso apenas do AVX-512 VNNI.

As instruções AMX aceleram o GEMM quantizado significativamente:

Números de perf B pré-empacotados (latência em ns)

GEMM Config | AVX512Vnni | AMX– | –: | –:M:384/N:1024/K:1024/Lote:1/Fios:4 | 1057511 | 285393M:384/N:1024/K:3072/Lote:1/Fios:4 | 2643929 | 700397M:384/N:1024/K:4096/Lote:1/Fios:4 | 3784750 | 890701M:384/N:4096/K:1024/Lote:1/Fios:4 | 2378139 | 887251M:384/N:1024/K:1024/Lote:1/Fios:16 | 307137 | 138481M:384/N:1024/K:3072/Lote:1/Fios:16 | 855730 | 295027M:384/N:1024/K:4096/Lote:1/Fios:16 | 1126878 | 317395M:384/N:4096/K:1024/Lote:1/Fios:16 | 781963 | 237014M:1536/N:1024/K:1024/Lote:1/Fios:16 | 538864 | 181459M:1536/N:1024/K:3072/Lote:1/Fios:16 | 1681002 | 561600M:1536/N:1024/K:4096/Lote:1/Fios:16 | 2158127 | 717470M:1536/N:4096/K:1024/Lote:1/Fios:16 | 2428622 | 896140M:3072/N:1024/K:1024/Lote:1/Fios:16 | 1058029 | 357031M:3072/N:1024/K:3072/Lote:1/Fios:16 | 3138504 | 1095857M:3072/N:1024/K:4096/Lote:1/Fios:16 | 4155640 | 1386183M:3072/N:4096/K:1024/Lote:1/Fios:16 | 4679030 | 1778624

Caso você tenha perdido meu artigo de benchmark Sapphire Rapids AMX algumas semanas atrás, consulte Intel Advanced Matrix Extensions [AMX] Performance With Xeon Scalable Sapphire Rapids. Estarei trabalhando em alguns benchmarks do ONNX Runtime 1.14 em breve.

O ONNX Runtime 1.14 também adiciona suporte a AMD ROCm 5.4, suporte a OpenVINO 2022.3, suporte a DirectML 1.10.1 e várias outras alterações.