import{s as X,o as Y,n as Z}from"../chunks/scheduler.37c15a92.js";import{S as ee,i as te,g as m,s as r,r as y,A as ie,h as u,f as i,c as s,j as K,u as S,x,k as Q,y as oe,a as o,v as E,d as F,t as j,w as N,m as V,n as W}from"../chunks/index.2bf4358c.js";import{T as ne}from"../chunks/Tip.363c041f.js";import{C as le}from"../chunks/CourseFloatingBanner.06521e8b.js";import{H as ae}from"../chunks/Heading.8ada512a.js";function re(T){let l,a,p="creare un account",c;return{c(){l=V("⚠️ Per poter usufruire di tutte le funzioni disponibili con il Model Hub e i 🤗 Transformers, si consiglia di "),a=m("a"),a.textContent=p,c=V("."),this.h()},l(n){l=W(n,"⚠️ Per poter usufruire di tutte le funzioni disponibili con il Model Hub e i 🤗 Transformers, si consiglia di "),a=u(n,"A",{href:!0,"data-svelte-h":!0}),x(a)!=="svelte-nxfwn4"&&(a.textContent=p),c=W(n,"."),this.h()},h(){Q(a,"href","https://huggingface.co/join")},m(n,d){o(n,l,d),o(n,a,d),o(n,c,d)},p:Z,d(n){n&&(i(l),i(a),i(c))}}}function se(T){let l,a,p,c,n,d,v,P,$,U=`Come si è visto nel <a href="/course/chapter1">Capitolo 1</a>,  I modelli Transformers sono solitamente molto grandi.
Con milioni o decine di <em>miliardi</em> di parametri, l’addestramento e la distribuzione di questi modelli è un’impresa complicata.
Inoltre, con i nuovi modelli che vengono rilasciati quasi ogni giorno e ognuno dei quali ha una propria implementazione, provarli tutti non è un lavoro facile.`,L,h,B="La libreria 🤗 Transformers è stata creata per risolvere questo problema. Il suo obiettivo è fornire un’unica API attraverso la quale caricare, addestrare e salvare qualsiasi modello Transformer. Le caratteristiche principali della libreria sono:",M,g,O="<li><strong>Facilità d’uso</strong>: È possibile scaricare, caricare ed utilizzare un modello NLP all’avanguardia per fare inferenza con appena due righe di codice.</li> <li><strong>Flessibilità</strong>: Al loro interno, tutti i modelli sono semplici classi PyTorch <code>nn.Module</code> o TensorFlow <code>tf.keras.Model</code> e possono essere gestiti come qualsiasi altro modello nei rispettivi framework di apprendimento automatico (ML).</li> <li><strong>Semplicità</strong>: La libreria non contiene quasi nessuna astrazione. Il concetto di “All in one file” è fondamentale: il forward pass di un modello è interamente definito in un singolo file, in modo che il codice stesso sia comprensibile e violabile.</li>",w,b,R="Quest’ultima caratteristica rende 🤗 Transformers molto diversi da altre librerie ML. I modelli non sono costruiti su moduli condivisi tra i file, ma ogni modello ha i propri layers. Oltre a rendere i modelli più accessibili e comprensibili, questo permette di sperimentare facilmente su un modello senza influenzare gli altri.",q,z,D='Questo capitolo inizierà con un esempio in cui usiamo un modello e un tokenizer insieme per replicare la funzione <code>pipeline()</code> introdotta nel <a href="/course/chapter1">Capitolo 1</a>. Successivamente, parleremo dell’API del modello: ci immergeremo nelle classi del modello e della configurazione e mostreremo come caricare un modello e come esso elabora gli input numerici per produrre previsioni.',H,_,G="Successivamente vedremo l’API del tokenizer, che è l’altro componente principale della funzione <code>pipeline()</code>. I tokenizer si occupano della prima e dell’ultima fase di elaborazione, gestendo la conversione da testo a input numerici per la rete neurale e la conversione di nuovo in testo quando è necessario. Infine, mostreremo come gestire l’invio di più frasi a un modello in un batch preparato, per poi concludere il tutto con un’analisi più approfondita della funzione di alto livello <code>tokenizer()</code>.",I,f,k,C,A;return n=new ae({props:{title:"Introduzione",local:"introduzione",headingTag:"h1"}}),v=new le({props:{chapter:2,classNames:"absolute z-10 right-0 top-0"}}),f=new ne({props:{$$slots:{default:[re]},$$scope:{ctx:T}}}),{c(){l=m("meta"),a=r(),p=m("p"),c=r(),y(n.$$.fragment),d=r(),y(v.$$.fragment),P=r(),$=m("p"),$.innerHTML=U,L=r(),h=m("p"),h.textContent=B,M=r(),g=m("ul"),g.innerHTML=O,w=r(),b=m("p"),b.textContent=R,q=r(),z=m("p"),z.innerHTML=D,H=r(),_=m("p"),_.innerHTML=G,I=r(),y(f.$$.fragment),k=r(),C=m("p"),this.h()},l(e){const t=ie("svelte-u9bgzb",document.head);l=u(t,"META",{name:!0,content:!0}),t.forEach(i),a=s(e),p=u(e,"P",{}),K(p).forEach(i),c=s(e),S(n.$$.fragment,e),d=s(e),S(v.$$.fragment,e),P=s(e),$=u(e,"P",{"data-svelte-h":!0}),x($)!=="svelte-1opxtn"&&($.innerHTML=U),L=s(e),h=u(e,"P",{"data-svelte-h":!0}),x(h)!=="svelte-18vkpnp"&&(h.textContent=B),M=s(e),g=u(e,"UL",{"data-svelte-h":!0}),x(g)!=="svelte-1y8bqb2"&&(g.innerHTML=O),w=s(e),b=u(e,"P",{"data-svelte-h":!0}),x(b)!=="svelte-1uva84d"&&(b.textContent=R),q=s(e),z=u(e,"P",{"data-svelte-h":!0}),x(z)!=="svelte-m1wfcs"&&(z.innerHTML=D),H=s(e),_=u(e,"P",{"data-svelte-h":!0}),x(_)!=="svelte-1t2ycev"&&(_.innerHTML=G),I=s(e),S(f.$$.fragment,e),k=s(e),C=u(e,"P",{}),K(C).forEach(i),this.h()},h(){Q(l,"name","hf:doc:metadata"),Q(l,"content",me)},m(e,t){oe(document.head,l),o(e,a,t),o(e,p,t),o(e,c,t),E(n,e,t),o(e,d,t),E(v,e,t),o(e,P,t),o(e,$,t),o(e,L,t),o(e,h,t),o(e,M,t),o(e,g,t),o(e,w,t),o(e,b,t),o(e,q,t),o(e,z,t),o(e,H,t),o(e,_,t),o(e,I,t),E(f,e,t),o(e,k,t),o(e,C,t),A=!0},p(e,[t]){const J={};t&2&&(J.$$scope={dirty:t,ctx:e}),f.$set(J)},i(e){A||(F(n.$$.fragment,e),F(v.$$.fragment,e),F(f.$$.fragment,e),A=!0)},o(e){j(n.$$.fragment,e),j(v.$$.fragment,e),j(f.$$.fragment,e),A=!1},d(e){e&&(i(a),i(p),i(c),i(d),i(P),i($),i(L),i(h),i(M),i(g),i(w),i(b),i(q),i(z),i(H),i(_),i(I),i(k),i(C)),i(l),N(n,e),N(v,e),N(f,e)}}}const me='{"title":"Introduzione","local":"introduzione","sections":[],"depth":1}';function ue(T){return Y(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class $e extends ee{constructor(l){super(),te(this,l,ue,se,X,{})}}export{$e as component};
