<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Eplb on lo0 — Blog Técnico</title><link>https://blog.lo0.es/tags/eplb/</link><description>Recent content in Eplb on lo0 — Blog Técnico</description><generator>Hugo -- gohugo.io</generator><language>es</language><lastBuildDate>Sat, 30 May 2026 08:00:00 +0200</lastBuildDate><atom:link href="https://blog.lo0.es/tags/eplb/index.xml" rel="self" type="application/rss+xml"/><item><title>MoE inference: el call center con 256 especialistas y 8 atendiendo cada llamada — fundamentos, expert parallel y la economía de DeepSeek-V3</title><link>https://blog.lo0.es/posts/moe-inference-fundamentos/</link><pubDate>Sat, 30 May 2026 08:00:00 +0200</pubDate><guid>https://blog.lo0.es/posts/moe-inference-fundamentos/</guid><description>&lt;blockquote>
&lt;p>Este post entra en una decisión arquitectónica de la etapa Deploy del &lt;a href="https://blog.lo0.es/posts/pipeline-llmops-seis-etapas/">pipeline LLMOps de seis etapas&lt;/a>. Complementa los de &lt;a href="https://blog.lo0.es/posts/kv-cache-fundamentos/">KV cache&lt;/a> (que no cambia con MoE), &lt;a href="https://blog.lo0.es/posts/flashattention-fundamentos/">FlashAttention&lt;/a> (que sigue siendo el kernel de la atención, también dense en todos los MoE actuales), &lt;a href="https://blog.lo0.es/posts/quantization-fundamentos-inferencia/">Quantization&lt;/a> (FP8/NVFP4 sobre expert weights es lo que permite que DeepSeek-V3 entre en un cluster modesto) y &lt;a href="https://blog.lo0.es/posts/speculative-decoding-fundamentos/">Speculative decoding&lt;/a> (MTP en DeepSeek-V3 es speculative decoding nativo).&lt;/p>
&lt;/blockquote>
&lt;h2 id="estás-aquí-deploy">Estás aquí: DEPLOY&lt;/h2>
&lt;div class="diagram" style="max-width:780px;margin:1rem auto;">
&lt;svg viewBox="0 0 780 90" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="estás aquí: Deploy">
&lt;style>.box{stroke:#444;stroke-width:1.4;rx:6}.active{fill:#7ad88f;stroke-width:3}.idle{fill:#f4f4f4}.lbl{font:600 12px sans-serif;fill:#222}.arr{stroke:#666;stroke-width:1.4;fill:none;marker-end:url(#moem)}.cyc{stroke:#888;stroke-width:1.2;fill:none;stroke-dasharray:4 2;marker-end:url(#moem)}&lt;/style>
&lt;defs>&lt;marker id="moem" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="6" markerHeight="6" orient="auto">&lt;path d="M0,0 L10,5 L0,10 z" fill="#666"/>&lt;/marker>&lt;/defs>
&lt;text x="390" y="20" text-anchor="middle" class="lbl">Estás aquí: DEPLOY · sparsity de compute sin sparsity de memoria&lt;/text>
&lt;rect x="30" y="35" width="110" height="35" class="box idle"/>&lt;text x="85" y="58" text-anchor="middle" class="lbl">1 · Data&lt;/text>
&lt;rect x="155" y="35" width="110" height="35" class="box idle"/>&lt;text x="210" y="58" text-anchor="middle" class="lbl">2 · Tune&lt;/text>
&lt;rect x="280" y="35" width="110" height="35" class="box idle"/>&lt;text x="335" y="58" text-anchor="middle" class="lbl">3 · Eval&lt;/text>
&lt;rect x="405" y="35" width="110" height="35" class="box active"/>&lt;text x="460" y="58" text-anchor="middle" class="lbl">4 · Deploy&lt;/text>
&lt;rect x="530" y="35" width="110" height="35" class="box idle"/>&lt;text x="585" y="58" text-anchor="middle" class="lbl">5 · Observe&lt;/text>
&lt;rect x="655" y="35" width="110" height="35" class="box idle"/>&lt;text x="710" y="58" text-anchor="middle" class="lbl">6 · Retrain&lt;/text>
&lt;path class="arr" d="M140,52 L155,52"/>&lt;path class="arr" d="M265,52 L280,52"/>&lt;path class="arr" d="M390,52 L405,52"/>&lt;path class="arr" d="M515,52 L530,52"/>&lt;path class="arr" d="M640,52 L655,52"/>
&lt;path class="cyc" d="M710,72 L710,82 L85,82 L85,72"/>
&lt;/svg>
&lt;/div>
&lt;h2 id="tldr">TL;DR&lt;/h2>
&lt;p>Un Mixture of Experts (MoE) sustituye la capa FFN dense del transformer por &lt;strong>N expertos paralelos más un router&lt;/strong> que selecciona los &lt;code>k&lt;/code> expertos relevantes para cada token. La consecuencia operacional es que los parámetros &lt;strong>totales&lt;/strong> del modelo (cuántos se han entrenado y cuántos hay que cargar en VRAM) se desacoplan de los parámetros &lt;strong>activos por token&lt;/strong> (cuántos participan en cada forward). DeepSeek-V3 tiene 671 B totales pero solo 37 B activos por token; Qwen3-235B-A22B son 235 B totales y 22 B activos; Mixtral 8x22B son 141 B y 39 B; Llama 4 Maverick son 400 B y 17 B. El compute por token cae a &lt;code>2·N_active&lt;/code> FLOPs —la mitad del de un Llama-3-70B dense, en el caso de DeepSeek-V3—, pero la memoria sigue siendo proporcional a &lt;code>N_total&lt;/code>: la &lt;em>sparsity&lt;/em> del MoE es &lt;strong>sparsity de compute, no de memoria&lt;/strong>. Como cada experto ve solo &lt;code>batch·k/N&lt;/code> tokens por step, el régimen memory-bound persiste a batch mucho más alto que en dense. Servir DeepSeek-V3 671 B FP8 con baja latencia requiere &lt;strong>expert parallel&lt;/strong> (EP) a escala —EP=32 en prefill y EP=144 en decode en el despliegue de DeepSeek de producción— donde el cuello dominante deja de ser HBM y pasa a ser el &lt;strong>all-to-all del dispatch y combine&lt;/strong> entre GPUs. En mayo de 2026, las piezas que hacen viable esto son &lt;strong>DeepEP&lt;/strong> (kernels CUDA all-to-all FP8-native, intra-nodo NVLink + inter-nodo RDMA), &lt;strong>EPLB&lt;/strong> (balanceo replicando experts &lt;em>hot&lt;/em>) y &lt;strong>Wide-EP&lt;/strong> sobre NVL72 (72 GPUs en un dominio NVLink coherente). Este post desmonta el mecanismo, la matemática (FLOPs/token, bytes de all-to-all), la tabla actualizada de modelos MoE mayo 2026, los paralelismos (TP / EP / DP+EP / Wide-EP), los pitfalls operacionales (memory wall, cold experts, imbalance) y los números reales reproducibles en H100, B200 y GB200 NVL72.&lt;/p>
&lt;h2 id="la-analogía-el-call-center-con-256-especialistas">La analogía: el call center con 256 especialistas&lt;/h2>
&lt;p>Un call center serio que atiende consultas técnicas complejas funciona con &lt;strong>especialistas&lt;/strong>, no con generalistas. Tienes 256 operadores en plantilla, cada uno experto en su sub-dominio: jurídico-laboral, hipotecas, IRPF, sucesiones, etc. Pero cada llamada que entra solo necesita atención de &lt;strong>ocho&lt;/strong> especialistas concretos (top-8 routing): la consulta de un cliente sobre desgravación de una hipoteca para su segunda vivienda hereda implica al de IRPF, al de hipotecas, al de plusvalías, etc. La recepcionista (el router) escucha el primer segundo de la llamada, decide cuáles son los ocho especialistas relevantes, los conecta en conferencia y combina sus respuestas con pesos.&lt;/p>
&lt;p>Tres consecuencias inmediatas, idénticas a las del MoE en producción:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Pagas los 256 sueldos&lt;/strong> (todos los expertos están cargados en VRAM) pero solo &lt;strong>gastas tiempo de 8&lt;/strong> (solo k expertos participan en el forward de cada token). Tu coste de plantilla escala con &lt;code>N_total&lt;/code>; tu coste por minuto de llamada escala con &lt;code>N_active&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Si todos los operadores caben en una oficina&lt;/strong> (una sola GPU), perfecto: solo hay que pasar el papel entre escritorios. Pero &lt;strong>si no caben&lt;/strong>, hay que abrir sedes: la conferencia entre operadores de sedes distintas pasa por línea telefónica entre edificios (NVLink intra-nodo, InfiniBand inter-nodo) y esa línea &lt;strong>se vuelve el cuello dominante&lt;/strong> cuando hay decenas de sedes coordinándose.&lt;/li>
&lt;li>&lt;strong>Si una semana los clientes preguntan todos por IRPF&lt;/strong>, los tres operadores de IRPF saturan mientras los de sucesiones se aburren. Necesitas &lt;strong>un sistema que replique a los operadores hot&lt;/strong> en varias sedes para absorber picos, y que &lt;strong>emparejen hot con cold&lt;/strong> para que ninguna sede idleice.&lt;/li>
&lt;/ol>
&lt;p>La recepcionista es el &lt;strong>router&lt;/strong>. Las sedes son las GPUs. La conferencia entre sedes es el &lt;strong>all-to-all&lt;/strong> (dispatch + combine). El sistema de replicación de operadores hot es &lt;strong>EPLB&lt;/strong>. La línea telefónica buena es &lt;strong>DeepEP&lt;/strong>. Y cuando alguien diseña un edificio donde caben las 72 sedes juntas con cables internos rapidísimos, eso es &lt;strong>NVL72&lt;/strong>.&lt;/p>
&lt;h2 id="el-mecanismo-desnudo">El mecanismo desnudo&lt;/h2>
&lt;p>Una capa MoE clásica reemplaza el FFN dense (&lt;code>y = FFN(x) = down(act(up(x) · gate(x)))&lt;/code> en SwiGLU) por:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Router&lt;/strong>: una proyección lineal &lt;code>g(x) = W_router · x&lt;/code> produce &lt;code>N&lt;/code> scores. Sobre esos scores se aplica softmax para tener probabilidades de afinidad.&lt;/li>
&lt;li>&lt;strong>Selección top-k&lt;/strong>: se eligen los &lt;code>k&lt;/code> expertos con score más alto. Sus pesos &lt;code>softmax_topk&lt;/code> se normalizan a suma 1.&lt;/li>
&lt;li>&lt;strong>Compute en paralelo&lt;/strong>: cada uno de los &lt;code>k&lt;/code> expertos seleccionados ejecuta su FFN propio sobre &lt;code>x&lt;/code>. Los &lt;code>N - k&lt;/code> no seleccionados quedan ociosos para este token.&lt;/li>
&lt;li>&lt;strong>Combinación ponderada&lt;/strong>: la salida es &lt;code>y = Σ_{i ∈ topk} w_i · Expert_i(x)&lt;/code>.&lt;/li>
&lt;/ol>
&lt;p>Variantes que el mercado consolidó en 2025-2026:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Shared experts&lt;/strong>: además de los &lt;code>k&lt;/code> routed, hay &lt;code>s&lt;/code> expertos que siempre se ejecutan (1 o 2). Capturan conocimiento general que todos los tokens necesitan. DeepSeek-V3 usa 1 shared + 8 routed; Mixtral usa 0 shared.&lt;/li>
&lt;li>&lt;strong>Fine-grained experts&lt;/strong>: más expertos pequeños en lugar de pocos grandes (DeepSeek: 256 vs Mixtral: 8). Permite mejor especialización porque la combinación top-k cubre más sub-dominios.&lt;/li>
&lt;li>&lt;strong>Auxiliary-loss-free routing&lt;/strong> (DeepSeek-V3): en lugar de añadir un loss de balanceo al entrenamiento, ajusta dinámicamente un bias en el routing. Mantiene balance sin contaminar el loss principal.&lt;/li>
&lt;/ul>
&lt;p>La atención sigue siendo &lt;strong>dense&lt;/strong> en todos los modelos MoE actuales (Mixtral, DeepSeek, Qwen3-MoE, Llama 4, Kimi K2). Solo se reemplaza el FFN. Por eso FlashAttention v3/v4 se sigue usando tal cual; MLA de DeepSeek es una optimización ortogonal al MoE.&lt;/p>
&lt;h2 id="los-modelos-moe-relevantes-en-mayo-2026">Los modelos MoE relevantes en mayo 2026&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Modelo&lt;/th>
&lt;th>Fecha&lt;/th>
&lt;th>Total&lt;/th>
&lt;th>Active&lt;/th>
&lt;th>Experts&lt;/th>
&lt;th>Top-k&lt;/th>
&lt;th>Shared&lt;/th>
&lt;th>Notas&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Mixtral 8x7B&lt;/td>
&lt;td>dic 2023&lt;/td>
&lt;td>47 B&lt;/td>
&lt;td>13 B&lt;/td>
&lt;td>8&lt;/td>
&lt;td>2&lt;/td>
&lt;td>0&lt;/td>
&lt;td>El que normalizó MoE en open weights&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Mixtral 8x22B&lt;/td>
&lt;td>abr 2024&lt;/td>
&lt;td>141 B&lt;/td>
&lt;td>39 B&lt;/td>
&lt;td>8&lt;/td>
&lt;td>2&lt;/td>
&lt;td>0&lt;/td>
&lt;td>—&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Grok-1 (open)&lt;/td>
&lt;td>mar 2024&lt;/td>
&lt;td>314 B&lt;/td>
&lt;td>~86 B&lt;/td>
&lt;td>8&lt;/td>
&lt;td>2&lt;/td>
&lt;td>0&lt;/td>
&lt;td>Pesos abiertos por xAI&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DeepSeekMoE 16B&lt;/td>
&lt;td>ene 2024&lt;/td>
&lt;td>16 B&lt;/td>
&lt;td>2.8 B&lt;/td>
&lt;td>64+2&lt;/td>
&lt;td>6&lt;/td>
&lt;td>2&lt;/td>
&lt;td>Introduce fine-grained + shared&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DeepSeek-V2&lt;/td>
&lt;td>may 2024&lt;/td>
&lt;td>236 B&lt;/td>
&lt;td>21 B&lt;/td>
&lt;td>160+2&lt;/td>
&lt;td>6&lt;/td>
&lt;td>2&lt;/td>
&lt;td>+ MLA&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Snowflake Arctic&lt;/td>
&lt;td>abr 2024&lt;/td>
&lt;td>480 B&lt;/td>
&lt;td>17 B&lt;/td>
&lt;td>128&lt;/td>
&lt;td>2&lt;/td>
&lt;td>10 B dense residual&lt;/td>
&lt;td>Dense-MoE híbrido&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Hunyuan-Large&lt;/td>
&lt;td>nov 2024&lt;/td>
&lt;td>389 B&lt;/td>
&lt;td>52 B&lt;/td>
&lt;td>16+1&lt;/td>
&lt;td>1+shared&lt;/td>
&lt;td>1&lt;/td>
&lt;td>Cross-layer KV cache&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>DeepSeek-V3&lt;/strong>&lt;/td>
&lt;td>dic 2024&lt;/td>
&lt;td>671 B&lt;/td>
&lt;td>37 B&lt;/td>
&lt;td>256+1&lt;/td>
&lt;td>8&lt;/td>
&lt;td>1&lt;/td>
&lt;td>MLA + MTP, aux-loss-free, FP8 training&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Llama 4 Scout&lt;/td>
&lt;td>abr 2025&lt;/td>
&lt;td>109 B&lt;/td>
&lt;td>17 B&lt;/td>
&lt;td>16&lt;/td>
&lt;td>1+shared&lt;/td>
&lt;td>1&lt;/td>
&lt;td>Diseñado para 1 nodo H100&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Llama 4 Maverick&lt;/td>
&lt;td>abr 2025&lt;/td>
&lt;td>400 B&lt;/td>
&lt;td>17 B&lt;/td>
&lt;td>128&lt;/td>
&lt;td>1+shared&lt;/td>
&lt;td>1&lt;/td>
&lt;td>—&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Qwen3-235B-A22B&lt;/td>
&lt;td>abr 2025&lt;/td>
&lt;td>235 B&lt;/td>
&lt;td>22 B&lt;/td>
&lt;td>128&lt;/td>
&lt;td>8&lt;/td>
&lt;td>0&lt;/td>
&lt;td>—&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Kimi K2 (Moonshot)&lt;/td>
&lt;td>2025&lt;/td>
&lt;td>1 T&lt;/td>
&lt;td>32 B&lt;/td>
&lt;td>384&lt;/td>
&lt;td>8&lt;/td>
&lt;td>(MLA)&lt;/td>
&lt;td>Entrenado con MuonClip&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DeepSeek-V3.2-Exp&lt;/td>
&lt;td>sep 2025&lt;/td>
&lt;td>671 B&lt;/td>
&lt;td>37 B&lt;/td>
&lt;td>256+1&lt;/td>
&lt;td>8&lt;/td>
&lt;td>1&lt;/td>
&lt;td>+ DeepSeek Sparse Attention&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Tres observaciones operacionales:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>El ratio activos/totales cae con cada generación&lt;/strong>: Mixtral 8x7B era 28 %, DeepSeek-V3 es 5.5 %, Llama 4 Maverick es 4.3 %. Lo que la industria descubrió es que &lt;strong>el sparsity puede ser muy agresivo sin perder calidad&lt;/strong>, siempre que &lt;code>N&lt;/code> sea suficientemente grande y el routing esté bien aprendido. La especialización fina vale más que la capacidad por experto.&lt;/li>
&lt;li>&lt;strong>Las cabezas de los proveedores grandes (OpenAI, Anthropic, Google) son MoE casi con seguridad&lt;/strong>, pero las arquitecturas no se publican. La única filtración semi-creíble (Hotz, jul 2023) afirmaba que GPT-4 era 8×~220 B MoE; sin confirmación oficial.&lt;/li>
&lt;li>&lt;strong>DeepSeek-V3 marca el punto de inflexión&lt;/strong>: open weights, frontier-class, MoE con sparsity agresivo y compatible con quantization FP8. Es el modelo que forzó al ecosistema (vLLM, SGLang, TensorRT-LLM) a optimizar wide-EP en 2025.&lt;/li>
&lt;/ol>
&lt;h2 id="la-matemática-que-importa">La matemática que importa&lt;/h2>
&lt;p>Tres números mueven toda la decisión arquitectónica con MoE.&lt;/p>
&lt;p>&lt;strong>Compute por token.&lt;/strong> Un transformer dense gasta aproximadamente &lt;code>2N&lt;/code> FLOPs por token en forward (con &lt;code>N&lt;/code> = parámetros totales). Un MoE gasta &lt;code>2·N_active&lt;/code> FLOPs por token (los &lt;code>N_total - N_active&lt;/code> expertos no participan). Para DeepSeek-V3: 2 × 37 B = &lt;strong>74 GFLOPs/token&lt;/strong>. Para Llama-3-70B dense: 2 × 70 B = &lt;strong>140 GFLOPs/token&lt;/strong>. &lt;strong>DeepSeek hace la mitad del compute por token&lt;/strong> que Llama-3-70B, ofreciendo capacidad equivalente a un modelo casi 10 × mayor.&lt;/p>
&lt;p>&lt;strong>Memoria total.&lt;/strong> Pero &lt;strong>todos&lt;/strong> los expertos deben estar cargados en VRAM en algún momento del forward. El sparsity es de compute, no de memoria. Memoria de pesos:&lt;/p>
&lt;p>$$\text{Memoria}&lt;em>{\text{pesos}} \approx N&lt;/em>{\text{total}} \cdot \text{bytes_por_param}$$&lt;/p>
&lt;p>Para DeepSeek-V3 FP8 (1 byte): 685 GB. No cabe en 8×H100 SXM (640 GB). Necesitas o quantization adicional o 16+ GPUs. Para Mixtral 8x22B FP8: 141 GB → cabe holgado en 2×H100. Para Qwen3-235B-A22B FP8: 235 GB → cabe en 4×H100.&lt;/p>
&lt;p>&lt;strong>All-to-all bytes por capa MoE.&lt;/strong> Cuando los expertos están repartidos entre GPUs (EP), cada token debe viajar a las GPUs donde residen sus &lt;code>k&lt;/code> expertos. El volumen por capa MoE es aproximadamente:&lt;/p>
&lt;p>$$\text{bytes_a2a/layer} \approx 2 \cdot \text{batch} \cdot \text{seq_len} \cdot d_{\text{model}} \cdot k \cdot \text{bytes}$$&lt;/p>
&lt;p>(el factor 2 es dispatch + combine). Para DeepSeek-V3 con &lt;code>d_model = 7168&lt;/code>, &lt;code>k = 8&lt;/code>, &lt;code>batch = 4096&lt;/code>, FP8 (1 byte): cada layer MoE mueve ~470 MB; multiplicado por 61 layers MoE en DeepSeek-V3, el step completo agrega &lt;strong>~29 GB de tráfico inter-GPU&lt;/strong> solo en MoE comms. Es del orden de la HBM bandwidth de una GPU en un único step. Por eso el ancho de banda y la topología NVLink/InfiniBand determinan cuán grande puede ser EP sin que el comm sature.&lt;/p>
&lt;p>&lt;strong>Régimen memory-bound persistente.&lt;/strong> Aquí está la consecuencia menos intuitiva. En dense, subir el batch mueve la operación de memory-bound a compute-bound: con suficientes tokens por batch, los pesos se aprovechan para más operaciones. En MoE, cada experto ve solo &lt;code>batch · k / N&lt;/code> tokens. Para Qwen3-235B (k=8, N=128) con batch=128, cada experto procesa &lt;strong>8 tokens por step&lt;/strong>. Para llegar al régimen compute-bound de los tensor cores (arithmetic intensity ~100-200 FLOPs/byte) se necesitan batches del orden de &lt;strong>miles&lt;/strong> —~1600 según estimaciones recientes para Qwen3 (Memory-Bound MoE Serving, arXiv:2512.09277)—. La consecuencia operacional: &lt;strong>MoE escala throughput con batch de forma más lineal que dense&lt;/strong>, pero también necesita batches mucho mayores para acercarse a su techo de compute.&lt;/p>
&lt;h2 id="expert-parallel-y-el-cuello-del-all-to-all">Expert parallel y el cuello del all-to-all&lt;/h2>
&lt;p>Hay tres formas principales de paralelizar un MoE entre GPUs:&lt;/p>
&lt;p>&lt;strong>Tensor Parallel (TP, Megatron-style).&lt;/strong> Divide cada matriz weight a lo ancho/alto entre GPUs. Cada GPU procesa todos los tokens y todos los layers. Comms por layer: 2 all-reduces. Funciona bien para dense; para MoE deja sin explotar la sparsity del routing (cada GPU mantiene fragmentos de todos los expertos).&lt;/p>
&lt;p>&lt;strong>Expert Parallel (EP).&lt;/strong> Divide los &lt;strong>expertos enteros&lt;/strong> entre GPUs: 256 expertos / 32 GPUs = 8 expertos por GPU. Cada token, tras el routing, viaja a las GPUs donde residen sus &lt;code>k&lt;/code> expertos top-k. Comms por layer MoE: un &lt;strong>all-to-all dispatch&lt;/strong> (tokens hacia expertos) más un &lt;strong>all-to-all combine&lt;/strong> (outputs de vuelta). El costo crece con el EP-size y se convierte en el cuello cuando EP &amp;gt; 8.&lt;/p>
&lt;p>&lt;strong>DP + EP / Wide-EP.&lt;/strong> Replica el modelo en grupos DP; dentro de cada grupo, EP shardea expertos. &lt;strong>Wide-EP&lt;/strong> lleva EP a la dimensión completa de un rack (NVL72, 72 GPUs en dominio NVLink coherente). Cada experto recibe más tokens por step → mejor intensidad aritmética en los GEMMs de cada experto → throughput por GPU sube. vLLM reporta &lt;strong>1.8× throughput por GPU con wide-EP&lt;/strong> vs setups menores en DeepSeek-V3 (blog vLLM, dic 2025).&lt;/p>
&lt;div class="diagram" style="max-width:780px;margin:1.5rem auto;">
&lt;svg viewBox="0 0 780 380" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Expert Parallel con all-to-all dispatch y combine">
&lt;style>
.gpu{fill:#eaf3ff;stroke:#1f5fa8;stroke-width:1.4;rx:8}
.exp{fill:#fff4d6;stroke:#a48000;stroke-width:1.2;rx:4}
.tok{fill:#cdebd0;stroke:#2a7a40;stroke-width:1.2;rx:4}
.router{fill:#e6d0ff;stroke:#5a2db0;stroke-width:1.4;rx:6}
.lbl{font:600 12px sans-serif;fill:#222}
.sub{font:400 10px sans-serif;fill:#555}
.disp{stroke:#cc6622;stroke-width:1.5;fill:none;marker-end:url(#mma)}
.comb{stroke:#226699;stroke-width:1.5;fill:none;stroke-dasharray:4 2;marker-end:url(#mma)}
&lt;/style>
&lt;defs>&lt;marker id="mma" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="6" markerHeight="6" orient="auto">&lt;path d="M0,0 L10,5 L0,10 z" fill="#444"/>&lt;/marker>&lt;/defs>
&lt;p>&lt;text x="20" y="22" class="lbl">Capa MoE con Expert Parallel: EP=4 (4 GPUs, 8 experts/GPU)&lt;/text>&lt;/p>
&lt;rect x="20" y="40" width="170" height="60" class="router"/>
&lt;text x="105" y="62" text-anchor="middle" class="lbl">Router (W_router)&lt;/text>
&lt;text x="105" y="78" text-anchor="middle" class="sub">softmax → top-k=2&lt;/text>
&lt;text x="105" y="92" text-anchor="middle" class="sub">por token&lt;/text>
&lt;p>&lt;rect x="20" y="115" width="80" height="35" class="tok"/>&lt;text x="60" y="138" text-anchor="middle" class="lbl">tokens&lt;/text>&lt;/p>
&lt;p>&lt;text x="220" y="60" class="sub">all-to-all dispatch (FP8)&lt;/text>
&lt;path class="disp" d="M195,75 L300,160"/>
&lt;path class="disp" d="M195,80 L450,160"/>
&lt;path class="disp" d="M195,85 L600,160"/>
&lt;path class="disp" d="M195,90 L720,160"/>&lt;/p>
&lt;rect x="240" y="160" width="120" height="120" class="gpu"/>
&lt;text x="300" y="178" text-anchor="middle" class="lbl">GPU 0&lt;/text>
&lt;rect x="252" y="190" width="42" height="20" class="exp"/>&lt;text x="273" y="204" text-anchor="middle" class="sub">E0&lt;/text>
&lt;rect x="296" y="190" width="42" height="20" class="exp"/>&lt;text x="317" y="204" text-anchor="middle" class="sub">E1&lt;/text>
&lt;rect x="252" y="215" width="42" height="20" class="exp"/>&lt;text x="273" y="229" text-anchor="middle" class="sub">E2&lt;/text>
&lt;rect x="296" y="215" width="42" height="20" class="exp"/>&lt;text x="317" y="229" text-anchor="middle" class="sub">E3&lt;/text>
&lt;text x="300" y="255" text-anchor="middle" class="sub">expertos 0-7&lt;/text>
&lt;text x="300" y="270" text-anchor="middle" class="sub">(8 experts)&lt;/text>
&lt;rect x="390" y="160" width="120" height="120" class="gpu"/>
&lt;text x="450" y="178" text-anchor="middle" class="lbl">GPU 1&lt;/text>
&lt;rect x="402" y="190" width="42" height="20" class="exp"/>&lt;text x="423" y="204" text-anchor="middle" class="sub">E8&lt;/text>
&lt;rect x="446" y="190" width="42" height="20" class="exp"/>&lt;text x="467" y="204" text-anchor="middle" class="sub">E9&lt;/text>
&lt;text x="450" y="255" text-anchor="middle" class="sub">expertos 8-15&lt;/text>
&lt;rect x="540" y="160" width="120" height="120" class="gpu"/>
&lt;text x="600" y="178" text-anchor="middle" class="lbl">GPU 2&lt;/text>
&lt;rect x="552" y="190" width="42" height="20" class="exp"/>&lt;text x="573" y="204" text-anchor="middle" class="sub">E16&lt;/text>
&lt;rect x="596" y="190" width="42" height="20" class="exp"/>&lt;text x="617" y="204" text-anchor="middle" class="sub">E17&lt;/text>
&lt;text x="600" y="255" text-anchor="middle" class="sub">expertos 16-23&lt;/text>
&lt;rect x="660" y="160" width="100" height="120" class="gpu"/>
&lt;text x="710" y="178" text-anchor="middle" class="lbl">GPU 3&lt;/text>
&lt;rect x="668" y="190" width="42" height="20" class="exp"/>&lt;text x="689" y="204" text-anchor="middle" class="sub">E24&lt;/text>
&lt;rect x="712" y="190" width="42" height="20" class="exp"/>&lt;text x="733" y="204" text-anchor="middle" class="sub">E25&lt;/text>
&lt;text x="710" y="255" text-anchor="middle" class="sub">expertos 24-31&lt;/text>
&lt;p>&lt;text x="220" y="310" class="sub">all-to-all combine (suma ponderada vuelve al origen)&lt;/text>
&lt;path class="comb" d="M300,280 L195,330"/>
&lt;path class="comb" d="M450,280 L195,330"/>
&lt;path class="comb" d="M600,280 L195,330"/>
&lt;path class="comb" d="M710,280 L195,330"/>&lt;/p>
&lt;rect x="100" y="325" width="200" height="35" class="tok"/>
&lt;text x="200" y="346" text-anchor="middle" class="lbl">y = Σ w_i · Expert_i(x)&lt;/text>
&lt;/svg>
&lt;/div>
&lt;p>Tabla rápida de decisión:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Caso&lt;/th>
&lt;th>Recomendación&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>MoE pequeño que cabe en 1 nodo (Mixtral 8x7B, Llama 4 Scout)&lt;/td>
&lt;td>TP solo o EP=2 intra-nodo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MoE mediano (Mixtral 8x22B, Qwen3-235B) en 1-2 nodos H100&lt;/td>
&lt;td>EP=8 intra-nodo, opcional TP=2&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MoE grande (DeepSeek-V3) en cluster multi-nodo&lt;/td>
&lt;td>TP × EP cross-nodo (e.g., TP=4 × EP=8 en 32 GPUs)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MoE grande con NVL72 disponible&lt;/td>
&lt;td>Wide-EP=72 (decode), EP=32 (prefill)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>El despliegue de DeepSeek de producción combina &lt;strong>Prefill EP=32&lt;/strong> (4 nodos × 8 GPUs) con &lt;strong>Decode EP=144&lt;/strong> (18 nodos × 8 GPUs). La separación prefill/decode encaja conceptualmente con &lt;a href="https://blog.lo0.es/posts/disaggregated-serving-prefill-decode/">Disaggregated serving&lt;/a>: prefill es compute-bound y se beneficia de EP moderado; decode es memory-bound y se beneficia de Wide-EP que aumenta los tokens por experto por step.&lt;/p>
&lt;h2 id="deepep-eplb-y-wide-ep-las-piezas-que-destrababan-2025">DeepEP, EPLB y Wide-EP: las piezas que destrababan 2025&lt;/h2>
&lt;p>&lt;strong>DeepEP&lt;/strong> (DeepSeek, abierto en febrero 2025) es una librería de kernels CUDA all-to-all optimizada específicamente para MoE EP. Cuatro propiedades importantes:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>FP8 dispatch nativo&lt;/strong>: los tokens viajan en FP8, reduciendo a la mitad el ancho de banda consumido.&lt;/li>
&lt;li>&lt;strong>Mixing intra-nodo NVLink + inter-nodo RDMA&lt;/strong>: el kernel decide la ruta óptima según topología.&lt;/li>
&lt;li>&lt;strong>Bypass de CPU&lt;/strong>: el dispatch GPU→GPU pasa por RDMA sin tocar el host.&lt;/li>
&lt;li>&lt;strong>Alineado con group-limited gating de DeepSeek-V3&lt;/strong>: el routing prefiere expertos del mismo grupo de nodos cuando es posible, minimizando inter-node traffic.&lt;/li>
&lt;/ul>
&lt;p>En 2025 Tencent contribuyó optimizaciones que añadieron +30 % en los kernels normales. Hay un port para ROCm de AMD.&lt;/p>
&lt;p>&lt;strong>EPLB (Expert Parallelism Load Balancer)&lt;/strong> resuelve el problema del imbalance en runtime: aunque el modelo esté bien balanceado en distribución global, &lt;strong>un batch concreto puede activar mucho ciertos expertos&lt;/strong> (prompts en un solo idioma, dominio). EPLB &lt;strong>replica los expertos hot&lt;/strong> en varias GPUs (redundant experts) y los empaqueta heurísticamente con cold experts para minimizar varianza de carga. Tiene dos modos: hierarchical (para prefill con EP medio) y global (para decode con Wide-EP). Está integrado en SGLang y vLLM.&lt;/p>
&lt;p>&lt;strong>Wide-EP en NVL72&lt;/strong> es el setup pico de 2026: 72 GPUs Blackwell en un dominio NVLink coherente (1.8 TB/s bidireccional por GPU, intra-rack). Cada experto recibe muchos más tokens por step → mejor intensidad aritmética → mejor throughput por GPU. Combinado con NVFP4 sobre weights de expertos y FP8 sobre attention, SGLang reportó en GB200 NVL72 &lt;strong>26 156 tok/s/GPU en prefill y 13 386 tok/s/GPU en decode&lt;/strong> para DeepSeek-V3 (LMSYS, sep 2025), un &lt;strong>3.8× prefill y 4.8× decode vs H100&lt;/strong>.&lt;/p>
&lt;h2 id="pitfalls-operacionales">Pitfalls operacionales&lt;/h2>
&lt;p>&lt;strong>Fragmentación de HBM por expert weights.&lt;/strong> Con EP=8 en 1 nodo, cada GPU mantiene N/8 expertos, cada uno una tupla de matrices (&lt;code>gate&lt;/code>, &lt;code>up&lt;/code>, &lt;code>down&lt;/code>). Si N=256, son 32 FFNs por GPU. El allocator puede fragmentar; en algunos casos hace falta &lt;code>--gpu-memory-utilization&lt;/code> más conservador del habitual.&lt;/p>
&lt;p>&lt;strong>Cold experts.&lt;/strong> En distribuciones reales algunos expertos se activan &amp;lt;1 % de tokens. EPLB compensa replicando hot, pero los cold se quedan ocupando HBM sin participar — memoria &amp;ldquo;muerta&amp;rdquo;. Cuando la demanda real diverge mucho de la distribución de entrenamiento, esto se nota.&lt;/p>
&lt;p>&lt;strong>Continuous batching.&lt;/strong> Funciona con MoE pero la batch size efectiva por experto es &lt;code>batch_total · k / N&lt;/code>. Con N grande y batch moderado, cada experto ve poquísimos tokens por step. Hace falta &lt;code>batch_total&lt;/code> mucho mayor que en dense para igualar el throughput por GPU.&lt;/p>
&lt;p>&lt;strong>Speculative decoding + MoE.&lt;/strong> Interactúa &lt;strong>bien&lt;/strong>. La sparsity del MoE mantiene el régimen memory-bound a batch alto, que es justo el régimen donde speculative decoding gana más. DeepSeek-V3 integra &lt;strong>MTP&lt;/strong> (Multi-Token Prediction) — speculative decoding nativo del modelo, sin draft externo, con acceptance ~85-90 % en el segundo token (ver &lt;a href="https://blog.lo0.es/posts/speculative-decoding-fundamentos/">Speculative decoding&lt;/a> para el mecanismo).&lt;/p>
&lt;p>&lt;strong>MLA y FlashMLA, no son MoE.&lt;/strong> DeepSeek-V3 combina MoE con &lt;strong>Multi-head Latent Attention&lt;/strong> (MLA), una variante de atención que reduce el KV cache ~10× respecto a MHA estándar. MLA y MoE son ortogonales: MLA optimiza la atención, MoE optimiza el FFN. Para serving de DeepSeek se usa el kernel &lt;strong>FlashMLA&lt;/strong> específico (no FA3 directamente).&lt;/p>
&lt;p>&lt;strong>DSA (DeepSeek Sparse Attention)&lt;/strong> en DeepSeek-V3.2-Exp (sep 2025) introduce sparsity también en attention. Primera vez en frontier que la sparsity es a la vez en attention y FFN.&lt;/p>
&lt;h2 id="implicaciones-en-hardware-on-premise">Implicaciones en hardware on-premise&lt;/h2>
&lt;p>&lt;strong>En una RTX 4090 (24 GB).&lt;/strong> Los MoE grandes están fuera de alcance. Lo que sí entra: Mixtral 8x7B AWQ-INT4 (~24 GB pesos, sin margen para KV cache → realmente requiere TP=2 sobre dos 4090); DeepSeekMoE 16B BF16 (~33 GB, no cabe entero; INT4 ~8 GB, cabe con margen). El caso interesante es &lt;strong>llama.cpp con &lt;code>--n-cpu-moe&lt;/code>&lt;/strong>: offload de expert weights a RAM (CPU), atención y shared experts en GPU. Permite correr DeepSeek-V3 IQ4 (~400 GB) en una workstation con 1-2 GPUs + 512 GB de RAM con throughput modesto pero abre la puerta a un setup low-budget.&lt;/p>
&lt;p>&lt;strong>En un cluster genérico 4×H100 SXM (320 GB, NVLink, FP8 nativo).&lt;/strong> Aquí entran cómodamente:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Mixtral 8x22B FP8&lt;/strong> (~141 GB) con TP=2 o EP=4. Latencia baja, throughput excelente.&lt;/li>
&lt;li>&lt;strong>Qwen3-235B-A22B FP8&lt;/strong> (~235 GB) con TP=4 o EP=4. Cabe holgado.&lt;/li>
&lt;li>&lt;strong>Llama 4 Scout 109B FP8&lt;/strong> (~110 GB) con TP=2 o TP=4. Diseñado por Meta para servir bien en un nodo H100.&lt;/li>
&lt;/ul>
&lt;p>Lo que &lt;strong>no cabe&lt;/strong> en 4×H100: DeepSeek-V3 FP8 (~685 GB) sin quant agresiva. Opciones: (1) escalar a 8-16 H100; (2) usar AWQ INT4 sobre routed experts + FP16 sobre activated (~400 GB) que cabe en 8×H100; (3) esperar Blackwell o usar AMD MI300X (192 GB/GPU → DeepSeek-V3 FP8 en 4×MI300X).&lt;/p>
&lt;p>La regla de pulgar en mayo 2026: &lt;strong>un nodo de 4×H100 sirve cómodamente MoEs hasta ~200 B totales en FP8; para DeepSeek-V3 hay que escalar a 2 nodos o esperar B200 NVL72&lt;/strong> (donde el modelo entero entra con espacio para batches enormes).&lt;/p>
&lt;h2 id="lo-que-no-hemos-cubierto">Lo que no hemos cubierto&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>MLA y FlashMLA en detalle&lt;/strong>: optimización de KV cache de DeepSeek, ortogonal al MoE.&lt;/li>
&lt;li>&lt;strong>DeepSeek Sparse Attention (DSA)&lt;/strong> introducido en V3.2-Exp: la primera implementación productiva de sparsity en attention para frontier models.&lt;/li>
&lt;li>&lt;strong>MoE durante entrenamiento&lt;/strong>: load balancing losses, drop policies, auxiliary terms vs aux-loss-free, MuonClip de Kimi K2.&lt;/li>
&lt;li>&lt;strong>MoE + LoRA&lt;/strong>: cómo se hace fine-tuning de adapters sobre un MoE, qué pasa con el routing.&lt;/li>
&lt;li>&lt;strong>LLM-d&lt;/strong> y otras plataformas open-source que materializan Wide-EP en Kubernetes.&lt;/li>
&lt;/ul>
&lt;h2 id="ver-también">Ver también&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://blog.lo0.es/posts/kv-cache-fundamentos/">KV cache: la memoria de trabajo&lt;/a> — el KV cache estructuralmente es igual que en dense (la atención es dense en todos los MoE actuales); MLA es la optimización específica que DeepSeek aporta encima.&lt;/li>
&lt;li>&lt;a href="https://blog.lo0.es/posts/pagedattention-deep-dive/">PagedAttention deep dive&lt;/a> — el manejo del KV cache en bloques físicos sigue siendo idéntico bajo MoE; solo el FFN cambia.&lt;/li>
&lt;li>&lt;a href="https://blog.lo0.es/posts/flashattention-fundamentos/">FlashAttention v1/v2/v3/v4&lt;/a> — el kernel de attention se reusa tal cual; FlashMLA es la variante específica para MLA de DeepSeek que añade un paso de compresión latente al patrón FA.&lt;/li>
&lt;li>&lt;a href="https://blog.lo0.es/posts/quantization-fundamentos-inferencia/">Quantization para inferencia LLM&lt;/a> — FP8/NVFP4 sobre expert weights es lo que hace que DeepSeek-V3 entre en un cluster modesto y que NVL72 alcance sus números pico.&lt;/li>
&lt;li>&lt;a href="https://blog.lo0.es/posts/speculative-decoding-fundamentos/">Speculative decoding&lt;/a> — MTP en DeepSeek-V3 es speculative decoding nativo; el régimen memory-bound persistente del MoE hace que speculative gane más en MoE que en dense a batch medio.&lt;/li>
&lt;li>&lt;a href="https://blog.lo0.es/posts/disaggregated-serving-prefill-decode/">Disaggregated serving: prefill y decode&lt;/a> — el despliegue real de DeepSeek separa pools de prefill (EP=32) y decode (EP=144); la disaggregation es prerrequisito para Wide-EP.&lt;/li>
&lt;li>&lt;a href="https://blog.lo0.es/posts/continuous-batching-fundamentos/">Continuous batching&lt;/a> — la otra cara de la moneda. MoE necesita batches mucho mayores que dense para igual throughput por GPU porque cada experto ve &lt;code>batch · k / N&lt;/code> tokens por step; el scheduler iterativo es lo que lo hace viable a escala.&lt;/li>
&lt;li>&lt;a href="https://blog.lo0.es/posts/pipeline-llmops-seis-etapas/">El pipeline LLMOps de seis etapas&lt;/a> — el mapa maestro donde Deploy es la etapa 4.&lt;/li>
&lt;/ul>
&lt;h2 id="referencias">Referencias&lt;/h2>
&lt;ul>
&lt;li>Shazeer, N. et al. &lt;em>Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer&lt;/em>. ICLR 2017. &lt;a href="https://arxiv.org/abs/1701.06538">https://arxiv.org/abs/1701.06538&lt;/a>&lt;/li>
&lt;li>Lepikhin, D. et al. &lt;em>GShard: Scaling Giant Models with Conditional Computation&lt;/em>. ICLR 2021. &lt;a href="https://arxiv.org/abs/2006.16668">https://arxiv.org/abs/2006.16668&lt;/a>&lt;/li>
&lt;li>Fedus, W., Zoph, B., Shazeer, N. &lt;em>Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity&lt;/em>. JMLR 2022. &lt;a href="https://arxiv.org/abs/2101.03961">https://arxiv.org/abs/2101.03961&lt;/a>&lt;/li>
&lt;li>Gale, T., Narayanan, D., Young, C., Zaharia, M. &lt;em>MegaBlocks: Efficient Sparse Training with Mixture-of-Experts&lt;/em>. MLSys 2023. &lt;a href="https://arxiv.org/abs/2211.15841">https://arxiv.org/abs/2211.15841&lt;/a>&lt;/li>
&lt;li>Mistral AI. &lt;em>Mixtral of Experts&lt;/em>. 2024. &lt;a href="https://arxiv.org/abs/2401.04088">https://arxiv.org/abs/2401.04088&lt;/a>&lt;/li>
&lt;li>DeepSeek-AI. &lt;em>DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models&lt;/em>. 2024. &lt;a href="https://arxiv.org/abs/2401.06066">https://arxiv.org/abs/2401.06066&lt;/a>&lt;/li>
&lt;li>DeepSeek-AI. &lt;em>DeepSeek-V2&lt;/em>. 2024. &lt;a href="https://arxiv.org/abs/2405.04434">https://arxiv.org/abs/2405.04434&lt;/a>&lt;/li>
&lt;li>DeepSeek-AI. &lt;em>DeepSeek-V3 Technical Report&lt;/em>. 2024. &lt;a href="https://arxiv.org/abs/2412.19437">https://arxiv.org/abs/2412.19437&lt;/a>&lt;/li>
&lt;li>Tencent. &lt;em>Hunyuan-Large&lt;/em>. 2024. &lt;a href="https://arxiv.org/abs/2411.02265">https://arxiv.org/abs/2411.02265&lt;/a>&lt;/li>
&lt;li>DeepEP repo: &lt;a href="https://github.com/deepseek-ai/DeepEP">https://github.com/deepseek-ai/DeepEP&lt;/a>&lt;/li>
&lt;li>EPLB repo: &lt;a href="https://github.com/deepseek-ai/EPLB">https://github.com/deepseek-ai/EPLB&lt;/a>&lt;/li>
&lt;li>DeepSeek open-infra-index, &lt;em>V3/R1 Inference System Overview&lt;/em>: &lt;a href="https://github.com/deepseek-ai/open-infra-index">https://github.com/deepseek-ai/open-infra-index&lt;/a>&lt;/li>
&lt;li>vLLM blog, &lt;em>Large-Scale Serving DeepSeek&lt;/em> (dic 2025): &lt;a href="https://blog.vllm.ai/2025/12/17/large-scale-serving.html">https://blog.vllm.ai/2025/12/17/large-scale-serving.html&lt;/a>&lt;/li>
&lt;li>vLLM blog, &lt;em>WideEP en GB200&lt;/em> (feb 2026): &lt;a href="https://blog.vllm.ai/2026/02/03/dsr1-gb200-part1.html">https://blog.vllm.ai/2026/02/03/dsr1-gb200-part1.html&lt;/a>&lt;/li>
&lt;li>LMSYS blog, &lt;em>DeepSeek 96 H100 PD+EP&lt;/em> (may 2025): &lt;a href="https://www.lmsys.org/blog/2025-05-05-large-scale-ep/">https://www.lmsys.org/blog/2025-05-05-large-scale-ep/&lt;/a>&lt;/li>
&lt;li>LMSYS blog, &lt;em>DeepSeek GB200 NVL72 part II&lt;/em> (sep 2025): &lt;a href="https://www.lmsys.org/blog/2025-09-25-gb200-part-2/">https://www.lmsys.org/blog/2025-09-25-gb200-part-2/&lt;/a>&lt;/li>
&lt;li>NVIDIA Dynamo + GB200 NVL72 para MoE: &lt;a href="https://developer.nvidia.com/blog/how-nvidia-gb200-nvl72-and-nvidia-dynamo-boost-inference-performance-for-moe-models/">https://developer.nvidia.com/blog/how-nvidia-gb200-nvl72-and-nvidia-dynamo-boost-inference-performance-for-moe-models/&lt;/a>&lt;/li>
&lt;li>Tensor Economics, &lt;em>MoE Inference Economics from First Principles&lt;/em>: &lt;a href="https://www.tensoreconomics.com/p/moe-inference-economics-from-first">https://www.tensoreconomics.com/p/moe-inference-economics-from-first&lt;/a>&lt;/li>
&lt;li>Cohere, &lt;em>Why MoE models get more from speculative decoding&lt;/em>: &lt;a href="https://cohere.com/blog/mixture-of-experts-models-get-more-from-speculative-decoding">https://cohere.com/blog/mixture-of-experts-models-get-more-from-speculative-decoding&lt;/a>&lt;/li>
&lt;/ul></description></item></channel></rss>