Cheetah: Acelerando la Inferencia Privada con Cifrado Homomórfico
El problema que resuelve
La inferencia privada de modelos de aprendizaje automático representa una paradoja fundamental en la arquitectura de sistemas modernos: necesitamos procesar datos en la nube para escalabilidad, pero la nube es intrínsecamente no confiable. Cheetah aborda el cuello de botella crítico que ha impedido la adopción práctica del cifrado homomórfico (HE) para inferencia de redes neuronales: la sobrecarga computacional de 1000x-10000x respecto a la inferencia en texto plano.
El problema se descompone en tres dimensiones:
-
Latencia operativa: Los esquemas HE tradicionales (BFV, CKKS) introducen operaciones aritméticas sobre ciphertexts que requieren multiplicaciones modulares costosas, con complejidad O(n²) o peor para operaciones tensoriales.
-
Overhead de memoria: Los ciphertexts expanden los datos en órdenes de magnitud (un vector de 1000 floats se convierte en ~256KB de ciphertext), saturando VRAM y bandwidth.
-
Bootstrapping prohibitivo: La operación de "refrescado" de ciphertexts (reducción de error acumulativo) era computacionalmente inviable para pipelines de inferencia en tiempo real.
Cheetah propone una arquitectura que reduce la sobrecarga de inferencia HE en 10-100x, haciendo viable la inferencia privada para modelos de tamaño moderado en entornos de producción.
Arquitectura y mecanismo (con detalle técnico)
Esquema base: CKKS con optimizaciones
Cheetah utiliza el esquema CKKS (Cheon-Kim-Kim-Song), elegido por su soporte nativo de aritmética aproximada con floats —crítico para activaciones neuronales— frente a BFV que opera con enteros exactos.
Pipeline de inferencia Cheetah:
[Cliente] → [Cifrado CKKS] → [Ciphertext] → [Servidor HE] → [Inferencia] → [Decifrado] → [Resultado]
↑ ↓
└────────────────────────────────────────────────────────────┘
(modelo en texto plano, datos cifrados)
Optimización 1: Inversa Modular Acelerada
El cuello de botella en CKKS es la inversa modular requerida para la multiplicación de ciphertexts. Cheetah introduce:
- Precomputación de inversos: Tablas de lookup para valores comunes en activaciones (ReLU, Sigmoid)
- Algoritmo de Newton-Raphson modular: Convergencia cuadrática O(log n) vs O(n) de inversión estándar
- Reducción de grado de polinomio: Limitar el anillo R_q = Z_q[x]/(x^n + 1) dinámicamente por capa
Optimización 2: Bootstrapping Híbrido
El bootstrapping tradicional requiere ~1000ms por capa. Cheetah implementa:
// Pseudocódigo del mecanismo de bootstrapping
fn hybrid_bootstrap(ciphertext: &Ciphertext) -> Ciphertext {
let error_budget = ciphertext.error_estimate();
if error_budget > THRESHOLD {
// Bootstrapping completo (raro, ~1000ms)
full_bootstrap(ciphertext)
} else if error_budget > THRESHOLD * 0.5 {
// Key switching parcial (común, ~10ms)
partial_key_switch(ciphertext)
} else {
// Sin operación (optimización)
ciphertext.clone()
}
}
Optimización 3: Tensor Layout Especializado
Cheetah reorganiza los tensores para maximizar vectorization homomórfica:
- Batch-first packing: Múltiples muestras en un ciphertext (batch dimension mapeado a slots del polinomio)
- Channel packing: Canales de convolución mapeados a slots para operaciones paralelas
- Padding inteligente: Alinear a potencias de 2 para FFT optimizado
Optimización 4: Routing de Operaciones
No todas las operaciones requieren HE:
| Operación | En HE | En texto plano |
|---|---|---|
| Convolution | ✓ | |
| Activation (ReLU) | ✓ (computar en dominio cifrado con lookup) | |
| BatchNorm | ✓ | |
| Pooling | ✓ |
Qué lo hace genuinamente nuevo
Innovación 1: 100x Speedup en Multiplicación
Mientras SEAL (Microsoft) y OpenFHE reportan 10-50ms por multiplicación de ciphertext, Cheetah logra 0.1-0.5ms mediante:
- Cache de inversos modulares con LRU eviction
- SIMD intrinsics para operaciones de polinomio
- Reducción de precisión dinámica (cuando el modelo lo permite)
Innovación 2: Bootstrapping Selectivo
A diferencia de enfoques anteriores que bootstrapean cada capa, Cheetah introduce error-aware scheduling:
Capa 1: Error 0.001 → Sin bootstrap
Capa 2: Error 0.01 → Sin bootstrap
Capa 3: Error 0.05 → Key switch parcial
Capa 4: Error 0.15 → Bootstrap completo (necesario)
Innovación 3: Integración con Frameworks ML
Cheetah provee wrappers para PyTorch/TensorFlow que interceptan el forward pass:
# Ejemplo de integración
import cheetah
@cheetah.encrypt_input
@cheetah.decrypt_output
def model_inference(x, model):
return model(x) # Operaciones automáticamente mapeadas a HE
Innovación 4: Verificación de Precisión
Cheetah incluye calibración automática que compara resultados HE vs texto plano, ajustando parámetros de precisión (q, n, delta) para mantener error < 1% en accuracy.
Cómo integrarlo en Zeropithos o Dibro
Componente: Pipeline RAG con Seguridad End-to-End
Arquitectura propuesta:
```
┌─────────────────────────────────────────────────────────────┐
│ Zeropithos Stack │
├─────────────────────────────────────────────────────────────┤
│ [Cliente] ───────────────────────────────────────────────►│
│ │ │
│ ├─► [Cheetah Encryptor] ─► Ciphertexts ───────────►│
│ │ │
│ ├─► [RAG Pipeline] ──────────────────────────────►│
│ │ │ │
│ │ ├─► [Fuseki SPARQL] (queries cifradas) │
│ │ ├─► [Vector Store] (embeddings cifradas) │
│ │ └─► [llama-server] (inferencia HE) │
│ │ │
│ └─► [BDI Loop] (razonamiento con context HE) │
│ │
│ ◄────────