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