Machine Learning em Open Source
Gema Parreño Senior Data Scientist

Code Europe: Machine Learning em Open Source

Nas movimentadas salas da conferência Code Europe, tivemos o privilégio de subir ao palco como oradores. Para além da oportunidade e da emoção de partilhar os nossos conhecimentos, a verdadeira magia desta experiência desenrolou-se durante os momentos de ligação e colaboração que tiveram lugar fora do palco. Nesta publicação, convidamo-lo a acompanhar-nos numa cativante viagem através do poder da aprendizagem e do networking criado na conferência, onde as mentes se encontraram, as ideias se fundiram e nasceram novas oportunidades.

Conversas ponderadas e perspicazes sobre Machine Learning, hacking, modelos de negócio orientados para código aberto e criação de ecossistemas de programadores que surgiram naturalmente.  Além disso, partilhámos a nossa experiência de contribuição para a ferramenta de experimentação da extensão DVC VSCode.

Projeto TEMPA. Hackear Teslas por diversão e sem Profit Figure

Fig 1. Logótipo do projeto TEMPA. Uma das apresentações aqui. Projeto no Github aqui

Uma das sessões mais interessantes a que assistimos foi uma palestra que revelou a experiência fascinante de hackear a Tesla, por Martin Herfurt. O orador, especialista em cibersegurança, partilhou os seus conhecimentos sobre as vulnerabilidades dos sistemas da Tesla e demonstrou como o hacking ético desempenha um papel vital na melhoria da segurança do automóvel. Foi revelador testemunhar as técnicas complexas utilizadas para descobrir potenciais vulnerabilidades e ver como contribuiu para o panorama geral da segurança ao partilhar os seus conhecimentos com a comunidade OpenSource.

Durante a nossa conversa com Martin, descobrimos que a sua motivação provinha de um profundo sentido da curiosidade e da sua experiência em tecnologia Bluetooth - de facto, algumas pessoas até desligavam o Bluetooth quando ele estava por perto. Ele estava particularmente interessado em explorar a interface oferecida pela Tesla.

Embora o arranque do projeto tenha sido relativamente fácil, havia ainda desafios a ultrapassar. Martin considerou fácil aceder e extrair as definições de proto-buff. No entanto, o código estava muitas vezes “escondido”, o que exigia um grande sentido de discernimento para identificar as referências e compreender o seu contexto. Além disso, foi necessário deduzir alguns dos pormenores a partir da assinatura. 

O projeto TEMPA é muito mais do que inspiração, e conhecer o Martin nesta conferência foi uma das coisas que levaremos sempre connosco. Para além do seu fascinante projeto, tivemos a oportunidade de partilhar a importância de trazer a exploração e a mentalidade maker para as conferências.

→ Grandes modelos linguísticos nos próprios dados

A missão da Deepset.ai é reduzir tempo de lançamento no mercado para acelerar a criação de produtos baseados em PNL. Ajuda os programadores, fornecendo-lhes ferramentas para desenvolverem os seus desafios de negócio orientados para a linguagem. Cobre a última milha utilizando documentos ad hoc para tarefas principalmente de pergunta e resposta, integrando-se com outras ferramentas de pesquisa semântica, como o QDrant. 

A abordagem que utilizam para o efeito é bastante interessante: modelos LLM pré-treinados que trazem ao de cima o raciocínio e o conhecimento do domínio extraídos da pesquisa semântica a partir de um conjunto de documentos que o utilizador forneça para criar o produto de perguntas e respostas. Estes modelos têm registado um crescimento devido ao grande cenário de exploração de modelos linguísticos. Além disso, o compromisso da Deepset.ai com o código aberto é bastante tangível com o seu HayStack de código aberto. 

A missão da Deepset.ai é reduzir tempo de lançamento no mercado para acelerar a criação de produtos baseados em PNL

Dimitry deu uma boa palestra e explorou este cenário de perguntas e respostas com uma Demo que demonstrava um cenário antes e depois do fracasso do Silicon Valley Bank. Tivemos a oportunidade de apresentar uma proposta em conjunto e partilhar algumas reflexões sobre o papel dos colaboradores no ambiente de código aberto e os atores do ecossistema.

→ CI/CD de nova geração com Gitops e Progressive Delivery

Tivemos uma conversa interessante, acolhedora, divertida e também didática, com Kevin a explorar GitOps com RedHat. Para nós, uma das melhores ferramentas apresentadas foi o OpenShift Pipelines, um sistema de CI/CD sem servidor que executa pipelines com todas as dependências necessárias em containers isolados para automatizar implementações em múltiplas plataformas, abstraindo os detalhes de implementação subjacentes, o que me lembrou do esquema de pipeline que utilizamos em Machine Learning dentro das práticas MLops.  Os participantes da palestra estavam a jogar um jogo de corridas, divididos em duas equipas, e mais tarde o Kevin implementou uma nova funcionalidade no Openshift para que pudéssemos jogar o jogo com mecânicas transformadas! Ele guiou-nos para o código e para os ficheiros de configuração .yaml.

gitops repositorios

Fig 2. O GitOps utiliza os repositórios git como uma única fonte de informação para fornecer infraestruturas como código. O código enviado é verificado no processo de CI, enquanto o processo de CD verifica e impõe requisitos para aspetos como segurança, infraestrutura, código ou quaisquer outros limites definidos para a estrutura da aplicação.  Saiba mais sobre como a Red Hat vê as GitOps aquí

Também explorámos em conjunto os prós e contras da Progressive Delivery, que envolve um processo de lançamento incremental em tempo e/ou percentagem que permite aos programadores medir o sucesso de um lançamento através de diferentes métricas. O Kevin apresentou razões pelas quais isso pode realmente valer a pena: desde a implementação e lançamento em produção mais rápido até a diminuição do tempo de inatividade e também a limitação de algumas "tragédias", além de menos burlas ou a criação de serviços "falsos" pouco fiáveis. 

Num cenário não progressivo, poderíamos abordar as versões com um esquema de blue-green deployments em que enfrentamos um cenário de tudo ou nada (A), e o que fazemos quando as coisas não correm bem como esperado é ter um rápido rollback. No cenário progressivo, uma pequena percentagem pode estar exposta à produção, e podemos aumentar com base em decisões baseadas em dados, o que chamamos de Canary Release (B). Com este modelo mental, surgem algumas abordagens diferentes: podemos fazer Traffic Mirroring, em que, sem a utilização da nova versão, podemos obter tráfego para medir o desempenho. Também podemos utilizar a abordagem Dark Canary, em que subseleccionamos um conjunto de utilizadores com base em alguns critérios (novos utilizadores ou utilizadores intensivos) e testamos o desempenho do lançamento. Outra abordagem progressiva é direcionar os sinalizadores de características para uma determinada condição.

diagramas kevin dubois

Fig3 Diagramas procedentes dos diapositivos de Kevin Dubois. A figura A explica a implementação do Blue Green e a figura B explora o Canary Releases com as suas diferentes variantes.

Quando pensamos em como poderíamos aplicar isto em Machine Learning num cenário de produção, poderíamos pensar em lançar um modelo recém-treinado com base em novos dados, e como poderíamos usar Progressive Delivery para medir coisas além do desempenho da inferência, como o desvio de dados ou o desvio do modelo sem comprometer ou reduzir o potencial impacto negativo das decisões derivadas.

Partilhar algum tempo com o Kevin depois da palestra foi ótimo e tivemos a oportunidade de lhe fazer algumas perguntas sobre a mentalidade sustentável dos colaboradores no ambiente de Open Source e também falar sobre DevRelism. Estou contente por termos encontrado um ponto em comum numa leitura fantástica como esta.

O Senhor das Palavras: O regresso das experiências com DVC


Fig4 A arquitetura dos Transformers a vários níveis. Primeiro vista como uma caixa negra, com os seus principais sub-módulos e os mecanismos de attention. 
(Autora Gema Parreño)

A palestra "O Senhor das Palavras" teve como principal objetivo explicar a arquitetura dos Transformadores da Rede Neuronal no contexto da tradução e partilhar a exploração Open Source com a DVC Extension para VSCode, com alguma narrativa baseada no Senhor dos Anéis.

Com o seu mecanismo de attention inovador no âmbito da sua arquitetura, os Transformers surgiram como um avanço fundamental neste domínio. Para attention esta arquitetura é tudo o que precisa até aos dias de hoje. É uma arquitetura que envelheceu bem e, juntamente com a gestão de dados e os avanços do hardware, proporcionou-nos avanços que ultrapassaram o estado da arte em termos de velocidade e precisão em várias tarefas.

Diretamente, o mecanismo de Attention pode ser visto como uma transformação dependente de dados de uma sequência com uma operação de scaled dot-product que nos permite ver e processar o contexto numa sequência de uma forma inovadora. No contexto da Tradução Automática Neural, a derivada produz aquilo a que chamamos de Attention Head, que mapeiam, com uma pontuação, a relação entre os elementos das duas sequências. Com a multi-head attention, escalamos a attention e repetimos esta operação várias vezes para encontrar as relações entre frases. A self-attention vai um pouco mais longe e mapeia a relação entre os elementos de uma única sequência, encontrando novas relações dependentes do contexto dentro dessa sequência. Com estes três conceitos bastante conceptuais, podemos compreender melhor a diferença entre os Transformers e outras arquiteturas, como os modelos Seq2Seq.

modelos seq2seq

Fig5 A self-attention permite que o modelo de aprendizagem automático compreenda que a mesma palavra pode ter diferentes significados, dependendo do seu contexto. Aqui, a palavra "correto" refere-se tanto à confirmação de algo como à direção, dependendo do seu contexto.  

O moonshot do projeto é explorar se existe uma arquitetura de Transformers treinada com os seus parâmetros correspondentes que se traduza razoavelmente bem em várias línguas. Para tal, explorámos o DVC Open Source VS Code, que basicamente transforma o IDE numa plataforma de experimentação de Machine Learning.

O DVC permite estruturar agnosticamente o seu código e lançar experiências sem pequenas alterações: além disso, pode acompanhar as experiências com git, permitindo-lhe manter as experiências ou criar ramificações a partir delas. A interface de utilizador fornece uma tabela e secções de gráficos que realizam um seguimento e nos permitem selecionar as melhores experiências, persisti-las e lançar outras, assistindo à aprendizagem “em direto” a partir dali. Para que isto funcione, precisamos de definir um pipeline com um ficheiro dvc.yaml que encapsula as diferentes fases e um ficheiro parmas.yaml que nos permite lançar diferentes experiências, separando os princípios de definição de instanciação. 

Durante a palestra tivemos a oportunidade de dar feedback sobre a experiência de incorporação, encontrar um bug e indexar um obstáculo, o que foi fantástico! Para mais informações sobre o projeto, saiba aqui.

Da conferência resultaram muitas conversas com os participantes e outros oradores sobre o cenário de rápido crescimento do Open Machine Learning, incluindo princípios e modelos explorados em algumas das palestras.

A conferência foi muito bem organizada e aprendeu-se imenso. Muitos parabéns a toda a equipa e esperamos voltar a encontrar-nos em breve.