import{s as W,o as X,n as Y}from"../chunks/scheduler.37c15a92.js";import{S as Z,i as ee,g as f,s as l,r as I,A as te,h as p,f as n,c as o,j as K,u as S,x as v,k as q,y as ne,a as r,v as j,d as F,t as N,w as U,m as Q,n as V}from"../chunks/index.2bf4358c.js";import{T as re}from"../chunks/Tip.363c041f.js";import{C as ae}from"../chunks/CourseFloatingBanner.6add7356.js";import{H as se,E as ie}from"../chunks/getInferenceSnippets.8b9eb92a.js";function le(C){let s,i,u="สร้างบัญชี",m;return{c(){s=Q("⚠️ เพื่อให้ได้ประโยชน์สูงสุดจากคุณลักษณะเด่นทั้งหมดที่มีใน Model Hub และ 🤗 Transformers, เราแนะนำให้คุณ "),i=f("a"),i.textContent=u,m=Q("."),this.h()},l(a){s=V(a,"⚠️ เพื่อให้ได้ประโยชน์สูงสุดจากคุณลักษณะเด่นทั้งหมดที่มีใน Model Hub และ 🤗 Transformers, เราแนะนำให้คุณ "),i=p(a,"A",{href:!0,"data-svelte-h":!0}),v(i)!=="svelte-heohdm"&&(i.textContent=u),m=V(a,"."),this.h()},h(){q(i,"href","https://huggingface.co/join")},m(a,c){r(a,s,c),r(a,i,c),r(a,m,c)},p:Y,d(a){a&&(n(s),n(i),n(m))}}}function oe(C){let s,i,u,m,a,c,h,P,d,B=`อย่างที่คุณเห็นใน <a href="/course/chapter1">Chapter 1</a>, โดยปกติแล้วโมเดล Transformer นั้นจะมีขนาดใหญ่มาก การเทรนและการใช้งานโมเดลเหล่านี้ที่มีตัวแปร (parameters) เป็นล้านไปจนถึง <em>หมื่นล้าน</em> ตัวแปรนั้นเป็นเรื่องที่ค่อนข้างซับซ้อน นอกจากนั้นแล้วการที่มีโมเดลใหม่ๆปล่อยออกมาเกือบทุกวันและแต่ละโมเดลก็มีวิธีการสร้าง (implementation) เป็นของตัวเอง ดังนั้นการจะลองทุกโมเดลนั้นไม่ใช่เรื่องที่ง่ายเลย
🤗 Transformers library สร้างขึ้นมาเพื่อแก้ปัญหานี้ จุดประสงค์ก็คือ การทำให้ไม่ว่าจะโมเดล Transformer ใดก็ตามสามารถโหลด, เทรน, และบันทึก ได้ด้วยการใช้ API เพียงอันเดียว จุดเด่นหลักๆของ library ประกอบด้วย`,w,_,G="<li><strong>ใช้งานง่าย</strong>: การดาวน์โหลด, การโหลด, และการใช้งานโมเดล NLP ที่ประสิทธิภาพดีที่สุด (state-of-the-art) สำหรับการอนุมาน (inference) นั้นสามารถทำได้ด้วยโค้ดเพียง 2 บรรทัด</li> <li><strong>ความยืดหยุ่น</strong>: โดยแก่นแท้แล้วทุกโมเดลนั้นก็เป็นเพียคลาส <code>nn.Module</code> ง่ายๆของ PyTorch หรือ <code>tf.keras.Model</code> ของ TensorFlow และสามารถถูกจัดการได้เหมือนโมเดลอื่นๆ ใน machine learning (ML) frameworks นั้นๆ</li> <li><strong>ความเรียบง่าย</strong>: การประกาศ abstractions ใดๆข้ามไปมาใน libraries นั้นน้อยมากๆ แนวคิดหลัก (core concept) ก็คือ “ทุกอย่างอยู่ในไฟล์เดียว (All in one file)” เช่น ขั้นตอนการเรียนรู้ของโมเดลใน forward pass นั้นสามารถประกาศทั้งหมดได้ในไฟล์เดียว ดังนั้นตัวโค้ดนั้นสามารถเป็นที่เข้าใจและแก้ไขได้ในตัวมันเอง</li>",L,T,O=`จุดเด่นข้อสุดท้ายนี่เองที่ทำให้ 🤗 Transformers ต่างจาก ML libraries อื่นๆ โมเดลต่างๆไม่ได้ถูกสร้างขึ้นมาจากโมดูลต่างๆที่ต้องแชร์ข้ามไฟล์กันไปมา แต่กลับกัน แต่ละโมเดลจะมี layers ของตัวเอง
นอกจากจะทำให้โมเดลเข้าถึงและเข้าใจได้ง่ายแล้ว ยังทำให้คุณสามารถทดลองโมเดลๆหนึ่งโดยที่ไม่กระทบโมเดลอื่นๆ`,H,b,R='บทนี้จะเริ่มด้วยตัวอย่างแบบ end-to-end ซึ่งเราจะใช้โมเดลและ tokenizer ร่วมกันเพื่อทำซ้ำ(เลียนแบบ) ฟังก์ชัน <code>pipeline()</code> จากที่เรียนใน <a href="/course/chapter1">Chapter 1</a> หลังจากนั้นเราจะมาเรียนเกี่ยวกับ API ของโมเดล โดยเราจะเจาะลึกในคลาสของโมเดลและการตั้งค่า (configuration) และจะแสดงวิธีการโหลดโมเดลและกระบวนการที่โมเดลทำการทำนายผลจากชุดข้อมูลเชิงตัวเลข ว่าทำอย่างไร',k,g,D="หลังจากนั้นเราจะไปดูกันที่ tokenizer API ซึ่งเป็นอีกหนึ่งส่วนประกอบหลักของฟังก์ชัน <code>pipeline()</code>, Tokenizers จะรับผิดชอบการประมวลผลขั้นแรกและขั้นสุดท้าย ซึ่งก็คือ การแปลงข้อมูลที่เป็นข้อความให้เป็นข้อมูลเชิงตัวเลข เพื่อใช้กับ neural network, และการแปลงข้อมูลกลับไปเป็นตัวอักษร ในกรณีที่จำเป็น และสุดท้ายเราจะแสดงวิธีการจัดการกับการส่งข้อความทีละหลายๆประโยคแบบที่เตรียมไว้เป็นชุดๆ (batch) ไปยังโมเดล และปิดท้ายด้วยฟังก์ชัน <code>tokenizer()</code>",y,$,A,x,z,M,E;return a=new se({props:{title:"บทนำ",local:"บทนำ",headingTag:"h1"}}),h=new ae({props:{chapter:2,classNames:"absolute z-10 right-0 top-0"}}),$=new re({props:{$$slots:{default:[le]},$$scope:{ctx:C}}}),x=new ie({props:{source:"https://github.com/huggingface/course/blob/main/chapters/th/chapter2/1.mdx"}}),{c(){s=f("meta"),i=l(),u=f("p"),m=l(),I(a.$$.fragment),c=l(),I(h.$$.fragment),P=l(),d=f("p"),d.innerHTML=B,w=l(),_=f("ul"),_.innerHTML=G,L=l(),T=f("p"),T.textContent=O,H=l(),b=f("p"),b.innerHTML=R,k=l(),g=f("p"),g.innerHTML=D,y=l(),I($.$$.fragment),A=l(),I(x.$$.fragment),z=l(),M=f("p"),this.h()},l(e){const t=te("svelte-u9bgzb",document.head);s=p(t,"META",{name:!0,content:!0}),t.forEach(n),i=o(e),u=p(e,"P",{}),K(u).forEach(n),m=o(e),S(a.$$.fragment,e),c=o(e),S(h.$$.fragment,e),P=o(e),d=p(e,"P",{"data-svelte-h":!0}),v(d)!=="svelte-1h46t42"&&(d.innerHTML=B),w=o(e),_=p(e,"UL",{"data-svelte-h":!0}),v(_)!=="svelte-11sbebo"&&(_.innerHTML=G),L=o(e),T=p(e,"P",{"data-svelte-h":!0}),v(T)!=="svelte-oip7f5"&&(T.textContent=O),H=o(e),b=p(e,"P",{"data-svelte-h":!0}),v(b)!=="svelte-1bu1fa2"&&(b.innerHTML=R),k=o(e),g=p(e,"P",{"data-svelte-h":!0}),v(g)!=="svelte-mms0ps"&&(g.innerHTML=D),y=o(e),S($.$$.fragment,e),A=o(e),S(x.$$.fragment,e),z=o(e),M=p(e,"P",{}),K(M).forEach(n),this.h()},h(){q(s,"name","hf:doc:metadata"),q(s,"content",me)},m(e,t){ne(document.head,s),r(e,i,t),r(e,u,t),r(e,m,t),j(a,e,t),r(e,c,t),j(h,e,t),r(e,P,t),r(e,d,t),r(e,w,t),r(e,_,t),r(e,L,t),r(e,T,t),r(e,H,t),r(e,b,t),r(e,k,t),r(e,g,t),r(e,y,t),j($,e,t),r(e,A,t),j(x,e,t),r(e,z,t),r(e,M,t),E=!0},p(e,[t]){const J={};t&2&&(J.$$scope={dirty:t,ctx:e}),$.$set(J)},i(e){E||(F(a.$$.fragment,e),F(h.$$.fragment,e),F($.$$.fragment,e),F(x.$$.fragment,e),E=!0)},o(e){N(a.$$.fragment,e),N(h.$$.fragment,e),N($.$$.fragment,e),N(x.$$.fragment,e),E=!1},d(e){e&&(n(i),n(u),n(m),n(c),n(P),n(d),n(w),n(_),n(L),n(T),n(H),n(b),n(k),n(g),n(y),n(A),n(z),n(M)),n(s),U(a,e),U(h,e),U($,e),U(x,e)}}}const me='{"title":"บทนำ","local":"บทนำ","sections":[],"depth":1}';function fe(C){return X(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class de extends Z{constructor(s){super(),ee(this,s,fe,oe,W,{})}}export{de as component};
