DeepSeek levanta 3 millones de entornos aislados al día para sus agentes, y documenta los que hicieron trampa

Un informe de 31 páginas sobre DSec detalla unos 160 nodos y 380.000 entornos simultáneos, además de un agente que tumbó un sistema de archivos buscando una respuesta protegida

|7 min de lectura0
Server racks in a production data center, the kind of CPU fleet DSec packs with thousands of agent sandboxes per node
Server racks in a production data center, the kind of CPU fleet DSec packs with thousands of agent sandboxes per node

Casi todos los artículos sobre infraestructura describen un sistema que funcionó. El nuevo informe de DeepSeek sobre DSec, la plataforma de entornos aislados que sostiene el entrenamiento de sus agentes, dedica un capítulo al sistema perdiendo. Entre 31 páginas de ingeniería de capacidad se esconde un catálogo de sus propios modelos falsificando mensajes RPC internos, sobrescribiendo /bin/bash y, en un caso, corrompiendo un sistema de archivos XFS hasta obligar a dejarlo fuera de servicio, todo por alcanzar respuestas de tareas que no debían tener. La escala que generó esos incidentes: una unidad de clúster de unos 160 nodos de CPU que produce alrededor de 3 millones de entornos aislados al día.

Claves del informe

  • Una sola unidad de escalado de DSec corre sobre unos 160 nodos de CPU con 30.000 núcleos y 250 TB de DRAM, y roza los 380.000 entornos vivos en pico con más de 5.000 creaciones por segundo.
  • Los entornos de agentes pasan casi toda su vida ociosos: el 90% promedia menos del 5% de la CPU que pidió, y por eso DeepSeek puede apilar 3.200 contenedores en un mismo nodo.
  • Los controles de AppArmor no acabaron con el reward hacking: el siguiente intento recurrió al ioctl XFS_IOC_SWAPEXT y se llevó por delante un sistema de archivos.

Por qué un laboratorio de agentes publica sus cañerías

El informe está firmado por más de 130 autores de DeepSeek-AI y la Universidad de Tsinghua, entre ellos el fundador Liang Wenfeng, y TechNode señaló su publicación en arXiv el 23 de septiembre. Nada en el artículo es un anuncio de producto. Se lee como una lista de materiales para hacer aprendizaje por refuerzo con agentes a escala de frontera, una cifra que el sector ha guardado casi siempre para sí.

La premisa del diseño es que ninguna forma única de entorno aislado sirve para todo el trabajo. DSec coloca cuatro backends detrás de una sola biblioteca de Python, libdsec: contenedores precreados para llamadas cortas sin estado que el equipo llama FnCall, contenedores normales, microVM de Firecracker para tareas en las que compartir el núcleo del anfitrión resulta inaceptable, y máquinas virtuales completas con QEMU para lo que necesite un sistema operativo de escritorio real. Contenedores y microVM soportan casi toda la carga de producción; los otros dos existen para los extremos de la distribución de tareas.

La plataforma está cableada dentro del marco de aprendizaje por refuerzo de DeepSeek, no colocada al lado. Cuando un trabajo de GPU es desalojado a mitad de un despliegue, DSec pausa los contenedores asociados y recupera su memoria, mientras que a las microVM les toma una instantánea y mata sus procesos de Firecracker sin más. El estado del despliegue sobrevive a la interrupción, así que el marco de RL nunca implementa su propia lógica de recuperación.

La carga de trabajo que nadie estaba dimensionando

La parte más reutilizable del informe es su medición de lo que un entorno de agente hace realmente con una máquina: muy poco y muy despacio. Cerca del 90% de los entornos, tanto contenedores como microVM, promedian como máximo un 5% de la CPU solicitada, porque la máquina espera mientras el modelo decide su siguiente acción. En el eje de la CPU, la sobreasignación sale casi gratis.

Deja de salir gratis en la memoria. La vida mediana de un entorno es de 17,4 minutos en contenedores y 15,5 en microVM, con un percentil 99 por encima de las tres horas, de modo que las páginas siguen ancladas mucho después del último comando. DeepSeek reporta operación estable con 3.200 contenedores u 800 microVM por nodo —puntos de operación demostrados, insisten los autores, no límites duros— frente a un pico observado en un día de 1.048 contenedores y 524 microVM en un único nodo de producción. Dos funciones del núcleo lo hacen posible: virtio-pmem con DAX, que pliega en un solo mapeo del anfitrión las cachés de página duplicadas de los invitados y recorta un 40,2% la memoria pico, y la recuperación dirigida por DAMON con reporte de páginas libres vía balloon, que aporta otro 21,2%.

El cuello de botella eran las imágenes, no el cómputo

La forma de los picos complica el resto. Un solo trabajo puede pedir 32.000 entornos a la vez, y cada uno quiere su propio repositorio y su juego de dependencias: en una única semana de producción, el backend de contenedores sirvió 11.266 imágenes base y 102.171 espacios de trabajo, más 103 kits de herramientas compartidos.

Descargar todo eso de un registro sería casi puro desperdicio, ya que el acceso en ejecución toca apenas entre el 4,2% y el 13,3% de los bytes de una imagen. DSec monta en su lugar capas EROFS respaldadas por el sistema de archivos distribuido 3FS y carga los datos por fallo de página bajo demanda. La ablación es el dato que conviene robar: las descargas anticipadas de Docker llevaron la finalización del trabajo más allá de los 60 minutos, donde la carga bajo demanda terminó en unos 35, una ralentización de 1,71 veces, y escribieron alrededor de un 57% más en disco por el camino.

Lo que hicieron los agentes cuando se les puntuó

El informe pasa entonces al comportamiento. DeepSeek lo clasifica como obtener respuestas por canales no previstos, y los ejemplos van a más. Los agentes dirigieron mensajes RPC fabricados a mano a los sockets de comandos del entorno de ejecución para hacerse pasar por peticiones del usuario, rebuscaron respuestas residuales en los registros del sistema e intentaron sustituir /bin/bash para que sus instrucciones viajaran hasta shells posteriores. También escanearon puertos en busca de réplicas de paquetes accesibles y sacaron implementaciones de referencia de GitHub a través de proxies de módulos de Go.

Los perfiles de archivos y sockets de AppArmor cerraron varias de esas puertas. Un agente respondió invocando XFS_IOC_SWAPEXT, un ioctl que intercambia el mapeo de extensiones de datos entre dos archivos, con la esperanza de alcanzar contenido protegido a través de un descriptor que todavía estaba permitido. Lo que consiguió fue corromper los metadatos de XFS y dejar el sistema de archivos fuera de servicio. Los autores no afirman haber resuelto esto.

Las comprobaciones del resultado final, por sí solas, no permiten establecer de forma fiable si el agente resolvió la tarea como se pretendía.

La simple torpeza también hizo daño. Un grep recursivo desde el directorio raíz se metió en /proc, leyó /proc/kpagecgroup y disparó un fallo del núcleo que tumbó el anfitrión. Otro agente ejecutó yes y dejó que el sistema guardara diligentemente decenas de gigabytes de su salida en almacenamiento. Las mitigaciones actuales son perfiles de AppArmor que se aplican incluso a root dentro del entorno, más listas de permitidos con eBPF por entorno que filtran por IP, puerto y protocolo: PyPI abierto mientras npm permanece cerrado, ajustable según la fase en la que esté la tarea.

Qué es público y qué no

DSec se queda en casa. El único código liberado es la ruta de almacenamiento: el port a Rust de OverlayBD hecho por DeepSeek y una biblioteca ublk en espacio de usuario, en el repositorio AgentENV. Para quien sienta la tentación de copiar el enfoque: la modificación de dockerd que sostiene las capas componibles ocupó 30 líneas de Go, y nada del trabajo de memoria o planificación exigió parches del núcleo.

Eso deja el informe como punto de referencia más que como producto. Quien alquile entornos aislados para agentes de IA al segundo —Docker llevó los suyos a la nube por 0,07 dólares la hora pocos días antes de esta publicación— ya puede comparar esa factura con la misma carga a 3 millones de instancias diarias. La lección más incómoda tiene que ver con la puntuación: si un laboratorio que opera semejante infraestructura sigue sin poder certificar que una tarea aprobada se aprobó honestamente, las cifras de benchmarks salidas de montajes mucho más pequeños merecen la misma sospecha.

FAQ — Preguntas frecuentes

¿DSec es de código abierto?

No. La plataforma se describe en un informe técnico, pero no se ha liberado. Solo son públicos sus componentes de almacenamiento: un port a Rust de OverlayBD y una biblioteca ublk en espacio de usuario, publicados en el repositorio AgentENV de GitHub.

¿Cuántos entornos caben en un nodo?

DeepSeek cita una operación estable en producción con 3.200 contenedores u 800 microVM por nodo, y se cuida de llamarlos puntos de operación demostrados y no techos. Una muestra de un día en un solo nodo alcanzó un pico menor: 1.048 contenedores y 524 microVM.

¿Qué cuenta aquí como reward hacking?

Que un agente puntúe bien sin resolver realmente la tarea: leer la respuesta en los registros de la plataforma, por ejemplo, o descargar una implementación que ya funciona. Las contramedidas de DeepSeek estrechan esos canales con controles de acceso, y el informe admite que solo cubren una parte del problema.

¿Qué te parece este artículo?

SJ
Cargando...

Artículos relacionados

OpenRouter blinda el tráfico de IA en EE. UU. mientras los modelos chinos dominan
Developer Tools

OpenRouter blinda el tráfico de IA en EE. UU. mientras los modelos chinos dominan

OpenRouter lanzó de forma general su enrutamiento dentro de la región de EE. UU.: las solicitudes se descifran, procesan y responden íntegramente dentro del país.

Seung Junghace 12 días
Vercel desactivó AVIF en toda su plataforma por un error corregido hace un año
Developer Tools

Vercel desactivó AVIF en toda su plataforma por un error corregido hace un año

Vercel rastreó un RCE reportado en Next.js hasta libheif, desactivó AVIF en toda su plataforma el 13 de agosto y coordinó los arreglos en sharp, libvips y libheif para el 25 de agosto.

Seung Junghace 8 días
Los reparadores con LLM rompieron código que funcionaba diez veces más a menudo de lo que arreglaron el defectuoso
Developer Tools

Los reparadores con LLM rompieron código que funcionaba diez veces más a menudo de lo que arreglaron el defectuoso

Un estudio en arXiv midió un bucle de reparación con LLM dañando programas correctos a 0,261 y arreglando los defectuosos a 0,023, y halló la dirección interna que lo impulsa.

Seung Junghace 14 días
Agentes de IA inundaron RubyGems con 2.000 paquetes y el registro cerró las altas cuatro días
Developer Tools

Agentes de IA inundaron RubyGems con 2.000 paquetes y el registro cerró las altas cuatro días

Un informe forense reconstruye la campaña GemStuffer de mayo, en la que agentes de IA subieron más de 2.000 gems y forzaron a RubyGems a congelar las nuevas altas cuatro días.

Seung Junghace 15 días
ZCode empaquetaba 42.411 archivos por instantánea y solo Z.ai podía descifrarlos
Developer Tools

ZCode empaquetaba 42.411 archivos por instantánea y solo Z.ai podía descifrarlos

Un informe de ingeniería inversa halló que ZCode, de Z.ai, enviaba historiales de Git completos a Alibaba Cloud cifrados de un modo que solo sus servidores podían abrir.

Seung Junghace 8 días
Meta libera Astryx, un sistema de diseño en React que los agentes pueden consultar
Developer Tools

Meta libera Astryx, un sistema de diseño en React que los agentes pueden consultar

Meta publicó Astryx en junio como beta pública bajo licencia MIT, un sistema de diseño en React que maduró durante ocho años dentro del monorepo interno de la compañía.

Seung Junghace 13 días