O artigo foi escrito por Rakshith Vasudev e John Lockman do Laboratório de inovação em IA e HPC em outubro de 2019
Contêiner NGC nvcr.io/nvidia/tensorflow:19.06- py3 |
Conda env – versões |
|
Estrutura |
TensorFlow 1.13.1 |
TensorFlow 1.12.0 |
Horovod |
0.15.1 |
0.16.1 |
MPI |
OpenMPI 3.1.3 |
OpenMPI 4.0.0 |
CUDA |
10,2 |
10,1 |
Driver CUDA |
430,26 |
418.40.04 |
NCCL |
2.4.7 |
2.4.7 |
CUDNN |
7.6.0 |
7.6.0 |
Python |
3.5.2 |
3.6.8 |
Sistema operacional |
Ubuntu 16.04.6 |
RHEL 7.4 |
GCC |
5.4.0 |
7.2.0 |
Tabela 1
Como mencionado anteriormente, o CheXNet é um modelo de assistente de radiologia de IA que usa o DenseNet para identificar até 14 patologias em uma imagem específica de raios X do tórax. Várias abordagens foram exploradas para ampliar o treinamento de um modelo que poderia ter um desempenho tão bom ou melhor do que o CheXNet-121 original. O ResNet-50 se mostrou promissor tanto em escalabilidade quanto em maior precisão de treinamento (AUROC positivo). Os autores demonstraram a escalabilidades em sistemas de CPU. No entanto, estamos interessados em explorar o paralelismo das GPUs para acelerar o processo de treinamento. O Dell EMC PowerEdge C4140 oferece densidade e desempenho com quatro GPUs Nvidia V100 na configuração SXM2.
Sistema bare metal |
Sistema Kubernetes |
|
Plataforma |
PowerEdge C4140 |
PowerEdge C4140 |
CPU |
2 x Intel® Xeon® Gold 6148 a 2,4 GHz |
2 x Intel® Xeon® Gold 6148 a 2,4 GHz |
Memória |
DDR4 de 384 GB, a 2666 MHz |
DDR4 de 384 GB, a 2666 MHz |
Armazenamento |
Lustre |
NFS |
GPU |
V100-SXM2 de 32 GB |
V100-SXM2 de 32 GB |
Sistema operacional |
RHEL 7,4 x86_64 |
CentOS 7.6 |
Kernel do Linux |
3.10.0-693.x86_64 |
3.10.0-957.21.3.el7.x86_64 |
Network |
InfiniBand EDR Mellanox |
InfiniBand EDR Mellanox (IP sobre IB) |
O throughput de imagem, calculado em imagens por segundo, durante o treinamento do CheXNet foi medido usando 1, 2, 3, 4 e 8 GPUs em 2 nós C4140 em ambos os sistemas descritos na Tabela 2. As especificações da execução, incluindo a arquitetura do modelo, os dados de entrada etc., são detalhadas neste artigo. A Figura 1 mostra a comparação de desempenho medido no sistema Kubernetes e no sistema bare metal.
Figura 1: Executando o treinamento do CheXNet no k8s vs. bare metal
O sistema bare metal demonstra um aumento de 8% no desempenho à medida que dimensionamos para oito GPUs. No entanto, as diferenças no design da arquitetura do sistema podem causar essa pequena diferença de desempenho, além do argumento do contêiner vs. bare metal. O sistema bare metal pode aproveitar a largura de banda completa e a latência da conexão InfiniBand bruta e não precisa lidar com a sobrecarga criada com redes definidas por software, como o Flannel. O sistema k8s está usando IP sobre InfiniBand, o que pode reduzir a largura de banda disponível.
Esses números podem variar, dependendo da carga de trabalho e dos padrões de comunicação definidos pelos tipos de aplicativos que são executados. No caso de um problema de classificação de imagem, a taxa na qual a comunicação ocorre entre as GPUs é alta e, portanto, há uma alta taxa de câmbio. No entanto, o uso de uma abordagem sobre a outra depende das necessidades da carga de trabalho. Embora nosso sistema baseado em Kubernetes tenha uma pequena penalidade de desempenho, de aproximadamente 8% nesse caso, ele libera os usuários e administradores da configuração de bibliotecas, configurações, ambientes e outras dependências. Essa abordagem permite que os cientistas de dados sejam mais produtivos e concentrem-se na solução de problemas de negócios importantes, como a estruturação de dados e a criação de modelos.