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