import{s as Ze,o as Ce}from"../chunks/scheduler.cc52f4b9.js";import{S as Ee,i as Qe,e as he,s as d,c,h as Ae,a as ve,d as n,b as u,f as je,g as p,k as Ue,l as We,m as l,n as f,o as i,u as Ie,t as m,p as $,v as Je}from"../chunks/index.d2856393.js";import{C as Ve,H as k,E as Oe}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.e6659d4e.js";import{C as ze}from"../chunks/CodeBlock.9c179ed7.js";import{C as Fe}from"../chunks/CourseFloatingBanner.1c404cc0.js";import{Q as h}from"../chunks/Question.f0168bb6.js";import{F as Be}from"../chunks/FrameworkSwitchCourse.22a5e932.js";function Se(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 Xe(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 He(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 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 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 Re(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 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 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 Ne(v){let r,g,s,b,a,x,o,q,w,Y,T,K,j,ee,U,ae,I,te,J,oe,Z,re,C,se,E,ne,Q,ie,z,M,P,A,me,W,le,V,de,O,ue,F,ce,B,pe,S,fe,X,$e,H,ge,y,_,D,R,be,L,xe;a=new Be({props:{fw:v[0]}}),o=new Ve({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),w=new k({props:{title:"Questionário de fim de capítulo",local:"questionário-de-fim-de-capítulo",headingTag:"h1"}}),T=new Fe({props:{chapter:2,classNames:"absolute z-10 right-0 top-0"}}),j=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"}}),U=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}]}}),I=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"}}),J=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}]}}),Z=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"}}),C=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!"}]}}),E=new k({props:{title:"4. O que é uma model head ?",local:"4-o-que-é-uma-model-head-",headingTag:"h3"}}),Q=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 Me=[Xe,Se],N=[];function ye(e,t){return e[0]==="pt"?0:1}z=ye(v),M=N[z]=Me[z](v),A=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"}}),W=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}]}}),V=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"}}),O=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}]}}),F=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"}}),B=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."}]}}),S=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 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}}),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 _e=[Re,He],G=[];function we(e,t){return e[0]==="pt"?0:1}return y=we(v),_=G[y]=_e[y](v),R=new Oe({props:{source:"https://github.com/huggingface/course/blob/main/chapters/pt/chapter2/8.mdx"}}),{c(){r=he("meta"),g=d(),s=he("p"),b=d(),c(a.$$.fragment),x=d(),c(o.$$.fragment),q=d(),c(w.$$.fragment),Y=d(),c(T.$$.fragment),K=d(),c(j.$$.fragment),ee=d(),c(U.$$.fragment),ae=d(),c(I.$$.fragment),te=d(),c(J.$$.fragment),oe=d(),c(Z.$$.fragment),re=d(),c(C.$$.fragment),se=d(),c(E.$$.fragment),ne=d(),c(Q.$$.fragment),ie=d(),M.c(),P=d(),c(A.$$.fragment),me=d(),c(W.$$.fragment),le=d(),c(V.$$.fragment),de=d(),c(O.$$.fragment),ue=d(),c(F.$$.fragment),ce=d(),c(B.$$.fragment),pe=d(),c(S.$$.fragment),fe=d(),c(X.$$.fragment),$e=d(),c(H.$$.fragment),ge=d(),_.c(),D=d(),c(R.$$.fragment),be=d(),L=he("p"),this.h()},l(e){const t=Ae("svelte-u9bgzb",document.head);r=ve(t,"META",{name:!0,content:!0}),t.forEach(n),g=u(e),s=ve(e,"P",{}),je(s).forEach(n),b=u(e),p(a.$$.fragment,e),x=u(e),p(o.$$.fragment,e),q=u(e),p(w.$$.fragment,e),Y=u(e),p(T.$$.fragment,e),K=u(e),p(j.$$.fragment,e),ee=u(e),p(U.$$.fragment,e),ae=u(e),p(I.$$.fragment,e),te=u(e),p(J.$$.fragment,e),oe=u(e),p(Z.$$.fragment,e),re=u(e),p(C.$$.fragment,e),se=u(e),p(E.$$.fragment,e),ne=u(e),p(Q.$$.fragment,e),ie=u(e),M.l(e),P=u(e),p(A.$$.fragment,e),me=u(e),p(W.$$.fragment,e),le=u(e),p(V.$$.fragment,e),de=u(e),p(O.$$.fragment,e),ue=u(e),p(F.$$.fragment,e),ce=u(e),p(B.$$.fragment,e),pe=u(e),p(S.$$.fragment,e),fe=u(e),p(X.$$.fragment,e),$e=u(e),p(H.$$.fragment,e),ge=u(e),_.l(e),D=u(e),p(R.$$.fragment,e),be=u(e),L=ve(e,"P",{}),je(L).forEach(n),this.h()},h(){Ue(r,"name","hf:doc:metadata"),Ue(r,"content",Ge)},m(e,t){We(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,Y,t),f(T,e,t),l(e,K,t),f(j,e,t),l(e,ee,t),f(U,e,t),l(e,ae,t),f(I,e,t),l(e,te,t),f(J,e,t),l(e,oe,t),f(Z,e,t),l(e,re,t),f(C,e,t),l(e,se,t),f(E,e,t),l(e,ne,t),f(Q,e,t),l(e,ie,t),N[z].m(e,t),l(e,P,t),f(A,e,t),l(e,me,t),f(W,e,t),l(e,le,t),f(V,e,t),l(e,de,t),f(O,e,t),l(e,ue,t),f(F,e,t),l(e,ce,t),f(B,e,t),l(e,pe,t),f(S,e,t),l(e,fe,t),f(X,e,t),l(e,$e,t),f(H,e,t),l(e,ge,t),G[y].m(e,t),l(e,D,t),f(R,e,t),l(e,be,t),l(e,L,t),xe=!0},p(e,[t]){const Te={};t&1&&(Te.fw=e[0]),a.$set(Te);let qe=z;z=ye(e),z!==qe&&(Je(),i(N[qe],1,1,()=>{N[qe]=null}),Ie(),M=N[z],M||(M=N[z]=Me[z](e),M.c()),m(M,1),M.m(P.parentNode,P));let ke=y;y=we(e),y!==ke&&(Je(),i(G[ke],1,1,()=>{G[ke]=null}),Ie(),_=G[y],_||(_=G[y]=_e[y](e),_.c()),m(_,1),_.m(D.parentNode,D))},i(e){xe||(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(C.$$.fragment,e),m(E.$$.fragment,e),m(Q.$$.fragment,e),m(M),m(A.$$.fragment,e),m(W.$$.fragment,e),m(V.$$.fragment,e),m(O.$$.fragment,e),m(F.$$.fragment,e),m(B.$$.fragment,e),m(S.$$.fragment,e),m(X.$$.fragment,e),m(H.$$.fragment,e),m(_),m(R.$$.fragment,e),xe=!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(C.$$.fragment,e),i(E.$$.fragment,e),i(Q.$$.fragment,e),i(M),i(A.$$.fragment,e),i(W.$$.fragment,e),i(V.$$.fragment,e),i(O.$$.fragment,e),i(F.$$.fragment,e),i(B.$$.fragment,e),i(S.$$.fragment,e),i(X.$$.fragment,e),i(H.$$.fragment,e),i(_),i(R.$$.fragment,e),xe=!1},d(e){e&&(n(g),n(s),n(b),n(x),n(q),n(Y),n(K),n(ee),n(ae),n(te),n(oe),n(re),n(se),n(ne),n(ie),n(P),n(me),n(le),n(de),n(ue),n(ce),n(pe),n(fe),n($e),n(ge),n(D),n(be),n(L)),n(r),$(a,e),$(o,e),$(w,e),$(T,e),$(j,e),$(U,e),$(I,e),$(J,e),$(Z,e),$(C,e),$(E,e),$(Q,e),N[z].d(e),$(A,e),$(W,e),$(V,e),$(O,e),$(F,e),$(B,e),$(S,e),$(X,e),$(H,e),G[y].d(e),$(R,e)}}}const Ge='{"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 Pe(v,r,g){let s="pt";return Ce(()=>{const b=new URLSearchParams(window.location.search);g(0,s=b.get("fw")||"pt")}),[s]}class oa extends Ee{constructor(r){super(),Qe(this,r,Pe,Ne,Ze,{})}}export{oa as component};
