import{s as xe,o as Ue,n as we}from"../chunks/scheduler.cc52f4b9.js";import{S as Ce,i as Ze,e as h,s as o,c as g,h as _e,a as J,d as a,b as m,f as Te,g as T,j as C,k as ae,l as We,m as r,n as j,o as M,u as je,t as y,p as $,v as $e}from"../chunks/index.9480bb2b.js";import{T as Ve}from"../chunks/Tip.f7b80743.js";import{C as Ne,H as ve,E as ze}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.e0b4ce23.js";import{C as X}from"../chunks/CodeBlock.d991436c.js";import{C as ke}from"../chunks/CourseFloatingBanner.0ea490da.js";import{F as Ee}from"../chunks/FrameworkSwitchCourse.42d12053.js";function Qe(d){let s,c;return s=new ke({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(){g(s.$$.fragment)},l(t){T(s.$$.fragment,t)},m(t,u){j(s,t,u),c=!0},i(t){c||(y(s.$$.fragment,t),c=!0)},o(t){M(s.$$.fragment,t),c=!1},d(t){$(s,t)}}}function Be(d){let s,c;return s=new ke({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(){g(s.$$.fragment)},l(t){T(s.$$.fragment,t)},m(t,u){j(s,t,u),c=!0},i(t){c||(y(s.$$.fragment,t),c=!0)},o(t){M(s.$$.fragment,t),c=!1},d(t){$(s,t)}}}function Fe(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,p,f;return s=new X({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}}),p=new X({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(){g(s.$$.fragment),c=o(),t=h("p"),t.innerHTML=u,b=o(),g(p.$$.fragment)},l(l){T(s.$$.fragment,l),c=m(l),t=J(l,"P",{"data-svelte-h":!0}),C(t)!=="svelte-y0kfah"&&(t.innerHTML=u),b=m(l),T(p.$$.fragment,l)},m(l,i){j(s,l,i),r(l,c,i),r(l,t,i),r(l,b,i),j(p,l,i),f=!0},i(l){f||(y(s.$$.fragment,l),y(p.$$.fragment,l),f=!0)},o(l){M(s.$$.fragment,l),M(p.$$.fragment,l),f=!1},d(l){l&&(a(c),a(t),a(b)),$(s,l),$(p,l)}}}function Ge(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,p,f;return s=new X({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}}),p=new X({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(){g(s.$$.fragment),c=o(),t=h("p"),t.innerHTML=u,b=o(),g(p.$$.fragment)},l(l){T(s.$$.fragment,l),c=m(l),t=J(l,"P",{"data-svelte-h":!0}),C(t)!=="svelte-1d6pk8l"&&(t.innerHTML=u),b=m(l),T(p.$$.fragment,l)},m(l,i){j(s,l,i),r(l,c,i),r(l,t,i),r(l,b,i),j(p,l,i),f=!0},i(l){f||(y(s.$$.fragment,l),y(p.$$.fragment,l),f=!0)},o(l){M(s.$$.fragment,l),M(p.$$.fragment,l),f=!1},d(l){l&&(a(c),a(t),a(b)),$(s,l),$(p,l)}}}function Ie(d){let s,c="При использовании предварительно обученной модели обязательно проверьте: как она была обучена, на каких наборах данных, ее ограничениях и смещениях. Вся эта информация должна быть указана в карточке модели.";return{c(){s=h("p"),s.textContent=c},l(t){s=J(t,"P",{"data-svelte-h":!0}),C(s)!=="svelte-101xyj1"&&(s.textContent=c)},m(t,u){r(t,s,u)},p:we,d(t){t&&a(s)}}}function Ye(d){let s,c,t,u,b,p,f,l,i,R,k,x,Y,V,oe="Hub упрощает выбор подходящей модели, поэтому ее использование в любой задаче заключается в запуске нескольких строк кода. Давайте посмотрим, как это сделать и как внести свой вклад в сообщество.",L,N,me="Допустим, мы ищем модель для французского языка, которая может выполнять заполнение пропущенных слов в предложении.",H,Z,pe='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/camembert.gif" alt="Selecting the Camembert model." width="80%"/>',q,v,ie="Мы выберем для этой задачи чекпоинт <code>camembert-base</code>. Идентификатор <code>camembert-base</code> – все, что нам нужно, чтобы начать использовать модель! Как вы видели в предыдущих главах, мы можем инициализировать модель с использованием функции <code>pipeline()</code>:",D,z,P,E,K,Q,ue="Как видите, загрузить модель в пайплайн очень просто. Единственное, на что вам нужно обратить внимание, это чтобы выбранный чекпоинт подходил для задачи, для которой он будет использоваться. Например, здесь мы загружаем чекпоинт <code>camembert-base</code> в пайплайн <code>fill-mask</code>, что совершенно нормально. Но если бы мы загрузили эту контрольную точку в пайплайн <code>text-classification</code>, результаты не имели бы никакого смысла, потому что выходной слой <code>camembert-base</code> не подходит для этой задачи! Мы рекомендуем использовать селектор задач в интерфейсе Hugging Face Hub, чтобы выбрать соответствующие чекпоинты:",O,_,be='<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%"/>',ee,B,fe="Вы также можете инициализировать модель не через пайплайн, а путем создания экземпляра класса модели:",te,U,w,A,W,se,F,le,S,ne;b=new Ee({props:{fw:d[0]}}),f=new Ne({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),i=new ve({props:{title:"Использование предобученных моделей",local:"использование-предобученных-моделей",headingTag:"h1"}});const Me=[Be,Qe],G=[];function ye(e,n){return e[0]==="pt"?0:1}k=ye(d),x=G[k]=Me[k](d),z=new X({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}}),E=new X({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 de=[Ge,Fe],I=[];function he(e,n){return e[0]==="pt"?0:1}return U=he(d),w=I[U]=de[U](d),W=new Ve({props:{$$slots:{default:[Ie]},$$scope:{ctx:d}}}),F=new ze({props:{source:"https://github.com/huggingface/course/blob/main/chapters/ru/chapter4/2.mdx"}}),{c(){s=h("meta"),c=o(),t=h("p"),u=o(),g(b.$$.fragment),p=o(),g(f.$$.fragment),l=o(),g(i.$$.fragment),R=o(),x.c(),Y=o(),V=h("p"),V.textContent=oe,L=o(),N=h("p"),N.textContent=me,H=o(),Z=h("div"),Z.innerHTML=pe,q=o(),v=h("p"),v.innerHTML=ie,D=o(),g(z.$$.fragment),P=o(),g(E.$$.fragment),K=o(),Q=h("p"),Q.innerHTML=ue,O=o(),_=h("div"),_.innerHTML=be,ee=o(),B=h("p"),B.textContent=fe,te=o(),w.c(),A=o(),g(W.$$.fragment),se=o(),g(F.$$.fragment),le=o(),S=h("p"),this.h()},l(e){const n=_e("svelte-u9bgzb",document.head);s=J(n,"META",{name:!0,content:!0}),n.forEach(a),c=m(e),t=J(e,"P",{}),Te(t).forEach(a),u=m(e),T(b.$$.fragment,e),p=m(e),T(f.$$.fragment,e),l=m(e),T(i.$$.fragment,e),R=m(e),x.l(e),Y=m(e),V=J(e,"P",{"data-svelte-h":!0}),C(V)!=="svelte-c2hno0"&&(V.textContent=oe),L=m(e),N=J(e,"P",{"data-svelte-h":!0}),C(N)!=="svelte-1tpb7bo"&&(N.textContent=me),H=m(e),Z=J(e,"DIV",{class:!0,"data-svelte-h":!0}),C(Z)!=="svelte-4k6hvy"&&(Z.innerHTML=pe),q=m(e),v=J(e,"P",{"data-svelte-h":!0}),C(v)!=="svelte-vu515f"&&(v.innerHTML=ie),D=m(e),T(z.$$.fragment,e),P=m(e),T(E.$$.fragment,e),K=m(e),Q=J(e,"P",{"data-svelte-h":!0}),C(Q)!=="svelte-8tmf8t"&&(Q.innerHTML=ue),O=m(e),_=J(e,"DIV",{class:!0,"data-svelte-h":!0}),C(_)!=="svelte-1cl7xbt"&&(_.innerHTML=be),ee=m(e),B=J(e,"P",{"data-svelte-h":!0}),C(B)!=="svelte-15rnypn"&&(B.textContent=fe),te=m(e),w.l(e),A=m(e),T(W.$$.fragment,e),se=m(e),T(F.$$.fragment,e),le=m(e),S=J(e,"P",{}),Te(S).forEach(a),this.h()},h(){ae(s,"name","hf:doc:metadata"),ae(s,"content",Ae),ae(Z,"class","flex justify-center"),ae(_,"class","flex justify-center")},m(e,n){We(document.head,s),r(e,c,n),r(e,t,n),r(e,u,n),j(b,e,n),r(e,p,n),j(f,e,n),r(e,l,n),j(i,e,n),r(e,R,n),G[k].m(e,n),r(e,Y,n),r(e,V,n),r(e,L,n),r(e,N,n),r(e,H,n),r(e,Z,n),r(e,q,n),r(e,v,n),r(e,D,n),j(z,e,n),r(e,P,n),j(E,e,n),r(e,K,n),r(e,Q,n),r(e,O,n),r(e,_,n),r(e,ee,n),r(e,B,n),r(e,te,n),I[U].m(e,n),r(e,A,n),j(W,e,n),r(e,se,n),j(F,e,n),r(e,le,n),r(e,S,n),ne=!0},p(e,[n]){const Je={};n&1&&(Je.fw=e[0]),b.$set(Je);let re=k;k=ye(e),k!==re&&($e(),M(G[re],1,1,()=>{G[re]=null}),je(),x=G[k],x||(x=G[k]=Me[k](e),x.c()),y(x,1),x.m(Y.parentNode,Y));let ce=U;U=he(e),U!==ce&&($e(),M(I[ce],1,1,()=>{I[ce]=null}),je(),w=I[U],w||(w=I[U]=de[U](e),w.c()),y(w,1),w.m(A.parentNode,A));const ge={};n&2&&(ge.$$scope={dirty:n,ctx:e}),W.$set(ge)},i(e){ne||(y(b.$$.fragment,e),y(f.$$.fragment,e),y(i.$$.fragment,e),y(x),y(z.$$.fragment,e),y(E.$$.fragment,e),y(w),y(W.$$.fragment,e),y(F.$$.fragment,e),ne=!0)},o(e){M(b.$$.fragment,e),M(f.$$.fragment,e),M(i.$$.fragment,e),M(x),M(z.$$.fragment,e),M(E.$$.fragment,e),M(w),M(W.$$.fragment,e),M(F.$$.fragment,e),ne=!1},d(e){e&&(a(c),a(t),a(u),a(p),a(l),a(R),a(Y),a(V),a(L),a(N),a(H),a(Z),a(q),a(v),a(D),a(P),a(K),a(Q),a(O),a(_),a(ee),a(B),a(te),a(A),a(se),a(le),a(S)),a(s),$(b,e),$(f,e),$(i,e),G[k].d(e),$(z,e),$(E,e),I[U].d(e),$(W,e),$(F,e)}}}const Ae='{"title":"Использование предобученных моделей","local":"использование-предобученных-моделей","sections":[],"depth":1}';function Xe(d,s,c){let t="pt";return Ue(()=>{const u=new URLSearchParams(window.location.search);c(0,t=u.get("fw")||"pt")}),[t]}class Ke extends Ce{constructor(s){super(),Ze(this,s,Xe,Ye,xe,{})}}export{Ke as component};
