é 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.
fonte
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.
fonte
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.
fonte