import{s as yl,o as kl}from"../chunks/scheduler.893fe8c9.js";import{S as Tl,i as gl,e as d,s as c,c as M,h as hl,a as b,d as r,b as u,f as bl,g as $,j as _,k as _l,l as wl,m as i,n as y,o as m,D as je,t as p,p as k,E as Ce}from"../chunks/index.6ee278c6.js";import{C as vl,H as Re,E as Jl}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.ea3ad860.js";import{Y as Ml}from"../chunks/Youtube.59d04f41.js";import{C as h}from"../chunks/CodeBlock.8bdd5f33.js";import{C as $l}from"../chunks/CourseFloatingBanner.c25cfa5e.js";import{F as jl}from"../chunks/FrameworkSwitchCourse.77a18d50.js";function Cl(f){let l,a;return l=new $l({props:{chapter:2,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/en/chapter2/section3_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/en/chapter2/section3_tf.ipynb"}]}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,s){y(l,t,s),a=!0},i(t){a||(p(l.$$.fragment,t),a=!0)},o(t){m(l.$$.fragment,t),a=!1},d(t){k(l,t)}}}function Ul(f){let l,a;return l=new $l({props:{chapter:2,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/en/chapter2/section3_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/en/chapter2/section3_pt.ipynb"}]}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,s){y(l,t,s),a=!0},i(t){a||(p(l.$$.fragment,t),a=!0)},o(t){m(l.$$.fragment,t),a=!1},d(t){k(l,t)}}}function zl(f){let l,a;return l=new Ml({props:{id:"d3JVgghSOew"}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,s){y(l,t,s),a=!0},i(t){a||(p(l.$$.fragment,t),a=!0)},o(t){m(l.$$.fragment,t),a=!1},d(t){k(l,t)}}}function Zl(f){let l,a;return l=new Ml({props:{id:"AhChOFRegn4"}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,s){y(l,t,s),a=!0},i(t){a||(p(l.$$.fragment,t),a=!0)},o(t){m(l.$$.fragment,t),a=!1},d(t){k(l,t)}}}function Wl(f){let l,a="În această secțiune vom analiza mai detaliat crearea și utilizarea unui model. Vom utiliza clasa <code>TFAutoModel</code>, care este utilă atunci când doriți să instanțați un model dintr-un checkpoint.",t,s,T="Clasa <code>TFAutoModel</code> și toate clasele înrudite cu aceasta sunt de fapt simple wrappere ale gamei largi de modele disponibile în bibliotecă. Este un wrapper inteligent, deoarece poate ghici automat arhitectura modelului corespunzător pentru checkpoint-ul dumneavoastră și apoi instanțiază un model cu această arhitectură.";return{c(){l=d("p"),l.innerHTML=a,t=c(),s=d("p"),s.innerHTML=T},l(o){l=b(o,"P",{"data-svelte-h":!0}),_(l)!=="svelte-b7aa80"&&(l.innerHTML=a),t=u(o),s=b(o,"P",{"data-svelte-h":!0}),_(s)!=="svelte-qkexty"&&(s.innerHTML=T)},m(o,g){i(o,l,g),i(o,t,g),i(o,s,g)},d(o){o&&(r(l),r(t),r(s))}}}function Bl(f){let l,a="În această secțiune vom analiza mai detaliat crearea și utilizarea unui model. Vom folosi clasa <code>AutoModel</code>, care este utilă atunci când doriți să instanțiați orice model dintr-un checkpoint.",t,s,T="Clasa <code>AutoModel</code> și toate celelalte clase înrudite sunt, de fapt, simple wrappere ale gamei largi de modele disponibile în bibliotecă. Este un wrapper inteligent, deoarece poate ghici automat arhitectura modelului corespunzător pentru checkpoint-ul dumneavoastră și apoi instanțiază un model cu această arhitectură.";return{c(){l=d("p"),l.innerHTML=a,t=c(),s=d("p"),s.innerHTML=T},l(o){l=b(o,"P",{"data-svelte-h":!0}),_(l)!=="svelte-1denuzc"&&(l.innerHTML=a),t=u(o),s=b(o,"P",{"data-svelte-h":!0}),_(s)!=="svelte-1wbp86k"&&(s.innerHTML=T)},m(o,g){i(o,l,g),i(o,t,g),i(o,s,g)},d(o){o&&(r(l),r(t),r(s))}}}function xl(f){let l,a;return l=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRDb25maWclMkMlMjBURkJlcnRNb2RlbCUwQSUwQSUyMyUyMENvbnN0cnVpcmVhJTIwY29uZmlndXJhJUM4JTlCaWVpJTBBY29uZmlnJTIwJTNEJTIwQmVydENvbmZpZygpJTBBJTBBJTIzJTIwJTIwQ29uc3RydWlyZWElMjBtb2RlbHVsdWklMjBwb3JuaW5kJTIwZGUlMjBsYSUyMGNvbmZpZ3VyYSVDOCU5QmllJTBBbW9kZWwlMjAlM0QlMjBURkJlcnRNb2RlbChjb25maWcp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertConfig, TFBertModel

<span class="hljs-comment"># Construirea configurației</span>
config = BertConfig()

<span class="hljs-comment">#  Construirea modelului pornind de la configurație</span>
model = TFBertModel(config)`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,s){y(l,t,s),a=!0},i(t){a||(p(l.$$.fragment,t),a=!0)},o(t){m(l.$$.fragment,t),a=!1},d(t){k(l,t)}}}function El(f){let l,a;return l=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRDb25maWclMkMlMjBCZXJ0TW9kZWwlMEElMEElMjMlMjBDb25zdHJ1aXJlYSUyMGNvbmZpZ3VyYSVDOCU5QmllaSUwQWNvbmZpZyUyMCUzRCUyMEJlcnRDb25maWcoKSUwQSUwQSUyMyUyMENvbnN0cnVpcmVhJTIwbW9kZWx1bHVpJTIwcG9ybmluZCUyMGRlJTIwbGElMjBjb25maWd1cmElQzglOUJpZSUwQW1vZGVsJTIwJTNEJTIwQmVydE1vZGVsKGNvbmZpZyk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertConfig, BertModel

<span class="hljs-comment"># Construirea configurației</span>
config = BertConfig()

<span class="hljs-comment"># Construirea modelului pornind de la configurație</span>
model = BertModel(config)`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,s){y(l,t,s),a=!0},i(t){a||(p(l.$$.fragment,t),a=!0)},o(t){m(l.$$.fragment,t),a=!1},d(t){k(l,t)}}}function Il(f){let l,a;return l=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRDb25maWclMkMlMjBURkJlcnRNb2RlbCUwQSUwQWNvbmZpZyUyMCUzRCUyMEJlcnRDb25maWcoKSUwQW1vZGVsJTIwJTNEJTIwVEZCZXJ0TW9kZWwoY29uZmlnKSUwQSUwQSUyMyUyME1vZGVsdWwlMjBlc3RlJTIwaW5pJUM4JTlCaWFsaXphdCUyMGFsZWF0b3JpdSE=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertConfig, TFBertModel

config = BertConfig()
model = TFBertModel(config)

<span class="hljs-comment"># Modelul este inițializat aleatoriu!</span>`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,s){y(l,t,s),a=!0},i(t){a||(p(l.$$.fragment,t),a=!0)},o(t){m(l.$$.fragment,t),a=!1},d(t){k(l,t)}}}function Vl(f){let l,a;return l=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRDb25maWclMkMlMjBCZXJ0TW9kZWwlMEElMEFjb25maWclMjAlM0QlMjBCZXJ0Q29uZmlnKCklMEFtb2RlbCUyMCUzRCUyMEJlcnRNb2RlbChjb25maWcpJTBBJTBBJTIzJTIwTW9kZWx1bCUyMGVzdGUlMjBpbmklQzglOUJpYWxpemF0JTIwYWxlYXRvcml1IQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertConfig, BertModel

config = BertConfig()
model = BertModel(config)

<span class="hljs-comment"># Modelul este inițializat aleatoriu!</span>`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,s){y(l,t,s),a=!0},i(t){a||(p(l.$$.fragment,t),a=!0)},o(t){m(l.$$.fragment,t),a=!1},d(t){k(l,t)}}}function Rl(f){let l,a,t,s="După cum ați văzut mai devreme, am putea înlocui <code>BertModel</code> cu clasa <code>AutoModel</code> echivalentă. Vom face acest lucru în continuare, deoarece acest lucru produce un cod independent de checkpoint-uri; dacă codul dumneavoastră funcționează pentru un checkpoint, ar trebui să funcționeze fără probleme pentru altul. Acest lucru este valabil chiar dacă arhitectura este diferită, atât timp cât checkpoint-ul a fost instruit pentru o sarcină similară (de exemplu, o sarcină de analiză a sentimentelor).",T;return l=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGQmVydE1vZGVsJTBBJTBBbW9kZWwlMjAlM0QlMjBURkJlcnRNb2RlbC5mcm9tX3ByZXRyYWluZWQoJTIyYmVydC1iYXNlLWNhc2VkJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFBertModel

model = TFBertModel.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)`,wrap:!1}}),{c(){M(l.$$.fragment),a=c(),t=d("p"),t.innerHTML=s},l(o){$(l.$$.fragment,o),a=u(o),t=b(o,"P",{"data-svelte-h":!0}),_(t)!=="svelte-p4tc5j"&&(t.innerHTML=s)},m(o,g){y(l,o,g),i(o,a,g),i(o,t,g),T=!0},i(o){T||(p(l.$$.fragment,o),T=!0)},o(o){m(l.$$.fragment,o),T=!1},d(o){o&&(r(a),r(t)),k(l,o)}}}function Hl(f){let l,a,t,s="După cum ați văzut mai devreme, am putea înlocui <code>BertModel</code> cu clasa <code>AutoModel</code> echivalentă. Vom face acest lucru în continuare, deoarece acest lucru produce un cod independent de checkpoint-uri; dacă codul dumneavoastră funcționează pentru un checkpoint, ar trebui să funcționeze fără probleme pentru altul. Acest lucru este valabil chiar dacă arhitectura este diferită, atât timp cât checkpoint-ul a fost instruit pentru o sarcină similară (de exemplu, o sarcină de analiză a sentimentelor).",T;return l=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRNb2RlbCUwQSUwQW1vZGVsJTIwJTNEJTIwQmVydE1vZGVsLmZyb21fcHJldHJhaW5lZCglMjJiZXJ0LWJhc2UtY2FzZWQlMjIp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertModel

model = BertModel.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)`,wrap:!1}}),{c(){M(l.$$.fragment),a=c(),t=d("p"),t.innerHTML=s},l(o){$(l.$$.fragment,o),a=u(o),t=b(o,"P",{"data-svelte-h":!0}),_(t)!=="svelte-p4tc5j"&&(t.innerHTML=s)},m(o,g){y(l,o,g),i(o,a,g),i(o,t,g),T=!0},i(o){T||(p(l.$$.fragment,o),T=!0)},o(o){m(l.$$.fragment,o),T=!1},d(o){o&&(r(a),r(t)),k(l,o)}}}function Nl(f){let l,a;return l=new h({props:{code:"bHMlMjBkaXJlY3Rvcnlfb25fbXlfY29tcHV0ZXIlMEElMEFjb25maWcuanNvbiUyMHRmX21vZGVsLmg1",highlighted:`ls <span class="hljs-keyword">directory_on_my_computer
</span>
<span class="hljs-built_in">config</span>.<span class="hljs-keyword">json </span>tf_model.h5`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,s){y(l,t,s),a=!0},i(t){a||(p(l.$$.fragment,t),a=!0)},o(t){m(l.$$.fragment,t),a=!1},d(t){k(l,t)}}}function Al(f){let l,a;return l=new h({props:{code:"bHMlMjBkaXJlY3Rvcnlfb25fbXlfY29tcHV0ZXIlMEElMEFjb25maWcuanNvbiUyMHB5dG9yY2hfbW9kZWwuc2FmZXRlbnNvcnM=",highlighted:`ls <span class="hljs-keyword">directory_on_my_computer
</span>
<span class="hljs-built_in">config</span>.<span class="hljs-keyword">json </span>pytorch_model.safetensors`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,s){y(l,t,s),a=!0},i(t){a||(p(l.$$.fragment,t),a=!0)},o(t){m(l.$$.fragment,t),a=!1},d(t){k(l,t)}}}function Gl(f){let l,a="Fișierul <em>tf_model.h5</em> este cunoscut sub numele de <em>state dictionary</em>; acesta conține toate weight-urile modelului dumneavoastră. Cele două fișiere merg mână în mână; configurația este necesară pentru a cunoaște arhitectura modelului, în timp ce weight-urile modelului sunt parametrii modelului.";return{c(){l=d("p"),l.innerHTML=a},l(t){l=b(t,"P",{"data-svelte-h":!0}),_(l)!=="svelte-14k6es9"&&(l.innerHTML=a)},m(t,s){i(t,l,s)},d(t){t&&r(l)}}}function Ql(f){let l,a="Fișierul <em>pytorch_model.safetensors</em> este cunoscut sub numele de <em>state dictionary</em>; acesta conține toate weight-urile modelului dumneavoastră. Cele două fișiere merg mână în mână; configurația este necesară pentru a cunoaște arhitectura modelului, în timp ce weight-urile modelului sunt parametrii modelului.";return{c(){l=d("p"),l.innerHTML=a},l(t){l=b(t,"P",{"data-svelte-h":!0}),_(l)!=="svelte-qjxs0s"&&(l.innerHTML=a)},m(t,s){i(t,l,s)},d(t){t&&r(l)}}}function Ll(f){let l,a;return l=new h({props:{code:"aW1wb3J0JTIwdGVuc29yZmxvdyUyMGFzJTIwdGYlMEElMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0Zi5jb25zdGFudChlbmNvZGVkX3NlcXVlbmNlcyk=",highlighted:`<span class="hljs-keyword">import</span> tensorflow <span class="hljs-keyword">as</span> tf

model_inputs = tf.constant(encoded_sequences)`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,s){y(l,t,s),a=!0},i(t){a||(p(l.$$.fragment,t),a=!0)},o(t){m(l.$$.fragment,t),a=!1},d(t){k(l,t)}}}function Sl(f){let l,a;return l=new h({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b3JjaC50ZW5zb3IoZW5jb2RlZF9zZXF1ZW5jZXMp",highlighted:`<span class="hljs-keyword">import</span> torch

model_inputs = torch.tensor(encoded_sequences)`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,s){y(l,t,s),a=!0},i(t){a||(p(l.$$.fragment,t),a=!0)},o(t){m(l.$$.fragment,t),a=!1},d(t){k(l,t)}}}function Fl(f){let l,a,t,s,T,o,g,Ne,N,Ae,w,v,Ue,J,j,ze,Ze,A,Zt="Cu toate acestea, dacă știți ce tip de model doriți să utilizați, puteți folosi direct clasa care definește arhitectura acestuia. Să aruncăm o privire la modul în care funcționează acest lucru cu un model BERT.",Ge,G,Qe,Q,Wt="Primul lucru pe care va trebui să îl facem pentru a inițializa un model BERT este să încărcăm un obiect de configurare:",Le,C,U,We,L,Bt="Configurația conține multe atribute care sunt utilizate pentru a construi modelul:",Se,S,Fe,F,De,D,xt="Deși nu ați văzut încă ce fac toate aceste atribute, ar trebui să recunoașteți unele dintre ele: atributul <code>hidden_size</code> definește dimensiunea vectorului <code>hidden_states</code>, iar <code>num_hidden_layers</code> definește numărul de straturi pe care le are modelul Transformer.",Pe,P,Xe,X,Et="Crearea unui model din configurația implicită îl inițializează cu valori aleatorii:",Ye,z,Z,Be,Y,It='Modelul poate fi utilizat în această stare, dar va produce rezultate neclare; mai întâi trebuie să fie antrenat. Am putea antrena modelul de la zero pentru sarcina în cauză, dar, după cum ați văzut în <a href="/course/chapter1">Capitolul 1</a>, acest lucru ar necesita mult timp și o mulțime de date și ar avea un impact semnificativ asupra mediului. Pentru a evita efortul inutil, este esențial să puteți partaja și reutiliza modelele care au fost deja antrenate.',qe,q,Vt="Încărcarea unui model Transformer care este deja instruit este simplă - putem face acest lucru utilizând metoda <code>from_pretrained()</code>, care este analogă metodei <code>from_pretrained()</code> în PyTorch:",Oe,W,B,xe,O,Rt='În exemplul de cod de mai sus nu am utilizat <code>BertConfig</code> și, în loc de acesta, am încărcat un model preantrenat prin intermediul identificatorului <code>bert-base-cased</code>. Acesta este un checkpoint al modelului care a fost antrenat chiar de autorii BERT; puteți găsi mai multe detalii despre acesta în <a href="https://huggingface.co/bert-base-cased" rel="nofollow">model card</a>.',Ke,K,Ht="Acest model este acum inițializat cu toate weight-urile din checkpoint. Acesta poate fi utilizat direct pentru inferență pe sarcinile pe care a fost antrenat și poate fi, de asemenea, ajustat pe o sarcină nouă. Prin antrenarea cu weight-uri preantrenate în prealabil, putem obține rapid rezultate bune.",et,ee,Nt="Greutățile au fost descărcate și stocate în memorie cache (astfel încât apelurile viitoare la metoda <code>from_pretrained()</code> nu le vor descărca din nou) în folderul cache, care are ca valoare implicită <em>~/.cache/huggingface/transformers</em>. Puteți personaliza folderul cache prin setarea variabilei de mediu <code>HF_HOME</code>.",tt,te,At='Identificatorul utilizat pentru încărcarea modelului poate fi identificatorul oricărui model de pe Model Hub, atâta timp cât acesta este compatibil cu arhitectura BERT. Lista completă a checkpoint-urilor BERT disponibile poate fi găsită <a href="https://huggingface.co/models?filter=bert" rel="nofollow">aici</a>.',lt,le,nt,ne,Gt="Salvarea unui model este la fel de ușoară ca încărcarea unuia - folosim metoda <code>save_pretrained()</code>, care este analogă metodei <code>from_pretrained()</code>:",at,ae,rt,re,Qt="Se salvează două fișiere pe disc:",it,x,E,Ee,ie,Lt="Dacă aruncați o privire la fișierul <em>config.json</em>, veți recunoaște atributele necesare pentru construirea arhitecturii modelului. Acest fișier conține, de asemenea, unele metadate, cum ar fi locul de origine al checkpoint-ului și ce versiune 🤗 Transformers ați folosit când ați salvat ultima dată checkpoint-ul.",st,Ie,se,ot,oe,St="Acum că știți cum să încărcați și să salvați un model, să încercăm să îl folosim pentru a face câteva predicții. Modelele Transformer pot procesa doar numere - numere pe care le generează tokenizatorul. Dar înainte de a discuta despre tokenizeri, să explorăm ce intrări acceptă modelul.",ct,ce,Ft="Tokenizerii se pot ocupa de transformarea intrărilor în tensori ai framework-ului corespunzător, dar pentru a vă ajuta să înțelegeți ce se întâmplă, vom arunca o privire rapidă la ceea ce trebuie făcut înainte de trimiterea intrărilor către model.",ut,ue,Dt="Să spunem că avem câteva secvențe:",mt,me,pt,pe,Pt="Tokenizatorul le convertește în indici de vocabular care sunt denumiți în mod obișnuit <em>input IDs</em>. Fiecare secvență este acum o listă de numere! Rezultatul este:",ft,fe,dt,de,Xt="Aceasta este o listă de secvențe codificate: o listă de liste. Tensorii acceptă numai forme dreptunghiulare (gândiți-vă la matrici). Acest “array” are deja o formă dreptunghiulară, astfel încât convertirea sa într-un tensor este ușoară:",bt,I,V,Ve,be,_t,_e,Yt="Utilizarea tensorilor cu ajutorul modelului este extrem de simplă - trebuie doar să apelăm modelul cu intrările:",Mt,Me,$t,$e,qt=`Deși modelul acceptă o mulțime de argumente diferite, doar ID-urile de intrare sunt necesare. Vom explica mai târziu ce fac celelalte argumente și când sunt necesare,
dar mai întâi trebuie să aruncăm o privire mai atentă la tokenizerii care construiesc intrările pe care un model Transformer le poate înțelege.`,yt,ye,kt,He,Tt;T=new jl({props:{fw:f[0]}}),g=new vl({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),N=new Re({props:{title:"Modele",local:"modele",headingTag:"h1"}});const Ot=[Ul,Cl],ke=[];function Kt(e,n){return e[0]==="pt"?0:1}w=Kt(f),v=ke[w]=Ot[w](f);const el=[Zl,zl],Te=[];function tl(e,n){return e[0]==="pt"?0:1}J=tl(f),j=Te[J]=el[J](f);function ll(e,n){return e[0]==="pt"?Bl:Wl}let gt=ll(f),R=gt(f);G=new Re({props:{title:"Crearea unui Transformer",local:"crearea-unui-transformer",headingTag:"h2"}});const nl=[El,xl],ge=[];function al(e,n){return e[0]==="pt"?0:1}C=al(f),U=ge[C]=nl[C](f),S=new h({props:{code:"cHJpbnQoY29uZmlnKQ==",highlighted:'<span class="hljs-built_in">print</span>(config)',wrap:!1}}),F=new h({props:{code:"QmVydENvbmZpZyUyMCU3QiUwQSUyMCUyMCU1Qi4uLiU1RCUwQSUyMCUyMCUyMmhpZGRlbl9zaXplJTIyJTNBJTIwNzY4JTJDJTBBJTIwJTIwJTIyaW50ZXJtZWRpYXRlX3NpemUlMjIlM0ElMjAzMDcyJTJDJTBBJTIwJTIwJTIybWF4X3Bvc2l0aW9uX2VtYmVkZGluZ3MlMjIlM0ElMjA1MTIlMkMlMEElMjAlMjAlMjJudW1fYXR0ZW50aW9uX2hlYWRzJTIyJTNBJTIwMTIlMkMlMEElMjAlMjAlMjJudW1faGlkZGVuX2xheWVycyUyMiUzQSUyMDEyJTJDJTBBJTIwJTIwJTVCLi4uJTVEJTBBJTdE",highlighted:`BertConfig {
  [...]
  <span class="hljs-string">&quot;hidden_size&quot;</span>: <span class="hljs-number">768</span>,
  <span class="hljs-string">&quot;intermediate_size&quot;</span>: <span class="hljs-number">3072</span>,
  <span class="hljs-string">&quot;max_position_embeddings&quot;</span>: <span class="hljs-number">512</span>,
  <span class="hljs-string">&quot;num_attention_heads&quot;</span>: <span class="hljs-number">12</span>,
  <span class="hljs-string">&quot;num_hidden_layers&quot;</span>: <span class="hljs-number">12</span>,
  [...]
}`,wrap:!1}}),P=new Re({props:{title:"Diferite metode de încărcare",local:"diferite-metode-de-încărcare",headingTag:"h3"}});const rl=[Vl,Il],he=[];function il(e,n){return e[0]==="pt"?0:1}z=il(f),Z=he[z]=rl[z](f);const sl=[Hl,Rl],we=[];function ol(e,n){return e[0]==="pt"?0:1}W=ol(f),B=we[W]=sl[W](f),le=new Re({props:{title:"Metode de salvare",local:"metode-de-salvare",headingTag:"h3"}}),ae=new h({props:{code:"bW9kZWwuc2F2ZV9wcmV0cmFpbmVkKCUyMmRpcmVjdG9yeV9vbl9teV9jb21wdXRlciUyMik=",highlighted:'model.save_pretrained(<span class="hljs-string">&quot;directory_on_my_computer&quot;</span>)',wrap:!1}});const cl=[Al,Nl],ve=[];function ul(e,n){return e[0]==="pt"?0:1}x=ul(f),E=ve[x]=cl[x](f);function ml(e,n){return e[0]==="pt"?Ql:Gl}let ht=ml(f),H=ht(f);se=new Re({props:{title:"Utilizarea unui model Transformer pentru inferență",local:"utilizarea-unui-model-transformer-pentru-inferență",headingTag:"h2"}}),me=new h({props:{code:"c2VxdWVuY2VzJTIwJTNEJTIwJTVCJTIySGVsbG8hJTIyJTJDJTIwJTIyQ29vbC4lMjIlMkMlMjAlMjJOaWNlISUyMiU1RA==",highlighted:'sequences = [<span class="hljs-string">&quot;Hello!&quot;</span>, <span class="hljs-string">&quot;Cool.&quot;</span>, <span class="hljs-string">&quot;Nice!&quot;</span>]',wrap:!1}}),fe=new h({props:{code:"ZW5jb2RlZF9zZXF1ZW5jZXMlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlNUIxMDElMkMlMjA3NTkyJTJDJTIwOTk5JTJDJTIwMTAyJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTVCMTAxJTJDJTIwNDY1OCUyQyUyMDEwMTIlMkMlMjAxMDIlNUQlMkMlMEElMjAlMjAlMjAlMjAlNUIxMDElMkMlMjAzODM1JTJDJTIwOTk5JTJDJTIwMTAyJTVEJTJDJTBBJTVE",highlighted:`encoded_sequences = [
    [<span class="hljs-number">101</span>, <span class="hljs-number">7592</span>, <span class="hljs-number">999</span>, <span class="hljs-number">102</span>],
    [<span class="hljs-number">101</span>, <span class="hljs-number">4658</span>, <span class="hljs-number">1012</span>, <span class="hljs-number">102</span>],
    [<span class="hljs-number">101</span>, <span class="hljs-number">3835</span>, <span class="hljs-number">999</span>, <span class="hljs-number">102</span>],
]`,wrap:!1}});const pl=[Sl,Ll],Je=[];function fl(e,n){return e[0]==="pt"?0:1}return I=fl(f),V=Je[I]=pl[I](f),be=new Re({props:{title:"Utilizarea tensorilor ca intrări în model",local:"utilizarea-tensorilor-ca-intrări-în-model",headingTag:"h3"}}),Me=new h({props:{code:"b3V0cHV0JTIwJTNEJTIwbW9kZWwobW9kZWxfaW5wdXRzKQ==",highlighted:"output = model(model_inputs)",wrap:!1}}),ye=new Jl({props:{source:"https://github.com/huggingface/course/blob/main/chapters/ro/chapter2/3.mdx"}}),{c(){l=d("meta"),a=c(),t=d("p"),s=c(),M(T.$$.fragment),o=c(),M(g.$$.fragment),Ne=c(),M(N.$$.fragment),Ae=c(),v.c(),Ue=c(),j.c(),ze=c(),R.c(),Ze=c(),A=d("p"),A.textContent=Zt,Ge=c(),M(G.$$.fragment),Qe=c(),Q=d("p"),Q.textContent=Wt,Le=c(),U.c(),We=c(),L=d("p"),L.textContent=Bt,Se=c(),M(S.$$.fragment),Fe=c(),M(F.$$.fragment),De=c(),D=d("p"),D.innerHTML=xt,Pe=c(),M(P.$$.fragment),Xe=c(),X=d("p"),X.textContent=Et,Ye=c(),Z.c(),Be=c(),Y=d("p"),Y.innerHTML=It,qe=c(),q=d("p"),q.innerHTML=Vt,Oe=c(),B.c(),xe=c(),O=d("p"),O.innerHTML=Rt,Ke=c(),K=d("p"),K.textContent=Ht,et=c(),ee=d("p"),ee.innerHTML=Nt,tt=c(),te=d("p"),te.innerHTML=At,lt=c(),M(le.$$.fragment),nt=c(),ne=d("p"),ne.innerHTML=Gt,at=c(),M(ae.$$.fragment),rt=c(),re=d("p"),re.textContent=Qt,it=c(),E.c(),Ee=c(),ie=d("p"),ie.innerHTML=Lt,st=c(),H.c(),Ie=c(),M(se.$$.fragment),ot=c(),oe=d("p"),oe.textContent=St,ct=c(),ce=d("p"),ce.textContent=Ft,ut=c(),ue=d("p"),ue.textContent=Dt,mt=c(),M(me.$$.fragment),pt=c(),pe=d("p"),pe.innerHTML=Pt,ft=c(),M(fe.$$.fragment),dt=c(),de=d("p"),de.textContent=Xt,bt=c(),V.c(),Ve=c(),M(be.$$.fragment),_t=c(),_e=d("p"),_e.textContent=Yt,Mt=c(),M(Me.$$.fragment),$t=c(),$e=d("p"),$e.textContent=qt,yt=c(),M(ye.$$.fragment),kt=c(),He=d("p"),this.h()},l(e){const n=hl("svelte-u9bgzb",document.head);l=b(n,"META",{name:!0,content:!0}),n.forEach(r),a=u(e),t=b(e,"P",{}),bl(t).forEach(r),s=u(e),$(T.$$.fragment,e),o=u(e),$(g.$$.fragment,e),Ne=u(e),$(N.$$.fragment,e),Ae=u(e),v.l(e),Ue=u(e),j.l(e),ze=u(e),R.l(e),Ze=u(e),A=b(e,"P",{"data-svelte-h":!0}),_(A)!=="svelte-wrgk0v"&&(A.textContent=Zt),Ge=u(e),$(G.$$.fragment,e),Qe=u(e),Q=b(e,"P",{"data-svelte-h":!0}),_(Q)!=="svelte-1su4aqc"&&(Q.textContent=Wt),Le=u(e),U.l(e),We=u(e),L=b(e,"P",{"data-svelte-h":!0}),_(L)!=="svelte-1q56w5h"&&(L.textContent=Bt),Se=u(e),$(S.$$.fragment,e),Fe=u(e),$(F.$$.fragment,e),De=u(e),D=b(e,"P",{"data-svelte-h":!0}),_(D)!=="svelte-ocfq36"&&(D.innerHTML=xt),Pe=u(e),$(P.$$.fragment,e),Xe=u(e),X=b(e,"P",{"data-svelte-h":!0}),_(X)!=="svelte-n920qh"&&(X.textContent=Et),Ye=u(e),Z.l(e),Be=u(e),Y=b(e,"P",{"data-svelte-h":!0}),_(Y)!=="svelte-16cf2kl"&&(Y.innerHTML=It),qe=u(e),q=b(e,"P",{"data-svelte-h":!0}),_(q)!=="svelte-rt4u8c"&&(q.innerHTML=Vt),Oe=u(e),B.l(e),xe=u(e),O=b(e,"P",{"data-svelte-h":!0}),_(O)!=="svelte-18vhbbp"&&(O.innerHTML=Rt),Ke=u(e),K=b(e,"P",{"data-svelte-h":!0}),_(K)!=="svelte-1vogkl6"&&(K.textContent=Ht),et=u(e),ee=b(e,"P",{"data-svelte-h":!0}),_(ee)!=="svelte-1mjjruz"&&(ee.innerHTML=Nt),tt=u(e),te=b(e,"P",{"data-svelte-h":!0}),_(te)!=="svelte-11yh9v2"&&(te.innerHTML=At),lt=u(e),$(le.$$.fragment,e),nt=u(e),ne=b(e,"P",{"data-svelte-h":!0}),_(ne)!=="svelte-1j9ayn7"&&(ne.innerHTML=Gt),at=u(e),$(ae.$$.fragment,e),rt=u(e),re=b(e,"P",{"data-svelte-h":!0}),_(re)!=="svelte-k0x63"&&(re.textContent=Qt),it=u(e),E.l(e),Ee=u(e),ie=b(e,"P",{"data-svelte-h":!0}),_(ie)!=="svelte-o0a46v"&&(ie.innerHTML=Lt),st=u(e),H.l(e),Ie=u(e),$(se.$$.fragment,e),ot=u(e),oe=b(e,"P",{"data-svelte-h":!0}),_(oe)!=="svelte-1xgki2u"&&(oe.textContent=St),ct=u(e),ce=b(e,"P",{"data-svelte-h":!0}),_(ce)!=="svelte-18f99cr"&&(ce.textContent=Ft),ut=u(e),ue=b(e,"P",{"data-svelte-h":!0}),_(ue)!=="svelte-1xjuqha"&&(ue.textContent=Dt),mt=u(e),$(me.$$.fragment,e),pt=u(e),pe=b(e,"P",{"data-svelte-h":!0}),_(pe)!=="svelte-imsdi8"&&(pe.innerHTML=Pt),ft=u(e),$(fe.$$.fragment,e),dt=u(e),de=b(e,"P",{"data-svelte-h":!0}),_(de)!=="svelte-133z32a"&&(de.textContent=Xt),bt=u(e),V.l(e),Ve=u(e),$(be.$$.fragment,e),_t=u(e),_e=b(e,"P",{"data-svelte-h":!0}),_(_e)!=="svelte-rcvdct"&&(_e.textContent=Yt),Mt=u(e),$(Me.$$.fragment,e),$t=u(e),$e=b(e,"P",{"data-svelte-h":!0}),_($e)!=="svelte-1eymbdf"&&($e.textContent=qt),yt=u(e),$(ye.$$.fragment,e),kt=u(e),He=b(e,"P",{}),bl(He).forEach(r),this.h()},h(){_l(l,"name","hf:doc:metadata"),_l(l,"content",Dl)},m(e,n){wl(document.head,l),i(e,a,n),i(e,t,n),i(e,s,n),y(T,e,n),i(e,o,n),y(g,e,n),i(e,Ne,n),y(N,e,n),i(e,Ae,n),ke[w].m(e,n),i(e,Ue,n),Te[J].m(e,n),i(e,ze,n),R.m(e,n),i(e,Ze,n),i(e,A,n),i(e,Ge,n),y(G,e,n),i(e,Qe,n),i(e,Q,n),i(e,Le,n),ge[C].m(e,n),i(e,We,n),i(e,L,n),i(e,Se,n),y(S,e,n),i(e,Fe,n),y(F,e,n),i(e,De,n),i(e,D,n),i(e,Pe,n),y(P,e,n),i(e,Xe,n),i(e,X,n),i(e,Ye,n),he[z].m(e,n),i(e,Be,n),i(e,Y,n),i(e,qe,n),i(e,q,n),i(e,Oe,n),we[W].m(e,n),i(e,xe,n),i(e,O,n),i(e,Ke,n),i(e,K,n),i(e,et,n),i(e,ee,n),i(e,tt,n),i(e,te,n),i(e,lt,n),y(le,e,n),i(e,nt,n),i(e,ne,n),i(e,at,n),y(ae,e,n),i(e,rt,n),i(e,re,n),i(e,it,n),ve[x].m(e,n),i(e,Ee,n),i(e,ie,n),i(e,st,n),H.m(e,n),i(e,Ie,n),y(se,e,n),i(e,ot,n),i(e,oe,n),i(e,ct,n),i(e,ce,n),i(e,ut,n),i(e,ue,n),i(e,mt,n),y(me,e,n),i(e,pt,n),i(e,pe,n),i(e,ft,n),y(fe,e,n),i(e,dt,n),i(e,de,n),i(e,bt,n),Je[I].m(e,n),i(e,Ve,n),y(be,e,n),i(e,_t,n),i(e,_e,n),i(e,Mt,n),y(Me,e,n),i(e,$t,n),i(e,$e,n),i(e,yt,n),y(ye,e,n),i(e,kt,n),i(e,He,n),Tt=!0},p(e,[n]){const dl={};n&1&&(dl.fw=e[0]),T.$set(dl);let wt=w;w=Kt(e),w!==wt&&(Ce(),m(ke[wt],1,1,()=>{ke[wt]=null}),je(),v=ke[w],v||(v=ke[w]=Ot[w](e),v.c()),p(v,1),v.m(Ue.parentNode,Ue));let vt=J;J=tl(e),J!==vt&&(Ce(),m(Te[vt],1,1,()=>{Te[vt]=null}),je(),j=Te[J],j||(j=Te[J]=el[J](e),j.c()),p(j,1),j.m(ze.parentNode,ze)),gt!==(gt=ll(e))&&(R.d(1),R=gt(e),R&&(R.c(),R.m(Ze.parentNode,Ze)));let Jt=C;C=al(e),C!==Jt&&(Ce(),m(ge[Jt],1,1,()=>{ge[Jt]=null}),je(),U=ge[C],U||(U=ge[C]=nl[C](e),U.c()),p(U,1),U.m(We.parentNode,We));let jt=z;z=il(e),z!==jt&&(Ce(),m(he[jt],1,1,()=>{he[jt]=null}),je(),Z=he[z],Z||(Z=he[z]=rl[z](e),Z.c()),p(Z,1),Z.m(Be.parentNode,Be));let Ct=W;W=ol(e),W!==Ct&&(Ce(),m(we[Ct],1,1,()=>{we[Ct]=null}),je(),B=we[W],B||(B=we[W]=sl[W](e),B.c()),p(B,1),B.m(xe.parentNode,xe));let Ut=x;x=ul(e),x!==Ut&&(Ce(),m(ve[Ut],1,1,()=>{ve[Ut]=null}),je(),E=ve[x],E||(E=ve[x]=cl[x](e),E.c()),p(E,1),E.m(Ee.parentNode,Ee)),ht!==(ht=ml(e))&&(H.d(1),H=ht(e),H&&(H.c(),H.m(Ie.parentNode,Ie)));let zt=I;I=fl(e),I!==zt&&(Ce(),m(Je[zt],1,1,()=>{Je[zt]=null}),je(),V=Je[I],V||(V=Je[I]=pl[I](e),V.c()),p(V,1),V.m(Ve.parentNode,Ve))},i(e){Tt||(p(T.$$.fragment,e),p(g.$$.fragment,e),p(N.$$.fragment,e),p(v),p(j),p(G.$$.fragment,e),p(U),p(S.$$.fragment,e),p(F.$$.fragment,e),p(P.$$.fragment,e),p(Z),p(B),p(le.$$.fragment,e),p(ae.$$.fragment,e),p(E),p(se.$$.fragment,e),p(me.$$.fragment,e),p(fe.$$.fragment,e),p(V),p(be.$$.fragment,e),p(Me.$$.fragment,e),p(ye.$$.fragment,e),Tt=!0)},o(e){m(T.$$.fragment,e),m(g.$$.fragment,e),m(N.$$.fragment,e),m(v),m(j),m(G.$$.fragment,e),m(U),m(S.$$.fragment,e),m(F.$$.fragment,e),m(P.$$.fragment,e),m(Z),m(B),m(le.$$.fragment,e),m(ae.$$.fragment,e),m(E),m(se.$$.fragment,e),m(me.$$.fragment,e),m(fe.$$.fragment,e),m(V),m(be.$$.fragment,e),m(Me.$$.fragment,e),m(ye.$$.fragment,e),Tt=!1},d(e){e&&(r(a),r(t),r(s),r(o),r(Ne),r(Ae),r(Ue),r(ze),r(Ze),r(A),r(Ge),r(Qe),r(Q),r(Le),r(We),r(L),r(Se),r(Fe),r(De),r(D),r(Pe),r(Xe),r(X),r(Ye),r(Be),r(Y),r(qe),r(q),r(Oe),r(xe),r(O),r(Ke),r(K),r(et),r(ee),r(tt),r(te),r(lt),r(nt),r(ne),r(at),r(rt),r(re),r(it),r(Ee),r(ie),r(st),r(Ie),r(ot),r(oe),r(ct),r(ce),r(ut),r(ue),r(mt),r(pt),r(pe),r(ft),r(dt),r(de),r(bt),r(Ve),r(_t),r(_e),r(Mt),r($t),r($e),r(yt),r(kt),r(He)),r(l),k(T,e),k(g,e),k(N,e),ke[w].d(e),Te[J].d(e),R.d(e),k(G,e),ge[C].d(e),k(S,e),k(F,e),k(P,e),he[z].d(e),we[W].d(e),k(le,e),k(ae,e),ve[x].d(e),H.d(e),k(se,e),k(me,e),k(fe,e),Je[I].d(e),k(be,e),k(Me,e),k(ye,e)}}}const Dl='{"title":"Modele","local":"modele","sections":[{"title":"Crearea unui Transformer","local":"crearea-unui-transformer","sections":[{"title":"Diferite metode de încărcare","local":"diferite-metode-de-încărcare","sections":[],"depth":3},{"title":"Metode de salvare","local":"metode-de-salvare","sections":[],"depth":3}],"depth":2},{"title":"Utilizarea unui model Transformer pentru inferență","local":"utilizarea-unui-model-transformer-pentru-inferență","sections":[{"title":"Utilizarea tensorilor ca intrări în model","local":"utilizarea-tensorilor-ca-intrări-în-model","sections":[],"depth":3}],"depth":2}],"depth":1}';function Pl(f,l,a){let t="pt";return kl(()=>{const s=new URLSearchParams(window.location.search);a(0,t=s.get("fw")||"pt")}),[t]}class ln extends Tl{constructor(l){super(),gl(this,l,Pl,Fl,yl,{})}}export{ln as component};
