import{s as Ul,o as fl,n as ge}from"../chunks/scheduler.36a0863c.js";import{S as Cl,i as Zl,g as p,s as n,r as m,A as Al,h as r,f as l,c as t,j as yl,u as M,x as u,k as Il,y as Gl,a,v as i,d,t as j,w}from"../chunks/index.f891bdb2.js";import{T as ke}from"../chunks/Tip.a8272f7f.js";import{C as b}from"../chunks/CodeBlock.3ec784ea.js";import{H as Re,E as vl}from"../chunks/EditOnGithub.a58e27a9.js";function Vl(h){let c,T="Esta función está disponible actualmente sólo para PyTorch.";return{c(){c=p("p"),c.textContent=T},l(o){c=r(o,"P",{"data-svelte-h":!0}),u(c)!=="svelte-ymsays"&&(c.textContent=T)},m(o,J){a(o,c,J)},p:ge,d(o){o&&l(c)}}}function Bl(h){let c,T="Para el entrenamiento multi-GPU, requiere DDP (<code>torch.distributed.launch</code>).";return{c(){c=p("p"),c.innerHTML=T},l(o){c=r(o,"P",{"data-svelte-h":!0}),u(c)!=="svelte-1svbjk8"&&(c.innerHTML=T)},m(o,J){a(o,c,J)},p:ge,d(o){o&&l(c)}}}function $l(h){let c,T="Esta función puede utilizarse con cualquier modelo basado en <code>nn.Module</code>.";return{c(){c=p("p"),c.innerHTML=T},l(o){c=r(o,"P",{"data-svelte-h":!0}),u(c)!=="svelte-16216u7"&&(c.innerHTML=T)},m(o,J){a(o,c,J)},p:ge,d(o){o&&l(c)}}}function Rl(h){let c,T,o,J,f,As,C,Gs,Z,_e="Cuando entrenas o infieres con <code>DistributedDataParallel</code> y varias GPUs, si encuentras problemas de intercomunicación entre procesos y/o nodos, puedes usar el siguiente script para diagnosticar problemas de red.",vs,A,Vs,G,Le="Por ejemplo, para probar cómo interactúan 2 GPUs, haz lo siguiente:",Bs,v,$s,V,Ne="Si ambos procesos pueden hablar entre sí y asignar la memoria de la GPU, cada uno imprimirá un status OK.",Rs,B,We="Para más GPUs o nodos, ajusta los argumentos en el script.",ks,$,xe="Encontrarás muchos más detalles dentro del script de diagnóstico e incluso una receta de cómo ejecutarlo en un entorno SLURM.",gs,R,Ee="Un nivel adicional de debug es agregar la variable de entorno <code>NCCL_DEBUG=INFO</code> de la siguiente manera:",_s,k,Ls,g,Xe="Esto mostrará mucha información de debug relacionada con NCCL, que luego puedes buscar online si encuentras que reporta algún problema. O si no estás seguro de cómo interpretar el output, puedes compartir el archivo de log en un Issue.",Ns,_,Ws,y,xs,I,Es,U,Xs,L,Qe=`Si empiezas a obtener <code>loss=NaN</code> o el modelo muestra algún otro comportamiento anormal debido a <code>inf</code> o <code>nan</code> en
activations o weights hay que descubrir dónde se produce el primer underflow o overflow y qué lo ha provocado. Por suerte
puedes lograrlo fácilmente activando un módulo especial que hará la detección automáticamente.`,Qs,N,De="Si estás usando <code>Trainer</code>, solo necesitas añadir:",Ds,W,Hs,x,He="a los argumentos normales de la línea de comandos, o pasar <code>debug=&quot;underflow_overflow&quot;</code> al crear el objeto <code>TrainingArguments</code>.",Ss,E,Se="Si estás usando tu propio bucle de entrenamiento u otro Trainer puedes lograr lo mismo con:",Ys,X,zs,Q,Ye=`<code>DebugUnderflowOverflow</code> inserta hooks en el modelo que inmediatamente después de cada forward
testeará las variables de input y output y también los weights del módulo correspondiente. Tan pronto como se detecte <code>inf</code> o
<code>nan</code> se detecta en al menos un elemento de las activations o weights, el programa afirmará e imprimirá un informe
como este (esto fue capturado con <code>google/mt5-small</code> bajo fp16 mixed precision):`,Fs,D,qs,H,ze="El output del ejemplo se ha recortado en el centro por razones de brevedad.",Ps,S,Fe=`La segunda columna muestra el valor del elemento más grande en términos absolutos, por lo que si observas con detenimiento los últimos fotogramas,
los inputs y outputs estaban en el rango de <code>1e4</code>. Así que cuando este entrenamiento se hizo con fp16 mixed precision,
el último paso sufrió overflow (ya que bajo <code>fp16</code> el mayor número antes de <code>inf</code> es <code>64e3</code>). Para evitar overflows en
<code>fp16</code> las activations deben permanecer muy por debajo de <code>1e4</code>, porque <code>1e4 * 1e4 = 1e8</code> por lo que cualquier matrix multiplication con
grandes activations va a llevar a una condición de overflow numérico.`,Ks,Y,qe="Al principio del output puedes descubrir en qué número de batch se produjo el problema (aquí <code>Detected inf/nan during batch_number=0</code> significa que el problema se produjo en el primer batch).",Os,z,Pe=`Cada frame del informe comienza declarando la entrada completamente calificada para el módulo correspondiente que este frame está reportando.
Si nos fijamos sólo en este frame:`,se,F,ee,q,Ke=`Aquí, <code>encoder.block.2.layer.1.layer_norm</code> indica que era una layer norm para la primera capa, del segundo
block del encoder. Y la call específica del <code>forward</code> es <code>T5LayerNorm</code>.`,le,P,Oe="Veamos los últimos frames de ese informe:",ae,K,ne,O,sl=`El último frame informa para la función <code>Dropout.forward</code> con la primera entrada para el único input y la segunda para el
único output. Puedes ver que fue llamada desde un atributo <code>dropout</code> dentro de la clase <code>DenseReluDense</code>. Podemos ver
que ocurrió durante la primera capa, del segundo block, durante el primer batch. Por último, el mayor absoluto
elementos de input fue <code>6.27e+04</code> y el mismo para el output fue <code>inf</code>.`,te,ss,el=`Puedes ver aquí, que <code>T5DenseGatedGeluDense.forward</code> resultó en output activations, cuyo valor máximo absoluto fue
alrededor de 62.7K, que está muy cerca del límite máximo de fp16 de 64K. En el siguiente frame tenemos <code>Dropout</code>, el cual renormaliza
los weights, después de poner a cero algunos de los elementos, lo que empuja el valor máximo absoluto a más de 64K, y obtenemos un
overflow (<code>inf</code>).`,pe,es,ll="Como puedes ver son los frames anteriores los que tenemos que mirar cuando los números empiezan a ser muy grandes para números fp16.",re,ls,al="Combinemos el informe con el código de <code>models/t5/modeling_t5.py</code>:",ue,as,ce,ns,nl="Ahora es fácil ver la call <code>dropout</code>, y también todas las calls anteriores.",oe,ts,tl=`Dado que la detección se produce en un forward hook, estos informes se imprimen inmediatamente después de que cada <code>forward</code>
responda.`,me,ps,pl=`Volviendo al informe completo, para actuar sobre él y arreglar el problema, tenemos que subir unos cuantos frames donde los números
empezaron a subir y probablemente cambiar al modo <code>fp32</code> aquí, para que los números no sufran overflow cuando se multipliquen
o al sumarlos. Por supuesto, puede haber otras soluciones. Por ejemplo, podríamos desactivar <code>amp</code> temporalmente si está
activado, después de mover el original <code>forward</code> dentro de un helper wrapper, así:`,Me,rs,ie,us,rl=`Como el detector automático sólo informa de los inputs y outputs de los frames completos, una vez que sepas dónde buscar, puedes
analizar también las etapas intermedias de una función específica de <code>forward</code>. En este caso, puede utilizar la función
función de ayuda <code>detect_overflow</code> para inyectar el detector donde quieras, por ejemplo:`,de,cs,je,os,ul=`Puedes ver que hemos añadido 2 de estos y ahora se trackea si <code>inf</code> o <code>nan</code> para <code>forwarded_states</code> fue detectado
en algún punto intermedio.`,we,ms,cl=`De hecho, el detector ya informa de esto porque cada una de las llamadas en el ejemplo anterior es un <code>nn.Module</code>, pero
digamos que si tuvieras algunos cálculos directos locales, así es como lo harías.`,be,Ms,ol=`Además, si estás instanciando el debugger en tu propio código, puedes ajustar el número de frames impresos de
su valor por defecto, por ejemplo:`,Te,is,Je,ds,he,js,ml="La misma clase de debugging se puede utilizar para el rastreo por batches con la función de detección de underflow/overflow desactivada.",ye,ws,Ml=`Digamos que quieres ver los valores mínimos y máximos absolutos de todos los ingredientes de cada call <code>forward</code> de un determinado
batch, y sólo hacerlo para los batches 1 y 3. Entonces instancias esta clase como:`,Ie,bs,Ue,Ts,il="Y ahora los batches 1 y 3 completos serán rastreados usando el mismo formato que el detector de underflow/overflow.",fe,Js,dl="Los batches son 0-index.",Ce,hs,jl=`Esto es muy útil si sabes que el programa empieza a comportarse mal después de un determinado número de batch, para que puedas avanzar rápidamente
hasta esa área. Aquí hay un ejemplo de output recortado para tal configuración:`,Ze,ys,Ae,Is,wl=`Aquí obtendrás un gran número de frames mostrados - tantos como forward calls haya en tu modelo, por lo que puede o no ser lo que quieras, pero a veces puede ser más fácil de usar para debug que un debugger normal.
Por ejemplo, si un problema comienza a ocurrir en el batch 150. Entonces puedes mostrar las trazas de los batches 149 y 150 y comparar dónde
los números empezaron a divergir.`,Ge,Us,bl="También puedes especificar el número de batch después del cual se debe detener el entrenamiento, con:",ve,fs,Ve,Cs,Be,Zs,$e;return f=new Re({props:{title:"Debugging",local:"debugging",headingTag:"h1"}}),C=new Re({props:{title:"Debug de problemas de Network multi-GPU",local:"debug-de-problemas-de-network-multi-gpu",headingTag:"h2"}}),A=new b({props:{code:"d2dldCUyMGh0dHBzJTNBJTJGJTJGcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSUyRmh1Z2dpbmdmYWNlJTJGdHJhbnNmb3JtZXJzJTJGbWFpbiUyRnNjcmlwdHMlMkZkaXN0cmlidXRlZCUyRnRvcmNoLWRpc3RyaWJ1dGVkLWdwdS10ZXN0LnB5",highlighted:"wget https://raw.githubusercontent.com/huggingface/transformers/main/scripts/distributed/torch-distributed-gpu-test.py",wrap:!1}}),v=new b({props:{code:"cHl0aG9uJTIwLW0lMjB0b3JjaC5kaXN0cmlidXRlZC5ydW4lMjAtLW5wcm9jX3Blcl9ub2RlJTIwMiUyMC0tbm5vZGVzJTIwMSUyMHRvcmNoLWRpc3RyaWJ1dGVkLWdwdS10ZXN0LnB5",highlighted:"python -m torch.distributed.run --nproc_per_node 2 --nnodes 1 torch-distributed-gpu-test.py",wrap:!1}}),k=new b({props:{code:"TkNDTF9ERUJVRyUzRElORk8lMjBweXRob24lMjAtbSUyMHRvcmNoLmRpc3RyaWJ1dGVkLnJ1biUyMC0tbnByb2NfcGVyX25vZGUlMjAyJTIwLS1ubm9kZXMlMjAxJTIwdG9yY2gtZGlzdHJpYnV0ZWQtZ3B1LXRlc3QucHk=",highlighted:"NCCL_DEBUG=INFO python -m torch.distributed.run --nproc_per_node 2 --nnodes 1 torch-distributed-gpu-test.py",wrap:!1}}),_=new Re({props:{title:"Detección de Underflow y Overflow",local:"detección-de-underflow-y-overflow",headingTag:"h2"}}),y=new ke({props:{$$slots:{default:[Vl]},$$scope:{ctx:h}}}),I=new ke({props:{$$slots:{default:[Bl]},$$scope:{ctx:h}}}),U=new ke({props:{$$slots:{default:[$l]},$$scope:{ctx:h}}}),W=new b({props:{code:"LS1kZWJ1ZyUyMHVuZGVyZmxvd19vdmVyZmxvdw==",highlighted:"--debug underflow_overflow",wrap:!1}}),X=new b({props:{code:"ZnJvbSUyMC5kZWJ1Z191dGlscyUyMGltcG9ydCUyMERlYnVnVW5kZXJmbG93T3ZlcmZsb3clMEElMEFkZWJ1Z19vdmVyZmxvdyUyMCUzRCUyMERlYnVnVW5kZXJmbG93T3ZlcmZsb3cobW9kZWwp",highlighted:`<span class="hljs-keyword">from</span> .debug_utils <span class="hljs-keyword">import</span> DebugUnderflowOverflow

debug_overflow = DebugUnderflowOverflow(model)`,wrap:!1}}),D=new b({props:{code:"RGV0ZWN0ZWQlMjBpbmYlMkZuYW4lMjBkdXJpbmclMjBiYXRjaF9udW1iZXIlM0QwJTBBTGFzdCUyMDIxJTIwZm9yd2FyZCUyMGZyYW1lcyUzQSUwQWFicyUyMG1pbiUyMCUyMGFicyUyMG1heCUyMCUyMG1ldGFkYXRhJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZW5jb2Rlci5ibG9jay4xLmxheWVyLjEuRGVuc2VSZWx1RGVuc2UuZHJvcG91dCUyMERyb3BvdXQlMEEwLjAwZSUyQjAwJTIwMi41N2UlMkIwMiUyMGlucHV0JTVCMCU1RCUwQTAuMDBlJTJCMDAlMjAyLjg1ZSUyQjAyJTIwb3V0cHV0JTBBJTVCLi4uJTVEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZW5jb2Rlci5ibG9jay4yLmxheWVyLjAlMjBUNUxheWVyU2VsZkF0dGVudGlvbiUwQTYuNzhlLTA0JTIwMy4xNWUlMkIwMyUyMGlucHV0JTVCMCU1RCUwQTIuNjVlLTA0JTIwMy40MmUlMkIwMyUyMG91dHB1dCU1QjAlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBOb25lJTIwb3V0cHV0JTVCMSU1RCUwQTIuMjVlLTAxJTIwMS4wMGUlMkIwNCUyMG91dHB1dCU1QjIlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBlbmNvZGVyLmJsb2NrLjIubGF5ZXIuMS5sYXllcl9ub3JtJTIwVDVMYXllck5vcm0lMEE4LjY5ZS0wMiUyMDQuMThlLTAxJTIwd2VpZ2h0JTBBMi42NWUtMDQlMjAzLjQyZSUyQjAzJTIwaW5wdXQlNUIwJTVEJTBBMS43OWUtMDYlMjA0LjY1ZSUyQjAwJTIwb3V0cHV0JTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZW5jb2Rlci5ibG9jay4yLmxheWVyLjEuRGVuc2VSZWx1RGVuc2Uud2lfMCUyMExpbmVhciUwQTIuMTdlLTA3JTIwNC41MGUlMkIwMCUyMHdlaWdodCUwQTEuNzllLTA2JTIwNC42NWUlMkIwMCUyMGlucHV0JTVCMCU1RCUwQTIuNjhlLTA2JTIwMy43MGUlMkIwMSUyMG91dHB1dCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGVuY29kZXIuYmxvY2suMi5sYXllci4xLkRlbnNlUmVsdURlbnNlLndpXzElMjBMaW5lYXIlMEE4LjA4ZS0wNyUyMDIuNjZlJTJCMDElMjB3ZWlnaHQlMEExLjc5ZS0wNiUyMDQuNjVlJTJCMDAlMjBpbnB1dCU1QjAlNUQlMEExLjI3ZS0wNCUyMDIuMzdlJTJCMDIlMjBvdXRwdXQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBlbmNvZGVyLmJsb2NrLjIubGF5ZXIuMS5EZW5zZVJlbHVEZW5zZS5kcm9wb3V0JTIwRHJvcG91dCUwQTAuMDBlJTJCMDAlMjA4Ljc2ZSUyQjAzJTIwaW5wdXQlNUIwJTVEJTBBMC4wMGUlMkIwMCUyMDkuNzRlJTJCMDMlMjBvdXRwdXQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBlbmNvZGVyLmJsb2NrLjIubGF5ZXIuMS5EZW5zZVJlbHVEZW5zZS53byUyMExpbmVhciUwQTEuMDFlLTA2JTIwNi40NGUlMkIwMCUyMHdlaWdodCUwQTAuMDBlJTJCMDAlMjA5Ljc0ZSUyQjAzJTIwaW5wdXQlNUIwJTVEJTBBMy4xOGUtMDQlMjA2LjI3ZSUyQjA0JTIwb3V0cHV0JTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZW5jb2Rlci5ibG9jay4yLmxheWVyLjEuRGVuc2VSZWx1RGVuc2UlMjBUNURlbnNlR2F0ZWRHZWx1RGVuc2UlMEExLjc5ZS0wNiUyMDQuNjVlJTJCMDAlMjBpbnB1dCU1QjAlNUQlMEEzLjE4ZS0wNCUyMDYuMjdlJTJCMDQlMjBvdXRwdXQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBlbmNvZGVyLmJsb2NrLjIubGF5ZXIuMS5kcm9wb3V0JTIwRHJvcG91dCUwQTMuMThlLTA0JTIwNi4yN2UlMkIwNCUyMGlucHV0JTVCMCU1RCUwQTAuMDBlJTJCMDAlMjAlMjAlMjAlMjAlMjAlMjBpbmYlMjBvdXRwdXQ=",highlighted:`<span class="hljs-attribute">Detected</span> inf/nan during batch_number=<span class="hljs-number">0</span>
<span class="hljs-attribute">Last</span> <span class="hljs-number">21</span> forward frames:
<span class="hljs-attribute">abs</span> min  abs max  metadata
                  <span class="hljs-attribute">encoder</span>.block.<span class="hljs-number">1</span>.layer.<span class="hljs-number">1</span>.DenseReluDense.dropout Dropout
<span class="hljs-attribute">0</span>.<span class="hljs-number">00</span>e+<span class="hljs-number">00</span> <span class="hljs-number">2</span>.<span class="hljs-number">57</span>e+<span class="hljs-number">02</span> input[<span class="hljs-number">0</span>]
<span class="hljs-attribute">0</span>.<span class="hljs-number">00</span>e+<span class="hljs-number">00</span> <span class="hljs-number">2</span>.<span class="hljs-number">85</span>e+<span class="hljs-number">02</span> output<span class="hljs-meta">
[...]</span>
                  <span class="hljs-attribute">encoder</span>.block.<span class="hljs-number">2</span>.layer.<span class="hljs-number">0</span> T5LayerSelfAttention
<span class="hljs-attribute">6</span>.<span class="hljs-number">78</span>e-<span class="hljs-number">04</span> <span class="hljs-number">3</span>.<span class="hljs-number">15</span>e+<span class="hljs-number">03</span> input[<span class="hljs-number">0</span>]
<span class="hljs-attribute">2</span>.<span class="hljs-number">65</span>e-<span class="hljs-number">04</span> <span class="hljs-number">3</span>.<span class="hljs-number">42</span>e+<span class="hljs-number">03</span> output[<span class="hljs-number">0</span>]
             <span class="hljs-attribute">None</span> output[<span class="hljs-number">1</span>]
<span class="hljs-attribute">2</span>.<span class="hljs-number">25</span>e-<span class="hljs-number">01</span> <span class="hljs-number">1</span>.<span class="hljs-number">00</span>e+<span class="hljs-number">04</span> output[<span class="hljs-number">2</span>]
                  <span class="hljs-attribute">encoder</span>.block.<span class="hljs-number">2</span>.layer.<span class="hljs-number">1</span>.layer_norm T5LayerNorm
<span class="hljs-attribute">8</span>.<span class="hljs-number">69</span>e-<span class="hljs-number">02</span> <span class="hljs-number">4</span>.<span class="hljs-number">18</span>e-<span class="hljs-number">01</span> weight
<span class="hljs-attribute">2</span>.<span class="hljs-number">65</span>e-<span class="hljs-number">04</span> <span class="hljs-number">3</span>.<span class="hljs-number">42</span>e+<span class="hljs-number">03</span> input[<span class="hljs-number">0</span>]
<span class="hljs-attribute">1</span>.<span class="hljs-number">79</span>e-<span class="hljs-number">06</span> <span class="hljs-number">4</span>.<span class="hljs-number">65</span>e+<span class="hljs-number">00</span> output
                  <span class="hljs-attribute">encoder</span>.block.<span class="hljs-number">2</span>.layer.<span class="hljs-number">1</span>.DenseReluDense.wi_0 Linear
<span class="hljs-attribute">2</span>.<span class="hljs-number">17</span>e-<span class="hljs-number">07</span> <span class="hljs-number">4</span>.<span class="hljs-number">50</span>e+<span class="hljs-number">00</span> weight
<span class="hljs-attribute">1</span>.<span class="hljs-number">79</span>e-<span class="hljs-number">06</span> <span class="hljs-number">4</span>.<span class="hljs-number">65</span>e+<span class="hljs-number">00</span> input[<span class="hljs-number">0</span>]
<span class="hljs-attribute">2</span>.<span class="hljs-number">68</span>e-<span class="hljs-number">06</span> <span class="hljs-number">3</span>.<span class="hljs-number">70</span>e+<span class="hljs-number">01</span> output
                  <span class="hljs-attribute">encoder</span>.block.<span class="hljs-number">2</span>.layer.<span class="hljs-number">1</span>.DenseReluDense.wi_1 Linear
<span class="hljs-attribute">8</span>.<span class="hljs-number">08</span>e-<span class="hljs-number">07</span> <span class="hljs-number">2</span>.<span class="hljs-number">66</span>e+<span class="hljs-number">01</span> weight
<span class="hljs-attribute">1</span>.<span class="hljs-number">79</span>e-<span class="hljs-number">06</span> <span class="hljs-number">4</span>.<span class="hljs-number">65</span>e+<span class="hljs-number">00</span> input[<span class="hljs-number">0</span>]
<span class="hljs-attribute">1</span>.<span class="hljs-number">27</span>e-<span class="hljs-number">04</span> <span class="hljs-number">2</span>.<span class="hljs-number">37</span>e+<span class="hljs-number">02</span> output
                  <span class="hljs-attribute">encoder</span>.block.<span class="hljs-number">2</span>.layer.<span class="hljs-number">1</span>.DenseReluDense.dropout Dropout
<span class="hljs-attribute">0</span>.<span class="hljs-number">00</span>e+<span class="hljs-number">00</span> <span class="hljs-number">8</span>.<span class="hljs-number">76</span>e+<span class="hljs-number">03</span> input[<span class="hljs-number">0</span>]
<span class="hljs-attribute">0</span>.<span class="hljs-number">00</span>e+<span class="hljs-number">00</span> <span class="hljs-number">9</span>.<span class="hljs-number">74</span>e+<span class="hljs-number">03</span> output
                  <span class="hljs-attribute">encoder</span>.block.<span class="hljs-number">2</span>.layer.<span class="hljs-number">1</span>.DenseReluDense.wo Linear
<span class="hljs-attribute">1</span>.<span class="hljs-number">01</span>e-<span class="hljs-number">06</span> <span class="hljs-number">6</span>.<span class="hljs-number">44</span>e+<span class="hljs-number">00</span> weight
<span class="hljs-attribute">0</span>.<span class="hljs-number">00</span>e+<span class="hljs-number">00</span> <span class="hljs-number">9</span>.<span class="hljs-number">74</span>e+<span class="hljs-number">03</span> input[<span class="hljs-number">0</span>]
<span class="hljs-attribute">3</span>.<span class="hljs-number">18</span>e-<span class="hljs-number">04</span> <span class="hljs-number">6</span>.<span class="hljs-number">27</span>e+<span class="hljs-number">04</span> output
                  <span class="hljs-attribute">encoder</span>.block.<span class="hljs-number">2</span>.layer.<span class="hljs-number">1</span>.DenseReluDense T5DenseGatedGeluDense
<span class="hljs-attribute">1</span>.<span class="hljs-number">79</span>e-<span class="hljs-number">06</span> <span class="hljs-number">4</span>.<span class="hljs-number">65</span>e+<span class="hljs-number">00</span> input[<span class="hljs-number">0</span>]
<span class="hljs-attribute">3</span>.<span class="hljs-number">18</span>e-<span class="hljs-number">04</span> <span class="hljs-number">6</span>.<span class="hljs-number">27</span>e+<span class="hljs-number">04</span> output
                  <span class="hljs-attribute">encoder</span>.block.<span class="hljs-number">2</span>.layer.<span class="hljs-number">1</span>.dropout Dropout
<span class="hljs-attribute">3</span>.<span class="hljs-number">18</span>e-<span class="hljs-number">04</span> <span class="hljs-number">6</span>.<span class="hljs-number">27</span>e+<span class="hljs-number">04</span> input[<span class="hljs-number">0</span>]
<span class="hljs-attribute">0</span>.<span class="hljs-number">00</span>e+<span class="hljs-number">00</span>      inf output`,wrap:!1}}),F=new b({props:{code:"JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZW5jb2Rlci5ibG9jay4yLmxheWVyLjEubGF5ZXJfbm9ybSUyMFQ1TGF5ZXJOb3JtJTBBOC42OWUtMDIlMjA0LjE4ZS0wMSUyMHdlaWdodCUwQTIuNjVlLTA0JTIwMy40MmUlMkIwMyUyMGlucHV0JTVCMCU1RCUwQTEuNzllLTA2JTIwNC42NWUlMkIwMCUyMG91dHB1dA==",highlighted:`                  <span class="hljs-attribute">encoder</span>.block.<span class="hljs-number">2</span>.layer.<span class="hljs-number">1</span>.layer_norm T5LayerNorm
<span class="hljs-attribute">8</span>.<span class="hljs-number">69</span>e-<span class="hljs-number">02</span> <span class="hljs-number">4</span>.<span class="hljs-number">18</span>e-<span class="hljs-number">01</span> weight
<span class="hljs-attribute">2</span>.<span class="hljs-number">65</span>e-<span class="hljs-number">04</span> <span class="hljs-number">3</span>.<span class="hljs-number">42</span>e+<span class="hljs-number">03</span> input[<span class="hljs-number">0</span>]
<span class="hljs-attribute">1</span>.<span class="hljs-number">79</span>e-<span class="hljs-number">06</span> <span class="hljs-number">4</span>.<span class="hljs-number">65</span>e+<span class="hljs-number">00</span> output`,wrap:!1}}),K=new b({props:{code:"RGV0ZWN0ZWQlMjBpbmYlMkZuYW4lMjBkdXJpbmclMjBiYXRjaF9udW1iZXIlM0QwJTBBTGFzdCUyMDIxJTIwZm9yd2FyZCUyMGZyYW1lcyUzQSUwQWFicyUyMG1pbiUyMCUyMGFicyUyMG1heCUyMCUyMG1ldGFkYXRhJTBBJTVCLi4uJTVEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZW5jb2Rlci5ibG9jay4yLmxheWVyLjEuRGVuc2VSZWx1RGVuc2Uud2lfMCUyMExpbmVhciUwQTIuMTdlLTA3JTIwNC41MGUlMkIwMCUyMHdlaWdodCUwQTEuNzllLTA2JTIwNC42NWUlMkIwMCUyMGlucHV0JTVCMCU1RCUwQTIuNjhlLTA2JTIwMy43MGUlMkIwMSUyMG91dHB1dCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGVuY29kZXIuYmxvY2suMi5sYXllci4xLkRlbnNlUmVsdURlbnNlLndpXzElMjBMaW5lYXIlMEE4LjA4ZS0wNyUyMDIuNjZlJTJCMDElMjB3ZWlnaHQlMEExLjc5ZS0wNiUyMDQuNjVlJTJCMDAlMjBpbnB1dCU1QjAlNUQlMEExLjI3ZS0wNCUyMDIuMzdlJTJCMDIlMjBvdXRwdXQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBlbmNvZGVyLmJsb2NrLjIubGF5ZXIuMS5EZW5zZVJlbHVEZW5zZS53byUyMExpbmVhciUwQTEuMDFlLTA2JTIwNi40NGUlMkIwMCUyMHdlaWdodCUwQTAuMDBlJTJCMDAlMjA5Ljc0ZSUyQjAzJTIwaW5wdXQlNUIwJTVEJTBBMy4xOGUtMDQlMjA2LjI3ZSUyQjA0JTIwb3V0cHV0JTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZW5jb2Rlci5ibG9jay4yLmxheWVyLjEuRGVuc2VSZWx1RGVuc2UlMjBUNURlbnNlR2F0ZWRHZWx1RGVuc2UlMEExLjc5ZS0wNiUyMDQuNjVlJTJCMDAlMjBpbnB1dCU1QjAlNUQlMEEzLjE4ZS0wNCUyMDYuMjdlJTJCMDQlMjBvdXRwdXQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBlbmNvZGVyLmJsb2NrLjIubGF5ZXIuMS5kcm9wb3V0JTIwRHJvcG91dCUwQTMuMThlLTA0JTIwNi4yN2UlMkIwNCUyMGlucHV0JTVCMCU1RCUwQTAuMDBlJTJCMDAlMjAlMjAlMjAlMjAlMjAlMjBpbmYlMjBvdXRwdXQ=",highlighted:`<span class="hljs-attribute">Detected</span> inf/nan during batch_number=<span class="hljs-number">0</span>
<span class="hljs-attribute">Last</span> <span class="hljs-number">21</span> forward frames:
<span class="hljs-attribute">abs</span> min  abs max  metadata<span class="hljs-meta">
[...]</span>
                  <span class="hljs-attribute">encoder</span>.block.<span class="hljs-number">2</span>.layer.<span class="hljs-number">1</span>.DenseReluDense.wi_0 Linear
<span class="hljs-attribute">2</span>.<span class="hljs-number">17</span>e-<span class="hljs-number">07</span> <span class="hljs-number">4</span>.<span class="hljs-number">50</span>e+<span class="hljs-number">00</span> weight
<span class="hljs-attribute">1</span>.<span class="hljs-number">79</span>e-<span class="hljs-number">06</span> <span class="hljs-number">4</span>.<span class="hljs-number">65</span>e+<span class="hljs-number">00</span> input[<span class="hljs-number">0</span>]
<span class="hljs-attribute">2</span>.<span class="hljs-number">68</span>e-<span class="hljs-number">06</span> <span class="hljs-number">3</span>.<span class="hljs-number">70</span>e+<span class="hljs-number">01</span> output
                  <span class="hljs-attribute">encoder</span>.block.<span class="hljs-number">2</span>.layer.<span class="hljs-number">1</span>.DenseReluDense.wi_1 Linear
<span class="hljs-attribute">8</span>.<span class="hljs-number">08</span>e-<span class="hljs-number">07</span> <span class="hljs-number">2</span>.<span class="hljs-number">66</span>e+<span class="hljs-number">01</span> weight
<span class="hljs-attribute">1</span>.<span class="hljs-number">79</span>e-<span class="hljs-number">06</span> <span class="hljs-number">4</span>.<span class="hljs-number">65</span>e+<span class="hljs-number">00</span> input[<span class="hljs-number">0</span>]
<span class="hljs-attribute">1</span>.<span class="hljs-number">27</span>e-<span class="hljs-number">04</span> <span class="hljs-number">2</span>.<span class="hljs-number">37</span>e+<span class="hljs-number">02</span> output
                  <span class="hljs-attribute">encoder</span>.block.<span class="hljs-number">2</span>.layer.<span class="hljs-number">1</span>.DenseReluDense.wo Linear
<span class="hljs-attribute">1</span>.<span class="hljs-number">01</span>e-<span class="hljs-number">06</span> <span class="hljs-number">6</span>.<span class="hljs-number">44</span>e+<span class="hljs-number">00</span> weight
<span class="hljs-attribute">0</span>.<span class="hljs-number">00</span>e+<span class="hljs-number">00</span> <span class="hljs-number">9</span>.<span class="hljs-number">74</span>e+<span class="hljs-number">03</span> input[<span class="hljs-number">0</span>]
<span class="hljs-attribute">3</span>.<span class="hljs-number">18</span>e-<span class="hljs-number">04</span> <span class="hljs-number">6</span>.<span class="hljs-number">27</span>e+<span class="hljs-number">04</span> output
                  <span class="hljs-attribute">encoder</span>.block.<span class="hljs-number">2</span>.layer.<span class="hljs-number">1</span>.DenseReluDense T5DenseGatedGeluDense
<span class="hljs-attribute">1</span>.<span class="hljs-number">79</span>e-<span class="hljs-number">06</span> <span class="hljs-number">4</span>.<span class="hljs-number">65</span>e+<span class="hljs-number">00</span> input[<span class="hljs-number">0</span>]
<span class="hljs-attribute">3</span>.<span class="hljs-number">18</span>e-<span class="hljs-number">04</span> <span class="hljs-number">6</span>.<span class="hljs-number">27</span>e+<span class="hljs-number">04</span> output
                  <span class="hljs-attribute">encoder</span>.block.<span class="hljs-number">2</span>.layer.<span class="hljs-number">1</span>.dropout Dropout
<span class="hljs-attribute">3</span>.<span class="hljs-number">18</span>e-<span class="hljs-number">04</span> <span class="hljs-number">6</span>.<span class="hljs-number">27</span>e+<span class="hljs-number">04</span> input[<span class="hljs-number">0</span>]
<span class="hljs-attribute">0</span>.<span class="hljs-number">00</span>e+<span class="hljs-number">00</span>      inf output`,wrap:!1}}),as=new b({props:{code:"Y2xhc3MlMjBUNURlbnNlR2F0ZWRHZWx1RGVuc2Uobm4uTW9kdWxlKSUzQSUwQSUyMCUyMCUyMCUyMGRlZiUyMF9faW5pdF9fKHNlbGYlMkMlMjBjb25maWcpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3VwZXIoKS5fX2luaXRfXygpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZi53aV8wJTIwJTNEJTIwbm4uTGluZWFyKGNvbmZpZy5kX21vZGVsJTJDJTIwY29uZmlnLmRfZmYlMkMlMjBiaWFzJTNERmFsc2UpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZi53aV8xJTIwJTNEJTIwbm4uTGluZWFyKGNvbmZpZy5kX21vZGVsJTJDJTIwY29uZmlnLmRfZmYlMkMlMjBiaWFzJTNERmFsc2UpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZi53byUyMCUzRCUyMG5uLkxpbmVhcihjb25maWcuZF9mZiUyQyUyMGNvbmZpZy5kX21vZGVsJTJDJTIwYmlhcyUzREZhbHNlKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNlbGYuZHJvcG91dCUyMCUzRCUyMG5uLkRyb3BvdXQoY29uZmlnLmRyb3BvdXRfcmF0ZSklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzZWxmLmdlbHVfYWN0JTIwJTNEJTIwQUNUMkZOJTVCJTIyZ2VsdV9uZXclMjIlNUQlMEElMEElMjAlMjAlMjAlMjBkZWYlMjBmb3J3YXJkKHNlbGYlMkMlMjBoaWRkZW5fc3RhdGVzKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGhpZGRlbl9nZWx1JTIwJTNEJTIwc2VsZi5nZWx1X2FjdChzZWxmLndpXzAoaGlkZGVuX3N0YXRlcykpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaGlkZGVuX2xpbmVhciUyMCUzRCUyMHNlbGYud2lfMShoaWRkZW5fc3RhdGVzKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGhpZGRlbl9zdGF0ZXMlMjAlM0QlMjBoaWRkZW5fZ2VsdSUyMColMjBoaWRkZW5fbGluZWFyJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaGlkZGVuX3N0YXRlcyUyMCUzRCUyMHNlbGYuZHJvcG91dChoaWRkZW5fc3RhdGVzKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGhpZGRlbl9zdGF0ZXMlMjAlM0QlMjBzZWxmLndvKGhpZGRlbl9zdGF0ZXMpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwaGlkZGVuX3N0YXRlcw==",highlighted:`<span class="hljs-keyword">class</span> <span class="hljs-title class_">T5DenseGatedGeluDense</span>(nn.Module):
    <span class="hljs-keyword">def</span> <span class="hljs-title function_">__init__</span>(<span class="hljs-params">self, config</span>):
        <span class="hljs-built_in">super</span>().__init__()
        self.wi_0 = nn.Linear(config.d_model, config.d_ff, bias=<span class="hljs-literal">False</span>)
        self.wi_1 = nn.Linear(config.d_model, config.d_ff, bias=<span class="hljs-literal">False</span>)
        self.wo = nn.Linear(config.d_ff, config.d_model, bias=<span class="hljs-literal">False</span>)
        self.dropout = nn.Dropout(config.dropout_rate)
        self.gelu_act = ACT2FN[<span class="hljs-string">&quot;gelu_new&quot;</span>]

    <span class="hljs-keyword">def</span> <span class="hljs-title function_">forward</span>(<span class="hljs-params">self, hidden_states</span>):
        hidden_gelu = self.gelu_act(self.wi_0(hidden_states))
        hidden_linear = self.wi_1(hidden_states)
        hidden_states = hidden_gelu * hidden_linear
        hidden_states = self.dropout(hidden_states)
        hidden_states = self.wo(hidden_states)
        <span class="hljs-keyword">return</span> hidden_states`,wrap:!1}}),rs=new b({props:{code:"ZGVmJTIwX2ZvcndhcmQoc2VsZiUyQyUyMGhpZGRlbl9zdGF0ZXMpJTNBJTBBJTIwJTIwJTIwJTIwaGlkZGVuX2dlbHUlMjAlM0QlMjBzZWxmLmdlbHVfYWN0KHNlbGYud2lfMChoaWRkZW5fc3RhdGVzKSklMEElMjAlMjAlMjAlMjBoaWRkZW5fbGluZWFyJTIwJTNEJTIwc2VsZi53aV8xKGhpZGRlbl9zdGF0ZXMpJTBBJTIwJTIwJTIwJTIwaGlkZGVuX3N0YXRlcyUyMCUzRCUyMGhpZGRlbl9nZWx1JTIwKiUyMGhpZGRlbl9saW5lYXIlMEElMjAlMjAlMjAlMjBoaWRkZW5fc3RhdGVzJTIwJTNEJTIwc2VsZi5kcm9wb3V0KGhpZGRlbl9zdGF0ZXMpJTBBJTIwJTIwJTIwJTIwaGlkZGVuX3N0YXRlcyUyMCUzRCUyMHNlbGYud28oaGlkZGVuX3N0YXRlcyklMEElMjAlMjAlMjAlMjByZXR1cm4lMjBoaWRkZW5fc3RhdGVzJTBBJTBBJTBBaW1wb3J0JTIwdG9yY2glMEElMEElMEFkZWYlMjBmb3J3YXJkKHNlbGYlMkMlMjBoaWRkZW5fc3RhdGVzKSUzQSUwQSUyMCUyMCUyMCUyMGlmJTIwdG9yY2guaXNfYXV0b2Nhc3RfZW5hYmxlZCgpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwd2l0aCUyMHRvcmNoLmN1ZGEuYW1wLmF1dG9jYXN0KGVuYWJsZWQlM0RGYWxzZSklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBzZWxmLl9mb3J3YXJkKGhpZGRlbl9zdGF0ZXMpJTBBJTIwJTIwJTIwJTIwZWxzZSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMHNlbGYuX2ZvcndhcmQoaGlkZGVuX3N0YXRlcyk=",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">_forward</span>(<span class="hljs-params">self, hidden_states</span>):
    hidden_gelu = self.gelu_act(self.wi_0(hidden_states))
    hidden_linear = self.wi_1(hidden_states)
    hidden_states = hidden_gelu * hidden_linear
    hidden_states = self.dropout(hidden_states)
    hidden_states = self.wo(hidden_states)
    <span class="hljs-keyword">return</span> hidden_states


<span class="hljs-keyword">import</span> torch


<span class="hljs-keyword">def</span> <span class="hljs-title function_">forward</span>(<span class="hljs-params">self, hidden_states</span>):
    <span class="hljs-keyword">if</span> torch.is_autocast_enabled():
        <span class="hljs-keyword">with</span> torch.cuda.amp.autocast(enabled=<span class="hljs-literal">False</span>):
            <span class="hljs-keyword">return</span> self._forward(hidden_states)
    <span class="hljs-keyword">else</span>:
        <span class="hljs-keyword">return</span> self._forward(hidden_states)`,wrap:!1}}),cs=new b({props:{code:"ZnJvbSUyMGRlYnVnX3V0aWxzJTIwaW1wb3J0JTIwZGV0ZWN0X292ZXJmbG93JTBBJTBBJTBBY2xhc3MlMjBUNUxheWVyRkYobm4uTW9kdWxlKSUzQSUwQSUyMCUyMCUyMCUyMCU1Qi4uLiU1RCUwQSUwQSUyMCUyMCUyMCUyMGRlZiUyMGZvcndhcmQoc2VsZiUyQyUyMGhpZGRlbl9zdGF0ZXMpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZm9yd2FyZGVkX3N0YXRlcyUyMCUzRCUyMHNlbGYubGF5ZXJfbm9ybShoaWRkZW5fc3RhdGVzKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGRldGVjdF9vdmVyZmxvdyhmb3J3YXJkZWRfc3RhdGVzJTJDJTIwJTIyYWZ0ZXIlMjBsYXllcl9ub3JtJTIyKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZvcndhcmRlZF9zdGF0ZXMlMjAlM0QlMjBzZWxmLkRlbnNlUmVsdURlbnNlKGZvcndhcmRlZF9zdGF0ZXMpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZGV0ZWN0X292ZXJmbG93KGZvcndhcmRlZF9zdGF0ZXMlMkMlMjAlMjJhZnRlciUyMERlbnNlUmVsdURlbnNlJTIyKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMGhpZGRlbl9zdGF0ZXMlMjAlMkIlMjBzZWxmLmRyb3BvdXQoZm9yd2FyZGVkX3N0YXRlcyk=",highlighted:`<span class="hljs-keyword">from</span> debug_utils <span class="hljs-keyword">import</span> detect_overflow


<span class="hljs-keyword">class</span> <span class="hljs-title class_">T5LayerFF</span>(nn.Module):
    [...]

    <span class="hljs-keyword">def</span> <span class="hljs-title function_">forward</span>(<span class="hljs-params">self, hidden_states</span>):
        forwarded_states = self.layer_norm(hidden_states)
        detect_overflow(forwarded_states, <span class="hljs-string">&quot;after layer_norm&quot;</span>)
        forwarded_states = self.DenseReluDense(forwarded_states)
        detect_overflow(forwarded_states, <span class="hljs-string">&quot;after DenseReluDense&quot;</span>)
        <span class="hljs-keyword">return</span> hidden_states + self.dropout(forwarded_states)`,wrap:!1}}),is=new b({props:{code:"ZnJvbSUyMC5kZWJ1Z191dGlscyUyMGltcG9ydCUyMERlYnVnVW5kZXJmbG93T3ZlcmZsb3clMEElMEFkZWJ1Z19vdmVyZmxvdyUyMCUzRCUyMERlYnVnVW5kZXJmbG93T3ZlcmZsb3cobW9kZWwlMkMlMjBtYXhfZnJhbWVzX3RvX3NhdmUlM0QxMDAp",highlighted:`<span class="hljs-keyword">from</span> .debug_utils <span class="hljs-keyword">import</span> DebugUnderflowOverflow

debug_overflow = DebugUnderflowOverflow(model, max_frames_to_save=<span class="hljs-number">100</span>)`,wrap:!1}}),ds=new Re({props:{title:"Rastreo de valores mínimos y máximos absolutos de batches específicos",local:"rastreo-de-valores-mínimos-y-máximos-absolutos-de-batches-específicos",headingTag:"h3"}}),bs=new b({props:{code:"ZGVidWdfb3ZlcmZsb3clMjAlM0QlMjBEZWJ1Z1VuZGVyZmxvd092ZXJmbG93KG1vZGVsJTJDJTIwdHJhY2VfYmF0Y2hfbnVtcyUzRCU1QjElMkMlMjAzJTVEKQ==",highlighted:'debug_overflow = DebugUnderflowOverflow(model, trace_batch_nums=[<span class="hljs-number">1</span>, <span class="hljs-number">3</span>])',wrap:!1}}),ys=new b({props:{code:"JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKioqJTIwU3RhcnRpbmclMjBiYXRjaCUyMG51bWJlciUzRDElMjAqKiolMEFhYnMlMjBtaW4lMjAlMjBhYnMlMjBtYXglMjAlMjBtZXRhZGF0YSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNoYXJlZCUyMEVtYmVkZGluZyUwQTEuMDFlLTA2JTIwNy45MmUlMkIwMiUyMHdlaWdodCUwQTAuMDBlJTJCMDAlMjAyLjQ3ZSUyQjA0JTIwaW5wdXQlNUIwJTVEJTBBNS4zNmUtMDUlMjA3LjkyZSUyQjAyJTIwb3V0cHV0JTBBJTVCLi4uJTVEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZGVjb2Rlci5kcm9wb3V0JTIwRHJvcG91dCUwQTEuNjBlLTA3JTIwMi4yN2UlMkIwMSUyMGlucHV0JTVCMCU1RCUwQTAuMDBlJTJCMDAlMjAyLjUyZSUyQjAxJTIwb3V0cHV0JTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZGVjb2RlciUyMFQ1U3RhY2slMEElMjAlMjAlMjAlMjAlMjBub3QlMjBhJTIwdGVuc29yJTIwb3V0cHV0JTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbG1faGVhZCUyMExpbmVhciUwQTEuMDFlLTA2JTIwNy45MmUlMkIwMiUyMHdlaWdodCUwQTAuMDBlJTJCMDAlMjAxLjExZSUyQjAwJTIwaW5wdXQlNUIwJTVEJTBBNi4wNmUtMDIlMjA4LjM5ZSUyQjAxJTIwb3V0cHV0JTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwVDVGb3JDb25kaXRpb25hbEdlbmVyYXRpb24lMEElMjAlMjAlMjAlMjAlMjBub3QlMjBhJTIwdGVuc29yJTIwb3V0cHV0JTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKioqJTIwU3RhcnRpbmclMjBiYXRjaCUyMG51bWJlciUzRDMlMjAqKiolMEFhYnMlMjBtaW4lMjAlMjBhYnMlMjBtYXglMjAlMjBtZXRhZGF0YSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNoYXJlZCUyMEVtYmVkZGluZyUwQTEuMDFlLTA2JTIwNy45MmUlMkIwMiUyMHdlaWdodCUwQTAuMDBlJTJCMDAlMjAyLjc4ZSUyQjA0JTIwaW5wdXQlNUIwJTVEJTBBNS4zNmUtMDUlMjA3LjkyZSUyQjAyJTIwb3V0cHV0JTBBJTVCLi4uJTVE",highlighted:`                  *** Starting batch number=1 ***
abs min  abs max  metadata
                  shared Embedding
1.01e<span class="hljs-string">-06</span> 7.92e<span class="hljs-string">+02</span> weight
0.00e<span class="hljs-string">+00</span> 2.47e<span class="hljs-string">+04</span> input[0]
5.36e<span class="hljs-string">-05</span> 7.92e<span class="hljs-string">+02</span> output
[...]
                  decoder.dropout Dropout
1.60e<span class="hljs-string">-07</span> 2.27e<span class="hljs-string">+01</span> input[0]
0.00e<span class="hljs-string">+00</span> 2.52e<span class="hljs-string">+01</span> output
                  decoder T5Stack
     not a tensor output
                  lm_head Linear
1.01e<span class="hljs-string">-06</span> 7.92e<span class="hljs-string">+02</span> weight
0.00e<span class="hljs-string">+00</span> 1.11e<span class="hljs-string">+00</span> input[0]
6.06e<span class="hljs-string">-02</span> 8.39e<span class="hljs-string">+01</span> output
                   T5ForConditionalGeneration
     not a tensor output

                  *** Starting batch number=3 ***
abs min  abs max  metadata
                  shared Embedding
1.01e<span class="hljs-string">-06</span> 7.92e<span class="hljs-string">+02</span> weight
0.00e<span class="hljs-string">+00</span> 2.78e<span class="hljs-string">+04</span> input[0]
5.36e<span class="hljs-string">-05</span> 7.92e<span class="hljs-string">+02</span> output
[...]`,wrap:!1}}),fs=new b({props:{code:"ZGVidWdfb3ZlcmZsb3clMjAlM0QlMjBEZWJ1Z1VuZGVyZmxvd092ZXJmbG93KG1vZGVsJTJDJTIwdHJhY2VfYmF0Y2hfbnVtcyUzRCU1QjElMkMlMjAzJTVEJTJDJTIwYWJvcnRfYWZ0ZXJfYmF0Y2hfbnVtJTNEMyk=",highlighted:'debug_overflow = DebugUnderflowOverflow(model, trace_batch_nums=[<span class="hljs-number">1</span>, <span class="hljs-number">3</span>], abort_after_batch_num=<span class="hljs-number">3</span>)',wrap:!1}}),Cs=new vl({props:{source:"https://github.com/huggingface/transformers/blob/main/docs/source/es/debugging.md"}}),{c(){c=p("meta"),T=n(),o=p("p"),J=n(),m(f.$$.fragment),As=n(),m(C.$$.fragment),Gs=n(),Z=p("p"),Z.innerHTML=_e,vs=n(),m(A.$$.fragment),Vs=n(),G=p("p"),G.textContent=Le,Bs=n(),m(v.$$.fragment),$s=n(),V=p("p"),V.textContent=Ne,Rs=n(),B=p("p"),B.textContent=We,ks=n(),$=p("p"),$.textContent=xe,gs=n(),R=p("p"),R.innerHTML=Ee,_s=n(),m(k.$$.fragment),Ls=n(),g=p("p"),g.textContent=Xe,Ns=n(),m(_.$$.fragment),Ws=n(),m(y.$$.fragment),xs=n(),m(I.$$.fragment),Es=n(),m(U.$$.fragment),Xs=n(),L=p("p"),L.innerHTML=Qe,Qs=n(),N=p("p"),N.innerHTML=De,Ds=n(),m(W.$$.fragment),Hs=n(),x=p("p"),x.innerHTML=He,Ss=n(),E=p("p"),E.textContent=Se,Ys=n(),m(X.$$.fragment),zs=n(),Q=p("p"),Q.innerHTML=Ye,Fs=n(),m(D.$$.fragment),qs=n(),H=p("p"),H.textContent=ze,Ps=n(),S=p("p"),S.innerHTML=Fe,Ks=n(),Y=p("p"),Y.innerHTML=qe,Os=n(),z=p("p"),z.textContent=Pe,se=n(),m(F.$$.fragment),ee=n(),q=p("p"),q.innerHTML=Ke,le=n(),P=p("p"),P.textContent=Oe,ae=n(),m(K.$$.fragment),ne=n(),O=p("p"),O.innerHTML=sl,te=n(),ss=p("p"),ss.innerHTML=el,pe=n(),es=p("p"),es.textContent=ll,re=n(),ls=p("p"),ls.innerHTML=al,ue=n(),m(as.$$.fragment),ce=n(),ns=p("p"),ns.innerHTML=nl,oe=n(),ts=p("p"),ts.innerHTML=tl,me=n(),ps=p("p"),ps.innerHTML=pl,Me=n(),m(rs.$$.fragment),ie=n(),us=p("p"),us.innerHTML=rl,de=n(),m(cs.$$.fragment),je=n(),os=p("p"),os.innerHTML=ul,we=n(),ms=p("p"),ms.innerHTML=cl,be=n(),Ms=p("p"),Ms.textContent=ol,Te=n(),m(is.$$.fragment),Je=n(),m(ds.$$.fragment),he=n(),js=p("p"),js.textContent=ml,ye=n(),ws=p("p"),ws.innerHTML=Ml,Ie=n(),m(bs.$$.fragment),Ue=n(),Ts=p("p"),Ts.textContent=il,fe=n(),Js=p("p"),Js.textContent=dl,Ce=n(),hs=p("p"),hs.textContent=jl,Ze=n(),m(ys.$$.fragment),Ae=n(),Is=p("p"),Is.textContent=wl,Ge=n(),Us=p("p"),Us.textContent=bl,ve=n(),m(fs.$$.fragment),Ve=n(),m(Cs.$$.fragment),Be=n(),Zs=p("p"),this.h()},l(s){const e=Al("svelte-u9bgzb",document.head);c=r(e,"META",{name:!0,content:!0}),e.forEach(l),T=t(s),o=r(s,"P",{}),yl(o).forEach(l),J=t(s),M(f.$$.fragment,s),As=t(s),M(C.$$.fragment,s),Gs=t(s),Z=r(s,"P",{"data-svelte-h":!0}),u(Z)!=="svelte-b2gmoe"&&(Z.innerHTML=_e),vs=t(s),M(A.$$.fragment,s),Vs=t(s),G=r(s,"P",{"data-svelte-h":!0}),u(G)!=="svelte-1936y28"&&(G.textContent=Le),Bs=t(s),M(v.$$.fragment,s),$s=t(s),V=r(s,"P",{"data-svelte-h":!0}),u(V)!=="svelte-1m3rn6q"&&(V.textContent=Ne),Rs=t(s),B=r(s,"P",{"data-svelte-h":!0}),u(B)!=="svelte-1qjrb86"&&(B.textContent=We),ks=t(s),$=r(s,"P",{"data-svelte-h":!0}),u($)!=="svelte-1ku6vfi"&&($.textContent=xe),gs=t(s),R=r(s,"P",{"data-svelte-h":!0}),u(R)!=="svelte-deyufk"&&(R.innerHTML=Ee),_s=t(s),M(k.$$.fragment,s),Ls=t(s),g=r(s,"P",{"data-svelte-h":!0}),u(g)!=="svelte-114ng1i"&&(g.textContent=Xe),Ns=t(s),M(_.$$.fragment,s),Ws=t(s),M(y.$$.fragment,s),xs=t(s),M(I.$$.fragment,s),Es=t(s),M(U.$$.fragment,s),Xs=t(s),L=r(s,"P",{"data-svelte-h":!0}),u(L)!=="svelte-7sit9h"&&(L.innerHTML=Qe),Qs=t(s),N=r(s,"P",{"data-svelte-h":!0}),u(N)!=="svelte-j3cpcs"&&(N.innerHTML=De),Ds=t(s),M(W.$$.fragment,s),Hs=t(s),x=r(s,"P",{"data-svelte-h":!0}),u(x)!=="svelte-15ev0q2"&&(x.innerHTML=He),Ss=t(s),E=r(s,"P",{"data-svelte-h":!0}),u(E)!=="svelte-wqtp9c"&&(E.textContent=Se),Ys=t(s),M(X.$$.fragment,s),zs=t(s),Q=r(s,"P",{"data-svelte-h":!0}),u(Q)!=="svelte-1jo5kre"&&(Q.innerHTML=Ye),Fs=t(s),M(D.$$.fragment,s),qs=t(s),H=r(s,"P",{"data-svelte-h":!0}),u(H)!=="svelte-x04aaj"&&(H.textContent=ze),Ps=t(s),S=r(s,"P",{"data-svelte-h":!0}),u(S)!=="svelte-4r89ln"&&(S.innerHTML=Fe),Ks=t(s),Y=r(s,"P",{"data-svelte-h":!0}),u(Y)!=="svelte-6zf2z9"&&(Y.innerHTML=qe),Os=t(s),z=r(s,"P",{"data-svelte-h":!0}),u(z)!=="svelte-1opunmv"&&(z.textContent=Pe),se=t(s),M(F.$$.fragment,s),ee=t(s),q=r(s,"P",{"data-svelte-h":!0}),u(q)!=="svelte-dwkjw4"&&(q.innerHTML=Ke),le=t(s),P=r(s,"P",{"data-svelte-h":!0}),u(P)!=="svelte-1l806z7"&&(P.textContent=Oe),ae=t(s),M(K.$$.fragment,s),ne=t(s),O=r(s,"P",{"data-svelte-h":!0}),u(O)!=="svelte-15sbs2p"&&(O.innerHTML=sl),te=t(s),ss=r(s,"P",{"data-svelte-h":!0}),u(ss)!=="svelte-1h0cfpa"&&(ss.innerHTML=el),pe=t(s),es=r(s,"P",{"data-svelte-h":!0}),u(es)!=="svelte-6rkr7t"&&(es.textContent=ll),re=t(s),ls=r(s,"P",{"data-svelte-h":!0}),u(ls)!=="svelte-1odtud2"&&(ls.innerHTML=al),ue=t(s),M(as.$$.fragment,s),ce=t(s),ns=r(s,"P",{"data-svelte-h":!0}),u(ns)!=="svelte-pypfv9"&&(ns.innerHTML=nl),oe=t(s),ts=r(s,"P",{"data-svelte-h":!0}),u(ts)!=="svelte-14ofdnz"&&(ts.innerHTML=tl),me=t(s),ps=r(s,"P",{"data-svelte-h":!0}),u(ps)!=="svelte-p0ujj7"&&(ps.innerHTML=pl),Me=t(s),M(rs.$$.fragment,s),ie=t(s),us=r(s,"P",{"data-svelte-h":!0}),u(us)!=="svelte-1nnn3eq"&&(us.innerHTML=rl),de=t(s),M(cs.$$.fragment,s),je=t(s),os=r(s,"P",{"data-svelte-h":!0}),u(os)!=="svelte-ewhn06"&&(os.innerHTML=ul),we=t(s),ms=r(s,"P",{"data-svelte-h":!0}),u(ms)!=="svelte-1psj6in"&&(ms.innerHTML=cl),be=t(s),Ms=r(s,"P",{"data-svelte-h":!0}),u(Ms)!=="svelte-vdijwi"&&(Ms.textContent=ol),Te=t(s),M(is.$$.fragment,s),Je=t(s),M(ds.$$.fragment,s),he=t(s),js=r(s,"P",{"data-svelte-h":!0}),u(js)!=="svelte-12vhr9v"&&(js.textContent=ml),ye=t(s),ws=r(s,"P",{"data-svelte-h":!0}),u(ws)!=="svelte-4ky2ig"&&(ws.innerHTML=Ml),Ie=t(s),M(bs.$$.fragment,s),Ue=t(s),Ts=r(s,"P",{"data-svelte-h":!0}),u(Ts)!=="svelte-1deawea"&&(Ts.textContent=il),fe=t(s),Js=r(s,"P",{"data-svelte-h":!0}),u(Js)!=="svelte-1d0mz9t"&&(Js.textContent=dl),Ce=t(s),hs=r(s,"P",{"data-svelte-h":!0}),u(hs)!=="svelte-1gv06dh"&&(hs.textContent=jl),Ze=t(s),M(ys.$$.fragment,s),Ae=t(s),Is=r(s,"P",{"data-svelte-h":!0}),u(Is)!=="svelte-k61p1e"&&(Is.textContent=wl),Ge=t(s),Us=r(s,"P",{"data-svelte-h":!0}),u(Us)!=="svelte-1vqwv9x"&&(Us.textContent=bl),ve=t(s),M(fs.$$.fragment,s),Ve=t(s),M(Cs.$$.fragment,s),Be=t(s),Zs=r(s,"P",{}),yl(Zs).forEach(l),this.h()},h(){Il(c,"name","hf:doc:metadata"),Il(c,"content",kl)},m(s,e){Gl(document.head,c),a(s,T,e),a(s,o,e),a(s,J,e),i(f,s,e),a(s,As,e),i(C,s,e),a(s,Gs,e),a(s,Z,e),a(s,vs,e),i(A,s,e),a(s,Vs,e),a(s,G,e),a(s,Bs,e),i(v,s,e),a(s,$s,e),a(s,V,e),a(s,Rs,e),a(s,B,e),a(s,ks,e),a(s,$,e),a(s,gs,e),a(s,R,e),a(s,_s,e),i(k,s,e),a(s,Ls,e),a(s,g,e),a(s,Ns,e),i(_,s,e),a(s,Ws,e),i(y,s,e),a(s,xs,e),i(I,s,e),a(s,Es,e),i(U,s,e),a(s,Xs,e),a(s,L,e),a(s,Qs,e),a(s,N,e),a(s,Ds,e),i(W,s,e),a(s,Hs,e),a(s,x,e),a(s,Ss,e),a(s,E,e),a(s,Ys,e),i(X,s,e),a(s,zs,e),a(s,Q,e),a(s,Fs,e),i(D,s,e),a(s,qs,e),a(s,H,e),a(s,Ps,e),a(s,S,e),a(s,Ks,e),a(s,Y,e),a(s,Os,e),a(s,z,e),a(s,se,e),i(F,s,e),a(s,ee,e),a(s,q,e),a(s,le,e),a(s,P,e),a(s,ae,e),i(K,s,e),a(s,ne,e),a(s,O,e),a(s,te,e),a(s,ss,e),a(s,pe,e),a(s,es,e),a(s,re,e),a(s,ls,e),a(s,ue,e),i(as,s,e),a(s,ce,e),a(s,ns,e),a(s,oe,e),a(s,ts,e),a(s,me,e),a(s,ps,e),a(s,Me,e),i(rs,s,e),a(s,ie,e),a(s,us,e),a(s,de,e),i(cs,s,e),a(s,je,e),a(s,os,e),a(s,we,e),a(s,ms,e),a(s,be,e),a(s,Ms,e),a(s,Te,e),i(is,s,e),a(s,Je,e),i(ds,s,e),a(s,he,e),a(s,js,e),a(s,ye,e),a(s,ws,e),a(s,Ie,e),i(bs,s,e),a(s,Ue,e),a(s,Ts,e),a(s,fe,e),a(s,Js,e),a(s,Ce,e),a(s,hs,e),a(s,Ze,e),i(ys,s,e),a(s,Ae,e),a(s,Is,e),a(s,Ge,e),a(s,Us,e),a(s,ve,e),i(fs,s,e),a(s,Ve,e),i(Cs,s,e),a(s,Be,e),a(s,Zs,e),$e=!0},p(s,[e]){const Tl={};e&2&&(Tl.$$scope={dirty:e,ctx:s}),y.$set(Tl);const Jl={};e&2&&(Jl.$$scope={dirty:e,ctx:s}),I.$set(Jl);const hl={};e&2&&(hl.$$scope={dirty:e,ctx:s}),U.$set(hl)},i(s){$e||(d(f.$$.fragment,s),d(C.$$.fragment,s),d(A.$$.fragment,s),d(v.$$.fragment,s),d(k.$$.fragment,s),d(_.$$.fragment,s),d(y.$$.fragment,s),d(I.$$.fragment,s),d(U.$$.fragment,s),d(W.$$.fragment,s),d(X.$$.fragment,s),d(D.$$.fragment,s),d(F.$$.fragment,s),d(K.$$.fragment,s),d(as.$$.fragment,s),d(rs.$$.fragment,s),d(cs.$$.fragment,s),d(is.$$.fragment,s),d(ds.$$.fragment,s),d(bs.$$.fragment,s),d(ys.$$.fragment,s),d(fs.$$.fragment,s),d(Cs.$$.fragment,s),$e=!0)},o(s){j(f.$$.fragment,s),j(C.$$.fragment,s),j(A.$$.fragment,s),j(v.$$.fragment,s),j(k.$$.fragment,s),j(_.$$.fragment,s),j(y.$$.fragment,s),j(I.$$.fragment,s),j(U.$$.fragment,s),j(W.$$.fragment,s),j(X.$$.fragment,s),j(D.$$.fragment,s),j(F.$$.fragment,s),j(K.$$.fragment,s),j(as.$$.fragment,s),j(rs.$$.fragment,s),j(cs.$$.fragment,s),j(is.$$.fragment,s),j(ds.$$.fragment,s),j(bs.$$.fragment,s),j(ys.$$.fragment,s),j(fs.$$.fragment,s),j(Cs.$$.fragment,s),$e=!1},d(s){s&&(l(T),l(o),l(J),l(As),l(Gs),l(Z),l(vs),l(Vs),l(G),l(Bs),l($s),l(V),l(Rs),l(B),l(ks),l($),l(gs),l(R),l(_s),l(Ls),l(g),l(Ns),l(Ws),l(xs),l(Es),l(Xs),l(L),l(Qs),l(N),l(Ds),l(Hs),l(x),l(Ss),l(E),l(Ys),l(zs),l(Q),l(Fs),l(qs),l(H),l(Ps),l(S),l(Ks),l(Y),l(Os),l(z),l(se),l(ee),l(q),l(le),l(P),l(ae),l(ne),l(O),l(te),l(ss),l(pe),l(es),l(re),l(ls),l(ue),l(ce),l(ns),l(oe),l(ts),l(me),l(ps),l(Me),l(ie),l(us),l(de),l(je),l(os),l(we),l(ms),l(be),l(Ms),l(Te),l(Je),l(he),l(js),l(ye),l(ws),l(Ie),l(Ue),l(Ts),l(fe),l(Js),l(Ce),l(hs),l(Ze),l(Ae),l(Is),l(Ge),l(Us),l(ve),l(Ve),l(Be),l(Zs)),l(c),w(f,s),w(C,s),w(A,s),w(v,s),w(k,s),w(_,s),w(y,s),w(I,s),w(U,s),w(W,s),w(X,s),w(D,s),w(F,s),w(K,s),w(as,s),w(rs,s),w(cs,s),w(is,s),w(ds,s),w(bs,s),w(ys,s),w(fs,s),w(Cs,s)}}}const kl='{"title":"Debugging","local":"debugging","sections":[{"title":"Debug de problemas de Network multi-GPU","local":"debug-de-problemas-de-network-multi-gpu","sections":[],"depth":2},{"title":"Detección de Underflow y Overflow","local":"detección-de-underflow-y-overflow","sections":[{"title":"Rastreo de valores mínimos y máximos absolutos de batches específicos","local":"rastreo-de-valores-mínimos-y-máximos-absolutos-de-batches-específicos","sections":[],"depth":3}],"depth":2}],"depth":1}';function gl(h){return fl(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class El extends Cl{constructor(c){super(),Zl(this,c,gl,Rl,Ul,{})}}export{El as component};
