import{s as Te,o as je,n as ke}from"../chunks/scheduler.37c15a92.js";import{S as Ue,i as xe,g as h,s as p,r as k,A as $e,h as J,f as n,c as i,j as de,u as U,x as w,k as te,y as we,a as r,v as x,t as y,b as he,d as f,w as $,p as Je}from"../chunks/index.2bf4358c.js";import{T as Ce}from"../chunks/Tip.363c041f.js";import{C as G}from"../chunks/CodeBlock.4f5fc1ad.js";import{C as ge}from"../chunks/CourseFloatingBanner.06521e8b.js";import{F as Ze}from"../chunks/FrameworkSwitchCourse.8d4d4ab6.js";import{H as _e}from"../chunks/Heading.8ada512a.js";function We(d){let s,c;return s=new ge({props:{chapter:4,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/ru/chapter4/section2_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/ru/chapter4/section2_tf.ipynb"}]}}),{c(){k(s.$$.fragment)},l(t){U(s.$$.fragment,t)},m(t,u){x(s,t,u),c=!0},i(t){c||(f(s.$$.fragment,t),c=!0)},o(t){y(s.$$.fragment,t),c=!1},d(t){$(s,t)}}}function Ve(d){let s,c;return s=new ge({props:{chapter:4,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/ru/chapter4/section2_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/ru/chapter4/section2_pt.ipynb"}]}}),{c(){k(s.$$.fragment)},l(t){U(s.$$.fragment,t)},m(t,u){x(s,t,u),c=!0},i(t){c||(f(s.$$.fragment,t),c=!0)},o(t){y(s.$$.fragment,t),c=!1},d(t){$(s,t)}}}function Ne(d){let s,c,t,u='Однако вместо этого мы рекомендуем использовать <a href="https://huggingface.co/transformers/model_doc/auto.html?highlight=auto#auto-classes" rel="nofollow"><code>TFAuto*</code> classes</a> так как они по своей конструкции не зависят от архитектуры используемой модели. В то время как предыдущий пример кода ограничивает пользователей чекпоинтами, загружаемыми в архитектуре CamemBERT, использование классов <code>TFAuto*</code> упрощает переключение между чекпоинтами:',b,m,M;return s=new G({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMENhbWVtYmVydFRva2VuaXplciUyQyUyMFRGQ2FtZW1iZXJ0Rm9yTWFza2VkTE0lMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBDYW1lbWJlcnRUb2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKCUyMmNhbWVtYmVydC1iYXNlJTIyKSUwQW1vZGVsJTIwJTNEJTIwVEZDYW1lbWJlcnRGb3JNYXNrZWRMTS5mcm9tX3ByZXRyYWluZWQoJTIyY2FtZW1iZXJ0LWJhc2UlMjIp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> CamembertTokenizer, TFCamembertForMaskedLM

tokenizer = CamembertTokenizer.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)
model = TFCamembertForMaskedLM.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)`,wrap:!1}}),m=new G({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMkMlMjBURkF1dG9Nb2RlbEZvck1hc2tlZExNJTBBJTBBdG9rZW5pemVyJTIwJTNEJTIwQXV0b1Rva2VuaXplci5mcm9tX3ByZXRyYWluZWQoJTIyY2FtZW1iZXJ0LWJhc2UlMjIpJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvck1hc2tlZExNLmZyb21fcHJldHJhaW5lZCglMjJjYW1lbWJlcnQtYmFzZSUyMik=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, TFAutoModelForMaskedLM

tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)
model = TFAutoModelForMaskedLM.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)`,wrap:!1}}),{c(){k(s.$$.fragment),c=p(),t=h("p"),t.innerHTML=u,b=p(),k(m.$$.fragment)},l(l){U(s.$$.fragment,l),c=i(l),t=J(l,"P",{"data-svelte-h":!0}),w(t)!=="svelte-y0kfah"&&(t.innerHTML=u),b=i(l),U(m.$$.fragment,l)},m(l,o){x(s,l,o),r(l,c,o),r(l,t,o),r(l,b,o),x(m,l,o),M=!0},i(l){M||(f(s.$$.fragment,l),f(m.$$.fragment,l),M=!0)},o(l){y(s.$$.fragment,l),y(m.$$.fragment,l),M=!1},d(l){l&&(n(c),n(t),n(b)),$(s,l),$(m,l)}}}function ve(d){let s,c,t,u='Однако вместо этого мы рекомендуем использовать <a href="https://huggingface.co/transformers/model_doc/auto.html?highlight=auto#auto-classes" rel="nofollow"><code>Auto*</code> классы</a>, так как они по своей конструкции не зависят от архитектуры используемой модели. В то время как предыдущий пример кода ограничивает пользователей чекпоинтами, загружаемыми в архитектуре CamemBERT, использование классов <code>Auto*</code> упрощает переключение между чекпоинтами:',b,m,M;return s=new G({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMENhbWVtYmVydFRva2VuaXplciUyQyUyMENhbWVtYmVydEZvck1hc2tlZExNJTBBJTBBdG9rZW5pemVyJTIwJTNEJTIwQ2FtZW1iZXJ0VG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJjYW1lbWJlcnQtYmFzZSUyMiklMEFtb2RlbCUyMCUzRCUyMENhbWVtYmVydEZvck1hc2tlZExNLmZyb21fcHJldHJhaW5lZCglMjJjYW1lbWJlcnQtYmFzZSUyMik=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> CamembertTokenizer, CamembertForMaskedLM

tokenizer = CamembertTokenizer.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)
model = CamembertForMaskedLM.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)`,wrap:!1}}),m=new G({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMkMlMjBBdXRvTW9kZWxGb3JNYXNrZWRMTSUwQSUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKCUyMmNhbWVtYmVydC1iYXNlJTIyKSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yTWFza2VkTE0uZnJvbV9wcmV0cmFpbmVkKCUyMmNhbWVtYmVydC1iYXNlJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, AutoModelForMaskedLM

tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)
model = AutoModelForMaskedLM.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)`,wrap:!1}}),{c(){k(s.$$.fragment),c=p(),t=h("p"),t.innerHTML=u,b=p(),k(m.$$.fragment)},l(l){U(s.$$.fragment,l),c=i(l),t=J(l,"P",{"data-svelte-h":!0}),w(t)!=="svelte-1d6pk8l"&&(t.innerHTML=u),b=i(l),U(m.$$.fragment,l)},m(l,o){x(s,l,o),r(l,c,o),r(l,t,o),r(l,b,o),x(m,l,o),M=!0},i(l){M||(f(s.$$.fragment,l),f(m.$$.fragment,l),M=!0)},o(l){y(s.$$.fragment,l),y(m.$$.fragment,l),M=!1},d(l){l&&(n(c),n(t),n(b)),$(s,l),$(m,l)}}}function ze(d){let s,c="При использовании предварительно обученной модели обязательно проверьте: как она была обучена, на каких наборах данных, ее ограничениях и смещениях. Вся эта информация должна быть указана в карточке модели.";return{c(){s=h("p"),s.textContent=c},l(t){s=J(t,"P",{"data-svelte-h":!0}),w(s)!=="svelte-101xyj1"&&(s.textContent=c)},m(t,u){r(t,s,u)},p:ke,d(t){t&&n(s)}}}function Ee(d){let s,c,t,u,b,m,M,l,o,g,I,W,ae="Hub упрощает выбор подходящей модели, поэтому ее использование в любой задаче заключается в запуске нескольких строк кода. Давайте посмотрим, как это сделать и как внести свой вклад в сообщество.",X,V,ne="Допустим, мы ищем модель для французского языка, которая может выполнять заполнение пропущенных слов в предложении.",S,C,re='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/camembert.gif" alt="Selecting the Camembert model." width="80%"/>',R,N,ce="Мы выберем для этой задачи чекпоинт <code>camembert-base</code>. Идентификатор <code>camembert-base</code> – все, что нам нужно, чтобы начать использовать модель! Как вы видели в предыдущих главах, мы можем инициализировать модель с использованием функции <code>pipeline()</code>:",L,v,H,z,q,E,oe="Как видите, загрузить модель в пайплайн очень просто. Единственное, на что вам нужно обратить внимание, это чтобы выбранный чекпоинт подходил для задачи, для которой он будет использоваться. Например, здесь мы загружаем чекпоинт <code>camembert-base</code> в пайплайн <code>fill-mask</code>, что совершенно нормально. Но если бы мы загрузили эту контрольную точку в пайплайн <code>text-classification</code>, результаты не имели бы никакого смысла, потому что выходной слой <code>camembert-base</code> не подходит для этой задачи! Мы рекомендуем использовать селектор задач в интерфейсе Hugging Face Hub, чтобы выбрать соответствующие чекпоинты:",D,Z,me='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/tasks.png" alt="The task selector on the web interface." width="80%"/>',P,Q,pe="Вы также можете инициализировать модель не через пайплайн, а путем создания экземпляра класса модели:",K,T,j,Y,_,O,A,ee;b=new Ze({props:{fw:d[0]}}),M=new _e({props:{title:"Использование предобученных моделей",local:"использование-предобученных-моделей",headingTag:"h1"}});const ie=[Ve,We],B=[];function ue(e,a){return e[0]==="pt"?0:1}o=ue(d),g=B[o]=ie[o](d),v=new G({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMHBpcGVsaW5lJTBBJTBBY2FtZW1iZXJ0X2ZpbGxfbWFzayUyMCUzRCUyMHBpcGVsaW5lKCUyMmZpbGwtbWFzayUyMiUyQyUyMG1vZGVsJTNEJTIyY2FtZW1iZXJ0LWJhc2UlMjIpJTBBcmVzdWx0cyUyMCUzRCUyMGNhbWVtYmVydF9maWxsX21hc2soJTIyTGUlMjBjYW1lbWJlcnQlMjBlc3QlMjAlM0NtYXNrJTNFJTIwJTNBKSUyMik=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

camembert_fill_mask = pipeline(<span class="hljs-string">&quot;fill-mask&quot;</span>, model=<span class="hljs-string">&quot;camembert-base&quot;</span>)
results = camembert_fill_mask(<span class="hljs-string">&quot;Le camembert est &lt;mask&gt; :)&quot;</span>)`,wrap:!1}}),z=new G({props:{code:"JTVCJTBBJTIwJTIwJTdCJ3NlcXVlbmNlJyUzQSUyMCdMZSUyMGNhbWVtYmVydCUyMGVzdCUyMGQlQzMlQTlsaWNpZXV4JTIwJTNBKSclMkMlMjAnc2NvcmUnJTNBJTIwMC40OTA5MTAwNTMyNTMxNzM4MyUyQyUyMCd0b2tlbiclM0ElMjA3MjAwJTJDJTIwJ3Rva2VuX3N0ciclM0ElMjAnZCVDMyVBOWxpY2lldXgnJTdEJTJDJTIwJTBBJTIwJTIwJTdCJ3NlcXVlbmNlJyUzQSUyMCdMZSUyMGNhbWVtYmVydCUyMGVzdCUyMGV4Y2VsbGVudCUyMCUzQSknJTJDJTIwJ3Njb3JlJyUzQSUyMDAuMTA1NTY5NzQyNjE5OTkxMyUyQyUyMCd0b2tlbiclM0ElMjAyMTgzJTJDJTIwJ3Rva2VuX3N0ciclM0ElMjAnZXhjZWxsZW50JyU3RCUyQyUyMCUwQSUyMCUyMCU3QidzZXF1ZW5jZSclM0ElMjAnTGUlMjBjYW1lbWJlcnQlMjBlc3QlMjBzdWNjdWxlbnQlMjAlM0EpJyUyQyUyMCdzY29yZSclM0ElMjAwLjAzNDUzMzEzMTg2NzY0NzE3JTJDJTIwJ3Rva2VuJyUzQSUyMDI2MjAyJTJDJTIwJ3Rva2VuX3N0ciclM0ElMjAnc3VjY3VsZW50JyU3RCUyQyUyMCUwQSUyMCUyMCU3QidzZXF1ZW5jZSclM0ElMjAnTGUlMjBjYW1lbWJlcnQlMjBlc3QlMjBtZWlsbGV1ciUyMCUzQSknJTJDJTIwJ3Njb3JlJyUzQSUyMDAuMDMzMDMxNDExNDY4OTgyNyUyQyUyMCd0b2tlbiclM0ElMjA1MjglMkMlMjAndG9rZW5fc3RyJyUzQSUyMCdtZWlsbGV1ciclN0QlMkMlMjAlMEElMjAlMjAlN0Inc2VxdWVuY2UnJTNBJTIwJ0xlJTIwY2FtZW1iZXJ0JTIwZXN0JTIwcGFyZmFpdCUyMCUzQSknJTJDJTIwJ3Njb3JlJyUzQSUyMDAuMDMwMDc2NTAxODkxMDE2OTYlMkMlMjAndG9rZW4nJTNBJTIwMTY1NCUyQyUyMCd0b2tlbl9zdHInJTNBJTIwJ3BhcmZhaXQnJTdEJTBBJTVE",highlighted:`[
  {<span class="hljs-string">&#x27;sequence&#x27;</span>: <span class="hljs-string">&#x27;Le camembert est délicieux :)&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.49091005325317383</span>, <span class="hljs-string">&#x27;token&#x27;</span>: <span class="hljs-number">7200</span>, <span class="hljs-string">&#x27;token_str&#x27;</span>: <span class="hljs-string">&#x27;délicieux&#x27;</span>}, 
  {<span class="hljs-string">&#x27;sequence&#x27;</span>: <span class="hljs-string">&#x27;Le camembert est excellent :)&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.1055697426199913</span>, <span class="hljs-string">&#x27;token&#x27;</span>: <span class="hljs-number">2183</span>, <span class="hljs-string">&#x27;token_str&#x27;</span>: <span class="hljs-string">&#x27;excellent&#x27;</span>}, 
  {<span class="hljs-string">&#x27;sequence&#x27;</span>: <span class="hljs-string">&#x27;Le camembert est succulent :)&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.03453313186764717</span>, <span class="hljs-string">&#x27;token&#x27;</span>: <span class="hljs-number">26202</span>, <span class="hljs-string">&#x27;token_str&#x27;</span>: <span class="hljs-string">&#x27;succulent&#x27;</span>}, 
  {<span class="hljs-string">&#x27;sequence&#x27;</span>: <span class="hljs-string">&#x27;Le camembert est meilleur :)&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.0330314114689827</span>, <span class="hljs-string">&#x27;token&#x27;</span>: <span class="hljs-number">528</span>, <span class="hljs-string">&#x27;token_str&#x27;</span>: <span class="hljs-string">&#x27;meilleur&#x27;</span>}, 
  {<span class="hljs-string">&#x27;sequence&#x27;</span>: <span class="hljs-string">&#x27;Le camembert est parfait :)&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.03007650189101696</span>, <span class="hljs-string">&#x27;token&#x27;</span>: <span class="hljs-number">1654</span>, <span class="hljs-string">&#x27;token_str&#x27;</span>: <span class="hljs-string">&#x27;parfait&#x27;</span>}
]`,wrap:!1}});const be=[ve,Ne],F=[];function Me(e,a){return e[0]==="pt"?0:1}return T=Me(d),j=F[T]=be[T](d),_=new Ce({props:{$$slots:{default:[ze]},$$scope:{ctx:d}}}),{c(){s=h("meta"),c=p(),t=h("p"),u=p(),k(b.$$.fragment),m=p(),k(M.$$.fragment),l=p(),g.c(),I=p(),W=h("p"),W.textContent=ae,X=p(),V=h("p"),V.textContent=ne,S=p(),C=h("div"),C.innerHTML=re,R=p(),N=h("p"),N.innerHTML=ce,L=p(),k(v.$$.fragment),H=p(),k(z.$$.fragment),q=p(),E=h("p"),E.innerHTML=oe,D=p(),Z=h("div"),Z.innerHTML=me,P=p(),Q=h("p"),Q.textContent=pe,K=p(),j.c(),Y=p(),k(_.$$.fragment),O=p(),A=h("p"),this.h()},l(e){const a=$e("svelte-u9bgzb",document.head);s=J(a,"META",{name:!0,content:!0}),a.forEach(n),c=i(e),t=J(e,"P",{}),de(t).forEach(n),u=i(e),U(b.$$.fragment,e),m=i(e),U(M.$$.fragment,e),l=i(e),g.l(e),I=i(e),W=J(e,"P",{"data-svelte-h":!0}),w(W)!=="svelte-c2hno0"&&(W.textContent=ae),X=i(e),V=J(e,"P",{"data-svelte-h":!0}),w(V)!=="svelte-1tpb7bo"&&(V.textContent=ne),S=i(e),C=J(e,"DIV",{class:!0,"data-svelte-h":!0}),w(C)!=="svelte-4k6hvy"&&(C.innerHTML=re),R=i(e),N=J(e,"P",{"data-svelte-h":!0}),w(N)!=="svelte-vu515f"&&(N.innerHTML=ce),L=i(e),U(v.$$.fragment,e),H=i(e),U(z.$$.fragment,e),q=i(e),E=J(e,"P",{"data-svelte-h":!0}),w(E)!=="svelte-8tmf8t"&&(E.innerHTML=oe),D=i(e),Z=J(e,"DIV",{class:!0,"data-svelte-h":!0}),w(Z)!=="svelte-1cl7xbt"&&(Z.innerHTML=me),P=i(e),Q=J(e,"P",{"data-svelte-h":!0}),w(Q)!=="svelte-15rnypn"&&(Q.textContent=pe),K=i(e),j.l(e),Y=i(e),U(_.$$.fragment,e),O=i(e),A=J(e,"P",{}),de(A).forEach(n),this.h()},h(){te(s,"name","hf:doc:metadata"),te(s,"content",Qe),te(C,"class","flex justify-center"),te(Z,"class","flex justify-center")},m(e,a){we(document.head,s),r(e,c,a),r(e,t,a),r(e,u,a),x(b,e,a),r(e,m,a),x(M,e,a),r(e,l,a),B[o].m(e,a),r(e,I,a),r(e,W,a),r(e,X,a),r(e,V,a),r(e,S,a),r(e,C,a),r(e,R,a),r(e,N,a),r(e,L,a),x(v,e,a),r(e,H,a),x(z,e,a),r(e,q,a),r(e,E,a),r(e,D,a),r(e,Z,a),r(e,P,a),r(e,Q,a),r(e,K,a),F[T].m(e,a),r(e,Y,a),x(_,e,a),r(e,O,a),r(e,A,a),ee=!0},p(e,[a]){const ye={};a&1&&(ye.fw=e[0]),b.$set(ye);let se=o;o=ue(e),o!==se&&(Je(),y(B[se],1,1,()=>{B[se]=null}),he(),g=B[o],g||(g=B[o]=ie[o](e),g.c()),f(g,1),g.m(I.parentNode,I));let le=T;T=Me(e),T!==le&&(Je(),y(F[le],1,1,()=>{F[le]=null}),he(),j=F[T],j||(j=F[T]=be[T](e),j.c()),f(j,1),j.m(Y.parentNode,Y));const fe={};a&2&&(fe.$$scope={dirty:a,ctx:e}),_.$set(fe)},i(e){ee||(f(b.$$.fragment,e),f(M.$$.fragment,e),f(g),f(v.$$.fragment,e),f(z.$$.fragment,e),f(j),f(_.$$.fragment,e),ee=!0)},o(e){y(b.$$.fragment,e),y(M.$$.fragment,e),y(g),y(v.$$.fragment,e),y(z.$$.fragment,e),y(j),y(_.$$.fragment,e),ee=!1},d(e){e&&(n(c),n(t),n(u),n(m),n(l),n(I),n(W),n(X),n(V),n(S),n(C),n(R),n(N),n(L),n(H),n(q),n(E),n(D),n(Z),n(P),n(Q),n(K),n(Y),n(O),n(A)),n(s),$(b,e),$(M,e),B[o].d(e),$(v,e),$(z,e),F[T].d(e),$(_,e)}}}const Qe='{"title":"Использование предобученных моделей","local":"использование-предобученных-моделей","sections":[],"depth":1}';function Be(d,s,c){let t="pt";return je(()=>{const u=new URLSearchParams(window.location.search);c(0,t=u.get("fw")||"pt")}),[t]}class Re extends Ue{constructor(s){super(),xe(this,s,Be,Ee,Te,{})}}export{Re as component};
