Mecanismo de prueba a nivel de núcleo para modelos de aprendizaje automático

robot
Generación de resúmenes en curso

Autor original: Zhiyong Fang

"¿Cómo comer un elefante? Bocado a bocado."

En los últimos años, los modelos de aprendizaje automático han evolucionado a pasos agigantados a un ritmo asombroso. A medida que aumentan las capacidades de los modelos, también lo hace su complejidad: los modelos avanzados de hoy en día a menudo contienen millones o incluso miles de millones de parámetros. Para abordar estos desafíos de escala, han surgido una variedad de sistemas de prueba de conocimiento cero que se esfuerzan por equilibrar dinámicamente el tiempo de prueba, el tiempo de verificación y el tamaño de la prueba.

Tabla 1: Crecimiento exponencial en la escala de parámetros del modelo

​Mecanismo de prueba a nivel de núcleo del modelo de aprendizaje automático

A pesar de que la mayor parte del trabajo actual en el campo de las pruebas de conocimiento cero se centra en la optimización del sistema de pruebas en sí, a menudo se pasa por alto una dimensión clave: cómo dividir modelos a gran escala de manera razonable en submódulos más pequeños y manejables para su prueba. Te podrías preguntar, ¿por qué es esto tan importante?

A continuación, explicaremos en detalle:

El número de parámetros en los modelos modernos de aprendizaje automático a menudo se cuenta por miles de millones, y aunque no se involucren procesos criptográficos, ya ocupa recursos de memoria extremadamente altos. En el contexto de las pruebas de conocimiento cero (Zero-Knowledge Proof, ZKP), este desafío se amplifica aún más.

Cada parámetro de número de punto flotante debe ser convertido en un elemento del campo aritmético, y este proceso de conversión en sí mismo puede aumentar el uso de memoria entre 5 y 10 veces. Además, para simular con precisión las operaciones de punto flotante en el campo aritmético, es necesario introducir un costo operativo adicional, que normalmente también es alrededor de 5 veces.

En general, la demanda de memoria del modelo podría aumentar de 25 a 50 veces su tamaño original. Por ejemplo, un modelo que tiene 1,000 millones de parámetros de punto flotante de 32 bits, solo para almacenar los parámetros convertidos, podría requerir entre 100 y 200 GB de memoria. Si se consideran los valores de cálculo intermedios y los gastos del propio sistema de prueba, el uso total de memoria fácilmente supera el nivel de TB.

Los sistemas de prueba más utilizados actualmente, como Groth 16 y Plonk, suelen asumir en implementaciones no optimizadas que todos los datos relevantes se pueden cargar simultáneamente en la memoria. Aunque esta suposición es técnicamente viable, es extremadamente desafiante bajo condiciones de hardware reales, lo que limita enormemente los recursos de cálculo de pruebas disponibles.

Solución de Polyhedra: zkCuda

¿Qué es zkCuda?

Como se describe en la "Documentación técnica de zkCUDA": zkCUDA, lanzado por Polyhedra, es un entorno de computación de conocimiento cero orientado al desarrollo de circuitos de alto rendimiento, diseñado para mejorar la eficiencia en la generación de pruebas. Sin sacrificar la capacidad de expresión del circuito, zkCUDA puede aprovechar al máximo el probador subyacente y la capacidad de paralelismo del hardware, logrando una rápida generación de pruebas ZK.

El lenguaje zkCUDA es altamente similar a CUDA en términos de sintaxis y semántica, lo que lo hace muy amigable para los desarrolladores con experiencia en CUDA, y su implementación subyacente en Rust garantiza tanto seguridad como rendimiento.

Con zkCUDA, los desarrolladores pueden:

  • Construcción rápida de circuitos ZK de alto rendimiento;
  • Programación eficiente y utilización de recursos de hardware distribuidos, como GPU o entornos de clúster que soportan MPI, para realizar cálculos paralelos a gran escala.

¿Por qué elegir zkCUDA?

zkCuda es un marco de computación de cero conocimiento de alto rendimiento diseñado inspirado en el cálculo de GPU, que puede descomponer modelos de aprendizaje automático de gran escala en unidades de cálculo más pequeñas y manejables (kernels), y lograr un control eficiente mediante un lenguaje de frontend similar a CUDA. Este diseño aporta las siguientes ventajas clave:

1. Sistema de pruebas de coincidencia precisa seleccionada

zkCUDA admite un análisis de grano fino para cada kernel de cálculo y empareja el sistema de prueba de conocimiento cero más adecuado para él. Por ejemplo:

  • Para tareas de cálculo altamente paralelas, se pueden optar por protocolos como GKR que son expertos en manejar paralelismo estructurado;
  • Para tareas de menor escala o con estructuras irregulares, es más adecuado utilizar sistemas de prueba como Groth 16, que tienen un bajo costo en escenarios de cómputo compacto.

Al personalizar la selección del backend, zkCUDA puede maximizar las ventajas de rendimiento de varios protocolos ZK.

2. Una programación de recursos más inteligente y optimización paralela

Las diferencias en las demandas de recursos de CPU, memoria y I/O son significativas entre los diferentes kernels de prueba. zkCUDA puede evaluar con precisión el consumo de recursos de cada tarea y programar inteligentemente para maximizar la capacidad de procesamiento general.

Lo más importante es que zkCUDA admite la distribución de tareas entre plataformas de computación heterogéneas, incluyendo CPU, GPU y FPGA, lo que permite una utilización óptima de los recursos de hardware y mejora significativamente el rendimiento a nivel de sistema.

La coincidencia natural entre zkCuda y el protocolo GKR

A pesar de que zkCuda fue diseñado como un marco de cálculo general compatible con varios sistemas de prueba de conocimiento cero, tiene una alta compatibilidad arquitectónica natural con el protocolo GKR (Goldwasser-Kalai-Rothblum).

​Mecanismo de prueba a nivel de núcleo del modelo de aprendizaje automático

En el diseño de la arquitectura, zkCUDA conecta varios núcleos de cálculo secundarios mediante la introducción de un mecanismo de compromiso polinómico, asegurando que todos los subcálculos se realicen sobre datos compartidos consistentes. Este mecanismo es crucial para mantener la integridad del sistema, pero también conlleva un costo computacional significativo.

Por el contrario, el protocolo GKR ofrece una ruta alternativa más eficiente. A diferencia de los sistemas tradicionales de conocimiento cero, que requieren que cada núcleo demuestre completamente sus restricciones internas, GKR permite que la verificación de la corrección computacional se rastree recursivamente desde la salida del kernel hasta la entrada. Este mecanismo permite que la exactitud se transfiera a través de los kernels, en lugar de verificarse completamente en cada módulo. La idea central es similar a la retropropagación de gradiente en el aprendizaje automático, donde las afirmaciones de corrección se rastrean y transmiten a través de gráficos computacionales.

Aunque la fusión de este tipo de "gradientes de prueba" en múltiples rutas introduce cierta complejidad, es precisamente este mecanismo el que constituye la base de la profunda colaboración entre zkCUDA y GKR. Al alinear las características estructurales en el proceso de entrenamiento de aprendizaje automático, zkCUDA tiene la esperanza de lograr una integración del sistema más estrecha y una generación de prueba de conocimiento cero más eficiente en escenarios de modelos grandes.

Resultados preliminares y dirección futura

Hemos completado el desarrollo inicial del marco zkCuda y hemos realizado pruebas exitosas en múltiples escenarios, incluyendo funciones hash criptográficas como Keccak y SHA-256, así como modelos de aprendizaje automático a pequeña escala.

De cara al futuro, esperamos introducir aún más una serie de técnicas de ingeniería maduras en el entrenamiento de aprendizaje automático moderno, como la programación eficiente de memoria (memory-efficient scheduling) y la optimización a nivel de gráfico (graph-level optimization). Creemos que integrar estas estrategias en el proceso de generación de pruebas de conocimiento cero mejorará enormemente los límites de rendimiento del sistema y la flexibilidad de adaptación.

Este es solo un punto de partida, zkCuda continuará avanzando hacia un marco de prueba general eficiente, altamente escalable y adaptable.

Enlace original

Ver originales
El contenido es solo de referencia, no una solicitud u oferta. No se proporciona asesoramiento fiscal, legal ni de inversión. Consulte el Descargo de responsabilidad para obtener más información sobre los riesgos.
  • Recompensa
  • Comentar
  • Compartir
Comentar
0/400
Sin comentarios
  • Anclado
Opere con criptomonedas en cualquier momento y lugar
qrCode
Escanee para descargar la aplicación Gate
Comunidad
Español
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)