Qual o tamanho das redes neurais que podem ser treinadas nas atuais GPUs de grau de consumidor? (1060.1070.1080)

9

é possível fazer uma estimativa geral sobre o tamanho das redes neurais treináveis ​​em GPUs comuns para consumidores ? Por exemplo:

O artigo Emergence of Locomotion (Reforcement) treina uma rede usando a ativação tanh dos neurônios. Eles têm um NN de 3 camadas com 300.200.100 unidades para o Planar Walker . Mas eles não informam o hardware e o tempo ...

Mas poderia uma regra prática ser desenvolvida? Também apenas com base nos resultados empíricos atuais, por exemplo:

Unidades X que usam ativação sigmóide podem executar iterações de aprendizado Y por h em um 1060.

Ou usar a função de ativação a em vez de b causa uma diminuição no desempenho.

Se um aluno / pesquisador / mente curiosa vai comprar uma GPU para brincar com essas redes, como você decide o que recebe? Aparentemente, um 1060 é a opção de orçamento de nível de entrada, mas como você pode avaliar se não é mais inteligente obter apenas um netbook de baixa qualidade em vez de criar um desktop de alta potência e gastar os $ economizados sob infraestrutura de nuvem sob demanda.

Motivação para a pergunta: Acabei de comprar um 1060 e (inteligente, para fazer a pergunta depois, hein), me pergunto se eu deveria apenas manter o dólar e criar uma conta no Google Cloud. E se eu puder executar minha simulação de tese de mestrado na GPU.

pascalwhoop
fonte

Respostas:

5

Normalmente, o problema é encaixar o modelo na RAM de vídeo. Caso contrário, você não poderá treinar seu modelo sem grandes esforços (como treinar partes do modelo separadamente). Se isso acontecer, o tempo é seu único problema. Mas a diferença no tempo de treinamento entre GPUs de consumo como o Nvidia 1080 e aceleradores de GPU muito mais caros como o Nvidia K80 não é muito grande. Na verdade, os melhores cartões de consumidor são mais rápidos que os aceleradores de GPU, mas carecem de outras propriedades, como VRAM. Comparações aleatórias e parâmetros de referência: http://timdettmers.com/2017/04/09/which-gpu-for-deep-learning/ , https://medium.com/@alexbaldo/a-comparison-between-nvidias-geforce -gtx-1080-e-tesla-p100-para-aprendizagem-profunda-81a918d5b2c7

Para calcular se seus modelos se encaixam na VRAM, basta aproximar a quantidade de dados e quais hiperparâmetros você possui (entradas, saídas, pesos, camadas, tamanho do lote, que tipo de dados e assim por diante).

C. Yduqoli
fonte
11
Boa resposta, mas que tipo de modelo não cabe em uma memória de 6 / 8GB? Digamos que cada lote de dados de treinamento + o modelo. Não tenho idéia de como calcular o tamanho do modelo, mas não consigo imaginar alguns milhares de neurônios e seus pesos podem encher Gigabytes de Memória. O modelo de reconhecimento de imagem pré-treinado do Google é de algumas centenas de megs tensorflow.org/tutorials/image_recognition e que pode reconhecer mais do que a maioria dos outros por aí. A Apple lida com isso no chip do iPhone, de modo que o modelo em si deve ser muito menor que os dados T. E isso não precisa estar na RAM, certo?
pascalwhoop
Costumo trabalhar com modelos de PNL, principalmente RNNs de várias camadas, e se o tamanho do vocabulário for grande, até 8 GB podem não ser suficientes. Lembre-se de que o treinamento geralmente precisa de mais espaço do que a previsão (os gradientes também ocupam espaço).
C. Yduqoli
3

Como advertência, sugiro que, a menos que você esteja pressionando contra limites tecnológicos fundamentais, a velocidade e os recursos da computação devem ser secundários à lógica do design ao desenvolver uma arquitetura de rede neural.

Dito isto, no início deste ano, terminei minha tese de mestrado que envolvia pipelines de análise de bioinformática com dados completos de sequenciamento do genoma - esse projeto levou mais de 100.000 horas de tempo de computação para ser desenvolvido de acordo com o gerente de tarefas de nossos clusters. Quando você está dentro de um prazo, os recursos podem ser uma restrição real e a velocidade pode ser crítica.

Então, para responder às suas perguntas como eu as entendo:

Seria melhor usar o dinheiro para ganhar tempo na nuvem?

Provavelmente. As poucas centenas de dólares que você gastou no 1060 levariam você longe para treinar seus modelos na nuvem. Além disso, até onde eu sei, você não precisa que a GPU esteja em funcionamento 100% do tempo (você faria, por exemplo, mineração de moedas criptográficas). Por fim, com as instâncias da nuvem, você pode escalar, treinando vários modelos ao mesmo tempo, o que pode acelerar a exploração e a validação de qualquer arquitetura em que você escolher.

Existe uma maneira de avaliar o tempo de computação de uma rede neural em uma determinada GPU

Bem, Big O é um estimador, mas parece que você deseja um método mais preciso. Tenho certeza de que eles existem, mas eu diria que você pode fazer sua estimativa com cálculos simples no verso do envelope que são responsáveis ​​por threads, memória, iterações de código etc. Você realmente deseja explorar o pipeline de processamento da GPU no 1060? Você pode conseguir uma estimativa muito boa entendendo tudo o que está acontecendo entre o seu código e o metal, mas, no final das contas, provavelmente não vale o tempo e o esforço; provavelmente confirmará que a notação Big O (o modelo simples, se você desejar) captura a maior parte da variação no tempo de computação. Uma coisa que você pode fazer se notar gargalos é a criação de perfil de desempenho.

Greenstick
fonte
2

Depende do que você precisa. Você pode treinar qualquer tamanho de rede em qualquer recurso. O problema é o tempo de treinamento. Se você deseja treinar o Inception em uma CPU média, levará meses para convergir. Portanto, tudo depende de quanto tempo você pode esperar para ver seus resultados com base na sua rede. Como nas redes neurais, não temos apenas uma operação, mas muitas (como concatenação, pool máximo, preenchimento etc.), é impossível fazer uma estimativa enquanto você procura. Basta começar a treinar algumas redes infames e medir o tempo. Em seguida, você pode interpolar quanto tempo levará para treinar as redes que você está procurando.

Deniz Beker
fonte
Você conhece um recurso que coleta informações para diferentes tarefas da NN? Então, uma lista de: tipo NN, contagem de unidades, hiperparâmetros, tamanho do conjunto de dados, hardware usado, tempo gasto? Isso ajudaria a desenvolver uma regra de intuição polegar
pascalwhoop