import{s as Ue,o as Ie}from"../chunks/scheduler.37c15a92.js";import{S as Ce,i as Je,g as xe,s as u,r as m,A as Ze,h as ke,f as r,c as d,j as he,u as p,k as ve,y as Ae,a as c,v as f,t as l,b as Te,d as i,w as $,p as Ee}from"../chunks/index.2bf4358c.js";import{C as ze}from"../chunks/CodeBlock.4e987730.js";import{C as Qe}from"../chunks/CourseFloatingBanner.6add7356.js";import{Q as z}from"../chunks/Question.668688bc.js";import{F as We}from"../chunks/FrameworkSwitchCourse.8d4d4ab6.js";import{H as k}from"../chunks/Heading.8ada512a.js";import{E as Se}from"../chunks/index.3b54d7fe.js";function Ve(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 He(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 Fe(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 ze({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(t){p(o.$$.fragment,t),g=d(t),p(s.$$.fragment,t),b=d(t),p(a.$$.fragment,t)},m(t,x){f(o,t,x),c(t,g,x),f(s,t,x),c(t,b,x),f(a,t,x),y=!0},i(t){y||(i(o.$$.fragment,t),i(s.$$.fragment,t),i(a.$$.fragment,t),y=!0)},o(t){l(o.$$.fragment,t),l(s.$$.fragment,t),l(a.$$.fragment,t),y=!1},d(t){t&&(r(g),r(b)),$(o,t),$(s,t),$(a,t)}}}function Be(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 ze({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(t){p(o.$$.fragment,t),g=d(t),p(s.$$.fragment,t),b=d(t),p(a.$$.fragment,t)},m(t,x){f(o,t,x),c(t,g,x),f(s,t,x),c(t,b,x),f(a,t,x),y=!0},i(t){y||(i(o.$$.fragment,t),i(s.$$.fragment,t),i(a.$$.fragment,t),y=!0)},o(t){l(o.$$.fragment,t),l(s.$$.fragment,t),l(a.$$.fragment,t),y=!1},d(t){t&&(r(g),r(b)),$(o,t),$(s,t),$(a,t)}}}function Re(q){let o,g,s,b,a,y,t,x,h,Y,v,K,T,O,E,ee,U,ae,I,te,C,ne,J,oe,Z,se,j,M,D,A,re,Q,le,W,ie,S,ce,V,ue,H,de,F,me,B,pe,R,fe,_,w,N,X,$e,P,ge;a=new We({props:{fw:q[0]}}),t=new k({props:{title:"Quiz de final de capítulo",local:"quiz-de-final-de-capítulo",headingTag:"h1"}}),h=new Qe({props:{chapter:2,classNames:"absolute z-10 right-0 top-0"}}),v=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"}}),T=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}]}}),E=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"}}),U=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}]}}),I=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"}}),C=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!"}]}}),J=new k({props:{title:"4. ¿Qué es una cabeza del modelo?",local:"4-qué-es-una-cabeza-del-modelo",headingTag:"h3"}}),Z=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 qe=[He,Ve],G=[];function je(e,n){return e[0]==="pt"?0:1}j=je(q),M=G[j]=qe[j](q),A=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"}}),Q=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}]}}),W=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"}}),S=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}]}}),V=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"}}),H=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."}]}}),F=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"}}),B=new ze({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}}),R=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 Me=[Be,Fe],L=[];function _e(e,n){return e[0]==="pt"?0:1}return _=_e(q),w=L[_]=Me[_](q),X=new Se({props:{source:"https://github.com/huggingface/course/blob/main/chapters/es/chapter2/8.mdx"}}),{c(){o=xe("meta"),g=u(),s=xe("p"),b=u(),m(a.$$.fragment),y=u(),m(t.$$.fragment),x=u(),m(h.$$.fragment),Y=u(),m(v.$$.fragment),K=u(),m(T.$$.fragment),O=u(),m(E.$$.fragment),ee=u(),m(U.$$.fragment),ae=u(),m(I.$$.fragment),te=u(),m(C.$$.fragment),ne=u(),m(J.$$.fragment),oe=u(),m(Z.$$.fragment),se=u(),M.c(),D=u(),m(A.$$.fragment),re=u(),m(Q.$$.fragment),le=u(),m(W.$$.fragment),ie=u(),m(S.$$.fragment),ce=u(),m(V.$$.fragment),ue=u(),m(H.$$.fragment),de=u(),m(F.$$.fragment),me=u(),m(B.$$.fragment),pe=u(),m(R.$$.fragment),fe=u(),w.c(),N=u(),m(X.$$.fragment),$e=u(),P=xe("p"),this.h()},l(e){const n=Ze("svelte-u9bgzb",document.head);o=ke(n,"META",{name:!0,content:!0}),n.forEach(r),g=d(e),s=ke(e,"P",{}),he(s).forEach(r),b=d(e),p(a.$$.fragment,e),y=d(e),p(t.$$.fragment,e),x=d(e),p(h.$$.fragment,e),Y=d(e),p(v.$$.fragment,e),K=d(e),p(T.$$.fragment,e),O=d(e),p(E.$$.fragment,e),ee=d(e),p(U.$$.fragment,e),ae=d(e),p(I.$$.fragment,e),te=d(e),p(C.$$.fragment,e),ne=d(e),p(J.$$.fragment,e),oe=d(e),p(Z.$$.fragment,e),se=d(e),M.l(e),D=d(e),p(A.$$.fragment,e),re=d(e),p(Q.$$.fragment,e),le=d(e),p(W.$$.fragment,e),ie=d(e),p(S.$$.fragment,e),ce=d(e),p(V.$$.fragment,e),ue=d(e),p(H.$$.fragment,e),de=d(e),p(F.$$.fragment,e),me=d(e),p(B.$$.fragment,e),pe=d(e),p(R.$$.fragment,e),fe=d(e),w.l(e),N=d(e),p(X.$$.fragment,e),$e=d(e),P=ke(e,"P",{}),he(P).forEach(r),this.h()},h(){ve(o,"name","hf:doc:metadata"),ve(o,"content",Xe)},m(e,n){Ae(document.head,o),c(e,g,n),c(e,s,n),c(e,b,n),f(a,e,n),c(e,y,n),f(t,e,n),c(e,x,n),f(h,e,n),c(e,Y,n),f(v,e,n),c(e,K,n),f(T,e,n),c(e,O,n),f(E,e,n),c(e,ee,n),f(U,e,n),c(e,ae,n),f(I,e,n),c(e,te,n),f(C,e,n),c(e,ne,n),f(J,e,n),c(e,oe,n),f(Z,e,n),c(e,se,n),G[j].m(e,n),c(e,D,n),f(A,e,n),c(e,re,n),f(Q,e,n),c(e,le,n),f(W,e,n),c(e,ie,n),f(S,e,n),c(e,ce,n),f(V,e,n),c(e,ue,n),f(H,e,n),c(e,de,n),f(F,e,n),c(e,me,n),f(B,e,n),c(e,pe,n),f(R,e,n),c(e,fe,n),L[_].m(e,n),c(e,N,n),f(X,e,n),c(e,$e,n),c(e,P,n),ge=!0},p(e,[n]){const we={};n&1&&(we.fw=e[0]),a.$set(we);let be=j;j=je(e),j!==be&&(Ee(),l(G[be],1,1,()=>{G[be]=null}),Te(),M=G[j],M||(M=G[j]=qe[j](e),M.c()),i(M,1),M.m(D.parentNode,D));let ye=_;_=_e(e),_!==ye&&(Ee(),l(L[ye],1,1,()=>{L[ye]=null}),Te(),w=L[_],w||(w=L[_]=Me[_](e),w.c()),i(w,1),w.m(N.parentNode,N))},i(e){ge||(i(a.$$.fragment,e),i(t.$$.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(M),i(A.$$.fragment,e),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(w),i(X.$$.fragment,e),ge=!0)},o(e){l(a.$$.fragment,e),l(t.$$.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(M),l(A.$$.fragment,e),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(w),l(X.$$.fragment,e),ge=!1},d(e){e&&(r(g),r(s),r(b),r(y),r(x),r(Y),r(K),r(O),r(ee),r(ae),r(te),r(ne),r(oe),r(se),r(D),r(re),r(le),r(ie),r(ce),r(ue),r(de),r(me),r(pe),r(fe),r(N),r($e),r(P)),r(o),$(a,e),$(t,e),$(h,e),$(v,e),$(T,e),$(E,e),$(U,e),$(I,e),$(C,e),$(J,e),$(Z,e),G[j].d(e),$(A,e),$(Q,e),$(W,e),$(S,e),$(V,e),$(H,e),$(F,e),$(B,e),$(R,e),L[_].d(e),$(X,e)}}}const Xe='{"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 Ge(q,o,g){let s="pt";return Ie(()=>{const b=new URLSearchParams(window.location.search);g(0,s=b.get("fw")||"pt")}),[s]}class aa extends Ce{constructor(o){super(),Je(this,o,Ge,Re,Ue,{})}}export{aa as component};
