import{S as cz,i as pz,s as mz,e as r,k as c,w as f,t as l,M as fz,c as i,d as o,m as p,a as s,x as u,h as a,b as m,G as e,g as d,y as v,L as uz,q as _,o as h,B as E,v as vz}from"../chunks/vendor-hf-doc-builder.js";import{I as O}from"../chunks/IconCopyLink-hf-doc-builder.js";import{C as P}from"../chunks/CodeBlock-hf-doc-builder.js";function _z(yE){let ue,Ms,ve,He,Al,so,hc,Il,Ec,Bs,_e,Ue,xl,no,zc,We,bc,ql,kc,gc,Sl,$c,js,Zo,Cc,Ns,he,Xe,Fl,co,Oc,Ml,wc,Rs,el,yc,Gs,tl,Dc,Hs,Ke,Bl,Pc,Tc,jl,Lc,Us,Ee,Qe,Nl,po,Ac,Rl,Ic,Ws,Ve,mo,xc,fo,qc,Gl,Sc,Fc,Mc,ze,Bc,Hl,jc,Nc,Ul,Rc,Gc,Xs,Je,Hc,Wl,Uc,Wc,Ks,uo,Qs,Ye,Xc,Xl,Kc,Qc,Vs,vo,Js,be,Ze,Kl,_o,Vc,Ql,Jc,Ys,T,Yc,Vl,Zc,ep,Jl,tp,op,Yl,lp,ap,Zs,et,rp,Zl,ip,sp,en,$,ea,ta,np,dp,oa,la,cp,pp,aa,ra,mp,fp,ia,sa,up,vp,na,da,_p,hp,ca,pa,Ep,zp,ma,fa,bp,kp,ua,va,gp,tn,ke,tt,_a,ho,$p,ha,Cp,on,J,Op,Ea,wp,yp,za,Dp,Pp,ln,ot,Tp,ba,Lp,Ap,an,Eo,rn,lt,Ip,ka,xp,qp,sn,zo,nn,ol,Sp,dn,bo,cn,ge,at,ga,ko,Fp,$a,Mp,pn,rt,Bp,Ca,jp,Np,mn,ll,Rp,fn,$e,it,Oa,go,Gp,wa,Hp,un,st,Up,ya,Wp,Xp,vn,nt,Kp,Da,Qp,Vp,_n,$o,hn,dt,Jp,Pa,Yp,Zp,En,Co,zn,Ce,ct,Ta,Oo,em,Oe,tm,La,om,lm,Aa,am,rm,bn,pt,im,wo,sm,Ia,nm,dm,kn,mt,cm,xa,pm,mm,gn,we,ft,qa,yo,fm,Sa,um,$n,L,vm,Fa,_m,hm,Ma,Em,zm,Ba,bm,km,Cn,ut,gm,ja,$m,Cm,On,Do,wn,vt,Om,Na,wm,ym,yn,Po,Dn,al,Dm,Pn,To,Tn,ye,_t,Ra,Lo,Pm,Ga,Tm,Ln,ht,Lm,Ao,Am,Im,An,rl,xm,In,il,qm,xn,z,A,Ha,Sm,Fm,Ua,Mm,Bm,Wa,jm,Nm,Xa,Rm,Gm,Hm,I,Ka,Um,Wm,Qa,Xm,Km,Va,Qm,Vm,Ja,Jm,Ym,Zm,Y,Ya,ef,tf,Za,of,lf,er,af,rf,sf,Z,tr,nf,df,or,cf,pf,lr,mf,ff,uf,ee,ar,vf,_f,rr,hf,Ef,ir,zf,bf,kf,te,sr,gf,$f,nr,Cf,Of,dr,wf,yf,Df,oe,cr,Pf,Tf,pr,Lf,Af,mr,If,xf,qf,le,fr,Sf,Ff,ur,Mf,Bf,vr,jf,Nf,Rf,ae,_r,Gf,Hf,hr,Uf,Wf,Er,Xf,Kf,Qf,re,zr,Vf,Jf,br,Yf,Zf,kr,eu,tu,ou,ie,gr,lu,au,$r,ru,iu,Cr,su,nu,qn,sl,du,Sn,x,Et,Or,cu,pu,wr,mu,fu,uu,zt,yr,vu,_u,Dr,hu,Eu,zu,bt,Pr,bu,ku,Tr,gu,$u,Cu,kt,Lr,Ou,wu,Ar,yu,Du,Fn,nl,Pu,Mn,se,De,Tu,Ir,Lu,Au,xr,Iu,xu,qu,Pe,Su,qr,Fu,Mu,Sr,Bu,ju,Nu,Te,Ru,Fr,Gu,Hu,Mr,Uu,Wu,Bn,gt,Xu,Br,Ku,Qu,jn,C,F,Vu,jr,Ju,Yu,Nr,Zu,ev,Rr,tv,ov,lv,M,av,Gr,rv,iv,Hr,sv,nv,Ur,dv,cv,pv,Le,mv,Wr,fv,uv,Xr,vv,_v,hv,B,Ev,Kr,zv,bv,Qr,kv,gv,Vr,$v,Cv,Ov,j,wv,Jr,yv,Dv,Yr,Pv,Tv,Zr,Lv,Av,Iv,N,xv,ei,qv,Sv,ti,Fv,Mv,oi,Bv,jv,Nv,R,Rv,li,Gv,Hv,ai,Uv,Wv,ri,Xv,Kv,Qv,G,Vv,ii,Jv,Yv,si,Zv,e_,ni,t_,o_,Nn,$t,l_,di,a_,r_,Rn,D,H,i_,ci,s_,n_,pi,d_,c_,mi,p_,m_,f_,U,u_,fi,v_,__,ui,h_,E_,vi,z_,b_,k_,W,g_,_i,$_,C_,hi,O_,w_,Ei,y_,D_,P_,X,T_,zi,L_,A_,bi,I_,x_,ki,q_,S_,F_,K,M_,gi,B_,j_,$i,N_,R_,Ci,G_,H_,Gn,Ct,U_,Oi,W_,X_,Hn,dl,Q,K_,wi,Q_,V_,yi,J_,Y_,Di,Z_,eh,Un,cl,th,Wn,Ot,Ae,oh,Pi,lh,ah,Ti,rh,ih,sh,Ie,nh,Li,dh,ch,Ai,ph,mh,Xn,pl,fh,Kn,ml,V,uh,Ii,vh,_h,xi,hh,Eh,qi,zh,bh,Qn,xe,wt,Si,Io,kh,Fi,gh,Vn,yt,$h,Mi,Ch,Oh,Jn,qe,Dt,Bi,xo,wh,Se,yh,ji,Dh,Ph,Ni,Th,Lh,Yn,q,Ah,Ri,Ih,xh,Gi,qh,Sh,Hi,Fh,Mh,Zn,Pt,Bh,Ui,jh,Nh,ed,Tt,Rh,Wi,Gh,Hh,td,Fe,Lt,Xi,qo,Uh,Ki,Wh,od,At,Xh,Qi,Kh,Qh,ld,Me,It,Vi,So,Vh,fl,Jh,Ji,Yh,ad,ne,Zh,Yi,e1,t1,Zi,o1,l1,rd,xt,a1,Fo,r1,i1,id,qt,s1,es,n1,d1,sd,de,c1,ts,p1,m1,os,f1,u1,nd,Mo,dd,Be,St,ls,Bo,v1,as,_1,cd,Ft,h1,rs,E1,z1,pd,Mt,is,je,b1,ss,k1,g1,ns,$1,C1,O1,ds,b,w1,cs,y1,D1,ps,P1,T1,ms,L1,A1,fs,I1,x1,us,q1,S1,vs,F1,M1,_s,B1,j1,hs,N1,R1,Es,G1,H1,zs,U1,W1,md,Bt,X1,bs,K1,Q1,fd,ul,V1,ud,jo,vd,Ne,jt,ks,No,J1,gs,Y1,_d,S,Z1,$s,eE,tE,Cs,oE,lE,Os,aE,rE,hd,ce,ws,iE,sE,ys,nE,dE,Ds,cE,Ed,pe,pE,Ps,mE,fE,Ts,uE,vE,zd,Nt,_E,Ro,hE,EE,bd,me,zE,Ls,bE,kE,As,gE,$E,kd,Go,gd;return so=new O({}),no=new O({}),co=new O({}),po=new O({}),uo=new P({props:{code:`from transformers import AutoTokenizer 

tokenizer = AutoTokenizer.from_pretrained("bert-base-cased") `,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>) `}}),vo=new P({props:{code:`from transformers import AutoTokenizer 

tokenizer = AutoTokenizer.from_pretrained("bert-base-cased", use_fast=False) `,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>, use_fast=<span class="hljs-literal">False</span>) `}}),_o=new O({}),ho=new O({}),Eo=new P({props:{code:"pip install transformers ",highlighted:"pip install transformers "}}),zo=new P({props:{code:"pip install transformers[sentencepiece] ",highlighted:"pip install transformers[sentencepiece] "}}),bo=new P({props:{code:"pip install transformers stentencepiece ",highlighted:"pip install transformers stentencepiece "}}),ko=new O({}),go=new O({}),$o=new P({props:{code:"from transformers.modeling_bert import BertLayer ",highlighted:"from transformers.modeling_bert import BertLayer "}}),Co=new P({props:{code:"from transformers.models.bert.modeling_bert import BertLayer ",highlighted:"from transformers.models.bert.modeling_bert import BertLayer "}}),Oo=new O({}),yo=new O({}),Do=new P({props:{code:`model = BertModel.from_pretrained("bert-base-cased") 
outputs = model(**inputs) `,highlighted:`model = BertModel.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>) 
outputs = model(**inputs) `}}),Po=new P({props:{code:`model = BertModel.from_pretrained("bert-base-cased") 
outputs = model(**inputs, return_dict=False) `,highlighted:`model = BertModel.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>) 
outputs = model(**inputs, return_dict=False) `}}),To=new P({props:{code:`model = BertModel.from_pretrained("bert-base-cased", return_dict=False) 
outputs = model(**inputs) `,highlighted:`model = BertModel.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>, return_dict=False) 
outputs = model(**inputs) `}}),Lo=new O({}),Io=new O({}),xo=new O({}),qo=new O({}),So=new O({}),Mo=new P({props:{code:`# Carichiamo il nostro modello 
model = BertForSequenceClassification.from_pretrained("bert-base-uncased") 

# Se usavi questa riga in pytorch-pretrained-bert : 
loss = model(input_ids, labels=labels) 

# Ora usa questa riga in \u{1F917} Transformers per estrarre la perdita dalla tupla di output: 
outputs = model(input_ids, labels=labels) 
loss = outputs[0] 

# In \u{1F917} Transformers puoi anche avere accesso ai logit: 
loss, logits = outputs[:2] 

# Ed anche agli attention weight se configuri il modello per restituirli (e anche altri output, vedi le docstring e la documentazione) 
model = BertForSequenceClassification.from_pretrained(" bert-base-uncased", output_attentions=True) 
outputs = model(input_ids, labels=labels) 
loss, logits, attentions = outputs `,highlighted:`<span class="hljs-comment"># Carichiamo il nostro modello </span>
model = BertForSequenceClassification.from_pretrained(<span class="hljs-string">&quot;bert-base-uncased&quot;</span>) 

<span class="hljs-comment"># Se usavi questa riga in pytorch-pretrained-bert : </span>
loss = model(input_ids, labels=labels) 

<span class="hljs-comment"># Ora usa questa riga in \u{1F917} Transformers per estrarre la perdita dalla tupla di output: </span>
outputs = model(input_ids, labels=labels) 
loss = outputs[<span class="hljs-number">0</span>] 

<span class="hljs-comment"># In \u{1F917} Transformers puoi anche avere accesso ai logit: </span>
loss, logits = outputs[:<span class="hljs-number">2</span>] 

<span class="hljs-comment"># Ed anche agli attention weight se configuri il modello per restituirli (e anche altri output, vedi le docstring e la documentazione) </span>
model = BertForSequenceClassification.from_pretrained(<span class="hljs-string">&quot; bert-base-uncased&quot;</span>, output_attentions=<span class="hljs-literal">True</span>) 
outputs = model(input_ids, labels=labels) 
loss, logits, attentions = outputs `}}),Bo=new O({}),jo=new P({props:{code:`### Carichiamo un modello e un tokenizer 
model = BertForSequenceClassification.from_pretrained("bert-base-uncased") 
tokenizer = BertTokenizer.from_pretrained("bert-base-uncased") 

### Facciamo fare alcune cose al nostro modello e tokenizer 
# Es: aggiungiamo nuovi token al vocabolario e agli embending del nostro modello 
tokenizer.add_tokens(["[SPECIAL_TOKEN_1]", "[SPECIAL_TOKEN_2]"]) 
model.resize_token_embeddings(len(tokenizer)) 
# Alleniamo il nostro modello
train(model) 

### Ora salviamo il nostro modello e il tokenizer in una cartella 
model.save_pretrained("./my_saved_model_directory/") 
tokenizer.save_pretrained("./my_saved_model_directory/") 

### Ricarichiamo il modello e il tokenizer 
model = BertForSequenceClassification.from_pretrained("./my_saved_model_directory/") 
tokenizer = BertTokenizer.from_pretrained("./my_saved_model_directory/") `,highlighted:`<span class="hljs-comment">### Carichiamo un modello e un tokenizer </span>
model = BertForSequenceClassification.from_pretrained(<span class="hljs-string">&quot;bert-base-uncased&quot;</span>) 
tokenizer = BertTokenizer.from_pretrained(<span class="hljs-string">&quot;bert-base-uncased&quot;</span>) 

<span class="hljs-comment">### Facciamo fare alcune cose al nostro modello e tokenizer </span>
<span class="hljs-comment"># Es: aggiungiamo nuovi token al vocabolario e agli embending del nostro modello </span>
tokenizer.add_tokens([<span class="hljs-string">&quot;[SPECIAL_TOKEN_1]&quot;</span>, <span class="hljs-string">&quot;[SPECIAL_TOKEN_2]&quot;</span>]) 
model.resize_token_embeddings(<span class="hljs-built_in">len</span>(tokenizer)) 
<span class="hljs-comment"># Alleniamo il nostro modello</span>
train(model) 

<span class="hljs-comment">### Ora salviamo il nostro modello e il tokenizer in una cartella </span>
model.save_pretrained(<span class="hljs-string">&quot;./my_saved_model_directory/&quot;</span>) 
tokenizer.save_pretrained(<span class="hljs-string">&quot;./my_saved_model_directory/&quot;</span>) 

<span class="hljs-comment">### Ricarichiamo il modello e il tokenizer </span>
model = BertForSequenceClassification.from_pretrained(<span class="hljs-string">&quot;./my_saved_model_directory/&quot;</span>) 
tokenizer = BertTokenizer.from_pretrained(<span class="hljs-string">&quot;./my_saved_model_directory/&quot;</span>) `}}),No=new O({}),Go=new P({props:{code:`# Parametri: 
lr = 1e-3 
max_grad_norm = 1.0 
num_training_steps = 1000 
num_warmup_steps = 100 
warmup_proportion = float( num_warmup_steps) / float(num_training_steps) # 0.1 

### In precedenza l'ottimizzatore BertAdam veniva istanziato in questo modo: 
optimizer = BertAdam( 
   model.parameters(), 
   lr=lr, 
   schedule="warmup_linear", 
   warmup=warmup_proportion, 
   num_training_steps=num_training_steps, 
) 
### e usato in questo modo: 
for batch in train_data: 
   loss = model(batch) 
   loss.backward() 
   optimizer.step() 

### In \u{1F917} Transformers, ottimizzatore e schedule sono divisi e usati in questo modo: 
optimizer = AdamW( 
   model.parameters(), lr=lr, correct_bias=False 
) # Per riprodurre il comportamento specifico di BertAdam impostare correct_bias=False 
scheduler = get_linear_schedule_with_warmup( 
   optimizer, num_warmup_steps=num_warmup_steps, num_training_steps=num_training_steps 
) # PyTorch scheduler 
### e va usato cos\xEC: 
for batch in train_data: 
   loss = model(batch) 
   loss.backward() 
   torch.nn.utils.clip_grad_norm_( 
   model.parameters(), max_grad_norm 
   ) # Gradient clipping non \xE8 pi\xF9 in AdamW (quindi puoi usare amp senza problemi) 
   optimizer.step() 
   scheduler.step()`,highlighted:`<span class="hljs-comment"># Parametri: </span>
lr = <span class="hljs-number">1e-3</span> 
max_grad_norm = <span class="hljs-number">1.0</span> 
num_training_steps = <span class="hljs-number">1000</span> 
num_warmup_steps = <span class="hljs-number">100</span> 
warmup_proportion = <span class="hljs-built_in">float</span>( num_warmup_steps) / <span class="hljs-built_in">float</span>(num_training_steps) <span class="hljs-comment"># 0.1 </span>

<span class="hljs-comment">### In precedenza l&#x27;ottimizzatore BertAdam veniva istanziato in questo modo: </span>
optimizer = BertAdam( 
   model.parameters(), 
   lr=lr, 
   schedule=<span class="hljs-string">&quot;warmup_linear&quot;</span>, 
   warmup=warmup_proportion, 
   num_training_steps=num_training_steps, 
) 
<span class="hljs-comment">### e usato in questo modo: </span>
<span class="hljs-keyword">for</span> batch <span class="hljs-keyword">in</span> train_data: 
   loss = model(batch) 
   loss.backward() 
   optimizer.step() 

<span class="hljs-comment">### In \u{1F917} Transformers, ottimizzatore e schedule sono divisi e usati in questo modo: </span>
optimizer = AdamW( 
   model.parameters(), lr=lr, correct_bias=<span class="hljs-literal">False</span> 
) <span class="hljs-comment"># Per riprodurre il comportamento specifico di BertAdam impostare correct_bias=False </span>
scheduler = get_linear_schedule_with_warmup( 
   optimizer, num_warmup_steps=num_warmup_steps, num_training_steps=num_training_steps 
) <span class="hljs-comment"># PyTorch scheduler </span>
<span class="hljs-comment">### e va usato cos\xEC: </span>
<span class="hljs-keyword">for</span> batch <span class="hljs-keyword">in</span> train_data: 
   loss = model(batch) 
   loss.backward() 
   torch.nn.utils.clip_grad_norm_( 
   model.parameters(), max_grad_norm 
   ) <span class="hljs-comment"># Gradient clipping non \xE8 pi\xF9 in AdamW (quindi puoi usare amp senza problemi) </span>
   optimizer.step() 
   scheduler.step()`}}),{c(){ue=r("meta"),Ms=c(),ve=r("h1"),He=r("a"),Al=r("span"),f(so.$$.fragment),hc=c(),Il=r("span"),Ec=l("Migrazione da pacchetti precedenti"),Bs=c(),_e=r("h2"),Ue=r("a"),xl=r("span"),f(no.$$.fragment),zc=c(),We=r("span"),bc=l("Migrazione da transformers "),ql=r("code"),kc=l("v3.x"),gc=l(" a "),Sl=r("code"),$c=l("v4.x"),js=c(),Zo=r("p"),Cc=l(`Un paio di modifiche sono state introdotte nel passaggio dalla versione 3 alla versione 4. Di seguito \xE8 riportato un riepilogo delle
modifiche previste:`),Ns=c(),he=r("h4"),Xe=r("a"),Fl=r("span"),f(co.$$.fragment),Oc=c(),Ml=r("span"),wc=l("1. AutoTokenizer e pipeline ora utilizzano tokenizer veloci (rust) per impostazione predefinita."),Rs=c(),el=r("p"),yc=l("I tokenizer python e rust hanno all\u2019incirca le stesse API, ma i tokenizer rust hanno un set di funzionalit\xE0 pi\xF9 completo."),Gs=c(),tl=r("p"),Dc=l("Ci\xF2 introduce due modifiche sostanziali:"),Hs=c(),Ke=r("ul"),Bl=r("li"),Pc=l("La gestione dei token in overflow tra i tokenizer Python e Rust \xE8 diversa."),Tc=c(),jl=r("li"),Lc=l("I tokenizers di rust non accettano numeri interi nei metodi di codifica."),Us=c(),Ee=r("h5"),Qe=r("a"),Nl=r("span"),f(po.$$.fragment),Ac=c(),Rl=r("span"),Ic=l("Come ottenere lo stesso comportamento di v3.x in v4.x"),Ws=c(),Ve=r("ul"),mo=r("li"),xc=l("Le pipeline ora contengono funzionalit\xE0 aggiuntive pronte all\u2019uso. Vedi la "),fo=r("a"),qc=l("pipeline di classificazione dei token con il flag "),Gl=r("code"),Sc=l("grouped_entities"),Fc=l("."),Mc=c(),ze=r("li"),Bc=l("Gli auto-tokenizer ora restituiscono tokenizer rust. Per ottenere invece i tokenizer python, l\u2019utente deve usare il flag "),Hl=r("code"),jc=l("use_fast"),Nc=l(" impostandolo "),Ul=r("code"),Rc=l("False"),Gc=l(":"),Xs=c(),Je=r("p"),Hc=l("Nella versione "),Wl=r("code"),Uc=l("v3.x"),Wc=l(":"),Ks=c(),f(uo.$$.fragment),Qs=c(),Ye=r("p"),Xc=l("per ottenere lo stesso nella versione "),Xl=r("code"),Kc=l("v4.x"),Qc=l(":"),Vs=c(),f(vo.$$.fragment),Js=c(),be=r("h4"),Ze=r("a"),Kl=r("span"),f(_o.$$.fragment),Vc=c(),Ql=r("span"),Jc=l("2. SentencePiece \xE8 stato rimosso dalle dipendenze richieste"),Ys=c(),T=r("p"),Yc=l("Il requisito sulla dipendenza SentencePiece \xE8 stato rimosso da "),Vl=r("code"),Zc=l("setup.py"),ep=l(". \xC8 stato fatto per avere un canale su anaconda cloud senza basarsi su "),Jl=r("code"),tp=l("conda-forge"),op=l(". Ci\xF2 significa che i tokenizer che dipendono dalla libreria SentencePiece non saranno disponibili con un\u2019installazione standard di "),Yl=r("code"),lp=l("transformers"),ap=l("."),Zs=c(),et=r("p"),rp=l("Ci\xF2 include le versioni "),Zl=r("strong"),ip=l("lente"),sp=l(" di:"),en=c(),$=r("ul"),ea=r("li"),ta=r("code"),np=l("XLNetTokenizer"),dp=c(),oa=r("li"),la=r("code"),cp=l("AlbertTokenizer"),pp=c(),aa=r("li"),ra=r("code"),mp=l("CamembertTokenizer"),fp=c(),ia=r("li"),sa=r("code"),up=l("MBartTokenizer"),vp=c(),na=r("li"),da=r("code"),_p=l("PegasusTokenizer"),hp=c(),ca=r("li"),pa=r("code"),Ep=l("T5Tokenizer"),zp=c(),ma=r("li"),fa=r("code"),bp=l("ReformerTokenizer"),kp=c(),ua=r("li"),va=r("code"),gp=l("XLMRobertaTokenizer"),tn=c(),ke=r("h5"),tt=r("a"),_a=r("span"),f(ho.$$.fragment),$p=c(),ha=r("span"),Cp=l("Come ottenere lo stesso comportamento della v3.x nella v4.x"),on=c(),J=r("p"),Op=l("Per ottenere lo stesso comportamento della versione "),Ea=r("code"),wp=l("v3.x"),yp=l(", devi installare anche "),za=r("code"),Dp=l("sentencepiece"),Pp=l(":"),ln=c(),ot=r("p"),Tp=l("Nella versione "),ba=r("code"),Lp=l("v3.x"),Ap=l(":"),an=c(),f(Eo.$$.fragment),rn=c(),lt=r("p"),Ip=l("per ottenere lo stesso nella versione "),ka=r("code"),xp=l("v4.x"),qp=l(":"),sn=c(),f(zo.$$.fragment),nn=c(),ol=r("p"),Sp=l("o"),dn=c(),f(bo.$$.fragment),cn=c(),ge=r("h4"),at=r("a"),ga=r("span"),f(ko.$$.fragment),Fp=c(),$a=r("span"),Mp=l("3. L'architettura delle repo \xE8 stato aggiornata in modo che ogni modello abbia la propria cartella"),pn=c(),rt=r("p"),Bp=l("Con l\u2019aggiunta di nuovi modelli, il numero di file nella cartella "),Ca=r("code"),jp=l("src/transformers"),Np=l(" continua a crescere e diventa pi\xF9 difficile navigare e capire. Abbiamo fatto la scelta di inserire ogni modello e i file che lo accompagnano nelle proprie sottocartelle."),mn=c(),ll=r("p"),Rp=l("Si tratta di una modifica sostanziale in quanto l\u2019importazione di layer intermedi utilizzando direttamente il modulo di un modello deve essere eseguita tramite un percorso diverso."),fn=c(),$e=r("h5"),it=r("a"),Oa=r("span"),f(go.$$.fragment),Gp=c(),wa=r("span"),Hp=l("Come ottenere lo stesso comportamento della v3.x nella v4.x"),un=c(),st=r("p"),Up=l("Per ottenere lo stesso comportamento della versione "),ya=r("code"),Wp=l("v3.x"),Xp=l(", devi aggiornare il percorso utilizzato per accedere ai layer."),vn=c(),nt=r("p"),Kp=l("Nella versione "),Da=r("code"),Qp=l("v3.x"),Vp=l(":"),_n=c(),f($o.$$.fragment),hn=c(),dt=r("p"),Jp=l("per ottenere lo stesso nella versione "),Pa=r("code"),Yp=l("v4.x"),Zp=l(":"),En=c(),f(Co.$$.fragment),zn=c(),Ce=r("h4"),ct=r("a"),Ta=r("span"),f(Oo.$$.fragment),em=c(),Oe=r("span"),tm=l("4. Impostare l'argomento "),La=r("code"),om=l("return_dict"),lm=l(" su "),Aa=r("code"),am=l("True"),rm=l(" per impostazione predefinita"),bn=c(),pt=r("p"),im=l("L\u2019"),wo=r("a"),sm=l("argomento "),Ia=r("code"),nm=l("return_dict"),dm=l(" abilita la restituzione di oggetti python dict-like contenenti gli output del modello, invece delle tuple standard. Questo oggetto \xE8 self-documented poich\xE9 le chiavi possono essere utilizzate per recuperare valori, comportandosi anche come una tupla e gli utenti possono recuperare oggetti per indexing o slicing."),kn=c(),mt=r("p"),cm=l("Questa \xE8 una modifica sostanziale poich\xE9 la tupla non pu\xF2 essere decompressa: "),xa=r("code"),pm=l("value0, value1 = outputs"),mm=l(" non funzioner\xE0."),gn=c(),we=r("h5"),ft=r("a"),qa=r("span"),f(yo.$$.fragment),fm=c(),Sa=r("span"),um=l("Come ottenere lo stesso comportamento della v3.x nella v4.x"),$n=c(),L=r("p"),vm=l("Per ottenere lo stesso comportamento della versione "),Fa=r("code"),_m=l("v3.x"),hm=l(", specifica l\u2019argomento "),Ma=r("code"),Em=l("return_dict"),zm=l(" come "),Ba=r("code"),bm=l("False"),km=l(", sia nella configurazione del modello che nel passaggio successivo."),Cn=c(),ut=r("p"),gm=l("Nella versione "),ja=r("code"),$m=l("v3.x"),Cm=l(":"),On=c(),f(Do.$$.fragment),wn=c(),vt=r("p"),Om=l("per ottenere lo stesso nella versione "),Na=r("code"),wm=l("v4.x"),ym=l(":"),yn=c(),f(Po.$$.fragment),Dn=c(),al=r("p"),Dm=l("o"),Pn=c(),f(To.$$.fragment),Tn=c(),ye=r("h4"),_t=r("a"),Ra=r("span"),f(Lo.$$.fragment),Pm=c(),Ga=r("span"),Tm=l("5. Rimozione di alcuni attributi deprecati"),Ln=c(),ht=r("p"),Lm=l("Gli attributi sono stati rimossi se deprecati da almeno un mese. L\u2019elenco completo degli attributi obsoleti \xE8 disponibile in "),Ao=r("a"),Am=l("#8604"),Im=l("."),An=c(),rl=r("p"),xm=l("Ecco un elenco di questi attributi/metodi/argomenti e quali dovrebbero essere le loro sostituzioni:"),In=c(),il=r("p"),qm=l("In diversi modelli, le etichette diventano coerenti con gli altri modelli:"),xn=c(),z=r("ul"),A=r("li"),Ha=r("code"),Sm=l("masked_lm_labels"),Fm=l(" diventa "),Ua=r("code"),Mm=l("labels"),Bm=l(" in "),Wa=r("code"),jm=l("AlbertForMaskedLM"),Nm=l(" e "),Xa=r("code"),Rm=l("AlbertForPreTraining"),Gm=l("."),Hm=c(),I=r("li"),Ka=r("code"),Um=l("masked_lm_labels"),Wm=l(" diventa "),Qa=r("code"),Xm=l("labels"),Km=l(" in "),Va=r("code"),Qm=l("BertForMaskedLM"),Vm=l(" e "),Ja=r("code"),Jm=l("BertForPreTraining"),Ym=l("."),Zm=c(),Y=r("li"),Ya=r("code"),ef=l("masked_lm_labels"),tf=l(" diventa "),Za=r("code"),of=l("labels"),lf=l(" in "),er=r("code"),af=l("DistilBertForMaskedLM"),rf=l("."),sf=c(),Z=r("li"),tr=r("code"),nf=l("masked_lm_labels"),df=l(" diventa "),or=r("code"),cf=l("labels"),pf=l(" in "),lr=r("code"),mf=l("ElectraForMaskedLM"),ff=l("."),uf=c(),ee=r("li"),ar=r("code"),vf=l("masked_lm_labels"),_f=l(" diventa "),rr=r("code"),hf=l("labels"),Ef=l(" in "),ir=r("code"),zf=l("LongformerForMaskedLM"),bf=l("."),kf=c(),te=r("li"),sr=r("code"),gf=l("masked_lm_labels"),$f=l(" diventa "),nr=r("code"),Cf=l("labels"),Of=l(" in "),dr=r("code"),wf=l("MobileBertForMaskedLM"),yf=l("."),Df=c(),oe=r("li"),cr=r("code"),Pf=l("masked_lm_labels"),Tf=l(" diventa "),pr=r("code"),Lf=l("labels"),Af=l(" in "),mr=r("code"),If=l("RobertaForMaskedLM"),xf=l("."),qf=c(),le=r("li"),fr=r("code"),Sf=l("lm_labels"),Ff=l(" diventa "),ur=r("code"),Mf=l("labels"),Bf=l(" in "),vr=r("code"),jf=l("BartForConditionalGeneration"),Nf=l("."),Rf=c(),ae=r("li"),_r=r("code"),Gf=l("lm_labels"),Hf=l(" diventa "),hr=r("code"),Uf=l("labels"),Wf=l(" in "),Er=r("code"),Xf=l("GPT2DoubleHeadsModel"),Kf=l("."),Qf=c(),re=r("li"),zr=r("code"),Vf=l("lm_labels"),Jf=l(" diventa "),br=r("code"),Yf=l("labels"),Zf=l(" in "),kr=r("code"),eu=l("OpenAIGPTDoubleHeadsModel"),tu=l("."),ou=c(),ie=r("li"),gr=r("code"),lu=l("lm_labels"),au=l(" diventa "),$r=r("code"),ru=l("labels"),iu=l(" in "),Cr=r("code"),su=l("T5ForConditionalGeneration"),nu=l("."),qn=c(),sl=r("p"),du=l("In diversi modelli, il meccanismo di memorizzazione nella cache diventa coerente con gli altri:"),Sn=c(),x=r("ul"),Et=r("li"),Or=r("code"),cu=l("decoder_cached_states"),pu=l(" diventa "),wr=r("code"),mu=l("past_key_values"),fu=l(" in tutti i modelli BART-like, FSMT e T5."),uu=c(),zt=r("li"),yr=r("code"),vu=l("decoder_past_key_values"),_u=l(" diventa "),Dr=r("code"),hu=l("past_key_values"),Eu=l(" in tutti i modelli BART-like, FSMT e T5."),zu=c(),bt=r("li"),Pr=r("code"),bu=l("past"),ku=l(" diventa "),Tr=r("code"),gu=l("past_key_values"),$u=l(" in tutti i modelli CTRL."),Cu=c(),kt=r("li"),Lr=r("code"),Ou=l("past"),wu=l(" diventa "),Ar=r("code"),yu=l("past_key_values"),Du=l(" in tutti i modelli GPT-2."),Fn=c(),nl=r("p"),Pu=l("Per quanto riguarda le classi tokenizer:"),Mn=c(),se=r("ul"),De=r("li"),Tu=l("L\u2019attributo tokenizer "),Ir=r("code"),Lu=l("max_len"),Au=l(" diventa "),xr=r("code"),Iu=l("model_max_length"),xu=l("."),qu=c(),Pe=r("li"),Su=l("L\u2019attributo tokenizer "),qr=r("code"),Fu=l("return_lengths"),Mu=l(" diventa "),Sr=r("code"),Bu=l("return_length"),ju=l("."),Nu=c(),Te=r("li"),Ru=l("L\u2019argomento di codifica del tokenizer "),Fr=r("code"),Gu=l("is_pretokenized"),Hu=l(" diventa "),Mr=r("code"),Uu=l("is_split_into_words"),Wu=l("."),Bn=c(),gt=r("p"),Xu=l("Per quanto riguarda la classe "),Br=r("code"),Ku=l("Trainer"),Qu=l(":"),jn=c(),C=r("ul"),F=r("li"),Vu=l("L\u2019argomento "),jr=r("code"),Ju=l("tb_writer"),Yu=l(" di "),Nr=r("code"),Zu=l("Trainer"),ev=l(" \xE8 stato rimosso in favore della funzione richiamabile "),Rr=r("code"),tv=l("TensorBoardCallback(tb_writer=...)"),ov=l("."),lv=c(),M=r("li"),av=l("L\u2019argomento "),Gr=r("code"),rv=l("prediction_loss_only"),iv=l(" di "),Hr=r("code"),sv=l("Trainer"),nv=l(" \xE8 stato rimosso in favore dell\u2019argomento di classe "),Ur=r("code"),dv=l("args.prediction_loss_only"),cv=l("."),pv=c(),Le=r("li"),mv=l("L\u2019attributo "),Wr=r("code"),fv=l("data_collator"),uv=l(" di "),Xr=r("code"),vv=l("Trainer"),_v=l(" sar\xE0 richiamabile."),hv=c(),B=r("li"),Ev=l("Il metodo "),Kr=r("code"),zv=l("_log"),bv=l(" di "),Qr=r("code"),kv=l("Trainer"),gv=l(" \xE8 deprecato a favore di "),Vr=r("code"),$v=l("log"),Cv=l("."),Ov=c(),j=r("li"),wv=l("Il metodo "),Jr=r("code"),yv=l("_training_step"),Dv=l(" di "),Yr=r("code"),Pv=l("Trainer"),Tv=l(" \xE8 deprecato a favore di "),Zr=r("code"),Lv=l("training_step"),Av=l("."),Iv=c(),N=r("li"),xv=l("Il metodo "),ei=r("code"),qv=l("_prediction_loop"),Sv=l(" di "),ti=r("code"),Fv=l("Trainer"),Mv=l(" \xE8 deprecato a favore di "),oi=r("code"),Bv=l("prediction_loop"),jv=l("."),Nv=c(),R=r("li"),Rv=l("Il metodo "),li=r("code"),Gv=l("is_local_master"),Hv=l(" di "),ai=r("code"),Uv=l("Trainer"),Wv=l(" \xE8 deprecato a favore di "),ri=r("code"),Xv=l("is_local_process_zero"),Kv=l("."),Qv=c(),G=r("li"),Vv=l("Il metodo "),ii=r("code"),Jv=l("is_world_master"),Yv=l(" di "),si=r("code"),Zv=l("Trainer"),e_=l(" \xE8 deprecato a favore di "),ni=r("code"),t_=l("is_world_process_zero"),o_=l("."),Nn=c(),$t=r("p"),l_=l("Per quanto riguarda la classe "),di=r("code"),a_=l("TFTrainer"),r_=l(":"),Rn=c(),D=r("ul"),H=r("li"),i_=l("L\u2019argomento "),ci=r("code"),s_=l("prediction_loss_only"),n_=l(" di "),pi=r("code"),d_=l("TFTrainer"),c_=l(" \xE8 stato rimosso a favore dell\u2019argomento di classe "),mi=r("code"),p_=l("args.prediction_loss_only"),m_=l("."),f_=c(),U=r("li"),u_=l("Il metodo "),fi=r("code"),v_=l("_log"),__=l(" di "),ui=r("code"),h_=l("Trainer"),E_=l(" \xE8 deprecato a favore di "),vi=r("code"),z_=l("log"),b_=l("."),k_=c(),W=r("li"),g_=l("Il metodo "),_i=r("code"),$_=l("_prediction_loop"),C_=l(" di "),hi=r("code"),O_=l("TFTrainer"),w_=l(" \xE8 deprecato a favore di "),Ei=r("code"),y_=l("prediction_loop"),D_=l("."),P_=c(),X=r("li"),T_=l("Il metodo "),zi=r("code"),L_=l("_setup_wandb"),A_=l(" di "),bi=r("code"),I_=l("TFTrainer"),x_=l(" \xE8 deprecato a favore di "),ki=r("code"),q_=l("setup_wandb"),S_=l("."),F_=c(),K=r("li"),M_=l("Il metodo "),gi=r("code"),B_=l("_run_model"),j_=l(" di "),$i=r("code"),N_=l("TFTrainer"),R_=l(" \xE8 deprecato a favore di "),Ci=r("code"),G_=l("run_model"),H_=l("."),Gn=c(),Ct=r("p"),U_=l("Per quanto riguarda la classe "),Oi=r("code"),W_=l("TrainingArguments"),X_=l(":"),Hn=c(),dl=r("ul"),Q=r("li"),K_=l("L\u2019argomento "),wi=r("code"),Q_=l("evaluate_during_training"),V_=l(" di "),yi=r("code"),J_=l("TrainingArguments"),Y_=l(" \xE8 deprecato a favore di "),Di=r("code"),Z_=l("evaluation_strategy"),eh=l("."),Un=c(),cl=r("p"),th=l("Per quanto riguarda il modello Transfo-XL:"),Wn=c(),Ot=r("ul"),Ae=r("li"),oh=l("L\u2019attributo di configurazione "),Pi=r("code"),lh=l("tie_weight"),ah=l(" di Transfo-XL diventa "),Ti=r("code"),rh=l("tie_words_embeddings"),ih=l("."),sh=c(),Ie=r("li"),nh=l("Il metodo di modellazione "),Li=r("code"),dh=l("reset_length"),ch=l(" di Transfo-XL diventa "),Ai=r("code"),ph=l("reset_memory_length"),mh=l("."),Xn=c(),pl=r("p"),fh=l("Per quanto riguarda le pipeline:"),Kn=c(),ml=r("ul"),V=r("li"),uh=l("L\u2019argomento "),Ii=r("code"),vh=l("topk"),_h=l(" di "),xi=r("code"),hh=l("FillMaskPipeline"),Eh=l(" diventa "),qi=r("code"),zh=l("top_k"),bh=l("."),Qn=c(),xe=r("h2"),wt=r("a"),Si=r("span"),f(Io.$$.fragment),kh=c(),Fi=r("span"),gh=l("Passaggio da pytorch-transformers a \u{1F917} Transformers"),Vn=c(),yt=r("p"),$h=l("Ecco un breve riepilogo di ci\xF2 a cui prestare attenzione durante il passaggio da "),Mi=r("code"),Ch=l("pytorch-transformers"),Oh=l(" a \u{1F917} Transformers."),Jn=c(),qe=r("h3"),Dt=r("a"),Bi=r("span"),f(xo.$$.fragment),wh=c(),Se=r("span"),yh=l("L\u2019ordine posizionale di alcune parole chiave di input dei modelli ("),ji=r("code"),Dh=l("attention_mask"),Ph=l(", "),Ni=r("code"),Th=l("token_type_ids"),Lh=l("...) \xE8 cambiato"),Yn=c(),q=r("p"),Ah=l("Per usare Torchscript (vedi #1010, #1204 e #1195) l\u2019ordine specifico delle "),Ri=r("strong"),Ih=l("parole chiave di input"),xh=l(" di alcuni modelli ("),Gi=r("code"),qh=l("attention_mask"),Sh=l(", "),Hi=r("code"),Fh=l("token_type_ids"),Mh=l("\u2026) \xE8 stato modificato."),Zn=c(),Pt=r("p"),Bh=l("Se inizializzavi i modelli usando parole chiave per gli argomenti, ad esempio "),Ui=r("code"),jh=l("model(inputs_ids, attention_mask=attention_mask, token_type_ids=token_type_ids)"),Nh=l(", questo non dovrebbe causare alcun cambiamento."),ed=c(),Tt=r("p"),Rh=l("Se inizializzavi i modelli con input posizionali per gli argomenti, ad esempio "),Wi=r("code"),Gh=l("model(inputs_ids, attention_mask, token_type_ids)"),Hh=l(", potrebbe essere necessario ricontrollare l\u2019ordine esatto degli argomenti di input."),td=c(),Fe=r("h2"),Lt=r("a"),Xi=r("span"),f(qo.$$.fragment),Uh=c(),Ki=r("span"),Wh=l("Migrazione da pytorch-pretrained-bert"),od=c(),At=r("p"),Xh=l("Ecco un breve riepilogo di ci\xF2 a cui prestare attenzione durante la migrazione da "),Qi=r("code"),Kh=l("pytorch-pretrained-bert"),Qh=l(" a \u{1F917} Transformers"),ld=c(),Me=r("h3"),It=r("a"),Vi=r("span"),f(So.$$.fragment),Vh=c(),fl=r("span"),Jh=l("I modelli restituiscono sempre "),Ji=r("code"),Yh=l("tuple"),ad=c(),ne=r("p"),Zh=l("La principale modifica di rilievo durante la migrazione da "),Yi=r("code"),e1=l("pytorch-pretrained-bert"),t1=l(" a \u{1F917} Transformers \xE8 che il metodo dei modelli di previsione d\xE0 sempre una "),Zi=r("code"),o1=l("tupla"),l1=l(" con vari elementi a seconda del modello e dei parametri di configurazione."),rd=c(),xt=r("p"),a1=l("Il contenuto esatto delle tuple per ciascun modello \xE8 mostrato in dettaglio nelle docstring dei modelli e nella "),Fo=r("a"),r1=l("documentazione"),i1=l("."),id=c(),qt=r("p"),s1=l("In quasi tutti i casi, andr\xE0 bene prendendo il primo elemento dell\u2019output come quello che avresti precedentemente utilizzato in "),es=r("code"),n1=l("pytorch-pretrained-bert"),d1=l("."),sd=c(),de=r("p"),c1=l("Ecco un esempio di conversione da "),ts=r("code"),p1=l("pytorch-pretrained-bert"),m1=l(`
a \u{1F917} Transformers per un modello di classificazione `),os=r("code"),f1=l("BertForSequenceClassification"),u1=l(":"),nd=c(),f(Mo.$$.fragment),dd=c(),Be=r("h3"),St=r("a"),ls=r("span"),f(Bo.$$.fragment),v1=c(),as=r("span"),_1=l("Serializzazione"),cd=c(),Ft=r("p"),h1=l("Modifica sostanziale nel metodo "),rs=r("code"),E1=l("from_pretrained()"),z1=l(":"),pd=c(),Mt=r("ol"),is=r("li"),je=r("p"),b1=l("I modelli sono ora impostati in modalit\xE0 di valutazione in maniera predefinita quando usi il metodo "),ss=r("code"),k1=l("from_pretrained()"),g1=l(". Per addestrarli non dimenticare di riportarli in modalit\xE0 di addestramento ("),ns=r("code"),$1=l("model.train()"),C1=l(") per attivare i moduli di dropout."),O1=c(),ds=r("li"),b=r("p"),w1=l("Gli argomenti aggiuntivi "),cs=r("code"),y1=l("*inputs"),D1=l(" e "),ps=r("code"),P1=l("**kwargs"),T1=l(" forniti al metodo "),ms=r("code"),L1=l("from_pretrained()"),A1=l(" venivano passati direttamente al metodo "),fs=r("code"),I1=l("__init__()"),x1=l(" della classe sottostante del modello. Ora sono usati per aggiornare prima l\u2019attributo di configurazione del modello, che pu\xF2 non funzionare con le classi del modello derivate costruite basandosi sui precedenti esempi di "),us=r("code"),q1=l("BertForSequenceClassification"),S1=l(". Pi\xF9 precisamente, gli argomenti posizionali "),vs=r("code"),F1=l("*inputs"),M1=l(" forniti a "),_s=r("code"),B1=l("from_pretrained()"),j1=l(" vengono inoltrati direttamente al metodo "),hs=r("code"),N1=l("__init__()"),R1=l("  del modello mentre gli argomenti keyword "),Es=r("code"),G1=l("**kwargs"),H1=l(" (i) che corrispondono agli attributi della classe di configurazione, vengono utilizzati per aggiornare tali attributi (ii) che non corrispondono ad alcun attributo della classe di configurazione, vengono inoltrati al metodo "),zs=r("code"),U1=l("__init__()"),W1=l("."),md=c(),Bt=r("p"),X1=l("Inoltre, sebbene non si tratti di una modifica sostanziale, i metodi di serializzazione sono stati standardizzati e probabilmente dovresti passare al nuovo metodo "),bs=r("code"),K1=l("save_pretrained(save_directory)"),Q1=l(" se prima usavi qualsiasi altro metodo di serializzazione."),fd=c(),ul=r("p"),V1=l("Ecco un esempio:"),ud=c(),f(jo.$$.fragment),vd=c(),Ne=r("h3"),jt=r("a"),ks=r("span"),f(No.$$.fragment),J1=c(),gs=r("span"),Y1=l("Ottimizzatori: BertAdam e OpenAIAdam ora sono AdamW, lo scheduling \xE8 quello standard PyTorch"),_d=c(),S=r("p"),Z1=l("I due ottimizzatori precedenti inclusi, "),$s=r("code"),eE=l("BertAdam"),tE=l(" e "),Cs=r("code"),oE=l("OpenAIAdam"),lE=l(", sono stati sostituiti da un singolo "),Os=r("code"),aE=l("AdamW"),rE=l(" che presenta alcune differenze:"),hd=c(),ce=r("ul"),ws=r("li"),iE=l("implementa solo la correzione del weights decay,"),sE=c(),ys=r("li"),nE=l("lo scheduling ora \xE8 esterno (vedi sotto),"),dE=c(),Ds=r("li"),cE=l("anche il gradient clipping ora \xE8 esterno (vedi sotto)."),Ed=c(),pe=r("p"),pE=l("Il nuovo ottimizzatore "),Ps=r("code"),mE=l("AdamW"),fE=l(" corrisponde alle API di "),Ts=r("code"),uE=l("Adam"),vE=l(" di PyTorch e ti consente di utilizzare metodi PyTorch o apex per lo scheduling e il clipping."),zd=c(),Nt=r("p"),_E=l("Lo scheduling \xE8 ora standard "),Ro=r("a"),hE=l("PyTorch learning rate schedulers"),EE=l(" e non fanno pi\xF9 parte dell\u2019ottimizzatore."),bd=c(),me=r("p"),zE=l("Ecco un esempio di linear warmup e decay con "),Ls=r("code"),bE=l("BertAdam"),kE=l(" e con "),As=r("code"),gE=l("AdamW"),$E=l(":"),kd=c(),f(Go.$$.fragment),this.h()},l(t){const n=fz('[data-svelte="svelte-1phssyn"]',document.head);ue=i(n,"META",{name:!0,content:!0}),n.forEach(o),Ms=p(t),ve=i(t,"H1",{class:!0});var $d=s(ve);He=i($d,"A",{id:!0,class:!0,href:!0});var DE=s(He);Al=i(DE,"SPAN",{});var PE=s(Al);u(so.$$.fragment,PE),PE.forEach(o),DE.forEach(o),hc=p($d),Il=i($d,"SPAN",{});var TE=s(Il);Ec=a(TE,"Migrazione da pacchetti precedenti"),TE.forEach(o),$d.forEach(o),Bs=p(t),_e=i(t,"H2",{class:!0});var Cd=s(_e);Ue=i(Cd,"A",{id:!0,class:!0,href:!0});var LE=s(Ue);xl=i(LE,"SPAN",{});var AE=s(xl);u(no.$$.fragment,AE),AE.forEach(o),LE.forEach(o),zc=p(Cd),We=i(Cd,"SPAN",{});var Is=s(We);bc=a(Is,"Migrazione da transformers "),ql=i(Is,"CODE",{});var IE=s(ql);kc=a(IE,"v3.x"),IE.forEach(o),gc=a(Is," a "),Sl=i(Is,"CODE",{});var xE=s(Sl);$c=a(xE,"v4.x"),xE.forEach(o),Is.forEach(o),Cd.forEach(o),js=p(t),Zo=i(t,"P",{});var qE=s(Zo);Cc=a(qE,`Un paio di modifiche sono state introdotte nel passaggio dalla versione 3 alla versione 4. Di seguito \xE8 riportato un riepilogo delle
modifiche previste:`),qE.forEach(o),Ns=p(t),he=i(t,"H4",{class:!0});var Od=s(he);Xe=i(Od,"A",{id:!0,class:!0,href:!0});var SE=s(Xe);Fl=i(SE,"SPAN",{});var FE=s(Fl);u(co.$$.fragment,FE),FE.forEach(o),SE.forEach(o),Oc=p(Od),Ml=i(Od,"SPAN",{});var ME=s(Ml);wc=a(ME,"1. AutoTokenizer e pipeline ora utilizzano tokenizer veloci (rust) per impostazione predefinita."),ME.forEach(o),Od.forEach(o),Rs=p(t),el=i(t,"P",{});var BE=s(el);yc=a(BE,"I tokenizer python e rust hanno all\u2019incirca le stesse API, ma i tokenizer rust hanno un set di funzionalit\xE0 pi\xF9 completo."),BE.forEach(o),Gs=p(t),tl=i(t,"P",{});var jE=s(tl);Dc=a(jE,"Ci\xF2 introduce due modifiche sostanziali:"),jE.forEach(o),Hs=p(t),Ke=i(t,"UL",{});var wd=s(Ke);Bl=i(wd,"LI",{});var NE=s(Bl);Pc=a(NE,"La gestione dei token in overflow tra i tokenizer Python e Rust \xE8 diversa."),NE.forEach(o),Tc=p(wd),jl=i(wd,"LI",{});var RE=s(jl);Lc=a(RE,"I tokenizers di rust non accettano numeri interi nei metodi di codifica."),RE.forEach(o),wd.forEach(o),Us=p(t),Ee=i(t,"H5",{class:!0});var yd=s(Ee);Qe=i(yd,"A",{id:!0,class:!0,href:!0});var GE=s(Qe);Nl=i(GE,"SPAN",{});var HE=s(Nl);u(po.$$.fragment,HE),HE.forEach(o),GE.forEach(o),Ac=p(yd),Rl=i(yd,"SPAN",{});var UE=s(Rl);Ic=a(UE,"Come ottenere lo stesso comportamento di v3.x in v4.x"),UE.forEach(o),yd.forEach(o),Ws=p(t),Ve=i(t,"UL",{});var Dd=s(Ve);mo=i(Dd,"LI",{});var Pd=s(mo);xc=a(Pd,"Le pipeline ora contengono funzionalit\xE0 aggiuntive pronte all\u2019uso. Vedi la "),fo=i(Pd,"A",{href:!0});var CE=s(fo);qc=a(CE,"pipeline di classificazione dei token con il flag "),Gl=i(CE,"CODE",{});var WE=s(Gl);Sc=a(WE,"grouped_entities"),WE.forEach(o),CE.forEach(o),Fc=a(Pd,"."),Pd.forEach(o),Mc=p(Dd),ze=i(Dd,"LI",{});var vl=s(ze);Bc=a(vl,"Gli auto-tokenizer ora restituiscono tokenizer rust. Per ottenere invece i tokenizer python, l\u2019utente deve usare il flag "),Hl=i(vl,"CODE",{});var XE=s(Hl);jc=a(XE,"use_fast"),XE.forEach(o),Nc=a(vl," impostandolo "),Ul=i(vl,"CODE",{});var KE=s(Ul);Rc=a(KE,"False"),KE.forEach(o),Gc=a(vl,":"),vl.forEach(o),Dd.forEach(o),Xs=p(t),Je=i(t,"P",{});var Td=s(Je);Hc=a(Td,"Nella versione "),Wl=i(Td,"CODE",{});var QE=s(Wl);Uc=a(QE,"v3.x"),QE.forEach(o),Wc=a(Td,":"),Td.forEach(o),Ks=p(t),u(uo.$$.fragment,t),Qs=p(t),Ye=i(t,"P",{});var Ld=s(Ye);Xc=a(Ld,"per ottenere lo stesso nella versione "),Xl=i(Ld,"CODE",{});var VE=s(Xl);Kc=a(VE,"v4.x"),VE.forEach(o),Qc=a(Ld,":"),Ld.forEach(o),Vs=p(t),u(vo.$$.fragment,t),Js=p(t),be=i(t,"H4",{class:!0});var Ad=s(be);Ze=i(Ad,"A",{id:!0,class:!0,href:!0});var JE=s(Ze);Kl=i(JE,"SPAN",{});var YE=s(Kl);u(_o.$$.fragment,YE),YE.forEach(o),JE.forEach(o),Vc=p(Ad),Ql=i(Ad,"SPAN",{});var ZE=s(Ql);Jc=a(ZE,"2. SentencePiece \xE8 stato rimosso dalle dipendenze richieste"),ZE.forEach(o),Ad.forEach(o),Ys=p(t),T=i(t,"P",{});var Rt=s(T);Yc=a(Rt,"Il requisito sulla dipendenza SentencePiece \xE8 stato rimosso da "),Vl=i(Rt,"CODE",{});var e3=s(Vl);Zc=a(e3,"setup.py"),e3.forEach(o),ep=a(Rt,". \xC8 stato fatto per avere un canale su anaconda cloud senza basarsi su "),Jl=i(Rt,"CODE",{});var t3=s(Jl);tp=a(t3,"conda-forge"),t3.forEach(o),op=a(Rt,". Ci\xF2 significa che i tokenizer che dipendono dalla libreria SentencePiece non saranno disponibili con un\u2019installazione standard di "),Yl=i(Rt,"CODE",{});var o3=s(Yl);lp=a(o3,"transformers"),o3.forEach(o),ap=a(Rt,"."),Rt.forEach(o),Zs=p(t),et=i(t,"P",{});var Id=s(et);rp=a(Id,"Ci\xF2 include le versioni "),Zl=i(Id,"STRONG",{});var l3=s(Zl);ip=a(l3,"lente"),l3.forEach(o),sp=a(Id," di:"),Id.forEach(o),en=p(t),$=i(t,"UL",{});var w=s($);ea=i(w,"LI",{});var a3=s(ea);ta=i(a3,"CODE",{});var r3=s(ta);np=a(r3,"XLNetTokenizer"),r3.forEach(o),a3.forEach(o),dp=p(w),oa=i(w,"LI",{});var i3=s(oa);la=i(i3,"CODE",{});var s3=s(la);cp=a(s3,"AlbertTokenizer"),s3.forEach(o),i3.forEach(o),pp=p(w),aa=i(w,"LI",{});var n3=s(aa);ra=i(n3,"CODE",{});var d3=s(ra);mp=a(d3,"CamembertTokenizer"),d3.forEach(o),n3.forEach(o),fp=p(w),ia=i(w,"LI",{});var c3=s(ia);sa=i(c3,"CODE",{});var p3=s(sa);up=a(p3,"MBartTokenizer"),p3.forEach(o),c3.forEach(o),vp=p(w),na=i(w,"LI",{});var m3=s(na);da=i(m3,"CODE",{});var f3=s(da);_p=a(f3,"PegasusTokenizer"),f3.forEach(o),m3.forEach(o),hp=p(w),ca=i(w,"LI",{});var u3=s(ca);pa=i(u3,"CODE",{});var v3=s(pa);Ep=a(v3,"T5Tokenizer"),v3.forEach(o),u3.forEach(o),zp=p(w),ma=i(w,"LI",{});var _3=s(ma);fa=i(_3,"CODE",{});var h3=s(fa);bp=a(h3,"ReformerTokenizer"),h3.forEach(o),_3.forEach(o),kp=p(w),ua=i(w,"LI",{});var E3=s(ua);va=i(E3,"CODE",{});var z3=s(va);gp=a(z3,"XLMRobertaTokenizer"),z3.forEach(o),E3.forEach(o),w.forEach(o),tn=p(t),ke=i(t,"H5",{class:!0});var xd=s(ke);tt=i(xd,"A",{id:!0,class:!0,href:!0});var b3=s(tt);_a=i(b3,"SPAN",{});var k3=s(_a);u(ho.$$.fragment,k3),k3.forEach(o),b3.forEach(o),$p=p(xd),ha=i(xd,"SPAN",{});var g3=s(ha);Cp=a(g3,"Come ottenere lo stesso comportamento della v3.x nella v4.x"),g3.forEach(o),xd.forEach(o),on=p(t),J=i(t,"P",{});var _l=s(J);Op=a(_l,"Per ottenere lo stesso comportamento della versione "),Ea=i(_l,"CODE",{});var $3=s(Ea);wp=a($3,"v3.x"),$3.forEach(o),yp=a(_l,", devi installare anche "),za=i(_l,"CODE",{});var C3=s(za);Dp=a(C3,"sentencepiece"),C3.forEach(o),Pp=a(_l,":"),_l.forEach(o),ln=p(t),ot=i(t,"P",{});var qd=s(ot);Tp=a(qd,"Nella versione "),ba=i(qd,"CODE",{});var O3=s(ba);Lp=a(O3,"v3.x"),O3.forEach(o),Ap=a(qd,":"),qd.forEach(o),an=p(t),u(Eo.$$.fragment,t),rn=p(t),lt=i(t,"P",{});var Sd=s(lt);Ip=a(Sd,"per ottenere lo stesso nella versione "),ka=i(Sd,"CODE",{});var w3=s(ka);xp=a(w3,"v4.x"),w3.forEach(o),qp=a(Sd,":"),Sd.forEach(o),sn=p(t),u(zo.$$.fragment,t),nn=p(t),ol=i(t,"P",{});var y3=s(ol);Sp=a(y3,"o"),y3.forEach(o),dn=p(t),u(bo.$$.fragment,t),cn=p(t),ge=i(t,"H4",{class:!0});var Fd=s(ge);at=i(Fd,"A",{id:!0,class:!0,href:!0});var D3=s(at);ga=i(D3,"SPAN",{});var P3=s(ga);u(ko.$$.fragment,P3),P3.forEach(o),D3.forEach(o),Fp=p(Fd),$a=i(Fd,"SPAN",{});var T3=s($a);Mp=a(T3,"3. L'architettura delle repo \xE8 stato aggiornata in modo che ogni modello abbia la propria cartella"),T3.forEach(o),Fd.forEach(o),pn=p(t),rt=i(t,"P",{});var Md=s(rt);Bp=a(Md,"Con l\u2019aggiunta di nuovi modelli, il numero di file nella cartella "),Ca=i(Md,"CODE",{});var L3=s(Ca);jp=a(L3,"src/transformers"),L3.forEach(o),Np=a(Md," continua a crescere e diventa pi\xF9 difficile navigare e capire. Abbiamo fatto la scelta di inserire ogni modello e i file che lo accompagnano nelle proprie sottocartelle."),Md.forEach(o),mn=p(t),ll=i(t,"P",{});var A3=s(ll);Rp=a(A3,"Si tratta di una modifica sostanziale in quanto l\u2019importazione di layer intermedi utilizzando direttamente il modulo di un modello deve essere eseguita tramite un percorso diverso."),A3.forEach(o),fn=p(t),$e=i(t,"H5",{class:!0});var Bd=s($e);it=i(Bd,"A",{id:!0,class:!0,href:!0});var I3=s(it);Oa=i(I3,"SPAN",{});var x3=s(Oa);u(go.$$.fragment,x3),x3.forEach(o),I3.forEach(o),Gp=p(Bd),wa=i(Bd,"SPAN",{});var q3=s(wa);Hp=a(q3,"Come ottenere lo stesso comportamento della v3.x nella v4.x"),q3.forEach(o),Bd.forEach(o),un=p(t),st=i(t,"P",{});var jd=s(st);Up=a(jd,"Per ottenere lo stesso comportamento della versione "),ya=i(jd,"CODE",{});var S3=s(ya);Wp=a(S3,"v3.x"),S3.forEach(o),Xp=a(jd,", devi aggiornare il percorso utilizzato per accedere ai layer."),jd.forEach(o),vn=p(t),nt=i(t,"P",{});var Nd=s(nt);Kp=a(Nd,"Nella versione "),Da=i(Nd,"CODE",{});var F3=s(Da);Qp=a(F3,"v3.x"),F3.forEach(o),Vp=a(Nd,":"),Nd.forEach(o),_n=p(t),u($o.$$.fragment,t),hn=p(t),dt=i(t,"P",{});var Rd=s(dt);Jp=a(Rd,"per ottenere lo stesso nella versione "),Pa=i(Rd,"CODE",{});var M3=s(Pa);Yp=a(M3,"v4.x"),M3.forEach(o),Zp=a(Rd,":"),Rd.forEach(o),En=p(t),u(Co.$$.fragment,t),zn=p(t),Ce=i(t,"H4",{class:!0});var Gd=s(Ce);ct=i(Gd,"A",{id:!0,class:!0,href:!0});var B3=s(ct);Ta=i(B3,"SPAN",{});var j3=s(Ta);u(Oo.$$.fragment,j3),j3.forEach(o),B3.forEach(o),em=p(Gd),Oe=i(Gd,"SPAN",{});var hl=s(Oe);tm=a(hl,"4. Impostare l'argomento "),La=i(hl,"CODE",{});var N3=s(La);om=a(N3,"return_dict"),N3.forEach(o),lm=a(hl," su "),Aa=i(hl,"CODE",{});var R3=s(Aa);am=a(R3,"True"),R3.forEach(o),rm=a(hl," per impostazione predefinita"),hl.forEach(o),Gd.forEach(o),bn=p(t),pt=i(t,"P",{});var Hd=s(pt);im=a(Hd,"L\u2019"),wo=i(Hd,"A",{href:!0});var OE=s(wo);sm=a(OE,"argomento "),Ia=i(OE,"CODE",{});var G3=s(Ia);nm=a(G3,"return_dict"),G3.forEach(o),OE.forEach(o),dm=a(Hd," abilita la restituzione di oggetti python dict-like contenenti gli output del modello, invece delle tuple standard. Questo oggetto \xE8 self-documented poich\xE9 le chiavi possono essere utilizzate per recuperare valori, comportandosi anche come una tupla e gli utenti possono recuperare oggetti per indexing o slicing."),Hd.forEach(o),kn=p(t),mt=i(t,"P",{});var Ud=s(mt);cm=a(Ud,"Questa \xE8 una modifica sostanziale poich\xE9 la tupla non pu\xF2 essere decompressa: "),xa=i(Ud,"CODE",{});var H3=s(xa);pm=a(H3,"value0, value1 = outputs"),H3.forEach(o),mm=a(Ud," non funzioner\xE0."),Ud.forEach(o),gn=p(t),we=i(t,"H5",{class:!0});var Wd=s(we);ft=i(Wd,"A",{id:!0,class:!0,href:!0});var U3=s(ft);qa=i(U3,"SPAN",{});var W3=s(qa);u(yo.$$.fragment,W3),W3.forEach(o),U3.forEach(o),fm=p(Wd),Sa=i(Wd,"SPAN",{});var X3=s(Sa);um=a(X3,"Come ottenere lo stesso comportamento della v3.x nella v4.x"),X3.forEach(o),Wd.forEach(o),$n=p(t),L=i(t,"P",{});var Gt=s(L);vm=a(Gt,"Per ottenere lo stesso comportamento della versione "),Fa=i(Gt,"CODE",{});var K3=s(Fa);_m=a(K3,"v3.x"),K3.forEach(o),hm=a(Gt,", specifica l\u2019argomento "),Ma=i(Gt,"CODE",{});var Q3=s(Ma);Em=a(Q3,"return_dict"),Q3.forEach(o),zm=a(Gt," come "),Ba=i(Gt,"CODE",{});var V3=s(Ba);bm=a(V3,"False"),V3.forEach(o),km=a(Gt,", sia nella configurazione del modello che nel passaggio successivo."),Gt.forEach(o),Cn=p(t),ut=i(t,"P",{});var Xd=s(ut);gm=a(Xd,"Nella versione "),ja=i(Xd,"CODE",{});var J3=s(ja);$m=a(J3,"v3.x"),J3.forEach(o),Cm=a(Xd,":"),Xd.forEach(o),On=p(t),u(Do.$$.fragment,t),wn=p(t),vt=i(t,"P",{});var Kd=s(vt);Om=a(Kd,"per ottenere lo stesso nella versione "),Na=i(Kd,"CODE",{});var Y3=s(Na);wm=a(Y3,"v4.x"),Y3.forEach(o),ym=a(Kd,":"),Kd.forEach(o),yn=p(t),u(Po.$$.fragment,t),Dn=p(t),al=i(t,"P",{});var Z3=s(al);Dm=a(Z3,"o"),Z3.forEach(o),Pn=p(t),u(To.$$.fragment,t),Tn=p(t),ye=i(t,"H4",{class:!0});var Qd=s(ye);_t=i(Qd,"A",{id:!0,class:!0,href:!0});var e4=s(_t);Ra=i(e4,"SPAN",{});var t4=s(Ra);u(Lo.$$.fragment,t4),t4.forEach(o),e4.forEach(o),Pm=p(Qd),Ga=i(Qd,"SPAN",{});var o4=s(Ga);Tm=a(o4,"5. Rimozione di alcuni attributi deprecati"),o4.forEach(o),Qd.forEach(o),Ln=p(t),ht=i(t,"P",{});var Vd=s(ht);Lm=a(Vd,"Gli attributi sono stati rimossi se deprecati da almeno un mese. L\u2019elenco completo degli attributi obsoleti \xE8 disponibile in "),Ao=i(Vd,"A",{href:!0,rel:!0});var l4=s(Ao);Am=a(l4,"#8604"),l4.forEach(o),Im=a(Vd,"."),Vd.forEach(o),An=p(t),rl=i(t,"P",{});var a4=s(rl);xm=a(a4,"Ecco un elenco di questi attributi/metodi/argomenti e quali dovrebbero essere le loro sostituzioni:"),a4.forEach(o),In=p(t),il=i(t,"P",{});var r4=s(il);qm=a(r4,"In diversi modelli, le etichette diventano coerenti con gli altri modelli:"),r4.forEach(o),xn=p(t),z=i(t,"UL",{});var k=s(z);A=i(k,"LI",{});var Re=s(A);Ha=i(Re,"CODE",{});var i4=s(Ha);Sm=a(i4,"masked_lm_labels"),i4.forEach(o),Fm=a(Re," diventa "),Ua=i(Re,"CODE",{});var s4=s(Ua);Mm=a(s4,"labels"),s4.forEach(o),Bm=a(Re," in "),Wa=i(Re,"CODE",{});var n4=s(Wa);jm=a(n4,"AlbertForMaskedLM"),n4.forEach(o),Nm=a(Re," e "),Xa=i(Re,"CODE",{});var d4=s(Xa);Rm=a(d4,"AlbertForPreTraining"),d4.forEach(o),Gm=a(Re,"."),Re.forEach(o),Hm=p(k),I=i(k,"LI",{});var Ge=s(I);Ka=i(Ge,"CODE",{});var c4=s(Ka);Um=a(c4,"masked_lm_labels"),c4.forEach(o),Wm=a(Ge," diventa "),Qa=i(Ge,"CODE",{});var p4=s(Qa);Xm=a(p4,"labels"),p4.forEach(o),Km=a(Ge," in "),Va=i(Ge,"CODE",{});var m4=s(Va);Qm=a(m4,"BertForMaskedLM"),m4.forEach(o),Vm=a(Ge," e "),Ja=i(Ge,"CODE",{});var f4=s(Ja);Jm=a(f4,"BertForPreTraining"),f4.forEach(o),Ym=a(Ge,"."),Ge.forEach(o),Zm=p(k),Y=i(k,"LI",{});var Ho=s(Y);Ya=i(Ho,"CODE",{});var u4=s(Ya);ef=a(u4,"masked_lm_labels"),u4.forEach(o),tf=a(Ho," diventa "),Za=i(Ho,"CODE",{});var v4=s(Za);of=a(v4,"labels"),v4.forEach(o),lf=a(Ho," in "),er=i(Ho,"CODE",{});var _4=s(er);af=a(_4,"DistilBertForMaskedLM"),_4.forEach(o),rf=a(Ho,"."),Ho.forEach(o),sf=p(k),Z=i(k,"LI",{});var Uo=s(Z);tr=i(Uo,"CODE",{});var h4=s(tr);nf=a(h4,"masked_lm_labels"),h4.forEach(o),df=a(Uo," diventa "),or=i(Uo,"CODE",{});var E4=s(or);cf=a(E4,"labels"),E4.forEach(o),pf=a(Uo," in "),lr=i(Uo,"CODE",{});var z4=s(lr);mf=a(z4,"ElectraForMaskedLM"),z4.forEach(o),ff=a(Uo,"."),Uo.forEach(o),uf=p(k),ee=i(k,"LI",{});var Wo=s(ee);ar=i(Wo,"CODE",{});var b4=s(ar);vf=a(b4,"masked_lm_labels"),b4.forEach(o),_f=a(Wo," diventa "),rr=i(Wo,"CODE",{});var k4=s(rr);hf=a(k4,"labels"),k4.forEach(o),Ef=a(Wo," in "),ir=i(Wo,"CODE",{});var g4=s(ir);zf=a(g4,"LongformerForMaskedLM"),g4.forEach(o),bf=a(Wo,"."),Wo.forEach(o),kf=p(k),te=i(k,"LI",{});var Xo=s(te);sr=i(Xo,"CODE",{});var $4=s(sr);gf=a($4,"masked_lm_labels"),$4.forEach(o),$f=a(Xo," diventa "),nr=i(Xo,"CODE",{});var C4=s(nr);Cf=a(C4,"labels"),C4.forEach(o),Of=a(Xo," in "),dr=i(Xo,"CODE",{});var O4=s(dr);wf=a(O4,"MobileBertForMaskedLM"),O4.forEach(o),yf=a(Xo,"."),Xo.forEach(o),Df=p(k),oe=i(k,"LI",{});var Ko=s(oe);cr=i(Ko,"CODE",{});var w4=s(cr);Pf=a(w4,"masked_lm_labels"),w4.forEach(o),Tf=a(Ko," diventa "),pr=i(Ko,"CODE",{});var y4=s(pr);Lf=a(y4,"labels"),y4.forEach(o),Af=a(Ko," in "),mr=i(Ko,"CODE",{});var D4=s(mr);If=a(D4,"RobertaForMaskedLM"),D4.forEach(o),xf=a(Ko,"."),Ko.forEach(o),qf=p(k),le=i(k,"LI",{});var Qo=s(le);fr=i(Qo,"CODE",{});var P4=s(fr);Sf=a(P4,"lm_labels"),P4.forEach(o),Ff=a(Qo," diventa "),ur=i(Qo,"CODE",{});var T4=s(ur);Mf=a(T4,"labels"),T4.forEach(o),Bf=a(Qo," in "),vr=i(Qo,"CODE",{});var L4=s(vr);jf=a(L4,"BartForConditionalGeneration"),L4.forEach(o),Nf=a(Qo,"."),Qo.forEach(o),Rf=p(k),ae=i(k,"LI",{});var Vo=s(ae);_r=i(Vo,"CODE",{});var A4=s(_r);Gf=a(A4,"lm_labels"),A4.forEach(o),Hf=a(Vo," diventa "),hr=i(Vo,"CODE",{});var I4=s(hr);Uf=a(I4,"labels"),I4.forEach(o),Wf=a(Vo," in "),Er=i(Vo,"CODE",{});var x4=s(Er);Xf=a(x4,"GPT2DoubleHeadsModel"),x4.forEach(o),Kf=a(Vo,"."),Vo.forEach(o),Qf=p(k),re=i(k,"LI",{});var Jo=s(re);zr=i(Jo,"CODE",{});var q4=s(zr);Vf=a(q4,"lm_labels"),q4.forEach(o),Jf=a(Jo," diventa "),br=i(Jo,"CODE",{});var S4=s(br);Yf=a(S4,"labels"),S4.forEach(o),Zf=a(Jo," in "),kr=i(Jo,"CODE",{});var F4=s(kr);eu=a(F4,"OpenAIGPTDoubleHeadsModel"),F4.forEach(o),tu=a(Jo,"."),Jo.forEach(o),ou=p(k),ie=i(k,"LI",{});var Yo=s(ie);gr=i(Yo,"CODE",{});var M4=s(gr);lu=a(M4,"lm_labels"),M4.forEach(o),au=a(Yo," diventa "),$r=i(Yo,"CODE",{});var B4=s($r);ru=a(B4,"labels"),B4.forEach(o),iu=a(Yo," in "),Cr=i(Yo,"CODE",{});var j4=s(Cr);su=a(j4,"T5ForConditionalGeneration"),j4.forEach(o),nu=a(Yo,"."),Yo.forEach(o),k.forEach(o),qn=p(t),sl=i(t,"P",{});var N4=s(sl);du=a(N4,"In diversi modelli, il meccanismo di memorizzazione nella cache diventa coerente con gli altri:"),N4.forEach(o),Sn=p(t),x=i(t,"UL",{});var Ht=s(x);Et=i(Ht,"LI",{});var xs=s(Et);Or=i(xs,"CODE",{});var R4=s(Or);cu=a(R4,"decoder_cached_states"),R4.forEach(o),pu=a(xs," diventa "),wr=i(xs,"CODE",{});var G4=s(wr);mu=a(G4,"past_key_values"),G4.forEach(o),fu=a(xs," in tutti i modelli BART-like, FSMT e T5."),xs.forEach(o),uu=p(Ht),zt=i(Ht,"LI",{});var qs=s(zt);yr=i(qs,"CODE",{});var H4=s(yr);vu=a(H4,"decoder_past_key_values"),H4.forEach(o),_u=a(qs," diventa "),Dr=i(qs,"CODE",{});var U4=s(Dr);hu=a(U4,"past_key_values"),U4.forEach(o),Eu=a(qs," in tutti i modelli BART-like, FSMT e T5."),qs.forEach(o),zu=p(Ht),bt=i(Ht,"LI",{});var Ss=s(bt);Pr=i(Ss,"CODE",{});var W4=s(Pr);bu=a(W4,"past"),W4.forEach(o),ku=a(Ss," diventa "),Tr=i(Ss,"CODE",{});var X4=s(Tr);gu=a(X4,"past_key_values"),X4.forEach(o),$u=a(Ss," in tutti i modelli CTRL."),Ss.forEach(o),Cu=p(Ht),kt=i(Ht,"LI",{});var Fs=s(kt);Lr=i(Fs,"CODE",{});var K4=s(Lr);Ou=a(K4,"past"),K4.forEach(o),wu=a(Fs," diventa "),Ar=i(Fs,"CODE",{});var Q4=s(Ar);yu=a(Q4,"past_key_values"),Q4.forEach(o),Du=a(Fs," in tutti i modelli GPT-2."),Fs.forEach(o),Ht.forEach(o),Fn=p(t),nl=i(t,"P",{});var V4=s(nl);Pu=a(V4,"Per quanto riguarda le classi tokenizer:"),V4.forEach(o),Mn=p(t),se=i(t,"UL",{});var El=s(se);De=i(El,"LI",{});var zl=s(De);Tu=a(zl,"L\u2019attributo tokenizer "),Ir=i(zl,"CODE",{});var J4=s(Ir);Lu=a(J4,"max_len"),J4.forEach(o),Au=a(zl," diventa "),xr=i(zl,"CODE",{});var Y4=s(xr);Iu=a(Y4,"model_max_length"),Y4.forEach(o),xu=a(zl,"."),zl.forEach(o),qu=p(El),Pe=i(El,"LI",{});var bl=s(Pe);Su=a(bl,"L\u2019attributo tokenizer "),qr=i(bl,"CODE",{});var Z4=s(qr);Fu=a(Z4,"return_lengths"),Z4.forEach(o),Mu=a(bl," diventa "),Sr=i(bl,"CODE",{});var e2=s(Sr);Bu=a(e2,"return_length"),e2.forEach(o),ju=a(bl,"."),bl.forEach(o),Nu=p(El),Te=i(El,"LI",{});var kl=s(Te);Ru=a(kl,"L\u2019argomento di codifica del tokenizer "),Fr=i(kl,"CODE",{});var t2=s(Fr);Gu=a(t2,"is_pretokenized"),t2.forEach(o),Hu=a(kl," diventa "),Mr=i(kl,"CODE",{});var o2=s(Mr);Uu=a(o2,"is_split_into_words"),o2.forEach(o),Wu=a(kl,"."),kl.forEach(o),El.forEach(o),Bn=p(t),gt=i(t,"P",{});var Jd=s(gt);Xu=a(Jd,"Per quanto riguarda la classe "),Br=i(Jd,"CODE",{});var l2=s(Br);Ku=a(l2,"Trainer"),l2.forEach(o),Qu=a(Jd,":"),Jd.forEach(o),jn=p(t),C=i(t,"UL",{});var y=s(C);F=i(y,"LI",{});var Ut=s(F);Vu=a(Ut,"L\u2019argomento "),jr=i(Ut,"CODE",{});var a2=s(jr);Ju=a(a2,"tb_writer"),a2.forEach(o),Yu=a(Ut," di "),Nr=i(Ut,"CODE",{});var r2=s(Nr);Zu=a(r2,"Trainer"),r2.forEach(o),ev=a(Ut," \xE8 stato rimosso in favore della funzione richiamabile "),Rr=i(Ut,"CODE",{});var i2=s(Rr);tv=a(i2,"TensorBoardCallback(tb_writer=...)"),i2.forEach(o),ov=a(Ut,"."),Ut.forEach(o),lv=p(y),M=i(y,"LI",{});var Wt=s(M);av=a(Wt,"L\u2019argomento "),Gr=i(Wt,"CODE",{});var s2=s(Gr);rv=a(s2,"prediction_loss_only"),s2.forEach(o),iv=a(Wt," di "),Hr=i(Wt,"CODE",{});var n2=s(Hr);sv=a(n2,"Trainer"),n2.forEach(o),nv=a(Wt," \xE8 stato rimosso in favore dell\u2019argomento di classe "),Ur=i(Wt,"CODE",{});var d2=s(Ur);dv=a(d2,"args.prediction_loss_only"),d2.forEach(o),cv=a(Wt,"."),Wt.forEach(o),pv=p(y),Le=i(y,"LI",{});var gl=s(Le);mv=a(gl,"L\u2019attributo "),Wr=i(gl,"CODE",{});var c2=s(Wr);fv=a(c2,"data_collator"),c2.forEach(o),uv=a(gl," di "),Xr=i(gl,"CODE",{});var p2=s(Xr);vv=a(p2,"Trainer"),p2.forEach(o),_v=a(gl," sar\xE0 richiamabile."),gl.forEach(o),hv=p(y),B=i(y,"LI",{});var Xt=s(B);Ev=a(Xt,"Il metodo "),Kr=i(Xt,"CODE",{});var m2=s(Kr);zv=a(m2,"_log"),m2.forEach(o),bv=a(Xt," di "),Qr=i(Xt,"CODE",{});var f2=s(Qr);kv=a(f2,"Trainer"),f2.forEach(o),gv=a(Xt," \xE8 deprecato a favore di "),Vr=i(Xt,"CODE",{});var u2=s(Vr);$v=a(u2,"log"),u2.forEach(o),Cv=a(Xt,"."),Xt.forEach(o),Ov=p(y),j=i(y,"LI",{});var Kt=s(j);wv=a(Kt,"Il metodo "),Jr=i(Kt,"CODE",{});var v2=s(Jr);yv=a(v2,"_training_step"),v2.forEach(o),Dv=a(Kt," di "),Yr=i(Kt,"CODE",{});var _2=s(Yr);Pv=a(_2,"Trainer"),_2.forEach(o),Tv=a(Kt," \xE8 deprecato a favore di "),Zr=i(Kt,"CODE",{});var h2=s(Zr);Lv=a(h2,"training_step"),h2.forEach(o),Av=a(Kt,"."),Kt.forEach(o),Iv=p(y),N=i(y,"LI",{});var Qt=s(N);xv=a(Qt,"Il metodo "),ei=i(Qt,"CODE",{});var E2=s(ei);qv=a(E2,"_prediction_loop"),E2.forEach(o),Sv=a(Qt," di "),ti=i(Qt,"CODE",{});var z2=s(ti);Fv=a(z2,"Trainer"),z2.forEach(o),Mv=a(Qt," \xE8 deprecato a favore di "),oi=i(Qt,"CODE",{});var b2=s(oi);Bv=a(b2,"prediction_loop"),b2.forEach(o),jv=a(Qt,"."),Qt.forEach(o),Nv=p(y),R=i(y,"LI",{});var Vt=s(R);Rv=a(Vt,"Il metodo "),li=i(Vt,"CODE",{});var k2=s(li);Gv=a(k2,"is_local_master"),k2.forEach(o),Hv=a(Vt," di "),ai=i(Vt,"CODE",{});var g2=s(ai);Uv=a(g2,"Trainer"),g2.forEach(o),Wv=a(Vt," \xE8 deprecato a favore di "),ri=i(Vt,"CODE",{});var $2=s(ri);Xv=a($2,"is_local_process_zero"),$2.forEach(o),Kv=a(Vt,"."),Vt.forEach(o),Qv=p(y),G=i(y,"LI",{});var Jt=s(G);Vv=a(Jt,"Il metodo "),ii=i(Jt,"CODE",{});var C2=s(ii);Jv=a(C2,"is_world_master"),C2.forEach(o),Yv=a(Jt," di "),si=i(Jt,"CODE",{});var O2=s(si);Zv=a(O2,"Trainer"),O2.forEach(o),e_=a(Jt," \xE8 deprecato a favore di "),ni=i(Jt,"CODE",{});var w2=s(ni);t_=a(w2,"is_world_process_zero"),w2.forEach(o),o_=a(Jt,"."),Jt.forEach(o),y.forEach(o),Nn=p(t),$t=i(t,"P",{});var Yd=s($t);l_=a(Yd,"Per quanto riguarda la classe "),di=i(Yd,"CODE",{});var y2=s(di);a_=a(y2,"TFTrainer"),y2.forEach(o),r_=a(Yd,":"),Yd.forEach(o),Rn=p(t),D=i(t,"UL",{});var fe=s(D);H=i(fe,"LI",{});var Yt=s(H);i_=a(Yt,"L\u2019argomento "),ci=i(Yt,"CODE",{});var D2=s(ci);s_=a(D2,"prediction_loss_only"),D2.forEach(o),n_=a(Yt," di "),pi=i(Yt,"CODE",{});var P2=s(pi);d_=a(P2,"TFTrainer"),P2.forEach(o),c_=a(Yt," \xE8 stato rimosso a favore dell\u2019argomento di classe "),mi=i(Yt,"CODE",{});var T2=s(mi);p_=a(T2,"args.prediction_loss_only"),T2.forEach(o),m_=a(Yt,"."),Yt.forEach(o),f_=p(fe),U=i(fe,"LI",{});var Zt=s(U);u_=a(Zt,"Il metodo "),fi=i(Zt,"CODE",{});var L2=s(fi);v_=a(L2,"_log"),L2.forEach(o),__=a(Zt," di "),ui=i(Zt,"CODE",{});var A2=s(ui);h_=a(A2,"Trainer"),A2.forEach(o),E_=a(Zt," \xE8 deprecato a favore di "),vi=i(Zt,"CODE",{});var I2=s(vi);z_=a(I2,"log"),I2.forEach(o),b_=a(Zt,"."),Zt.forEach(o),k_=p(fe),W=i(fe,"LI",{});var eo=s(W);g_=a(eo,"Il metodo "),_i=i(eo,"CODE",{});var x2=s(_i);$_=a(x2,"_prediction_loop"),x2.forEach(o),C_=a(eo," di "),hi=i(eo,"CODE",{});var q2=s(hi);O_=a(q2,"TFTrainer"),q2.forEach(o),w_=a(eo," \xE8 deprecato a favore di "),Ei=i(eo,"CODE",{});var S2=s(Ei);y_=a(S2,"prediction_loop"),S2.forEach(o),D_=a(eo,"."),eo.forEach(o),P_=p(fe),X=i(fe,"LI",{});var to=s(X);T_=a(to,"Il metodo "),zi=i(to,"CODE",{});var F2=s(zi);L_=a(F2,"_setup_wandb"),F2.forEach(o),A_=a(to," di "),bi=i(to,"CODE",{});var M2=s(bi);I_=a(M2,"TFTrainer"),M2.forEach(o),x_=a(to," \xE8 deprecato a favore di "),ki=i(to,"CODE",{});var B2=s(ki);q_=a(B2,"setup_wandb"),B2.forEach(o),S_=a(to,"."),to.forEach(o),F_=p(fe),K=i(fe,"LI",{});var oo=s(K);M_=a(oo,"Il metodo "),gi=i(oo,"CODE",{});var j2=s(gi);B_=a(j2,"_run_model"),j2.forEach(o),j_=a(oo," di "),$i=i(oo,"CODE",{});var N2=s($i);N_=a(N2,"TFTrainer"),N2.forEach(o),R_=a(oo," \xE8 deprecato a favore di "),Ci=i(oo,"CODE",{});var R2=s(Ci);G_=a(R2,"run_model"),R2.forEach(o),H_=a(oo,"."),oo.forEach(o),fe.forEach(o),Gn=p(t),Ct=i(t,"P",{});var Zd=s(Ct);U_=a(Zd,"Per quanto riguarda la classe "),Oi=i(Zd,"CODE",{});var G2=s(Oi);W_=a(G2,"TrainingArguments"),G2.forEach(o),X_=a(Zd,":"),Zd.forEach(o),Hn=p(t),dl=i(t,"UL",{});var H2=s(dl);Q=i(H2,"LI",{});var lo=s(Q);K_=a(lo,"L\u2019argomento "),wi=i(lo,"CODE",{});var U2=s(wi);Q_=a(U2,"evaluate_during_training"),U2.forEach(o),V_=a(lo," di "),yi=i(lo,"CODE",{});var W2=s(yi);J_=a(W2,"TrainingArguments"),W2.forEach(o),Y_=a(lo," \xE8 deprecato a favore di "),Di=i(lo,"CODE",{});var X2=s(Di);Z_=a(X2,"evaluation_strategy"),X2.forEach(o),eh=a(lo,"."),lo.forEach(o),H2.forEach(o),Un=p(t),cl=i(t,"P",{});var K2=s(cl);th=a(K2,"Per quanto riguarda il modello Transfo-XL:"),K2.forEach(o),Wn=p(t),Ot=i(t,"UL",{});var ec=s(Ot);Ae=i(ec,"LI",{});var $l=s(Ae);oh=a($l,"L\u2019attributo di configurazione "),Pi=i($l,"CODE",{});var Q2=s(Pi);lh=a(Q2,"tie_weight"),Q2.forEach(o),ah=a($l," di Transfo-XL diventa "),Ti=i($l,"CODE",{});var V2=s(Ti);rh=a(V2,"tie_words_embeddings"),V2.forEach(o),ih=a($l,"."),$l.forEach(o),sh=p(ec),Ie=i(ec,"LI",{});var Cl=s(Ie);nh=a(Cl,"Il metodo di modellazione "),Li=i(Cl,"CODE",{});var J2=s(Li);dh=a(J2,"reset_length"),J2.forEach(o),ch=a(Cl," di Transfo-XL diventa "),Ai=i(Cl,"CODE",{});var Y2=s(Ai);ph=a(Y2,"reset_memory_length"),Y2.forEach(o),mh=a(Cl,"."),Cl.forEach(o),ec.forEach(o),Xn=p(t),pl=i(t,"P",{});var Z2=s(pl);fh=a(Z2,"Per quanto riguarda le pipeline:"),Z2.forEach(o),Kn=p(t),ml=i(t,"UL",{});var e5=s(ml);V=i(e5,"LI",{});var ao=s(V);uh=a(ao,"L\u2019argomento "),Ii=i(ao,"CODE",{});var t5=s(Ii);vh=a(t5,"topk"),t5.forEach(o),_h=a(ao," di "),xi=i(ao,"CODE",{});var o5=s(xi);hh=a(o5,"FillMaskPipeline"),o5.forEach(o),Eh=a(ao," diventa "),qi=i(ao,"CODE",{});var l5=s(qi);zh=a(l5,"top_k"),l5.forEach(o),bh=a(ao,"."),ao.forEach(o),e5.forEach(o),Qn=p(t),xe=i(t,"H2",{class:!0});var tc=s(xe);wt=i(tc,"A",{id:!0,class:!0,href:!0});var a5=s(wt);Si=i(a5,"SPAN",{});var r5=s(Si);u(Io.$$.fragment,r5),r5.forEach(o),a5.forEach(o),kh=p(tc),Fi=i(tc,"SPAN",{});var i5=s(Fi);gh=a(i5,"Passaggio da pytorch-transformers a \u{1F917} Transformers"),i5.forEach(o),tc.forEach(o),Vn=p(t),yt=i(t,"P",{});var oc=s(yt);$h=a(oc,"Ecco un breve riepilogo di ci\xF2 a cui prestare attenzione durante il passaggio da "),Mi=i(oc,"CODE",{});var s5=s(Mi);Ch=a(s5,"pytorch-transformers"),s5.forEach(o),Oh=a(oc," a \u{1F917} Transformers."),oc.forEach(o),Jn=p(t),qe=i(t,"H3",{class:!0});var lc=s(qe);Dt=i(lc,"A",{id:!0,class:!0,href:!0});var n5=s(Dt);Bi=i(n5,"SPAN",{});var d5=s(Bi);u(xo.$$.fragment,d5),d5.forEach(o),n5.forEach(o),wh=p(lc),Se=i(lc,"SPAN",{});var Ol=s(Se);yh=a(Ol,"L\u2019ordine posizionale di alcune parole chiave di input dei modelli ("),ji=i(Ol,"CODE",{});var c5=s(ji);Dh=a(c5,"attention_mask"),c5.forEach(o),Ph=a(Ol,", "),Ni=i(Ol,"CODE",{});var p5=s(Ni);Th=a(p5,"token_type_ids"),p5.forEach(o),Lh=a(Ol,"...) \xE8 cambiato"),Ol.forEach(o),lc.forEach(o),Yn=p(t),q=i(t,"P",{});var ro=s(q);Ah=a(ro,"Per usare Torchscript (vedi #1010, #1204 e #1195) l\u2019ordine specifico delle "),Ri=i(ro,"STRONG",{});var m5=s(Ri);Ih=a(m5,"parole chiave di input"),m5.forEach(o),xh=a(ro," di alcuni modelli ("),Gi=i(ro,"CODE",{});var f5=s(Gi);qh=a(f5,"attention_mask"),f5.forEach(o),Sh=a(ro,", "),Hi=i(ro,"CODE",{});var u5=s(Hi);Fh=a(u5,"token_type_ids"),u5.forEach(o),Mh=a(ro,"\u2026) \xE8 stato modificato."),ro.forEach(o),Zn=p(t),Pt=i(t,"P",{});var ac=s(Pt);Bh=a(ac,"Se inizializzavi i modelli usando parole chiave per gli argomenti, ad esempio "),Ui=i(ac,"CODE",{});var v5=s(Ui);jh=a(v5,"model(inputs_ids, attention_mask=attention_mask, token_type_ids=token_type_ids)"),v5.forEach(o),Nh=a(ac,", questo non dovrebbe causare alcun cambiamento."),ac.forEach(o),ed=p(t),Tt=i(t,"P",{});var rc=s(Tt);Rh=a(rc,"Se inizializzavi i modelli con input posizionali per gli argomenti, ad esempio "),Wi=i(rc,"CODE",{});var _5=s(Wi);Gh=a(_5,"model(inputs_ids, attention_mask, token_type_ids)"),_5.forEach(o),Hh=a(rc,", potrebbe essere necessario ricontrollare l\u2019ordine esatto degli argomenti di input."),rc.forEach(o),td=p(t),Fe=i(t,"H2",{class:!0});var ic=s(Fe);Lt=i(ic,"A",{id:!0,class:!0,href:!0});var h5=s(Lt);Xi=i(h5,"SPAN",{});var E5=s(Xi);u(qo.$$.fragment,E5),E5.forEach(o),h5.forEach(o),Uh=p(ic),Ki=i(ic,"SPAN",{});var z5=s(Ki);Wh=a(z5,"Migrazione da pytorch-pretrained-bert"),z5.forEach(o),ic.forEach(o),od=p(t),At=i(t,"P",{});var sc=s(At);Xh=a(sc,"Ecco un breve riepilogo di ci\xF2 a cui prestare attenzione durante la migrazione da "),Qi=i(sc,"CODE",{});var b5=s(Qi);Kh=a(b5,"pytorch-pretrained-bert"),b5.forEach(o),Qh=a(sc," a \u{1F917} Transformers"),sc.forEach(o),ld=p(t),Me=i(t,"H3",{class:!0});var nc=s(Me);It=i(nc,"A",{id:!0,class:!0,href:!0});var k5=s(It);Vi=i(k5,"SPAN",{});var g5=s(Vi);u(So.$$.fragment,g5),g5.forEach(o),k5.forEach(o),Vh=p(nc),fl=i(nc,"SPAN",{});var wE=s(fl);Jh=a(wE,"I modelli restituiscono sempre "),Ji=i(wE,"CODE",{});var $5=s(Ji);Yh=a($5,"tuple"),$5.forEach(o),wE.forEach(o),nc.forEach(o),ad=p(t),ne=i(t,"P",{});var wl=s(ne);Zh=a(wl,"La principale modifica di rilievo durante la migrazione da "),Yi=i(wl,"CODE",{});var C5=s(Yi);e1=a(C5,"pytorch-pretrained-bert"),C5.forEach(o),t1=a(wl," a \u{1F917} Transformers \xE8 che il metodo dei modelli di previsione d\xE0 sempre una "),Zi=i(wl,"CODE",{});var O5=s(Zi);o1=a(O5,"tupla"),O5.forEach(o),l1=a(wl," con vari elementi a seconda del modello e dei parametri di configurazione."),wl.forEach(o),rd=p(t),xt=i(t,"P",{});var dc=s(xt);a1=a(dc,"Il contenuto esatto delle tuple per ciascun modello \xE8 mostrato in dettaglio nelle docstring dei modelli e nella "),Fo=i(dc,"A",{href:!0,rel:!0});var w5=s(Fo);r1=a(w5,"documentazione"),w5.forEach(o),i1=a(dc,"."),dc.forEach(o),id=p(t),qt=i(t,"P",{});var cc=s(qt);s1=a(cc,"In quasi tutti i casi, andr\xE0 bene prendendo il primo elemento dell\u2019output come quello che avresti precedentemente utilizzato in "),es=i(cc,"CODE",{});var y5=s(es);n1=a(y5,"pytorch-pretrained-bert"),y5.forEach(o),d1=a(cc,"."),cc.forEach(o),sd=p(t),de=i(t,"P",{});var yl=s(de);c1=a(yl,"Ecco un esempio di conversione da "),ts=i(yl,"CODE",{});var D5=s(ts);p1=a(D5,"pytorch-pretrained-bert"),D5.forEach(o),m1=a(yl,`
a \u{1F917} Transformers per un modello di classificazione `),os=i(yl,"CODE",{});var P5=s(os);f1=a(P5,"BertForSequenceClassification"),P5.forEach(o),u1=a(yl,":"),yl.forEach(o),nd=p(t),u(Mo.$$.fragment,t),dd=p(t),Be=i(t,"H3",{class:!0});var pc=s(Be);St=i(pc,"A",{id:!0,class:!0,href:!0});var T5=s(St);ls=i(T5,"SPAN",{});var L5=s(ls);u(Bo.$$.fragment,L5),L5.forEach(o),T5.forEach(o),v1=p(pc),as=i(pc,"SPAN",{});var A5=s(as);_1=a(A5,"Serializzazione"),A5.forEach(o),pc.forEach(o),cd=p(t),Ft=i(t,"P",{});var mc=s(Ft);h1=a(mc,"Modifica sostanziale nel metodo "),rs=i(mc,"CODE",{});var I5=s(rs);E1=a(I5,"from_pretrained()"),I5.forEach(o),z1=a(mc,":"),mc.forEach(o),pd=p(t),Mt=i(t,"OL",{});var fc=s(Mt);is=i(fc,"LI",{});var x5=s(is);je=i(x5,"P",{});var Dl=s(je);b1=a(Dl,"I modelli sono ora impostati in modalit\xE0 di valutazione in maniera predefinita quando usi il metodo "),ss=i(Dl,"CODE",{});var q5=s(ss);k1=a(q5,"from_pretrained()"),q5.forEach(o),g1=a(Dl,". Per addestrarli non dimenticare di riportarli in modalit\xE0 di addestramento ("),ns=i(Dl,"CODE",{});var S5=s(ns);$1=a(S5,"model.train()"),S5.forEach(o),C1=a(Dl,") per attivare i moduli di dropout."),Dl.forEach(o),x5.forEach(o),O1=p(fc),ds=i(fc,"LI",{});var F5=s(ds);b=i(F5,"P",{});var g=s(b);w1=a(g,"Gli argomenti aggiuntivi "),cs=i(g,"CODE",{});var M5=s(cs);y1=a(M5,"*inputs"),M5.forEach(o),D1=a(g," e "),ps=i(g,"CODE",{});var B5=s(ps);P1=a(B5,"**kwargs"),B5.forEach(o),T1=a(g," forniti al metodo "),ms=i(g,"CODE",{});var j5=s(ms);L1=a(j5,"from_pretrained()"),j5.forEach(o),A1=a(g," venivano passati direttamente al metodo "),fs=i(g,"CODE",{});var N5=s(fs);I1=a(N5,"__init__()"),N5.forEach(o),x1=a(g," della classe sottostante del modello. Ora sono usati per aggiornare prima l\u2019attributo di configurazione del modello, che pu\xF2 non funzionare con le classi del modello derivate costruite basandosi sui precedenti esempi di "),us=i(g,"CODE",{});var R5=s(us);q1=a(R5,"BertForSequenceClassification"),R5.forEach(o),S1=a(g,". Pi\xF9 precisamente, gli argomenti posizionali "),vs=i(g,"CODE",{});var G5=s(vs);F1=a(G5,"*inputs"),G5.forEach(o),M1=a(g," forniti a "),_s=i(g,"CODE",{});var H5=s(_s);B1=a(H5,"from_pretrained()"),H5.forEach(o),j1=a(g," vengono inoltrati direttamente al metodo "),hs=i(g,"CODE",{});var U5=s(hs);N1=a(U5,"__init__()"),U5.forEach(o),R1=a(g,"  del modello mentre gli argomenti keyword "),Es=i(g,"CODE",{});var W5=s(Es);G1=a(W5,"**kwargs"),W5.forEach(o),H1=a(g," (i) che corrispondono agli attributi della classe di configurazione, vengono utilizzati per aggiornare tali attributi (ii) che non corrispondono ad alcun attributo della classe di configurazione, vengono inoltrati al metodo "),zs=i(g,"CODE",{});var X5=s(zs);U1=a(X5,"__init__()"),X5.forEach(o),W1=a(g,"."),g.forEach(o),F5.forEach(o),fc.forEach(o),md=p(t),Bt=i(t,"P",{});var uc=s(Bt);X1=a(uc,"Inoltre, sebbene non si tratti di una modifica sostanziale, i metodi di serializzazione sono stati standardizzati e probabilmente dovresti passare al nuovo metodo "),bs=i(uc,"CODE",{});var K5=s(bs);K1=a(K5,"save_pretrained(save_directory)"),K5.forEach(o),Q1=a(uc," se prima usavi qualsiasi altro metodo di serializzazione."),uc.forEach(o),fd=p(t),ul=i(t,"P",{});var Q5=s(ul);V1=a(Q5,"Ecco un esempio:"),Q5.forEach(o),ud=p(t),u(jo.$$.fragment,t),vd=p(t),Ne=i(t,"H3",{class:!0});var vc=s(Ne);jt=i(vc,"A",{id:!0,class:!0,href:!0});var V5=s(jt);ks=i(V5,"SPAN",{});var J5=s(ks);u(No.$$.fragment,J5),J5.forEach(o),V5.forEach(o),J1=p(vc),gs=i(vc,"SPAN",{});var Y5=s(gs);Y1=a(Y5,"Ottimizzatori: BertAdam e OpenAIAdam ora sono AdamW, lo scheduling \xE8 quello standard PyTorch"),Y5.forEach(o),vc.forEach(o),_d=p(t),S=i(t,"P",{});var io=s(S);Z1=a(io,"I due ottimizzatori precedenti inclusi, "),$s=i(io,"CODE",{});var Z5=s($s);eE=a(Z5,"BertAdam"),Z5.forEach(o),tE=a(io," e "),Cs=i(io,"CODE",{});var ez=s(Cs);oE=a(ez,"OpenAIAdam"),ez.forEach(o),lE=a(io,", sono stati sostituiti da un singolo "),Os=i(io,"CODE",{});var tz=s(Os);aE=a(tz,"AdamW"),tz.forEach(o),rE=a(io," che presenta alcune differenze:"),io.forEach(o),hd=p(t),ce=i(t,"UL",{});var Pl=s(ce);ws=i(Pl,"LI",{});var oz=s(ws);iE=a(oz,"implementa solo la correzione del weights decay,"),oz.forEach(o),sE=p(Pl),ys=i(Pl,"LI",{});var lz=s(ys);nE=a(lz,"lo scheduling ora \xE8 esterno (vedi sotto),"),lz.forEach(o),dE=p(Pl),Ds=i(Pl,"LI",{});var az=s(Ds);cE=a(az,"anche il gradient clipping ora \xE8 esterno (vedi sotto)."),az.forEach(o),Pl.forEach(o),Ed=p(t),pe=i(t,"P",{});var Tl=s(pe);pE=a(Tl,"Il nuovo ottimizzatore "),Ps=i(Tl,"CODE",{});var rz=s(Ps);mE=a(rz,"AdamW"),rz.forEach(o),fE=a(Tl," corrisponde alle API di "),Ts=i(Tl,"CODE",{});var iz=s(Ts);uE=a(iz,"Adam"),iz.forEach(o),vE=a(Tl," di PyTorch e ti consente di utilizzare metodi PyTorch o apex per lo scheduling e il clipping."),Tl.forEach(o),zd=p(t),Nt=i(t,"P",{});var _c=s(Nt);_E=a(_c,"Lo scheduling \xE8 ora standard "),Ro=i(_c,"A",{href:!0,rel:!0});var sz=s(Ro);hE=a(sz,"PyTorch learning rate schedulers"),sz.forEach(o),EE=a(_c," e non fanno pi\xF9 parte dell\u2019ottimizzatore."),_c.forEach(o),bd=p(t),me=i(t,"P",{});var Ll=s(me);zE=a(Ll,"Ecco un esempio di linear warmup e decay con "),Ls=i(Ll,"CODE",{});var nz=s(Ls);bE=a(nz,"BertAdam"),nz.forEach(o),kE=a(Ll," e con "),As=i(Ll,"CODE",{});var dz=s(As);gE=a(dz,"AdamW"),dz.forEach(o),$E=a(Ll,":"),Ll.forEach(o),kd=p(t),u(Go.$$.fragment,t),this.h()},h(){m(ue,"name","hf:doc:metadata"),m(ue,"content",JSON.stringify(hz)),m(He,"id","migrazione-da-pacchetti-precedenti"),m(He,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(He,"href","#migrazione-da-pacchetti-precedenti"),m(ve,"class","relative group"),m(Ue,"id","migrazione-da-transformers-v3x-a-v4x"),m(Ue,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(Ue,"href","#migrazione-da-transformers-v3x-a-v4x"),m(_e,"class","relative group"),m(Xe,"id","1-autotokenizer-e-pipeline-ora-utilizzano-tokenizer-veloci-rust-per-impostazione-predefinita"),m(Xe,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(Xe,"href","#1-autotokenizer-e-pipeline-ora-utilizzano-tokenizer-veloci-rust-per-impostazione-predefinita"),m(he,"class","relative group"),m(Qe,"id","come-ottenere-lo-stesso-comportamento-di-v3x-in-v4x"),m(Qe,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(Qe,"href","#come-ottenere-lo-stesso-comportamento-di-v3x-in-v4x"),m(Ee,"class","relative group"),m(fo,"href","main_classes/pipelines#transformers.TokenClassificationPipeline"),m(Ze,"id","2-sentencepiece-stato-rimosso-dalle-dipendenze-richieste"),m(Ze,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(Ze,"href","#2-sentencepiece-stato-rimosso-dalle-dipendenze-richieste"),m(be,"class","relative group"),m(tt,"id","come-ottenere-lo-stesso-comportamento-della-v3x-nella-v4x"),m(tt,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(tt,"href","#come-ottenere-lo-stesso-comportamento-della-v3x-nella-v4x"),m(ke,"class","relative group"),m(at,"id","3-larchitettura-delle-repo-stato-aggiornata-in-modo-che-ogni-modello-abbia-la-propria-cartella"),m(at,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(at,"href","#3-larchitettura-delle-repo-stato-aggiornata-in-modo-che-ogni-modello-abbia-la-propria-cartella"),m(ge,"class","relative group"),m(it,"id","come-ottenere-lo-stesso-comportamento-della-v3x-nella-v4x"),m(it,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(it,"href","#come-ottenere-lo-stesso-comportamento-della-v3x-nella-v4x"),m($e,"class","relative group"),m(ct,"id","4-impostare-largomento-returndict-su-true-per-impostazione-predefinita"),m(ct,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(ct,"href","#4-impostare-largomento-returndict-su-true-per-impostazione-predefinita"),m(Ce,"class","relative group"),m(wo,"href","main_classes/output"),m(ft,"id","come-ottenere-lo-stesso-comportamento-della-v3x-nella-v4x"),m(ft,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(ft,"href","#come-ottenere-lo-stesso-comportamento-della-v3x-nella-v4x"),m(we,"class","relative group"),m(_t,"id","5-rimozione-di-alcuni-attributi-deprecati"),m(_t,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(_t,"href","#5-rimozione-di-alcuni-attributi-deprecati"),m(ye,"class","relative group"),m(Ao,"href","https://github.com/huggingface/transformers/pull/8604"),m(Ao,"rel","nofollow"),m(wt,"id","passaggio-da-pytorchtransformers-a-transformers"),m(wt,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(wt,"href","#passaggio-da-pytorchtransformers-a-transformers"),m(xe,"class","relative group"),m(Dt,"id","lordine-posizionale-di-alcune-parole-chiave-di-input-dei-modelli-attentionmask-tokentypeids-cambiato"),m(Dt,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(Dt,"href","#lordine-posizionale-di-alcune-parole-chiave-di-input-dei-modelli-attentionmask-tokentypeids-cambiato"),m(qe,"class","relative group"),m(Lt,"id","migrazione-da-pytorchpretrainedbert"),m(Lt,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(Lt,"href","#migrazione-da-pytorchpretrainedbert"),m(Fe,"class","relative group"),m(It,"id","i-modelli-restituiscono-sempre-tuple"),m(It,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(It,"href","#i-modelli-restituiscono-sempre-tuple"),m(Me,"class","relative group"),m(Fo,"href","https://huggingface.co/transformers/"),m(Fo,"rel","nofollow"),m(St,"id","serializzazione"),m(St,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(St,"href","#serializzazione"),m(Be,"class","relative group"),m(jt,"id","ottimizzatori-bertadam-e-openaiadam-ora-sono-adamw-lo-scheduling-quello-standard-pytorch"),m(jt,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(jt,"href","#ottimizzatori-bertadam-e-openaiadam-ora-sono-adamw-lo-scheduling-quello-standard-pytorch"),m(Ne,"class","relative group"),m(Ro,"href","https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate"),m(Ro,"rel","nofollow")},m(t,n){e(document.head,ue),d(t,Ms,n),d(t,ve,n),e(ve,He),e(He,Al),v(so,Al,null),e(ve,hc),e(ve,Il),e(Il,Ec),d(t,Bs,n),d(t,_e,n),e(_e,Ue),e(Ue,xl),v(no,xl,null),e(_e,zc),e(_e,We),e(We,bc),e(We,ql),e(ql,kc),e(We,gc),e(We,Sl),e(Sl,$c),d(t,js,n),d(t,Zo,n),e(Zo,Cc),d(t,Ns,n),d(t,he,n),e(he,Xe),e(Xe,Fl),v(co,Fl,null),e(he,Oc),e(he,Ml),e(Ml,wc),d(t,Rs,n),d(t,el,n),e(el,yc),d(t,Gs,n),d(t,tl,n),e(tl,Dc),d(t,Hs,n),d(t,Ke,n),e(Ke,Bl),e(Bl,Pc),e(Ke,Tc),e(Ke,jl),e(jl,Lc),d(t,Us,n),d(t,Ee,n),e(Ee,Qe),e(Qe,Nl),v(po,Nl,null),e(Ee,Ac),e(Ee,Rl),e(Rl,Ic),d(t,Ws,n),d(t,Ve,n),e(Ve,mo),e(mo,xc),e(mo,fo),e(fo,qc),e(fo,Gl),e(Gl,Sc),e(mo,Fc),e(Ve,Mc),e(Ve,ze),e(ze,Bc),e(ze,Hl),e(Hl,jc),e(ze,Nc),e(ze,Ul),e(Ul,Rc),e(ze,Gc),d(t,Xs,n),d(t,Je,n),e(Je,Hc),e(Je,Wl),e(Wl,Uc),e(Je,Wc),d(t,Ks,n),v(uo,t,n),d(t,Qs,n),d(t,Ye,n),e(Ye,Xc),e(Ye,Xl),e(Xl,Kc),e(Ye,Qc),d(t,Vs,n),v(vo,t,n),d(t,Js,n),d(t,be,n),e(be,Ze),e(Ze,Kl),v(_o,Kl,null),e(be,Vc),e(be,Ql),e(Ql,Jc),d(t,Ys,n),d(t,T,n),e(T,Yc),e(T,Vl),e(Vl,Zc),e(T,ep),e(T,Jl),e(Jl,tp),e(T,op),e(T,Yl),e(Yl,lp),e(T,ap),d(t,Zs,n),d(t,et,n),e(et,rp),e(et,Zl),e(Zl,ip),e(et,sp),d(t,en,n),d(t,$,n),e($,ea),e(ea,ta),e(ta,np),e($,dp),e($,oa),e(oa,la),e(la,cp),e($,pp),e($,aa),e(aa,ra),e(ra,mp),e($,fp),e($,ia),e(ia,sa),e(sa,up),e($,vp),e($,na),e(na,da),e(da,_p),e($,hp),e($,ca),e(ca,pa),e(pa,Ep),e($,zp),e($,ma),e(ma,fa),e(fa,bp),e($,kp),e($,ua),e(ua,va),e(va,gp),d(t,tn,n),d(t,ke,n),e(ke,tt),e(tt,_a),v(ho,_a,null),e(ke,$p),e(ke,ha),e(ha,Cp),d(t,on,n),d(t,J,n),e(J,Op),e(J,Ea),e(Ea,wp),e(J,yp),e(J,za),e(za,Dp),e(J,Pp),d(t,ln,n),d(t,ot,n),e(ot,Tp),e(ot,ba),e(ba,Lp),e(ot,Ap),d(t,an,n),v(Eo,t,n),d(t,rn,n),d(t,lt,n),e(lt,Ip),e(lt,ka),e(ka,xp),e(lt,qp),d(t,sn,n),v(zo,t,n),d(t,nn,n),d(t,ol,n),e(ol,Sp),d(t,dn,n),v(bo,t,n),d(t,cn,n),d(t,ge,n),e(ge,at),e(at,ga),v(ko,ga,null),e(ge,Fp),e(ge,$a),e($a,Mp),d(t,pn,n),d(t,rt,n),e(rt,Bp),e(rt,Ca),e(Ca,jp),e(rt,Np),d(t,mn,n),d(t,ll,n),e(ll,Rp),d(t,fn,n),d(t,$e,n),e($e,it),e(it,Oa),v(go,Oa,null),e($e,Gp),e($e,wa),e(wa,Hp),d(t,un,n),d(t,st,n),e(st,Up),e(st,ya),e(ya,Wp),e(st,Xp),d(t,vn,n),d(t,nt,n),e(nt,Kp),e(nt,Da),e(Da,Qp),e(nt,Vp),d(t,_n,n),v($o,t,n),d(t,hn,n),d(t,dt,n),e(dt,Jp),e(dt,Pa),e(Pa,Yp),e(dt,Zp),d(t,En,n),v(Co,t,n),d(t,zn,n),d(t,Ce,n),e(Ce,ct),e(ct,Ta),v(Oo,Ta,null),e(Ce,em),e(Ce,Oe),e(Oe,tm),e(Oe,La),e(La,om),e(Oe,lm),e(Oe,Aa),e(Aa,am),e(Oe,rm),d(t,bn,n),d(t,pt,n),e(pt,im),e(pt,wo),e(wo,sm),e(wo,Ia),e(Ia,nm),e(pt,dm),d(t,kn,n),d(t,mt,n),e(mt,cm),e(mt,xa),e(xa,pm),e(mt,mm),d(t,gn,n),d(t,we,n),e(we,ft),e(ft,qa),v(yo,qa,null),e(we,fm),e(we,Sa),e(Sa,um),d(t,$n,n),d(t,L,n),e(L,vm),e(L,Fa),e(Fa,_m),e(L,hm),e(L,Ma),e(Ma,Em),e(L,zm),e(L,Ba),e(Ba,bm),e(L,km),d(t,Cn,n),d(t,ut,n),e(ut,gm),e(ut,ja),e(ja,$m),e(ut,Cm),d(t,On,n),v(Do,t,n),d(t,wn,n),d(t,vt,n),e(vt,Om),e(vt,Na),e(Na,wm),e(vt,ym),d(t,yn,n),v(Po,t,n),d(t,Dn,n),d(t,al,n),e(al,Dm),d(t,Pn,n),v(To,t,n),d(t,Tn,n),d(t,ye,n),e(ye,_t),e(_t,Ra),v(Lo,Ra,null),e(ye,Pm),e(ye,Ga),e(Ga,Tm),d(t,Ln,n),d(t,ht,n),e(ht,Lm),e(ht,Ao),e(Ao,Am),e(ht,Im),d(t,An,n),d(t,rl,n),e(rl,xm),d(t,In,n),d(t,il,n),e(il,qm),d(t,xn,n),d(t,z,n),e(z,A),e(A,Ha),e(Ha,Sm),e(A,Fm),e(A,Ua),e(Ua,Mm),e(A,Bm),e(A,Wa),e(Wa,jm),e(A,Nm),e(A,Xa),e(Xa,Rm),e(A,Gm),e(z,Hm),e(z,I),e(I,Ka),e(Ka,Um),e(I,Wm),e(I,Qa),e(Qa,Xm),e(I,Km),e(I,Va),e(Va,Qm),e(I,Vm),e(I,Ja),e(Ja,Jm),e(I,Ym),e(z,Zm),e(z,Y),e(Y,Ya),e(Ya,ef),e(Y,tf),e(Y,Za),e(Za,of),e(Y,lf),e(Y,er),e(er,af),e(Y,rf),e(z,sf),e(z,Z),e(Z,tr),e(tr,nf),e(Z,df),e(Z,or),e(or,cf),e(Z,pf),e(Z,lr),e(lr,mf),e(Z,ff),e(z,uf),e(z,ee),e(ee,ar),e(ar,vf),e(ee,_f),e(ee,rr),e(rr,hf),e(ee,Ef),e(ee,ir),e(ir,zf),e(ee,bf),e(z,kf),e(z,te),e(te,sr),e(sr,gf),e(te,$f),e(te,nr),e(nr,Cf),e(te,Of),e(te,dr),e(dr,wf),e(te,yf),e(z,Df),e(z,oe),e(oe,cr),e(cr,Pf),e(oe,Tf),e(oe,pr),e(pr,Lf),e(oe,Af),e(oe,mr),e(mr,If),e(oe,xf),e(z,qf),e(z,le),e(le,fr),e(fr,Sf),e(le,Ff),e(le,ur),e(ur,Mf),e(le,Bf),e(le,vr),e(vr,jf),e(le,Nf),e(z,Rf),e(z,ae),e(ae,_r),e(_r,Gf),e(ae,Hf),e(ae,hr),e(hr,Uf),e(ae,Wf),e(ae,Er),e(Er,Xf),e(ae,Kf),e(z,Qf),e(z,re),e(re,zr),e(zr,Vf),e(re,Jf),e(re,br),e(br,Yf),e(re,Zf),e(re,kr),e(kr,eu),e(re,tu),e(z,ou),e(z,ie),e(ie,gr),e(gr,lu),e(ie,au),e(ie,$r),e($r,ru),e(ie,iu),e(ie,Cr),e(Cr,su),e(ie,nu),d(t,qn,n),d(t,sl,n),e(sl,du),d(t,Sn,n),d(t,x,n),e(x,Et),e(Et,Or),e(Or,cu),e(Et,pu),e(Et,wr),e(wr,mu),e(Et,fu),e(x,uu),e(x,zt),e(zt,yr),e(yr,vu),e(zt,_u),e(zt,Dr),e(Dr,hu),e(zt,Eu),e(x,zu),e(x,bt),e(bt,Pr),e(Pr,bu),e(bt,ku),e(bt,Tr),e(Tr,gu),e(bt,$u),e(x,Cu),e(x,kt),e(kt,Lr),e(Lr,Ou),e(kt,wu),e(kt,Ar),e(Ar,yu),e(kt,Du),d(t,Fn,n),d(t,nl,n),e(nl,Pu),d(t,Mn,n),d(t,se,n),e(se,De),e(De,Tu),e(De,Ir),e(Ir,Lu),e(De,Au),e(De,xr),e(xr,Iu),e(De,xu),e(se,qu),e(se,Pe),e(Pe,Su),e(Pe,qr),e(qr,Fu),e(Pe,Mu),e(Pe,Sr),e(Sr,Bu),e(Pe,ju),e(se,Nu),e(se,Te),e(Te,Ru),e(Te,Fr),e(Fr,Gu),e(Te,Hu),e(Te,Mr),e(Mr,Uu),e(Te,Wu),d(t,Bn,n),d(t,gt,n),e(gt,Xu),e(gt,Br),e(Br,Ku),e(gt,Qu),d(t,jn,n),d(t,C,n),e(C,F),e(F,Vu),e(F,jr),e(jr,Ju),e(F,Yu),e(F,Nr),e(Nr,Zu),e(F,ev),e(F,Rr),e(Rr,tv),e(F,ov),e(C,lv),e(C,M),e(M,av),e(M,Gr),e(Gr,rv),e(M,iv),e(M,Hr),e(Hr,sv),e(M,nv),e(M,Ur),e(Ur,dv),e(M,cv),e(C,pv),e(C,Le),e(Le,mv),e(Le,Wr),e(Wr,fv),e(Le,uv),e(Le,Xr),e(Xr,vv),e(Le,_v),e(C,hv),e(C,B),e(B,Ev),e(B,Kr),e(Kr,zv),e(B,bv),e(B,Qr),e(Qr,kv),e(B,gv),e(B,Vr),e(Vr,$v),e(B,Cv),e(C,Ov),e(C,j),e(j,wv),e(j,Jr),e(Jr,yv),e(j,Dv),e(j,Yr),e(Yr,Pv),e(j,Tv),e(j,Zr),e(Zr,Lv),e(j,Av),e(C,Iv),e(C,N),e(N,xv),e(N,ei),e(ei,qv),e(N,Sv),e(N,ti),e(ti,Fv),e(N,Mv),e(N,oi),e(oi,Bv),e(N,jv),e(C,Nv),e(C,R),e(R,Rv),e(R,li),e(li,Gv),e(R,Hv),e(R,ai),e(ai,Uv),e(R,Wv),e(R,ri),e(ri,Xv),e(R,Kv),e(C,Qv),e(C,G),e(G,Vv),e(G,ii),e(ii,Jv),e(G,Yv),e(G,si),e(si,Zv),e(G,e_),e(G,ni),e(ni,t_),e(G,o_),d(t,Nn,n),d(t,$t,n),e($t,l_),e($t,di),e(di,a_),e($t,r_),d(t,Rn,n),d(t,D,n),e(D,H),e(H,i_),e(H,ci),e(ci,s_),e(H,n_),e(H,pi),e(pi,d_),e(H,c_),e(H,mi),e(mi,p_),e(H,m_),e(D,f_),e(D,U),e(U,u_),e(U,fi),e(fi,v_),e(U,__),e(U,ui),e(ui,h_),e(U,E_),e(U,vi),e(vi,z_),e(U,b_),e(D,k_),e(D,W),e(W,g_),e(W,_i),e(_i,$_),e(W,C_),e(W,hi),e(hi,O_),e(W,w_),e(W,Ei),e(Ei,y_),e(W,D_),e(D,P_),e(D,X),e(X,T_),e(X,zi),e(zi,L_),e(X,A_),e(X,bi),e(bi,I_),e(X,x_),e(X,ki),e(ki,q_),e(X,S_),e(D,F_),e(D,K),e(K,M_),e(K,gi),e(gi,B_),e(K,j_),e(K,$i),e($i,N_),e(K,R_),e(K,Ci),e(Ci,G_),e(K,H_),d(t,Gn,n),d(t,Ct,n),e(Ct,U_),e(Ct,Oi),e(Oi,W_),e(Ct,X_),d(t,Hn,n),d(t,dl,n),e(dl,Q),e(Q,K_),e(Q,wi),e(wi,Q_),e(Q,V_),e(Q,yi),e(yi,J_),e(Q,Y_),e(Q,Di),e(Di,Z_),e(Q,eh),d(t,Un,n),d(t,cl,n),e(cl,th),d(t,Wn,n),d(t,Ot,n),e(Ot,Ae),e(Ae,oh),e(Ae,Pi),e(Pi,lh),e(Ae,ah),e(Ae,Ti),e(Ti,rh),e(Ae,ih),e(Ot,sh),e(Ot,Ie),e(Ie,nh),e(Ie,Li),e(Li,dh),e(Ie,ch),e(Ie,Ai),e(Ai,ph),e(Ie,mh),d(t,Xn,n),d(t,pl,n),e(pl,fh),d(t,Kn,n),d(t,ml,n),e(ml,V),e(V,uh),e(V,Ii),e(Ii,vh),e(V,_h),e(V,xi),e(xi,hh),e(V,Eh),e(V,qi),e(qi,zh),e(V,bh),d(t,Qn,n),d(t,xe,n),e(xe,wt),e(wt,Si),v(Io,Si,null),e(xe,kh),e(xe,Fi),e(Fi,gh),d(t,Vn,n),d(t,yt,n),e(yt,$h),e(yt,Mi),e(Mi,Ch),e(yt,Oh),d(t,Jn,n),d(t,qe,n),e(qe,Dt),e(Dt,Bi),v(xo,Bi,null),e(qe,wh),e(qe,Se),e(Se,yh),e(Se,ji),e(ji,Dh),e(Se,Ph),e(Se,Ni),e(Ni,Th),e(Se,Lh),d(t,Yn,n),d(t,q,n),e(q,Ah),e(q,Ri),e(Ri,Ih),e(q,xh),e(q,Gi),e(Gi,qh),e(q,Sh),e(q,Hi),e(Hi,Fh),e(q,Mh),d(t,Zn,n),d(t,Pt,n),e(Pt,Bh),e(Pt,Ui),e(Ui,jh),e(Pt,Nh),d(t,ed,n),d(t,Tt,n),e(Tt,Rh),e(Tt,Wi),e(Wi,Gh),e(Tt,Hh),d(t,td,n),d(t,Fe,n),e(Fe,Lt),e(Lt,Xi),v(qo,Xi,null),e(Fe,Uh),e(Fe,Ki),e(Ki,Wh),d(t,od,n),d(t,At,n),e(At,Xh),e(At,Qi),e(Qi,Kh),e(At,Qh),d(t,ld,n),d(t,Me,n),e(Me,It),e(It,Vi),v(So,Vi,null),e(Me,Vh),e(Me,fl),e(fl,Jh),e(fl,Ji),e(Ji,Yh),d(t,ad,n),d(t,ne,n),e(ne,Zh),e(ne,Yi),e(Yi,e1),e(ne,t1),e(ne,Zi),e(Zi,o1),e(ne,l1),d(t,rd,n),d(t,xt,n),e(xt,a1),e(xt,Fo),e(Fo,r1),e(xt,i1),d(t,id,n),d(t,qt,n),e(qt,s1),e(qt,es),e(es,n1),e(qt,d1),d(t,sd,n),d(t,de,n),e(de,c1),e(de,ts),e(ts,p1),e(de,m1),e(de,os),e(os,f1),e(de,u1),d(t,nd,n),v(Mo,t,n),d(t,dd,n),d(t,Be,n),e(Be,St),e(St,ls),v(Bo,ls,null),e(Be,v1),e(Be,as),e(as,_1),d(t,cd,n),d(t,Ft,n),e(Ft,h1),e(Ft,rs),e(rs,E1),e(Ft,z1),d(t,pd,n),d(t,Mt,n),e(Mt,is),e(is,je),e(je,b1),e(je,ss),e(ss,k1),e(je,g1),e(je,ns),e(ns,$1),e(je,C1),e(Mt,O1),e(Mt,ds),e(ds,b),e(b,w1),e(b,cs),e(cs,y1),e(b,D1),e(b,ps),e(ps,P1),e(b,T1),e(b,ms),e(ms,L1),e(b,A1),e(b,fs),e(fs,I1),e(b,x1),e(b,us),e(us,q1),e(b,S1),e(b,vs),e(vs,F1),e(b,M1),e(b,_s),e(_s,B1),e(b,j1),e(b,hs),e(hs,N1),e(b,R1),e(b,Es),e(Es,G1),e(b,H1),e(b,zs),e(zs,U1),e(b,W1),d(t,md,n),d(t,Bt,n),e(Bt,X1),e(Bt,bs),e(bs,K1),e(Bt,Q1),d(t,fd,n),d(t,ul,n),e(ul,V1),d(t,ud,n),v(jo,t,n),d(t,vd,n),d(t,Ne,n),e(Ne,jt),e(jt,ks),v(No,ks,null),e(Ne,J1),e(Ne,gs),e(gs,Y1),d(t,_d,n),d(t,S,n),e(S,Z1),e(S,$s),e($s,eE),e(S,tE),e(S,Cs),e(Cs,oE),e(S,lE),e(S,Os),e(Os,aE),e(S,rE),d(t,hd,n),d(t,ce,n),e(ce,ws),e(ws,iE),e(ce,sE),e(ce,ys),e(ys,nE),e(ce,dE),e(ce,Ds),e(Ds,cE),d(t,Ed,n),d(t,pe,n),e(pe,pE),e(pe,Ps),e(Ps,mE),e(pe,fE),e(pe,Ts),e(Ts,uE),e(pe,vE),d(t,zd,n),d(t,Nt,n),e(Nt,_E),e(Nt,Ro),e(Ro,hE),e(Nt,EE),d(t,bd,n),d(t,me,n),e(me,zE),e(me,Ls),e(Ls,bE),e(me,kE),e(me,As),e(As,gE),e(me,$E),d(t,kd,n),v(Go,t,n),gd=!0},p:uz,i(t){gd||(_(so.$$.fragment,t),_(no.$$.fragment,t),_(co.$$.fragment,t),_(po.$$.fragment,t),_(uo.$$.fragment,t),_(vo.$$.fragment,t),_(_o.$$.fragment,t),_(ho.$$.fragment,t),_(Eo.$$.fragment,t),_(zo.$$.fragment,t),_(bo.$$.fragment,t),_(ko.$$.fragment,t),_(go.$$.fragment,t),_($o.$$.fragment,t),_(Co.$$.fragment,t),_(Oo.$$.fragment,t),_(yo.$$.fragment,t),_(Do.$$.fragment,t),_(Po.$$.fragment,t),_(To.$$.fragment,t),_(Lo.$$.fragment,t),_(Io.$$.fragment,t),_(xo.$$.fragment,t),_(qo.$$.fragment,t),_(So.$$.fragment,t),_(Mo.$$.fragment,t),_(Bo.$$.fragment,t),_(jo.$$.fragment,t),_(No.$$.fragment,t),_(Go.$$.fragment,t),gd=!0)},o(t){h(so.$$.fragment,t),h(no.$$.fragment,t),h(co.$$.fragment,t),h(po.$$.fragment,t),h(uo.$$.fragment,t),h(vo.$$.fragment,t),h(_o.$$.fragment,t),h(ho.$$.fragment,t),h(Eo.$$.fragment,t),h(zo.$$.fragment,t),h(bo.$$.fragment,t),h(ko.$$.fragment,t),h(go.$$.fragment,t),h($o.$$.fragment,t),h(Co.$$.fragment,t),h(Oo.$$.fragment,t),h(yo.$$.fragment,t),h(Do.$$.fragment,t),h(Po.$$.fragment,t),h(To.$$.fragment,t),h(Lo.$$.fragment,t),h(Io.$$.fragment,t),h(xo.$$.fragment,t),h(qo.$$.fragment,t),h(So.$$.fragment,t),h(Mo.$$.fragment,t),h(Bo.$$.fragment,t),h(jo.$$.fragment,t),h(No.$$.fragment,t),h(Go.$$.fragment,t),gd=!1},d(t){o(ue),t&&o(Ms),t&&o(ve),E(so),t&&o(Bs),t&&o(_e),E(no),t&&o(js),t&&o(Zo),t&&o(Ns),t&&o(he),E(co),t&&o(Rs),t&&o(el),t&&o(Gs),t&&o(tl),t&&o(Hs),t&&o(Ke),t&&o(Us),t&&o(Ee),E(po),t&&o(Ws),t&&o(Ve),t&&o(Xs),t&&o(Je),t&&o(Ks),E(uo,t),t&&o(Qs),t&&o(Ye),t&&o(Vs),E(vo,t),t&&o(Js),t&&o(be),E(_o),t&&o(Ys),t&&o(T),t&&o(Zs),t&&o(et),t&&o(en),t&&o($),t&&o(tn),t&&o(ke),E(ho),t&&o(on),t&&o(J),t&&o(ln),t&&o(ot),t&&o(an),E(Eo,t),t&&o(rn),t&&o(lt),t&&o(sn),E(zo,t),t&&o(nn),t&&o(ol),t&&o(dn),E(bo,t),t&&o(cn),t&&o(ge),E(ko),t&&o(pn),t&&o(rt),t&&o(mn),t&&o(ll),t&&o(fn),t&&o($e),E(go),t&&o(un),t&&o(st),t&&o(vn),t&&o(nt),t&&o(_n),E($o,t),t&&o(hn),t&&o(dt),t&&o(En),E(Co,t),t&&o(zn),t&&o(Ce),E(Oo),t&&o(bn),t&&o(pt),t&&o(kn),t&&o(mt),t&&o(gn),t&&o(we),E(yo),t&&o($n),t&&o(L),t&&o(Cn),t&&o(ut),t&&o(On),E(Do,t),t&&o(wn),t&&o(vt),t&&o(yn),E(Po,t),t&&o(Dn),t&&o(al),t&&o(Pn),E(To,t),t&&o(Tn),t&&o(ye),E(Lo),t&&o(Ln),t&&o(ht),t&&o(An),t&&o(rl),t&&o(In),t&&o(il),t&&o(xn),t&&o(z),t&&o(qn),t&&o(sl),t&&o(Sn),t&&o(x),t&&o(Fn),t&&o(nl),t&&o(Mn),t&&o(se),t&&o(Bn),t&&o(gt),t&&o(jn),t&&o(C),t&&o(Nn),t&&o($t),t&&o(Rn),t&&o(D),t&&o(Gn),t&&o(Ct),t&&o(Hn),t&&o(dl),t&&o(Un),t&&o(cl),t&&o(Wn),t&&o(Ot),t&&o(Xn),t&&o(pl),t&&o(Kn),t&&o(ml),t&&o(Qn),t&&o(xe),E(Io),t&&o(Vn),t&&o(yt),t&&o(Jn),t&&o(qe),E(xo),t&&o(Yn),t&&o(q),t&&o(Zn),t&&o(Pt),t&&o(ed),t&&o(Tt),t&&o(td),t&&o(Fe),E(qo),t&&o(od),t&&o(At),t&&o(ld),t&&o(Me),E(So),t&&o(ad),t&&o(ne),t&&o(rd),t&&o(xt),t&&o(id),t&&o(qt),t&&o(sd),t&&o(de),t&&o(nd),E(Mo,t),t&&o(dd),t&&o(Be),E(Bo),t&&o(cd),t&&o(Ft),t&&o(pd),t&&o(Mt),t&&o(md),t&&o(Bt),t&&o(fd),t&&o(ul),t&&o(ud),E(jo,t),t&&o(vd),t&&o(Ne),E(No),t&&o(_d),t&&o(S),t&&o(hd),t&&o(ce),t&&o(Ed),t&&o(pe),t&&o(zd),t&&o(Nt),t&&o(bd),t&&o(me),t&&o(kd),E(Go,t)}}}const hz={local:"migrazione-da-pacchetti-precedenti",sections:[{local:"migrazione-da-transformers-v3x-a-v4x",sections:[{local:"1-autotokenizer-e-pipeline-ora-utilizzano-tokenizer-veloci-rust-per-impostazione-predefinita",sections:[{local:"come-ottenere-lo-stesso-comportamento-di-v3x-in-v4x",title:"Come ottenere lo stesso comportamento di v3.x in v4.x "}],title:"1. AutoTokenizer e pipeline ora utilizzano tokenizer veloci (rust) per impostazione predefinita. "},{local:"2-sentencepiece-stato-rimosso-dalle-dipendenze-richieste",sections:[{local:"come-ottenere-lo-stesso-comportamento-della-v3x-nella-v4x",title:"Come ottenere lo stesso comportamento della v3.x nella v4.x "}],title:"2. SentencePiece \xE8 stato rimosso dalle dipendenze richieste "},{local:"3-larchitettura-delle-repo-stato-aggiornata-in-modo-che-ogni-modello-abbia-la-propria-cartella",sections:[{local:"come-ottenere-lo-stesso-comportamento-della-v3x-nella-v4x",title:"Come ottenere lo stesso comportamento della v3.x nella v4.x "}],title:"3. L'architettura delle repo \xE8 stato aggiornata in modo che ogni modello abbia la propria cartella "},{local:"4-impostare-largomento-returndict-su-true-per-impostazione-predefinita",sections:[{local:"come-ottenere-lo-stesso-comportamento-della-v3x-nella-v4x",title:"Come ottenere lo stesso comportamento della v3.x nella v4.x "}],title:"4. Impostare l'argomento `return_dict` su `True` per impostazione predefinita "},{local:"5-rimozione-di-alcuni-attributi-deprecati",title:"5. Rimozione di alcuni attributi deprecati "}],title:"Migrazione da transformers `v3.x` a `v4.x` "},{local:"passaggio-da-pytorchtransformers-a-transformers",sections:[{local:"lordine-posizionale-di-alcune-parole-chiave-di-input-dei-modelli-attentionmask-tokentypeids-cambiato",title:"L\u2019ordine posizionale di alcune parole chiave di input dei modelli (`attention_mask`, `token_type_ids`...) \xE8 cambiato "}],title:"Passaggio da pytorch-transformers a \u{1F917} Transformers "},{local:"migrazione-da-pytorchpretrainedbert",sections:[{local:"i-modelli-restituiscono-sempre-tuple",title:"I modelli restituiscono sempre `tuple` "},{local:"serializzazione",title:"Serializzazione "},{local:"ottimizzatori-bertadam-e-openaiadam-ora-sono-adamw-lo-scheduling-quello-standard-pytorch",title:"Ottimizzatori: BertAdam e OpenAIAdam ora sono AdamW, lo scheduling \xE8 quello standard PyTorch "}],title:"Migrazione da pytorch-pretrained-bert "}],title:"Migrazione da pacchetti precedenti "};function Ez(yE){return vz(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class gz extends cz{constructor(ue){super();pz(this,ue,Ez,_z,mz,{})}}export{gz as default,hz as metadata};
