import{S as Ot,i as Dt,s as Gt,e as o,k as $,w as ut,t as r,M as Rt,c as l,d as s,m as x,a,x as ct,h as n,b as M,G as e,g as c,y as mt,q as dt,o as pt,B as ft,v as jt}from"../../chunks/vendor-hf-doc-builder.js";import{T as Ft}from"../../chunks/Tip-hf-doc-builder.js";import{I as Ht}from"../../chunks/IconCopyLink-hf-doc-builder.js";import{C as Bt}from"../../chunks/CourseFloatingBanner-hf-doc-builder.js";function Ut(ie){let d,L,h,v,_,P,T,b,N,y;return{c(){d=r("\u26A0\uFE0F Afin de b\xE9n\xE9ficier de toutes les fonctionnalit\xE9s disponibles avec le "),L=o("i"),h=r("Hub"),v=r(" et la biblioth\xE8que \u{1F917} "),_=o("i"),P=r("Transformers"),T=r(", nous vous recommandons "),b=o("a"),N=r("de cr\xE9er un compte"),y=r("."),this.h()},l(i){d=n(i,"\u26A0\uFE0F Afin de b\xE9n\xE9ficier de toutes les fonctionnalit\xE9s disponibles avec le "),L=l(i,"I",{});var m=a(L);h=n(m,"Hub"),m.forEach(s),v=n(i," et la biblioth\xE8que \u{1F917} "),_=l(i,"I",{});var E=a(_);P=n(E,"Transformers"),E.forEach(s),T=n(i,", nous vous recommandons "),b=l(i,"A",{href:!0});var O=a(b);N=n(O,"de cr\xE9er un compte"),O.forEach(s),y=n(i,"."),this.h()},h(){M(b,"href","https://huggingface.co/join")},m(i,m){c(i,d,m),c(i,L,m),e(L,h),c(i,v,m),c(i,_,m),e(_,P),c(i,T,m),c(i,b,m),e(b,N),c(i,y,m)},d(i){i&&s(d),i&&s(L),i&&s(v),i&&s(_),i&&s(T),i&&s(b),i&&s(y)}}}function Jt(ie){let d,L,h,v,_,P,T,b,N,y,i,m,E,O,D,be,Ee,U,_e,qe,ue,g,$e,J,xe,Le,K,Pe,ge,ce,A,G,Q,Ae,ke,we,q,V,ye,Ie,W,Me,Te,X,Ce,ze,Y,Ne,Se,Oe,R,Z,De,Ge,me,C,Re,ee,je,Fe,de,p,He,te,Be,Ue,se,Je,Ke,j,Qe,Ve,re,We,Xe,pe,f,Ye,ne,Ze,et,oe,tt,st,le,rt,nt,ae,ot,lt,fe,z,he;return P=new Ht({}),i=new Bt({props:{chapter:2,classNames:"absolute z-10 right-0 top-0"}}),z=new Ft({props:{$$slots:{default:[Ut]},$$scope:{ctx:ie}}}),{c(){d=o("meta"),L=$(),h=o("h1"),v=o("a"),_=o("span"),ut(P.$$.fragment),T=$(),b=o("span"),N=r("Introduction"),y=$(),ut(i.$$.fragment),m=$(),E=o("p"),O=r("Comme vous l\u2019avez vu dans le "),D=o("a"),be=r("chapitre 1"),Ee=r(", les "),U=o("em"),_e=r("transformers"),qe=r(" sont g\xE9n\xE9ralement tr\xE8s grands. Pouvant aller de plusieurs millions \xE0 des dizaines de milliards de param\xE8tres, l\u2019entra\xEEnement et le d\xE9ploiement de ces mod\xE8les est une entreprise compliqu\xE9e. De plus, avec de nouveaux mod\xE8les publi\xE9s presque quotidiennement et ayant chacun sa propre impl\xE9mentation, les essayer tous n\u2019est pas une t\xE2che facile."),ue=$(),g=o("p"),$e=r("La biblioth\xE8que \u{1F917} "),J=o("em"),xe=r("Transformers"),Le=r(" a \xE9t\xE9 cr\xE9\xE9e pour r\xE9soudre ce probl\xE8me. Son objectif est de fournir une API unique \xE0 travers laquelle tout mod\xE8le de "),K=o("em"),Pe=r("transformers"),ge=r(" peut \xEAtre charg\xE9, entra\xEEn\xE9 et sauvegard\xE9. Les principales caract\xE9ristiques de la biblioth\xE8que sont :"),ce=$(),A=o("ul"),G=o("li"),Q=o("strong"),Ae=r("La facilit\xE9 d\u2019utilisation"),ke=r(" : en seulement deux lignes de code il est possible de t\xE9l\xE9charger, charger et utiliser un mod\xE8le de NLP \xE0 l\u2019\xE9tat de l\u2019art pour faire de l\u2019inf\xE9rence,"),we=$(),q=o("li"),V=o("strong"),ye=r("La flexibilit\xE9"),Ie=r(" : au fond, tous les mod\xE8les sont de simples classes PyTorch "),W=o("code"),Me=r("nn.Module"),Te=r(" ou TensorFlow "),X=o("code"),Ce=r("tf.keras.Model"),ze=r(" et peuvent \xEAtre manipul\xE9s comme n\u2019importe quel autre mod\xE8le dans leurs "),Y=o("em"),Ne=r("frameworks"),Se=r(" d\u2019apprentissage automatique respectifs,"),Oe=$(),R=o("li"),Z=o("strong"),De=r("La simplicit\xE9"),Ge=r(" : pratiquement aucune abstraction n\u2019est faite dans la biblioth\xE8que. Avoir tout dans un fichier est un concept central : la passe avant d\u2019un mod\xE8le est enti\xE8rement d\xE9finie dans un seul fichier afin que le code lui-m\xEAme soit compr\xE9hensible et piratable."),me=$(),C=o("p"),Re=r("Cette derni\xE8re caract\xE9ristique rend \u{1F917} "),ee=o("em"),je=r("Transformers"),Fe=r(` tr\xE8s diff\xE9rent des autres biblioth\xE8ques d\u2019apprentissage automatique.
Les mod\xE8les ne sont pas construits sur des modules partag\xE9s entre plusieurs fichiers. Au lieu de cela, chaque mod\xE8le poss\xE8de ses propres couches.
En plus de rendre les mod\xE8les plus accessibles et compr\xE9hensibles, cela vous permet d\u2019exp\xE9rimenter des choses facilement sur un mod\xE8le sans affecter les autres.`),de=$(),p=o("p"),He=r("Ce chapitre commence par un exemple de bout en bout o\xF9 nous utilisons un mod\xE8le et un "),te=o("em"),Be=r("tokenizer"),Ue=r(" ensemble pour reproduire la fonction "),se=o("code"),Je=r("pipeline()"),Ke=r(" introduite dans le "),j=o("a"),Qe=r("chapitre 1"),Ve=r(`.
Ensuite, nous aborderons l\u2019API `),re=o("em"),We=r("model"),Xe=r(" : nous nous plongerons dans les classes de mod\xE8le et de configuration, nous verrons comment charger un mod\xE8le et enfin comment il traite les entr\xE9es num\xE9riques pour produire des pr\xE9dictions."),pe=$(),f=o("p"),Ye=r("Nous examinerons ensuite l\u2019API "),ne=o("em"),Ze=r("tokenizer"),et=r(" qui est l\u2019autre composant principal de la fonction "),oe=o("code"),tt=r("pipeline()"),st=r(`.
Les `),le=o("em"),rt=r("tokenizers"),nt=r(` s\u2019occupent de la premi\xE8re et de la derni\xE8re \xE9tape du traitement en g\xE9rant la conversion du texte en entr\xE9es num\xE9riques pour le r\xE9seau neuronal et la reconversion en texte lorsqu\u2019elle est n\xE9cessaire.
Enfin, nous montrerons comment g\xE9rer l\u2019envoi de plusieurs phrases \xE0 travers un mod\xE8le dans un batch pr\xE9par\xE9 et nous conclurons le tout en examinant de plus pr\xE8s la fonction `),ae=o("code"),ot=r("tokenizer()"),lt=r("."),fe=$(),ut(z.$$.fragment),this.h()},l(t){const u=Rt('[data-svelte="svelte-1phssyn"]',document.head);d=l(u,"META",{name:!0,content:!0}),u.forEach(s),L=x(t),h=l(t,"H1",{class:!0});var S=a(h);v=l(S,"A",{id:!0,class:!0,href:!0});var ht=a(v);_=l(ht,"SPAN",{});var vt=a(_);ct(P.$$.fragment,vt),vt.forEach(s),ht.forEach(s),T=x(S),b=l(S,"SPAN",{});var bt=a(b);N=n(bt,"Introduction"),bt.forEach(s),S.forEach(s),y=x(t),ct(i.$$.fragment,t),m=x(t),E=l(t,"P",{});var F=a(E);O=n(F,"Comme vous l\u2019avez vu dans le "),D=l(F,"A",{href:!0});var Et=a(D);be=n(Et,"chapitre 1"),Et.forEach(s),Ee=n(F,", les "),U=l(F,"EM",{});var _t=a(U);_e=n(_t,"transformers"),_t.forEach(s),qe=n(F," sont g\xE9n\xE9ralement tr\xE8s grands. Pouvant aller de plusieurs millions \xE0 des dizaines de milliards de param\xE8tres, l\u2019entra\xEEnement et le d\xE9ploiement de ces mod\xE8les est une entreprise compliqu\xE9e. De plus, avec de nouveaux mod\xE8les publi\xE9s presque quotidiennement et ayant chacun sa propre impl\xE9mentation, les essayer tous n\u2019est pas une t\xE2che facile."),F.forEach(s),ue=x(t),g=l(t,"P",{});var H=a(g);$e=n(H,"La biblioth\xE8que \u{1F917} "),J=l(H,"EM",{});var qt=a(J);xe=n(qt,"Transformers"),qt.forEach(s),Le=n(H," a \xE9t\xE9 cr\xE9\xE9e pour r\xE9soudre ce probl\xE8me. Son objectif est de fournir une API unique \xE0 travers laquelle tout mod\xE8le de "),K=l(H,"EM",{});var $t=a(K);Pe=n($t,"transformers"),$t.forEach(s),ge=n(H," peut \xEAtre charg\xE9, entra\xEEn\xE9 et sauvegard\xE9. Les principales caract\xE9ristiques de la biblioth\xE8que sont :"),H.forEach(s),ce=x(t),A=l(t,"UL",{});var B=a(A);G=l(B,"LI",{});var at=a(G);Q=l(at,"STRONG",{});var xt=a(Q);Ae=n(xt,"La facilit\xE9 d\u2019utilisation"),xt.forEach(s),ke=n(at," : en seulement deux lignes de code il est possible de t\xE9l\xE9charger, charger et utiliser un mod\xE8le de NLP \xE0 l\u2019\xE9tat de l\u2019art pour faire de l\u2019inf\xE9rence,"),at.forEach(s),we=x(B),q=l(B,"LI",{});var I=a(q);V=l(I,"STRONG",{});var Lt=a(V);ye=n(Lt,"La flexibilit\xE9"),Lt.forEach(s),Ie=n(I," : au fond, tous les mod\xE8les sont de simples classes PyTorch "),W=l(I,"CODE",{});var Pt=a(W);Me=n(Pt,"nn.Module"),Pt.forEach(s),Te=n(I," ou TensorFlow "),X=l(I,"CODE",{});var gt=a(X);Ce=n(gt,"tf.keras.Model"),gt.forEach(s),ze=n(I," et peuvent \xEAtre manipul\xE9s comme n\u2019importe quel autre mod\xE8le dans leurs "),Y=l(I,"EM",{});var At=a(Y);Ne=n(At,"frameworks"),At.forEach(s),Se=n(I," d\u2019apprentissage automatique respectifs,"),I.forEach(s),Oe=x(B),R=l(B,"LI",{});var it=a(R);Z=l(it,"STRONG",{});var kt=a(Z);De=n(kt,"La simplicit\xE9"),kt.forEach(s),Ge=n(it," : pratiquement aucune abstraction n\u2019est faite dans la biblioth\xE8que. Avoir tout dans un fichier est un concept central : la passe avant d\u2019un mod\xE8le est enti\xE8rement d\xE9finie dans un seul fichier afin que le code lui-m\xEAme soit compr\xE9hensible et piratable."),it.forEach(s),B.forEach(s),me=x(t),C=l(t,"P",{});var ve=a(C);Re=n(ve,"Cette derni\xE8re caract\xE9ristique rend \u{1F917} "),ee=l(ve,"EM",{});var wt=a(ee);je=n(wt,"Transformers"),wt.forEach(s),Fe=n(ve,` tr\xE8s diff\xE9rent des autres biblioth\xE8ques d\u2019apprentissage automatique.
Les mod\xE8les ne sont pas construits sur des modules partag\xE9s entre plusieurs fichiers. Au lieu de cela, chaque mod\xE8le poss\xE8de ses propres couches.
En plus de rendre les mod\xE8les plus accessibles et compr\xE9hensibles, cela vous permet d\u2019exp\xE9rimenter des choses facilement sur un mod\xE8le sans affecter les autres.`),ve.forEach(s),de=x(t),p=l(t,"P",{});var k=a(p);He=n(k,"Ce chapitre commence par un exemple de bout en bout o\xF9 nous utilisons un mod\xE8le et un "),te=l(k,"EM",{});var yt=a(te);Be=n(yt,"tokenizer"),yt.forEach(s),Ue=n(k," ensemble pour reproduire la fonction "),se=l(k,"CODE",{});var It=a(se);Je=n(It,"pipeline()"),It.forEach(s),Ke=n(k," introduite dans le "),j=l(k,"A",{href:!0});var Mt=a(j);Qe=n(Mt,"chapitre 1"),Mt.forEach(s),Ve=n(k,`.
Ensuite, nous aborderons l\u2019API `),re=l(k,"EM",{});var Tt=a(re);We=n(Tt,"model"),Tt.forEach(s),Xe=n(k," : nous nous plongerons dans les classes de mod\xE8le et de configuration, nous verrons comment charger un mod\xE8le et enfin comment il traite les entr\xE9es num\xE9riques pour produire des pr\xE9dictions."),k.forEach(s),pe=x(t),f=l(t,"P",{});var w=a(f);Ye=n(w,"Nous examinerons ensuite l\u2019API "),ne=l(w,"EM",{});var Ct=a(ne);Ze=n(Ct,"tokenizer"),Ct.forEach(s),et=n(w," qui est l\u2019autre composant principal de la fonction "),oe=l(w,"CODE",{});var zt=a(oe);tt=n(zt,"pipeline()"),zt.forEach(s),st=n(w,`.
Les `),le=l(w,"EM",{});var Nt=a(le);rt=n(Nt,"tokenizers"),Nt.forEach(s),nt=n(w,` s\u2019occupent de la premi\xE8re et de la derni\xE8re \xE9tape du traitement en g\xE9rant la conversion du texte en entr\xE9es num\xE9riques pour le r\xE9seau neuronal et la reconversion en texte lorsqu\u2019elle est n\xE9cessaire.
Enfin, nous montrerons comment g\xE9rer l\u2019envoi de plusieurs phrases \xE0 travers un mod\xE8le dans un batch pr\xE9par\xE9 et nous conclurons le tout en examinant de plus pr\xE8s la fonction `),ae=l(w,"CODE",{});var St=a(ae);ot=n(St,"tokenizer()"),St.forEach(s),lt=n(w,"."),w.forEach(s),fe=x(t),ct(z.$$.fragment,t),this.h()},h(){M(d,"name","hf:doc:metadata"),M(d,"content",JSON.stringify(Kt)),M(v,"id","introduction"),M(v,"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(v,"href","#introduction"),M(h,"class","relative group"),M(D,"href","/course/fr/chapter1"),M(j,"href","/course/fr/chapter1")},m(t,u){e(document.head,d),c(t,L,u),c(t,h,u),e(h,v),e(v,_),mt(P,_,null),e(h,T),e(h,b),e(b,N),c(t,y,u),mt(i,t,u),c(t,m,u),c(t,E,u),e(E,O),e(E,D),e(D,be),e(E,Ee),e(E,U),e(U,_e),e(E,qe),c(t,ue,u),c(t,g,u),e(g,$e),e(g,J),e(J,xe),e(g,Le),e(g,K),e(K,Pe),e(g,ge),c(t,ce,u),c(t,A,u),e(A,G),e(G,Q),e(Q,Ae),e(G,ke),e(A,we),e(A,q),e(q,V),e(V,ye),e(q,Ie),e(q,W),e(W,Me),e(q,Te),e(q,X),e(X,Ce),e(q,ze),e(q,Y),e(Y,Ne),e(q,Se),e(A,Oe),e(A,R),e(R,Z),e(Z,De),e(R,Ge),c(t,me,u),c(t,C,u),e(C,Re),e(C,ee),e(ee,je),e(C,Fe),c(t,de,u),c(t,p,u),e(p,He),e(p,te),e(te,Be),e(p,Ue),e(p,se),e(se,Je),e(p,Ke),e(p,j),e(j,Qe),e(p,Ve),e(p,re),e(re,We),e(p,Xe),c(t,pe,u),c(t,f,u),e(f,Ye),e(f,ne),e(ne,Ze),e(f,et),e(f,oe),e(oe,tt),e(f,st),e(f,le),e(le,rt),e(f,nt),e(f,ae),e(ae,ot),e(f,lt),c(t,fe,u),mt(z,t,u),he=!0},p(t,[u]){const S={};u&2&&(S.$$scope={dirty:u,ctx:t}),z.$set(S)},i(t){he||(dt(P.$$.fragment,t),dt(i.$$.fragment,t),dt(z.$$.fragment,t),he=!0)},o(t){pt(P.$$.fragment,t),pt(i.$$.fragment,t),pt(z.$$.fragment,t),he=!1},d(t){s(d),t&&s(L),t&&s(h),ft(P),t&&s(y),ft(i,t),t&&s(m),t&&s(E),t&&s(ue),t&&s(g),t&&s(ce),t&&s(A),t&&s(me),t&&s(C),t&&s(de),t&&s(p),t&&s(pe),t&&s(f),t&&s(fe),ft(z,t)}}}const Kt={local:"introduction",title:"Introduction"};function Qt(ie){return jt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Zt extends Ot{constructor(d){super();Dt(this,d,Qt,Jt,Gt,{})}}export{Zt as default,Kt as metadata};
