DirectML é uma biblioteca DirectX 12 acelerada por hardware de alto desempenho para aprendizado de máquina. DirectML fornece aceleração de GPU para tarefas comuns de aprendizado de máquina em uma ampla variedade de hardware e drivers suportados, incluindo todas as GPUs compatíveis com DirectX 12 de fornecedores como AMD, Intel, NVIDIA e Qualcomm.
Quando usada de forma independente, a API DirectML é uma biblioteca DirectX 12 de baixo nível e é adequada para aplicativos de alto desempenho e baixa latência, como estruturas, jogos e outros aplicativos em tempo real. A interoperabilidade perfeita do DirectML com o Direct3D 12, bem como sua baixa sobrecarga e conformidade em hardware, tornam o DirectML ideal para acelerar o aprendizado de máquina quando o alto desempenho é desejado e a confiabilidade e a previsibilidade dos resultados em todo o hardware são críticas.
Mais informações sobre DirectML podem ser encontradas em Introdução ao DirectML.
Visite a página inicial do DirectX para obter mais recursos para desenvolvedores DirectX.
DirectML é distribuído como um componente do sistema do Windows 10 e está disponível como parte do sistema operacional (SO) Windows 10 no Windows 10, versão 1903 (10.0; Build 18362) e mais recente.
A partir do DirectML versão 1.4.0, o DirectML também está disponível como um pacote redistribuível independente (consulte Microsoft.AI.DirectML), que é útil para aplicativos que desejam usar uma versão fixa do DirectML ou quando executado em versões mais antigas do Windows 10 .
DirectML requer um dispositivo compatível com DirectX 12. Quase todas as placas gráficas disponíveis comercialmente lançadas nos últimos anos suportam DirectX 12. Exemplos de hardware compatível incluem:
DirectML expõe uma API C++ DirectX 12 nativa. O cabeçalho e a biblioteca (DirectML.h/DirectML.lib) estão disponíveis como parte do pacote NuGet redistribuível e também estão incluídos no SDK do Windows 10 versão 10.0.18362 ou mais recente.
DirectML é integrado como back-end para várias estruturas, como Windows ML, ONNX Runtime e TensorFlow.
Consulte as seções a seguir para obter mais informações:
O código de exemplo DirectML C++ está disponível em Exemplos.
O código de exemplo DirectML Python está disponível em Python/samples. Os exemplos requerem PyDirectML, uma biblioteca de projeção Python de código aberto para DirectML, que pode ser criada e instalada em um ambiente de execução Python a partir de Python/src. Consulte o arquivo Python/README.md para obter mais detalhes.
DxDispatch é um executável de linha de comando simples para iniciar programas de computação DirectX 12 (incluindo operadores DirectML) sem escrever todo o padrão C++.
O Windows ML (WinML) é uma API confiável e de alto desempenho para implantar inferências de ML aceleradas por hardware em dispositivos Windows. DirectML fornece o back-end de GPU para Windows ML.
A aceleração DirectML pode ser habilitada no Windows ML usando LearningModelDevice com qualquer um dos DirectX DeviceKinds.
Para obter mais informações, consulte Introdução ao Windows ML.
ONNX Runtime é um acelerador de inferência e treinamento de plataforma cruzada compatível com muitas estruturas populares de ML/DNN, incluindo PyTorch, TensorFlow/Keras, scikit-learn e muito mais.
DirectML está disponível como um provedor de execução opcional para ONNX Runtime que fornece aceleração de hardware ao executar no Windows 10.
Para obter mais informações sobre como começar, consulte Usando o provedor de execução DirectML.
PyTorch com DirectML permite treinamento e inferência de modelos complexos de aprendizado de máquina em uma ampla variedade de hardware compatível com DirectX 12. Isso é feito através torch-directml
, um plugin para PyTorch.
PyTorch com DirectML é compatível com as versões mais recentes do Windows e no subsistema Windows para Linux e está disponível para download como um pacote PyPI. Para obter mais informações sobre como começar a usar torch-directml
, consulte nossas orientações do Windows ou WSL 2 no Microsoft Learn.
TensorFlow é uma plataforma popular de código aberto para aprendizado de máquina e uma estrutura líder para treinamento de modelos de aprendizado de máquina.
A aceleração DirectML para TensorFlow 1.15 está atualmente disponível para visualização pública. O TensorFlow no DirectML permite o treinamento e a inferência de modelos complexos de aprendizado de máquina em uma ampla variedade de hardware compatível com DirectX 12.
O TensorFlow no DirectML é compatível com as versões mais recentes do Windows 10 e com o subsistema Windows para Linux e está disponível para download como um pacote PyPI. Para obter mais informações sobre como começar, consulte Treinamento de ML acelerado por GPU (docs.microsoft.com)
Estamos ansiosos para ouvir de você!
Para problemas, bugs e feedback do TensorFlow com DirectML; ou para problemas e comentários gerais sobre DirectML, registre um problema ou entre em contato conosco diretamente em [email protected].
Para PyTorch com problemas, bugs e feedback de DirectML; ou para problemas e comentários gerais sobre DirectML, registre um problema ou entre em contato conosco diretamente em [email protected].
Para problemas do Windows ML, registre um problema no GitHub em microsoft/Windows-Machine-Learning ou entre em contato conosco diretamente em [email protected].
Para problemas de ONNX Runtime, registre um problema em microsoft/onnxruntime.
Guia de programação DirectML
Referência da API DirectML
Apresentando DirectML (Game Developers Conference '19)
Acelerando a inferência de GPU com DirectML e DirectX 12 (SIGGRAPH '18)
IA do Windows: ML acelerado por hardware em dispositivos Windows (Microsoft Build '20)
Jogos com Windows ML (Blog do desenvolvedor DirectX)
DirectML na GDC 2019 (blog do desenvolvedor DirectX)
DirectX ❤ Linux (blog do desenvolvedor DirectX)
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um Contrato de Licença de Colaborador (CLA), declarando que você tem o direito de nos conceder, e realmente nos concede, os direitos de uso de sua contribuição. Para obter detalhes, visite https://cla.microsoft.com.
Quando você envia uma solicitação pull, um bot CLA determinará automaticamente se você precisa fornecer um CLA e decorará o PR adequadamente (por exemplo, rótulo, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios usando nosso CLA.
Este projeto adotou o Código de Conduta de Código Aberto da Microsoft. Para obter mais informações, consulte as Perguntas frequentes sobre o Código de Conduta ou entre em contato com [email protected] com perguntas ou comentários adicionais.