<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: 김민식/학생</title>
    <description>The latest articles on DEV Community by 김민식/학생 (@_0e3192755d4df45b92).</description>
    <link>https://dev.to/_0e3192755d4df45b92</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4163327%2Ff19c87e6-dc4d-41e0-ba4c-8eecf08a41f0.png</url>
      <title>DEV Community: 김민식/학생</title>
      <link>https://dev.to/_0e3192755d4df45b92</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/_0e3192755d4df45b92"/>
    <language>en</language>
    <item>
      <title>¿Puede una NPU solo-inferencia preentrenar un LLM? 325M de parámetros desde cero, con la misma calidad que una B200</title>
      <dc:creator>김민식/학생</dc:creator>
      <pubDate>Mon, 26 Oct 2026 05:53:36 +0000</pubDate>
      <link>https://dev.to/_0e3192755d4df45b92/puede-una-npu-solo-inferencia-preentrenar-un-llm-325m-de-parametros-desde-cero-con-la-misma-hag</link>
      <guid>https://dev.to/_0e3192755d4df45b92/puede-una-npu-solo-inferencia-preentrenar-un-llm-325m-de-parametros-desde-cero-con-la-misma-hag</guid>
      <description>&lt;h2&gt;
  
  
  Resumen
&lt;/h2&gt;

&lt;p&gt;Sí, siempre que exista una pila de entrenamiento hecha para ello. En VIDRAFT preentrenamos &lt;strong&gt;VKORE-325M-NPU-Base&lt;/strong&gt; (325,6 millones de parámetros) desde una inicialización aleatoria en la &lt;strong&gt;Rebellions ATOM-Max&lt;/strong&gt;, una NPU comercial coreana lanzada en 2025 y diseñada para inferencia. Entrenamos el mismo modelo en una &lt;strong&gt;GPU B200&lt;/strong&gt; como referencia. En 1.024 ventanas de texto que ningún modelo vio durante el entrenamiento, la NPU obtiene una pérdida de &lt;strong&gt;0,7993&lt;/strong&gt; y la GPU &lt;strong&gt;0,7994&lt;/strong&gt;. Los pesos de ambos y el script de evaluación son públicos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2FFINAL-Bench%2FVKORE-325M-NPU-Base%2Fresolve%2Fmain%2Farticle%2Ffig1_hero.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2FFINAL-Bench%2FVKORE-325M-NPU-Base%2Fresolve%2Fmain%2Farticle%2Ffig1_hero.png" alt="VKORE-325M en una imagen" width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Por qué se asume que una NPU de inferencia no puede entrenar?
&lt;/h2&gt;

&lt;p&gt;El compilador y el entorno de ejecución de un acelerador de inferencia están hechos para ejecutar la pasada hacia adelante de un modelo entrenado en otro lugar. Preentrenar exige mucho más: retropropagación por todas las capas, estado del optimizador y actualizaciones estables durante decenas de miles de pasos. Nada de eso viene incluido.&lt;/p&gt;

&lt;p&gt;La pregunta tiene consecuencias económicas. Las NPU de inferencia cuestan menos y consumen menos energía que las GPU de entrenamiento, y muchas organizaciones ya las tienen. Si también pueden entrenar, un solo tipo de chip cubre los dos trabajos.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué entrenamos exactamente?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Elemento&lt;/th&gt;
&lt;th&gt;Valor&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Modelo&lt;/td&gt;
&lt;td&gt;VKORE-325M-NPU-Base, Transformer solo decodificador&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Parámetros&lt;/td&gt;
&lt;td&gt;325,6M (20 capas, ancho 1024, FFN 3584, GQA 8 consultas / 2 KV)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vocabulario&lt;/td&gt;
&lt;td&gt;256, a nivel de byte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Datos&lt;/td&gt;
&lt;td&gt;5.000 millones de tokens de byte de FineWeb-Edu&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Entrenamiento&lt;/td&gt;
&lt;td&gt;76.292 pasos, unos cuatro días, inicialización aleatoria&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pesos preentrenados usados&lt;/td&gt;
&lt;td&gt;ninguno&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hardware&lt;/td&gt;
&lt;td&gt;NPU Rebellions ATOM-Max (2025)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  ¿Cómo se demuestra la "calidad de GPU"?
&lt;/h2&gt;

&lt;p&gt;Con una referencia que solo cambie el hardware. Entrenamos el mismo modelo dos veces con la misma inicialización, los mismos datos, el mismo lote y el mismo calendario de tasa de aprendizaje: una vez en la NPU y otra en una sola GPU B200.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2FFINAL-Bench%2FVKORE-325M-NPU-Base%2Fresolve%2Fmain%2Farticle%2Ffig6_twin_design.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2FFINAL-Bench%2FVKORE-325M-NPU-Base%2Fresolve%2Fmain%2Farticle%2Ffig6_twin_design.png" alt="Un modelo, dos máquinas, todo lo demás fijo" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg8yjy8vynqyh2f6oggya.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg8yjy8vynqyh2f6oggya.png" alt="Calendario de tasa de aprendizaje idéntico" width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Coinciden las curvas de entrenamiento?
&lt;/h2&gt;

&lt;p&gt;Se superponen durante todo el entrenamiento, de unos 5,8 a unos 0,80.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2FFINAL-Bench%2FVKORE-325M-NPU-Base%2Fresolve%2Fmain%2Farticle%2Ffig2_training_loss.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2FFINAL-Bench%2FVKORE-325M-NPU-Base%2Fresolve%2Fmain%2Farticle%2Ffig2_training_loss.png" alt="Pérdida de entrenamiento, NPU frente a B200" width="799" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Y en texto que el modelo nunca vio?
&lt;/h2&gt;

&lt;p&gt;El corpus de entrenamiento se construyó solo con los dos primeros fragmentos de FineWeb-Edu &lt;code&gt;sample/10BT&lt;/code&gt;. Evaluamos ambos modelos publicados en 1.024 ventanas del fragmento &lt;code&gt;013&lt;/code&gt;, que nunca formó parte del entrenamiento.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Modelo&lt;/th&gt;
&lt;th&gt;Pérdida, texto no visto&lt;/th&gt;
&lt;th&gt;Bits por byte&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;NPU Rebellions ATOM-Max&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0,7993&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1,1531&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPU B200 de referencia&lt;/td&gt;
&lt;td&gt;0,7994&lt;/td&gt;
&lt;td&gt;1,1533&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2FFINAL-Bench%2FVKORE-325M-NPU-Base%2Fresolve%2Fmain%2Farticle%2Ffig3_evaluation.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2FFINAL-Bench%2FVKORE-325M-NPU-Base%2Fresolve%2Fmain%2Farticle%2Ffig3_evaluation.png" alt="Evaluación con intervalos de confianza del 95 %" width="800" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Comparando ventana por ventana, la diferencia media es &lt;strong&gt;-0,0001&lt;/strong&gt; (NPU menos GPU) con un error estándar de &lt;strong&gt;0,0007&lt;/strong&gt;, y la NPU es mejor en el 50,1 % de las ventanas. A esta resolución no se pueden distinguir.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy50kh9fr17pvf4zzc3vx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy50kh9fr17pvf4zzc3vx.png" alt="Diferencia por ventana en texto no visto" width="800" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué cambió respecto a VKORE-46M?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2FFINAL-Bench%2FVKORE-325M-NPU-Base%2Fresolve%2Fmain%2Farticle%2Ffig7_journey.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2FFINAL-Bench%2FVKORE-325M-NPU-Base%2Fresolve%2Fmain%2Farticle%2Ffig7_journey.png" alt="De VKORE-46M-NPU a VKORE-325M-NPU-Base" width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lo difícil no fue la retropropagación, sino mantener estable un entrenamiento largo hasta el final. Esa técnica de estabilidad es propia y está en proceso de patente, por eso no la describimos.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Basta con comprar la NPU para entrenar?
&lt;/h2&gt;

&lt;p&gt;No. La ATOM-Max y su software estándar están diseñados para inferencia. Entrenar en ella depende de nuestra propia pila de entrenamiento y de nuestra técnica de estabilidad. Comprar el chip no permite entrenar por sí solo.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Cómo reproducirlo?
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;transformers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;

&lt;span class="n"&gt;npu&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;FINAL-Bench/VKORE-325M-NPU-Base&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;gpu&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;FINAL-Bench/VKORE-325M-NPU-Base&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;subfolder&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;b200_reference&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El script &lt;code&gt;evaluate_unseen.py&lt;/code&gt; del repositorio descarga el fragmento &lt;code&gt;013&lt;/code&gt;, toma las mismas 1.024 ventanas y muestra ambas pérdidas y la diferencia emparejada.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preguntas frecuentes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;¿Qué NPU se usó?&lt;/strong&gt; La Rebellions ATOM-Max, una NPU comercial de inferencia lanzada en 2025.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿El modelo de la NPU es tan bueno como el de la GPU?&lt;/strong&gt; En texto no visto, sí: 0,7993 frente a 0,7994, con una diferencia emparejada de -0,0001 y error estándar de 0,0007.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Es un modelo de chat?&lt;/strong&gt; No. Es un modelo base de 325M entrenado con 5.000 millones de tokens, publicado como resultado de hardware de entrenamiento.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Es abierto el método?&lt;/strong&gt; Los pesos, la receta de datos y la evaluación son abiertos. La pila de entrenamiento y la técnica de estabilidad son propias y están en proceso de patente.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lecturas recomendadas
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Informe técnico completo (inglés): &lt;a href="https://huggingface.co/blog/FINAL-Bench/pretraining-a-325m-language-model-from-zero-on-an" rel="noopener noreferrer"&gt;Pretraining a 325M Language Model from Zero on an Inference-Only NPU&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Modelos: &lt;a href="https://huggingface.co/FINAL-Bench/VKORE-325M-NPU-Base" rel="noopener noreferrer"&gt;FINAL-Bench/VKORE-325M-NPU-Base&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/_0e3192755d4df45b92/preentrenamiento-desde-cero-en-una-npu-solo-inferencia-vkore-46m-npu-1kdg"&gt;Preentrenamiento desde cero en una NPU solo-inferencia: VKORE-46M-NPU&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/_0e3192755d4df45b92/when-attacks-automate-defense-has-to-automate-too-24j0"&gt;When attacks automate, defense has to automate too&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>llm</category>
      <category>spanish</category>
    </item>
    <item>
      <title>When attacks automate, defense has to automate too</title>
      <dc:creator>김민식/학생</dc:creator>
      <pubDate>Fri, 23 Oct 2026 09:23:17 +0000</pubDate>
      <link>https://dev.to/_0e3192755d4df45b92/when-attacks-automate-defense-has-to-automate-too-24j0</link>
      <guid>https://dev.to/_0e3192755d4df45b92/when-attacks-automate-defense-has-to-automate-too-24j0</guid>
      <description>&lt;p&gt;In autumn 2026, seven financial institutions in Korea were breached by a single open-source AI penetration tool, and roughly 65,000 customer records were taken. The attack path was not exotic: injection in a peripheral web app, authentication bypass, and bulk harvesting through sequential access. What changed was speed and autonomy.&lt;/p&gt;

&lt;p&gt;Once an attack runs itself, the defense has to run itself too. That is the premise behind Chitos.&lt;/p&gt;

&lt;h2&gt;
  
  
  What autonomy looks like here
&lt;/h2&gt;

&lt;p&gt;Chitos forms its own audit hypotheses from reconnaissance, and when one path is blocked it researches another and keeps going, widening coverage without a human spelling out each step. Then an AI verification layer re-reads every first-pass finding and filters false positives, so what you get is reproducible evidence, not a pile of maybes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers
&lt;/h2&gt;

&lt;p&gt;On the OWASP Benchmark, the base scanner scores 52.8 Youden. With the AI verification layer, Chitos reaches 77.8 on-prem (Darwin-180B-RSI) and 77.2 online (Claude Opus 5.5), removing more than 60 percent of false positives while missing no real vulnerabilities. Publicly reported commercial tools sit in the mid-70s and above, and these self-measured figures land in that range.&lt;/p&gt;

&lt;p&gt;Security should speak in evidence, not promises. We are stacking that evidence as numbers, with official cross-validation in progress.&lt;/p&gt;

&lt;p&gt;More: &lt;a href="https://vidraft.net" rel="noopener noreferrer"&gt;https://vidraft.net&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>ai</category>
      <category>appsec</category>
      <category>llm</category>
    </item>
    <item>
      <title>Antes de enviar una molécula: cómo comprobar los límites del Open Discovery Challenge con RDKit</title>
      <dc:creator>김민식/학생</dc:creator>
      <pubDate>Thu, 22 Oct 2026 14:33:22 +0000</pubDate>
      <link>https://dev.to/_0e3192755d4df45b92/antes-de-enviar-una-molecula-como-comprobar-los-limites-del-open-discovery-challenge-con-rdkit-2707</link>
      <guid>https://dev.to/_0e3192755d4df45b92/antes-de-enviar-una-molecula-como-comprobar-los-limites-del-open-discovery-challenge-con-rdkit-2707</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;El Open Discovery Challenge (ODC) de FINAL-Bench, organizado por VIDRAFT, pide una sola cosa: una molécula escrita como SMILES. Un verificador automático que no puedes ver la puntúa y la coloca en un ranking público. Antes de que tu envío llegue a ese verificador hay una puerta barata y totalmente pública: los límites de entrada (peso molecular máximo y átomos pesados máximos), que cambian por temporada. Un envío fuera de límites se rechaza con el motivo a la vista. En este artículo leo los límites desde la API en vivo de hoy (22 de octubre de 2026), escribo un validador de 30 líneas con RDKit y lo pruebo con cinco fármacos reales. Resultado concreto: la bedaquilina pesa 555,5 Da, solo 5,5 por encima del límite de 550 de la temporada 2, y la rifampicina se rechaza en todas las temporadas abiertas. La temporada 2 (tuberculosis, premio de USD 2.000) cierra el 31 de octubre de 2026.&lt;/p&gt;

&lt;p&gt;Una aclaración de entrada: VIDRAFT organiza el reto, y esta cuenta es de VIDRAFT. Todo lo que sigue sale de la documentación pública del reto y de mediciones mías que puedes repetir. Las puntuaciones del ODC son predicciones computacionales, no mediciones de laboratorio.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué pide exactamente el Open Discovery Challenge?
&lt;/h2&gt;

&lt;p&gt;Cada temporada es una enfermedad distinta con una proteína diana distinta. Además de la diana, el verificador puntúa una contradiana: una proteína humana parecida. Una molécula que se une igual de fuerte a la proteína humana que a la del patógeno no gana solo por potencia.&lt;/p&gt;

&lt;p&gt;Estos son los valores que devuelve hoy el endpoint &lt;code&gt;/api/seasons&lt;/code&gt; del Space (los leí en vivo, no copiados de un README):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Temporada&lt;/th&gt;
&lt;th&gt;Enfermedad&lt;/th&gt;
&lt;th&gt;Diana&lt;/th&gt;
&lt;th&gt;Contradiana&lt;/th&gt;
&lt;th&gt;Cierre&lt;/th&gt;
&lt;th&gt;Premio&lt;/th&gt;
&lt;th&gt;Acepta envíos&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Malaria&lt;/td&gt;
&lt;td&gt;PfDHODH&lt;/td&gt;
&lt;td&gt;DHODH humana&lt;/td&gt;
&lt;td&gt;2026-09-30&lt;/td&gt;
&lt;td&gt;USD 1.000&lt;/td&gt;
&lt;td&gt;no (cerrada)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Tuberculosis&lt;/td&gt;
&lt;td&gt;InhA&lt;/td&gt;
&lt;td&gt;FASN humana (dominio ER)&lt;/td&gt;
&lt;td&gt;2026-10-31&lt;/td&gt;
&lt;td&gt;USD 2.000&lt;/td&gt;
&lt;td&gt;sí&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Enfermedad de Chagas&lt;/td&gt;
&lt;td&gt;CYP51 de T. cruzi&lt;/td&gt;
&lt;td&gt;CYP51A1 humana&lt;/td&gt;
&lt;td&gt;2026-11-30&lt;/td&gt;
&lt;td&gt;USD 1.000&lt;/td&gt;
&lt;td&gt;sí&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Analgesia no opioide&lt;/td&gt;
&lt;td&gt;Nav1.7 (VSD4)&lt;/td&gt;
&lt;td&gt;hERG (tetrámero del poro)&lt;/td&gt;
&lt;td&gt;2027-01-31&lt;/td&gt;
&lt;td&gt;USD 1.000&lt;/td&gt;
&lt;td&gt;sí&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;La contradiana de la temporada 4 tiene una razón clínica clara: un fármaco contra un canal de sodio que además bloquea hERG es un riesgo cardíaco.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Cómo se reparte la puntuación entre los seis ejes?
&lt;/h2&gt;

&lt;p&gt;El verificador usa seis ejes que suman 100 puntos: actividad, unión (binding), selectividad, ADMET, novedad y síntesis. Los pesos cambian por temporada porque la biología cambia.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-df7bcd02-5924-4887-8745-f9010922b2b7" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-df7bcd02-5924-4887-8745-f9010922b2b7" alt="Pesos de puntuación por temporada" width="1600" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lo que enseña el gráfico: de la temporada 1 a la 4, la actividad cae de 30 a 10 puntos, mientras la unión y la selectividad suben a 30 puntos cada una. Es decir, a partir de la temporada 3, 60 de los 100 puntos dependen de cómo se une tu molécula a la diana frente a la contradiana. ADMET (15), novedad (10) y síntesis (5) son idénticos en las cuatro.&lt;/p&gt;

&lt;p&gt;La unión y la selectividad salen de predicción de estructura contra la diana y la contradiana. Cada molécula se acopla varias veces y la dispersión se publica junto a la nota, para que una sola pose afortunada no decida un puesto. Si algún eje no se puede calcular, no se escribe ningún resultado: un eje ausente es un estado, no un cero.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué límites de entrada son públicos?
&lt;/h2&gt;

&lt;p&gt;Aquí está el punto de este artículo. Los límites de entrada son el único filtro duro que el organizador publica con números exactos:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Temporada&lt;/th&gt;
&lt;th&gt;Peso molecular máximo&lt;/th&gt;
&lt;th&gt;Átomos pesados máximos&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;550&lt;/td&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;550&lt;/td&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;750&lt;/td&gt;
&lt;td&gt;55&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;600&lt;/td&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Un envío fuera de estos límites se rechaza al momento de enviarlo, con el motivo visible. Lo que no es público, y con razón: el código de puntuación, los umbrales de las puertas más allá de estos límites y los conjuntos de referencia de novedad. Publicarlos permitiría moldear una entrada contra el evaluador en lugar de contra la biología.&lt;/p&gt;

&lt;p&gt;Si vas a automatizar envíos, por ejemplo con un agente que genera candidatos en bucle, conviene filtrar localmente antes de gastar un envío.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Cómo escribo un validador de límites con RDKit?
&lt;/h2&gt;

&lt;p&gt;Treinta líneas bastan. La idea: leer los límites de la API (así no se quedan viejos si el organizador los cambia), parsear el SMILES, y devolver un veredicto por temporada.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;rdkit&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Chem&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;rdkit.Chem&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Descriptors&lt;/span&gt;

&lt;span class="n"&gt;API&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://final-bench-open-discovery-challenge.hf.space/api/seasons&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;seasons&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;urlopen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;API&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;))[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;seasons&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;limits&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;number&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;limits&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mw_max&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;limits&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;heavy_max&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;accepting&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
          &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;seasons&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;preflight&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;smiles&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Chem&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;MolFromSmiles&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;smiles&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;                      &lt;span class="c1"&gt;# SMILES invalido: ni llega al verificador
&lt;/span&gt;    &lt;span class="n"&gt;mw&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Descriptors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;MolWt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;ha&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GetNumHeavyAtoms&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;out&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mw&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mw&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;heavy&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ha&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mw_max&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ha_max&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;accepting&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;sorted&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;limits&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;items&lt;/span&gt;&lt;span class="p"&gt;()):&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;accepting&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;T&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cerrada&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;T&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ok&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mw&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;mw_max&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;ha&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;ha_max&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;RECHAZO&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;out&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dos decisiones de diseño que importan. Primera, el campo &lt;code&gt;accepting&lt;/code&gt; es distinto de &lt;code&gt;open&lt;/code&gt;: la temporada 1 devuelve &lt;code&gt;open: true&lt;/code&gt; pero &lt;code&gt;accepting: false&lt;/code&gt;, porque la temporada existe y sus resultados son visibles, pero ya no admite envíos. Si filtras por &lt;code&gt;open&lt;/code&gt; enviarás a una temporada cerrada. Segunda, los límites vienen de la API y no de constantes en tu código, de modo que si el organizador ajusta un tope, tu validador lo sigue sin cambios.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué pasa con cinco fármacos reales?
&lt;/h2&gt;

&lt;p&gt;Ejecuté &lt;code&gt;preflight&lt;/code&gt; con cinco moléculas conocidas más una cadena que no es un SMILES. Aclaro el propósito: son pruebas de tamaño. No son candidatos propuestos, no son nuevas (el eje de novedad existe justamente para eso) y varias ni siquiera actúan sobre InhA. La isoniazida es un profármaco que, activado por KatG, forma un aducto con NAD que inhibe InhA. El triclosán es un inhibidor conocido de InhA. El etambutol actúa sobre otra enzima de la pared celular, la bedaquilina sobre la ATP sintasa y la rifampicina sobre la ARN polimerasa.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Molécula&lt;/th&gt;
&lt;th&gt;Peso molecular (Da)&lt;/th&gt;
&lt;th&gt;Átomos pesados&lt;/th&gt;
&lt;th&gt;T2&lt;/th&gt;
&lt;th&gt;T3&lt;/th&gt;
&lt;th&gt;T4&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Isoniazida&lt;/td&gt;
&lt;td&gt;137,1&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;ok&lt;/td&gt;
&lt;td&gt;ok&lt;/td&gt;
&lt;td&gt;ok&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Etambutol&lt;/td&gt;
&lt;td&gt;204,3&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;ok&lt;/td&gt;
&lt;td&gt;ok&lt;/td&gt;
&lt;td&gt;ok&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Triclosán&lt;/td&gt;
&lt;td&gt;289,5&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;ok&lt;/td&gt;
&lt;td&gt;ok&lt;/td&gt;
&lt;td&gt;ok&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bedaquilina&lt;/td&gt;
&lt;td&gt;555,5&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;RECHAZO&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;ok&lt;/td&gt;
&lt;td&gt;ok&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rifampicina&lt;/td&gt;
&lt;td&gt;823,0&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;RECHAZO&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;RECHAZO&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;RECHAZO&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;C1CC(&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;(no parsea)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;La temporada 1 aparece como &lt;code&gt;cerrada&lt;/code&gt; para todas. Medido con RDKit 2026.03.1 el 22 de octubre de 2026.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-b397ec1c-cc33-4588-9db2-84036c6ff78b" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-b397ec1c-cc33-4588-9db2-84036c6ff78b" alt="Peso molecular de cinco fármacos frente a los límites" width="2000" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;La bedaquilina es el caso instructivo. Pasa el límite de átomos pesados con holgura (37 de 45), pero su peso molecular de 555,5 Da supera por 5,5 el tope de 550 de la temporada 2. Dos topes distintos, y el que muerde no es el que uno miraría primero. La misma molécula entra sin problema en la temporada 3 (tope 750) y en la 4 (tope 600).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-be335494-c03e-4246-9029-bd879e1f4764" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-be335494-c03e-4246-9029-bd879e1f4764" alt="Átomos pesados frente a los límites publicados" width="1600" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;La rifampicina, con 59 átomos pesados, sobrepasa incluso el límite de 55 de la temporada 3, el más generoso. Es un recordatorio útil para quien piense en macrociclos grandes: el reto está pensado para moléculas del tamaño de un candidato oral, no de un antibiótico macrocíclico.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Cuánto confío en mi validador local?
&lt;/h2&gt;

&lt;p&gt;Con límites. Mi validador usa &lt;code&gt;Descriptors.MolWt&lt;/code&gt; y &lt;code&gt;GetNumHeavyAtoms&lt;/code&gt; de RDKit sobre el SMILES tal como lo escribo. El servidor del organizador aplica sus propias reglas de normalización, por ejemplo con sales o fragmentos múltiples, que no están publicadas. Trata mi filtro como una criba previa que descarta lo obvio, no como una garantía de aceptación. El criterio final lo da el servidor, y lo da con un motivo de rechazo visible.&lt;/p&gt;

&lt;p&gt;Un caso borde que vale la pena probar antes de automatizar: una molécula con contraión (por ejemplo una sal clorhidrato). &lt;code&gt;MolWt&lt;/code&gt; suma todos los fragmentos. Si el servidor cuenta solo el fragmento mayor, tu filtro será más estricto que el suyo; si cuenta todo, coincidirá. No lo sé, y no voy a inventarlo: pruébalo con un envío de bajo valor en una temporada abierta si te importa.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Y los otros retos abiertos del mismo organizador?
&lt;/h2&gt;

&lt;p&gt;FINAL-Bench mantiene otros cuatro retos con la misma filosofía: un verificador que guarda la respuesta en privado. Todos los Spaces estaban en estado RUNNING cuando los consulté hoy.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Reto&lt;/th&gt;
&lt;th&gt;Qué envías&lt;/th&gt;
&lt;th&gt;Cierre&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Open Materials Challenge&lt;/td&gt;
&lt;td&gt;Una estructura cristalina con litio (electrolito sólido)&lt;/td&gt;
&lt;td&gt;2026-11-30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open Superconductor Challenge&lt;/td&gt;
&lt;td&gt;Una estimación de emparejamiento d-wave por material 2D&lt;/td&gt;
&lt;td&gt;2026-12-31&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open Quantum Challenge&lt;/td&gt;
&lt;td&gt;Energías de Fermi-Hubbard o un decodificador de código de superficie&lt;/td&gt;
&lt;td&gt;2027-02-28 y 2027-03-31&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LEADBOARD&lt;/td&gt;
&lt;td&gt;Predicciones de propiedades para moléculas retenidas&lt;/td&gt;
&lt;td&gt;tableros abiertos&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;El Open Materials Challenge admite un validador análogo con pymatgen. Sus límites públicos (leídos de &lt;code&gt;/api/season&lt;/code&gt;) son: máximo 60 átomos, energía sobre el casco convexo de hasta 0,10 eV/átomo, banda prohibida mínima de 1,0 eV y presencia obligatoria de litio. Dos de esas comprobaciones, la energía sobre el casco y la banda prohibida, necesitan un cálculo previo que no cabe en un validador de 30 líneas. Las otras dos sí:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;pymatgen.core&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Structure&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Lattice&lt;/span&gt;

&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Structure&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_spacegroup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Fm-3m&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Lattice&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cubic&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;5.14&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Li&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Cl&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
                              &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;]])&lt;/span&gt;
&lt;span class="n"&gt;s2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;copy&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="n"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;make_supercell&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;st&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;LiCl celda convencional&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;LiCl supercelda 2x2x2&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;)]:&lt;/span&gt;
    &lt;span class="n"&gt;els&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;symbol&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;st&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;composition&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;elements&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;atomos&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;st&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tiene_Li&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Li&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;els&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;atomos&amp;lt;=60&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;st&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Salida medida: la celda convencional de LiCl tiene 8 átomos y pasa; la supercelda 2x2x2 tiene 64 átomos y deja de cumplir el tope de 60. Es un ejemplo ilustrativo de un error muy común, enviar una supercelda en lugar de la celda primitiva.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Por qué un verificador privado y no un benchmark público?
&lt;/h2&gt;

&lt;p&gt;Si el evaluador es público, una entrada se puede moldear contra el evaluador. Es la razón por la que estos retos publican reglas, pesos y límites, pero no la implementación de la puntuación ni la clave de respuestas.&lt;/p&gt;

&lt;p&gt;El tablero LEADBOARD del mismo organizador da una cifra que ilustra el problema de preguntar lo equivocado. Según su documentación, con los mismos datos y el mismo modelo, el AUROC en el tablero de cardiotoxicidad hERG fue de 0,818 con una partición aleatoria y de 0,606 con una partición temporal. Mismas moléculas, mismo código: solo cambió la pregunta. Un modelo se usa para ordenar compuestos que nadie ha medido todavía, así que la prueba honesta es entrenar con lo conocido hasta un año de corte y predecir lo que vino después. Es una cifra del organizador, medida por él; yo la cito, no la he reproducido.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Pueden participar agentes de IA?
&lt;/h2&gt;

&lt;p&gt;El reto de superconductores lo dice de forma explícita: investigadores, estudiantes y agentes de código pueden participar. El ODC exige iniciar sesión en Hugging Face para enviar. Un agente con herramienta de código puede leer las reglas, consultar &lt;code&gt;/api/seasons&lt;/code&gt;, filtrar candidatos con un validador como el de arriba y preparar el envío. Lo que no debería hacer, ni un agente ni una persona, es tratar la nota como evidencia biológica: una nota alta es una hipótesis que merece probarse en un laboratorio, nada más.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preguntas frecuentes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;¿Cómo envío una molécula al Open Discovery Challenge?&lt;/strong&gt;&lt;br&gt;
Abre el Space &lt;code&gt;FINAL-Bench/open-discovery-challenge&lt;/code&gt; en Hugging Face, inicia sesión, elige una temporada que acepte envíos y pega tu SMILES. Se rechaza al momento si excede los límites de peso molecular o átomos pesados, con el motivo visible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Qué temporadas aceptan envíos hoy?&lt;/strong&gt;&lt;br&gt;
Según &lt;code&gt;/api/seasons&lt;/code&gt; el 22 de octubre de 2026: la 2 (tuberculosis, cierra el 31 de octubre), la 3 (Chagas, cierra el 30 de noviembre) y la 4 (analgesia no opioide, cierra el 31 de enero de 2027). La 1 (malaria) ya no admite envíos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Por qué mi molécula pasa en la temporada 3 pero no en la 2?&lt;/strong&gt;&lt;br&gt;
Porque los límites difieren. La temporada 3 permite hasta 750 Da y 55 átomos pesados, la 2 solo 550 Da y 45 átomos pesados. La bedaquilina (555,5 Da) es un ejemplo medido de ese caso.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿La nota del ODC demuestra que una molécula funciona?&lt;/strong&gt;&lt;br&gt;
No. Son predicciones computacionales de unión, selectividad, ADMET, novedad y síntesis. Una nota alta es una hipótesis para validar en laboratorio, no evidencia de actividad en células ni en animales.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Qué hace el verificador si no puede calcular un eje?&lt;/strong&gt;&lt;br&gt;
No escribe ningún resultado. Un eje ausente es un estado, no una puntuación de cero. Una entrada sin nota todavía no se ha evaluado, y una que falla repetidamente por causas del entorno, como una GPU llena, se mantiene en cola en lugar de descartarse.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Puedo ver el código de puntuación?&lt;/strong&gt;&lt;br&gt;
No. El código de puntuación, los umbrales de las puertas más allá de los límites publicados y los conjuntos de referencia de novedad son privados, a propósito, para que nadie moldee una entrada contra el evaluador.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reproducibilidad
&lt;/h2&gt;

&lt;p&gt;Los scripts de este artículo (&lt;code&gt;es_preflight.py&lt;/code&gt;, &lt;code&gt;es_omc.py&lt;/code&gt;) usan solo RDKit, pymatgen y la API pública del Space. Los límites se leen en vivo, así que si el organizador los modifica después del 22 de octubre de 2026, tus resultados serán los vigentes y los números de las tablas de arriba serán los de ese día. Los repositorios públicos del reto están en &lt;code&gt;github.com/final-bench/open-discovery-challenge&lt;/code&gt; y &lt;code&gt;github.com/final-bench/open-materials-challenge&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/_0e3192755d4df45b92/de-los-examenes-al-trabajo-real-un-modelo-abierto-de-180b-lidera-10-clasificaciones-oficiales-de-389e"&gt;De los exámenes al trabajo real: un modelo abierto de 180B lidera 10 clasificaciones oficiales de Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/_0e3192755d4df45b92/demostrar-con-tablas-de-clasificacion-publicas-importa-mas-quien-corrige-421a"&gt;Demostrar con tablas de clasificacion publicas: importa mas quien corrige&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>science</category>
      <category>benchmarks</category>
    </item>
    <item>
      <title>Preentrenamiento desde cero en una NPU solo-inferencia: VKORE-46M-NPU</title>
      <dc:creator>김민식/학생</dc:creator>
      <pubDate>Thu, 15 Oct 2026 01:32:49 +0000</pubDate>
      <link>https://dev.to/_0e3192755d4df45b92/preentrenamiento-desde-cero-en-una-npu-solo-inferencia-vkore-46m-npu-1kdg</link>
      <guid>https://dev.to/_0e3192755d4df45b92/preentrenamiento-desde-cero-en-una-npu-solo-inferencia-vkore-46m-npu-1kdg</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; VIDRAFT preentreno un modelo de lenguaje desde cero (from scratch), con retropropagacion real, en una NPU disenada solo para inferencia, sin ninguna GPU. El resultado, VKORE-46M-NPU, esta publicado en Hugging Face con pesos, tarjeta de modelo y datos de comparacion. Entrenado en condiciones identicas sobre una GPU, las trayectorias de perdida correlacionan a 0,99.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fphoi2298dq6xt1m7dg8c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fphoi2298dq6xt1m7dg8c.png" alt="NPU: quien dijo que solo puedo inferir" width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Por que entrenar en una NPU solo-inferencia es dificil
&lt;/h2&gt;

&lt;p&gt;Las NPU de inferencia se construyen para el camino hacia adelante: grafos compilados de forma estatica, baja precision y pesos tratados como constantes. El entrenamiento necesita lo contrario: un grafo hacia atras con activaciones guardadas, estado del optimizador, estabilidad numerica para gradientes pequenos y sincronizacion de gradientes entre chips. Por eso se asumia que "las NPU no pueden hacer retropropagacion". Este trabajo la ejecuta directamente y entrena sin pesos previos.&lt;/p&gt;

&lt;h2&gt;
  
  
  La evidencia: mismo modelo, dos tipos de hardware
&lt;/h2&gt;

&lt;p&gt;Se entreno el mismo modelo en condiciones identicas (inicializacion, datos y planificacion) en una NPU de 32 chips y en una GPU de referencia.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Las trayectorias de perdida correlacionan a 0,99.&lt;/li&gt;
&lt;li&gt;El rendimiento (tokens por segundo) convergio a un nivel comparable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Una curva de perdida que baja no prueba nada por si sola. Una correlacion de 0,99 con la referencia en GPU indica que la retropropagacion y las actualizaciones del optimizador hacen el mismo trabajo numerico.&lt;/p&gt;

&lt;h2&gt;
  
  
  Una sola NPU para todo el ciclo
&lt;/h2&gt;

&lt;p&gt;Preentrenamiento desde cero, ajuste LoRA, aceleracion de inferencia (3,8x por usuario, 4,1x de rendimiento de servidor) y ejecucion de modelos cuantizados. VIDRAFT reune esto en una capa de software llamada VKORE: "CUDA para NPU", una capa de aceleracion independiente del hardware que reduce la dependencia de una GPU concreta y su ecosistema.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por que importa
&lt;/h2&gt;

&lt;p&gt;Los servidores GPU de gama alta son caros, tienen largas esperas y consumen mucha energia. Una NPU barata y de bajo consumo que ademas entrena permite a una empresa desarrollar su propio modelo en sus instalaciones, sin esperar GPU y sin enviar datos sensibles fuera.&lt;/p&gt;

&lt;p&gt;El modelo publicado (46M, nivel de caracteres, TinyStories) es una prueba del camino de entrenamiento, no una afirmacion de calidad. Escalar a modelos grandes y datos reales es el siguiente paso. La tecnica central esta en tramite de patente y el codigo de entrenamiento se mantiene privado.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Retropropagacion real en una NPU solo-inferencia?&lt;/strong&gt;&lt;br&gt;
Si, preentrenamiento desde cero en un chip disenado solo para inferencia.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Que significa 0,99?&lt;/strong&gt;&lt;br&gt;
La curva de perdida de la NPU casi coincide con una referencia en GPU entrenada en condiciones identicas.&lt;/p&gt;

&lt;p&gt;Modelo: &lt;a href="https://huggingface.co/FINAL-Bench/VKORE-46M-NPU" rel="noopener noreferrer"&gt;https://huggingface.co/FINAL-Bench/VKORE-46M-NPU&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>npu</category>
      <category>llm</category>
    </item>
    <item>
      <title>Demostrar con tablas de clasificacion publicas: importa mas quien corrige</title>
      <dc:creator>김민식/학생</dc:creator>
      <pubDate>Mon, 12 Oct 2026 10:35:05 +0000</pubDate>
      <link>https://dev.to/_0e3192755d4df45b92/demostrar-con-tablas-de-clasificacion-publicas-importa-mas-quien-corrige-421a</link>
      <guid>https://dev.to/_0e3192755d4df45b92/demostrar-con-tablas-de-clasificacion-publicas-importa-mas-quien-corrige-421a</guid>
      <description>&lt;h2&gt;
  
  
  Resumen
&lt;/h2&gt;

&lt;p&gt;Las afirmaciones de rendimiento en IA sobran. Lo que importa no es el tamano del numero, sino quien corrige y con que problemas. Este articulo explica como leer resultados de tablas de clasificacion publicas, cual es la trampa de autoevaluarse, y por que los resultados de VIDRAFT en tablas publicas operadas por terceros si tienen peso.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por que la autoevaluacion es dificil de creer
&lt;/h2&gt;

&lt;p&gt;Si yo creo el examen, lo resuelvo y me corrijo, puedo subir la nota cuando quiera. Basta con filtrar el conjunto de prueba hacia el entrenamiento, elegir la mejor de muchas ejecuciones, o dejar que una ruta de respaldo invente una respuesta. El numero sube y nada real cambia.&lt;/p&gt;

&lt;p&gt;Por eso una metrica confiable cumple tres condiciones.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Corrige un tercero. El examen y la correccion los tiene una entidad externa.&lt;/li&gt;
&lt;li&gt;El problema resiste la memorizacion. Preguntas de nivel posgrado que no se resuelven buscando.&lt;/li&gt;
&lt;li&gt;Se sostiene en varias tablas. Una nota alta puede ser suerte, pero el primer puesto en varias tablas independientes es dificil de fingir.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Los resultados publicos, tal cual
&lt;/h2&gt;

&lt;p&gt;Estos valores vienen de evaluaciones publicas operadas por terceros.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AIME 2026 y HMMT de febrero 2026: puntuacion perfecta en los conjuntos de matematica de competencia.&lt;/li&gt;
&lt;li&gt;GPQA Diamond: 93.43% en la categoria por debajo de 500B, preguntas de ciencia de nivel posgrado disenadas para resistir la busqueda.&lt;/li&gt;
&lt;li&gt;Amplitud: primeros puestos en once categorias de tablas publicas y dieciseis categorias en la tabla Polaris de prediccion de farmacos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La clave no es el tamano del numero. Es que el examen lo tenia otro, que resiste la memorizacion, y que el mismo metodo funciono en dominios muy distintos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lista de verificacion al leer una tabla
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Entrenamiento y prueba no se solapan. Si un item se filtra, la subida es una ilusion.&lt;/li&gt;
&lt;li&gt;Si hay puntuacion perfecta, primero sospecha que el examen es demasiado facil.&lt;/li&gt;
&lt;li&gt;Una diferencia positiva no es una victoria. Una subida dentro del ruido no es una subida.&lt;/li&gt;
&lt;li&gt;Si activaste un truco de aceleracion, sospecha primero del medidor.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Estos son los mismos principios que aplicamos a nuestros resultados antes de publicarlos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por que demostrar en publico
&lt;/h2&gt;

&lt;p&gt;Una demo privada se ve bien en condiciones controladas. Una tabla publica traslada ese control afuera. Con el mismo examen y la misma correccion, cualquiera puede intentar reproducir. De ahi viene el peso de la prueba.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preguntas frecuentes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Puntuacion perfecta es lo mejor?&lt;/strong&gt; No necesariamente. Puede indicar que el examen perdio capacidad de discriminar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Basta un primer puesto?&lt;/strong&gt; Una tabla puede ser suerte. La confianza sube con varias tablas independientes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;De donde vienen los numeros?&lt;/strong&gt; De evaluaciones publicas operadas por terceros.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;La autoevaluacion no sirve?&lt;/strong&gt; Sirve durante el desarrollo, pero no reemplaza la correccion externa.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cierre
&lt;/h2&gt;

&lt;p&gt;Una buena afirmacion no es "nuestro numero es alto", sino "en un examen que tenia otro, con problemas que resisten la memorizacion, a traves de varios dominios". Mira primero las condiciones, luego el numero.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>llm</category>
      <category>benchmark</category>
    </item>
    <item>
      <title>ZTC (Zero-Token Confidence): juzgar una acción de IA leyendo el estado interno del modelo, con cero tokens extra</title>
      <dc:creator>김민식/학생</dc:creator>
      <pubDate>Tue, 06 Oct 2026 19:10:27 +0000</pubDate>
      <link>https://dev.to/_0e3192755d4df45b92/ztc-zero-token-confidence-juzgar-una-accion-de-ia-leyendo-el-estado-interno-del-modelo-con-cero-2ilh</link>
      <guid>https://dev.to/_0e3192755d4df45b92/ztc-zero-token-confidence-juzgar-una-accion-de-ia-leyendo-el-estado-interno-del-modelo-con-cero-2ilh</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Cuando un agente de IA realiza una accion, alguien tiene que decidir si esa accion es confiable. La via habitual es preguntarle a otro modelo de lenguaje (un juez LLM), lo que cuesta tokens, latencia y a veces enviar datos fuera de tu red. &lt;strong&gt;ZTC (Zero-Token Confidence)&lt;/strong&gt; toma otro camino: lee el &lt;strong&gt;estado interno&lt;/strong&gt; del propio modelo que ya hizo la inferencia y, a partir de esas senales, estima la confianza de la accion &lt;strong&gt;sin generar un solo token extra&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;En nuestras mediciones, ZTC alcanza un &lt;strong&gt;AUC de 0.7289&lt;/strong&gt;, practicamente a la par del juez LLM de referencia (&lt;strong&gt;JEV, AUC 0.7350&lt;/strong&gt;), pero resuelve cada decision en &lt;strong&gt;0.06 s&lt;/strong&gt; frente a &lt;strong&gt;0.59 s&lt;/strong&gt; del juez. Es casi un orden de magnitud mas rapido, con cero tokens de generacion adicional, y corre &lt;strong&gt;on premise / en red cerrada&lt;/strong&gt; porque no necesita llamar a ningun servicio externo.&lt;/p&gt;

&lt;p&gt;Esta es una nota de ingenieria sobre que es ZTC, por que leer el estado interno funciona, y cuando conviene usarlo frente a un juez LLM.&lt;/p&gt;

&lt;h2&gt;
  
  
  Que problema resuelve ZTC?
&lt;/h2&gt;

&lt;p&gt;En cualquier sistema agentico serio hay un segundo bucle de control: el modelo propone una accion (una respuesta, una llamada a herramienta, una consulta) y un componente de verificacion decide si esa accion se ejecuta, se bloquea o se escala a un humano. Ese componente es el que convierte un demo en un producto.&lt;/p&gt;

&lt;p&gt;El patron dominante hoy es el &lt;strong&gt;juez LLM&lt;/strong&gt;: se toma la salida del modelo y se envia a otro modelo con un prompt del estilo "evalua si esta respuesta es correcta y segura". Funciona, pero tiene tres costos que se acumulan a escala:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tokens.&lt;/strong&gt; Cada juicio es otra inferencia completa. Si tu agente realiza miles de acciones por minuto, estas pagando dos modelos en lugar de uno.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latencia.&lt;/strong&gt; El juez agrega cientos de milisegundos a cada accion, justo en la ruta critica del usuario.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Superficie de datos.&lt;/strong&gt; Si el juez es una API externa, cada decision implica sacar el contenido de tu red. En banca, salud o defensa eso suele ser inaceptable.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ZTC ataca los tres a la vez. En lugar de pedir una segunda opinion, aprovecha algo que el modelo &lt;strong&gt;ya produjo gratis&lt;/strong&gt; durante la inferencia original.&lt;/p&gt;

&lt;h2&gt;
  
  
  Que es exactamente ZTC (Zero-Token Confidence)?
&lt;/h2&gt;

&lt;p&gt;ZTC es un estimador de confianza que no genera texto. La idea central es simple de enunciar: &lt;strong&gt;cuando un modelo esta a punto de equivocarse, su estado interno se ve distinto a cuando esta seguro&lt;/strong&gt;. Esa diferencia es medible.&lt;/p&gt;

&lt;p&gt;Durante una inferencia normal, el modelo expone una enorme cantidad de senal que casi siempre se descarta: las distribuciones de probabilidad sobre el vocabulario en cada paso, la geometria de las representaciones internas, y los patrones de atencion. ZTC lee esas senales que ya existen y las convierte en un unico numero: la probabilidad de que la accion sea correcta.&lt;/p&gt;

&lt;p&gt;El nombre lo dice todo. &lt;strong&gt;Cero tokens&lt;/strong&gt; porque no hay generacion nueva: no se corre un segundo modelo, no se escribe un prompt de evaluacion, no se produce una sola palabra adicional. La parte de &lt;strong&gt;confianza&lt;/strong&gt; es un clasificador ligero sobre esas senales internas, entrenado para separar acciones buenas de malas.&lt;/p&gt;

&lt;p&gt;El contraste con el juez LLM es directo:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Juez LLM (JEV)&lt;/th&gt;
&lt;th&gt;ZTC&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Como decide&lt;/td&gt;
&lt;td&gt;Genera una evaluacion con otro modelo&lt;/td&gt;
&lt;td&gt;Lee el estado interno del modelo original&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tokens extra&lt;/td&gt;
&lt;td&gt;Una inferencia completa por decision&lt;/td&gt;
&lt;td&gt;Cero&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latencia por decision&lt;/td&gt;
&lt;td&gt;0.59 s&lt;/td&gt;
&lt;td&gt;0.06 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AUC&lt;/td&gt;
&lt;td&gt;0.7350&lt;/td&gt;
&lt;td&gt;0.7289&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Red cerrada / on premise&lt;/td&gt;
&lt;td&gt;Depende de donde este el juez&lt;/td&gt;
&lt;td&gt;Si, por diseno&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Que tan bueno es ZTC frente a un juez LLM?
&lt;/h2&gt;

&lt;p&gt;La pregunta correcta no es "cual tiene mas AUC", sino "cuanta calidad cedo por cuanta velocidad gano". Los numeros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AUC:&lt;/strong&gt; ZTC 0.7289 contra JEV 0.7350. La diferencia es de &lt;strong&gt;0.0061&lt;/strong&gt;, menos de un punto porcentual. En la practica, las dos curvas se solapan.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latencia:&lt;/strong&gt; 0.06 s contra 0.59 s. ZTC es cercano a &lt;strong&gt;10x mas rapido&lt;/strong&gt; por decision.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Costo de tokens:&lt;/strong&gt; cero contra una inferencia completa. A escala, esto es la mitad del gasto de computo del sistema de verificacion.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dicho de otra forma: pagas una perdida de calidad despreciable y a cambio recuperas latencia, presupuesto de tokens y soberania de datos. Para la mayoria de los bucles de control en produccion, ese intercambio es claramente favorable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Esquema conceptual (ilustrativo) del bucle de verificacion.
# El juez LLM corre una segunda inferencia; ZTC reutiliza lo que ya existe.
&lt;/span&gt;
&lt;span class="c1"&gt;# --- Via tradicional: juez LLM ---
&lt;/span&gt;&lt;span class="n"&gt;salida&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;modelo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;              &lt;span class="c1"&gt;# inferencia 1
&lt;/span&gt;&lt;span class="n"&gt;veredicto&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;juez_llm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;               &lt;span class="c1"&gt;# inferencia 2: tokens + latencia + datos fuera
&lt;/span&gt;    &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Evalua si esto es correcto: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;salida&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;confianza&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;parsear&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;veredicto&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# --- Via ZTC: leer el estado interno ---
&lt;/span&gt;&lt;span class="n"&gt;salida&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;estado&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;modelo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;exponer_estado&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# misma inferencia
&lt;/span&gt;&lt;span class="n"&gt;confianza&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ztc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;puntuar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;estado&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;              &lt;span class="c1"&gt;# clasificador ligero, 0 tokens generados
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;La clave del segundo bloque es &lt;code&gt;exponer_estado=True&lt;/code&gt;: la senal que ZTC necesita se produce igualmente durante la inferencia. Solo hay que no tirarla.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por que leer el estado interno funciona en absoluto?
&lt;/h2&gt;

&lt;p&gt;Es razonable sospechar que un numero sin generar texto no puede competir con un modelo que razona en voz alta. La intuicion que lo explica es que &lt;strong&gt;el razonamiento del juez ya esta contenido, de forma comprimida, en la dinamica interna del modelo original&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Cuando el modelo esta seguro, concentra masa de probabilidad en pocos tokens y sus representaciones son estables. Cuando titubea, la distribucion se aplana, las representaciones se vuelven ambiguas y la senal se dispersa. Un juez LLM, en el fondo, vuelve a leer la misma salida para inferir esa incertidumbre. ZTC se salta el intermediario y mide la incertidumbre en la fuente.&lt;/p&gt;

&lt;p&gt;Por eso el AUC queda tan cerca: ambos metodos miran la misma realidad subyacente. El juez la reconstruye con una segunda pasada cara; ZTC la observa directamente.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cuando conviene ZTC y cuando un juez LLM?
&lt;/h2&gt;

&lt;p&gt;ZTC no reemplaza todo. Es una herramienta con un perfil claro.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Usa ZTC cuando:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;La verificacion esta en la ruta critica y la latencia importa.&lt;/li&gt;
&lt;li&gt;El volumen de decisiones hace que duplicar inferencias sea caro.&lt;/li&gt;
&lt;li&gt;Operas en red cerrada o on premise y no puedes sacar datos a un juez externo.&lt;/li&gt;
&lt;li&gt;Necesitas un primer filtro barato que decida que acciones pasan y cuales se escalan.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Prefiere o combina con un juez LLM cuando:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Necesitas una explicacion legible de por que una accion se rechazo.&lt;/li&gt;
&lt;li&gt;El dominio exige razonamiento multi paso sobre politicas complejas.&lt;/li&gt;
&lt;li&gt;Estas en el borde de decision y quieres una segunda opinion cara solo para los casos dudosos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El patron mas potente es en cascada: &lt;strong&gt;ZTC filtra barato y rapido la gran mayoria de acciones, y solo los casos cerca del umbral pasan a un juez LLM&lt;/strong&gt;. Asi obtienes la velocidad de ZTC en el caso comun y la profundidad del juez donde de verdad hace falta.&lt;/p&gt;

&lt;h2&gt;
  
  
  Que significa que corra en red cerrada?
&lt;/h2&gt;

&lt;p&gt;Significa que todo el bucle de verificacion vive donde ya vive tu modelo. ZTC no hace llamadas de red, no depende de una API de terceros y no envia contenido fuera de tu infraestructura. Para sectores regulados esto no es un detalle de rendimiento, es la condicion que determina si puedes desplegar el sistema o no. Un juez LLM alojado por un proveedor externo convierte cada decision en una transferencia de datos; ZTC la mantiene dentro de tus paredes.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Que significa "cero tokens" exactamente?&lt;/strong&gt;&lt;br&gt;
Que ZTC no genera texto nuevo para decidir. No corre una segunda inferencia ni escribe un prompt de evaluacion. Reutiliza las senales que la inferencia original ya produjo, asi que el costo marginal en tokens de generacion es cero.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ZTC es menos preciso que un juez LLM?&lt;/strong&gt;&lt;br&gt;
Marginalmente. AUC 0.7289 frente a 0.7350, una diferencia de 0.0061. En casi cualquier bucle de control esa brecha se compensa de sobra con 10x menos latencia y cero tokens extra.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Necesito reentrenar mi modelo base para usar ZTC?&lt;/strong&gt;&lt;br&gt;
No. El modelo base no cambia. ZTC es un clasificador ligero que se entrena sobre las senales internas que el modelo ya expone durante la inferencia.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Funciona con cualquier modelo?&lt;/strong&gt;&lt;br&gt;
Funciona con modelos cuyo estado interno sea accesible en tu despliegue, que es el caso tipico cuando sirves pesos abiertos on premise. Con una API cerrada que solo devuelve texto, no tienes acceso a esas senales y ZTC no aplica.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Puedo usar ZTC y un juez LLM juntos?&lt;/strong&gt;&lt;br&gt;
Si, y suele ser lo ideal. ZTC como primer filtro rapido y barato, y un juez LLM reservado para los casos cerca del umbral de decision. Obtienes velocidad en el caso comun y profundidad donde importa.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Por que no usar simplemente la probabilidad del token de salida?&lt;/strong&gt;&lt;br&gt;
Porque es solo una de las senales disponibles y por si sola es ruidosa. ZTC combina varias senales del estado interno en un unico estimador calibrado, lo que explica que se acerque tanto al juez LLM.&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/_0e3192755d4df45b92"&gt;De los examenes al trabajo real: un modelo abierto de 180B lidera 10 clasificaciones oficiales de Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/_0e3192755d4df45b92"&gt;Como correr un modelo de 180B sin GPU: POCKET-Darwin-180B en GGUF con llama.cpp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Notas de ingenieria VIDRAFT. Las cifras provienen de nuestras mediciones internas; los bloques de codigo son ilustrativos.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>security</category>
      <category>spanish</category>
    </item>
    <item>
      <title>Cómo correr un modelo de 180B sin GPU: POCKET-Darwin-180B en GGUF con llama.cpp</title>
      <dc:creator>김민식/학생</dc:creator>
      <pubDate>Tue, 06 Oct 2026 13:12:02 +0000</pubDate>
      <link>https://dev.to/_0e3192755d4df45b92/como-correr-un-modelo-de-180b-sin-gpu-pocket-darwin-180b-en-gguf-con-llamacpp-1m56</link>
      <guid>https://dev.to/_0e3192755d4df45b92/como-correr-un-modelo-de-180b-sin-gpu-pocket-darwin-180b-en-gguf-con-llamacpp-1m56</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;POCKET-Darwin-180B-GGUF es la versión cuantizada del modelo abierto Darwin-180B-RSI, pensada para correr sin GPU. Puntos clave para quien va a desplegarlo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pesa 111 GB&lt;/strong&gt; en GGUF (el original en BF16 ocupa 360 GB) y se ejecuta con &lt;strong&gt;llama.cpp&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hasta 21 tokens por segundo solo en CPU&lt;/strong&gt; (1 socket, 16 hilos, 78.8 GB de RAM usada). En un portátil con RTX 5060 de 8 GB y 32 GB de RAM: 4.17 tok/s.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Misma precisión que el original&lt;/strong&gt;: en MMLU-Pro (2,000 preguntas) ambos miden 87.65%, aunque el modelo esté en 4 bits.&lt;/li&gt;
&lt;li&gt;Arquitectura &lt;strong&gt;MoE&lt;/strong&gt;: 180B de parámetros totales, pero solo unos &lt;strong&gt;3B activos por token&lt;/strong&gt; (10 de 512 expertos).&lt;/li&gt;
&lt;li&gt;Se descargan &lt;strong&gt;4 archivos&lt;/strong&gt; y arranca con una sola línea de comando.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Este artículo explica por qué funciona y cómo ponerlo en marcha.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Por qué un modelo de 180B cabe en un portátil?
&lt;/h2&gt;

&lt;p&gt;La respuesta corta: la mayor parte del modelo no se usa en cada paso.&lt;/p&gt;

&lt;p&gt;Darwin-180B-RSI es un modelo de mezcla de expertos (Mixture of Experts, MoE). Tiene 512 redes "expertas", pero para generar cada token un enrutador selecciona solo 10. De los 180,000 millones de parámetros, apenas unos 3,000 millones intervienen en el cálculo de cada token.&lt;/p&gt;

&lt;p&gt;Esto cambia por completo las cuentas de despliegue. En un modelo denso de 180B tendrías que mover los 180B de parámetros por la memoria en cada token. Con MoE, el trabajo aritmético por token se parece más al de un modelo de 3B, aunque la capacidad total siga siendo la de un modelo enorme. El cuello de botella deja de ser el cómputo y pasa a ser &lt;strong&gt;dónde guardas los pesos y a qué velocidad los lees&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Ahí entra la cuantización. El original en BF16 ocupa 360 GB. La versión POCKET se construye sobre una cuantización de 4 bits ya validada por la comunidad, y solo la parte que el entrenamiento de autosuperación de VIDRAFT realmente modificó (alrededor del 3% del volumen total) se mantiene en alta precisión. El resultado: 111 GB en disco, repartidos en 4 archivos GGUF.&lt;/p&gt;

&lt;p&gt;Con 111 GB tienes dos caminos:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Mini PC con 128 GB de RAM&lt;/strong&gt;: el modelo entero entra en memoria y corre sin GPU.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Portátil con 32 GB de RAM&lt;/strong&gt;: no cabe entero, así que llama.cpp lee desde SSD mediante mapeo de memoria (mmap) los expertos que hace falta en cada momento. Más lento, pero funciona.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  ¿Cómo lo ejecuto con llama.cpp? (paso a paso)
&lt;/h2&gt;

&lt;p&gt;GGUF es el formato que usa llama.cpp, el motor de inferencia de código abierto. No necesitas cuenta en la nube ni servidor con GPU. Necesitas una build reciente de llama.cpp (b11048 o posterior) y espacio en disco para los 111 GB.&lt;/p&gt;

&lt;p&gt;Primero, descarga los archivos del repositorio en Hugging Face:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Instala el cliente de Hugging Face&lt;/span&gt;
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-U&lt;/span&gt; &lt;span class="s2"&gt;"huggingface_hub[cli]"&lt;/span&gt;

&lt;span class="c"&gt;# Descarga los 4 archivos GGUF (111 GB en total)&lt;/span&gt;
hf download FINAL-Bench/POCKET-Darwin-180B-GGUF &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--local-dir&lt;/span&gt; ./pocket-darwin-180b &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--include&lt;/span&gt; &lt;span class="s2"&gt;"*.gguf"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Luego compila llama.cpp (si aún no la tienes) y lanza la inferencia:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Compilar llama.cpp (build b11048 o superior)&lt;/span&gt;
git clone https://github.com/ggml-org/llama.cpp
&lt;span class="nb"&gt;cd &lt;/span&gt;llama.cpp &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; cmake &lt;span class="nt"&gt;-B&lt;/span&gt; build &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; cmake &lt;span class="nt"&gt;--build&lt;/span&gt; build &lt;span class="nt"&gt;--config&lt;/span&gt; Release

&lt;span class="c"&gt;# Ejecutar solo en CPU&lt;/span&gt;
./build/bin/llama-cli &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--model&lt;/span&gt; ../pocket-darwin-180b/pocket-darwin-180b-Q4.gguf &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--threads&lt;/span&gt; 16 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--ctx-size&lt;/span&gt; 8192 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"Explica en tres frases qué es una arquitectura MoE."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notas prácticas de ingeniería:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;--threads&lt;/code&gt;&lt;/strong&gt;: ajusta al número de hilos físicos de tu CPU. En el servidor de prueba (16 hilos) se obtuvieron de 18.4 a 21.0 tok/s.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mmap&lt;/strong&gt;: llama.cpp mapea el archivo por defecto, así que en máquinas con poca RAM los pesos se leen desde SSD bajo demanda. Un SSD NVMe rápido ayuda mucho aquí.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Servidor HTTP&lt;/strong&gt;: usa &lt;code&gt;llama-server&lt;/code&gt; en lugar de &lt;code&gt;llama-cli&lt;/code&gt; si quieres exponer un endpoint compatible con la API de chat.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Un apunte importante: este modelo se distribuye como GGUF para &lt;strong&gt;llama.cpp&lt;/strong&gt;. Verifica la compatibilidad de la versión del motor antes de integrarlo en otras herramientas de escritorio.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Pierde precisión al comprimir a 4 bits?
&lt;/h2&gt;

&lt;p&gt;Esta es la pregunta que todo ingeniero hace antes de confiar en una versión cuantizada. La respuesta medida: no, al menos en el banco de pruebas principal.&lt;/p&gt;

&lt;p&gt;En MMLU-Pro, un examen de conocimiento general de 2,000 preguntas, comparando pregunta por pregunta:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Versión&lt;/th&gt;
&lt;th&gt;MMLU-Pro&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Original (BF16)&lt;/td&gt;
&lt;td&gt;87.65%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;POCKET (4 bits)&lt;/td&gt;
&lt;td&gt;87.65%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Idéntico. La cuantización agresiva no degradó la tasa de acierto en ese conjunto.&lt;/p&gt;

&lt;p&gt;Además, hay una señal interesante sobre el efecto de la autosuperación (RSI). En SuperGPQA, un conjunto de 1,000 preguntas de ciencia de nivel de posgrado que no se usó en el entrenamiento, se comparó solo la parte modificada por RSI contra la misma versión de 4 bits del modelo base:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modelo base (4 bits): 59.10%&lt;/li&gt;
&lt;li&gt;POCKET (4 bits): 61.55%&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Una mejora de 2.45 puntos, estadísticamente significativa. Y lo hizo usando alrededor de &lt;strong&gt;13% menos tokens por pregunta&lt;/strong&gt;: razona de forma más concisa y deja de reverificar la respuesta una vez que ya la tiene. Un desarrollador externo verificó este resultado archivo por archivo en una discusión pública.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Para qué casos sirve un modelo de alto nivel sin conexión?
&lt;/h2&gt;

&lt;p&gt;El caso de uso que ordena todo lo anterior es claro: &lt;strong&gt;entornos donde los datos no pueden salir a la nube&lt;/strong&gt;. Defensa, finanzas y sector público tienen reglas que prohíben enviar datos a servidores externos. POCKET-Darwin-180B corre dentro de un servidor local o un mini PC, sin conexión a internet, sin que ningún dato cruce la frontera de la organización.&lt;/p&gt;

&lt;p&gt;La comparación de coste también pesa. Un servidor con 8 GPU H100 ronda cifras de cientos de miles de dólares. Un portátil gamer de gama media con 8 GB de memoria gráfica y 32 GB de RAM cuesta una fracción mínima de eso. No es la misma velocidad, pero para cargas de trabajo por lotes o inferencia local, la ecuación cambia por completo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preguntas frecuentes (FAQ)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;¿Qué hardware mínimo necesito?&lt;/strong&gt;&lt;br&gt;
Para correr el modelo completo en memoria, un mini PC con 128 GB de RAM sin GPU. Con 32 GB de RAM funciona vía mmap desde SSD, a menor velocidad (4.17 tok/s medidos en un portátil con RTX 5060 de 8 GB). Un SSD NVMe rápido es muy recomendable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Cuánto espacio en disco ocupa?&lt;/strong&gt;&lt;br&gt;
Son 4 archivos GGUF que suman 111 GB. Deja margen adicional para la caché del sistema operativo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Por qué 180B de parámetros corren tan rápido en CPU?&lt;/strong&gt;&lt;br&gt;
Por la arquitectura MoE: solo 10 de 512 expertos se activan por token, lo que equivale a unos 3B de parámetros activos. El cómputo por token es bajo; el reto real es la lectura de pesos desde disco o RAM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Puedo usarlo con Ollama o LM Studio?&lt;/strong&gt;&lt;br&gt;
El modelo está publicado y probado para &lt;strong&gt;llama.cpp&lt;/strong&gt; (build b11048 o superior). Antes de usarlo con otras herramientas, confirma que su versión del motor soporta esta arquitectura y cuantización.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿La cuantización de 4 bits lo vuelve menos fiable?&lt;/strong&gt;&lt;br&gt;
En MMLU-Pro, la tasa de acierto es idéntica a la del original (87.65% en ambos). La parte modificada por el entrenamiento de autosuperación se conserva en alta precisión, lo que ayuda a preservar la calidad.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Dónde lo descargo?&lt;/strong&gt;&lt;br&gt;
En Hugging Face (&lt;code&gt;huggingface.co/FINAL-Bench/POCKET-Darwin-180B-GGUF&lt;/code&gt;) y en ModelScope (&lt;code&gt;modelscope.cn/models/FINAL-Bench/POCKET-Darwin-180B-GGUF&lt;/code&gt;). El modelo original está en &lt;code&gt;huggingface.co/FINAL-Bench/Darwin-180B-RSI&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cierre
&lt;/h2&gt;

&lt;p&gt;Lo interesante de POCKET-Darwin-180B no es solo que un modelo de 180B corra sin GPU, sino el conjunto de decisiones de ingeniería que lo hacen posible: MoE para reducir el cómputo por token, cuantización de 4 bits que preserva la precisión, y GGUF más llama.cpp para desplegar con una sola línea de comando. La combinación acerca un modelo de nivel puntero al hardware que ya tienes sobre la mesa.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>opensource</category>
      <category>spanish</category>
    </item>
    <item>
      <title>De los exámenes al trabajo real: un modelo abierto de 180B lidera 10 clasificaciones oficiales de Hugging Face</title>
      <dc:creator>김민식/학생</dc:creator>
      <pubDate>Tue, 06 Oct 2026 00:43:23 +0000</pubDate>
      <link>https://dev.to/_0e3192755d4df45b92/de-los-examenes-al-trabajo-real-un-modelo-abierto-de-180b-lidera-10-clasificaciones-oficiales-de-389e</link>
      <guid>https://dev.to/_0e3192755d4df45b92/de-los-examenes-al-trabajo-real-un-modelo-abierto-de-180b-lidera-10-clasificaciones-oficiales-de-389e</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Un modelo de código abierto, &lt;strong&gt;Darwin-180B-RSI&lt;/strong&gt;, ocupa ahora el &lt;strong&gt;puesto #1 en 10 de los 48 benchmarks oficiales de Hugging Face&lt;/strong&gt;, el mayor número entre las 95 organizaciones que compiten. La segunda posición es Z.ai, con 4.&lt;/li&gt;
&lt;li&gt;El décimo primer puesto es &lt;strong&gt;MDPBench&lt;/strong&gt; (parsing de documentos multilingües, 83.65). Se suma a los dos anteriores orientados al trabajo real: &lt;strong&gt;IFStruct&lt;/strong&gt; (salida estructurada, 98.95%) y &lt;strong&gt;ExtractBench&lt;/strong&gt; (extracción de documentos, 90.29).&lt;/li&gt;
&lt;li&gt;El modelo mejora solo con &lt;strong&gt;RSI a nivel de modelo&lt;/strong&gt; (auto mejora recursiva): resuelve problemas verificables, se queda únicamente con sus propias soluciones confirmadas como correctas y vuelve a entrenar con ellas.&lt;/li&gt;
&lt;li&gt;Al mismo tiempo, &lt;strong&gt;Gate Arcade&lt;/strong&gt;, una app para juzgar acciones de agentes, fue elegida &lt;strong&gt;Spaces of the Week&lt;/strong&gt; de Hugging Face. Dentro va &lt;strong&gt;ZTC&lt;/strong&gt;, una técnica que juzga leyendo el estado interno del modelo &lt;strong&gt;sin generar ni una sola letra&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Este post está pensado para que lo pueda leer alguien de ingeniería: qué miden los benchmarks, cómo se logró y por qué ZTC es relevante para agentes en producción.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué significa liderar 10 benchmarks oficiales de Hugging Face?
&lt;/h2&gt;

&lt;p&gt;Hugging Face mantiene un conjunto de benchmarks oficiales sobre los que cualquier organización puede registrar resultados medidos con el arnés de evaluación oficial de cada prueba. Hoy son 48 benchmarks y 95 organizaciones participantes. Que una misma familia de modelos encabece 10 de ellos no es un promedio alto: es haber ganado la prueba, una por una, en dominios muy distintos.&lt;/p&gt;

&lt;p&gt;Lo interesante no es solo la cantidad, sino el &lt;strong&gt;reparto&lt;/strong&gt;. Hasta hace poco, los primeros puestos estaban en pruebas tipo examen: ciencia de posgrado, olimpiadas de matemáticas, preguntas de estilo jurídico. Los tres añadidos recientes miden otra cosa: la capacidad de &lt;strong&gt;hacer el trabajo que una empresa realmente le encarga a un modelo&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Área&lt;/th&gt;
&lt;th&gt;Benchmark&lt;/th&gt;
&lt;th&gt;Puntuación&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ciencia y conocimiento&lt;/td&gt;
&lt;td&gt;GPQA Diamond&lt;/td&gt;
&lt;td&gt;94.44&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ciencia y conocimiento&lt;/td&gt;
&lt;td&gt;MMLU-Pro&lt;/td&gt;
&lt;td&gt;88.12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Matemáticas&lt;/td&gt;
&lt;td&gt;AIME 2026&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Matemáticas&lt;/td&gt;
&lt;td&gt;HMMT 2026&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Razonamiento visual&lt;/td&gt;
&lt;td&gt;MMMU-Pro&lt;/td&gt;
&lt;td&gt;79.48&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jurídico&lt;/td&gt;
&lt;td&gt;LEXam&lt;/td&gt;
&lt;td&gt;68.94&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jurídico&lt;/td&gt;
&lt;td&gt;LEXam-hard&lt;/td&gt;
&lt;td&gt;45.72&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trabajo de empresa&lt;/td&gt;
&lt;td&gt;ExtractBench&lt;/td&gt;
&lt;td&gt;90.29&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trabajo de empresa&lt;/td&gt;
&lt;td&gt;IFStruct&lt;/td&gt;
&lt;td&gt;98.95&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Parsing de documentos&lt;/td&gt;
&lt;td&gt;MDPBench&lt;/td&gt;
&lt;td&gt;83.65&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Conviene subrayar un detalle: en &lt;strong&gt;MMLU-Pro (141 modelos registrados)&lt;/strong&gt; y &lt;strong&gt;GPQA (111 modelos)&lt;/strong&gt;, los dos benchmarks con más competidores, el modelo sigue en primer lugar. Ganar donde hay más gente mirando es distinto a ganar en una prueba de nicho.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué miden MDPBench, IFStruct y ExtractBench?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;MDPBench&lt;/strong&gt; evalúa el parsing de documentos multilingües: tomar un documento real, con sus tablas, encabezados y estructura, y convertirlo en una representación limpia y utilizable. Es el paso previo invisible de casi cualquier sistema RAG o de automatización documental. Si el parsing se equivoca, todo lo que viene después hereda el error. Aquí el modelo marcó &lt;strong&gt;83.65&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IFStruct&lt;/strong&gt;, de Liquid AI, comprueba si el modelo devuelve JSON o YAML válido que respeta un esquema pedido. La corrección es aprobado o suspenso por prompt, y es estricta:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;número exacto de elementos (o rango), clave envoltorio, JSON frente a YAML&lt;/li&gt;
&lt;li&gt;bloque de código requerido o prohibido, sin comentarios cuando se pide&lt;/li&gt;
&lt;li&gt;cada tipo de campo, enum, límite numérico y longitud de lista anidada&lt;/li&gt;
&lt;li&gt;cualquier campo que el esquema no pidió hace fallar la respuesta&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No se usa decodificación restringida, así que solo se mide la disciplina propia del modelo. Darwin aprobó &lt;strong&gt;1.979 de 2.000&lt;/strong&gt; prompts con los valores por defecto del arnés oficial (temperatura 0, 16K tokens, razonamiento activado), para un &lt;strong&gt;98.95%&lt;/strong&gt;. Un prompt agotó el tiempo de lectura de 120 segundos del arnés y se contó como fallo, así que la cifra es conservadora.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Modelo&lt;/th&gt;
&lt;th&gt;IFStruct&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Darwin-180B-RSI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;98.95&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agents-A1&lt;/td&gt;
&lt;td&gt;93.25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-oss-20b&lt;/td&gt;
&lt;td&gt;91.95&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nemotron-3-Nano-30B&lt;/td&gt;
&lt;td&gt;86.80&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Granite 4.1 8B&lt;/td&gt;
&lt;td&gt;68.45&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;ExtractBench&lt;/strong&gt;, de LlamaIndex, pide extraer campos estructurados de 370 documentos PDF, desde formularios cortos hasta archivos cercanos a 200 páginas. La segunda ronda de auto mejora, &lt;strong&gt;Darwin-180B-RSI-R3&lt;/strong&gt;, obtuvo &lt;strong&gt;90.29&lt;/strong&gt;, por delante de su propio modelo base Qwen3.8-Flash-Next (89.88).&lt;/p&gt;

&lt;p&gt;Por qué importan los tres juntos: en una tubería de agentes, la salida del modelo la lee &lt;strong&gt;código&lt;/strong&gt;, no una persona. Un tipo de dato mal puesto, una clave inventada o una tabla mal parseada, y el proceso se detiene. Estas pruebas miden exactamente la parte que decide si un piloto llega a producción.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Cómo mejora el modelo sin datos etiquetados por humanos?
&lt;/h2&gt;

&lt;p&gt;Darwin-180B-RSI parte del modelo abierto Qwen3.8-Flash-Next de Alibaba y sube su rendimiento con la técnica propia de &lt;strong&gt;RSI a nivel de modelo&lt;/strong&gt; (Model-level RSI, auto mejora recursiva). La idea, en una frase: el modelo aprende de sus propios aciertos verificados.&lt;/p&gt;

&lt;p&gt;El bucle, sin recetas internas ni hiperparámetros:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;El modelo resuelve problemas cuya respuesta se puede &lt;strong&gt;verificar&lt;/strong&gt; de forma automática.&lt;/li&gt;
&lt;li&gt;Se conservan solo las soluciones confirmadas como correctas.&lt;/li&gt;
&lt;li&gt;Se vuelve a entrenar con ese conjunto depurado.&lt;/li&gt;
&lt;li&gt;Se repite.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Como nunca aprende de soluciones sin verificar, los errores no se refuerzan. Un detalle llamativo: &lt;strong&gt;nadie le enseñó explícitamente derecho ni extracción documental&lt;/strong&gt;, y aun así encabeza esas áreas. La lectura del equipo es que el hábito de razonar con cuidado, adquirido al resolver problemas verificables, se transfiere a dominios nuevos.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué es ZTC y por qué es Spaces of the Week?
&lt;/h2&gt;

&lt;p&gt;Mientras los agentes de IA empiezan a enviar correos, pagar y ejecutar código en nuestro nombre, el nuevo terreno de disputa es el &lt;strong&gt;juicio&lt;/strong&gt; (decision): filtrar la acción equivocada &lt;strong&gt;antes&lt;/strong&gt; de ejecutarla. La API JEV de Typesafe fijó un formato de referencia, y en la clasificación abierta Decision Index ya hay más de 70 modelos. El 30 de septiembre, Cloudflare publicó un modelo juez compatible con ese formato, y equipos de Stanford y NVIDIA presentaron modelos de la misma familia.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ZTC&lt;/strong&gt; (Zero-Token Confidence, confianza sin tokens) propone otra dirección. En lugar de preguntar a otra IA "¿esta respuesta es correcta?" y recibir texto de vuelta, &lt;strong&gt;lee una vez el estado interno&lt;/strong&gt; del modelo que ya produjo la respuesta y calcula la probabilidad de que sea correcta. Los tokens adicionales generados son &lt;strong&gt;cero&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Misma precisión, 10 veces más rápido.&lt;/strong&gt; La precisión de juicio (AUC) es ZTC 0.7289 frente a la API externa (JEV) 0.7350, estadísticamente equivalentes. El tiempo por juicio es ZTC 0.06 s frente a JEV 0.59 s. En los mismos 300 segundos, ZTC procesó 177 casos y JEV 135; en un duelo de 2.000 rondas, ZTC ganó el 73.7%.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Los datos no salen.&lt;/strong&gt; ZTC corre en la misma GPU junto al modelo, sin ida y vuelta a una API externa. Funciona en redes aisladas, lo que encaja con defensa, banca y sector público.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Coste adicional casi nulo.&lt;/strong&gt; Solo lee el interior de un modelo que ya generó su respuesta. Con este método, Darwin-397B-ZTC subió la precisión al juzgar sus propias respuestas de 0.76 a 0.88.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Spaces of the Week es la curación con la que Hugging Face destaca 8 apps por semana entre cerca de 1,5 millones. &lt;strong&gt;Gate Arcade&lt;/strong&gt;, que muestra como un juego cuándo una acción de agente se ejecuta o se retiene, fue seleccionada en la semana del 28 de septiembre. Suma la acción correcta (+1), penaliza la equivocada (−1) y deja en 0 la retención, y enfrenta tres estrategias: ejecutar todo sin juzgar, preguntar a una API externa (JEV) y ZTC.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Plano&lt;/th&gt;
&lt;th&gt;JEV (API externa)&lt;/th&gt;
&lt;th&gt;ZTC&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Precisión de juicio (AUC)&lt;/td&gt;
&lt;td&gt;sin dato&lt;/td&gt;
&lt;td&gt;0.7350&lt;/td&gt;
&lt;td&gt;0.7289&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tiempo por juicio&lt;/td&gt;
&lt;td&gt;0 s&lt;/td&gt;
&lt;td&gt;0.591 s&lt;/td&gt;
&lt;td&gt;0.0615 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Casos en 300 s&lt;/td&gt;
&lt;td&gt;no aplica&lt;/td&gt;
&lt;td&gt;135&lt;/td&gt;
&lt;td&gt;177&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Preguntas frecuentes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;¿El modelo es realmente de código abierto?&lt;/strong&gt;&lt;br&gt;
Darwin-180B-RSI parte de Qwen3.8-Flash-Next de Alibaba y está publicado en Hugging Face como &lt;code&gt;FINAL-Bench/Darwin-180B-RSI&lt;/code&gt;. La variante usada en ExtractBench es &lt;code&gt;FINAL-Bench/Darwin-180B-RSI-R3&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Quién mide y registra las puntuaciones?&lt;/strong&gt;&lt;br&gt;
Cada organización mide con la herramienta de evaluación oficial de cada benchmark y registra el valor. Los resultados aquí citados corresponden a ese registro oficial en Hugging Face a octubre de 2026.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Por qué un 98.95% y no un 100% en IFStruct?&lt;/strong&gt;&lt;br&gt;
De 2.000 prompts, uno agotó el límite de lectura de 120 segundos del arnés y se contabilizó como fallo. La cifra es, por tanto, conservadora. Con el razonamiento desactivado, el mismo modelo baja a 89.7%: la fase de razonamiento es la que cierra las últimas violaciones de restricciones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿ZTC sustituye a las APIs de juicio como JEV?&lt;/strong&gt;&lt;br&gt;
No necesariamente. ZTC alcanza una precisión equivalente a JEV con unas 10 veces menos de latencia y sin enviar datos fuera, lo que lo hace idóneo en redes aisladas y cargas de alto volumen. JEV sigue siendo útil cuando se prefiere un juez externo e independiente del modelo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Esto sirve para mi tubería de agentes?&lt;/strong&gt;&lt;br&gt;
Si su salida la consume código (JSON, YAML, extracción de PDF), IFStruct, ExtractBench y MDPBench miden justo esa fiabilidad. Y si necesita decidir si una acción se ejecuta o se retiene con baja latencia, ese es el caso de uso de ZTC.&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/_0e3192755d4df45b92"&gt;Darwin-180B-RSI: el modelo de lenguaje de código abierto #1 en 9 clasificaciones oficiales de Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Modelos: &lt;code&gt;huggingface.co/FINAL-Bench/Darwin-180B-RSI&lt;/code&gt; y &lt;code&gt;huggingface.co/FINAL-Bench/Darwin-180B-RSI-R3&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>opensource</category>
      <category>spanish</category>
    </item>
    <item>
      <title>Darwin-180B-RSI: el modelo de lenguaje de código abierto #1 en 9 clasificaciones oficiales de Hugging Face</title>
      <dc:creator>김민식/학생</dc:creator>
      <pubDate>Mon, 05 Oct 2026 08:58:49 +0000</pubDate>
      <link>https://dev.to/_0e3192755d4df45b92/darwin-180b-rsi-el-modelo-de-lenguaje-de-codigo-abierto-1-en-9-clasificaciones-oficiales-de-2d46</link>
      <guid>https://dev.to/_0e3192755d4df45b92/darwin-180b-rsi-el-modelo-de-lenguaje-de-codigo-abierto-1-en-9-clasificaciones-oficiales-de-2d46</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;La familia &lt;strong&gt;Darwin-180B-RSI&lt;/strong&gt; de VIDRAFT ocupa el &lt;strong&gt;primer lugar en 9 de los 48 benchmarks oficiales&lt;/strong&gt; de Hugging Face. Ninguna de las 95 organizaciones participantes tiene más; detrás vienen Moonshot AI y Zhipu AI (Z.ai) con 4 cada una.&lt;/li&gt;
&lt;li&gt;Los dos primeros puestos más recientes son de trabajo real, no de examen: &lt;strong&gt;IFStruct 98.95 %&lt;/strong&gt; (salida estructurada, 1.979 de 2.000 prompts) y &lt;strong&gt;ExtractBench 90.29&lt;/strong&gt; (extracción de datos de 370 PDF, versión R3).&lt;/li&gt;
&lt;li&gt;La receta se llama &lt;strong&gt;auto-mejora recursiva a nivel de modelo (Model-level RSI)&lt;/strong&gt;: el modelo resuelve problemas verificables, se queda solo con sus propias soluciones comprobadas como correctas y vuelve a entrenarse con ellas. Sin respuestas escritas por humanos.&lt;/li&gt;
&lt;li&gt;El mismo equipo desarrolló &lt;strong&gt;ZTC&lt;/strong&gt;, un juez que decide sin generar un solo token: misma precisión que consultar una API externa (AUC 0.7289 frente a 0.7350) y unas 10 veces más rápido (0.0615 s frente a 0.591 s).&lt;/li&gt;
&lt;li&gt;Abajo tienes código Python para consultar la clasificación tú mismo, cómo servir el modelo con vLLM o Transformers, y un FAQ. Todas las cifras se volvieron a comprobar contra la API de Hugging Face el 5 de octubre de 2026.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%3Fw%3D800%26h%3D420%26bkg%3Dwhite%26c%3D%257B%2522type%2522%253A%2522bar%2522%252C%2522data%2522%253A%257B%2522labels%2522%253A%255B%2522VIDRAFT%2522%252C%2522Moonshot%2520AI%2522%252C%2522Zhipu%2520AI%2520%2528Z.ai%2529%2522%252C%2522DeepSeek%2522%252C%2522Xiaomi%2522%255D%252C%2522datasets%2522%253A%255B%257B%2522label%2522%253A%2522%2522%252C%2522data%2522%253A%255B9%252C4%252C4%252C3%252C3%255D%252C%2522backgroundColor%2522%253A%255B%2522%25234F46E5%2522%252C%2522%25239CA3AF%2522%252C%2522%25239CA3AF%2522%252C%2522%25239CA3AF%2522%252C%2522%25239CA3AF%2522%255D%257D%255D%257D%252C%2522options%2522%253A%257B%2522legend%2522%253A%257B%2522display%2522%253Afalse%257D%252C%2522title%2522%253A%257B%2522display%2522%253Atrue%252C%2522text%2522%253A%2522Primeros%2520puestos%2520por%2520organizaci%25C3%25B3n%2520%252805-10-2026%2529%2522%252C%2522fontSize%2522%253A20%257D%252C%2522plugins%2522%253A%257B%2522datalabels%2522%253A%257B%2522display%2522%253Atrue%252C%2522anchor%2522%253A%2522end%2522%252C%2522align%2522%253A%2522end%2522%252C%2522font%2522%253A%257B%2522weight%2522%253A%2522bold%2522%257D%257D%257D%257D%257D" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%3Fw%3D800%26h%3D420%26bkg%3Dwhite%26c%3D%257B%2522type%2522%253A%2522bar%2522%252C%2522data%2522%253A%257B%2522labels%2522%253A%255B%2522VIDRAFT%2522%252C%2522Moonshot%2520AI%2522%252C%2522Zhipu%2520AI%2520%2528Z.ai%2529%2522%252C%2522DeepSeek%2522%252C%2522Xiaomi%2522%255D%252C%2522datasets%2522%253A%255B%257B%2522label%2522%253A%2522%2522%252C%2522data%2522%253A%255B9%252C4%252C4%252C3%252C3%255D%252C%2522backgroundColor%2522%253A%255B%2522%25234F46E5%2522%252C%2522%25239CA3AF%2522%252C%2522%25239CA3AF%2522%252C%2522%25239CA3AF%2522%252C%2522%25239CA3AF%2522%255D%257D%255D%257D%252C%2522options%2522%253A%257B%2522legend%2522%253A%257B%2522display%2522%253Afalse%257D%252C%2522title%2522%253A%257B%2522display%2522%253Atrue%252C%2522text%2522%253A%2522Primeros%2520puestos%2520por%2520organizaci%25C3%25B3n%2520%252805-10-2026%2529%2522%252C%2522fontSize%2522%253A20%257D%252C%2522plugins%2522%253A%257B%2522datalabels%2522%253A%257B%2522display%2522%253Atrue%252C%2522anchor%2522%253A%2522end%2522%252C%2522align%2522%253A%2522end%2522%252C%2522font%2522%253A%257B%2522weight%2522%253A%2522bold%2522%257D%257D%257D%257D%257D" alt="Primeros puestos por organización en Hugging Face" width="1600" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué son exactamente los 9 primeros puestos en la clasificación de Hugging Face?
&lt;/h2&gt;

&lt;p&gt;Hugging Face marca ciertos datasets como &lt;strong&gt;benchmarks oficiales&lt;/strong&gt; (&lt;code&gt;benchmark:official&lt;/code&gt;) y les añade una tabla de clasificación. Cada laboratorio publica sus resultados en su propio repositorio con archivos &lt;code&gt;.eval_results/*.yaml&lt;/code&gt;, y Hugging Face los agrega en un ranking. Hoy hay 48 tableros oficiales y 95 organizaciones compitiendo.&lt;/p&gt;

&lt;p&gt;Estos son los 9 tableros donde lidera Darwin-180B-RSI, con su perseguidor inmediato, según la API el 5 de octubre de 2026:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Área&lt;/th&gt;
&lt;th&gt;Benchmark (ID del dataset)&lt;/th&gt;
&lt;th&gt;Darwin&lt;/th&gt;
&lt;th&gt;2.º lugar&lt;/th&gt;
&lt;th&gt;Puntaje&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ciencia&lt;/td&gt;
&lt;td&gt;GPQA Diamond (&lt;code&gt;Idavidrein/gpqa&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;94.44&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;moonshotai/Kimi-K3&lt;/td&gt;
&lt;td&gt;93.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Conocimiento&lt;/td&gt;
&lt;td&gt;MMLU-Pro (&lt;code&gt;TIGER-Lab/MMLU-Pro&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;88.12&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;MiniMaxAI/MiniMax-M2.1&lt;/td&gt;
&lt;td&gt;88.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Matemáticas&lt;/td&gt;
&lt;td&gt;AIME 2026 (&lt;code&gt;MathArena/aime_2026&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;thinkingmachines/Inkling&lt;/td&gt;
&lt;td&gt;97.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Matemáticas&lt;/td&gt;
&lt;td&gt;HMMT Feb 2026 (&lt;code&gt;MathArena/hmmt_feb_2026&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;moonshotai/Kimi-K2.6&lt;/td&gt;
&lt;td&gt;92.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Visión&lt;/td&gt;
&lt;td&gt;MMMU-Pro (&lt;code&gt;MMMU/MMMU_Pro&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;79.48&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;moonshotai/Kimi-K2.6&lt;/td&gt;
&lt;td&gt;79.4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Derecho&lt;/td&gt;
&lt;td&gt;LEXam (&lt;code&gt;LEXam-Benchmark/LEXam&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;68.94&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;deepseek-ai/DeepSeek-R1&lt;/td&gt;
&lt;td&gt;52.41&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Derecho&lt;/td&gt;
&lt;td&gt;LEXam-hard (&lt;code&gt;joelniklaus/LEXam-hard&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;45.72&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;thinkingmachines/Inkling&lt;/td&gt;
&lt;td&gt;40.82&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trabajo real&lt;/td&gt;
&lt;td&gt;ExtractBench (&lt;code&gt;llamaindex/ExtractBench&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;90.29&lt;/strong&gt; (R3)&lt;/td&gt;
&lt;td&gt;Qwen/Qwen3.8-Flash-Next&lt;/td&gt;
&lt;td&gt;89.88&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trabajo real&lt;/td&gt;
&lt;td&gt;IFStruct (&lt;code&gt;LiquidAI/ifstruct-v1.0&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;98.95&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;InternScience/Agents-A1&lt;/td&gt;
&lt;td&gt;93.25&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;MMLU-Pro (unas 141 entradas) y GPQA (unas 111) son los tableros más concurridos, y ambos los encabeza este modelo. Lo interesante para quien desarrolla es la combinación: los rankings más disputados y, a la vez, las tareas que de verdad aparecen en producción.&lt;/p&gt;

&lt;p&gt;Una aclaración honesta: todos estos puntajes son &lt;strong&gt;autorreportados&lt;/strong&gt;, medidos por cada laboratorio con la herramienta oficial de evaluación, que es como funciona este sistema para todos. Los resultados por voto mayoritario (por ejemplo AIME maj@16) están etiquetados como tales en la ficha del modelo. Antes de comparar, revisa la configuración.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Cómo puedo verificar la clasificación con código?
&lt;/h2&gt;

&lt;p&gt;No tienes que creerle a ningún artículo. La API pública de Hugging Face lo responde en segundos y no necesita token:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;collections&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Counter&lt;/span&gt;

&lt;span class="n"&gt;API&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://huggingface.co/api&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;# 1) Lista de benchmarks oficiales
&lt;/span&gt;&lt;span class="n"&gt;boards&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;API&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/datasets&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                      &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;filter&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;benchmark:official&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;limit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Benchmarks oficiales:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;boards&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="c1"&gt;# 2) Quién va primero en cada tablero
&lt;/span&gt;&lt;span class="n"&gt;firsts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Counter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;boards&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;rows&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;API&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/datasets/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/leaderboard&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="nf"&gt;isinstance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;continue&lt;/span&gt;
    &lt;span class="n"&gt;top&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;                      &lt;span class="c1"&gt;# rank 1
&lt;/span&gt;    &lt;span class="n"&gt;firsts&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;top&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;modelId&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;top&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;modelId&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;startswith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;FINAL-Bench/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;r2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;top&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;value&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;top&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;modelId&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
              &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;| 2.º&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;r2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;modelId&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;r2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;value&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;firsts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;most_common&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="c1"&gt;# Resultado el 2026-10-05: FINAL-Bench 9, moonshotai 4, zai-org 4, XiaomiMiMo 3, deepseek-ai 3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cada fila trae campos como &lt;code&gt;rank&lt;/code&gt;, &lt;code&gt;value&lt;/code&gt;, &lt;code&gt;modelId&lt;/code&gt;, &lt;code&gt;source&lt;/code&gt; (enlace a la ficha del modelo) y &lt;code&gt;verified&lt;/code&gt;. Con esto puedes montar un panel interno para elegir modelos o una alerta que te avise cuando cambia el líder de un benchmark que te importa.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Por qué importa a un desarrollador el 98.95 % en IFStruct?
&lt;/h2&gt;

&lt;p&gt;IFStruct, creado por Liquid AI, mide si un modelo devuelve JSON o YAML válido que respete un esquema pedido, con los requisitos redactados de las mil maneras en que los escriben los usuarios reales. Cada prompt se aprueba o se reprueba, y el criterio es estricto:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cantidad exacta de elementos (o rango), clave contenedora, JSON frente a YAML&lt;/li&gt;
&lt;li&gt;bloque de código obligatorio o prohibido, nada de comentarios si así se pide&lt;/li&gt;
&lt;li&gt;tipo de cada campo, enums, límites numéricos y largo de listas anidadas&lt;/li&gt;
&lt;li&gt;cualquier campo que el esquema no pidió hace fallar la respuesta&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No se usa decodificación restringida (constrained decoding), así que se mide solo la disciplina del propio modelo. Darwin-180B-RSI aprobó 1.979 de 2.000 prompts con los valores por defecto del harness oficial (temperatura 0, 16.000 tokens máximos, razonamiento activado). Un prompt superó el timeout de lectura de 120 segundos del harness y contó como fallo, así que la cifra es conservadora. Con el razonamiento apagado, el mismo modelo baja a 89.7 %: la fase de razonamiento es la que atrapa las últimas violaciones de formato.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%3Fw%3D800%26h%3D420%26bkg%3Dwhite%26c%3D%257B%2522type%2522%253A%2522horizontalBar%2522%252C%2522data%2522%253A%257B%2522labels%2522%253A%255B%2522Darwin-180B-RSI%2522%252C%2522Agents-A1%2522%252C%2522gpt-oss-20b%2522%252C%2522Nemotron-3-Nano-30B%2522%252C%2522Granite%25204.1%25208B%2522%255D%252C%2522datasets%2522%253A%255B%257B%2522label%2522%253A%2522%2522%252C%2522data%2522%253A%255B98.95%252C93.25%252C91.95%252C86.8%252C68.45%255D%252C%2522backgroundColor%2522%253A%255B%2522%25234F46E5%2522%252C%2522%25239CA3AF%2522%252C%2522%25239CA3AF%2522%252C%2522%25239CA3AF%2522%252C%2522%25239CA3AF%2522%255D%257D%255D%257D%252C%2522options%2522%253A%257B%2522legend%2522%253A%257B%2522display%2522%253Afalse%257D%252C%2522title%2522%253A%257B%2522display%2522%253Atrue%252C%2522text%2522%253A%2522IFStruct%253A%2520precisi%25C3%25B3n%2520en%2520salida%2520estructurada%2520%2528%2525%2529%2522%252C%2522fontSize%2522%253A20%257D%252C%2522plugins%2522%253A%257B%2522datalabels%2522%253A%257B%2522display%2522%253Atrue%252C%2522anchor%2522%253A%2522end%2522%252C%2522align%2522%253A%2522end%2522%252C%2522font%2522%253A%257B%2522weight%2522%253A%2522bold%2522%257D%257D%257D%257D%257D" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%3Fw%3D800%26h%3D420%26bkg%3Dwhite%26c%3D%257B%2522type%2522%253A%2522horizontalBar%2522%252C%2522data%2522%253A%257B%2522labels%2522%253A%255B%2522Darwin-180B-RSI%2522%252C%2522Agents-A1%2522%252C%2522gpt-oss-20b%2522%252C%2522Nemotron-3-Nano-30B%2522%252C%2522Granite%25204.1%25208B%2522%255D%252C%2522datasets%2522%253A%255B%257B%2522label%2522%253A%2522%2522%252C%2522data%2522%253A%255B98.95%252C93.25%252C91.95%252C86.8%252C68.45%255D%252C%2522backgroundColor%2522%253A%255B%2522%25234F46E5%2522%252C%2522%25239CA3AF%2522%252C%2522%25239CA3AF%2522%252C%2522%25239CA3AF%2522%252C%2522%25239CA3AF%2522%255D%257D%255D%257D%252C%2522options%2522%253A%257B%2522legend%2522%253A%257B%2522display%2522%253Afalse%257D%252C%2522title%2522%253A%257B%2522display%2522%253Atrue%252C%2522text%2522%253A%2522IFStruct%253A%2520precisi%25C3%25B3n%2520en%2520salida%2520estructurada%2520%2528%2525%2529%2522%252C%2522fontSize%2522%253A20%257D%252C%2522plugins%2522%253A%257B%2522datalabels%2522%253A%257B%2522display%2522%253Atrue%252C%2522anchor%2522%253A%2522end%2522%252C%2522align%2522%253A%2522end%2522%252C%2522font%2522%253A%257B%2522weight%2522%253A%2522bold%2522%257D%257D%257D%257D%257D" alt="Ranking de IFStruct" width="1600" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En un pipeline de agentes o en un backoffice automatizado, la salida del modelo no la lee una persona: la parsea tu código. Un tipo equivocado o una clave inventada y &lt;code&gt;json.loads&lt;/code&gt; o tu validador de esquema revientan. Pasar de 93.25 % a 98.95 % se traduce en menos reintentos, menos lógica de reparación y menos alertas a las tres de la mañana.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Cómo se logró el 90.29 en ExtractBench?
&lt;/h2&gt;

&lt;p&gt;ExtractBench, de LlamaIndex, pide extraer campos estructurados de 370 documentos PDF, desde formularios cortos hasta archivos de casi 200 páginas. La segunda ronda de auto-mejora, &lt;strong&gt;Darwin-180B-RSI-R3&lt;/strong&gt;, obtuvo &lt;strong&gt;90.29&lt;/strong&gt; y superó a su propio modelo base, Qwen3.8-Flash-Next de Alibaba (89.88), y a Qwen3.8-27B (89.75). Esta corrida usó el harness oficial con el razonamiento desactivado, y así quedó declarado en la entrega.&lt;/p&gt;

&lt;p&gt;Que la siguiente generación de un mismo linaje supere al modelo del que partió es la evidencia más directa de que el ciclo de auto-mejora funciona.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Cómo funciona la auto-mejora recursiva (Model-level RSI)?
&lt;/h2&gt;

&lt;p&gt;Darwin-180B-RSI parte del modelo abierto &lt;strong&gt;Qwen3.8-Flash-Next&lt;/strong&gt; de Alibaba y mejora mediante la &lt;strong&gt;auto-mejora recursiva a nivel de modelo&lt;/strong&gt; de VIDRAFT. La idea cabe en tres pasos:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;El modelo resuelve por su cuenta &lt;strong&gt;problemas verificables&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Se conservan &lt;strong&gt;solo sus propias soluciones comprobadas como correctas&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;El modelo &lt;strong&gt;se reentrena&lt;/strong&gt; con ellas, y el ciclo se repite.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No se usan soluciones ni cadenas de razonamiento escritas por personas. Como lo no verificado nunca entra al entrenamiento, el modelo no refuerza sus propios errores. R3 es simplemente una vuelta más del ciclo.&lt;/p&gt;

&lt;p&gt;Lo llamativo es que nunca se entrenó con textos jurídicos ni con extracción de documentos, y aun así lidera LEXam, LEXam-hard y ExtractBench. La lectura de la empresa: los hábitos de razonamiento cuidadoso y paso a paso que se aprenden resolviendo problemas verificables se transfieren a otros dominios.&lt;/p&gt;

&lt;p&gt;¿Por qué "a nivel de modelo"? Para distinguirlo de los enfoques que mejoran el arnés (prompts, herramientas, flujos) alrededor de un modelo fijo. Aquí lo que cambia no es el manual, sino los pesos: el cerebro mismo.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Cómo ejecuto Darwin-180B-RSI en mi infraestructura?
&lt;/h2&gt;

&lt;p&gt;El código siguiente viene tal cual de la sección Quickstart de la &lt;a href="https://huggingface.co/FINAL-Bench/Darwin-180B-RSI" rel="noopener noreferrer"&gt;ficha del modelo&lt;/a&gt;. Primero, las especificaciones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mixture-of-Experts con atención híbrida (36 capas de atención lineal + 12 de atención completa)&lt;/li&gt;
&lt;li&gt;512 expertos enrutados, 10 activos por token, más un experto compartido&lt;/li&gt;
&lt;li&gt;Contexto de 262.144 tokens; entrada de imagen y texto, salida de texto&lt;/li&gt;
&lt;li&gt;Unos 336 GB en bf16&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Servir con vLLM (8 × B200 o equivalente)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vllm serve FINAL-Bench/Darwin-180B-RSI &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--tensor-parallel-size&lt;/span&gt; 8 &lt;span class="nt"&gt;--enable-expert-parallel&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--max-model-len&lt;/span&gt; 135168 &lt;span class="nt"&gt;--trust-remote-code&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Llamarlo con la API compatible con OpenAI
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;
&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http://localhost:8000/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;-&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;FINAL-Bench/Darwin-180B-RSI&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Explica en dos frases por qué el cielo es azul.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
    &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;top_p&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.95&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;extra_body&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;top_k&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Cargarlo con Transformers
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;transformers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AutoProcessor&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;AutoModelForImageTextToText&lt;/span&gt;
&lt;span class="n"&gt;model_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;FINAL-Bench/Darwin-180B-RSI&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;processor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoProcessor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoModelForImageTextToText&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;torch_dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;auto&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;device_map&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;auto&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dos consejos prácticos. Primero, es un modelo de razonamiento (thinking): para problemas difíciles la ficha recomienda un presupuesto de 32K a 131K tokens; si lo recortas, pierdes precisión. Segundo, la configuración de evaluación de la ficha es temperatura 1.0, top_p 0.95, top_k 20, aunque para tareas de formato estricto como IFStruct el harness oficial usó temperatura 0.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué es ZTC y en qué se diferencia de JEV?
&lt;/h2&gt;

&lt;p&gt;Ahora que los agentes envían correos, hacen pagos y ejecutan código, filtrar una acción equivocada &lt;strong&gt;antes&lt;/strong&gt; de ejecutarla se volvió un tema central. La API de decisión &lt;strong&gt;JEV&lt;/strong&gt;, de Typesafe, definió el formato estándar del sector, y el ranking público Decision Index ya reúne más de 70 modelos. El 30 de septiembre Cloudflare publicó Clef, un modelo de decisión compatible con JEV.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ZTC (Zero-Token Confidence)&lt;/strong&gt; de VIDRAFT toma otro camino. En lugar de preguntarle a otra IA "¿esta respuesta es correcta?" y esperar texto de vuelta, lee una sola vez el estado interno del modelo que generó la respuesta y calcula la probabilidad de que sea correcta. Tokens adicionales generados: cero.&lt;/p&gt;

&lt;p&gt;Para verlo en acción está &lt;strong&gt;Gate Arcade&lt;/strong&gt;, elegida como "Space of the Week" de Hugging Face la semana del 28 de septiembre. Un agente propone una acción y la compuerta decide ejecutar o retener: +1 por ejecutar una acción correcta, -1 por ejecutar una incorrecta, 0 por retener. Mediciones del 24 de septiembre de 2026, en despliegue aislado de internet:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Sin compuerta&lt;/th&gt;
&lt;th&gt;JEV (API externa)&lt;/th&gt;
&lt;th&gt;ZTC (VIDRAFT)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Precisión de decisión (AUC)&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;td&gt;0.7350&lt;/td&gt;
&lt;td&gt;0.7289&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tiempo por decisión&lt;/td&gt;
&lt;td&gt;0 s&lt;/td&gt;
&lt;td&gt;0.591 s&lt;/td&gt;
&lt;td&gt;0.0615 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Decisiones en 300 s&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;td&gt;135&lt;/td&gt;
&lt;td&gt;177&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%3Fw%3D800%26h%3D420%26bkg%3Dwhite%26c%3D%257B%2522type%2522%253A%2522bar%2522%252C%2522data%2522%253A%257B%2522labels%2522%253A%255B%2522JEV%2520%2528API%2520externa%2529%2522%252C%2522ZTC%2520%2528VIDRAFT%2529%2522%255D%252C%2522datasets%2522%253A%255B%257B%2522label%2522%253A%2522%2522%252C%2522data%2522%253A%255B0.591%252C0.0615%255D%252C%2522backgroundColor%2522%253A%255B%2522%25239CA3AF%2522%252C%2522%25234F46E5%2522%255D%257D%255D%257D%252C%2522options%2522%253A%257B%2522legend%2522%253A%257B%2522display%2522%253Afalse%257D%252C%2522title%2522%253A%257B%2522display%2522%253Atrue%252C%2522text%2522%253A%2522Tiempo%2520por%2520decisi%25C3%25B3n%2520%2528s%2529%252C%2520menos%2520es%2520mejor%2522%252C%2522fontSize%2522%253A20%257D%252C%2522plugins%2522%253A%257B%2522datalabels%2522%253A%257B%2522display%2522%253Atrue%252C%2522anchor%2522%253A%2522end%2522%252C%2522align%2522%253A%2522end%2522%252C%2522font%2522%253A%257B%2522weight%2522%253A%2522bold%2522%257D%257D%257D%257D%257D" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%3Fw%3D800%26h%3D420%26bkg%3Dwhite%26c%3D%257B%2522type%2522%253A%2522bar%2522%252C%2522data%2522%253A%257B%2522labels%2522%253A%255B%2522JEV%2520%2528API%2520externa%2529%2522%252C%2522ZTC%2520%2528VIDRAFT%2529%2522%255D%252C%2522datasets%2522%253A%255B%257B%2522label%2522%253A%2522%2522%252C%2522data%2522%253A%255B0.591%252C0.0615%255D%252C%2522backgroundColor%2522%253A%255B%2522%25239CA3AF%2522%252C%2522%25234F46E5%2522%255D%257D%255D%257D%252C%2522options%2522%253A%257B%2522legend%2522%253A%257B%2522display%2522%253Afalse%257D%252C%2522title%2522%253A%257B%2522display%2522%253Atrue%252C%2522text%2522%253A%2522Tiempo%2520por%2520decisi%25C3%25B3n%2520%2528s%2529%252C%2520menos%2520es%2520mejor%2522%252C%2522fontSize%2522%253A20%257D%252C%2522plugins%2522%253A%257B%2522datalabels%2522%253A%257B%2522display%2522%253Atrue%252C%2522anchor%2522%253A%2522end%2522%252C%2522align%2522%253A%2522end%2522%252C%2522font%2522%253A%257B%2522weight%2522%253A%2522bold%2522%257D%257D%257D%257D%257D" alt="Latencia de ZTC frente a JEV" width="1600" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;La precisión es estadísticamente equivalente y la velocidad es unas 10 veces mayor. En 2.000 partidas cara a cara, ZTC ganó el 73.7 %. Como no envía datos a ningún servicio externo, funciona en redes aisladas, algo clave para banca, defensa o sector público. Con el mismo enfoque, Darwin-397B-ZTC elevó de 0.76 a 0.88 la precisión con la que juzga si sus propias respuestas son correctas.&lt;/p&gt;

&lt;p&gt;Los límites también son claros: hay que leer el interior del modelo, así que no sirve para modelos cerrados que solo se usan por API, y cada modelo necesita su propio lector calibrado. Lo sensato es usarlo como primer filtro rápido y barato, no como juez final. Además, el lector ZTC incluido en el repositorio de Darwin-180B-RSI está marcado en la ficha como "early release"; léela antes de usarlo en acciones de alto riesgo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preguntas frecuentes (FAQ)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. ¿Dónde veo la clasificación de Hugging Face con los 9 primeros puestos?&lt;/strong&gt;&lt;br&gt;
En la pestaña de leaderboard de cada dataset (por ejemplo &lt;code&gt;huggingface.co/datasets/LiquidAI/ifstruct-v1.0&lt;/code&gt;) o llamando a &lt;code&gt;https://huggingface.co/api/datasets/{id}/leaderboard&lt;/code&gt;, como en el script de arriba.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. ¿Quién midió los puntajes? ¿Están verificados?&lt;/strong&gt;&lt;br&gt;
Los tableros oficiales de Hugging Face funcionan con resultados que cada laboratorio mide con la herramienta oficial y publica vía &lt;code&gt;.eval_results&lt;/code&gt;. Los de Darwin también son autorreportados, y la ficha del modelo documenta muestras por pregunta y presupuesto de razonamiento.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. ¿De verdad la auto-mejora recursiva no usa respuestas humanas?&lt;/strong&gt;&lt;br&gt;
Así es. El modelo resuelve problemas verificables, conserva solo sus soluciones comprobadas y se reentrena con ellas. No se usan soluciones ni razonamientos escritos por personas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. ¿Puedo usar este modelo de lenguaje de código abierto ya mismo? ¿Qué hardware necesito?&lt;/strong&gt;&lt;br&gt;
Los pesos están publicados en Hugging Face. Ocupan unos 336 GB en bf16, por eso la ficha recomienda 8 × B200 (o equivalente) con vLLM, paralelismo tensorial 8 y paralelismo de expertos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. ¿Por qué elegirlo para generar JSON en producción?&lt;/strong&gt;&lt;br&gt;
Logró 98.95 % en IFStruct sin decodificación restringida, 5.7 puntos por encima del segundo (93.25 %). Eso significa menos reintentos y menos código de reparación.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. ¿Cómo integro ZTC en mi servicio?&lt;/strong&gt;&lt;br&gt;
Necesitas un modelo de pesos abiertos cuyo estado interno puedas leer. Prueba primero Gate Arcade para entender el flujo y revisa los ejemplos de la carpeta &lt;code&gt;ztc/&lt;/code&gt; en la ficha del modelo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enlaces
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;VIDRAFT: &lt;a href="https://vidraft.net" rel="noopener noreferrer"&gt;https://vidraft.net&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Modelo: &lt;a href="https://huggingface.co/FINAL-Bench/Darwin-180B-RSI" rel="noopener noreferrer"&gt;https://huggingface.co/FINAL-Bench/Darwin-180B-RSI&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;R3 (#1 en ExtractBench): &lt;a href="https://huggingface.co/FINAL-Bench/Darwin-180B-RSI-R3" rel="noopener noreferrer"&gt;https://huggingface.co/FINAL-Bench/Darwin-180B-RSI-R3&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Gate Arcade (Space of the Week): &lt;a href="https://huggingface.co/spaces/FINAL-Bench/gate-tetris" rel="noopener noreferrer"&gt;https://huggingface.co/spaces/FINAL-Bench/gate-tetris&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;De un modelo que aprueba exámenes a uno que trabaja respetando el formato que le pides, más una compuerta que detecta en 0.06 segundos cuándo no está seguro antes de actuar. Pruébalo y cuéntanos en los comentarios qué tal te fue.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>opensource</category>
      <category>spanish</category>
    </item>
  </channel>
</rss>
