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 I,A as oe,h as p,f as n,c as i,j as W,u as N,x as g,k as G,y as ae,a as s,v as S,d as F,t as U,w as B,m as X,n as Y}from"../chunks/index.2bf4358c.js";import{T as le}from"../chunks/Tip.363c041f.js";import{C as re}from"../chunks/CourseFloatingBanner.06521e8b.js";import{H as ie,E as me}from"../chunks/EditOnGithub.8916dc7c.js";function pe(b){let a,l,c="创建一个账户",f;return{c(){a=X("⚠️ 为了充分利用 Model Hub 和🤗 Transformers 提供的所有功能，我们建议你"),l=m("a"),l.textContent=c,f=X("。"),this.h()},l(o){a=Y(o,"⚠️ 为了充分利用 Model Hub 和🤗 Transformers 提供的所有功能，我们建议你"),l=p(o,"A",{href:!0,"data-svelte-h":!0}),g(l)!=="svelte-14dhiow"&&(l.textContent=c),f=Y(o,"。"),this.h()},h(){G(l,"href","https://huggingface.co/join")},m(o,u){s(o,a,u),s(o,l,u),s(o,f,u)},p:te,d(o){o&&(n(a),n(l),n(f))}}}function fe(b){let a,l,c,f,o,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 <code>nn.Module</code> 或 TensorFlow <code>tf.keras.Model</code> 类，并可像在各自的机器学习（ML）框架中处理其他模型一样处理它们。</li> <li><strong>简单</strong>：该库几乎没有进行任何抽象化。🤗 Transformers 库一个核心概念是“全在一个文件中”：模型的前向传播完全在一个文件中定义，这使得代码本身易于理解和修改。</li>",z,v,J="最后一个特性使🤗 Transformers 与其他 ML 库截然不同。模型并非建立在跨越多个代码文件共享的模块上；相反，每一个模型都有自己的层次结构。除了使模型更加容易接受和更容易理解，这还允许你轻松地在一个模型上实验，而且不影响其他模型。",k,x,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,q;return o=new ie({props:{title:"本章简介",local:"本章简介",headingTag:"h1"}}),d=new re({props:{chapter:2,classNames:"absolute z-10 right-0 top-0"}}),$=new le({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(){a=m("meta"),l=r(),c=m("p"),f=r(),I(o.$$.fragment),u=r(),I(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(),v=m("p"),v.textContent=J,k=r(),x=m("p"),x.innerHTML=K,y=r(),C=m("p"),C.innerHTML=Q,A=r(),I($.$$.fragment),E=r(),I(M.$$.fragment),j=r(),P=m("p"),this.h()},l(e){const t=oe("svelte-u9bgzb",document.head);a=p(t,"META",{name:!0,content:!0}),t.forEach(n),l=i(e),c=p(e,"P",{}),W(c).forEach(n),f=i(e),N(o.$$.fragment,e),u=i(e),N(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-1p3vagq"&&(T.innerHTML=D),z=i(e),v=p(e,"P",{"data-svelte-h":!0}),g(v)!=="svelte-qyb0i3"&&(v.textContent=J),k=i(e),x=p(e,"P",{"data-svelte-h":!0}),g(x)!=="svelte-6emoa7"&&(x.innerHTML=K),y=i(e),C=p(e,"P",{"data-svelte-h":!0}),g(C)!=="svelte-1croyj"&&(C.innerHTML=Q),A=i(e),N($.$$.fragment,e),E=i(e),N(M.$$.fragment,e),j=i(e),P=p(e,"P",{}),W(P).forEach(n),this.h()},h(){G(a,"name","hf:doc:metadata"),G(a,"content",ce)},m(e,t){ae(document.head,a),s(e,l,t),s(e,c,t),s(e,f,t),S(o,e,t),s(e,u,t),S(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,v,t),s(e,k,t),s(e,x,t),s(e,y,t),s(e,C,t),s(e,A,t),S($,e,t),s(e,E,t),S(M,e,t),s(e,j,t),s(e,P,t),q=!0},p(e,[t]){const V={};t&2&&(V.$$scope={dirty:t,ctx:e}),$.$set(V)},i(e){q||(F(o.$$.fragment,e),F(d.$$.fragment,e),F($.$$.fragment,e),F(M.$$.fragment,e),q=!0)},o(e){U(o.$$.fragment,e),U(d.$$.fragment,e),U($.$$.fragment,e),U(M.$$.fragment,e),q=!1},d(e){e&&(n(l),n(c),n(f),n(u),n(L),n(h),n(H),n(_),n(w),n(T),n(z),n(v),n(k),n(x),n(y),n(C),n(A),n(E),n(j),n(P)),n(a),B(o,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 ve extends ne{constructor(a){super(),se(this,a,ue,fe,Z,{})}}export{ve as component};
