Dias sempre dinâmicos - Engenharia de ML na LightMetrics

Para quem ama desafios, trabalhar com ML é um novo desafio a cada dia — nenhum dia é igual ao outro.

Uma imagem mostrando redes neurais

Para quem ama desafios, trabalhar com ML é um novo desafio a cada dia — nenhum dia é igual ao outro.

No início de um novo projeto, há muita empolgação em entender os requisitos e ir para a prancheta para descobrir o que pode funcionar melhor. A fase de coleta de dados é um pouco desafiadora, às vezes tediosa, especialmente se dados anotados não estiverem disponíveis comercialmente, mas a empolgação com o resultado final nos mantém motivados. Sem mencionar que o desafio de treinar um bom modelo, que seja robusto e generalize bem mesmo com poucos dados, é algo que qualquer bom engenheiro de ML ficará ansioso para enfrentar.

Assim que você tem uma abordagem em mente, realiza alguns experimentos rápidos para ver como as coisas funcionam — dá um pulo na mesa de um colega com quem você gosta de discutir e troca ideias. Depois, é hora de apresentar as descobertas feitas até o momento para a equipe maior.

Agora começa a fase em que você treina a rede neural para a tarefa escolhida com muitos dados — para obter um resultado de referência. Isso dá início à minha fase favorita, onde você busca constantemente melhorar o desempenho — ajustar funções de perda e projetar novas funções de perda é um dos meus truques favoritos, junto com uma boa estratégia de aumento de dados.

Uma vez que a rede neural está funcionando bem, a complexidade computacional é o próximo desafio — haverá um orçamento de MFLOPS, então você tem duas opções: ajustar a arquitetura da rede neural de forma a reduzir a complexidade sem sacrificar muito o desempenho, ou recorrer a outras técnicas, como quantização e poda.

Às vezes, isso funciona de primeira; outras vezes, não. Haverá um ciclo envolvendo melhorias no treinamento, redução da complexidade e avaliação do desempenho até que a precisão necessária seja alcançada. 

O modelo é então convertido para um formato adequado para edge AI — para que as GPUs e DSPs da plataforma de destino sejam aproveitadas da melhor maneira possível. Existem restrições impostas pelos fornecedores de SOC que adicionam outra dimensão ao conjunto de desafios.

Finalmente, você tem um modelo que atende aos requisitos de precisão e latência na plataforma de destino e está pronto para testes de campo. Geralmente, surgirão problemas durante os testes de campo que precisarão ser resolvidos e, agora sim, o modelo está pronto para uma versão beta para os clientes.

Você pode testar o quanto quiser, mas usar um modelo em campo, em escala, é outra história. Responder a problemas reais e resolvê-los de forma ágil é uma das características que mais definem um engenheiro de ML — é o que separa os bons dos excelentes.

Repetir o processo — essa é a vida de um engenheiro de ML na minha experiência, e eu adoro isso. Ter uma boa equipe em um ambiente de apoio faz toda a diferença para que sua mente fique livre para pensar em ML.

O ML na LightMetrics envolve o uso de redes neurais em dados de vídeo e imagem — vídeos de múltiplas câmeras em um veículo são processados em tempo real, na borda (edge). Se ML já é um desafio, fazê-lo na borda é outro nível. Trabalhamos em alguns dos tópicos mais avançados — aprender com menos dados, aprendizado autossupervisionado/semissupervisionado, busca de arquitetura neural com foco em redes eficientes, poda de redes neurais, IA explicável, entre outros. Estamos estabelecendo colaborações sólidas com instituições acadêmicas que compartilham da nossa visão.

O ML na LightMetrics é diferente de tudo; ele ajuda você a desenvolver experiência e domínio trabalhando em todo o ciclo de vida de ML em uma empresa de produtos de ponta. Isso não tem preço — não existem muitas oportunidades que possam oferecer algo assim.

E sim, estamos contratando. Liste os requisitos abaixo:

  • Sólida compreensão dos fundamentos de aprendizado de máquina e redes neurais
  • Experiência prévia trabalhando com imagens/vídeos é obrigatória
  • Alto nível de proficiência na escrita de código de produção em C++
  • Experiência no uso de OpenCV para desenvolver aplicações de visão computacional
  • Proficiência em Python é necessária — usamos Python para desenvolver algoritmos e C++ na borda
  • Experiência com frameworks de aprendizado comuns, como TensorFlow ou PyTorch
  • Sólida base em algoritmos e estruturas de dados
  • Experiência na otimização de código para memória e desempenho usando ferramentas de profiling é um diferencial
  • Preferência por 1 ano ou mais de experiência, mas estamos abertos a contratar recém-formados com experiência comprovada em ML por meio de projetos, etc.

Se você é um engenheiro de ML que deseja trabalhar em todo o ciclo de vida de um projeto de ML e sentir a emoção e a satisfação de ver um modelo que você treinou gerar valor para os clientes, entre em contato com careers@lightmetrics.co com seu currículo e uma carta de apresentação ou um parágrafo sobre por que você acredita que se encaixa bem nesta função.