import{s as Ce,o as Je}from"../chunks/scheduler.cc52f4b9.js";import{S as Ze,i as Ae,e as ze,s as u,c as m,h as Qe,a as qe,d as r,b as d,f as Te,g as p,k as Ee,l as We,m as c,n as f,o as l,q as Ue,t as i,p as $,r as Ie}from"../chunks/index.f7fb5439.js";import{C as Se,E as Ve}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.4aef24b6.js";import{C as je}from"../chunks/CodeBlock.c4d86f9a.js";import{C as He}from"../chunks/CourseFloatingBanner.9c415528.js";import{Q as z}from"../chunks/Question.96d3c20b.js";import{F as Fe}from"../chunks/FrameworkSwitchCourse.04efc18f.js";import{H as k}from"../chunks/Heading.b75cdeb1.js";function Be(q){let o,g,s,b;return o=new k({props:{title:"5. ¿Qué es un TFAutoModel?",local:"5-qué-es-un-tfautomodel",headingTag:"h3"}}),s=new z({props:{choices:[{text:"Un modelo que entrena automáticamente en tus datos",explain:"Incorrecto. ¿Estás confundiendo esto con nuestro producto <a href='https://huggingface.co/autotrain'>AutoTrain</a>?"},{text:"Un objeto que devuelve la arquitectura correcta basado en el punto de control",explain:"Exacto: el <code>TFAutoModel</code> sólo necesita conocer el punto de control desde el cual inicializar para devolver la arquitectura correcta.",correct:!0},{text:"Un modelo que detecta automáticamente el lenguaje usado por sus entradas para cargar los pesos correctos",explain:"Incorrecto; aunque algunos puntos de control y modelos son capaces de manejar varios lenguajes, no hay herramientas integradas para la selección automática de punto de control de acuerdo al lenguaje. ¡Deberías dirigirte a <a href='https://huggingface.co/models'>Model Hub</a> para encontrar el mejor punto de control para tu tarea!"}]}}),{c(){m(o.$$.fragment),g=u(),m(s.$$.fragment)},l(a){p(o.$$.fragment,a),g=d(a),p(s.$$.fragment,a)},m(a,y){f(o,a,y),c(a,g,y),f(s,a,y),b=!0},i(a){b||(i(o.$$.fragment,a),i(s.$$.fragment,a),b=!0)},o(a){l(o.$$.fragment,a),l(s.$$.fragment,a),b=!1},d(a){a&&r(g),$(o,a),$(s,a)}}}function Re(q){let o,g,s,b;return o=new k({props:{title:"5. ¿Qué es un AutoModel?",local:"5-qué-es-un-automodel",headingTag:"h3"}}),s=new z({props:{choices:[{text:"Un modelo que entrena automáticamente en tus datos",explain:"Incorrecto. ¿Estás confundiendo esto con nuestro producto <a href='https://huggingface.co/autotrain'>AutoTrain</a>?"},{text:"Un objeto que devuelve la arquitectura correcta basado en el punto de control",explain:"Exacto: el <code>AutoModel</code> sólo necesita conocer el punto de control desde el cual inicializar para devolver la arquitectura correcta.",correct:!0},{text:"Un modelo que detecta automáticamente el lenguaje usado por sus entradas para cargar los pesos correctos",explain:"Incorrecto; aunque algunos puntos de control y modelos son capaces de manejar varios lenguajes, no hay herramientas integradas para la selección automática de punto de control de acuerdo al lenguaje. ¡Deberías dirigirte a <a href='https://huggingface.co/models'>Model Hub</a> para encontrar el mejor punto de control para tu tarea!"}]}}),{c(){m(o.$$.fragment),g=u(),m(s.$$.fragment)},l(a){p(o.$$.fragment,a),g=d(a),p(s.$$.fragment,a)},m(a,y){f(o,a,y),c(a,g,y),f(s,a,y),b=!0},i(a){b||(i(o.$$.fragment,a),i(s.$$.fragment,a),b=!0)},o(a){l(o.$$.fragment,a),l(s.$$.fragment,a),b=!1},d(a){a&&r(g),$(o,a),$(s,a)}}}function Xe(q){let o,g,s,b,a,y;return o=new k({props:{title:"10. ¿Hay algo mal con el siguiente código?",local:"10-hay-algo-mal-con-el-siguiente-código",headingTag:"h3"}}),s=new je({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMkMlMjBURkF1dG9Nb2RlbCUwQSUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKCUyMmJlcnQtYmFzZS1jYXNlZCUyMiklMEFtb2RlbCUyMCUzRCUyMFRGQXV0b01vZGVsLmZyb21fcHJldHJhaW5lZCglMjJncHQyJTIyKSUwQSUwQWVuY29kZWQlMjAlM0QlMjB0b2tlbml6ZXIoJTIySGV5ISUyMiUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIycHQlMjIpJTBBcmVzdWx0JTIwJTNEJTIwbW9kZWwoKiplbmNvZGVkKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, TFAutoModel

tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)
model = TFAutoModel.from_pretrained(<span class="hljs-string">&quot;gpt2&quot;</span>)

encoded = tokenizer(<span class="hljs-string">&quot;Hey!&quot;</span>, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)
result = model(**encoded)`,wrap:!1}}),a=new z({props:{choices:[{text:"No, parece correcto.",explain:"Desafortunadamente, acoplar un modelo con un tokenizador que fue entrenado con un punto de control distinto raramente es una buena idea. El modelo no fue entrenado para dar sentido a la salida de este tokenizador, así la salida del modelo (¡si es que puede correr!) no tendrá ningún sentido."},{text:"El tokenizador y el modelo siempre deben ser del mismo punto de control.",explain:"¡Correcto!",correct:!0},{text:"Es una buena práctica rellenar y truncar con el tokenizador ya que cada entrada es un lote.",explain:"Es cierto que cada entrada de modelo necesita ser un lote. Sin embargo, truncar o rellenar esta secuencia no necesariamente hace sentido ya que sólo hay una, y esas son técnicas para juntar una lista de oraciones."}]}}),{c(){m(o.$$.fragment),g=u(),m(s.$$.fragment),b=u(),m(a.$$.fragment)},l(n){p(o.$$.fragment,n),g=d(n),p(s.$$.fragment,n),b=d(n),p(a.$$.fragment,n)},m(n,x){f(o,n,x),c(n,g,x),f(s,n,x),c(n,b,x),f(a,n,x),y=!0},i(n){y||(i(o.$$.fragment,n),i(s.$$.fragment,n),i(a.$$.fragment,n),y=!0)},o(n){l(o.$$.fragment,n),l(s.$$.fragment,n),l(a.$$.fragment,n),y=!1},d(n){n&&(r(g),r(b)),$(o,n),$(s,n),$(a,n)}}}function Ge(q){let o,g,s,b,a,y;return o=new k({props:{title:"10. ¿Hay algo mal con el siguiente código?",local:"10-hay-algo-mal-con-el-siguiente-código",headingTag:"h3"}}),s=new je({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMkMlMjBBdXRvTW9kZWwlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJiZXJ0LWJhc2UtY2FzZWQlMjIpJTBBbW9kZWwlMjAlM0QlMjBBdXRvTW9kZWwuZnJvbV9wcmV0cmFpbmVkKCUyMmdwdDIlMjIpJTBBJTBBZW5jb2RlZCUyMCUzRCUyMHRva2VuaXplciglMjJIZXkhJTIyJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJwdCUyMiklMEFyZXN1bHQlMjAlM0QlMjBtb2RlbCgqKmVuY29kZWQp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, AutoModel

tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)
model = AutoModel.from_pretrained(<span class="hljs-string">&quot;gpt2&quot;</span>)

encoded = tokenizer(<span class="hljs-string">&quot;Hey!&quot;</span>, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)
result = model(**encoded)`,wrap:!1}}),a=new z({props:{choices:[{text:"No, parece correcto.",explain:"Desafortunadamente, acoplar un modelo con un tokenizador que fue entrenado con un punto de control distinto raramente es una buena idea. El modelo no fue entrenado para dar sentido a la salida de este tokenizador, así la salida del modelo (¡si es que puede correr!) no tendrá ningún sentido."},{text:"El tokenizador y el modelo siempre deben ser del mismo punto de control.",explain:"¡Correcto!",correct:!0},{text:"Es una buena práctica rellenar y truncar con el tokenizador ya que cada entrada es un lote.",explain:"Es cierto que cada entrada de modelo necesita ser un lote. Sin embargo, truncar o rellenar esta secuencia no necesariamente hace sentido ya que sólo hay una, y esas son técnicas para juntar una lista de oraciones."}]}}),{c(){m(o.$$.fragment),g=u(),m(s.$$.fragment),b=u(),m(a.$$.fragment)},l(n){p(o.$$.fragment,n),g=d(n),p(s.$$.fragment,n),b=d(n),p(a.$$.fragment,n)},m(n,x){f(o,n,x),c(n,g,x),f(s,n,x),c(n,b,x),f(a,n,x),y=!0},i(n){y||(i(o.$$.fragment,n),i(s.$$.fragment,n),i(a.$$.fragment,n),y=!0)},o(n){l(o.$$.fragment,n),l(s.$$.fragment,n),l(a.$$.fragment,n),y=!1},d(n){n&&(r(g),r(b)),$(o,n),$(s,n),$(a,n)}}}function Le(q){let o,g,s,b,a,y,n,x,h,K,v,O,T,ee,E,ae,U,te,I,ne,C,oe,J,se,Z,re,A,le,j,M,N,Q,ie,W,ce,S,ue,V,de,H,me,F,pe,B,fe,R,$e,X,ge,_,w,P,G,be,Y,ye;a=new Fe({props:{fw:q[0]}}),n=new Se({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),h=new k({props:{title:"Quiz de final de capítulo",local:"quiz-de-final-de-capítulo",headingTag:"h1"}}),v=new He({props:{chapter:2,classNames:"absolute z-10 right-0 top-0"}}),T=new k({props:{title:"1. ¿Cuál es el orden del pipeline de modelado del lenguaje?",local:"1-cuál-es-el-orden-del-pipeline-de-modelado-del-lenguaje",headingTag:"h3"}}),E=new z({props:{choices:[{text:"Primero, el modelo que maneja el texto y devuelve las peticiones sin procesar. El tokenizador luego da sentido a estas predicciones y las convierte nuevamente en texto cuando es necesario.",explain:"¡El modelo no puede entender texto! El tokenizador primero debe tokenizar el texto y convertirlo a IDs para que así sea comprensible por el modelo."},{text:"Primero, el tokenizador, que maneja el texto y regresa IDs. El modelo maneja estos IDs y produce una predicción, la cual puede ser algún texto.",explain:"La predicción del modelo no puede ser texto de forma directa. ¡El tokenizador tiene que ser usado de tal forma que convierta la predicción de vuelta a texto!"},{text:"El tokenizador maneja texto y regresa IDs. El modelo maneja estos IDs y produce una predicción. El tokenizador puede luego ser usado de nuevo para convertir estas predicciones de vuelta a texto.",explain:"¡Correcto! El tokenizador puede ser usado tanto para tokenizar como des-tokenizar.",correct:!0}]}}),U=new k({props:{title:"2. ¿Cuántas dimensiones tiene el tensor producido por el modelo base de Transformer y cuáles son?",local:"2-cuántas-dimensiones-tiene-el-tensor-producido-por-el-modelo-base-de-transformer-y-cuáles-son",headingTag:"h3"}}),I=new z({props:{choices:[{text:"1: La longitud de secuencia y el tamaño del lote",explain:"¡Falso! El tensor producido por el modelo tiene una tercer dimensión: tamaño oculto."},{text:"2: La longitud de secuencia y el tamaño oculto",explain:"¡Falso! All Todos los modelos Transformer manejan lotes, aún con una sola secuencia; lo cual sería un lote de tamaño 1!"},{text:"3: La longitud de secuencia, el tamaño de lote y el tamaño oculto",explain:"¡Correcto!",correct:!0}]}}),C=new k({props:{title:"3. ¿Cuál de los siguientes es un ejemplo de tokenización de subpalabras?",local:"3-cuál-de-los-siguientes-es-un-ejemplo-de-tokenización-de-subpalabras",headingTag:"h3"}}),J=new z({props:{choices:[{text:"WordPiece",explain:"¡Sí ese es un ejemplo de tokenización de subpalabras!",correct:!0},{text:"Tokenización basada en caracteres",explain:"La tokenización basada en caracteres no es un tipo de tokenización de subpalabras."},{text:"División por espacios en blanco y puntuación",explain:"¡Ese es un esquema de tokenización basado en palabras!"},{text:"BPE",explain:"¡Sí ese es un ejemplo de tokenización de subpalabras!",correct:!0},{text:"Unigrama",explain:"¡Sí ese es un ejemplo de tokenización de subpalabras!",correct:!0},{text:"Ninguno de los anteriores",explain:"¡Incorrecto!"}]}}),Z=new k({props:{title:"4. ¿Qué es una cabeza del modelo?",local:"4-qué-es-una-cabeza-del-modelo",headingTag:"h3"}}),A=new z({props:{choices:[{text:"Un componente de la red de Transformer base que redirecciona los tensores a sus capas correctas",explain:"¡Incorrecto! No hay tal componente."},{text:"También conocido como el mecanismo de autoatención, adapta la representación de un token de acuerdo a los otros tokens de la secuencia",explain:'¡Incorrecto! La capa de autoatención contiene "cabezas", pero éstas no son cabezas de adaptación.'},{text:"Un componente adicional, compuesto usualmente de una o unas pocas capas, para convertir las predicciones del transformador a una salida específica de la tarea",explain:"Así es, Las cabezas de adaptación, también conocidas simplemente como cabezas, vienen en diferentes formas: cabezas de modelado de lenguaje, cabezas de respuesta a preguntas, cabezas de clasificación de secuencia... ",correct:!0}]}});const Me=[Re,Be],L=[];function _e(e,t){return e[0]==="pt"?0:1}j=_e(q),M=L[j]=Me[j](q),Q=new k({props:{title:"6. ¿Cuáles son las técnicas a tener en cuenta al realizar batching de secuencias de diferentes longitudes juntas?",local:"6-cuáles-son-las-técnicas-a-tener-en-cuenta-al-realizar-batching-de-secuencias-de-diferentes-longitudes-juntas",headingTag:"h3"}}),W=new z({props:{choices:[{text:"Truncado",explain:"Sí, el truncamiento es una forma correcta de emparejar secuencias de modo que se ajusten a una forma rectangular. ¿Aunque, es la única?",correct:!0},{text:"Returning tensors",explain:"Mientras las otras técnicas te permiten devolver tensores rectangulares, returning tensors no es útil cuando se hace batching en secuencias juntas."},{text:"Relleno",explain:"Sí, el relleno es una forma correcta de emparejar secuencias de modo que se ajusten a una forma rectangular. ¿Aunque, es la única?",correct:!0},{text:"Enmascarado de atención",explain:"¡Absolutamente! Las máscaras de atención son de primera importancia cuando se manejan secuencias de diferentes longitudes. Sin embargo, no es la única técnica a tener en cuenta.",correct:!0}]}}),S=new k({props:{title:"7. ¿Cuál es el punto de aplicar una función SoftMax a las salidas logits por un modelo de clasificación de secuencias?",local:"7-cuál-es-el-punto-de-aplicar-una-función-softmax-a-las-salidas-logits-por-un-modelo-de-clasificación-de-secuencias",headingTag:"h3"}}),V=new z({props:{choices:[{text:"Suaviza los logits para que sean más fiables.",explain:"No, la función SoftMax no afecta en la fiabilidad de los resultados."},{text:"Aplica un límite inferior y superior de modo que sean comprensibles.",explain:"¡Correcto! Los valores resultantes están limitados entre 0 y 1. Aunque, no es la única razón por la cual usamos una función SoftMax.",correct:!0},{text:"La suma total de la salida es entonces 1, dando como resultado una posible interpretación probabilística.",explain:"¡Correcto! Aunque, esa no es la única razón por la que usamos una función SoftMax.",correct:!0}]}}),H=new k({props:{title:"8. ¿En qué método se centra la mayor parte de la API del tokenizador?",local:"8-en-qué-método-se-centra-la-mayor-parte-de-la-api-del-tokenizador",headingTag:"h3"}}),F=new z({props:{choices:[{text:"<code>encode</code>, ya que puede codificar texto en IDs e IDs en predicciones",explain:"¡Incorrecto! Aunque el método <code>encode</code> existe en los tokenizadores, no existe en los modelos."},{text:"Llamar al objeto tokenizador directamente.",explain:"¡Exactamente! El método <code>__call__</code> del tokenizador es un método muy poderoso el cual puede manejar casi cualquier cosa.También es el método usado para recuperar las predicciones de un modelo.",correct:!0},{text:"<code>pad</code>",explain:"¡Incorrecto! El relleno es muy útil, pero es solo una parte de la API tokenizador."},{text:"<code>tokenize</code>",explain:"El método <code>tokenize</code> es posiblemente uno de los métodos más útiles, pero no es el núcleo de la API tokenizador."}]}}),B=new k({props:{title:"9. ¿Qué contiene la variable result en este código de ejemplo?",local:"9-qué-contiene-la-variable-result-en-este-código-de-ejemplo",headingTag:"h3"}}),R=new je({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJiZXJ0LWJhc2UtY2FzZWQlMjIpJTBBcmVzdWx0JTIwJTNEJTIwdG9rZW5pemVyLnRva2VuaXplKCUyMkhlbGxvISUyMik=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)
result = tokenizer.tokenize(<span class="hljs-string">&quot;Hello!&quot;</span>)`,wrap:!1}}),X=new z({props:{choices:[{text:"Una lista de strings, cada string es un token",explain:"¡Por supuesto! ¡Convierte esto a IDs, y los envía a los modelos!",correct:!0},{text:"Una lista de IDs",explain:"Incorrecto; ¡para eso están los métodos <code>__call__</code> o <code>convert_tokens_to_ids</code>!"},{text:"Una cadena que contiene todos los tokens",explain:"Esto sería subóptimo, ya que el objetivo es dividir la cadena en varios tokens."}]}});const we=[Ge,Xe],D=[];function he(e,t){return e[0]==="pt"?0:1}return _=he(q),w=D[_]=we[_](q),G=new Ve({props:{source:"https://github.com/huggingface/course/blob/main/chapters/es/chapter2/8.mdx"}}),{c(){o=ze("meta"),g=u(),s=ze("p"),b=u(),m(a.$$.fragment),y=u(),m(n.$$.fragment),x=u(),m(h.$$.fragment),K=u(),m(v.$$.fragment),O=u(),m(T.$$.fragment),ee=u(),m(E.$$.fragment),ae=u(),m(U.$$.fragment),te=u(),m(I.$$.fragment),ne=u(),m(C.$$.fragment),oe=u(),m(J.$$.fragment),se=u(),m(Z.$$.fragment),re=u(),m(A.$$.fragment),le=u(),M.c(),N=u(),m(Q.$$.fragment),ie=u(),m(W.$$.fragment),ce=u(),m(S.$$.fragment),ue=u(),m(V.$$.fragment),de=u(),m(H.$$.fragment),me=u(),m(F.$$.fragment),pe=u(),m(B.$$.fragment),fe=u(),m(R.$$.fragment),$e=u(),m(X.$$.fragment),ge=u(),w.c(),P=u(),m(G.$$.fragment),be=u(),Y=ze("p"),this.h()},l(e){const t=Qe("svelte-u9bgzb",document.head);o=qe(t,"META",{name:!0,content:!0}),t.forEach(r),g=d(e),s=qe(e,"P",{}),Te(s).forEach(r),b=d(e),p(a.$$.fragment,e),y=d(e),p(n.$$.fragment,e),x=d(e),p(h.$$.fragment,e),K=d(e),p(v.$$.fragment,e),O=d(e),p(T.$$.fragment,e),ee=d(e),p(E.$$.fragment,e),ae=d(e),p(U.$$.fragment,e),te=d(e),p(I.$$.fragment,e),ne=d(e),p(C.$$.fragment,e),oe=d(e),p(J.$$.fragment,e),se=d(e),p(Z.$$.fragment,e),re=d(e),p(A.$$.fragment,e),le=d(e),M.l(e),N=d(e),p(Q.$$.fragment,e),ie=d(e),p(W.$$.fragment,e),ce=d(e),p(S.$$.fragment,e),ue=d(e),p(V.$$.fragment,e),de=d(e),p(H.$$.fragment,e),me=d(e),p(F.$$.fragment,e),pe=d(e),p(B.$$.fragment,e),fe=d(e),p(R.$$.fragment,e),$e=d(e),p(X.$$.fragment,e),ge=d(e),w.l(e),P=d(e),p(G.$$.fragment,e),be=d(e),Y=qe(e,"P",{}),Te(Y).forEach(r),this.h()},h(){Ee(o,"name","hf:doc:metadata"),Ee(o,"content",De)},m(e,t){We(document.head,o),c(e,g,t),c(e,s,t),c(e,b,t),f(a,e,t),c(e,y,t),f(n,e,t),c(e,x,t),f(h,e,t),c(e,K,t),f(v,e,t),c(e,O,t),f(T,e,t),c(e,ee,t),f(E,e,t),c(e,ae,t),f(U,e,t),c(e,te,t),f(I,e,t),c(e,ne,t),f(C,e,t),c(e,oe,t),f(J,e,t),c(e,se,t),f(Z,e,t),c(e,re,t),f(A,e,t),c(e,le,t),L[j].m(e,t),c(e,N,t),f(Q,e,t),c(e,ie,t),f(W,e,t),c(e,ce,t),f(S,e,t),c(e,ue,t),f(V,e,t),c(e,de,t),f(H,e,t),c(e,me,t),f(F,e,t),c(e,pe,t),f(B,e,t),c(e,fe,t),f(R,e,t),c(e,$e,t),f(X,e,t),c(e,ge,t),D[_].m(e,t),c(e,P,t),f(G,e,t),c(e,be,t),c(e,Y,t),ye=!0},p(e,[t]){const ve={};t&1&&(ve.fw=e[0]),a.$set(ve);let xe=j;j=_e(e),j!==xe&&(Ie(),l(L[xe],1,1,()=>{L[xe]=null}),Ue(),M=L[j],M||(M=L[j]=Me[j](e),M.c()),i(M,1),M.m(N.parentNode,N));let ke=_;_=he(e),_!==ke&&(Ie(),l(D[ke],1,1,()=>{D[ke]=null}),Ue(),w=D[_],w||(w=D[_]=we[_](e),w.c()),i(w,1),w.m(P.parentNode,P))},i(e){ye||(i(a.$$.fragment,e),i(n.$$.fragment,e),i(h.$$.fragment,e),i(v.$$.fragment,e),i(T.$$.fragment,e),i(E.$$.fragment,e),i(U.$$.fragment,e),i(I.$$.fragment,e),i(C.$$.fragment,e),i(J.$$.fragment,e),i(Z.$$.fragment,e),i(A.$$.fragment,e),i(M),i(Q.$$.fragment,e),i(W.$$.fragment,e),i(S.$$.fragment,e),i(V.$$.fragment,e),i(H.$$.fragment,e),i(F.$$.fragment,e),i(B.$$.fragment,e),i(R.$$.fragment,e),i(X.$$.fragment,e),i(w),i(G.$$.fragment,e),ye=!0)},o(e){l(a.$$.fragment,e),l(n.$$.fragment,e),l(h.$$.fragment,e),l(v.$$.fragment,e),l(T.$$.fragment,e),l(E.$$.fragment,e),l(U.$$.fragment,e),l(I.$$.fragment,e),l(C.$$.fragment,e),l(J.$$.fragment,e),l(Z.$$.fragment,e),l(A.$$.fragment,e),l(M),l(Q.$$.fragment,e),l(W.$$.fragment,e),l(S.$$.fragment,e),l(V.$$.fragment,e),l(H.$$.fragment,e),l(F.$$.fragment,e),l(B.$$.fragment,e),l(R.$$.fragment,e),l(X.$$.fragment,e),l(w),l(G.$$.fragment,e),ye=!1},d(e){e&&(r(g),r(s),r(b),r(y),r(x),r(K),r(O),r(ee),r(ae),r(te),r(ne),r(oe),r(se),r(re),r(le),r(N),r(ie),r(ce),r(ue),r(de),r(me),r(pe),r(fe),r($e),r(ge),r(P),r(be),r(Y)),r(o),$(a,e),$(n,e),$(h,e),$(v,e),$(T,e),$(E,e),$(U,e),$(I,e),$(C,e),$(J,e),$(Z,e),$(A,e),L[j].d(e),$(Q,e),$(W,e),$(S,e),$(V,e),$(H,e),$(F,e),$(B,e),$(R,e),$(X,e),D[_].d(e),$(G,e)}}}const De='{"title":"Quiz de final de capítulo","local":"quiz-de-final-de-capítulo","sections":[{"title":"1. ¿Cuál es el orden del pipeline de modelado del lenguaje?","local":"1-cuál-es-el-orden-del-pipeline-de-modelado-del-lenguaje","sections":[],"depth":3},{"title":"2. ¿Cuántas dimensiones tiene el tensor producido por el modelo base de Transformer y cuáles son?","local":"2-cuántas-dimensiones-tiene-el-tensor-producido-por-el-modelo-base-de-transformer-y-cuáles-son","sections":[],"depth":3},{"title":"3. ¿Cuál de los siguientes es un ejemplo de tokenización de subpalabras?","local":"3-cuál-de-los-siguientes-es-un-ejemplo-de-tokenización-de-subpalabras","sections":[],"depth":3},{"title":"4. ¿Qué es una cabeza del modelo?","local":"4-qué-es-una-cabeza-del-modelo","sections":[],"depth":3},{"title":"5. ¿Qué es un AutoModel?","local":"5-qué-es-un-automodel","sections":[],"depth":3},{"title":"5. ¿Qué es un TFAutoModel?","local":"5-qué-es-un-tfautomodel","sections":[],"depth":3},{"title":"6. ¿Cuáles son las técnicas a tener en cuenta al realizar batching de secuencias de diferentes longitudes juntas?","local":"6-cuáles-son-las-técnicas-a-tener-en-cuenta-al-realizar-batching-de-secuencias-de-diferentes-longitudes-juntas","sections":[],"depth":3},{"title":"7. ¿Cuál es el punto de aplicar una función SoftMax a las salidas logits por un modelo de clasificación de secuencias?","local":"7-cuál-es-el-punto-de-aplicar-una-función-softmax-a-las-salidas-logits-por-un-modelo-de-clasificación-de-secuencias","sections":[],"depth":3},{"title":"8. ¿En qué método se centra la mayor parte de la API del tokenizador?","local":"8-en-qué-método-se-centra-la-mayor-parte-de-la-api-del-tokenizador","sections":[],"depth":3},{"title":"9. ¿Qué contiene la variable result en este código de ejemplo?","local":"9-qué-contiene-la-variable-result-en-este-código-de-ejemplo","sections":[],"depth":3},{"title":"10. ¿Hay algo mal con el siguiente código?","local":"10-hay-algo-mal-con-el-siguiente-código","sections":[],"depth":3},{"title":"10. ¿Hay algo mal con el siguiente código?","local":"10-hay-algo-mal-con-el-siguiente-código","sections":[],"depth":3}],"depth":1}';function Ne(q,o,g){let s="pt";return Je(()=>{const b=new URLSearchParams(window.location.search);g(0,s=b.get("fw")||"pt")}),[s]}class oa extends Ze{constructor(o){super(),Ae(this,o,Ne,Le,Ce,{})}}export{oa as component};
