Buckets:

download
raw
17.5 kB
import"../chunks/DsnmJJEf.js";import{i as N,h as P,C as Y,a as p,E as K,s as O}from"../chunks/ByQJuyRF.js";import{p as $,o as ee,s as e,f as c,a as r,b as ae,c as d,d as oe,g as m,n as ne,m as te}from"../chunks/D1tCmNdJ.js";import{i as S}from"../chunks/CZRDEabZ.js";import{C as se}from"../chunks/BjPBuBBM.js";import{Q as t}from"../chunks/BmGKA8I3.js";import{F as le}from"../chunks/csOGpP-E.js";import{H as n}from"../chunks/en53IbUL.js";const re='{"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}';var ce=d('<meta name="hf:doc:metadata"/>'),V=d("<!> <!>",1),H=d("<!> <!> <!>",1),ie=d("<p></p> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <p></p>",1);function xe(F,B){$(B,!1);let i=te("pt");ee(()=>{const a=new URLSearchParams(window.location.search);oe(i,a.get("fw")||"pt")}),N();var g=ie();P("1qc2nli",a=>{var o=ce();O(o,"content",re),r(a,o)});var b=e(c(g),2);le(b,{get fw(){return m(i)}});var h=e(b,2);Y(h,{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"});var y=e(h,2);n(y,{title:"Quiz de final de capítulo",local:"quiz-de-final-de-capítulo",headingTag:"h1"});var x=e(y,2);se(x,{chapter:2,classNames:"absolute z-10 right-0 top-0"});var f=e(x,2);n(f,{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"});var v=e(f,2);t(v,{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}]});var z=e(v,2);n(z,{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"});var j=e(z,2);t(j,{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}]});var k=e(j,2);n(k,{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"});var M=e(k,2);t(M,{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!"}]});var q=e(M,2);n(q,{title:"4. ¿Qué es una cabeza del modelo?",local:"4-qué-es-una-cabeza-del-modelo",headingTag:"h3"});var _=e(q,2);t(_,{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 Transformer 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}]});var T=e(_,2);{var R=a=>{var o=V(),s=c(o);n(s,{title:"5. ¿Qué es un AutoModel?",local:"5-qué-es-un-automodel",headingTag:"h3"});var l=e(s,2);t(l,{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!"}]}),r(a,o)},X=a=>{var o=V(),s=c(o);n(s,{title:"5. ¿Qué es un TFAutoModel?",local:"5-qué-es-un-tfautomodel",headingTag:"h3"});var l=e(s,2);t(l,{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!"}]}),r(a,o)};S(T,a=>{m(i)==="pt"?a(R):a(X,-1)})}var U=e(T,2);n(U,{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"});var E=e(U,2);t(E,{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}]});var I=e(E,2);n(I,{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"});var C=e(I,2);t(C,{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}]});var J=e(C,2);n(J,{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"});var Z=e(J,2);t(Z,{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."}]});var A=e(Z,2);n(A,{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"});var w=e(A,2);p(w,{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>)`,lang:"py",wrap:!1});var Q=e(w,2);t(Q,{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."}]});var W=e(Q,2);{var G=a=>{var o=H(),s=c(o);n(s,{title:"10. ¿Hay algo mal con el siguiente código?",local:"10-hay-algo-mal-con-el-siguiente-código",headingTag:"h3"});var l=e(s,2);p(l,{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)`,lang:"py",wrap:!1});var u=e(l,2);t(u,{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."}]}),r(a,o)},L=a=>{var o=H(),s=c(o);n(s,{title:"10. ¿Hay algo mal con el siguiente código?",local:"10-hay-algo-mal-con-el-siguiente-código",headingTag:"h3"});var l=e(s,2);p(l,{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)`,lang:"py",wrap:!1});var u=e(l,2);t(u,{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."}]}),r(a,o)};S(W,a=>{m(i)==="pt"?a(G):a(L,-1)})}var D=e(W,2);K(D,{source:"https://github.com/huggingface/course/blob/main/chapters/es/chapter2/9.mdx"}),ne(2),r(F,g),ae()}export{xe as component};

Xet Storage Details

Size:
17.5 kB
·
Xet hash:
55bfbfc7a710132f80636c9f370be832ee6de31b5f2c56e18f70607474c143e6

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.