Mécanisme de preuve au niveau du noyau pour les modèles d'apprentissage automatique

robot
Création du résumé en cours

Auteur original : Zhiyong Fang

"Comment manger un éléphant ? Une bouchée à la fois."

Ces dernières années, les modèles d’apprentissage automatique ont évolué à pas de géant à un rythme étonnant. À mesure que les capacités des modèles augmentent, leur complexité augmente également : les modèles avancés d’aujourd’hui contiennent souvent des millions, voire des milliards de paramètres. Pour relever ces défis d’échelle, une variété de systèmes de preuve à divulgation nulle de connaissance ont vu le jour, qui s’efforcent d’équilibrer dynamiquement le temps de preuve, le temps de vérification et la taille de la preuve.

Tableau 1 : Croissance exponentielle de l'échelle des paramètres du modèle

​Mécanisme de preuve au niveau du noyau du modèle d'apprentissage automatique

Bien que la plupart des travaux actuels dans le domaine des preuves à divulgation nulle soient concentrés sur l'optimisation des systèmes de preuve eux-mêmes, une dimension clé est souvent négligée : comment décomposer des modèles à grande échelle en sous-modules plus petits et plus faciles à traiter pour la preuve. Vous pourriez vous demander pourquoi cela est si important ?

Voici une explication détaillée :

Le nombre de paramètres des modèles d'apprentissage automatique modernes est souvent compté en milliards, occupant déjà d'énormes ressources mémoire même sans impliquer de traitement cryptographique. Dans le cadre des preuves à connaissance nulle (Zero-Knowledge Proof, ZKP), ce défi est encore amplifié.

Chaque paramètre à virgule flottante doit être converti en un élément du domaine algébrique (Arithmetic Field), et ce processus de conversion entraîne une augmentation de l'utilisation de la mémoire d'environ 5 à 10 fois. De plus, pour simuler avec précision les opérations à virgule flottante dans le domaine algébrique, des frais d'opération supplémentaires doivent également être introduits, généralement autour de 5 fois.

Dans l'ensemble, les besoins en mémoire du modèle pourraient augmenter de 25 à 50 fois par rapport à l'échelle d'origine. Par exemple, un modèle avec 1 milliard de paramètres flottants de 32 bits pourrait nécessiter entre 100 et 200 Go de mémoire juste pour stocker les paramètres convertis. En tenant compte des valeurs de calcul intermédiaires et des frais associés au système de preuve lui-même, l'utilisation globale de la mémoire pourrait facilement dépasser le niveau de plusieurs To.

Les systèmes de preuve actuels, tels que Groth 16 et Plonk, supposent généralement que toutes les données pertinentes peuvent être chargées simultanément en mémoire dans leurs implémentations non optimisées. Bien que cette hypothèse soit techniquement faisable, elle est très difficile à réaliser dans des conditions matérielles réelles, ce qui limite considérablement les ressources de calcul de preuve disponibles.

La solution de Polyhedra : zkCuda

Qu'est-ce que zkCuda ?

Comme indiqué dans la documentation technique zkCUDA : zkCUDA, lancé par Polyhedra, est un environnement de calcul à connaissance nulle destiné au développement de circuits haute performance, conçu pour améliorer l'efficacité de la génération de preuves. Sans sacrifier la capacité d'expression des circuits, zkCUDA peut pleinement tirer parti des capacités parallèles des prouveurs sous-jacents et du matériel, permettant une génération rapide de preuves ZK.

Le langage zkCUDA est hautement similaire à CUDA en termes de syntaxe et de sémantique, ce qui le rend très convivial pour les développeurs ayant une expérience préalable avec CUDA, et il est implémenté en Rust à un niveau inférieur, garantissant à la fois sécurité et performance.

Avec zkCUDA, les développeurs peuvent :

  • Construire rapidement des circuits ZK haute performance ;
  • Planification efficace et utilisation des ressources matérielles distribuées, telles que les GPU ou les environnements de cluster prenant en charge MPI, pour réaliser des calculs parallèles à grande échelle.

Pourquoi choisir zkCUDA ?

zkCuda est un cadre de calcul à connaissance nulle haute performance inspiré du calcul GPU, capable de décomposer des modèles d'apprentissage automatique de très grande taille en unités de calcul (kernels) plus petites et plus faciles à gérer, et d'assurer un contrôle efficace grâce à un langage frontal similaire à CUDA. Cette conception apporte les avantages clés suivants :

1. Système de preuve de correspondance précise

zkCUDA prend en charge l'analyse granulée de chaque noyau de calcul et associe le système de preuve à zéro connaissance le plus approprié. Par exemple :

  • Pour les tâches de calcul hautement parallèles, il est possible d'utiliser des protocoles comme GKR qui sont spécialisés dans le traitement de la parallélisation structurée ;
  • Pour les tâches de plus petite taille ou de structure irrégulière, il est plus approprié d'utiliser des systèmes de preuve à faible coût comme Groth 16, qui sont adaptés aux scénarios de calcul compact.

En choisissant un backend personnalisé, zkCUDA peut maximiser les avantages de performance des différents protocoles ZK.

2. Une gestion des ressources plus intelligente et une optimisation parallèle

Les différences dans les besoins en ressources CPU, mémoire et I/O des différents noyaux de preuve sont significatives. zkCUDA peut évaluer avec précision la consommation de ressources de chaque tâche et planifier intelligemment pour maximiser la capacité globale de traitement.

Plus important encore, zkCUDA prend en charge la distribution des tâches entre des plateformes de calcul hétérogènes - y compris CPU, GPU et FPGA - permettant ainsi une utilisation optimale des ressources matérielles et améliorant considérablement les performances au niveau système.

L'adéquation naturelle entre zkCuda et le protocole GKR

Bien que zkCuda ait été conçu comme un cadre de calcul général compatible avec divers systèmes de preuve à connaissance nulle, il présente une forte compatibilité architecturale avec le protocole GKR (Goldwasser-Kalai-Rothblum).

​Mécanisme de preuve au niveau du noyau du modèle d'apprentissage automatique

En termes de conception architecturale, zkCUDA introduit un mécanisme d’engagement polynomial pour connecter chaque cœur de sous-calcul afin de garantir que tous les sous-calculs s’exécutent sur des données partagées cohérentes. Ce mécanisme est essentiel au maintien de l’intégrité du système, mais il s’accompagne également de coûts de calcul importants.

En revanche, le protocole GKR offre une voie alternative plus efficace. Contrairement aux systèmes traditionnels à connaissance zéro, qui exigent que chaque cœur prouve pleinement ses contraintes internes, GKR permet de retracer de manière récursive la vérification de l’exactitude du calcul de la sortie du noyau à l’entrée. Ce mécanisme permet de transférer l’exactitude entre les noyaux, plutôt que d’être entièrement vérifiée dans chaque module. L’idée de base est similaire à la rétropropagation de gradient dans l’apprentissage automatique, où les déclarations d’exactitude sont tracées et transmises par le biais de graphiques informatiques.

Bien que la fusion de ce type de "gradient de preuve" dans plusieurs chemins entraîne une certaine complexité, c'est précisément ce mécanisme qui constitue la base de la profonde synergie entre zkCUDA et GKR. En alignant les caractéristiques structurelles du processus de formation de l'apprentissage automatique, zkCUDA devrait permettre une intégration système plus étroite et une génération de preuves à connaissance nulle plus efficace dans des scénarios de grands modèles.

Résultats préliminaires et directions futures

Nous avons terminé le développement initial du cadre zkCuda et avons réussi à le tester dans plusieurs scénarios, y compris des fonctions de hachage cryptographiques telles que Keccak et SHA-256, ainsi que des modèles d'apprentissage automatique de petite taille.

En regardant vers l'avenir, nous espérons introduire davantage une série de techniques d'ingénierie matures dans l'entraînement moderne de l'apprentissage automatique, telles que la planification efficace en mémoire (memory-efficient scheduling) et l'optimisation au niveau du graphe (graph-level optimization). Nous croyons que l'intégration de ces stratégies dans le processus de génération de preuves à divulgation nulle de connaissance améliorera considérablement les limites de performance et la flexibilité d'adaptation du système.

Ce n'est qu'un point de départ, zkCuda continuera d'avancer vers un cadre de preuve générique efficace, hautement extensible et hautement adaptable.

Lien original

Voir l'original
Le contenu est fourni à titre de référence uniquement, il ne s'agit pas d'une sollicitation ou d'une offre. Aucun conseil en investissement, fiscalité ou juridique n'est fourni. Consultez l'Avertissement pour plus de détails sur les risques.
  • Récompense
  • Commentaire
  • Partager
Commentaire
0/400
Aucun commentaire
  • Épingler
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)