A IA tornou-se o núcleo de tudo o que fazemos na Intuit.
Há alguns anos, decidimos incorporar IA em nossa plataforma de desenvolvimento com o objetivo de acelerar a velocidade de desenvolvimento e aumentar a satisfação individual do desenvolvedor. Construir recursos de produtos baseados em IA é um processo complexo e demorado, por isso precisávamos simplificá-lo para permitir que as equipes de desenvolvimento o fizessem com velocidade e escala. Obtivemos sucesso em uma abordagem combinada para o desenvolvimento de produtos - uma união das habilidades e conhecimentos de dados, IA, análise e equipes de engenharia de software - para construir uma plataforma alimentada por IA componentizada - o que nós da Intuit chamamos de Serviços de IA reutilizáveis ( RAISE) e experiências nativas de IA reutilizáveis (RAIN). Isso permite que os desenvolvedores forneçam novos recursos para os clientes rapidamente e criem e integrem a IA em produtos sem os típicos pontos problemáticos ou lacunas de conhecimento.
Hoje, não são apenas nossos clientes que se beneficiam de nossa plataforma de tecnologia orientada por IA; nossos desenvolvedores também. Seja criando experiências de produtos inteligentes ou mantendo o design consistente em vários produtos , nosso investimento em uma infraestrutura robusta de IA possibilitou que os tecnólogos de toda a empresa construíssem recursos de IA em produtos Intuit em escala para nossos mais de 100 milhões de consumidores globais e pequenos clientes empresariais.
Neste artigo, compartilharemos a jornada da Intuit para democratizar a IA em nossa organização, juntamente com as lições aprendidas ao longo do caminho.
Simplificando o caminho para a integração da IA
No começo, quando nossos desenvolvedores queriam adicionar recursos de IA a seus projetos, eles não podiam simplesmente conectar uma biblioteca ou chamar um serviço. Eles tiveram que entrar em contato com nossos cientistas de dados para criar ou integrar um modelo. A maioria dos modelos de aprendizado de máquina (ML) é criada sob medida porque os dados geralmente são específicos de um processo ou domínio e não se traduzem bem fora do cenário identificado. Embora isso esteja mudando com a IA multimodal , na prática, a maioria dos sistemas ainda treina em um corpus específico onde se espera que eles sejam executados (imagens, texto, voz etc.).
Percebemos que, para tornar mais fácil para nossos desenvolvedores integrar a IA da mesma forma que fariam com qualquer outro recurso ou componente, tínhamos que superar três desafios principais:
- Comunicação entre domínios
- Padrões de qualidade de dados
- Melhorias de processo
Comunicação entre domínios: colocando desenvolvedores e cientistas de dados na mesma página (e pilha de tecnologia)
Como as equipes de desenvolvimento de produtos trabalham de maneiras diferentes, alinhar-se a uma linguagem comum e inclusiva ao discutir como integrar a IA ao processo de desenvolvimento foi fundamental para promover a colaboração.
Engenheiros de software e cientistas de dados usam vocabulário diferente em seu trabalho diário. A terminologia da ciência de dados, por exemplo, é muito precisa, especialmente em torno de conceitos como desempenho do modelo, e pode ser difícil de entender para não especialistas. As equipes de dados podem usar termos como ROC (curva característica de operação do receptor), macro-F1 ou perda de hamming. Da mesma forma, os engenheiros de software geralmente se concentram na durabilidade, escalabilidade e comportamentos de sistemas distribuídos. Essa linguagem tecnicamente específica pode perder o significado na tradução.
Simplificar essa terminologia técnica — e ter uma boa documentação para explicar o que significa — facilitou muito a comunicação entre desenvolvedores e cientistas de dados. Com o tempo, os desenvolvedores adquirirão novos conhecimentos à medida que seu nível de conforto específico de domínio melhorar. Mas não queremos que todo desenvolvedor e cientista de dados tenha que aprender todo um novo conjunto de jargões apenas para começar.
Para resolver isso, ajustamos a forma como nos comunicamos com base no contexto: usando linguagem precisa quando necessário (para fins de precisão) e verborragia mais aproximada quando a mesma mensagem pode ser transmitida por meio de termos mais acessíveis. Por exemplo, quando os cientistas de dados descreviam entidades de dados, descobrimos que era mais rápido para os engenheiros entenderem uma vez que eles eram traduzidos em linhas, colunas e campos, bem como em objetos e valores de variáveis.
Também descobrimos que mapear tópicos complexos para terminologia específica de negócios ajudou a colocar todos na mesma página. Por exemplo, traduzir termos como classificação, regressão e pontuações de propensão em casos de uso de negócios, como previsões de preços ou probabilidade de nova assinatura, tornou os conceitos mais acessíveis. Por fim, descobrimos que investir em encontrar um terreno comum e criar uma abordagem mais inclusiva para a comunicação resultou em melhor colaboração.
Igualmente crucial para o nosso sucesso foi unir os mundos dos desenvolvedores de software e cientistas de dados, integrando perfeitamente a IA aos processos existentes. Tínhamos que encontrar uma maneira de oferecer suporte às pilhas de tecnologia com as quais nossos desenvolvedores estavam acostumados, então mapeamos as interfaces no mundo da IA em construções com as quais eles estavam familiarizados. Construímos pipelines de integração/entrega contínua (CI/CD), APIs REST (Representational State Transfer) e GraphQL e fluxos de dados para criar confiança na integração da plataforma em vários domínios.
Com todos falando o mesmo idioma e trabalhando nos mesmos fluxos de trabalho, voltamos nossa atenção para os dados dos quais dependemos para criar recursos orientados por IA.
Qualidade dos dados: ser bons administradores de dados significa alinhar-se aos padrões de qualidade
Como uma empresa fintech que lida com informações confidenciais dos clientes, temos um nível mais alto de acesso a dados do que pode ser o padrão em outros setores. Cumprimos um conjunto de princípios de administração de dados , começando, é claro, com o consentimento do cliente para usar seus dados.
Embora os tecnólogos estejam ansiosos para aproveitar a IA/ML para oferecer seus benefícios aos clientes, usá-la para resolver os problemas certos da maneira certa envolve tomada de decisão e especialização diferenciadas. Embora a integração tradicional de API e o gerenciamento de estado em um mundo de microsserviços distribuídos já seja uma tarefa desafiadora para a maioria das equipes de engenharia, o desenvolvimento orientado por IA requer um nível diferente de complexidade: identificar os casos de uso ideais, garantir que os dados estejam disponíveis, e capturando as métricas e feedback corretos.
Mas no centro da IA/ML estão os dados, e esses dados precisam ser bons para obter bons resultados. Alinhamos um processo de armazenamento e estruturação de dados, criação de ciclos de feedback e construção sistemática de qualidade e governança de dados em nossa plataforma.
Ter dados limpos não era negociável - não podíamos permitir que nossos dados principais fossem poluídos. Ao mesmo tempo, a velocidade era crucial. Esses dois fatores às vezes podem entrar em conflito. Quando o fizeram, decidimos lidar com as coisas caso a caso, pois logo ficou claro que uma política geral não funcionaria.
Depois que um modelo de ML é treinado e colocado em produção, não é o fim de sua necessidade de dados. Os modelos de ML precisam de um loop de feedback de sinais de dados do usuário para melhorar suas previsões. Reconhecemos que esse era um território novo para alguns de nossos desenvolvedores e que eles precisavam de mais tempo para que os modelos reunissem resultados. Depois que os desenvolvedores se acostumaram com isso, os ciclos de feedback tornaram-se mais integrados ao processo.
No entanto, os desenvolvedores que criaram esses loops também precisavam ter acesso aos dados. A maioria de nossos cientistas de dados está acostumada a escrever consultas SQL grandes e complexas. No entanto, você não pode esperar que uma equipe de engenharia que deseja aproveitar o ML em seu trabalho diário para treinar um algoritmo para escrever consultas SQL altamente complexas em uma tabela Hive de back-end, pois eles podem não ter a mesma experiência. Em vez disso, configuramos terminais GraphQL ou REST API que permitiram aos desenvolvedores usar uma interface familiar.
Tínhamos uma linguagem compartilhada e sabíamos como usar os dados em nossos recursos. Agora precisávamos enfrentar a parte mais difícil e demorada do desenvolvimento de recursos: os processos de desenvolvimento e as pessoas neles.
Deficiências do processo: esta reunião poderia ter sido uma API
No passado, quando um desenvolvedor queria criar um novo recurso com IA, o processo era mais ou menos assim:
- O desenvolvedor tem uma ideia (por exemplo, um preenchimento automático alimentado por IA).
- O desenvolvedor fala com o gerente de produto para ver se é algo do qual os clientes se beneficiariam.
- O gerente de produto fala com um cientista de dados de back-end para descobrir se os dados estão disponíveis.
- O gerente de produto fala com os engenheiros de front-end e back-end para ver se o campo de texto relevante pode ser modificado.
- O engenheiro de back-end fala com o cientista de dados para descobrir como conectar os dados.
- O desenvolvedor cria o recurso.
Decidimos simplificar o processo, permitindo que as equipes de desenvolvimento criem recursos baseados em IA em uma fração do tempo, como segue:
- Introduziu padrões rigorosos para integração de software, incluindo sintaxe e semântica adequadas para descrever como diferentes tipos de software interagem entre si.
- Componentes e ferramentas de software de autoatendimento criados para facilitar o consumo e a implementação desses padrões.
- De forma contínua, estamos construindo mecanismos de descoberta para que esses componentes possam ser facilmente encontrados e consumidos.
Então, como esse processo aprimorado funciona na prática? Usando o mesmo exemplo de preenchimento automático com IA, forneceríamos ao desenvolvedor um componente de interface do usuário que recebe automaticamente as entradas do usuário e as alimenta em nosso data lake por meio de um pipeline pré-criado. O desenvolvedor apenas adiciona o componente de interface do usuário à sua base de código de front-end e a IA imediatamente começa a aprender o que o usuário digitou para começar a gerar previsões.
Hoje, se uma equipe de engenharia considera um recurso valioso, a liderança da ciência de dados fornece acesso aos dados, algoritmos, instalações para treinar o algoritmo e qualquer outra coisa necessária de uma perspectiva de IA ou dados. Chega de esperar meses por uma solicitação do Jira - os desenvolvedores podem simplesmente entrar, fazer o experimento, obter os resultados e descobrir rapidamente se seu recurso agregará valor ao cliente.
Após a integração da IA, resolvendo a escala
Assim que conseguimos integrar com sucesso a IA em nossa plataforma de desenvolvimento, a próxima pergunta foi: como escalamos isso em nossa organização? Pode levar vários meses para desenvolver um modelo de ML complexo de ponta a ponta. Quando analisamos nossos processos, percebemos que poderíamos fazer melhorias e otimizações que reduziriam isso para semanas, dias e até horas . Quanto mais rápido pudermos construir modelos, mais experimentação podemos fazer e mais benefícios para o cliente podemos oferecer. Mas assim que começamos a escalar, nos deparamos com um novo conjunto de desafios.
O primeiro desafio foi a reutilização. Como mencionado anteriormente, muitos recursos de AI/ML desenvolvidos hoje não são reutilizáveis porque os modelos treinados em dados específicos para um único caso de uso não tendem a generalizar fora desse domínio. Isso significa que os desenvolvedores gastam muito tempo reconstruindo pipelines, retreinando modelos e até escrevendo implementações. Isso retarda o processo de experimentação e limita o que uma organização pode alcançar.
Além disso, como as equipes de desenvolvimento não necessariamente sabem o que já foi construído, elas podem acabar construindo algo que já existe. Descobrimos nosso segundo desafio: a duplicação. No momento em que tínhamos dezenas de equipes construindo pipelines de dados, percebemos que muita duplicação estava acontecendo e que as soluções que funcionavam bem para um grupo não podiam ser dimensionadas para toda a organização.
Foi assim que chegamos aos Reusable AI Services (RAISE) e Reusable AI Native Experiences (RAIN). Os desenvolvedores de software reutilizam componentes o tempo todo. Não há necessidade de reinventar a roda se houver um método, classe ou biblioteca que faça parte do que você está tentando fazer. Como poderíamos aplicar a reutilização em nossa plataforma para resolver a escala com IA?
Por fim, percebemos que o nível de adoção e escalabilidade de IA que queríamos só era viável com uma abordagem de plataforma. Decidimos identificar soluções com potencial para um conjunto mais amplo de aplicativos e convidamos equipes para colaborar como um grupo de trabalho para desenvolver soluções escaláveis. Colocar as pessoas certas na mesma sala permitiu o compartilhamento e a reutilização para impulsionar a inovação sem duplicação. Começamos a criar recursos transversais para serem usados em uma variedade de casos de uso diferentes para qualquer equipe focada na criação de novos produtos e recursos inovadores orientados por IA.
Uma plataforma verdadeiramente orientada por IA: tornando-a RAISE e RAIN
O objetivo era simples: criar os blocos de construção fundamentais que os desenvolvedores precisam para incorporar a IA em nossos produtos com velocidade e eficiência, promovendo a colaboração multifuncional e simplificando os processos de aprovação. Depois de abordar os obstáculos que estavam nos atrasando - as diferentes maneiras pelas quais nossas equipes falavam sobre seu trabalho, melhorando a qualidade dos dados e simplificando os processos -, conseguimos pegar nossos serviços de IA em componentes e transformá-los em RAISEs e RAINs que nossos desenvolvedores poderiam integrar nos produtos finais da Intuit, criando experiências inteligentes e agradáveis para os clientes.
Nossa nova plataforma, com IA em seu núcleo, fornece aos desenvolvedores um mercado de dados, algoritmos e modelos. Padronizamos os metadados que os desenvolvedores e cientistas de dados contribuem para cada modelo, algoritmo e serviço para que sejam visíveis e compreensíveis por meio de nosso serviço de descoberta. Usamos até mesmo esses metadados para descrever os próprios dados por meio de um mapa de dados, facilitando para os desenvolvedores pesquisar na plataforma e verificar se o que eles precisam já está disponível. A plataforma também coleta atualizações e novos lançamentos e solicita continuamente o processo de desenvolvimento para garantir que os recursos baseados em IA forneçam a melhor experiência possível ao cliente. Hoje, os recursos de produtos orientados por IA que costumavam levar meses agora podem ser implementados em questão de dias ou horas.
Nossa jornada para a IA democratizada não foi rápida nem simples. Isso exigiu uma mudança completa de mentalidade e abordagem. Valeu à pena? Absolutamente. Além dos benefícios atraentes para os clientes e negócios, nossos cientistas de dados se tornaram melhores engenheiros de software e, por sua vez, nossos engenheiros desenvolveram uma compreensão mais rica das limitações e possibilidades da IA e como ela pode causar impacto.
Fundamentalmente, acreditamos que a democratização da IA em uma organização capacita as equipes de desenvolvimento a criar produtos que proporcionam experiências excepcionais aos clientes. No entanto, a jornada para alcançar a IA democratizada não é rápida nem simples: requer uma mudança completa de mentalidade e abordagem para a maioria das organizações.
Valeu a pena? Absolutamente. Sem nosso compromisso com a IA democratizada, não teria sido possível para nossas equipes de desenvolvimento oferecer experiências de produtos inteligentes. Ele remove as barreiras à colaboração e, por fim, leva a um ciclo virtuoso para desenvolvedores e cientistas de dados que está impulsionando a inovação com velocidade em escala para nossos consumidores e clientes de pequenas empresas.