import{S as il,i as ul,s as cl,e as a,k as _,w as N,t as n,M as dl,c as i,d as r,m as h,x as T,a as u,h as l,b as P,F as t,g as p,y as F,o as $,p as et,q as g,B as S,v as pl,n as tt}from"../../chunks/vendor-1e8b365d.js";import{Y as ll}from"../../chunks/Youtube-c2a8cc39.js";import{I as jt}from"../../chunks/IconCopyLink-483c28ba.js";import{C as U}from"../../chunks/CodeBlock-e5764662.js";import{D as al}from"../../chunks/DocNotebookDropdown-37d928d3.js";import{F as ml}from"../../chunks/FrameworkSwitchCourse-7f8f0f31.js";function fl(E){let o,d;return o=new al({props:{classNames:"absolute z-10 right-0 top-0",options:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/chapter2/section3_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/chapter2/section3_tf.ipynb"}]}}),{c(){N(o.$$.fragment)},l(s){T(o.$$.fragment,s)},m(s,m){F(o,s,m),d=!0},i(s){d||(g(o.$$.fragment,s),d=!0)},o(s){$(o.$$.fragment,s),d=!1},d(s){S(o,s)}}}function _l(E){let o,d;return o=new al({props:{classNames:"absolute z-10 right-0 top-0",options:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/chapter2/section3_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/chapter2/section3_pt.ipynb"}]}}),{c(){N(o.$$.fragment)},l(s){T(o.$$.fragment,s)},m(s,m){F(o,s,m),d=!0},i(s){d||(g(o.$$.fragment,s),d=!0)},o(s){$(o.$$.fragment,s),d=!1},d(s){S(o,s)}}}function hl(E){let o,d;return o=new ll({props:{id:"d3JVgghSOew"}}),{c(){N(o.$$.fragment)},l(s){T(o.$$.fragment,s)},m(s,m){F(o,s,m),d=!0},i(s){d||(g(o.$$.fragment,s),d=!0)},o(s){$(o.$$.fragment,s),d=!1},d(s){S(o,s)}}}function vl(E){let o,d;return o=new ll({props:{id:"AhChOFRegn4"}}),{c(){N(o.$$.fragment)},l(s){T(o.$$.fragment,s)},m(s,m){F(o,s,m),d=!0},i(s){d||(g(o.$$.fragment,s),d=!0)},o(s){$(o.$$.fragment,s),d=!1},d(s){S(o,s)}}}function bl(E){let o,d,s,m,w,q,v,M,C,k,A,L,D,B,O,x,z;return{c(){o=a("p"),d=n("Dans cette section, nous allons examiner de plus pr\xE8s la cr\xE9ation et l\u2019utilisation d\u2019un mod\xE8le. Nous utiliserons la classe "),s=a("code"),m=n("TFAutoModel"),w=n(" qui est pratique lorsque vous voulez instancier n\u2019importe quel mod\xE8le \xE0 partir d\u2019un checkpoint."),q=_(),v=a("p"),M=n("La classe "),C=a("code"),k=n("TFAutoModel"),A=n(" et toutes les classes apparent\xE9es sont en fait de simples "),L=a("em"),D=n("wrappers"),B=n(" sur la grande vari\xE9t\xE9 de mod\xE8les disponibles dans la biblioth\xE8que. C\u2019est une enveloppe intelligente car elle peut automatiquement deviner l\u2019architecture appropri\xE9e pour votre "),O=a("em"),x=n("checkpoint"),z=n(" et ensuite instancier un mod\xE8le avec cette architecture.")},l(y){o=i(y,"P",{});var j=u(o);d=l(j,"Dans cette section, nous allons examiner de plus pr\xE8s la cr\xE9ation et l\u2019utilisation d\u2019un mod\xE8le. Nous utiliserons la classe "),s=i(j,"CODE",{});var I=u(s);m=l(I,"TFAutoModel"),I.forEach(r),w=l(j," qui est pratique lorsque vous voulez instancier n\u2019importe quel mod\xE8le \xE0 partir d\u2019un checkpoint."),j.forEach(r),q=h(y),v=i(y,"P",{});var f=u(v);M=l(f,"La classe "),C=i(f,"CODE",{});var b=u(C);k=l(b,"TFAutoModel"),b.forEach(r),A=l(f," et toutes les classes apparent\xE9es sont en fait de simples "),L=i(f,"EM",{});var H=u(L);D=l(H,"wrappers"),H.forEach(r),B=l(f," sur la grande vari\xE9t\xE9 de mod\xE8les disponibles dans la biblioth\xE8que. C\u2019est une enveloppe intelligente car elle peut automatiquement deviner l\u2019architecture appropri\xE9e pour votre "),O=i(f,"EM",{});var R=u(O);x=l(R,"checkpoint"),R.forEach(r),z=l(f," et ensuite instancier un mod\xE8le avec cette architecture."),f.forEach(r)},m(y,j){p(y,o,j),t(o,d),t(o,s),t(s,m),t(o,w),p(y,q,j),p(y,v,j),t(v,M),t(v,C),t(C,k),t(v,A),t(v,L),t(L,D),t(v,B),t(v,O),t(O,x),t(v,z)},d(y){y&&r(o),y&&r(q),y&&r(v)}}}function $l(E){let o,d,s,m,w,q,v,M,C,k,A,L,D,B,O,x,z;return{c(){o=a("p"),d=n("Dans cette section, nous allons examiner de plus pr\xE8s la cr\xE9ation et l\u2019utilisation d\u2019un mod\xE8le. Nous utiliserons la classe "),s=a("code"),m=n("AutoModel"),w=n(" qui est pratique lorsque vous voulez instancier n\u2019importe quel mod\xE8le \xE0 partir d\u2019un checkpoint."),q=_(),v=a("p"),M=n("La classe "),C=a("code"),k=n("AutoModel"),A=n(" et toutes les classes apparent\xE9es sont en fait de simples "),L=a("em"),D=n("wrappers"),B=n(" sur la grande vari\xE9t\xE9 de mod\xE8les disponibles dans la biblioth\xE8que. C\u2019est une enveloppe intelligente car elle peut automatiquement deviner l\u2019architecture appropri\xE9e pour votre "),O=a("em"),x=n("checkpoint"),z=n(" et ensuite instancier un mod\xE8le avec cette architecture.")},l(y){o=i(y,"P",{});var j=u(o);d=l(j,"Dans cette section, nous allons examiner de plus pr\xE8s la cr\xE9ation et l\u2019utilisation d\u2019un mod\xE8le. Nous utiliserons la classe "),s=i(j,"CODE",{});var I=u(s);m=l(I,"AutoModel"),I.forEach(r),w=l(j," qui est pratique lorsque vous voulez instancier n\u2019importe quel mod\xE8le \xE0 partir d\u2019un checkpoint."),j.forEach(r),q=h(y),v=i(y,"P",{});var f=u(v);M=l(f,"La classe "),C=i(f,"CODE",{});var b=u(C);k=l(b,"AutoModel"),b.forEach(r),A=l(f," et toutes les classes apparent\xE9es sont en fait de simples "),L=i(f,"EM",{});var H=u(L);D=l(H,"wrappers"),H.forEach(r),B=l(f," sur la grande vari\xE9t\xE9 de mod\xE8les disponibles dans la biblioth\xE8que. C\u2019est une enveloppe intelligente car elle peut automatiquement deviner l\u2019architecture appropri\xE9e pour votre "),O=i(f,"EM",{});var R=u(O);x=l(R,"checkpoint"),R.forEach(r),z=l(f," et ensuite instancier un mod\xE8le avec cette architecture."),f.forEach(r)},m(y,j){p(y,o,j),t(o,d),t(o,s),t(s,m),t(o,w),p(y,q,j),p(y,v,j),t(v,M),t(v,C),t(C,k),t(v,A),t(v,L),t(L,D),t(v,B),t(v,O),t(O,x),t(v,z)},d(y){y&&r(o),y&&r(q),y&&r(v)}}}function gl(E){let o,d;return o=new U({props:{code:`from transformers import BertConfig, TFBertModel

# Construire la configuration
config = BertConfig()

# Construire le mod\xE8le \xE0 partir de la configuration
model = TFBertModel(config)`,highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertConfig, TFBertModel

<span class="hljs-comment"># Construire la configuration</span>
config = BertConfig()

<span class="hljs-comment"># Construire le mod\xE8le \xE0 partir de la configuration</span>
model = TFBertModel(config)`}}),{c(){N(o.$$.fragment)},l(s){T(o.$$.fragment,s)},m(s,m){F(o,s,m),d=!0},i(s){d||(g(o.$$.fragment,s),d=!0)},o(s){$(o.$$.fragment,s),d=!1},d(s){S(o,s)}}}function El(E){let o,d;return o=new U({props:{code:`from transformers import BertConfig, BertModel

# Construire la configuration
config = BertConfig()

# Construire le mod\xE8le \xE0 partir de la configuration
model = BertModel(config)`,highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertConfig, BertModel

<span class="hljs-comment"># Construire la configuration</span>
config = BertConfig()

<span class="hljs-comment"># Construire le mod\xE8le \xE0 partir de la configuration</span>
model = BertModel(config)`}}),{c(){N(o.$$.fragment)},l(s){T(o.$$.fragment,s)},m(s,m){F(o,s,m),d=!0},i(s){d||(g(o.$$.fragment,s),d=!0)},o(s){$(o.$$.fragment,s),d=!1},d(s){S(o,s)}}}function kl(E){let o,d;return o=new U({props:{code:`from transformers import BertConfig, TFBertModel

config = BertConfig()
model = TFBertModel(config)

# Le mod\xE8le est initialis\xE9 de fa\xE7on al\xE9atoire !`,highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertConfig, TFBertModel

config = BertConfig()
model = TFBertModel(config)

<span class="hljs-comment"># Le mod\xE8le est initialis\xE9 de fa\xE7on al\xE9atoire !</span>`}}),{c(){N(o.$$.fragment)},l(s){T(o.$$.fragment,s)},m(s,m){F(o,s,m),d=!0},i(s){d||(g(o.$$.fragment,s),d=!0)},o(s){$(o.$$.fragment,s),d=!1},d(s){S(o,s)}}}function ql(E){let o,d;return o=new U({props:{code:`from transformers import BertConfig, BertModel

config = BertConfig()
model = BertModel(config)

# Le mod\xE8le est initialis\xE9 de fa\xE7on al\xE9atoire !`,highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertConfig, BertModel

config = BertConfig()
model = BertModel(config)

<span class="hljs-comment"># Le mod\xE8le est initialis\xE9 de fa\xE7on al\xE9atoire !</span>`}}),{c(){N(o.$$.fragment)},l(s){T(o.$$.fragment,s)},m(s,m){F(o,s,m),d=!0},i(s){d||(g(o.$$.fragment,s),d=!0)},o(s){$(o.$$.fragment,s),d=!1},d(s){S(o,s)}}}function yl(E){let o,d,s,m,w,q,v,M,C,k,A,L,D,B,O,x,z,y,j,I;return o=new U({props:{code:`from transformers import TFBertModel

model = TFBertModel.from_pretrained("bert-base-cased")`,highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFBertModel

model = TFBertModel.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)`}}),{c(){N(o.$$.fragment),d=_(),s=a("p"),m=n("Comme vu pr\xE9c\xE9demment, nous pouvons remplacer "),w=a("code"),q=n("TFBertModel"),v=n(" par la classe \xE9quivalente "),M=a("code"),C=n("TFAutoModel"),k=n(". A partir de maintenant nous ferons cela car cela produit un code agnostique "),A=a("em"),L=n("checkpoint"),D=n(", c\u2019est-\xE0-dire que si votre code fonctionne pour un "),B=a("em"),O=n("checkpoint"),x=n(" donn\xE9, il devrait fonctionner sans probl\xE8me avec un autre. Cela s\u2019applique m\xEAme si l\u2019architecture est diff\xE9rente du moment que le "),z=a("em"),y=n("checkpoint"),j=n(" a \xE9t\xE9 entra\xEEn\xE9 pour une t\xE2che similaire (par exemple, une t\xE2che d\u2019analyse de sentiments).")},l(f){T(o.$$.fragment,f),d=h(f),s=i(f,"P",{});var b=u(s);m=l(b,"Comme vu pr\xE9c\xE9demment, nous pouvons remplacer "),w=i(b,"CODE",{});var H=u(w);q=l(H,"TFBertModel"),H.forEach(r),v=l(b," par la classe \xE9quivalente "),M=i(b,"CODE",{});var R=u(M);C=l(R,"TFAutoModel"),R.forEach(r),k=l(b,". A partir de maintenant nous ferons cela car cela produit un code agnostique "),A=i(b,"EM",{});var X=u(A);L=l(X,"checkpoint"),X.forEach(r),D=l(b,", c\u2019est-\xE0-dire que si votre code fonctionne pour un "),B=i(b,"EM",{});var Y=u(B);O=l(Y,"checkpoint"),Y.forEach(r),x=l(b," donn\xE9, il devrait fonctionner sans probl\xE8me avec un autre. Cela s\u2019applique m\xEAme si l\u2019architecture est diff\xE9rente du moment que le "),z=i(b,"EM",{});var be=u(z);y=l(be,"checkpoint"),be.forEach(r),j=l(b," a \xE9t\xE9 entra\xEEn\xE9 pour une t\xE2che similaire (par exemple, une t\xE2che d\u2019analyse de sentiments)."),b.forEach(r)},m(f,b){F(o,f,b),p(f,d,b),p(f,s,b),t(s,m),t(s,w),t(w,q),t(s,v),t(s,M),t(M,C),t(s,k),t(s,A),t(A,L),t(s,D),t(s,B),t(B,O),t(s,x),t(s,z),t(z,y),t(s,j),I=!0},i(f){I||(g(o.$$.fragment,f),I=!0)},o(f){$(o.$$.fragment,f),I=!1},d(f){S(o,f),f&&r(d),f&&r(s)}}}function wl(E){let o,d,s,m,w,q,v,M,C,k,A,L,D,B,O,x,z,y,j,I;return o=new U({props:{code:`from transformers import BertModel

model = BertModel.from_pretrained("bert-base-cased")`,highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertModel

model = BertModel.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)`}}),{c(){N(o.$$.fragment),d=_(),s=a("p"),m=n("Comme vu pr\xE9c\xE9demment, nous pouvons remplacer "),w=a("code"),q=n("BertModel"),v=n(" par la classe \xE9quivalente "),M=a("code"),C=n("AutoModel"),k=n(". A partir de maintenant nous ferons cela car cela produit un code agnostique "),A=a("em"),L=n("checkpoint"),D=n(", c\u2019est-\xE0-dire que si votre code fonctionne pour un "),B=a("em"),O=n("checkpoint"),x=n(" donn\xE9, il devrait fonctionner sans probl\xE8me avec un autre. Cela s\u2019applique m\xEAme si l\u2019architecture est diff\xE9rente du moment que le "),z=a("em"),y=n("checkpoint"),j=n(" a \xE9t\xE9 entra\xEEn\xE9 pour une t\xE2che similaire (par exemple, une t\xE2che d\u2019analyse de sentiments).")},l(f){T(o.$$.fragment,f),d=h(f),s=i(f,"P",{});var b=u(s);m=l(b,"Comme vu pr\xE9c\xE9demment, nous pouvons remplacer "),w=i(b,"CODE",{});var H=u(w);q=l(H,"BertModel"),H.forEach(r),v=l(b," par la classe \xE9quivalente "),M=i(b,"CODE",{});var R=u(M);C=l(R,"AutoModel"),R.forEach(r),k=l(b,". A partir de maintenant nous ferons cela car cela produit un code agnostique "),A=i(b,"EM",{});var X=u(A);L=l(X,"checkpoint"),X.forEach(r),D=l(b,", c\u2019est-\xE0-dire que si votre code fonctionne pour un "),B=i(b,"EM",{});var Y=u(B);O=l(Y,"checkpoint"),Y.forEach(r),x=l(b," donn\xE9, il devrait fonctionner sans probl\xE8me avec un autre. Cela s\u2019applique m\xEAme si l\u2019architecture est diff\xE9rente du moment que le "),z=i(b,"EM",{});var be=u(z);y=l(be,"checkpoint"),be.forEach(r),j=l(b," a \xE9t\xE9 entra\xEEn\xE9 pour une t\xE2che similaire (par exemple, une t\xE2che d\u2019analyse de sentiments)."),b.forEach(r)},m(f,b){F(o,f,b),p(f,d,b),p(f,s,b),t(s,m),t(s,w),t(w,q),t(s,v),t(s,M),t(M,C),t(s,k),t(s,A),t(A,L),t(s,D),t(s,B),t(B,O),t(s,x),t(s,z),t(z,y),t(s,j),I=!0},i(f){I||(g(o.$$.fragment,f),I=!0)},o(f){$(o.$$.fragment,f),I=!1},d(f){S(o,f),f&&r(d),f&&r(s)}}}function Ml(E){let o,d;return o=new U({props:{code:`ls directory_on_my_computer

config.json tf_model.h5`,highlighted:`ls <span class="hljs-keyword">directory_on_my_computer
</span>
<span class="hljs-built_in">config</span>.<span class="hljs-keyword">json </span>tf_model.h5`}}),{c(){N(o.$$.fragment)},l(s){T(o.$$.fragment,s)},m(s,m){F(o,s,m),d=!0},i(s){d||(g(o.$$.fragment,s),d=!0)},o(s){$(o.$$.fragment,s),d=!1},d(s){S(o,s)}}}function Cl(E){let o,d;return o=new U({props:{code:`ls directory_on_my_computer

config.json pytorch_model.bin`,highlighted:`ls <span class="hljs-keyword">directory_on_my_computer
</span>
<span class="hljs-built_in">config</span>.<span class="hljs-keyword">json </span>pytorch_model.<span class="hljs-keyword">bin</span>`}}),{c(){N(o.$$.fragment)},l(s){T(o.$$.fragment,s)},m(s,m){F(o,s,m),d=!0},i(s){d||(g(o.$$.fragment,s),d=!0)},o(s){$(o.$$.fragment,s),d=!1},d(s){S(o,s)}}}function jl(E){let o,d,s,m,w,q,v,M;return{c(){o=a("p"),d=n("Le fichier "),s=a("em"),m=n("tf_model.h5"),w=n(" est connu comme le "),q=a("em"),v=n("dictionnaire d\u2019\xE9tat"),M=n(". Il contient tous les poids de votre mod\xE8le. Les deux fichiers vont de pair : la configuration est n\xE9cessaire pour conna\xEEtre l\u2019architecture de votre mod\xE8le, tandis que les poids du mod\xE8le sont les param\xE8tres de votre mod\xE8le.")},l(C){o=i(C,"P",{});var k=u(o);d=l(k,"Le fichier "),s=i(k,"EM",{});var A=u(s);m=l(A,"tf_model.h5"),A.forEach(r),w=l(k," est connu comme le "),q=i(k,"EM",{});var L=u(q);v=l(L,"dictionnaire d\u2019\xE9tat"),L.forEach(r),M=l(k,". Il contient tous les poids de votre mod\xE8le. Les deux fichiers vont de pair : la configuration est n\xE9cessaire pour conna\xEEtre l\u2019architecture de votre mod\xE8le, tandis que les poids du mod\xE8le sont les param\xE8tres de votre mod\xE8le."),k.forEach(r)},m(C,k){p(C,o,k),t(o,d),t(o,s),t(s,m),t(o,w),t(o,q),t(q,v),t(o,M)},d(C){C&&r(o)}}}function Bl(E){let o,d,s,m,w,q,v,M;return{c(){o=a("p"),d=n("Le fichier "),s=a("em"),m=n("pytorch_model.bin"),w=n(" est connu comme le "),q=a("em"),v=n("dictionnaire d\u2019\xE9tat"),M=n(". Il contient tous les poids de votre mod\xE8le. Les deux fichiers vont de pair : la configuration est n\xE9cessaire pour conna\xEEtre l\u2019architecture de votre mod\xE8le, tandis que les poids du mod\xE8le sont les param\xE8tres de votre mod\xE8le.")},l(C){o=i(C,"P",{});var k=u(o);d=l(k,"Le fichier "),s=i(k,"EM",{});var A=u(s);m=l(A,"pytorch_model.bin"),A.forEach(r),w=l(k," est connu comme le "),q=i(k,"EM",{});var L=u(q);v=l(L,"dictionnaire d\u2019\xE9tat"),L.forEach(r),M=l(k,". Il contient tous les poids de votre mod\xE8le. Les deux fichiers vont de pair : la configuration est n\xE9cessaire pour conna\xEEtre l\u2019architecture de votre mod\xE8le, tandis que les poids du mod\xE8le sont les param\xE8tres de votre mod\xE8le."),k.forEach(r)},m(C,k){p(C,o,k),t(o,d),t(o,s),t(s,m),t(o,w),t(o,q),t(q,v),t(o,M)},d(C){C&&r(o)}}}function zl(E){let o,d;return o=new U({props:{code:`import tensorflow as tf

model_inputs = tf.constant(encoded_sequences)`,highlighted:`<span class="hljs-keyword">import</span> tensorflow <span class="hljs-keyword">as</span> tf

model_inputs = tf.constant(encoded_sequences)`}}),{c(){N(o.$$.fragment)},l(s){T(o.$$.fragment,s)},m(s,m){F(o,s,m),d=!0},i(s){d||(g(o.$$.fragment,s),d=!0)},o(s){$(o.$$.fragment,s),d=!1},d(s){S(o,s)}}}function Pl(E){let o,d;return o=new U({props:{code:`import torch

model_inputs = torch.tensor(encoded_sequences)`,highlighted:`<span class="hljs-keyword">import</span> torch

model_inputs = torch.tensor(encoded_sequences)`}}),{c(){N(o.$$.fragment)},l(s){T(o.$$.fragment,s)},m(s,m){F(o,s,m),d=!0},i(s){d||(g(o.$$.fragment,s),d=!0)},o(s){$(o.$$.fragment,s),d=!1},d(s){S(o,s)}}}function Ll(E){let o,d,s,m,w,q,v,M,C,k,A,L,D,B,O,x,z,y,j,I,f,b,H,R,X,Y,be,Bt,Zr,_r,rt,es,hr,Z,ee,st,ot,ts,vr,De,br,xe,$r,V,rs,zt,ss,os,Pt,ns,ls,Lt,as,is,At,us,cs,gr,$e,we,Dt,Ne,ds,xt,ps,Er,nt,ms,kr,te,re,lt,Me,fs,at,_s,hs,qr,ue,vs,Nt,bs,$s,Tt,gs,Es,yr,se,oe,it,G,ks,Ft,qs,ys,St,ws,Ms,Ot,Cs,js,Te,Bs,zs,wr,ce,Ps,It,Ls,As,Ht,Ds,xs,Mr,K,Ns,Rt,Ts,Fs,Ut,Ss,Os,Vt,Is,Hs,Cr,Q,Rs,Gt,Us,Vs,Jt,Gs,Js,Fe,Ys,Ks,jr,ge,Ce,Yt,Se,Qs,Kt,Ws,Br,de,Xs,Qt,Zs,eo,Wt,to,ro,zr,Oe,Pr,ut,so,Lr,ne,le,ct,J,oo,Xt,no,lo,Zt,ao,io,er,uo,co,tr,po,mo,Ar,dt,Ee,je,rr,Ie,fo,sr,_o,Dr,W,ho,or,vo,bo,nr,$o,go,lr,Eo,ko,xr,pe,qo,ar,yo,wo,ir,Mo,Co,Nr,pt,jo,Tr,He,Fr,me,Bo,ur,zo,Po,cr,Lo,Ao,Sr,Re,Or,mt,Do,Ir,ae,ie,ft,ke,Be,dr,Ue,xo,pr,No,Hr,_t,To,Rr,Ve,Ur,fe,Fo,mr,So,Oo,fr,Io,Ho,Vr;s=new ml({props:{fw:E[0]}}),M=new jt({});const Ro=[_l,fl],Ge=[];function Uo(e,c){return e[0]==="pt"?0:1}D=Uo(E),B=Ge[D]=Ro[D](E);const Vo=[vl,hl],Je=[];function Go(e,c){return e[0]==="pt"?0:1}x=Go(E),z=Je[x]=Vo[x](E);function Jo(e,c){return e[0]==="pt"?$l:bl}let Gr=Jo(E),qe=Gr(E);Y=new jt({});const Yo=[El,gl],Ye=[];function Ko(e,c){return e[0]==="pt"?0:1}Z=Ko(E),ee=Ye[Z]=Yo[Z](E),De=new U({props:{code:"print(config)",highlighted:'<span class="hljs-built_in">print</span>(config)'}}),xe=new U({props:{code:`BertConfig {
  [...]
  "hidden_size": 768,
  "intermediate_size": 3072,
  "max_position_embeddings": 512,
  "num_attention_heads": 12,
  "num_hidden_layers": 12,
  [...]
}`,highlighted:`BertConfig {
  [...]
  <span class="hljs-string">&quot;hidden_size&quot;</span>: <span class="hljs-number">768</span>,
  <span class="hljs-string">&quot;intermediate_size&quot;</span>: <span class="hljs-number">3072</span>,
  <span class="hljs-string">&quot;max_position_embeddings&quot;</span>: <span class="hljs-number">512</span>,
  <span class="hljs-string">&quot;num_attention_heads&quot;</span>: <span class="hljs-number">12</span>,
  <span class="hljs-string">&quot;num_hidden_layers&quot;</span>: <span class="hljs-number">12</span>,
  [...]
}`}}),Ne=new jt({});const Qo=[ql,kl],Ke=[];function Wo(e,c){return e[0]==="pt"?0:1}te=Wo(E),re=Ke[te]=Qo[te](E);const Xo=[wl,yl],Qe=[];function Zo(e,c){return e[0]==="pt"?0:1}se=Zo(E),oe=Qe[se]=Xo[se](E),Se=new jt({}),Oe=new U({props:{code:'model.save_pretrained("directory_on_my_computer")',highlighted:'model.save_pretrained(<span class="hljs-string">&quot;directory_on_my_computer&quot;</span>)'}});const en=[Cl,Ml],We=[];function tn(e,c){return e[0]==="pt"?0:1}ne=tn(E),le=We[ne]=en[ne](E);function rn(e,c){return e[0]==="pt"?Bl:jl}let Jr=rn(E),ye=Jr(E);Ie=new jt({}),He=new U({props:{code:'sequences = ["Hello!", "Cool.", "Nice!"]',highlighted:'sequences = [<span class="hljs-string">&quot;Hello!&quot;</span>, <span class="hljs-string">&quot;Cool.&quot;</span>, <span class="hljs-string">&quot;Nice!&quot;</span>]'}}),Re=new U({props:{code:`encoded_sequences = [
    [101, 7592, 999, 102],
    [101, 4658, 1012, 102],
    [101, 3835, 999, 102],
]`,highlighted:`encoded_sequences = [
    [<span class="hljs-number">101</span>, <span class="hljs-number">7592</span>, <span class="hljs-number">999</span>, <span class="hljs-number">102</span>],
    [<span class="hljs-number">101</span>, <span class="hljs-number">4658</span>, <span class="hljs-number">1012</span>, <span class="hljs-number">102</span>],
    [<span class="hljs-number">101</span>, <span class="hljs-number">3835</span>, <span class="hljs-number">999</span>, <span class="hljs-number">102</span>],
]`}});const sn=[Pl,zl],Xe=[];function on(e,c){return e[0]==="pt"?0:1}return ae=on(E),ie=Xe[ae]=sn[ae](E),Ue=new jt({}),Ve=new U({props:{code:"output = model(model_inputs)",highlighted:"output = model(model_inputs)"}}),{c(){o=a("meta"),d=_(),N(s.$$.fragment),m=_(),w=a("h1"),q=a("a"),v=a("span"),N(M.$$.fragment),C=_(),k=a("span"),A=n("Les mod\xE8les"),L=_(),B.c(),O=_(),z.c(),y=_(),qe.c(),j=_(),I=a("p"),f=n("Cependant, si vous connaissez le type de mod\xE8le que vous voulez utiliser, vous pouvez utiliser directement la classe qui d\xE9finit son architecture. Voyons comment cela fonctionne avec un mod\xE8le BERT."),b=_(),H=a("h2"),R=a("a"),X=a("span"),N(Y.$$.fragment),be=_(),Bt=a("span"),Zr=n("Cr\xE9ation d\u2019un *transformer*"),_r=_(),rt=a("p"),es=n("La premi\xE8re chose que nous devons faire pour initialiser un mod\xE8le BERT est de charger un objet configuration :"),hr=_(),ee.c(),st=_(),ot=a("p"),ts=n("La configuration contient de nombreux attributs qui sont utilis\xE9s pour construire le mod\xE8le :"),vr=_(),N(De.$$.fragment),br=_(),N(xe.$$.fragment),$r=_(),V=a("p"),rs=n("Bien que vous n\u2019ayez pas encore vu ce que font tous ces attributs, vous devriez en reconna\xEEtre certains : l\u2019attribut "),zt=a("code"),ss=n("hidden_size"),os=n(" d\xE9finit la taille du vecteur "),Pt=a("code"),ns=n("hidden_states"),ls=n(", et "),Lt=a("code"),as=n("num_hidden_layers"),is=n(" d\xE9finit le nombre de couches que le "),At=a("em"),us=n("transformer"),cs=n(" poss\xE8de."),gr=_(),$e=a("h3"),we=a("a"),Dt=a("span"),N(Ne.$$.fragment),ds=_(),xt=a("span"),ps=n("Diff\xE9rentes m\xE9thodes de chargement"),Er=_(),nt=a("p"),ms=n("Un mod\xE8le cr\xE9\xE9 \xE0 partir de la configuration par d\xE9faut est initialis\xE9 avec des valeurs al\xE9atoires :"),kr=_(),re.c(),lt=_(),Me=a("p"),fs=n("Le mod\xE8le peut \xEAtre utilis\xE9 tel quel mais il produira du charabia. En effet, il doit d\u2019abord \xEAtre entra\xEEn\xE9. Nous pourrions entra\xEEner le mod\xE8le \xE0 partir de z\xE9ro sur la t\xE2che qui nous int\xE9resse mais comme vous l\u2019avez vu dans le "),at=a("a"),_s=n("Chapitre 1"),hs=n(" cela n\xE9cessiterait beaucoup de temps et de donn\xE9es. De plus cela aurait un impact environnemental non n\xE9gligeable. Pour \xE9viter les efforts inutiles et redondants, il est imp\xE9ratif de pouvoir partager et r\xE9utiliser les mod\xE8les qui ont d\xE9j\xE0 \xE9t\xE9 entra\xEEn\xE9s."),qr=_(),ue=a("p"),vs=n("Charger un "),Nt=a("em"),bs=n("transformer"),$s=n(" qui a d\xE9j\xE0 \xE9t\xE9 entra\xEEn\xE9 est simple : nous pouvons le faire en utilisant la m\xE9thode "),Tt=a("code"),gs=n("from_pretrained()"),Es=n(" :"),yr=_(),oe.c(),it=_(),G=a("p"),ks=n("Dans l\u2019exemple de code ci-dessus, nous n\u2019avons pas utilis\xE9 "),Ft=a("code"),qs=n("BertConfig"),ys=n(" et avons \xE0 la place charg\xE9 un mod\xE8le pr\xE9-entra\xEEn\xE9 via l\u2019identifiant "),St=a("code"),ws=n("bert-base-cased"),Ms=n(". Il s\u2019agit d\u2019un "),Ot=a("em"),Cs=n("checkpoint"),js=n(" qui a \xE9t\xE9 entra\xEEn\xE9 par les auteurs de BERT eux-m\xEAmes. Vous pouvez trouver davantage de d\xE9tails \xE0 son sujet dans la "),Te=a("a"),Bs=n("fiche du mod\xE8le"),zs=n("."),wr=_(),ce=a("p"),Ps=n("Ce mod\xE8le est maintenant initialis\xE9 avec tous les poids du "),It=a("em"),Ls=n("checkpoint"),As=n(". Il peut \xEAtre utilis\xE9 directement pour l\u2019inf\xE9rence sur les t\xE2ches sur lesquelles il a \xE9t\xE9 entra\xEEn\xE9. Il peut \xE9galement \xEAtre "),Ht=a("em"),Ds=n("finetun\xE9"),xs=n(" sur une nouvelle t\xE2che. En entra\xEEnant avec des poids pr\xE9-entra\xEEn\xE9s plut\xF4t qu\u2019\xE0 partir de z\xE9ro, nous pouvons rapidement obtenir de bons r\xE9sultats."),Mr=_(),K=a("p"),Ns=n("Les poids ont \xE9t\xE9 t\xE9l\xE9charg\xE9s et mis en cache (afin que les futurs appels \xE0 la m\xE9thode "),Rt=a("code"),Ts=n("from_pretrained()"),Fs=n(" ne les ret\xE9l\xE9chargent pas) dans le dossier cache, qui est par d\xE9faut "),Ut=a("em"),Ss=n("~/.cache/huggingface/transformers"),Os=n(". Vous pouvez personnaliser votre dossier de cache en d\xE9finissant la variable d\u2019environnement "),Vt=a("code"),Is=n("HF_HOME"),Hs=n("."),Cr=_(),Q=a("p"),Rs=n("L\u2019identifiant utilis\xE9 pour charger le mod\xE8le peut \xEAtre l\u2019identifiant de n\u2019importe quel mod\xE8le sur le "),Gt=a("em"),Us=n("Model Hub"),Vs=n(" du moment qu\u2019il est compatible avec l\u2019architecture BERT. La liste compl\xE8te des "),Jt=a("em"),Gs=n("checkpoints"),Js=n(" de BERT disponibles peut \xEAtre trouv\xE9e "),Fe=a("a"),Ys=n("ici"),Ks=n("."),jr=_(),ge=a("h3"),Ce=a("a"),Yt=a("span"),N(Se.$$.fragment),Qs=_(),Kt=a("span"),Ws=n("M\xE9thodes de sauvegarde"),Br=_(),de=a("p"),Xs=n("Sauvegarder un mod\xE8le est aussi facile que d\u2019en charger un. Nous utilisons la m\xE9thode "),Qt=a("code"),Zs=n("save_pretrained()"),eo=n(", qui est analogue \xE0 la m\xE9thode "),Wt=a("code"),to=n("from_pretrained()"),ro=n(" :"),zr=_(),N(Oe.$$.fragment),Pr=_(),ut=a("p"),so=n("Cela enregistre deux fichiers sur votre disque :"),Lr=_(),le.c(),ct=_(),J=a("p"),oo=n("Si vous jetez un coup d\u2019\u0153il au fichier "),Xt=a("em"),no=n("config.json"),lo=n(", vous reconna\xEEtrez les attributs n\xE9cessaires pour construire l\u2019architecture du mod\xE8le. Ce fichier contient \xE9galement certaines m\xE9tadonn\xE9es, comme l\u2019origine du "),Zt=a("em"),ao=n("checkpoint"),io=n(" et la version de la biblioth\xE8que \u{1F917} "),er=a("em"),uo=n("Transformers"),co=n(" que vous utilisiez lors du dernier enregistrement du point "),tr=a("em"),po=n("checkpoint"),mo=n("."),Ar=_(),ye.c(),dt=_(),Ee=a("h3"),je=a("a"),rr=a("span"),N(Ie.$$.fragment),fo=_(),sr=a("span"),_o=n("Utilisation d'un *transformer* pour l'inf\xE9rence"),Dr=_(),W=a("p"),ho=n("Maintenant que vous savez comment charger et sauvegarder un mod\xE8le, essayons de l\u2019utiliser pour faire quelques pr\xE9dictions. Les "),or=a("em"),vo=n("transformers"),bo=n(" ne peuvent traiter que des nombres. Des nombres que le "),nr=a("em"),$o=n("tokenizer"),go=n(" g\xE9n\xE8re. Mais avant de parler des "),lr=a("em"),Eo=n("tokenizers"),ko=n(", explorons les entr\xE9es que le mod\xE8le accepte."),xr=_(),pe=a("p"),qo=n("Les "),ar=a("em"),yo=n("tokenizers"),wo=n(" se chargent de passer les entr\xE9es vers les tenseurs du "),ir=a("em"),Mo=n("framework"),Co=n(" appropri\xE9. Pour vous aider \xE0 comprendre ce qui se passe, jetons un coup d\u2019\u0153il rapide \xE0 ce qui doit \xEAtre fait avant d\u2019envoyer les entr\xE9es au mod\xE8le."),Nr=_(),pt=a("p"),jo=n("Disons que nous avons les s\xE9quences suivantes :"),Tr=_(),N(He.$$.fragment),Fr=_(),me=a("p"),Bo=n("Le "),ur=a("em"),zo=n("tokenizer"),Po=n(" les convertit en indices de vocabulaire qui sont g\xE9n\xE9ralement appel\xE9s "),cr=a("em"),Lo=n("input IDs"),Ao=n(". Chaque s\xE9quence est maintenant une liste de nombres ! La sortie r\xE9sultante est :"),Sr=_(),N(Re.$$.fragment),Or=_(),mt=a("p"),Do=n("Il s\u2019agit d\u2019une liste de s\xE9quences encod\xE9es : une liste de listes. Les tenseurs n\u2019acceptent que des formes rectangulaires (pensez aux matrices). Ce \xAB tableau \xBB est d\xE9j\xE0 de forme rectangulaire, donc le convertir en tenseur est facile :"),Ir=_(),ie.c(),ft=_(),ke=a("h3"),Be=a("a"),dr=a("span"),N(Ue.$$.fragment),xo=_(),pr=a("span"),No=n("Utilisation des tenseurs comme entr\xE9es du mod\xE8le"),Hr=_(),_t=a("p"),To=n("L\u2019utilisation des tenseurs avec le mod\xE8le est extr\xEAmement simple, il suffit d\u2019appeler le mod\xE8le avec les entr\xE9es :"),Rr=_(),N(Ve.$$.fragment),Ur=_(),fe=a("p"),Fo=n("Bien que le mod\xE8le accepte un grand nombre d\u2019arguments diff\xE9rents, seuls les identifiants d\u2019entr\xE9e sont n\xE9cessaires. Nous expliquerons plus tard ce que font les autres arguments et quand ils sont n\xE9cessaires. Avant cela, regardons de plus pr\xE8s les "),mr=a("em"),So=n("tokenizers"),Oo=n(", cet outil qui construit les entr\xE9es qu\u2019un "),fr=a("em"),Io=n("transformer"),Ho=n(" peut comprendre."),this.h()},l(e){const c=dl('[data-svelte="svelte-1phssyn"]',document.head);o=i(c,"META",{name:!0,content:!0}),c.forEach(r),d=h(e),T(s.$$.fragment,e),m=h(e),w=i(e,"H1",{class:!0});var Ze=u(w);q=i(Ze,"A",{id:!0,class:!0,href:!0});var ht=u(q);v=i(ht,"SPAN",{});var vt=u(v);T(M.$$.fragment,vt),vt.forEach(r),ht.forEach(r),C=h(Ze),k=i(Ze,"SPAN",{});var bt=u(k);A=l(bt,"Les mod\xE8les"),bt.forEach(r),Ze.forEach(r),L=h(e),B.l(e),O=h(e),z.l(e),y=h(e),qe.l(e),j=h(e),I=i(e,"P",{});var $t=u(I);f=l($t,"Cependant, si vous connaissez le type de mod\xE8le que vous voulez utiliser, vous pouvez utiliser directement la classe qui d\xE9finit son architecture. Voyons comment cela fonctionne avec un mod\xE8le BERT."),$t.forEach(r),b=h(e),H=i(e,"H2",{class:!0});var ze=u(H);R=i(ze,"A",{id:!0,class:!0,href:!0});var gt=u(R);X=i(gt,"SPAN",{});var Et=u(X);T(Y.$$.fragment,Et),Et.forEach(r),gt.forEach(r),be=h(ze),Bt=i(ze,"SPAN",{});var nn=u(Bt);Zr=l(nn,"Cr\xE9ation d\u2019un *transformer*"),nn.forEach(r),ze.forEach(r),_r=h(e),rt=i(e,"P",{});var ln=u(rt);es=l(ln,"La premi\xE8re chose que nous devons faire pour initialiser un mod\xE8le BERT est de charger un objet configuration :"),ln.forEach(r),hr=h(e),ee.l(e),st=h(e),ot=i(e,"P",{});var an=u(ot);ts=l(an,"La configuration contient de nombreux attributs qui sont utilis\xE9s pour construire le mod\xE8le :"),an.forEach(r),vr=h(e),T(De.$$.fragment,e),br=h(e),T(xe.$$.fragment,e),$r=h(e),V=i(e,"P",{});var _e=u(V);rs=l(_e,"Bien que vous n\u2019ayez pas encore vu ce que font tous ces attributs, vous devriez en reconna\xEEtre certains : l\u2019attribut "),zt=i(_e,"CODE",{});var un=u(zt);ss=l(un,"hidden_size"),un.forEach(r),os=l(_e," d\xE9finit la taille du vecteur "),Pt=i(_e,"CODE",{});var cn=u(Pt);ns=l(cn,"hidden_states"),cn.forEach(r),ls=l(_e,", et "),Lt=i(_e,"CODE",{});var dn=u(Lt);as=l(dn,"num_hidden_layers"),dn.forEach(r),is=l(_e," d\xE9finit le nombre de couches que le "),At=i(_e,"EM",{});var pn=u(At);us=l(pn,"transformer"),pn.forEach(r),cs=l(_e," poss\xE8de."),_e.forEach(r),gr=h(e),$e=i(e,"H3",{class:!0});var Yr=u($e);we=i(Yr,"A",{id:!0,class:!0,href:!0});var mn=u(we);Dt=i(mn,"SPAN",{});var fn=u(Dt);T(Ne.$$.fragment,fn),fn.forEach(r),mn.forEach(r),ds=h(Yr),xt=i(Yr,"SPAN",{});var _n=u(xt);ps=l(_n,"Diff\xE9rentes m\xE9thodes de chargement"),_n.forEach(r),Yr.forEach(r),Er=h(e),nt=i(e,"P",{});var hn=u(nt);ms=l(hn,"Un mod\xE8le cr\xE9\xE9 \xE0 partir de la configuration par d\xE9faut est initialis\xE9 avec des valeurs al\xE9atoires :"),hn.forEach(r),kr=h(e),re.l(e),lt=h(e),Me=i(e,"P",{});var Kr=u(Me);fs=l(Kr,"Le mod\xE8le peut \xEAtre utilis\xE9 tel quel mais il produira du charabia. En effet, il doit d\u2019abord \xEAtre entra\xEEn\xE9. Nous pourrions entra\xEEner le mod\xE8le \xE0 partir de z\xE9ro sur la t\xE2che qui nous int\xE9resse mais comme vous l\u2019avez vu dans le "),at=i(Kr,"A",{href:!0});var vn=u(at);_s=l(vn,"Chapitre 1"),vn.forEach(r),hs=l(Kr," cela n\xE9cessiterait beaucoup de temps et de donn\xE9es. De plus cela aurait un impact environnemental non n\xE9gligeable. Pour \xE9viter les efforts inutiles et redondants, il est imp\xE9ratif de pouvoir partager et r\xE9utiliser les mod\xE8les qui ont d\xE9j\xE0 \xE9t\xE9 entra\xEEn\xE9s."),Kr.forEach(r),qr=h(e),ue=i(e,"P",{});var kt=u(ue);vs=l(kt,"Charger un "),Nt=i(kt,"EM",{});var bn=u(Nt);bs=l(bn,"transformer"),bn.forEach(r),$s=l(kt," qui a d\xE9j\xE0 \xE9t\xE9 entra\xEEn\xE9 est simple : nous pouvons le faire en utilisant la m\xE9thode "),Tt=i(kt,"CODE",{});var $n=u(Tt);gs=l($n,"from_pretrained()"),$n.forEach(r),Es=l(kt," :"),kt.forEach(r),yr=h(e),oe.l(e),it=h(e),G=i(e,"P",{});var he=u(G);ks=l(he,"Dans l\u2019exemple de code ci-dessus, nous n\u2019avons pas utilis\xE9 "),Ft=i(he,"CODE",{});var gn=u(Ft);qs=l(gn,"BertConfig"),gn.forEach(r),ys=l(he," et avons \xE0 la place charg\xE9 un mod\xE8le pr\xE9-entra\xEEn\xE9 via l\u2019identifiant "),St=i(he,"CODE",{});var En=u(St);ws=l(En,"bert-base-cased"),En.forEach(r),Ms=l(he,". Il s\u2019agit d\u2019un "),Ot=i(he,"EM",{});var kn=u(Ot);Cs=l(kn,"checkpoint"),kn.forEach(r),js=l(he," qui a \xE9t\xE9 entra\xEEn\xE9 par les auteurs de BERT eux-m\xEAmes. Vous pouvez trouver davantage de d\xE9tails \xE0 son sujet dans la "),Te=i(he,"A",{href:!0,rel:!0});var qn=u(Te);Bs=l(qn,"fiche du mod\xE8le"),qn.forEach(r),zs=l(he,"."),he.forEach(r),wr=h(e),ce=i(e,"P",{});var qt=u(ce);Ps=l(qt,"Ce mod\xE8le est maintenant initialis\xE9 avec tous les poids du "),It=i(qt,"EM",{});var yn=u(It);Ls=l(yn,"checkpoint"),yn.forEach(r),As=l(qt,". Il peut \xEAtre utilis\xE9 directement pour l\u2019inf\xE9rence sur les t\xE2ches sur lesquelles il a \xE9t\xE9 entra\xEEn\xE9. Il peut \xE9galement \xEAtre "),Ht=i(qt,"EM",{});var wn=u(Ht);Ds=l(wn,"finetun\xE9"),wn.forEach(r),xs=l(qt," sur une nouvelle t\xE2che. En entra\xEEnant avec des poids pr\xE9-entra\xEEn\xE9s plut\xF4t qu\u2019\xE0 partir de z\xE9ro, nous pouvons rapidement obtenir de bons r\xE9sultats."),qt.forEach(r),Mr=h(e),K=i(e,"P",{});var Pe=u(K);Ns=l(Pe,"Les poids ont \xE9t\xE9 t\xE9l\xE9charg\xE9s et mis en cache (afin que les futurs appels \xE0 la m\xE9thode "),Rt=i(Pe,"CODE",{});var Mn=u(Rt);Ts=l(Mn,"from_pretrained()"),Mn.forEach(r),Fs=l(Pe," ne les ret\xE9l\xE9chargent pas) dans le dossier cache, qui est par d\xE9faut "),Ut=i(Pe,"EM",{});var Cn=u(Ut);Ss=l(Cn,"~/.cache/huggingface/transformers"),Cn.forEach(r),Os=l(Pe,". Vous pouvez personnaliser votre dossier de cache en d\xE9finissant la variable d\u2019environnement "),Vt=i(Pe,"CODE",{});var jn=u(Vt);Is=l(jn,"HF_HOME"),jn.forEach(r),Hs=l(Pe,"."),Pe.forEach(r),Cr=h(e),Q=i(e,"P",{});var Le=u(Q);Rs=l(Le,"L\u2019identifiant utilis\xE9 pour charger le mod\xE8le peut \xEAtre l\u2019identifiant de n\u2019importe quel mod\xE8le sur le "),Gt=i(Le,"EM",{});var Bn=u(Gt);Us=l(Bn,"Model Hub"),Bn.forEach(r),Vs=l(Le," du moment qu\u2019il est compatible avec l\u2019architecture BERT. La liste compl\xE8te des "),Jt=i(Le,"EM",{});var zn=u(Jt);Gs=l(zn,"checkpoints"),zn.forEach(r),Js=l(Le," de BERT disponibles peut \xEAtre trouv\xE9e "),Fe=i(Le,"A",{href:!0,rel:!0});var Pn=u(Fe);Ys=l(Pn,"ici"),Pn.forEach(r),Ks=l(Le,"."),Le.forEach(r),jr=h(e),ge=i(e,"H3",{class:!0});var Qr=u(ge);Ce=i(Qr,"A",{id:!0,class:!0,href:!0});var Ln=u(Ce);Yt=i(Ln,"SPAN",{});var An=u(Yt);T(Se.$$.fragment,An),An.forEach(r),Ln.forEach(r),Qs=h(Qr),Kt=i(Qr,"SPAN",{});var Dn=u(Kt);Ws=l(Dn,"M\xE9thodes de sauvegarde"),Dn.forEach(r),Qr.forEach(r),Br=h(e),de=i(e,"P",{});var yt=u(de);Xs=l(yt,"Sauvegarder un mod\xE8le est aussi facile que d\u2019en charger un. Nous utilisons la m\xE9thode "),Qt=i(yt,"CODE",{});var xn=u(Qt);Zs=l(xn,"save_pretrained()"),xn.forEach(r),eo=l(yt,", qui est analogue \xE0 la m\xE9thode "),Wt=i(yt,"CODE",{});var Nn=u(Wt);to=l(Nn,"from_pretrained()"),Nn.forEach(r),ro=l(yt," :"),yt.forEach(r),zr=h(e),T(Oe.$$.fragment,e),Pr=h(e),ut=i(e,"P",{});var Tn=u(ut);so=l(Tn,"Cela enregistre deux fichiers sur votre disque :"),Tn.forEach(r),Lr=h(e),le.l(e),ct=h(e),J=i(e,"P",{});var ve=u(J);oo=l(ve,"Si vous jetez un coup d\u2019\u0153il au fichier "),Xt=i(ve,"EM",{});var Fn=u(Xt);no=l(Fn,"config.json"),Fn.forEach(r),lo=l(ve,", vous reconna\xEEtrez les attributs n\xE9cessaires pour construire l\u2019architecture du mod\xE8le. Ce fichier contient \xE9galement certaines m\xE9tadonn\xE9es, comme l\u2019origine du "),Zt=i(ve,"EM",{});var Sn=u(Zt);ao=l(Sn,"checkpoint"),Sn.forEach(r),io=l(ve," et la version de la biblioth\xE8que \u{1F917} "),er=i(ve,"EM",{});var On=u(er);uo=l(On,"Transformers"),On.forEach(r),co=l(ve," que vous utilisiez lors du dernier enregistrement du point "),tr=i(ve,"EM",{});var In=u(tr);po=l(In,"checkpoint"),In.forEach(r),mo=l(ve,"."),ve.forEach(r),Ar=h(e),ye.l(e),dt=h(e),Ee=i(e,"H3",{class:!0});var Wr=u(Ee);je=i(Wr,"A",{id:!0,class:!0,href:!0});var Hn=u(je);rr=i(Hn,"SPAN",{});var Rn=u(rr);T(Ie.$$.fragment,Rn),Rn.forEach(r),Hn.forEach(r),fo=h(Wr),sr=i(Wr,"SPAN",{});var Un=u(sr);_o=l(Un,"Utilisation d'un *transformer* pour l'inf\xE9rence"),Un.forEach(r),Wr.forEach(r),Dr=h(e),W=i(e,"P",{});var Ae=u(W);ho=l(Ae,"Maintenant que vous savez comment charger et sauvegarder un mod\xE8le, essayons de l\u2019utiliser pour faire quelques pr\xE9dictions. Les "),or=i(Ae,"EM",{});var Vn=u(or);vo=l(Vn,"transformers"),Vn.forEach(r),bo=l(Ae," ne peuvent traiter que des nombres. Des nombres que le "),nr=i(Ae,"EM",{});var Gn=u(nr);$o=l(Gn,"tokenizer"),Gn.forEach(r),go=l(Ae," g\xE9n\xE8re. Mais avant de parler des "),lr=i(Ae,"EM",{});var Jn=u(lr);Eo=l(Jn,"tokenizers"),Jn.forEach(r),ko=l(Ae,", explorons les entr\xE9es que le mod\xE8le accepte."),Ae.forEach(r),xr=h(e),pe=i(e,"P",{});var wt=u(pe);qo=l(wt,"Les "),ar=i(wt,"EM",{});var Yn=u(ar);yo=l(Yn,"tokenizers"),Yn.forEach(r),wo=l(wt," se chargent de passer les entr\xE9es vers les tenseurs du "),ir=i(wt,"EM",{});var Kn=u(ir);Mo=l(Kn,"framework"),Kn.forEach(r),Co=l(wt," appropri\xE9. Pour vous aider \xE0 comprendre ce qui se passe, jetons un coup d\u2019\u0153il rapide \xE0 ce qui doit \xEAtre fait avant d\u2019envoyer les entr\xE9es au mod\xE8le."),wt.forEach(r),Nr=h(e),pt=i(e,"P",{});var Qn=u(pt);jo=l(Qn,"Disons que nous avons les s\xE9quences suivantes :"),Qn.forEach(r),Tr=h(e),T(He.$$.fragment,e),Fr=h(e),me=i(e,"P",{});var Mt=u(me);Bo=l(Mt,"Le "),ur=i(Mt,"EM",{});var Wn=u(ur);zo=l(Wn,"tokenizer"),Wn.forEach(r),Po=l(Mt," les convertit en indices de vocabulaire qui sont g\xE9n\xE9ralement appel\xE9s "),cr=i(Mt,"EM",{});var Xn=u(cr);Lo=l(Xn,"input IDs"),Xn.forEach(r),Ao=l(Mt,". Chaque s\xE9quence est maintenant une liste de nombres ! La sortie r\xE9sultante est :"),Mt.forEach(r),Sr=h(e),T(Re.$$.fragment,e),Or=h(e),mt=i(e,"P",{});var Zn=u(mt);Do=l(Zn,"Il s\u2019agit d\u2019une liste de s\xE9quences encod\xE9es : une liste de listes. Les tenseurs n\u2019acceptent que des formes rectangulaires (pensez aux matrices). Ce \xAB tableau \xBB est d\xE9j\xE0 de forme rectangulaire, donc le convertir en tenseur est facile :"),Zn.forEach(r),Ir=h(e),ie.l(e),ft=h(e),ke=i(e,"H3",{class:!0});var Xr=u(ke);Be=i(Xr,"A",{id:!0,class:!0,href:!0});var el=u(Be);dr=i(el,"SPAN",{});var tl=u(dr);T(Ue.$$.fragment,tl),tl.forEach(r),el.forEach(r),xo=h(Xr),pr=i(Xr,"SPAN",{});var rl=u(pr);No=l(rl,"Utilisation des tenseurs comme entr\xE9es du mod\xE8le"),rl.forEach(r),Xr.forEach(r),Hr=h(e),_t=i(e,"P",{});var sl=u(_t);To=l(sl,"L\u2019utilisation des tenseurs avec le mod\xE8le est extr\xEAmement simple, il suffit d\u2019appeler le mod\xE8le avec les entr\xE9es :"),sl.forEach(r),Rr=h(e),T(Ve.$$.fragment,e),Ur=h(e),fe=i(e,"P",{});var Ct=u(fe);Fo=l(Ct,"Bien que le mod\xE8le accepte un grand nombre d\u2019arguments diff\xE9rents, seuls les identifiants d\u2019entr\xE9e sont n\xE9cessaires. Nous expliquerons plus tard ce que font les autres arguments et quand ils sont n\xE9cessaires. Avant cela, regardons de plus pr\xE8s les "),mr=i(Ct,"EM",{});var ol=u(mr);So=l(ol,"tokenizers"),ol.forEach(r),Oo=l(Ct,", cet outil qui construit les entr\xE9es qu\u2019un "),fr=i(Ct,"EM",{});var nl=u(fr);Io=l(nl,"transformer"),nl.forEach(r),Ho=l(Ct," peut comprendre."),Ct.forEach(r),this.h()},h(){P(o,"name","hf:doc:metadata"),P(o,"content",JSON.stringify(Al)),P(q,"id","les-modles"),P(q,"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"),P(q,"href","#les-modles"),P(w,"class","relative group"),P(R,"id","cration-dun-transformer"),P(R,"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"),P(R,"href","#cration-dun-transformer"),P(H,"class","relative group"),P(we,"id","diffrentes-mthodes-de-chargement"),P(we,"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"),P(we,"href","#diffrentes-mthodes-de-chargement"),P($e,"class","relative group"),P(at,"href","/course/fr/chapter1"),P(Te,"href","https://huggingface.co/bert-base-cased"),P(Te,"rel","nofollow"),P(Fe,"href","https://huggingface.co/models?filter=bert"),P(Fe,"rel","nofollow"),P(Ce,"id","mthodes-de-sauvegarde"),P(Ce,"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"),P(Ce,"href","#mthodes-de-sauvegarde"),P(ge,"class","relative group"),P(je,"id","utilisation-dun-transformer-pour-linfrence"),P(je,"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"),P(je,"href","#utilisation-dun-transformer-pour-linfrence"),P(Ee,"class","relative group"),P(Be,"id","utilisation-des-tenseurs-comme-entres-du-modle"),P(Be,"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"),P(Be,"href","#utilisation-des-tenseurs-comme-entres-du-modle"),P(ke,"class","relative group")},m(e,c){t(document.head,o),p(e,d,c),F(s,e,c),p(e,m,c),p(e,w,c),t(w,q),t(q,v),F(M,v,null),t(w,C),t(w,k),t(k,A),p(e,L,c),Ge[D].m(e,c),p(e,O,c),Je[x].m(e,c),p(e,y,c),qe.m(e,c),p(e,j,c),p(e,I,c),t(I,f),p(e,b,c),p(e,H,c),t(H,R),t(R,X),F(Y,X,null),t(H,be),t(H,Bt),t(Bt,Zr),p(e,_r,c),p(e,rt,c),t(rt,es),p(e,hr,c),Ye[Z].m(e,c),p(e,st,c),p(e,ot,c),t(ot,ts),p(e,vr,c),F(De,e,c),p(e,br,c),F(xe,e,c),p(e,$r,c),p(e,V,c),t(V,rs),t(V,zt),t(zt,ss),t(V,os),t(V,Pt),t(Pt,ns),t(V,ls),t(V,Lt),t(Lt,as),t(V,is),t(V,At),t(At,us),t(V,cs),p(e,gr,c),p(e,$e,c),t($e,we),t(we,Dt),F(Ne,Dt,null),t($e,ds),t($e,xt),t(xt,ps),p(e,Er,c),p(e,nt,c),t(nt,ms),p(e,kr,c),Ke[te].m(e,c),p(e,lt,c),p(e,Me,c),t(Me,fs),t(Me,at),t(at,_s),t(Me,hs),p(e,qr,c),p(e,ue,c),t(ue,vs),t(ue,Nt),t(Nt,bs),t(ue,$s),t(ue,Tt),t(Tt,gs),t(ue,Es),p(e,yr,c),Qe[se].m(e,c),p(e,it,c),p(e,G,c),t(G,ks),t(G,Ft),t(Ft,qs),t(G,ys),t(G,St),t(St,ws),t(G,Ms),t(G,Ot),t(Ot,Cs),t(G,js),t(G,Te),t(Te,Bs),t(G,zs),p(e,wr,c),p(e,ce,c),t(ce,Ps),t(ce,It),t(It,Ls),t(ce,As),t(ce,Ht),t(Ht,Ds),t(ce,xs),p(e,Mr,c),p(e,K,c),t(K,Ns),t(K,Rt),t(Rt,Ts),t(K,Fs),t(K,Ut),t(Ut,Ss),t(K,Os),t(K,Vt),t(Vt,Is),t(K,Hs),p(e,Cr,c),p(e,Q,c),t(Q,Rs),t(Q,Gt),t(Gt,Us),t(Q,Vs),t(Q,Jt),t(Jt,Gs),t(Q,Js),t(Q,Fe),t(Fe,Ys),t(Q,Ks),p(e,jr,c),p(e,ge,c),t(ge,Ce),t(Ce,Yt),F(Se,Yt,null),t(ge,Qs),t(ge,Kt),t(Kt,Ws),p(e,Br,c),p(e,de,c),t(de,Xs),t(de,Qt),t(Qt,Zs),t(de,eo),t(de,Wt),t(Wt,to),t(de,ro),p(e,zr,c),F(Oe,e,c),p(e,Pr,c),p(e,ut,c),t(ut,so),p(e,Lr,c),We[ne].m(e,c),p(e,ct,c),p(e,J,c),t(J,oo),t(J,Xt),t(Xt,no),t(J,lo),t(J,Zt),t(Zt,ao),t(J,io),t(J,er),t(er,uo),t(J,co),t(J,tr),t(tr,po),t(J,mo),p(e,Ar,c),ye.m(e,c),p(e,dt,c),p(e,Ee,c),t(Ee,je),t(je,rr),F(Ie,rr,null),t(Ee,fo),t(Ee,sr),t(sr,_o),p(e,Dr,c),p(e,W,c),t(W,ho),t(W,or),t(or,vo),t(W,bo),t(W,nr),t(nr,$o),t(W,go),t(W,lr),t(lr,Eo),t(W,ko),p(e,xr,c),p(e,pe,c),t(pe,qo),t(pe,ar),t(ar,yo),t(pe,wo),t(pe,ir),t(ir,Mo),t(pe,Co),p(e,Nr,c),p(e,pt,c),t(pt,jo),p(e,Tr,c),F(He,e,c),p(e,Fr,c),p(e,me,c),t(me,Bo),t(me,ur),t(ur,zo),t(me,Po),t(me,cr),t(cr,Lo),t(me,Ao),p(e,Sr,c),F(Re,e,c),p(e,Or,c),p(e,mt,c),t(mt,Do),p(e,Ir,c),Xe[ae].m(e,c),p(e,ft,c),p(e,ke,c),t(ke,Be),t(Be,dr),F(Ue,dr,null),t(ke,xo),t(ke,pr),t(pr,No),p(e,Hr,c),p(e,_t,c),t(_t,To),p(e,Rr,c),F(Ve,e,c),p(e,Ur,c),p(e,fe,c),t(fe,Fo),t(fe,mr),t(mr,So),t(fe,Oo),t(fe,fr),t(fr,Io),t(fe,Ho),Vr=!0},p(e,[c]){const Ze={};c&1&&(Ze.fw=e[0]),s.$set(Ze);let ht=D;D=Uo(e),D!==ht&&(tt(),$(Ge[ht],1,1,()=>{Ge[ht]=null}),et(),B=Ge[D],B||(B=Ge[D]=Ro[D](e),B.c()),g(B,1),B.m(O.parentNode,O));let vt=x;x=Go(e),x!==vt&&(tt(),$(Je[vt],1,1,()=>{Je[vt]=null}),et(),z=Je[x],z||(z=Je[x]=Vo[x](e),z.c()),g(z,1),z.m(y.parentNode,y)),Gr!==(Gr=Jo(e))&&(qe.d(1),qe=Gr(e),qe&&(qe.c(),qe.m(j.parentNode,j)));let bt=Z;Z=Ko(e),Z!==bt&&(tt(),$(Ye[bt],1,1,()=>{Ye[bt]=null}),et(),ee=Ye[Z],ee||(ee=Ye[Z]=Yo[Z](e),ee.c()),g(ee,1),ee.m(st.parentNode,st));let $t=te;te=Wo(e),te!==$t&&(tt(),$(Ke[$t],1,1,()=>{Ke[$t]=null}),et(),re=Ke[te],re||(re=Ke[te]=Qo[te](e),re.c()),g(re,1),re.m(lt.parentNode,lt));let ze=se;se=Zo(e),se!==ze&&(tt(),$(Qe[ze],1,1,()=>{Qe[ze]=null}),et(),oe=Qe[se],oe||(oe=Qe[se]=Xo[se](e),oe.c()),g(oe,1),oe.m(it.parentNode,it));let gt=ne;ne=tn(e),ne!==gt&&(tt(),$(We[gt],1,1,()=>{We[gt]=null}),et(),le=We[ne],le||(le=We[ne]=en[ne](e),le.c()),g(le,1),le.m(ct.parentNode,ct)),Jr!==(Jr=rn(e))&&(ye.d(1),ye=Jr(e),ye&&(ye.c(),ye.m(dt.parentNode,dt)));let Et=ae;ae=on(e),ae!==Et&&(tt(),$(Xe[Et],1,1,()=>{Xe[Et]=null}),et(),ie=Xe[ae],ie||(ie=Xe[ae]=sn[ae](e),ie.c()),g(ie,1),ie.m(ft.parentNode,ft))},i(e){Vr||(g(s.$$.fragment,e),g(M.$$.fragment,e),g(B),g(z),g(Y.$$.fragment,e),g(ee),g(De.$$.fragment,e),g(xe.$$.fragment,e),g(Ne.$$.fragment,e),g(re),g(oe),g(Se.$$.fragment,e),g(Oe.$$.fragment,e),g(le),g(Ie.$$.fragment,e),g(He.$$.fragment,e),g(Re.$$.fragment,e),g(ie),g(Ue.$$.fragment,e),g(Ve.$$.fragment,e),Vr=!0)},o(e){$(s.$$.fragment,e),$(M.$$.fragment,e),$(B),$(z),$(Y.$$.fragment,e),$(ee),$(De.$$.fragment,e),$(xe.$$.fragment,e),$(Ne.$$.fragment,e),$(re),$(oe),$(Se.$$.fragment,e),$(Oe.$$.fragment,e),$(le),$(Ie.$$.fragment,e),$(He.$$.fragment,e),$(Re.$$.fragment,e),$(ie),$(Ue.$$.fragment,e),$(Ve.$$.fragment,e),Vr=!1},d(e){r(o),e&&r(d),S(s,e),e&&r(m),e&&r(w),S(M),e&&r(L),Ge[D].d(e),e&&r(O),Je[x].d(e),e&&r(y),qe.d(e),e&&r(j),e&&r(I),e&&r(b),e&&r(H),S(Y),e&&r(_r),e&&r(rt),e&&r(hr),Ye[Z].d(e),e&&r(st),e&&r(ot),e&&r(vr),S(De,e),e&&r(br),S(xe,e),e&&r($r),e&&r(V),e&&r(gr),e&&r($e),S(Ne),e&&r(Er),e&&r(nt),e&&r(kr),Ke[te].d(e),e&&r(lt),e&&r(Me),e&&r(qr),e&&r(ue),e&&r(yr),Qe[se].d(e),e&&r(it),e&&r(G),e&&r(wr),e&&r(ce),e&&r(Mr),e&&r(K),e&&r(Cr),e&&r(Q),e&&r(jr),e&&r(ge),S(Se),e&&r(Br),e&&r(de),e&&r(zr),S(Oe,e),e&&r(Pr),e&&r(ut),e&&r(Lr),We[ne].d(e),e&&r(ct),e&&r(J),e&&r(Ar),ye.d(e),e&&r(dt),e&&r(Ee),S(Ie),e&&r(Dr),e&&r(W),e&&r(xr),e&&r(pe),e&&r(Nr),e&&r(pt),e&&r(Tr),S(He,e),e&&r(Fr),e&&r(me),e&&r(Sr),S(Re,e),e&&r(Or),e&&r(mt),e&&r(Ir),Xe[ae].d(e),e&&r(ft),e&&r(ke),S(Ue),e&&r(Hr),e&&r(_t),e&&r(Rr),S(Ve,e),e&&r(Ur),e&&r(fe)}}}const Al={local:"les-modles",sections:[{local:"cration-dun-transformer",sections:[{local:"diffrentes-mthodes-de-chargement",title:"Diff\xE9rentes m\xE9thodes de chargement"},{local:"mthodes-de-sauvegarde",title:"M\xE9thodes de sauvegarde"},{local:"utilisation-dun-transformer-pour-linfrence",title:"Utilisation d'un *transformer* pour l'inf\xE9rence"},{local:"utilisation-des-tenseurs-comme-entres-du-modle",title:"Utilisation des tenseurs comme entr\xE9es du mod\xE8le"}],title:"Cr\xE9ation d\u2019un *transformer*"}],title:"Les mod\xE8les"};function Dl(E,o,d){let s="pt";return pl(()=>{const m=new URLSearchParams(window.location.search);d(0,s=m.get("fw")||"pt")}),[s]}class Il extends il{constructor(o){super();ul(this,o,Dl,Ll,cl,{})}}export{Il as default,Al as metadata};
