import{s as Z,o as ee,n as te}from"../chunks/scheduler.37c15a92.js";import{S as ne,i as se,g as m,s as r,r as N,A as ae,h as p,f as n,c as i,j as W,u as S,x as g,k as G,y as le,a as s,v as q,d as F,t as U,w as B,m as X,n as Y}from"../chunks/index.2bf4358c.js";import{T as oe}from"../chunks/Tip.363c041f.js";import{C as re}from"../chunks/CourseFloatingBanner.9ff4c771.js";import{H as ie,E as me}from"../chunks/getInferenceSnippets.7bb25a7f.js";function pe(b){let l,o,c="创建一个账户",f;return{c(){l=X("⚠️ 为了充分利用 Model Hub 和🤗 Transformers 提供的所有功能，我们建议你"),o=m("a"),o.textContent=c,f=X("。"),this.h()},l(a){l=Y(a,"⚠️ 为了充分利用 Model Hub 和🤗 Transformers 提供的所有功能，我们建议你"),o=p(a,"A",{href:!0,"data-svelte-h":!0}),g(o)!=="svelte-14dhiow"&&(o.textContent=c),f=Y(a,"。"),this.h()},h(){G(o,"href","https://huggingface.co/join")},m(a,u){s(a,l,u),s(a,o,u),s(a,f,u)},p:te,d(a){a&&(n(l),n(o),n(f))}}}function fe(b){let l,o,c,f,a,u,d,L,h,O='正如你在 <a href="/course/chapter1">第一章</a> ，中看到的那样，Transformers 模型通常规模庞大。包含数以百万计到数千万计数十亿的参数，训练和部署这些模型是一项复杂的任务。再者，新模型的推出几乎日新月异，而每种模型都有其独特的实现方式，尝试全部模型绝非易事。',H,_,R="🤗 Transformers 库应运而生，就是为了解决这个问题。它的目标是提供一个统一的 API 接口，通过它可以加载、训练和保存任何 Transformer 模型。该库的主要特点有：",w,T,D="<li><strong>易于使用</strong>：仅需两行代码，就能下载、加载并使用先进的 NLP 模型进行推理。</li> <li><strong>灵活</strong>：在本质上，所有的模型都是简单的 PyTorch nn.Module 或 TensorFlow tf.keras.Model 类，并可像在各自的机器学习（ML）框架中处理其他模型一样处理它们。</li> <li><strong>简单</strong>：该库几乎没有进行任何抽象化。🤗 Transformers 库一个核心概念是“全在一个文件中”：模型的前向传播完全在一个文件中定义，这使得代码本身易于理解和修改。</li>",z,x,J="最后一个特性使🤗 Transformers 与其他 ML 库截然不同。模型并非建立在跨越多个代码文件共享的模块上；相反，每一个模型都有自己的层次结构。除了使模型更加容易接受和更容易理解，这还允许你轻松地在一个模型上实验，而且不影响其他模型。",k,v,K='本章将从一个端到端（从输入端到输出端）的示例开始，在该示例中，我们一起使用模型和 tokenizer 来复刻 <a href="/course/chapter1">第一章</a> 中看到的 <code>pipeline()</code> 函数。接下来，我们将讨论 <code>Model</code> API：我们将深入研究 <code>Model</code> 类和 <code>Config</code> 类，并向你展示如何加载模型，以及它如何将输入处理为输出。',y,C,Q="然后我们来看看 <code>tokenizer</code> API，它是 <code>pipeline()</code> 函数的另一个重要组成部分。在 <code>pipeline()</code> 中 <code>Tokenizer</code> 负责第一步和最后一步的处理，将文本转换到神经网络的输入，以及在需要时将其转换回文本。最后，我们将向你展示如何处理将多个句子整理为一个 batch 发送给模型，然后我们将更深入地研究 <code>tokenizer()</code> 函数。",A,$,E,M,j,P,I;return a=new ie({props:{title:"本章简介",local:"本章简介",headingTag:"h1"}}),d=new re({props:{chapter:2,classNames:"absolute z-10 right-0 top-0"}}),$=new oe({props:{$$slots:{default:[pe]},$$scope:{ctx:b}}}),M=new me({props:{source:"https://github.com/huggingface/course/blob/main/chapters/zh-CN/chapter2/1.mdx"}}),{c(){l=m("meta"),o=r(),c=m("p"),f=r(),N(a.$$.fragment),u=r(),N(d.$$.fragment),L=r(),h=m("p"),h.innerHTML=O,H=r(),_=m("p"),_.textContent=R,w=r(),T=m("ul"),T.innerHTML=D,z=r(),x=m("p"),x.textContent=J,k=r(),v=m("p"),v.innerHTML=K,y=r(),C=m("p"),C.innerHTML=Q,A=r(),N($.$$.fragment),E=r(),N(M.$$.fragment),j=r(),P=m("p"),this.h()},l(e){const t=ae("svelte-u9bgzb",document.head);l=p(t,"META",{name:!0,content:!0}),t.forEach(n),o=i(e),c=p(e,"P",{}),W(c).forEach(n),f=i(e),S(a.$$.fragment,e),u=i(e),S(d.$$.fragment,e),L=i(e),h=p(e,"P",{"data-svelte-h":!0}),g(h)!=="svelte-kzps0h"&&(h.innerHTML=O),H=i(e),_=p(e,"P",{"data-svelte-h":!0}),g(_)!=="svelte-1n7vpa"&&(_.textContent=R),w=i(e),T=p(e,"UL",{"data-svelte-h":!0}),g(T)!=="svelte-gz80c6"&&(T.innerHTML=D),z=i(e),x=p(e,"P",{"data-svelte-h":!0}),g(x)!=="svelte-qyb0i3"&&(x.textContent=J),k=i(e),v=p(e,"P",{"data-svelte-h":!0}),g(v)!=="svelte-6emoa7"&&(v.innerHTML=K),y=i(e),C=p(e,"P",{"data-svelte-h":!0}),g(C)!=="svelte-1croyj"&&(C.innerHTML=Q),A=i(e),S($.$$.fragment,e),E=i(e),S(M.$$.fragment,e),j=i(e),P=p(e,"P",{}),W(P).forEach(n),this.h()},h(){G(l,"name","hf:doc:metadata"),G(l,"content",ce)},m(e,t){le(document.head,l),s(e,o,t),s(e,c,t),s(e,f,t),q(a,e,t),s(e,u,t),q(d,e,t),s(e,L,t),s(e,h,t),s(e,H,t),s(e,_,t),s(e,w,t),s(e,T,t),s(e,z,t),s(e,x,t),s(e,k,t),s(e,v,t),s(e,y,t),s(e,C,t),s(e,A,t),q($,e,t),s(e,E,t),q(M,e,t),s(e,j,t),s(e,P,t),I=!0},p(e,[t]){const V={};t&2&&(V.$$scope={dirty:t,ctx:e}),$.$set(V)},i(e){I||(F(a.$$.fragment,e),F(d.$$.fragment,e),F($.$$.fragment,e),F(M.$$.fragment,e),I=!0)},o(e){U(a.$$.fragment,e),U(d.$$.fragment,e),U($.$$.fragment,e),U(M.$$.fragment,e),I=!1},d(e){e&&(n(o),n(c),n(f),n(u),n(L),n(h),n(H),n(_),n(w),n(T),n(z),n(x),n(k),n(v),n(y),n(C),n(A),n(E),n(j),n(P)),n(l),B(a,e),B(d,e),B($,e),B(M,e)}}}const ce='{"title":"本章简介","local":"本章简介","sections":[],"depth":1}';function ue(b){return ee(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class xe extends ne{constructor(l){super(),se(this,l,ue,fe,Z,{})}}export{xe as component};
