Com o Vertex AI Neural Architecture Search, pode pesquisar arquiteturas neurais ideais em termos de precisão, latência, memória, uma combinação destes ou uma métrica personalizada.
Determinar se o Vertex AI Neural Architecture Search é a melhor ferramenta para mim
- O Vertex AI Neural Architecture Search é uma ferramenta de otimização de alta qualidade usada para encontrar as melhores arquiteturas neurais em termos de precisão com ou sem restrições, como latência, memória ou uma métrica personalizada. O espaço de pesquisa de possíveis escolhas de arquitetura neural pode ser tão grande quanto 10^20. Baseia-se numa técnica que gerou com êxito vários modelos de visão computacional de vanguarda nos últimos anos, incluindo Nasnet, MNasnet, EfficientNet, NAS-FPN e SpineNet.
- A pesquisa de arquitetura neural não é uma solução em que pode simplesmente usar os seus dados e esperar um bom resultado sem experimentação. É uma ferramenta de experimentação.
- A pesquisa de arquitetura neural não se destina ao aperfeiçoamento de hiperparâmetros, como o aperfeiçoamento da taxa de aprendizagem ou das definições do otimizador. Destina-se apenas a uma pesquisa de arquitetura. Não deve combinar o ajuste de hiperparâmetros com a pesquisa de arquitetura neural.
- A pesquisa de arquitetura neural não é recomendada com dados de preparação limitados ou para conjuntos de dados altamente desequilibrados em que algumas classes são muito raras. Se já estiver a usar aumentos pesados para a sua base de referência de preparação devido à falta de dados, não recomendamos a pesquisa de arquitetura neural.
- Deve experimentar primeiro outros métodos e técnicas de aprendizagem automática tradicionais e convencionais, como o ajuste de hiperparâmetros. Deve usar a pesquisa de arquitetura neural apenas se não vir mais vantagens com esses métodos tradicionais.
- Deve ter uma equipa interna para o ajuste do modelo, que tenha alguma ideia básica sobre os parâmetros de arquitetura a modificar e experimentar. Estes parâmetros de arquitetura podem incluir o tamanho do kernel, o número de canais ou as ligações entre muitas outras possibilidades. Se tiver um espaço de pesquisa em mente para explorar, a pesquisa de arquitetura neural é muito valiosa e pode reduzir, pelo menos, aproximadamente seis meses de tempo de engenharia na exploração de um grande espaço de pesquisa: até 10^20 opções de arquitetura.
- A pesquisa de arquitetura neural destina-se a clientes empresariais que podem gastar vários milhares de dólares numa experiência.
- A pesquisa de arquitetura neural não se limita apenas ao exemplo de utilização de visão. Atualmente, apenas são fornecidos espaços de pesquisa pré-criados baseados na visão e formadores pré-criados, mas os clientes também podem usar os seus próprios espaços de pesquisa e formadores não baseados na visão.
- A pesquisa de arquitetura neural não usa uma abordagem de supernet (oneshot-NAS ou NAS baseada na partilha de pesos) em que basta trazer os seus próprios dados e usá-los como solução. É complexo (meses de esforço) personalizar uma super-rede. Ao contrário de uma supernet, a pesquisa de arquitetura neural é altamente personalizável para definir espaços de pesquisa personalizados e recompensas. A personalização pode ser feita em aproximadamente um a dois dias.
- A pesquisa de arquitetura neural é suportada em 8 regiões em todo o mundo. Verifique a disponibilidade na sua região.
Também deve ler a secção seguinte sobre o custo esperado, os ganhos de resultados e os requisitos de quota de GPU antes de usar a pesquisa de arquitetura neural.
Custo esperado, ganhos de resultados e requisitos de quota de GPU
A figura mostra uma curva de pesquisa de arquitetura neural típica.
O Y-axis
mostra as recompensas de avaliação e o
X-axis
mostra o número de avaliações iniciadas.
À medida que o número de testes aumenta, o controlador começa a encontrar modelos melhores. Por conseguinte, a recompensa começa a aumentar e, mais tarde, a variação da recompensa e o crescimento da recompensa começam a diminuir e mostram a convergência. No ponto de convergência, o número de testes pode variar com base no tamanho do espaço de pesquisa, mas é da ordem de aproximadamente 2000 testes.
Cada teste foi concebido para ser uma versão mais pequena da
preparação completa denominada tarefa de proxy, que é executada durante aproximadamente uma a duas horas em duas GPUs Nvidia V100. O cliente pode parar a pesquisa manualmente em qualquer altura e pode encontrar modelos de recompensa mais elevados em comparação com a respetiva base antes de ocorrer o ponto de convergência.
Pode ser melhor aguardar até que ocorra o ponto de convergência para escolher os melhores resultados.
Após a pesquisa, a fase seguinte consiste em escolher os 10 principais testes (modelos) e executar uma preparação completa nos mesmos.
(Opcional) Experimente o espaço de pesquisa e o formador MNasNet pré-criados
Neste modo, observe a curva de pesquisa ou algumas tentativas, aproximadamente 25, e faça um teste com um espaço de pesquisa e um formador do MNasNet pré-criados.
Na figura, a melhor recompensa da fase 1 começa a aumentar de ~0,30 no ensaio 1 para ~0,37 no ensaio 17. A sua corrida exata pode ter um aspeto ligeiramente diferente devido à aleatoriedade da amostragem, mas deve ver um pequeno aumento na melhor recompensa. Tenha em atenção que esta é ainda uma execução de teste e não representa nenhuma validação de conceito nem uma validação de referência pública.
O custo desta execução é detalhado da seguinte forma:
- Stage-1:
- Número de ensaios: 25
- Número de GPUs por teste: 2
- Tipo de GPU: TESLA_T4
- Número de CPUs por avaliação: 1
- Tipo de CPU: n1-highmem-16
- Tempo médio de preparação de uma única avaliação: 3 horas
- Número de testes paralelos: 6
- Quota de GPUs usada: (num-gpus-per-trial * num-parallel-trials) = 12 GPUs. Use a região us-central1 para o teste rápido e aloje os dados de preparação na mesma região. Não é necessária quota adicional.
- Tempo de execução: (total-trials * training-time-per-trial)/(num-parallel-trials) = 12 horas
- Horas de GPU: (total-trials * training-time-per-trial * num-gpus-per-trial) = 150 horas de GPU T4
- Horas de CPU: (total-trials * training-time-per-trial * num-cpus-per-trial) = 75 horas n1-highmem-16
- Custo: aproximadamente 185 $. Pode parar a tarefa mais cedo para reduzir o custo. Consulte a página de preços para calcular o preço exato.
Uma vez que se trata de uma execução de teste, não é necessário executar uma preparação completa de fase 2 para modelos da fase 1. Para saber mais sobre a execução da fase 2, consulte o tutorial 3.
O notebook MnasNet é usado para esta execução.
(Opcional) Execução de prova de conceito (POC) do espaço de pesquisa e do formador MNasNet pré-criados
Se tiver interesse em replicar quase na totalidade um resultado do MNasnet publicado, pode usar este modo. De acordo com o artigo, a MnasNet alcança uma precisão de 75,2% com uma latência de 78 ms num telemóvel Pixel, que é 1,8 vezes mais rápida do que a MobileNetV2 com uma precisão 0,5% superior e 2,3 vezes mais rápida do que a NASNet com uma precisão 1,2% superior. No entanto, este exemplo usa GPUs em vez de TPUs para a preparação e usa a CPU na nuvem (n1-highmem-8) para avaliar a latência. Com este exemplo, a precisão esperada de nível 1 da Stage2 no MNasNet é de 75,2% com uma latência de 50 ms na CPU na nuvem (n1-highmem-8).
O custo desta execução é detalhado da seguinte forma:
Pesquisa de fase 1:
- Número de ensaios: 2000
- Número de GPUs por teste: 2
- Tipo de GPU: TESLA_T4
- Tempo médio de preparação de uma única avaliação: 3 horas
- Número de testes paralelos: 10
- Quota de GPUs usada: (num-gpus-per-trial * num-parallel-trials) = 20 GPUs T4. Uma vez que este número está acima da quota predefinida, crie um pedido de quota na IU do seu projeto. Para mais informações, consulte setting_up_path.
- Tempo de execução: (total-trials * training-time-per-trial)/(num-parallel-trials)/24 = 25 dias. Nota: a tarefa termina após 14 dias. Após esse período, pode retomar a tarefa de pesquisa facilmente com um comando durante mais 14 dias. Se tiver uma quota de GPU mais elevada, o tempo de execução diminui proporcionalmente.
- Horas de GPU: (total-trials * training-time-per-trial * num-gpus-per-trial) = 12 000 horas de GPU T4.
- Custo: ~15 000 USD
Preparação completa da fase 2 com os 10 principais modelos:
- Número de ensaios: 10
- Número de GPUs por teste: 4
- Tipo de GPU: TESLA_T4
- Tempo médio de preparação de uma única avaliação: ~9 dias
- Número de testes paralelos: 10
- Quota de GPUs usada: (num-gpus-per-trial * num-parallel-trials) = 40 GPUs T4. Uma vez que este número está acima da quota predefinida, crie um pedido de quota na IU do seu projeto. Para mais informações, consulte setting_up_path. Também pode executar esta tarefa com 20 GPUs T4 executando a tarefa duas vezes com cinco modelos de cada vez, em vez dos 10 em paralelo.
- Tempo de execução: (total-trials * training-time-per-trial)/(num-parallel-trials)/24 = ~9 dias
- Horas de GPU: (total-trials * training-time-per-trial * num-gpus-per-trial) = 8960 horas de GPU T4.
- Custo: ~$8000
Custo total: aproximadamente 23 000 $. Consulte a página de preços para calcular o preço exato. Nota: este exemplo não é uma tarefa de preparação normal média. A preparação completa é executada durante cerca de nove dias em quatro GPUs TESLA_T4.
O notebook MnasNet é usado para esta execução.
Usar o espaço de pesquisa e os treinadores
Fornecemos um custo aproximado para um utilizador personalizado médio. As suas necessidades podem variar consoante a tarefa de preparação e as GPUs e CPUs usadas. Precisa de, pelo menos, 20 GPUs de quota para uma execução integral , conforme documentado aqui. Nota: o aumento do desempenho depende totalmente da sua tarefa. Só podemos fornecer exemplos como o MNasnet como exemplos de referência para o aumento do desempenho.
O custo desta execução personalizada hipotética é detalhado da seguinte forma:
Pesquisa de fase 1:
- Número de ensaios: 2000
- Número de GPUs por teste: 2
- Tipo de GPU: TESLA_T4
- Tempo de preparação médio de uma única avaliação: 1,5 horas
- Número de testes paralelos: 10
- Quota de GPUs usada: (num-gpus-per-trial * num-parallel-trials) = 20 GPUs T4. Uma vez que este número está acima da quota predefinida, tem de criar um pedido de quota na IU do seu projeto. Para mais informações, consulte o artigo Peça uma quota de dispositivos adicional para o projeto.
- Tempo de execução: (total-trials * training-time-per-trial)/(num-parallel-trials)/24 = 12,5 dias
- Horas de GPU: (total-trials * training-time-per-trial * num-gpus-per-trial) = 6000 horas de GPU T4.
- Custo: aproximadamente 7400 $
Preparação completa da fase 2 com os 10 principais modelos:
- Número de ensaios: 10
- Número de GPUs por teste: 2
- Tipo de GPU: TESLA_T4
- Tempo médio de treino de uma única tentativa: aproximadamente 4 dias
- Número de testes paralelos: 10
- Quota de GPUs usada: (num-gpus-per-trial * num-parallel-trials) = 20 GPUs T4. **Uma vez que este número está acima da quota predefinida, tem de criar um pedido de quota na IU do seu projeto. Para mais informações, consulte o artigo Peça uma quota de dispositivos adicional para o projeto. Consulte a mesma documentação para necessidades de quota personalizadas.
- Tempo de execução: (total-trials * training-time-per-trial)/(num-parallel-trials)/24 = aproximadamente 4 dias
- Horas de GPU: (total-trials * training-time-per-trial * num-gpus-per-trial) = 1920 horas de GPU T4.
- Custo: aproximadamente 2400 $
Para mais informações sobre o custo de conceção de tarefas de proxy, consulte o artigo Conceção de tarefas de proxy O custo é semelhante ao da preparação de 12 modelos (a fase 2 na figura usa 10 modelos):
- Quota de GPU usada: igual à execução da fase 2 na figura.
- Custo: (12/10) * stage-2-cost-for-10-models = ~$2880
Custo total: aproximadamente 12 680 $. Consulte a página de preços para calcular o preço exato.
Estes custos de pesquisa da fase 1 destinam-se à pesquisa até atingir o ponto de convergência e para obter o máximo ganho de desempenho. No entanto, não espere até que a pesquisa convirja. Pode esperar ver um menor aumento no desempenho com um custo de pesquisa mais baixo se executar a fase 2 da preparação completa com o melhor modelo até agora, se a curva de recompensa de pesquisa tiver começado a crescer. Por exemplo, para a pesquisa de gráficos apresentada anteriormente, não aguarde até atingir as 2000 tentativas de convergência. Pode ter encontrado melhores modelos com 700 ou 1200 testes e pode executar a formação completa da fase 2 para esses modelos. Pode sempre parar a pesquisa mais cedo para reduzir o custo. Também pode fazer a preparação completa da fase 2 em paralelo enquanto a pesquisa está em execução, mas certifique-se de que tem quota de GPU para suportar uma tarefa paralela adicional.
Resumo do desempenho e do custo
A tabela seguinte resume alguns pontos de dados com diferentes exemplos de utilização e o desempenho e o custo associados.
Exemplos de utilização e funcionalidades
As funcionalidades de pesquisa de arquitetura neural são flexíveis e fáceis de usar. Um utilizador novato pode usar espaços de pesquisa pré-criados, o pré-criador e os blocos de notas sem qualquer configuração adicional para começar a explorar o Vertex AI Neural Architecture Search para o respetivo conjunto de dados. Ao mesmo tempo, um utilizador especialista pode usar a pesquisa de arquitetura neural com o seu formador personalizado, espaço de pesquisa personalizado e dispositivo de inferência personalizado, e até mesmo expandir a pesquisa de arquitetura para exemplos de utilização não relacionados com visão.
A pesquisa de arquitetura neural oferece formadores e espaços de pesquisa pré-criados para serem executados em GPUs para os seguintes exemplos de utilização:
- Formadores do Tensorflow com resultados baseados em conjuntos de dados públicos publicados num notebook
- Deteção de objetos de imagem com espaços de pesquisa completos (SpineNet)
- Classificação com espaços de pesquisa de estrutura pré-criada (MnasNet)
- Deteção de objetos de nuvem de pontos 3D LiDAR com espaços de pesquisa completos pré-criados
- Pesquisa com restrições de latência e memória para dispositivos de segmentação
- Preparadores do PyTorch a serem usados apenas como exemplo de tutorial
- Exemplo de espaço de pesquisa de segmentação de imagens médicas 3D do PyTorch
- Classificação MNasNet baseada no PyTorch
- Pesquisa com restrições de latência e memória para dispositivos de segmentação
- Espaços de pesquisa de vanguarda pré-criados adicionais baseados no Tensorflow com código
- Dimensionamento do modelo
- Aumento de dados
O conjunto completo de funcionalidades que a pesquisa de arquitetura neural oferece pode ser usado facilmente para arquiteturas e exemplos de utilização personalizados também:
- Uma linguagem de pesquisa de arquitetura neural para definir um espaço de pesquisa personalizado sobre possíveis arquiteturas neurais e integrar este espaço de pesquisa com código de preparação personalizado.
- Espaços de pesquisa pré-criados de vanguarda prontos a usar com código.
- Preparado para usar o formador pré-criado, com código, que é executado na GPU.
- Um serviço gerido para a pesquisa de arquitetura, incluindo
- Um controlador de pesquisa de arquitetura neural que faz a amostragem do espaço de pesquisa para encontrar a melhor arquitetura.
- Docker/bibliotecas pré-criadas, com código, para calcular a latência/FLOPs/memória em hardware personalizado.
- Tutoriais para ensinar a utilização do NAS.
- Um conjunto de ferramentas para criar tarefas de proxy.
- Orientações e exemplo para uma preparação eficiente do PyTorch com o Vertex AI.
- Suporte da biblioteca para relatórios e análise de métricas personalizadas.
- Google Cloud IU da consola para monitorizar e gerir tarefas.
- Blocos de notas fáceis de usar para iniciar a pesquisa.
- Suporte de biblioteca para gestão da utilização de recursos de GPU/CPU ao nível de granularidade por projeto ou por tarefa.
- Nas-client baseado em Python para criar dockers, iniciar trabalhos de NAS e retomar um trabalho de pesquisa anterior.
- Google Cloud Apoio ao cliente baseado na IU da consola.
Contexto
A pesquisa de arquitetura neural é uma técnica para automatizar a conceção de redes neurais. Gerou com êxito vários modelos de visão computacional de vanguarda nos últimos anos, incluindo:
Estes modelos resultantes estão a liderar todas as 3 classes principais de problemas de visão computacional: classificação de imagens, deteção de objetos e segmentação.
Com a pesquisa de arquitetura neural, os engenheiros podem otimizar os modelos para precisão, latência e memória na mesma avaliação, o que reduz o tempo necessário para implementar modelos. A pesquisa de arquitetura neural explora muitos tipos diferentes de modelos: o controlador propõe modelos de ML, depois forma e avalia modelos e itera mais de 1000 vezes para encontrar as melhores soluções com restrições de latência e/ou memória nos dispositivos de segmentação. A figura seguinte mostra os componentes principais da arquitetura da framework de pesquisa:
- Modelo: uma arquitetura neural com operações e ligações.
- Espaço de pesquisa: o espaço de modelos possíveis (operações e ligações) que podem ser concebidos e otimizados.
- Docker de preparação: código de preparação personalizável pelo utilizador para preparar e avaliar um modelo, bem como calcular a precisão do modelo.
- Dispositivo de inferência: um dispositivo de hardware, como a CPU/GPU, no qual a latência e a utilização de memória do modelo são calculadas.
- Recompensa: uma combinação de métricas do modelo, como a precisão, a latência e a memória usadas para classificar os modelos como melhores ou piores.
- Controlador de pesquisa de arquitetura neural: o algoritmo de organização que (a) extrai amostras dos modelos do espaço de pesquisa, (b) recebe as recompensas dos modelos e (c) fornece o conjunto seguinte de sugestões de modelos para avaliar e encontrar os modelos mais ideais.
Tarefas de configuração do utilizador
A pesquisa de arquitetura neural oferece um formador pré-criado integrado com espaços de pesquisa pré-criados que podem ser facilmente usados com blocos de notas fornecidos sem configuração adicional.
No entanto, a maioria dos utilizadores precisa de usar o seu formador personalizado, espaços de pesquisa personalizados, métricas personalizadas (memória, latência e tempo de preparação, por exemplo) e recompensa personalizada (combinação de aspetos como precisão e latência). Para isso, tem de:
- Defina um espaço de pesquisa personalizado através da linguagem de pesquisa de arquitetura neural fornecida.
- Integre a definição do espaço de pesquisa no código do formador.
- Adicione relatórios de métricas personalizadas ao código do formador.
- Adicione uma recompensa personalizada ao código de treinador.
- Crie um contentor de preparação e use-o para iniciar tarefas de pesquisa de arquitetura neural.
O diagrama seguinte ilustra esta situação:
Serviço de pesquisa de arquitetura neural em funcionamento
Depois de configurar o contentor de preparação para utilização, o serviço Neural Architecture Search inicia vários contentores de preparação em paralelo em vários dispositivos de GPU. Pode controlar o número de testes a usar em paralelo para a preparação e o número total de testes a iniciar. Cada training-container recebe uma arquitetura sugerida do espaço de pesquisa. O contentor de preparação cria o modelo sugerido, faz a preparação/avaliação e, em seguida, comunica as recompensas ao serviço de pesquisa de arquitetura neural. À medida que este processo avança, o serviço de pesquisa de arquitetura neural usa o feedback de recompensa para encontrar arquiteturas de modelos cada vez melhores. Após a pesquisa, tem acesso às métricas comunicadas para análise mais detalhada.
Vista geral do percurso do utilizador para a Neural Architecture Search
Os passos de alto nível para realizar uma experiência de Neural Architecture Search são os seguintes:
Configurações e definições:
- Identifique o conjunto de dados etiquetado e especifique o tipo de tarefa (por exemplo, deteção ou segmentação).
- Personalize o código de treinador:
- Use um espaço de pesquisa pré-criado ou defina um espaço de pesquisa personalizado através da linguagem de pesquisa de arquitetura neural.
- Integre a definição do espaço de pesquisa no código do formador.
- Adicione relatórios de métricas personalizadas ao código do formador.
- Adicione uma recompensa personalizada ao código de treinador.
- Crie um contentor de formador.
- Configure parâmetros de teste de pesquisa para a preparação parcial (tarefa de proxy). O
preparação da pesquisa deve terminar rapidamente (por exemplo, 30 a 60 minutos)
para preparar parcialmente os modelos:
- O número mínimo de épocas necessárias para que os modelos com amostragem recolham recompensas (o número mínimo de épocas não tem de garantir a convergência do modelo).
- Hiperparâmetros (por exemplo, taxa de aprendizagem).
Execute a pesquisa localmente para garantir que o contentor integrado do espaço de pesquisa pode ser executado corretamente.
Inicie a tarefa de Google Cloud pesquisa (fase 1) com cinco testes e verifique se os testes de pesquisa cumprem os objetivos de tempo de execução e precisão.
Inicie a tarefa de Google Cloud pesquisa (fase 1) com mais de 1000 testes.
Como parte da pesquisa, defina também um intervalo regular para formar os N principais modelos (fase 2):
- Hiperparâmetros e algoritmo para a pesquisa de hiperparâmetros. Normalmente, a fase 2 usa a mesma configuração que a fase 1, mas com definições mais elevadas para determinados parâmetros, como passos/épocas de preparação e número de canais.
- Critérios de paragem (o número de épocas).
Analise as métricas comunicadas e/ou visualize arquiteturas para obter estatísticas.
Uma experiência de pesquisa de arquitetura pode ser seguida de uma experiência de pesquisa de escalabilidade e, posteriormente, de uma experiência de pesquisa de aumento.
Ordem de leitura da documentação
- (Obrigatório) Configure o seu ambiente
- (Obrigatório) Tutoriais
- (Obrigatório apenas para clientes do PyTorch) Preparação eficiente do PyTorch com dados na nuvem
- (Obrigatório) Práticas recomendadas e fluxo de trabalho sugerido
- (Obrigatório) Design da tarefa de proxy
- (Obrigatório apenas quando usar formadores pré-criados) Como usar espaços de pesquisa pré-criados e um formador pré-criado
Referências
- Usar a aprendizagem automática para explorar a arquitetura de redes neurais
- MnasNet: Towards Automating the Design of Mobile Machine Learning Models
- EfficientNet: melhorar a precisão e a eficiência através do AutoML e do dimensionamento de modelos
- NAS-FPN: Learning Scalable Feature Pyramid Architecture for Object Detection
- SpineNet: Learning Scale-Permuted Backbone for Recognition and Localization
- RandAugment