import{s as je,o as Ue}from"../chunks/scheduler.37c15a92.js";import{S as Ie,i as Je,g as be,s as d,r as c,A as Ze,h as xe,f as n,c as u,j as _e,u as p,k as ye,y as Ae,a as l,v as f,t as i,b as we,d as m,w as $,p as Te}from"../chunks/index.2bf4358c.js";import{C as qe}from"../chunks/CodeBlock.4f5fc1ad.js";import{C as Ce}from"../chunks/CourseFloatingBanner.15ba07e6.js";import{Q as h}from"../chunks/Question.668688bc.js";import{F as Qe}from"../chunks/FrameworkSwitchCourse.8d4d4ab6.js";import{H as k}from"../chunks/Heading.8ada512a.js";function Ee(v){let r,g,s,b;return r=new k({props:{title:"5. O que seria um TFAutoModel ?",local:"5-o-que-seria-um-tfautomodel-",headingTag:"h3"}}),s=new h({props:{choices:[{text:"Um modelo que treina automaticamente com seus dados",explain:"Incorreto. Você está confundindo isto com nosso produto de <a href='https://huggingface.co/autonlp'>AutoNLP</a>?"},{text:"Um objeto que devolve a arquitetura correta com base em um checkpoint",explain:"Exatamente: o <code>TFAutoModel</code> só precisa saber o checkpoint para saber como inicializar então devolver a arquitetura correta.",correct:!0},{text:"Um modelo que detecta automaticamente a linguagem utilizada para suas entradas a fim de carregar os pesos corretos",explain:"Incorreto; embora alguns checkpoints e modelos sejam capazes de lidar com vários idiomas, não há ferramentas embutidas para seleção automática de checkpoints de acordo com o idioma. Você deve ir para o  <a href='https://huggingface.co/models'>Model Hub</a> para encontrar o melhor checkpoint para realizar sua tarefa!"}]}}),{c(){c(r.$$.fragment),g=d(),c(s.$$.fragment)},l(a){p(r.$$.fragment,a),g=u(a),p(s.$$.fragment,a)},m(a,x){f(r,a,x),l(a,g,x),f(s,a,x),b=!0},i(a){b||(m(r.$$.fragment,a),m(s.$$.fragment,a),b=!0)},o(a){i(r.$$.fragment,a),i(s.$$.fragment,a),b=!1},d(a){a&&n(g),$(r,a),$(s,a)}}}function We(v){let r,g,s,b;return r=new k({props:{title:"5. O que seria um AutoModel ?",local:"5-o-que-seria-um-automodel-",headingTag:"h3"}}),s=new h({props:{choices:[{text:"Um modelo que treina automaticamente com seus dados",explain:"Incorreto. Você está confundindo isto com nosso produto de <a href='https://huggingface.co/autonlp'>AutoNLP</a>?"},{text:"Um objeto que devolve a arquitetura correta com base em um checkpoint",explain:"Exatamente: o <code>AutoModel</code> só precisa saber o checkpoint para saber como inicializar então devolver a arquitetura correta.",correct:!0},{text:"Um modelo que detecta automaticamente a linguagem utilizada para suas entradas a fim de carregar os pesos corretos",explain:"Incorreto; embora alguns checkpoints e modelos sejam capazes de lidar com vários idiomas, não há ferramentas embutidas para seleção automática de checkpoints de acordo com o idioma. Você deve ir para o  <a href='https://huggingface.co/models'>Model Hub</a> para encontrar o melhor checkpoint para realizar sua tarefa!"}]}}),{c(){c(r.$$.fragment),g=d(),c(s.$$.fragment)},l(a){p(r.$$.fragment,a),g=u(a),p(s.$$.fragment,a)},m(a,x){f(r,a,x),l(a,g,x),f(s,a,x),b=!0},i(a){b||(m(r.$$.fragment,a),m(s.$$.fragment,a),b=!0)},o(a){i(r.$$.fragment,a),i(s.$$.fragment,a),b=!1},d(a){a&&n(g),$(r,a),$(s,a)}}}function Ve(v){let r,g,s,b,a,x;return r=new k({props:{title:"10. Tem algo errado com o código abaixo?",local:"10-tem-algo-errado-com-o-código-abaixo",headingTag:"h3"}}),s=new qe({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 h({props:{choices:[{text:"Não, parece correto.",explain:"Infelizmente, acoplar um modelo com um tokenizer que foi treinado com um checkpoint diferente raramente é uma boa ideia. O modelo não foi treinado para fazer sentido a partir da saída deste tokenizer, então a saída do modelo (isto se ele realmente funcionar!) não fará nenhum sentido."},{text:"O tokenizer e o modelo devem ser sempre a partir do mesmo checkpoint.",explain:"Correto!",correct:!0},{text:"É uma boa prática realizar o padding e truncar com o tokenizer, pois cada entrada é um batch.",explain:"É verdade que cada entrada do modelo precisa ser um batch. Entretanto, truncando ou realizando o padding desta sequência não faria necessariamente sentido, pois existe apenas uma delas, e estas são técnicas para criar batches de uma lista de sentenças."}]}}),{c(){c(r.$$.fragment),g=d(),c(s.$$.fragment),b=d(),c(a.$$.fragment)},l(o){p(r.$$.fragment,o),g=u(o),p(s.$$.fragment,o),b=u(o),p(a.$$.fragment,o)},m(o,q){f(r,o,q),l(o,g,q),f(s,o,q),l(o,b,q),f(a,o,q),x=!0},i(o){x||(m(r.$$.fragment,o),m(s.$$.fragment,o),m(a.$$.fragment,o),x=!0)},o(o){i(r.$$.fragment,o),i(s.$$.fragment,o),i(a.$$.fragment,o),x=!1},d(o){o&&(n(g),n(b)),$(r,o),$(s,o),$(a,o)}}}function Oe(v){let r,g,s,b,a,x;return r=new k({props:{title:"10. Tem algo errado com o código abaixo?",local:"10-tem-algo-errado-com-o-código-abaixo",headingTag:"h3"}}),s=new qe({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 h({props:{choices:[{text:"Não, parece correto.",explain:"Infelizmente, acoplar um modelo com um tokenizer que foi treinado com um checkpoint diferente raramente é uma boa ideia. O modelo não foi treinado para fazer sentido a partir da saída deste tokenizer, então a saída do modelo (isto se ele realmente funcionar!) não fará nenhum sentido."},{text:"O tokenizer e o modelo devem ser sempre a partir do mesmo checkpoint.",explain:"Correto!",correct:!0},{text:"É uma boa prática realizar o padding e truncar com o tokenizer, pois cada entrada é um batch.",explain:"É verdade que cada entrada do modelo precisa ser um batch. Entretanto, truncando ou realizando o padding desta sequência não faria necessariamente sentido, pois existe apenas uma delas, e estas são técnicas para criar batches de uma lista de sentenças."}]}}),{c(){c(r.$$.fragment),g=d(),c(s.$$.fragment),b=d(),c(a.$$.fragment)},l(o){p(r.$$.fragment,o),g=u(o),p(s.$$.fragment,o),b=u(o),p(a.$$.fragment,o)},m(o,q){f(r,o,q),l(o,g,q),f(s,o,q),l(o,b,q),f(a,o,q),x=!0},i(o){x||(m(r.$$.fragment,o),m(s.$$.fragment,o),m(a.$$.fragment,o),x=!0)},o(o){i(r.$$.fragment,o),i(s.$$.fragment,o),i(a.$$.fragment,o),x=!1},d(o){o&&(n(g),n(b)),$(r,o),$(s,o),$(a,o)}}}function Fe(v){let r,g,s,b,a,x,o,q,w,D,T,L,j,Y,U,K,I,ee,J,ae,Z,oe,A,te,C,re,z,M,N,Q,se,E,ne,W,ie,V,me,O,le,F,de,B,ue,X,ce,H,pe,_,y,G,P,fe;a=new Qe({props:{fw:v[0]}}),o=new k({props:{title:"Questionário de fim de capítulo",local:"questionário-de-fim-de-capítulo",headingTag:"h1"}}),w=new Ce({props:{chapter:2,classNames:"absolute z-10 right-0 top-0"}}),T=new k({props:{title:"1. Qual é a ordem do pipeline para a modelagem de linguagem?",local:"1-qual-é-a-ordem-do-pipeline-para-a-modelagem-de-linguagem",headingTag:"h3"}}),j=new h({props:{choices:[{text:"Primeiro, o modelo trata de textos e devolve previsões em bruto. O tokenizer, então, trás sentido a estas previsões e as converte de volta ao texto quando necessário.",explain:"O modelo não consegue entender o texto! O tokenizer deve primeiro simbolizar o texto e convertê-lo em IDs para que seja compreensível pelo modelo."},{text:"Primeiro, o tokenizer trata de textos e devolve as identificações (IDs). O modelo lida com estas identificações e produz uma predição, que pode ser algum texto.",explain:"A predição do modelo não pode ser feita de imediato. O tokenizer tem que ser usado para converter a predição de volta ao texto!"},{text:"O tokenizer trata de textos e devolve os IDs. O modelo lida com estes IDs e produz uma predição. O tokenizer pode então ser usado mais uma vez para converter estas previsões de volta para algum texto.",explain:"Correto! O tokenizer pode ser usado tanto para a tokenização quanto para a destokenização.",correct:!0}]}}),U=new k({props:{title:"2. Quantas dimensões tem o tensor do Transformer de base, e quais são elas?",local:"2-quantas-dimensões-tem-o-tensor-do-transformer-de-base-e-quais-são-elas",headingTag:"h3"}}),I=new h({props:{choices:[{text:"2: O comprimento da sequência e o tamanho do batch (lote)",explain:"Falso! A saída do tensor pelo modelo tem uma terceira dimensão: o tamanho das camadas ocultas"},{text:"2: O comprimento da sequência e o tamanho das camadas ocultas",explain:"Falso! Todos os Transformer lidam com batches, mesmo com uma única sequência; isso seria um tamanho de batch de 1!"},{text:"3: O comprimento da sequência, o tamanho do batch (lote) e o tamanho das camadas ocultas",explain:"Correto!",correct:!0}]}}),J=new k({props:{title:"3. Qual dos seguintes é um exemplo de Tokenização por sub-palavras?",local:"3-qual-dos-seguintes-é-um-exemplo-de-tokenização-por-sub-palavras",headingTag:"h3"}}),Z=new h({props:{choices:[{text:"WordPiece",explain:"Exatamente, este é um exemplo de Tokenização por sub-palavra!",correct:!0},{text:"Character-based tokenization",explain:"Character-based tokenization não é uma tokenização por sub-palavra!."},{text:"Divisão no espaço em branco e pontuação",explain:"Esse é um esquema de tokenization baseado em palavras!"},{text:"BPE",explain:"Exatamente, este é um exemplo de Tokenização por sub-palavra!",correct:!0},{text:"Unigram",explain:"Exatamente, este é um exemplo de Tokenização por sub-palavra!",correct:!0},{text:"Nenhuma das acimas",explain:"Errado!"}]}}),A=new k({props:{title:"4. O que é uma model head ?",local:"4-o-que-é-uma-model-head-",headingTag:"h3"}}),C=new h({props:{choices:[{text:"Um componente dos transformers de base que redireciona os tensores para suas camadas corretas",explain:"Incorreto! Não existe tal componente."},{text:"Também conhecido como mecanismo de auto-atenção (*self-attention*), ele adapta a representação de um símbolo de acordo com os outros tokens da sequência",explain:"Incorreto! A camada de auto-atenção contém 'attention heads', mas estas não são as heads de adaptação."},{text:"Um componente adicional, geralmente composto de uma ou poucas camadas, para converter as previsões do Transformer em uma saída específica de tarefa",explain:"É isso mesmo. As heads de adaptação, também conhecidos simplesmente como heads, surgem em diferentes formas: heads de modelagem de linguagem, heads de resposta a perguntas, heads de classificação de sequência.. ",correct:!0}]}});const ke=[We,Ee],R=[];function he(e,t){return e[0]==="pt"?0:1}z=he(v),M=R[z]=ke[z](v),Q=new k({props:{title:"6. Quais são as técnicas a serem observadas quando realizar batches com sequências de diferentes tamanhos?",local:"6-quais-são-as-técnicas-a-serem-observadas-quando-realizar-batches-com-sequências-de-diferentes-tamanhos",headingTag:"h3"}}),E=new h({props:{choices:[{text:"Truncar",explain:"Sim, a truncagem é uma forma correta de sequências de saída noturna para que elas se encaixem em forma retangular.No entanto, seria a única?",correct:!0},{text:"Retornar tensores",explain:"Enquanto as outras técnicas permitem retornar tensores retangulares, retornar tensores não é útil quando realizar batches de sequências juntas."},{text:"Padding",explain:"Sim, padding é uma forma correta para as sequências de saída para que elas se encaixem em uma forma retangular. No entanto, seria a única?",correct:!0},{text:"Attention masking",explain:"Exatamente! As attention masks são de primordial importância quando se trata de sequências de diferentes tamanhos. No entanto, essa não é a única técnica a ser conhecida.",correct:!0}]}}),W=new k({props:{title:"7. Qual é o objetivo de aplicar uma função SoftMax à saída de logits para um modelo de classificação sequencial??",local:"7-qual-é-o-objetivo-de-aplicar-uma-função-softmax-à-saída-de-logits-para-um-modelo-de-classificação-sequencial",headingTag:"h3"}}),V=new h({props:{choices:[{text:"Suaviza os logits para que sejam mais confiáveis.",explain:"Não, a função SoftMax não afeta a confiabilidade dos resultados."},{text:"Aplica um limite inferior e um limite superior para que eles sejam compreensíveis.",explain:"Correto! Os valores resultantes estão vinculados entre 0 e 1. Mas essa não é a única razão pela qual usamos uma função SoftMax.",correct:!0},{text:"A soma total da saída é 1, resultando em uma possível interpretação probabilística.",explain:"Correto! Mas essa não é a única razão pela qual usamos uma função SoftMax.",correct:!0}]}}),O=new k({props:{title:"8. Qual é o método core da API tokenizer?",local:"8-qual-é-o-método-core-da-api-tokenizer",headingTag:"h3"}}),F=new h({props:{choices:[{text:"<code>encode</code>, pois pode codificar texto em IDs e IDs em predições",explain:"Errado! O método <code>encode</code> existe na tokenização, porém não existe nos modelos."},{text:"Chamando diretamente o objeto de tokenização (tokenizer).",explain:"Exatamente! O método <code>__call__</code> do tokenizer é um método muito poderoso que pode lidar com praticamente qualquer coisa. É também o método usado para recuperar as predições de um modelo.",correct:!0},{text:"<code>padding</code>",explain:"Errado! O padding é muito útil, mas é apenas uma parte da API do tokenizer."},{text:"<code>tokenize</code>",explain:"O método <code>tokenize</code> é indiscutivelmente um dos métodos mais úteis, mas não é o núcleo do API do tokenizer."}]}}),B=new k({props:{title:"9. O que a variável result contém nesta pedaço de código?",local:"9-o-que-a-variável-result-contém-nesta-pedaço-de-código",headingTag:"h3"}}),X=new qe({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}}),H=new h({props:{choices:[{text:"Uma lista de strings, sendo cada uma delas um token",explain:"Exatamente! Converta isto em IDs, e envie-os para um modelo!",correct:!0},{text:"Uma lista de IDs",explain:"Incorreto; isto é o para o os métodos <code>__call__</code> ou <code>convert_tokens_to_ids</code>!"},{text:"Uma string contendo todos os tokens ",explain:"Isto seria subótimo, pois o objetivo é dividir a string em vários tokens."}]}});const ve=[Oe,Ve],S=[];function ze(e,t){return e[0]==="pt"?0:1}return _=ze(v),y=S[_]=ve[_](v),{c(){r=be("meta"),g=d(),s=be("p"),b=d(),c(a.$$.fragment),x=d(),c(o.$$.fragment),q=d(),c(w.$$.fragment),D=d(),c(T.$$.fragment),L=d(),c(j.$$.fragment),Y=d(),c(U.$$.fragment),K=d(),c(I.$$.fragment),ee=d(),c(J.$$.fragment),ae=d(),c(Z.$$.fragment),oe=d(),c(A.$$.fragment),te=d(),c(C.$$.fragment),re=d(),M.c(),N=d(),c(Q.$$.fragment),se=d(),c(E.$$.fragment),ne=d(),c(W.$$.fragment),ie=d(),c(V.$$.fragment),me=d(),c(O.$$.fragment),le=d(),c(F.$$.fragment),de=d(),c(B.$$.fragment),ue=d(),c(X.$$.fragment),ce=d(),c(H.$$.fragment),pe=d(),y.c(),G=d(),P=be("p"),this.h()},l(e){const t=Ze("svelte-u9bgzb",document.head);r=xe(t,"META",{name:!0,content:!0}),t.forEach(n),g=u(e),s=xe(e,"P",{}),_e(s).forEach(n),b=u(e),p(a.$$.fragment,e),x=u(e),p(o.$$.fragment,e),q=u(e),p(w.$$.fragment,e),D=u(e),p(T.$$.fragment,e),L=u(e),p(j.$$.fragment,e),Y=u(e),p(U.$$.fragment,e),K=u(e),p(I.$$.fragment,e),ee=u(e),p(J.$$.fragment,e),ae=u(e),p(Z.$$.fragment,e),oe=u(e),p(A.$$.fragment,e),te=u(e),p(C.$$.fragment,e),re=u(e),M.l(e),N=u(e),p(Q.$$.fragment,e),se=u(e),p(E.$$.fragment,e),ne=u(e),p(W.$$.fragment,e),ie=u(e),p(V.$$.fragment,e),me=u(e),p(O.$$.fragment,e),le=u(e),p(F.$$.fragment,e),de=u(e),p(B.$$.fragment,e),ue=u(e),p(X.$$.fragment,e),ce=u(e),p(H.$$.fragment,e),pe=u(e),y.l(e),G=u(e),P=xe(e,"P",{}),_e(P).forEach(n),this.h()},h(){ye(r,"name","hf:doc:metadata"),ye(r,"content",Be)},m(e,t){Ae(document.head,r),l(e,g,t),l(e,s,t),l(e,b,t),f(a,e,t),l(e,x,t),f(o,e,t),l(e,q,t),f(w,e,t),l(e,D,t),f(T,e,t),l(e,L,t),f(j,e,t),l(e,Y,t),f(U,e,t),l(e,K,t),f(I,e,t),l(e,ee,t),f(J,e,t),l(e,ae,t),f(Z,e,t),l(e,oe,t),f(A,e,t),l(e,te,t),f(C,e,t),l(e,re,t),R[z].m(e,t),l(e,N,t),f(Q,e,t),l(e,se,t),f(E,e,t),l(e,ne,t),f(W,e,t),l(e,ie,t),f(V,e,t),l(e,me,t),f(O,e,t),l(e,le,t),f(F,e,t),l(e,de,t),f(B,e,t),l(e,ue,t),f(X,e,t),l(e,ce,t),f(H,e,t),l(e,pe,t),S[_].m(e,t),l(e,G,t),l(e,P,t),fe=!0},p(e,[t]){const Me={};t&1&&(Me.fw=e[0]),a.$set(Me);let $e=z;z=he(e),z!==$e&&(Te(),i(R[$e],1,1,()=>{R[$e]=null}),we(),M=R[z],M||(M=R[z]=ke[z](e),M.c()),m(M,1),M.m(N.parentNode,N));let ge=_;_=ze(e),_!==ge&&(Te(),i(S[ge],1,1,()=>{S[ge]=null}),we(),y=S[_],y||(y=S[_]=ve[_](e),y.c()),m(y,1),y.m(G.parentNode,G))},i(e){fe||(m(a.$$.fragment,e),m(o.$$.fragment,e),m(w.$$.fragment,e),m(T.$$.fragment,e),m(j.$$.fragment,e),m(U.$$.fragment,e),m(I.$$.fragment,e),m(J.$$.fragment,e),m(Z.$$.fragment,e),m(A.$$.fragment,e),m(C.$$.fragment,e),m(M),m(Q.$$.fragment,e),m(E.$$.fragment,e),m(W.$$.fragment,e),m(V.$$.fragment,e),m(O.$$.fragment,e),m(F.$$.fragment,e),m(B.$$.fragment,e),m(X.$$.fragment,e),m(H.$$.fragment,e),m(y),fe=!0)},o(e){i(a.$$.fragment,e),i(o.$$.fragment,e),i(w.$$.fragment,e),i(T.$$.fragment,e),i(j.$$.fragment,e),i(U.$$.fragment,e),i(I.$$.fragment,e),i(J.$$.fragment,e),i(Z.$$.fragment,e),i(A.$$.fragment,e),i(C.$$.fragment,e),i(M),i(Q.$$.fragment,e),i(E.$$.fragment,e),i(W.$$.fragment,e),i(V.$$.fragment,e),i(O.$$.fragment,e),i(F.$$.fragment,e),i(B.$$.fragment,e),i(X.$$.fragment,e),i(H.$$.fragment,e),i(y),fe=!1},d(e){e&&(n(g),n(s),n(b),n(x),n(q),n(D),n(L),n(Y),n(K),n(ee),n(ae),n(oe),n(te),n(re),n(N),n(se),n(ne),n(ie),n(me),n(le),n(de),n(ue),n(ce),n(pe),n(G),n(P)),n(r),$(a,e),$(o,e),$(w,e),$(T,e),$(j,e),$(U,e),$(I,e),$(J,e),$(Z,e),$(A,e),$(C,e),R[z].d(e),$(Q,e),$(E,e),$(W,e),$(V,e),$(O,e),$(F,e),$(B,e),$(X,e),$(H,e),S[_].d(e)}}}const Be='{"title":"Questionário de fim de capítulo","local":"questionário-de-fim-de-capítulo","sections":[{"title":"1. Qual é a ordem do pipeline para a modelagem de linguagem?","local":"1-qual-é-a-ordem-do-pipeline-para-a-modelagem-de-linguagem","sections":[],"depth":3},{"title":"2. Quantas dimensões tem o tensor do Transformer de base, e quais são elas?","local":"2-quantas-dimensões-tem-o-tensor-do-transformer-de-base-e-quais-são-elas","sections":[],"depth":3},{"title":"3. Qual dos seguintes é um exemplo de Tokenização por sub-palavras?","local":"3-qual-dos-seguintes-é-um-exemplo-de-tokenização-por-sub-palavras","sections":[],"depth":3},{"title":"4. O que é uma model head ?","local":"4-o-que-é-uma-model-head-","sections":[],"depth":3},{"title":"5. O que seria um AutoModel ?","local":"5-o-que-seria-um-automodel-","sections":[],"depth":3},{"title":"5. O que seria um TFAutoModel ?","local":"5-o-que-seria-um-tfautomodel-","sections":[],"depth":3},{"title":"6. Quais são as técnicas a serem observadas quando realizar batches com sequências de diferentes tamanhos?","local":"6-quais-são-as-técnicas-a-serem-observadas-quando-realizar-batches-com-sequências-de-diferentes-tamanhos","sections":[],"depth":3},{"title":"7. Qual é o objetivo de aplicar uma função SoftMax à saída de logits para um modelo de classificação sequencial??","local":"7-qual-é-o-objetivo-de-aplicar-uma-função-softmax-à-saída-de-logits-para-um-modelo-de-classificação-sequencial","sections":[],"depth":3},{"title":"8. Qual é o método core da API tokenizer?","local":"8-qual-é-o-método-core-da-api-tokenizer","sections":[],"depth":3},{"title":"9. O que a variável result contém nesta pedaço de código?","local":"9-o-que-a-variável-result-contém-nesta-pedaço-de-código","sections":[],"depth":3},{"title":"10. Tem algo errado com o código abaixo?","local":"10-tem-algo-errado-com-o-código-abaixo","sections":[],"depth":3},{"title":"10. Tem algo errado com o código abaixo?","local":"10-tem-algo-errado-com-o-código-abaixo","sections":[],"depth":3}],"depth":1}';function Xe(v,r,g){let s="pt";return Ue(()=>{const b=new URLSearchParams(window.location.search);g(0,s=b.get("fw")||"pt")}),[s]}class Le extends Ie{constructor(r){super(),Je(this,r,Xe,Fe,je,{})}}export{Le as component};
