Principais tópicos do post:
A Binance usa modelos de aprendizado de máquina para monitorar atividades suspeitas na plataforma.
Um problema conhecido como recursos desatualizados/imprecisos pode impactar negativamente o desempenho de tais modelos, fazendo com que eles façam previsões ou classificações imprecisas.
Nosso pipeline de fluxo – ou processo de alimentação continua do modelo com dados em tempo real – consiste em duas partes: processamento de dados e entrega de dados.
O processamento de dados é dividido em três categorias: processamento em fluxo (stream computing), captura de dados (ingesting) e drenagem de dados (sinking).
A nossa equipe de risco de IA, formada por engenheiros de aprendizado de máquina e cientistas de dados, trabalha dia e noite para combater fraudes e proteger os usuários da Binance. Para conseguir isso, eles usam soluções orientadas por IA que podem identificar e reagir contra possíveis ameaças, como golpes peer-to-peer (P2P), roubo de detalhes de pagamento e ataques de controle de conta (ATO), para citar alguns.
Neste artigo, abordaremos como a nossa equipe de risco de IA usa um pipeline de fluxo para garantir respostas em tempo real, além do que acontece nos bastidores.
Se você não estiver familiarizado com o aprendizado de máquina, recomendamos a leitura da seção a seguir para obter uma visão geral básica de alguns dos termos que usaremos ao longo deste artigo.
Lote e fluxo
Normalmente, os engenheiros de aprendizado de máquina usam dois tipos de pipelines: lote (batch) e fluxo (streaming). Ambos têm os seus prós e contras, dependendo do que a situação exige.
Os pipelines de lote, como o nome indica, processam dados em lotes. Geralmente, os engenheiros os usam para processar grandes volumes de dados.
Por outro lado, os pipelines de fluxo processam dados em tempo real à medida que são coletados. Isso os torna ideais para situações que exigem uma resposta quase instantânea; por exemplo, detectar um hacker antes que ele possa sacar fundos de uma conta roubada.
Ambos os pipelines são igualmente importantes. Os pipelines de fluxo são excelentes para fornecer respostas em tempo real, enquanto os pipelines em lote são melhores para lidar com grande volume de dados.
No caso da prevenção de fraudes, precisamos priorizar os dados em tempo real para evitar uma situação chamada "model staleness", que se refere a modelos de aprendizado de máquina desatualizados ou imprecisos.
O significado de staleness (desatualizado)
Assim como as pessoas podem se tornar menos eficazes em uma tarefa se não estiverem atualizadas com as informações ou técnicas mais recentes, os modelos de aprendizado de máquina também podem se tornar menos precisos se não forem atualizados regularmente de acordo com a situação.
Uma coisa que você não quer é que um modelo projetado para evitar fraude se torne obsoleto. As consequências vão desde o modelo rotular incorretamente uma transação legítima como fraudulenta até não identificar uma conta comprometida. Portanto, usamos um pipeline de fluxo para garantir que os modelos de prevenção de fraudes funcionem com dados em tempo real.
Processamento para um modelo de Ataques de Controle de Conta (ATO)
Vamos dar um exemplo do nosso modelo ATO, o qual treinamos para identificar as contas que os criminosos tomaram com intenção maliciosa. Uma das características que esse modelo mede é a quantidade de transações que um cliente específico fez no último minuto.
Os hackers tendem a seguir um padrão sequencial realizando um grande número de operações, como saques, em um curto período. O nosso sistema deve identificar essa particularidade o mais rápido possível em caso de ameaças potenciais. Isso significa minimizar os atrasos entre o momento em que o usuário realiza uma ação e o momento em que os dados de atividade desse usuário são processados por nossos modelos. Apenas alguns segundos pode ser a diferença entre parar um hacker e um usuário perder todo o seu dinheiro.
Para obter mais informações sobre como os recursos atrasados (delayed features) afetam o desempenho do modelo, você pode consultar este artigo do LinkedIn Engineering: Near real-time features for near real-time personalization.
O papel do processamento em lote
Observe que a importância do recurso desatualizado pode depender do modelo ou recurso que está sendo usado. Por exemplo, alguns recursos são relativamente estáveis. No caso do ATO mencionado acima, também precisaríamos recuperar os dados dos saques do usuário nos últimos 30 dias para calcular uma relação com base nas transações mais recentes.
Nesse caso, o processamento em lote por períodos mais longos como intervalos diários ou de hora em hora é aceitável, apesar da maior desatualização resultante da espera pela chegada de dados nos data warehouses e pela execução periódica de trabalhos em lote.
Equilibrando atualização e latência
Por fim, a escolha entre pipelines em lote e fluxo deve ser feita com base nos requisitos específicos do caso de uso e nos recursos em questão. Considerar cuidadosamente esses fatores nos permite construir sistemas eficazes de prevenção de fraudes que protejam os nossos usuários.
O uso de um pipeline de fluxo nos permite priorizar a atualização sobre a latência para recursos urgentes. O diagrama acima ilustra essa necessidade, pois a contagem de operações para recuperar os recursos deve ser três em vez de duas.
É por isso que um pipeline para o aprendizado de máquina em tempo real é crucial para as operações diárias da nossa equipe de risco.
Detalhes do pipeline de fluxo
O aprendizado de máquina em tempo real da equipe de risco de IA da Binance consiste principalmente em duas partes:
Processamento de dados (parte superior do diagrama)
Entrega de dados (parte inferior do diagrama)
Processamento de dados
Com relação ao processamento de dados, podemos dividir o nosso pipeline de fluxo contínuo (Flink Job) em três categorias com base em suas responsabilidades:
Processamento de fluxo: engenharia de recurso
Captura de dados: captura de recurso
Drenagem de dados: enriquecimento de dados
Processamento de fluxo
O componente de processamento de fluxo do pipeline é responsável pela engenharia de recursos quase em tempo real, o processo de extração de recursos de dados brutos.
Ele faz um processamento prévio de recursos, que os nossos modelos de aprendizado de máquina usarão para a previsão on-line. Existem dois tipos de métodos de processamento para o pipeline de fluxo: baseado em tempo e baseado em evento.
Baseado em tempo. Calcula a quantidade de transações a cada 10 minutos. Esse processo apresenta certa desatualização, mas reduz a latência.
Baseado em evento. Calcula os recursos com base no evento que está acontecendo. Esse processo reduz a desatualização, mas aumenta ligeiramente a latência.
A nossa preferência é não usar processamento em tempo real tanto quanto possível e aqui está o motivo:
Existe uma compensação entre a latência e a desatualização. À medida que as solicitações on-line chegam, o processamento de recursos limita a lógica de processamento para abordagens leves. Embora esse método reduza a desatualização, o processamento do recurso aumenta a latência de previsão.
O dimensionamento independente é desafiador, pois os serviços de previsão e processamento dependem um do outro.
O processamento sob demanda baseado na quantidade de solicitação cria uma pressão de dimensionamento imprevisível.
O processamento em tempo real não é adaptável ao nosso monitoramento do modelo (training-serving skew, discrepância que pode ocorrer entre o desempenho de um modelo durante o treinamento e sua eficácia ao ser implantado) e soluções de monitoramento de recursos, pois os recursos não são armazenados em um banco de dados central, ou seja, um repositório de recursos.
Captura de dados
O componente de captura de dados é responsável pela captura, quase em tempo real, de recursos em nosso repositório de recursos da plataforma de aprendizado de máquina Kafka. Os repositórios de recursos são bancos de dados centralizados que abrigam recursos comumente usados, eles desempenham um papel essencial nos pipelines de aprendizado de máquina. Você pode aprender mais sobre eles nos seguintes artigos: Um olhar profundo em nosso recurso de aprendizado de máquina e Usando MLOps para construir um pipeline de aprendizado de máquina ponta a ponta em tempo real.
Drenagem de dados
O componente de drenagem de dados é o principal responsável por coletar eventos em tempo real em um destino específico — como Sistemas de Arquivos Altamente Distribuídos (HDFS) como o S3 ou outros bancos de dados externos como o ElasticSearch — dependendo dos requisitos do projeto.
Para a nossa equipe de risco de IA, geralmente existem dois padrões de enriquecimento de dados que podem ser aplicados aos dados em tempo real no Kafka dependendo do caso de uso:
Dados estáticos. Por exemplo, recuperar uma lista de makers populares no S3 para projetos de negócios relacionados ao P2P nos Flink jobs. Os dados de referência são estáticos e só precisam ser atualizados menos de uma vez por mês.
Dados dinâmicos. As taxas de câmbio em tempo real (BTC para USD, por exemplo) são obtidas de bancos de dados externos como o Redis. A pesquisa por registro garante baixa latência e alta precisão se os dados de referência forem alterados.
Entrega de dados
O componente de entrega de dados do pipeline é responsável pela previsão on-line e processamento em lote.
Previsão on-line. Ocorre quando as solicitações chegam por meio do Decision Hub (nosso mecanismo de regras internas da equipe de risco). O serviço relevante solicitará ao repositório de recursos para recuperar os recursos e enviá-los ao modelo de aprendizado de máquina para marcação. A nossa equipe de risco de IA tem mais de 20 modelos de aprendizado de máquina projetados para lidar com diferentes requisitos de negócios.
Processamento em lote. Embora possa introduzir um atraso de até alguns dias, desempenha um papel importante, pois complementa os recursos processados em tempo real.
Considerações finais
É importante observar que o mercado cripto opera 24 horas por dia, 7 dias por semana, ao contrário dos mercados financeiros tradicionais que têm horários de abertura e fechamento. A cada segundo, há um fluxo contínuo de novos dados (saques, depósitos, trades, etc.) que exige que estejamos atentos aos criminosos que estão tentando roubar fundos do usuário ou informações pessoais.
A nossa equipe de risco de IA tem trabalhado incansavelmente para desenvolver e manter um sistema sofisticado de IA que possa sinalizar atividades suspeitas com eficácia. Graças aos esforços dessa equipe, podemos trabalhar rapidamente para proteger as contas Binance comprometidas contra possíveis perdas ou mitigar os danos o máximo possível.
Fique ligado para saber mais informações sobre os nossos esforços em relação ao aprendizado de máquina ou confira alguns dos nossos artigos anteriores abaixo. Está interessado na carreira de aprendizado de máquina na Binance? Confira a Binance Engineering na nossa página de carreiras para conferir as vagas abertas.