Treinamento de redes profundas em um laptop comum


7

Seria possível para um amador que está interessado em obter alguma experiência "prática" ao projetar e treinar redes neurais profundas, usar um laptop comum para esse fim (sem GPU) ou é impossível obter bons resultados em tempo razoável sem um computador / cluster / GPU poderoso?

Para ser mais específico, a CPU do laptop é um Intel Core i7 5500U de quinta geração, com 8GB de RAM.

Agora, como não especifiquei em quais problemas gostaria de trabalhar, enquadrarei minhas perguntas de uma maneira diferente: em quais arquiteturas profundas você recomendaria que eu tentasse implementar com meu hardware, para que o objetivo a seguir seja alcançado : Adquirir intuição e conhecimento sobre como e quando usar técnicas introduzidas nos últimos 10 anos e essenciais para a insurreição de redes profundas (como entendimento de inicializações, desistências, rmsprop, apenas para citar algumas).

Eu li sobre essas técnicas, mas é claro que sem testá-las eu não saberia exatamente como e quando implementá-las de maneira eficaz. Por outro lado, receio que, se tentar usar um PC que não seja suficientemente forte, minha taxa de aprendizado será tão lenta que não faria sentido dizer que adquiri um entendimento melhor. E se eu tentar usar essas técnicas em redes rasas, talvez não esteja construindo a intuição certa.

Eu imagino o processo de (meu) aprendizado da seguinte forma: eu implemento uma rede neural, deixo praticar por várias horas, vejo o que tenho e repito o processo. Se eu fizer isso uma ou duas vezes por dia, ficaria feliz se, digamos, seis meses depois, adquirisse um conhecimento prático comparável ao que um profissional da área deve saber.


2
Que ferramenta? qual laptop? que problema? que tamanho de dados? o que é razoável? Isso é muito pouco especificado #
Sean Owen

Eu acho que a edição melhorou a questão. Uma coisa: não existe um "profissional de campo" padrão que use técnicas de aprendizado profundo. O que um profissional deve saber, portanto, não está bem definido.
Neil Slater

11
Sei que a pergunta não está bem definida no sentido de ter uma resposta correta específica, mas acho que está bem formulada para que pessoas experientes possam fornecer suas idéias e "esboçar" os limites do que posso esperar alcançar. o laptop acima mencionado
Lior 21/02

Eu acho que você poderia tentar esse tutorial (ou algo mais) e ver quanto tempo leva no seu computador: tensorflow.org/versions/r0.8/tutorials/mnist/pros/index.html . De qualquer forma, o treinamento de redes profundas com conjuntos de dados interessantes deve ser possível em computadores comuns; as NN não são adequadas apenas para grandes clusters distribuídos.
24616 Robin

Respostas:


9

Sim, um laptop funcionará bem para se familiarizar com alguns projetos de aprendizado profundo:

Você pode escolher um pequeno problema de aprendizado profundo e obter algumas dicas tratáveis ​​usando um laptop, então experimente.

O projeto Theano tem um conjunto de tutoriais sobre reconhecimento de dígitos com os quais eu brinquei e modifiquei em um laptop.

O Tensorflow também possui um conjunto de tutoriais .

Eu deixei algumas das corridas mais longas passarem da noite para o dia, mas nada era intratável.

Você também pode se beneficiar da AWS ou de um dos outros serviços em nuvem. Por 20 a 30 dólares, você pode executar alguns dos maiores cálculos na nuvem em algum tipo de nó de computação elástico . A vantagem secundária é que você também pode listar a AWS ou outros serviços em nuvem como habilidade em seu currículo também :-)

Espero que isto ajude!


11
Gostaria de acrescentar que fiz o mesmo, ou seja, usei o Theano em um laptop para verificar se uma determinada arquitetura é capaz de diminuir a perda de log de forma consistente. Eu alugava tempo em um provedor de GPU na nuvem (por exemplo, AWS) e o deixava correr por dezenas de horas, até que o cotovelo no conjunto de validação aparecesse.
shark8me

3

[...] é inútil obter bons resultados em tempo razoável sem um poderoso computador / cluster / GPU?

Não há esperança e você pode, sem dúvida, obter muita experiência relevante com o aprendizado profundo usando as especificações de computador mencionadas. Tudo se resume à sua arquitetura de rede neural (número de camadas e neurônios), tamanho do conjunto de dados (número de entradas), natureza dos dados (padrões inerentes) e implementação. E embora você possa se limitar a isso, isso não impedirá que você adquira intuição e conhecimento a que se refere. Você experimentará facilmente problemas de ajuste excessivo, influência da regularização, efeitos do pré-treinamento, impacto de diferentes tipos de neurônios e arquiteturas, para citar alguns.

Vou te dar um exemplo mais concreto. Implementei alguns algoritmos de aprendizado profundo (todos baseados em CPU) em Julia e os executei em um MacBook Air (semelhante à sua especificação). O código não foi terrivelmente otimizado, pois neurônios e camadas foram representados por estruturas de dados reais, em vez de uma única matriz gigante. Portanto, outras melhorias de desempenho foram possíveis.

Para uma rede totalmente conectada de 56x300x300x300x1 (56 entradas e aproximadamente 200k conexões) e 250 exemplos de treinamento, consegui obter 5k de propagação em um dia. Freqüentemente, isso foi suficiente para ajustar demais os dados ou ajustar-se perfeitamente ao conjunto de treinamento (mas isso dependerá do conjunto de dados e de outros fatores mencionados acima). Se os dados tiverem padrões fortes e menos de 10 mil exemplos, muitas vezes você não precisará de tantas iterações. Não é incomum que poucas centenas de iterações de pré-treinamento e aperfeiçoamento levem a bons resultados. Portanto, sim, seu laptop é bom o suficiente e você pode executar experimentos significativos que levam várias horas.

[...] quais arquiteturas profundas você recomendaria que eu tentasse implementar com meu hardware, de forma que o seguinte objetivo seja alcançado: Adquirir intuição e conhecimento sobre como e quando usar técnicas introduzidas nos últimos 10 anos e que foram essenciais ao levante de redes profundas.

Eu sugiro escolher conjuntos de dados menores com padrões fortes. E recomendo analisar técnicas de pré-treinamento, como codificadores automáticos, porque geralmente exigem menos iterações para alcançar melhores resultados. Comece com a propagação de volta e construa a partir daí, tente diferentes arquiteturas, tipos de neurônios, use regularização, auto-codificadores, abandono, ...

Também certifique-se de escolher uma linguagem ou biblioteca de alto desempenho para suas experiências.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.