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