Provar a inferência do modelo de aprendizado de máquina (ML) via zkSNARKs promete ser um dos avanços mais importantes em contratos inteligentes nesta década. Esse desenvolvimento abre um espaço de design incrivelmente grande, permitindo que aplicativos e infraestrutura evoluam para sistemas mais complexos e inteligentes.
Ao adicionar recursos de ML, os contratos inteligentes podem se tornar mais autônomos e dinâmicos, permitindo que tomem decisões com base em dados on-chain em tempo real, em vez de regras estáticas. Os contratos inteligentes serão flexíveis e podem acomodar uma variedade de cenários, incluindo aqueles que podem não ter sido previstos quando o contrato foi originalmente criado. Resumindo, os recursos de ML ampliarão a automação, precisão, eficiência e flexibilidade de qualquer contrato inteligente que colocarmos na cadeia.
O ML é amplamente utilizado na maioria dos aplicativos fora da web3, e sua aplicação em contratos inteligentes é quase nula. Isso se deve principalmente ao alto custo computacional de executar esses modelos on-chain. Por exemplo, FastBERT é um modelo de linguagem computacionalmente otimizado que usa cerca de 1800 MFLOPS (milhões de operações de ponto flutuante), que não podem ser executados diretamente no EVM.
A aplicação do modelo ML na cadeia se concentra principalmente no estágio de raciocínio: aplicar o modelo para prever dados do mundo real. Para ter contratos inteligentes em escala de ML, os contratos devem ser capazes de ingerir tais previsões, mas, como mencionamos anteriormente, a execução de modelos diretamente no EVM não é viável. Os zkSNARKs nos fornecem uma solução: qualquer um pode executar um modelo off-chain e gerar uma prova sucinta e verificável de que o modelo esperado produziu um resultado específico. Essa prova pode ser publicada na cadeia e ingerida por contratos inteligentes para aprimorar sua inteligência.
Neste artigo, iremos:
Veja possíveis aplicações e casos de uso para ML on-chain
Explorar projetos emergentes e infraestrutura no núcleo do zkML
Discuta alguns dos desafios das implementações existentes e como pode ser o futuro do zkML
Introdução ao Machine Learning (ML)
O aprendizado de máquina (ML) é um subcampo da inteligência artificial (IA) que se concentra no desenvolvimento de algoritmos e modelos estatísticos que permitem que os computadores aprendam com os dados e façam previsões ou decisões. Os modelos de ML normalmente têm três componentes principais:
Dados de treinamento: um conjunto de dados de entrada usados para treinar um algoritmo de aprendizado de máquina para fazer previsões ou classificar novos dados. Os dados de treinamento podem assumir várias formas, como imagens, texto, áudio, dados numéricos ou suas combinações.
Arquitetura do modelo: a estrutura geral ou design de um modelo de aprendizado de máquina. Ele define a hierarquia, as funções de ativação e o tipo e número de conexões entre nós ou neurônios. A escolha da arquitetura depende do problema específico e dos dados utilizados.
Parâmetros do modelo: Valores ou pesos que o modelo aprende durante o treinamento para fazer previsões. Esses valores são ajustados iterativamente por um algoritmo de otimização para minimizar o erro entre os resultados previstos e reais.
A geração e implantação do modelo é dividida em duas fases:
Fase de treinamento: Na fase de treinamento, o modelo é exposto a um conjunto de dados rotulado e ajusta seus parâmetros para minimizar o erro entre os resultados previstos e os resultados reais. O processo de treinamento geralmente envolve várias iterações ou ciclos, e a precisão do modelo é avaliada em um conjunto de validação separado.
Fase de inferência: a fase de inferência é a fase em que o modelo de aprendizado de máquina treinado é usado para fazer previsões sobre novos dados não vistos. Um modelo recebe dados de entrada e aplica parâmetros aprendidos para gerar uma saída, como uma classificação ou previsão de regressão.
Atualmente, o zkML se concentra principalmente na fase de inferência de modelos de aprendizado de máquina, ao invés da fase de treinamento, principalmente devido à complexidade computacional do treinamento em circuitos de verificação. No entanto, o foco do zkML na inferência não é uma limitação: prevemos alguns casos de uso e aplicativos muito interessantes.
Cenários de inferência verificados
Existem quatro cenários possíveis para validar o raciocínio:
Entrada privada, modelo público. Os Consumidores de Modelos (MC) podem querer manter suas informações confidenciais dos Provedores de Modelos (MP). Por exemplo, um MC pode desejar certificar aos credores os resultados de um modelo de pontuação de crédito sem divulgar suas informações financeiras pessoais. Isso pode ser feito usando um esquema de pré-compromisso e executando o modelo localmente.
Entrada pública, modelo privado. Um problema comum com ML-as-a-Service é que um MP pode desejar ocultar seus parâmetros ou pesos para proteger seu IP, enquanto um MC deseja verificar se as inferências geradas são realmente do modelo especificado em uma configuração contraditória. disso: ao fornecer uma inferência para o MC Quando , o MP tem um incentivo para executar um modelo mais leve para economizar dinheiro. Usando a promessa de pesos de modelo on-chain, os MCs podem auditar modelos privados a qualquer momento.
Entrada privada, modelo privado. Isso ocorre quando os dados usados para inferência são altamente sensíveis ou confidenciais e o próprio modelo está oculto para proteger o IP. Um exemplo disso pode incluir a auditoria de modelos de assistência médica usando informações privadas do paciente. Técnicas de composição em zk ou variantes usando computação multipartidária (MPC) ou FHE podem ser usadas para atender a esse cenário.
Contribuição pública, modelo público. Embora todos os aspectos do modelo possam ser tornados públicos, o zkML aborda um caso de uso diferente: compactar e validar cálculos off-chain para ambientes on-chain. Para modelos maiores, é mais econômico verificar o zk sucinto da inferência do que executar o modelo novamente.
O raciocínio de ML verificado abre novos espaços de design para contratos inteligentes. Algumas aplicações criptográficas nativas incluem:
1、DeFi
Oráculos de ML off-chain verificáveis. A adoção contínua de IA generativa pode levar o setor a implementar esquemas de assinatura para seu conteúdo (por exemplo, publicações de notícias assinando artigos ou imagens). Os dados assinados estão prontos para provas de conhecimento zero, tornando os dados combináveis e confiáveis. Os modelos de ML podem processar esses dados assinados fora da cadeia para fazer previsões e classificações (por exemplo, classificar resultados eleitorais ou eventos climáticos). Esses oráculos de ML fora da cadeia podem resolver de forma confiável mercados de previsão do mundo real, contratos de protocolo de seguro, etc., verificando o raciocínio e publicando provas na cadeia.
Aplicativos DeFi baseados em parâmetros de ML. Muitos aspectos do DeFi podem ser mais automatizados. Por exemplo, protocolos de empréstimo podem usar modelos de ML para atualizar parâmetros em tempo real. Atualmente, os protocolos de empréstimo dependem principalmente de modelos off-chain executados por organizações para determinar fatores colaterais, taxas de empréstimo para valor, limites de liquidação etc., mas uma opção melhor pode ser um modelo de código aberto treinado pela comunidade que qualquer pessoa pode executar e verifique.
Estratégias de negociação automatizadas. Uma maneira comum de demonstrar as características de retorno de uma estratégia de modelo financeiro é os MPs fornecerem aos investidores vários dados de backtest. No entanto, não há como verificar se o estrategista está seguindo o modelo ao executar uma negociação - o investidor precisa confiar que o estrategista está realmente seguindo o modelo. O zkML fornece uma solução em que o MP pode fornecer provas de raciocínio do modelo financeiro quando implantado em posições específicas. Isso pode ser especialmente útil para cofres gerenciados por DeFi.
2. Segurança
Monitoramento de fraudes para contratos inteligentes. Em vez de permitir que a governança humana lenta ou atores centralizados controlem a capacidade de suspender contratos, os modelos de ML podem ser usados para detectar possíveis comportamentos maliciosos e suspender contratos.
3. ML tradicional
Uma implementação descentralizada e sem confiança do Kaggle. Um protocolo ou mercado pode ser criado para permitir que os MCs ou outras partes interessadas verifiquem a precisão dos modelos sem exigir que os MPs divulguem os pesos dos modelos. Isso é útil para vender modelos, realizar competições em torno da precisão do modelo, etc.
Um mercado imediato descentralizado para IA generativa. A criação de prompts para IA generativa tornou-se um ofício complexo, e os prompts de geração de resultados ideais geralmente têm vários modificadores. Partes externas podem estar dispostas a comprar essas dicas complexas dos criadores. zkML pode ser usado de duas maneiras aqui: 1) para validar a saída da dica, para garantir aos compradores em potencial que a dica realmente cria a imagem desejada;
Permitir que o proprietário da dica mantenha a propriedade da dica após a compra, permanecendo obscuro para o comprador, mas ainda gerando imagens verificadas para ela.
4. Identidade
Substitua chaves privadas por autenticação biométrica que preserva a privacidade. O gerenciamento de chaves privadas continua sendo um dos maiores obstáculos na experiência do usuário web3. A abstração de chaves privadas por meio de reconhecimento facial ou outros fatores exclusivos é uma solução possível para o zkML.
Airdrops justos e recompensas de contribuidores. Os modelos de ML podem ser usados para criar personas detalhadas de usuários para determinar alocações de airdrop ou recompensas de contribuição com base em vários fatores. Isso pode ser especialmente útil quando combinado com soluções de identidade. Nesse caso, uma possibilidade é fazer com que os usuários executem um modelo de código aberto que avalie seu envolvimento no aplicativo, bem como o envolvimento de nível superior, como postagens em fóruns de governança, para raciocinar sobre suas atribuições. Essa prova é então fornecida ao contrato para a alocação do token correspondente.
5. Web3 Social
Filtragem para mídias sociais web3. A natureza descentralizada dos aplicativos sociais web3 levará a um aumento de spam e conteúdo malicioso. Idealmente, uma plataforma de mídia social poderia usar um modelo de ML de código aberto de consenso da comunidade e publicar provas do raciocínio do modelo quando optar por filtrar postagens. Caso em questão: análise zkML no algoritmo do Twitter.
Publicidade/Recomendação. Como usuário de mídia social, posso estar disposto a ver publicidade personalizada, mas desejo manter minhas preferências e interesses privados dos anunciantes. Posso optar por executar um modelo localmente sobre meus interesses, alimentá-lo em um aplicativo de mídia para me fornecer conteúdo. Nesse caso, os anunciantes podem estar dispostos a pagar aos usuários finais para que isso aconteça; no entanto, esses modelos podem ser muito menos sofisticados do que os modelos de publicidade direcionada atualmente em produção.
6. Economia/Jogos do Criador
Reequilíbrio da economia no jogo. A emissão de tokens, fornecimento, queima, limites de votação etc. podem ser ajustados dinamicamente usando modelos de ML. Um modelo possível é um contrato de incentivo que reequilibra a economia do jogo se um determinado limite de reequilíbrio for atingido e uma prova de raciocínio for verificada.
Novos tipos de jogos on-chain. Humanos cooperativos versus jogos de IA e outros jogos on-chain inovadores podem ser criados onde o modelo de IA sem confiança atua como um personagem não jogável. Cada ação realizada pelo NPC é postada na cadeia junto com uma prova de que qualquer pessoa pode verificar se o modelo correto está sendo executado. Em Modulus Labs ' Leela vs. the World , o verificador quer ter certeza de que o 1900 ELO AI declarado escolhe o movimento, não Magnus Carlson. Outro exemplo é o AI Arena, um jogo de luta de IA semelhante ao Super Smash Brothers. Em um ambiente competitivo de alto risco, os jogadores querem garantir que os modelos que treinam não interfiram ou trapaceiem.
Projetos emergentes e infraestrutura
O ecossistema zkML pode ser amplamente dividido em quatro categorias principais:
Model-to-Proof Compiler: Infraestrutura para compilar modelos em formatos existentes (por exemplo, Pytorch, ONNX, etc.) em circuitos computacionais verificáveis.
Sistema de prova generalizada: Construa um sistema de prova para verificar trajetórias computacionais arbitrárias.
Sistema de prova específico do zkML: um sistema de prova especialmente construído para verificar a trajetória computacional dos modelos ML.
Aplicações: Projetos que trabalham em casos de uso únicos do zkML.
01 Compiladores Model-to-Proof
No ecossistema zkML, a maior parte da atenção tem sido na criação de compiladores de modelo para prova. Normalmente, esses compiladores convertem modelos avançados de ML em circuitos zk usando Pytorch, Tensorflow etc.
EZKL é uma biblioteca e ferramenta de linha de comando para inferência de modelos de aprendizado profundo em zk-SNARKs. Usando EZKL, você pode definir um gráfico computacional em Pytorch ou TensorFlow, exportá-lo como um arquivo ONNX com algumas entradas de exemplo em arquivos JSON e, em seguida, apontar EZKL para esses arquivos para gerar circuitos zkSNARK. Com a última rodada de melhorias de desempenho, o EZKL agora pode provar um modelo de tamanho MNIST em aproximadamente 6 segundos e 1,1 GB de RAM. Até o momento, o EZKL teve uma adoção inicial notável, sendo usado como infraestrutura para vários projetos de hackathon.
A biblioteca circomlib-ml de Cathie So contém vários modelos de circuito ML para Circom. Circuits inclui algumas das funções ML mais comuns. Keras 2c ircom, desenvolvido por Cathie, é uma ferramenta Python que converte modelos Keras em circuitos Circom usando a biblioteca subjacente circomlib-ml.
A LinearA desenvolveu duas estruturas para zkML: Tachikoma e Uchikoma. Tachikoma é usado para converter a rede neural em uma forma somente inteira e gerar trajetórias computacionais. Uchikoma é uma ferramenta que converte a representação intermediária de TVM em linguagens de programação que não suportam operações de ponto flutuante. LinearA planeja oferecer suporte ao Circom com aritmética de domínio e Solidity com aritmética de inteiros assinados e não assinados.
O zkml de Daniel Kang é uma estrutura para provas de execução de modelos ML construídos em seu trabalho no artigo "Scaling up Trustless DNN Inference with Zero-Knowledge Proofs". No momento da redação, ele conseguiu provar um circuito MNIST em cerca de 5 GB de memória e em cerca de 16 segundos de tempo de execução.
Em termos de compiladores de modelo para prova mais generalizados, há o Nil Foundation e o Risc Zero. O zkLLVM da Nil Foundation é um compilador de circuito baseado em LLVM capaz de validar modelos computacionais escritos em linguagens de programação populares como C++, Rust e Java/Type. Comparado com os outros compiladores model-to-proof mencionados aqui, é uma infraestrutura de uso geral, mas ainda adequada para cálculos complexos, como zkML. Isso pode ser especialmente poderoso quando combinado com seu mercado de prova.
O Risc Zero constrói um zkVM de propósito geral visando o conjunto de instruções RISC-V de código aberto, suportando assim linguagens maduras existentes, como C++ e Rust, bem como a cadeia de ferramentas LLVM. Isso permite uma integração perfeita entre o código zkVM do host e do convidado, semelhante à cadeia de ferramentas CUDA C++ da Nvidia, mas usando o mecanismo ZKP em vez da GPU. Semelhante ao Nil, use Risc Zero para verificar a trajetória computacional de um modelo ML.
02 Sistema de prova generalizado
As melhorias no sistema de prova foram a principal força motriz por trás da concretização do zkML, em particular a introdução de portas personalizadas e tabelas de consulta. Isso se deve principalmente à confiança do ML na não linearidade. Em resumo, a não linearidade é introduzida por meio de funções de ativação (como ReLU, sigmóide e tanh) que são aplicadas à saída de uma transformação linear em uma rede neural. Essas não linearidades são difíceis de implementar em circuitos zk devido às restrições das portas de operação matemática. A fatoração bit a bit e as tabelas de pesquisa podem ajudar com isso pré-computando os possíveis resultados não lineares na tabela de pesquisa, que é curiosamente mais eficiente computacionalmente em zk.
Por esta razão, o sistema de prova Plonkish tende a ser o back-end mais popular para zkML. Halo 2 e Plonky 2 e seus esquemas aritméticos de tabela lidam bem com não linearidades de redes neurais com parâmetros de pesquisa. Além disso, o primeiro possui um ecossistema vibrante de ferramentas e flexibilidade para desenvolvedores, tornando-o um back-end de fato para muitos projetos, incluindo o EZKL.
Outros sistemas de prova também têm suas vantagens. Os sistemas de prova baseados em R 1 CS incluem o Groth 16, conhecido por seu pequeno tamanho de prova, e o Gemini, conhecido por lidar com circuitos extremamente grandes e verificadores de tempo linear. Os sistemas baseados em STARK, como a biblioteca de provadores/verificadores de Winterfell, são especialmente úteis ao tomar como entrada traços de programas do Cairo por meio das ferramentas de Giza e usar Winterfell para gerar provas STARK para verificar a correção da saída.
03 sistema de prova específico zkML
Algum progresso foi feito no projeto de sistemas de prova eficientes que podem lidar com operações complexas e hostis a circuitos de modelos avançados de aprendizado de máquina. Sistemas como o zkCNN baseado no sistema de prova da GKR e o Zator baseado em técnicas combinatórias tendem a superar os sistemas de prova universais, conforme refletido nos relatórios de benchmark da Modulus Labs.
zkCNN é um método para provar a correção de redes neurais convolucionais usando provas de conhecimento zero. Ele usa o protocolo sumcheck para provar rápidas transformadas e convoluções de Fourier, com tempo de prova linear, mais rápido do que os resultados da computação assintomática. Várias provas interativas de melhoria e generalização foram introduzidas, incluindo camadas convolucionais de validação, funções de ativação ReLU e pool máximo. De acordo com o relatório de benchmarking da Modulus Labs, o zkCNN é particularmente interessante porque supera outros sistemas de provas de uso geral em termos de velocidade de geração de provas e consumo de RAM.
Zator é um projeto que visa explorar o uso de SNARKs recursivos para verificar redes neurais profundas. Uma limitação atual na validação de modelos mais profundos é encaixar trajetórias computacionais inteiras em um único circuito. Zator propôs usar SNARK recursivo para verificar camada por camada, o que pode verificar gradualmente cálculos repetidos em N etapas. Eles usaram o Nova para reduzir N instâncias de computação a uma instância que pode ser verificada em uma única etapa. Usando essa abordagem, a Zator conseguiu SNARK uma rede com 512 camadas, que é tão profunda quanto a maioria dos modelos atuais de IA de produção. Os tempos de geração e verificação de provas de Zator ainda são muito longos para casos de uso convencionais, mas suas técnicas combinadas ainda são muito interessantes.
Formulários
Desde os primeiros dias do zkML, seu foco tem sido principalmente na infra-estrutura mencionada. No entanto, atualmente existem vários projetos dedicados ao desenvolvimento de aplicativos.
O Modulus Labs é um dos projetos mais diversos no espaço zkML, trabalhando tanto em aplicativos de exemplo quanto em pesquisas relacionadas. No lado aplicado, o Modulus Labs demonstrou casos de uso para zkML com RockyBot, um bot de negociação on-chain, e Leela vs. the World, um jogo de tabuleiro em que os humanos jogam contra um comprovado mecanismo de xadrez Leela on-chain. A equipe também realizou pesquisas e escreveu The Cost of Intelligence, que compara a velocidade e a eficiência de vários sistemas de prova em diferentes tamanhos de modelo.
A Worldcoin está tentando aplicar o zkML para criar um protocolo de prova de identidade humana que preserva a privacidade. O Worldcoin lida com a varredura de íris de alta resolução usando hardware personalizado e o conecta a uma implementação do Semaphore. Este sistema pode então ser usado para realizar operações úteis, como prova de filiação e votação. Atualmente, eles usam um ambiente de tempo de execução confiável e um enclave seguro para verificar as varreduras de íris assinadas por câmeras, mas seu objetivo final é usar provas de conhecimento zero para verificar o raciocínio correto das redes neurais para fornecer garantia de segurança em nível criptográfico.
Giza é um protocolo que adota uma abordagem totalmente confiável para implantar modelos de IA na cadeia. Ele usa o formato ONNX para representar modelos de aprendizado de máquina, o Giza Transpiler para converter esses modelos no formato de programa Cairo, o ONNX Cairo Runtime para executar modelos de maneira verificável e determinística e o contrato inteligente Giza Model para implantação on-chain e pilha de tecnologia para executar o modelo. Embora o Giza também possa ser classificado como um compilador model-to-proof, seu posicionamento como um mercado para modelos ML é uma das aplicações mais interessantes no momento.
Gensyn é uma rede distribuída de provedores de hardware para treinar modelos de ML. Especificamente, eles estão desenvolvendo um sistema de auditoria probabilística baseado em descida de gradiente e usando checkpointing de modelo para permitir que redes de GPU distribuídas sirvam de treinamento para modelos em escala real. Embora a aplicação do zkML aqui seja muito específica para o caso de uso - eles desejam garantir que, quando um nó baixar e treinar uma parte do modelo, eles sejam honestos sobre as atualizações do modelo - isso demonstra o poder de combinar a força do zk e do ML.
O ZKaptcha se concentra no problema do bot na web3 e fornece serviços de código de verificação para contratos inteligentes. Sua implementação atual faz com que os usuários finais gerem provas de trabalho humano concluindo captchas, que são verificados por seus validadores on-chain e acessados por contratos inteligentes com algumas linhas de código. Hoje, eles dependem principalmente do zk, mas pretendem implementar o zkML no futuro, semelhante aos serviços web2 captcha existentes, analisando comportamentos como movimentos do mouse para determinar se o usuário é humano.
Considerando os primeiros dias do mercado zkML, muitos aplicativos já foram experimentados no nível do hackathon. Os projetos incluem AI Coliseum, uma competição de IA on-chain usando provas ZK para verificar a saída de aprendizado de máquina, Hunter z Hunter, uma caça ao tesouro de fotos usando a biblioteca EZKL para verificar a saída de um modelo de classificação de imagem com circuitos halo 2 e zk Section 9 , Ele converte modelos de geração de imagem AI em circuitos para moldar e validar arte AI.
desafios zkML
Apesar do rápido progresso em aprimoramento e otimização, o campo de zkML ainda enfrenta alguns desafios centrais. Esses desafios envolvem aspectos técnicos e práticos, incluindo:
Quantização com perda mínima de precisão
Tamanho do circuito, especialmente quando a rede consiste em várias camadas
Prova eficiente de multiplicação de matrizes
Contra ataque
Quantização é o processo de representar números de ponto flutuante como números de ponto fixo. A maioria dos modelos de aprendizado de máquina usa números de ponto flutuante para representar parâmetros de modelo e funções de ativação. Ao lidar com aritmética de domínio para circuitos zk, números de ponto fixo são necessários. O impacto da quantização na precisão de um modelo de aprendizado de máquina depende do nível de precisão usado. Em geral, o uso de menor precisão (ou seja, menos bits) pode resultar em menos precisão, pois pode introduzir erros de arredondamento e aproximação. No entanto, existem várias técnicas que podem ser usadas para minimizar o impacto da quantização na precisão, como o ajuste fino do modelo após a quantização e o uso de técnicas como treinamento com reconhecimento de quantização. Além disso, Zero Gravity, um projeto de hackathon no zkSummit 9, mostrou que arquiteturas alternativas de rede neural desenvolvidas para dispositivos de ponta, como redes neurais sem peso, podem ser usadas para evitar problemas de quantização em circuitos.
Além da quantização, o hardware é outro desafio importante. Uma vez que um modelo de aprendizado de máquina é representado corretamente por um circuito, as provas para verificar seu raciocínio tornam-se baratas e rápidas devido à simplicidade de zk. O desafio aqui não é com o verificador, mas com o provador, pois o consumo de RAM e o tempo de geração da prova aumentam rapidamente à medida que o tamanho do modelo aumenta. Certos sistemas de prova (como sistemas baseados em GKR usando o protocolo sumcheck e circuitos aritméticos hierárquicos) ou técnicas combinadas (como combinar Plonky 2 com Groth 16, Plonky 2 é eficiente em termos de tempo de prova, mas eficiente para modelos grandes Poor e Groth 16 não leva ao aumento do tamanho da prova na complexidade de modelos complexos) é mais adequado para lidar com esses problemas, mas gerenciar compensações é um desafio central em projetos zkML.
Em termos de combate aos ataques, ainda há trabalho a ser feito. Primeiro, se um protocolo sem confiança ou DAO optar por implementar um modelo, ainda existe o risco de ataques adversários durante a fase de treinamento (por exemplo, treinar um modelo para exibir um determinado comportamento ao ver uma determinada entrada, que pode ser usada para manipular subseqüentes raciocínio). Técnicas de aprendizado federado e zkML na fase de treinamento podem ser uma forma de minimizar essa superfície de ataque.
Outro desafio central é o risco de ataques de roubo de modelo quando o modelo preserva a privacidade. Embora seja possível ofuscar os pesos de um modelo, dados pares de entrada-saída suficientes, ainda é teoricamente possível inferir os pesos de trás para frente. Isso é principalmente um risco para modelos de pequena escala, mas ainda há riscos.
Extensibilidade de contratos inteligentes
Embora existam alguns desafios na otimização desses modelos para serem executados dentro das restrições de zk, as melhorias estão sendo feitas em uma taxa exponencial e alguns esperam que, com mais aceleração de hardware, em breve possamos trabalhar com o campo mais amplo de aprendizado de máquina. mesmo nível. Para enfatizar a velocidade dessas melhorias, o zkML passou da demonstração do 0x PARC de como executar um modelo de classificação de imagem MNIST em pequena escala em um circuito verificável em 2021, para Daniel Kang fazendo o mesmo para um modelo de escala ImageNet menos de um ano depois papéis. Em abril de 2022, a precisão deste modelo em escala ImageNet melhorou de 79% para 92%, e espera-se que modelos grandes como GPT-2 sejam possíveis em um futuro próximo, embora o tempo de prova atual seja mais longo.
Vemos o zkML como um ecossistema rico e crescente projetado para estender os recursos de blockchains e contratos inteligentes, tornando-os mais flexíveis, adaptáveis e inteligentes.
Embora o zkML ainda esteja nos estágios iniciais de desenvolvimento, ele já começou a mostrar resultados promissores. À medida que a tecnologia se desenvolve e amadurece, podemos esperar ver casos de uso zkML mais inovadores na cadeia.
Ver original
O conteúdo é apenas para referência, não uma solicitação ou oferta. Nenhum aconselhamento fiscal, de investimento ou jurídico é fornecido. Consulte a isenção de responsabilidade para obter mais informações sobre riscos.
Análise aprofundada da trilha ZKML: o próximo passo na inteligência de contratos inteligentes
Provar a inferência do modelo de aprendizado de máquina (ML) via zkSNARKs promete ser um dos avanços mais importantes em contratos inteligentes nesta década. Esse desenvolvimento abre um espaço de design incrivelmente grande, permitindo que aplicativos e infraestrutura evoluam para sistemas mais complexos e inteligentes.
Ao adicionar recursos de ML, os contratos inteligentes podem se tornar mais autônomos e dinâmicos, permitindo que tomem decisões com base em dados on-chain em tempo real, em vez de regras estáticas. Os contratos inteligentes serão flexíveis e podem acomodar uma variedade de cenários, incluindo aqueles que podem não ter sido previstos quando o contrato foi originalmente criado. Resumindo, os recursos de ML ampliarão a automação, precisão, eficiência e flexibilidade de qualquer contrato inteligente que colocarmos na cadeia.
O ML é amplamente utilizado na maioria dos aplicativos fora da web3, e sua aplicação em contratos inteligentes é quase nula. Isso se deve principalmente ao alto custo computacional de executar esses modelos on-chain. Por exemplo, FastBERT é um modelo de linguagem computacionalmente otimizado que usa cerca de 1800 MFLOPS (milhões de operações de ponto flutuante), que não podem ser executados diretamente no EVM.
A aplicação do modelo ML na cadeia se concentra principalmente no estágio de raciocínio: aplicar o modelo para prever dados do mundo real. Para ter contratos inteligentes em escala de ML, os contratos devem ser capazes de ingerir tais previsões, mas, como mencionamos anteriormente, a execução de modelos diretamente no EVM não é viável. Os zkSNARKs nos fornecem uma solução: qualquer um pode executar um modelo off-chain e gerar uma prova sucinta e verificável de que o modelo esperado produziu um resultado específico. Essa prova pode ser publicada na cadeia e ingerida por contratos inteligentes para aprimorar sua inteligência.
Neste artigo, iremos:
Introdução ao Machine Learning (ML)
O aprendizado de máquina (ML) é um subcampo da inteligência artificial (IA) que se concentra no desenvolvimento de algoritmos e modelos estatísticos que permitem que os computadores aprendam com os dados e façam previsões ou decisões. Os modelos de ML normalmente têm três componentes principais:
A geração e implantação do modelo é dividida em duas fases:
Atualmente, o zkML se concentra principalmente na fase de inferência de modelos de aprendizado de máquina, ao invés da fase de treinamento, principalmente devido à complexidade computacional do treinamento em circuitos de verificação. No entanto, o foco do zkML na inferência não é uma limitação: prevemos alguns casos de uso e aplicativos muito interessantes.
Cenários de inferência verificados
Existem quatro cenários possíveis para validar o raciocínio:
O raciocínio de ML verificado abre novos espaços de design para contratos inteligentes. Algumas aplicações criptográficas nativas incluem:
1、DeFi
Oráculos de ML off-chain verificáveis. A adoção contínua de IA generativa pode levar o setor a implementar esquemas de assinatura para seu conteúdo (por exemplo, publicações de notícias assinando artigos ou imagens). Os dados assinados estão prontos para provas de conhecimento zero, tornando os dados combináveis e confiáveis. Os modelos de ML podem processar esses dados assinados fora da cadeia para fazer previsões e classificações (por exemplo, classificar resultados eleitorais ou eventos climáticos). Esses oráculos de ML fora da cadeia podem resolver de forma confiável mercados de previsão do mundo real, contratos de protocolo de seguro, etc., verificando o raciocínio e publicando provas na cadeia.
Aplicativos DeFi baseados em parâmetros de ML. Muitos aspectos do DeFi podem ser mais automatizados. Por exemplo, protocolos de empréstimo podem usar modelos de ML para atualizar parâmetros em tempo real. Atualmente, os protocolos de empréstimo dependem principalmente de modelos off-chain executados por organizações para determinar fatores colaterais, taxas de empréstimo para valor, limites de liquidação etc., mas uma opção melhor pode ser um modelo de código aberto treinado pela comunidade que qualquer pessoa pode executar e verifique.
Estratégias de negociação automatizadas. Uma maneira comum de demonstrar as características de retorno de uma estratégia de modelo financeiro é os MPs fornecerem aos investidores vários dados de backtest. No entanto, não há como verificar se o estrategista está seguindo o modelo ao executar uma negociação - o investidor precisa confiar que o estrategista está realmente seguindo o modelo. O zkML fornece uma solução em que o MP pode fornecer provas de raciocínio do modelo financeiro quando implantado em posições específicas. Isso pode ser especialmente útil para cofres gerenciados por DeFi.
2. Segurança
Monitoramento de fraudes para contratos inteligentes. Em vez de permitir que a governança humana lenta ou atores centralizados controlem a capacidade de suspender contratos, os modelos de ML podem ser usados para detectar possíveis comportamentos maliciosos e suspender contratos.
3. ML tradicional
Uma implementação descentralizada e sem confiança do Kaggle. Um protocolo ou mercado pode ser criado para permitir que os MCs ou outras partes interessadas verifiquem a precisão dos modelos sem exigir que os MPs divulguem os pesos dos modelos. Isso é útil para vender modelos, realizar competições em torno da precisão do modelo, etc.
Um mercado imediato descentralizado para IA generativa. A criação de prompts para IA generativa tornou-se um ofício complexo, e os prompts de geração de resultados ideais geralmente têm vários modificadores. Partes externas podem estar dispostas a comprar essas dicas complexas dos criadores. zkML pode ser usado de duas maneiras aqui: 1) para validar a saída da dica, para garantir aos compradores em potencial que a dica realmente cria a imagem desejada;
4. Identidade
Substitua chaves privadas por autenticação biométrica que preserva a privacidade. O gerenciamento de chaves privadas continua sendo um dos maiores obstáculos na experiência do usuário web3. A abstração de chaves privadas por meio de reconhecimento facial ou outros fatores exclusivos é uma solução possível para o zkML.
Airdrops justos e recompensas de contribuidores. Os modelos de ML podem ser usados para criar personas detalhadas de usuários para determinar alocações de airdrop ou recompensas de contribuição com base em vários fatores. Isso pode ser especialmente útil quando combinado com soluções de identidade. Nesse caso, uma possibilidade é fazer com que os usuários executem um modelo de código aberto que avalie seu envolvimento no aplicativo, bem como o envolvimento de nível superior, como postagens em fóruns de governança, para raciocinar sobre suas atribuições. Essa prova é então fornecida ao contrato para a alocação do token correspondente.
5. Web3 Social
Filtragem para mídias sociais web3. A natureza descentralizada dos aplicativos sociais web3 levará a um aumento de spam e conteúdo malicioso. Idealmente, uma plataforma de mídia social poderia usar um modelo de ML de código aberto de consenso da comunidade e publicar provas do raciocínio do modelo quando optar por filtrar postagens. Caso em questão: análise zkML no algoritmo do Twitter.
Publicidade/Recomendação. Como usuário de mídia social, posso estar disposto a ver publicidade personalizada, mas desejo manter minhas preferências e interesses privados dos anunciantes. Posso optar por executar um modelo localmente sobre meus interesses, alimentá-lo em um aplicativo de mídia para me fornecer conteúdo. Nesse caso, os anunciantes podem estar dispostos a pagar aos usuários finais para que isso aconteça; no entanto, esses modelos podem ser muito menos sofisticados do que os modelos de publicidade direcionada atualmente em produção.
6. Economia/Jogos do Criador
Reequilíbrio da economia no jogo. A emissão de tokens, fornecimento, queima, limites de votação etc. podem ser ajustados dinamicamente usando modelos de ML. Um modelo possível é um contrato de incentivo que reequilibra a economia do jogo se um determinado limite de reequilíbrio for atingido e uma prova de raciocínio for verificada.
Novos tipos de jogos on-chain. Humanos cooperativos versus jogos de IA e outros jogos on-chain inovadores podem ser criados onde o modelo de IA sem confiança atua como um personagem não jogável. Cada ação realizada pelo NPC é postada na cadeia junto com uma prova de que qualquer pessoa pode verificar se o modelo correto está sendo executado. Em Modulus Labs ' Leela vs. the World , o verificador quer ter certeza de que o 1900 ELO AI declarado escolhe o movimento, não Magnus Carlson. Outro exemplo é o AI Arena, um jogo de luta de IA semelhante ao Super Smash Brothers. Em um ambiente competitivo de alto risco, os jogadores querem garantir que os modelos que treinam não interfiram ou trapaceiem.
Projetos emergentes e infraestrutura
O ecossistema zkML pode ser amplamente dividido em quatro categorias principais:
01 Compiladores Model-to-Proof
No ecossistema zkML, a maior parte da atenção tem sido na criação de compiladores de modelo para prova. Normalmente, esses compiladores convertem modelos avançados de ML em circuitos zk usando Pytorch, Tensorflow etc.
EZKL é uma biblioteca e ferramenta de linha de comando para inferência de modelos de aprendizado profundo em zk-SNARKs. Usando EZKL, você pode definir um gráfico computacional em Pytorch ou TensorFlow, exportá-lo como um arquivo ONNX com algumas entradas de exemplo em arquivos JSON e, em seguida, apontar EZKL para esses arquivos para gerar circuitos zkSNARK. Com a última rodada de melhorias de desempenho, o EZKL agora pode provar um modelo de tamanho MNIST em aproximadamente 6 segundos e 1,1 GB de RAM. Até o momento, o EZKL teve uma adoção inicial notável, sendo usado como infraestrutura para vários projetos de hackathon.
A biblioteca circomlib-ml de Cathie So contém vários modelos de circuito ML para Circom. Circuits inclui algumas das funções ML mais comuns. Keras 2c ircom, desenvolvido por Cathie, é uma ferramenta Python que converte modelos Keras em circuitos Circom usando a biblioteca subjacente circomlib-ml.
A LinearA desenvolveu duas estruturas para zkML: Tachikoma e Uchikoma. Tachikoma é usado para converter a rede neural em uma forma somente inteira e gerar trajetórias computacionais. Uchikoma é uma ferramenta que converte a representação intermediária de TVM em linguagens de programação que não suportam operações de ponto flutuante. LinearA planeja oferecer suporte ao Circom com aritmética de domínio e Solidity com aritmética de inteiros assinados e não assinados.
O zkml de Daniel Kang é uma estrutura para provas de execução de modelos ML construídos em seu trabalho no artigo "Scaling up Trustless DNN Inference with Zero-Knowledge Proofs". No momento da redação, ele conseguiu provar um circuito MNIST em cerca de 5 GB de memória e em cerca de 16 segundos de tempo de execução.
Em termos de compiladores de modelo para prova mais generalizados, há o Nil Foundation e o Risc Zero. O zkLLVM da Nil Foundation é um compilador de circuito baseado em LLVM capaz de validar modelos computacionais escritos em linguagens de programação populares como C++, Rust e Java/Type. Comparado com os outros compiladores model-to-proof mencionados aqui, é uma infraestrutura de uso geral, mas ainda adequada para cálculos complexos, como zkML. Isso pode ser especialmente poderoso quando combinado com seu mercado de prova.
O Risc Zero constrói um zkVM de propósito geral visando o conjunto de instruções RISC-V de código aberto, suportando assim linguagens maduras existentes, como C++ e Rust, bem como a cadeia de ferramentas LLVM. Isso permite uma integração perfeita entre o código zkVM do host e do convidado, semelhante à cadeia de ferramentas CUDA C++ da Nvidia, mas usando o mecanismo ZKP em vez da GPU. Semelhante ao Nil, use Risc Zero para verificar a trajetória computacional de um modelo ML.
02 Sistema de prova generalizado
As melhorias no sistema de prova foram a principal força motriz por trás da concretização do zkML, em particular a introdução de portas personalizadas e tabelas de consulta. Isso se deve principalmente à confiança do ML na não linearidade. Em resumo, a não linearidade é introduzida por meio de funções de ativação (como ReLU, sigmóide e tanh) que são aplicadas à saída de uma transformação linear em uma rede neural. Essas não linearidades são difíceis de implementar em circuitos zk devido às restrições das portas de operação matemática. A fatoração bit a bit e as tabelas de pesquisa podem ajudar com isso pré-computando os possíveis resultados não lineares na tabela de pesquisa, que é curiosamente mais eficiente computacionalmente em zk.
Por esta razão, o sistema de prova Plonkish tende a ser o back-end mais popular para zkML. Halo 2 e Plonky 2 e seus esquemas aritméticos de tabela lidam bem com não linearidades de redes neurais com parâmetros de pesquisa. Além disso, o primeiro possui um ecossistema vibrante de ferramentas e flexibilidade para desenvolvedores, tornando-o um back-end de fato para muitos projetos, incluindo o EZKL.
Outros sistemas de prova também têm suas vantagens. Os sistemas de prova baseados em R 1 CS incluem o Groth 16, conhecido por seu pequeno tamanho de prova, e o Gemini, conhecido por lidar com circuitos extremamente grandes e verificadores de tempo linear. Os sistemas baseados em STARK, como a biblioteca de provadores/verificadores de Winterfell, são especialmente úteis ao tomar como entrada traços de programas do Cairo por meio das ferramentas de Giza e usar Winterfell para gerar provas STARK para verificar a correção da saída.
03 sistema de prova específico zkML
Algum progresso foi feito no projeto de sistemas de prova eficientes que podem lidar com operações complexas e hostis a circuitos de modelos avançados de aprendizado de máquina. Sistemas como o zkCNN baseado no sistema de prova da GKR e o Zator baseado em técnicas combinatórias tendem a superar os sistemas de prova universais, conforme refletido nos relatórios de benchmark da Modulus Labs.
zkCNN é um método para provar a correção de redes neurais convolucionais usando provas de conhecimento zero. Ele usa o protocolo sumcheck para provar rápidas transformadas e convoluções de Fourier, com tempo de prova linear, mais rápido do que os resultados da computação assintomática. Várias provas interativas de melhoria e generalização foram introduzidas, incluindo camadas convolucionais de validação, funções de ativação ReLU e pool máximo. De acordo com o relatório de benchmarking da Modulus Labs, o zkCNN é particularmente interessante porque supera outros sistemas de provas de uso geral em termos de velocidade de geração de provas e consumo de RAM.
Zator é um projeto que visa explorar o uso de SNARKs recursivos para verificar redes neurais profundas. Uma limitação atual na validação de modelos mais profundos é encaixar trajetórias computacionais inteiras em um único circuito. Zator propôs usar SNARK recursivo para verificar camada por camada, o que pode verificar gradualmente cálculos repetidos em N etapas. Eles usaram o Nova para reduzir N instâncias de computação a uma instância que pode ser verificada em uma única etapa. Usando essa abordagem, a Zator conseguiu SNARK uma rede com 512 camadas, que é tão profunda quanto a maioria dos modelos atuais de IA de produção. Os tempos de geração e verificação de provas de Zator ainda são muito longos para casos de uso convencionais, mas suas técnicas combinadas ainda são muito interessantes.
Formulários
Desde os primeiros dias do zkML, seu foco tem sido principalmente na infra-estrutura mencionada. No entanto, atualmente existem vários projetos dedicados ao desenvolvimento de aplicativos.
O Modulus Labs é um dos projetos mais diversos no espaço zkML, trabalhando tanto em aplicativos de exemplo quanto em pesquisas relacionadas. No lado aplicado, o Modulus Labs demonstrou casos de uso para zkML com RockyBot, um bot de negociação on-chain, e Leela vs. the World, um jogo de tabuleiro em que os humanos jogam contra um comprovado mecanismo de xadrez Leela on-chain. A equipe também realizou pesquisas e escreveu The Cost of Intelligence, que compara a velocidade e a eficiência de vários sistemas de prova em diferentes tamanhos de modelo.
A Worldcoin está tentando aplicar o zkML para criar um protocolo de prova de identidade humana que preserva a privacidade. O Worldcoin lida com a varredura de íris de alta resolução usando hardware personalizado e o conecta a uma implementação do Semaphore. Este sistema pode então ser usado para realizar operações úteis, como prova de filiação e votação. Atualmente, eles usam um ambiente de tempo de execução confiável e um enclave seguro para verificar as varreduras de íris assinadas por câmeras, mas seu objetivo final é usar provas de conhecimento zero para verificar o raciocínio correto das redes neurais para fornecer garantia de segurança em nível criptográfico.
Giza é um protocolo que adota uma abordagem totalmente confiável para implantar modelos de IA na cadeia. Ele usa o formato ONNX para representar modelos de aprendizado de máquina, o Giza Transpiler para converter esses modelos no formato de programa Cairo, o ONNX Cairo Runtime para executar modelos de maneira verificável e determinística e o contrato inteligente Giza Model para implantação on-chain e pilha de tecnologia para executar o modelo. Embora o Giza também possa ser classificado como um compilador model-to-proof, seu posicionamento como um mercado para modelos ML é uma das aplicações mais interessantes no momento.
Gensyn é uma rede distribuída de provedores de hardware para treinar modelos de ML. Especificamente, eles estão desenvolvendo um sistema de auditoria probabilística baseado em descida de gradiente e usando checkpointing de modelo para permitir que redes de GPU distribuídas sirvam de treinamento para modelos em escala real. Embora a aplicação do zkML aqui seja muito específica para o caso de uso - eles desejam garantir que, quando um nó baixar e treinar uma parte do modelo, eles sejam honestos sobre as atualizações do modelo - isso demonstra o poder de combinar a força do zk e do ML.
O ZKaptcha se concentra no problema do bot na web3 e fornece serviços de código de verificação para contratos inteligentes. Sua implementação atual faz com que os usuários finais gerem provas de trabalho humano concluindo captchas, que são verificados por seus validadores on-chain e acessados por contratos inteligentes com algumas linhas de código. Hoje, eles dependem principalmente do zk, mas pretendem implementar o zkML no futuro, semelhante aos serviços web2 captcha existentes, analisando comportamentos como movimentos do mouse para determinar se o usuário é humano.
Considerando os primeiros dias do mercado zkML, muitos aplicativos já foram experimentados no nível do hackathon. Os projetos incluem AI Coliseum, uma competição de IA on-chain usando provas ZK para verificar a saída de aprendizado de máquina, Hunter z Hunter, uma caça ao tesouro de fotos usando a biblioteca EZKL para verificar a saída de um modelo de classificação de imagem com circuitos halo 2 e zk Section 9 , Ele converte modelos de geração de imagem AI em circuitos para moldar e validar arte AI.
desafios zkML
Apesar do rápido progresso em aprimoramento e otimização, o campo de zkML ainda enfrenta alguns desafios centrais. Esses desafios envolvem aspectos técnicos e práticos, incluindo:
Quantização é o processo de representar números de ponto flutuante como números de ponto fixo. A maioria dos modelos de aprendizado de máquina usa números de ponto flutuante para representar parâmetros de modelo e funções de ativação. Ao lidar com aritmética de domínio para circuitos zk, números de ponto fixo são necessários. O impacto da quantização na precisão de um modelo de aprendizado de máquina depende do nível de precisão usado. Em geral, o uso de menor precisão (ou seja, menos bits) pode resultar em menos precisão, pois pode introduzir erros de arredondamento e aproximação. No entanto, existem várias técnicas que podem ser usadas para minimizar o impacto da quantização na precisão, como o ajuste fino do modelo após a quantização e o uso de técnicas como treinamento com reconhecimento de quantização. Além disso, Zero Gravity, um projeto de hackathon no zkSummit 9, mostrou que arquiteturas alternativas de rede neural desenvolvidas para dispositivos de ponta, como redes neurais sem peso, podem ser usadas para evitar problemas de quantização em circuitos.
Além da quantização, o hardware é outro desafio importante. Uma vez que um modelo de aprendizado de máquina é representado corretamente por um circuito, as provas para verificar seu raciocínio tornam-se baratas e rápidas devido à simplicidade de zk. O desafio aqui não é com o verificador, mas com o provador, pois o consumo de RAM e o tempo de geração da prova aumentam rapidamente à medida que o tamanho do modelo aumenta. Certos sistemas de prova (como sistemas baseados em GKR usando o protocolo sumcheck e circuitos aritméticos hierárquicos) ou técnicas combinadas (como combinar Plonky 2 com Groth 16, Plonky 2 é eficiente em termos de tempo de prova, mas eficiente para modelos grandes Poor e Groth 16 não leva ao aumento do tamanho da prova na complexidade de modelos complexos) é mais adequado para lidar com esses problemas, mas gerenciar compensações é um desafio central em projetos zkML.
Em termos de combate aos ataques, ainda há trabalho a ser feito. Primeiro, se um protocolo sem confiança ou DAO optar por implementar um modelo, ainda existe o risco de ataques adversários durante a fase de treinamento (por exemplo, treinar um modelo para exibir um determinado comportamento ao ver uma determinada entrada, que pode ser usada para manipular subseqüentes raciocínio). Técnicas de aprendizado federado e zkML na fase de treinamento podem ser uma forma de minimizar essa superfície de ataque.
Outro desafio central é o risco de ataques de roubo de modelo quando o modelo preserva a privacidade. Embora seja possível ofuscar os pesos de um modelo, dados pares de entrada-saída suficientes, ainda é teoricamente possível inferir os pesos de trás para frente. Isso é principalmente um risco para modelos de pequena escala, mas ainda há riscos.
Extensibilidade de contratos inteligentes
Embora existam alguns desafios na otimização desses modelos para serem executados dentro das restrições de zk, as melhorias estão sendo feitas em uma taxa exponencial e alguns esperam que, com mais aceleração de hardware, em breve possamos trabalhar com o campo mais amplo de aprendizado de máquina. mesmo nível. Para enfatizar a velocidade dessas melhorias, o zkML passou da demonstração do 0x PARC de como executar um modelo de classificação de imagem MNIST em pequena escala em um circuito verificável em 2021, para Daniel Kang fazendo o mesmo para um modelo de escala ImageNet menos de um ano depois papéis. Em abril de 2022, a precisão deste modelo em escala ImageNet melhorou de 79% para 92%, e espera-se que modelos grandes como GPT-2 sejam possíveis em um futuro próximo, embora o tempo de prova atual seja mais longo.
Vemos o zkML como um ecossistema rico e crescente projetado para estender os recursos de blockchains e contratos inteligentes, tornando-os mais flexíveis, adaptáveis e inteligentes.
Embora o zkML ainda esteja nos estágios iniciais de desenvolvimento, ele já começou a mostrar resultados promissores. À medida que a tecnologia se desenvolve e amadurece, podemos esperar ver casos de uso zkML mais inovadores na cadeia.