Arquitetura do sistema

Neste documento, descrevemos a arquitetura de todos os componentes de hardware e software do sistema do Cloud TPU.

Visão geral

As unidades de processamento de tensor (TPUs, na sigla em inglês) são circuitos integrados de aplicação específica (ASICs, na sigla em inglês) desenvolvidos especialmente pelo Google. Elas são usadas para acelerar as cargas de trabalho de machine learning. As TPUs foram desenvolvidas desde o início aproveitando a extensa experiência e liderança do Google em machine learning.

É possível usar o Cloud TPU e o TensorFlow para executar suas próprias cargas de trabalho de machine learning no hardware do acelerador de TPU do Google. O Cloud TPU foi desenvolvido para proporcionar o máximo de desempenho e flexibilidade, ajudando pesquisadores, desenvolvedores e empresas a criar clusters de computação do TensorFlow que podem usar CPUs, GPUs e TPUs. As APIs de alto nível do Tensorflow facilitam a execução de modelos replicados no hardware do Cloud TPU.

Os aplicativos do TensorFlow acessam nós de TPU de contêineres, instâncias ou serviços no Google Cloud Platform. O aplicativo requer uma conexão com o nó de TPU por meio da rede VPC.

Versões de TPU

Cada versão de TPU define as características específicas de hardware de um dispositivo TPU. A versão de TPU define a arquitetura para cada núcleo de TPU, a quantidade de memória de alta largura de banda (HBM, na sigla em inglês) para cada núcleo de TPU, as interconexões entre os núcleos em cada dispositivo TPU e as interfaces de rede disponíveis para comunicação entre dispositivos. Por exemplo, cada versão de TPU tem as seguintes características:

  • TPU v2:
    • 8 GiB de HBM para cada núcleo de TPU
    • Um MXU para cada núcleo de TPU
    • Total de até 512 núcleos de TPU e 4 TiB de memória total em um Pod de TPU
  • TPU v3:
    • 16 GiB de HBM para cada núcleo de TPU
    • Dois MXUs para cada núcleo de TPU
    • Total de até 2.048 núcleos de TPU e 32 TiB de memória total em um Pod de TPU

imagem

Cada núcleo de TPU tem unidades escalares, vetoriais e matriciais (MXU). O MXU fornece a maior parte da potência de computação em um chip de TPU. Cada MXU é capaz de realizar 16 mil operações de multiplicação seguida de acumulação em cada ciclo. Enquanto as entradas e saídas dos MXUs são valores de ponto flutuante de 32 bits, o MXU realiza multiplicações a uma precisão de bfloat16 reduzida. O bfloat16 é uma representação de ponto flutuante de 16 bits que proporciona melhor treinamento e acurácia do modelo do que a representação de meia precisão do IEEE.

Cada um dos núcleos em um dispositivo TPU executa cálculos do usuário (operações do XLA) de forma independente. As interconexões de alta largura de banda permitem que os chips se comuniquem diretamente entre si no dispositivo TPU. Em uma configuração de Pod de TPU, interfaces de rede dedicadas de alta velocidade conectam vários dispositivos TPU para fornecer um número maior de núcleos de TPU e um pool maior de memória de TPU para cargas de trabalho de machine learning.

Benefícios de desempenho da TPU v3

O aumento de FLOPS por núcleo e capacidade de memória nas configurações da TPU v3 melhora o desempenho dos seus modelos das seguintes maneiras:

  • As configurações da TPU v3 fornecem benefícios de desempenho significativos por núcleo para modelos vinculados à computação. Os modelos ligados à memória nas configurações da TPU v2 podem não alcançar essa mesma melhoria de desempenho se eles também estiverem ligados à memória nas configurações da TPU v3.
  • Nos casos em que os dados não cabem na memória nas configurações da TPU v2, a TPU v3 pode melhorar o desempenho e reduzir a necessidade de recalcular valores intermediários (rematerialização).
  • As configurações da TPU v3 executam novos modelos com tamanhos de lotes que não cabem nas configurações da TPU v2. Por exemplo, a TPU v3 pode permitir ResNets mais profundos e imagens maiores com o RetinaNet.

Os modelos que foram quase limitados pela entrada ("alimentação") na TPU v2 (porque os passos de treinamento estão aguardando pela entrada) podem ficar limitados pela entrada no Cloud TPU v3. O guia de desempenho do pipeline pode ajudar você a resolver problemas de alimentação.

Determine se o desempenho do seu modelo melhorará a partir da TPU v3 executando comparativos de mercado em diferentes versões de TPU e monitorando o desempenho com o uso das ferramentas do TensorBoard.

Configurações de TPU

Em um data center do Google, os dispositivos TPU estão disponíveis nas seguintes configurações para a TPU v2 e a TPU v3:

  • TPUs de dispositivo único, que são dispositivos TPU individuais não conectados uns aos outros em uma rede dedicada de alta velocidade. Não é possível combinar vários tipos de TPU de dispositivo único para colaborar em uma única carga de trabalho.
  • Pods de TPU, que são clusters de dispositivos TPU conectados uns aos outros em redes dedicadas de alta velocidade.

TPUs de dispositivo único

Uma configuração de TPU de dispositivo único em um data center do Google é um dispositivo TPU sem conexões de rede dedicadas de alta velocidade com outros dispositivos TPU. O nó de TPU se conecta apenas a esse único dispositivo.

imagem

Para TPUs de dispositivo único, os chips são interconectados no dispositivo para que a comunicação entre os chips não necessite de recursos de CPU ou de rede do host.

Ao criar um nó de TPU, especifique o tipo de TPU. Por exemplo, é possível especificar v2-8 ou v3-8 para configurar o nó de TPU com um único dispositivo. As TPUs de um único dispositivo não fazem parte das configurações de Pod de TPU e não ocupam uma parte de um Pod de TPU. Leia a página sobre tipos de TPU para ver quais configurações de TPU de um único dispositivo estão disponíveis para os nós de TPU.

Pods de TPU

Uma configuração de pod de TPU em um data center do Google tem vários dispositivos TPU conectados entre si por meio de uma conexão de rede dedicada de alta velocidade. Os hosts em seu nó de TPU distribuem as cargas de trabalho de machine learning por todos os dispositivos TPU.

imagem

Em um Pod de TPU, os chips de TPU são interconectados no dispositivo para que a comunicação entre os chips não necessite de recursos de CPU ou de rede do host. Além disso, cada um dos dispositivos TPU em um Pod de TPU é conectado um ao outro em redes dedicadas de alta velocidade que também não exigem recursos de CPU ou de rede do host.

Ao criar um nó de TPU, especifique um tipo de TPU que ocupe o pod de TPU completo ou uma fração menor desse pod. Por exemplo, um tipo de TPU v2-512 ocupa um Pod de TPU v2 completo e um tipo de TPU v2-128 ocupa apenas 1/4 de um Pod de TPU v2. Leia a página sobre tipos de TPU para ver quais configurações de Pod de TPU estão disponíveis para os nós de TPU.

imagem

O Pod de TPU v2 fornece uma configuração máxima de 64 dispositivos para um total de 512 núcleos de TPU v2 e 4 TiB de memória de TPU.

imagem

O Pod de TPU v3 fornece uma configuração máxima de 256 dispositivos para um total de 2.048 núcleos de TPU v3 e 32 TiB de memória de TPU.

Consulte a seção sobre versões de TPU para saber mais sobre as diferenças de arquitetura entre as diferentes versões de TPU.

Use a API Cloud TPU para automatizar o gerenciamento de TPU para os nós de TPU, independentemente do tamanho. Como resultado, é fácil expandir para clusters de computação massivos, executar as cargas de trabalho e dimensionar esses clusters quando as cargas de trabalho estiverem completas. O suporte de hardware incorporado nos chips resulta em escalonamento de desempenho efetivamente linear em uma ampla variedade de cargas de trabalho de aprendizado profundo. Na prática, a pilha de software do Cloud TPU elimina a complexidade de gerar, executar e alimentar programas do Cloud TPU.

Arquitetura do software

Ao executar o aplicativo, o TensorFlow gera um gráfico de computação e o envia para um nó de TPU pelo gRPC. O tipo de TPU que você seleciona para o nó de TPU determina quantos dispositivos estão disponíveis para a carga de trabalho. O nó de TPU compila o gráfico de computação just in time e envia o programa binário para um ou mais dispositivos TPU para execução. As entradas do modelo geralmente são armazenadas no Cloud Storage. O nó de TPU transmite as entradas para um ou mais dispositivos TPU para consumo.

O diagrama em blocos abaixo mostra a arquitetura do software do Cloud TPU, que consiste no modelo de rede neural, no TPU Estimator e cliente TensorFlow, no servidor do TensorFlow e no compilador XLA.

imagem

TPUEstimator

TPUEstimators consiste em um conjunto de APIs de alto nível desenvolvidas a partir da API Estimators. Essas APIs simplificam a criação de modelos para o Cloud TPU e extraem o máximo de desempenho da TPU. Ao escrever um modelo de rede neural que usa o Cloud TPU, use as APIs TPUEstimator.

Cliente TensorFlow

As APIs TPUEstimator traduzem os programas em operações do TensorFlow. Esses programas são convertidos em um gráfico computacional por um cliente TensorFlow. Esse cliente comunica o gráfico computacional a um servidor do TensorFlow.

Servidor do TensorFlow

O servidor do TensorFlow é executado em um servidor do Cloud TPU. Quando o servidor recebe um gráfico computacional do cliente TensorFlow, ele executa as seguintes ações:

  1. Carrega as entradas do Cloud Storage.
  2. Particiona o gráfico entre as partes que podem ser executadas em um Cloud TPU e aquelas que precisam ser executadas em uma CPU.
  3. Gera operações do XLA correspondentes ao subgráfico que será executado no Cloud TPU.
  4. Invoca o compilador XLA.

Compilador XLA

O XLA é um compilador just in time que recebe como entrada operações do High Level Optimizer (HLO) produzidas pelo servidor do TensorFlow. O XLA gera o código binário a ser executado no Cloud TPU, incluindo a orquestração de dados da memória on-chip para unidades de execução de hardware e comunicação entre chips. O binário gerado é carregado no Cloud TPU usando a conectividade PCIe entre o servidor do Cloud TPU e o próprio Cloud TPU. Em seguida, ele é iniciado para execução.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…