Buckets:
| import{s as W,n as X,o as Y}from"../chunks/scheduler.505acc25.js";import{S as Z,i as ee,e as l,s as r,c as q,h as te,a as o,d as n,b as i,f as V,g as I,j as _,k as F,l as ne,m as a,n as O,t as U,o as j,p as B}from"../chunks/index.17dd9071.js";import{C as ae,H as re,E as ie}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.2f3970d7.js";import{C as se}from"../chunks/CourseFloatingBanner.9496b79e.js";function le(N){let s,L,g,x,p,v,f,C,u,P,c,G=`อย่างที่คุณเห็นใน <a href="/course/chapter1">Chapter 1</a>, โดยปกติแล้วโมเดล Transformer นั้นจะมีขนาดใหญ่มาก การเทรนและการใช้งานโมเดลเหล่านี้ที่มีตัวแปร (parameters) เป็นล้านไปจนถึง <em>หมื่นล้าน</em> ตัวแปรนั้นเป็นเรื่องที่ค่อนข้างซับซ้อน นอกจากนั้นแล้วการที่มีโมเดลใหม่ๆปล่อยออกมาเกือบทุกวันและแต่ละโมเดลก็มีวิธีการสร้าง (implementation) เป็นของตัวเอง ดังนั้นการจะลองทุกโมเดลนั้นไม่ใช่เรื่องที่ง่ายเลย | |
| 🤗 Transformers library สร้างขึ้นมาเพื่อแก้ปัญหานี้ จุดประสงค์ก็คือ การทำให้ไม่ว่าจะโมเดล Transformer ใดก็ตามสามารถโหลด, เทรน, และบันทึก ได้ด้วยการใช้ API เพียงอันเดียว จุดเด่นหลักๆของ library ประกอบด้วย`,H,$,K="<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>",w,h,Q=`จุดเด่นข้อสุดท้ายนี่เองที่ทำให้ 🤗 Transformers ต่างจาก ML libraries อื่นๆ โมเดลต่างๆไม่ได้ถูกสร้างขึ้นมาจากโมดูลต่างๆที่ต้องแชร์ข้ามไฟล์กันไปมา แต่กลับกัน แต่ละโมเดลจะมี layers ของตัวเอง | |
| นอกจากจะทำให้โมเดลเข้าถึงและเข้าใจได้ง่ายแล้ว ยังทำให้คุณสามารถทดลองโมเดลๆหนึ่งโดยที่ไม่กระทบโมเดลอื่นๆ`,y,d,R='บทนี้จะเริ่มด้วยตัวอย่างแบบ end-to-end ซึ่งเราจะใช้โมเดลและ tokenizer ร่วมกันเพื่อทำซ้ำ(เลียนแบบ) ฟังก์ชัน <code>pipeline()</code> จากที่เรียนใน <a href="/course/chapter1">Chapter 1</a> หลังจากนั้นเราจะมาเรียนเกี่ยวกับ API ของโมเดล โดยเราจะเจาะลึกในคลาสของโมเดลและการตั้งค่า (configuration) และจะแสดงวิธีการโหลดโมเดลและกระบวนการที่โมเดลทำการทำนายผลจากชุดข้อมูลเชิงตัวเลข ว่าทำอย่างไร',k,b,D="หลังจากนั้นเราจะไปดูกันที่ tokenizer API ซึ่งเป็นอีกหนึ่งส่วนประกอบหลักของฟังก์ชัน <code>pipeline()</code>, Tokenizers จะรับผิดชอบการประมวลผลขั้นแรกและขั้นสุดท้าย ซึ่งก็คือ การแปลงข้อมูลที่เป็นข้อความให้เป็นข้อมูลเชิงตัวเลข เพื่อใช้กับ neural network, และการแปลงข้อมูลกลับไปเป็นตัวอักษร ในกรณีที่จำเป็น และสุดท้ายเราจะแสดงวิธีการจัดการกับการส่งข้อความทีละหลายๆประโยคแบบที่เตรียมไว้เป็นชุดๆ (batch) ไปยังโมเดล และปิดท้ายด้วยฟังก์ชัน <code>tokenizer()</code>",z,m,J='<p>⚠️ เพื่อให้ได้ประโยชน์สูงสุดจากคุณลักษณะเด่นทั้งหมดที่มีใน Model Hub และ 🤗 Transformers, เราแนะนำให้คุณ <a href="https://huggingface.co/join">สร้างบัญชี</a>.</p>',E,T,A,M,S;return p=new ae({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),f=new re({props:{title:"บทนำ",local:"บทนำ",headingTag:"h1"}}),u=new se({props:{chapter:2,classNames:"absolute z-10 right-0 top-0"}}),T=new ie({props:{source:"https://github.com/huggingface/course/blob/main/chapters/th/chapter2/1.mdx"}}),{c(){s=l("meta"),L=r(),g=l("p"),x=r(),q(p.$$.fragment),v=r(),q(f.$$.fragment),C=r(),q(u.$$.fragment),P=r(),c=l("p"),c.innerHTML=G,H=r(),$=l("ul"),$.innerHTML=K,w=r(),h=l("p"),h.textContent=Q,y=r(),d=l("p"),d.innerHTML=R,k=r(),b=l("p"),b.innerHTML=D,z=r(),m=l("blockquote"),m.innerHTML=J,E=r(),q(T.$$.fragment),A=r(),M=l("p"),this.h()},l(e){const t=te("svelte-u9bgzb",document.head);s=o(t,"META",{name:!0,content:!0}),t.forEach(n),L=i(e),g=o(e,"P",{}),V(g).forEach(n),x=i(e),I(p.$$.fragment,e),v=i(e),I(f.$$.fragment,e),C=i(e),I(u.$$.fragment,e),P=i(e),c=o(e,"P",{"data-svelte-h":!0}),_(c)!=="svelte-1h46t42"&&(c.innerHTML=G),H=i(e),$=o(e,"UL",{"data-svelte-h":!0}),_($)!=="svelte-11sbebo"&&($.innerHTML=K),w=i(e),h=o(e,"P",{"data-svelte-h":!0}),_(h)!=="svelte-oip7f5"&&(h.textContent=Q),y=i(e),d=o(e,"P",{"data-svelte-h":!0}),_(d)!=="svelte-1bu1fa2"&&(d.innerHTML=R),k=i(e),b=o(e,"P",{"data-svelte-h":!0}),_(b)!=="svelte-mms0ps"&&(b.innerHTML=D),z=i(e),m=o(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),_(m)!=="svelte-api3ug"&&(m.innerHTML=J),E=i(e),I(T.$$.fragment,e),A=i(e),M=o(e,"P",{}),V(M).forEach(n),this.h()},h(){F(s,"name","hf:doc:metadata"),F(s,"content",oe),F(m,"class","tip")},m(e,t){ne(document.head,s),a(e,L,t),a(e,g,t),a(e,x,t),O(p,e,t),a(e,v,t),O(f,e,t),a(e,C,t),O(u,e,t),a(e,P,t),a(e,c,t),a(e,H,t),a(e,$,t),a(e,w,t),a(e,h,t),a(e,y,t),a(e,d,t),a(e,k,t),a(e,b,t),a(e,z,t),a(e,m,t),a(e,E,t),O(T,e,t),a(e,A,t),a(e,M,t),S=!0},p:X,i(e){S||(U(p.$$.fragment,e),U(f.$$.fragment,e),U(u.$$.fragment,e),U(T.$$.fragment,e),S=!0)},o(e){j(p.$$.fragment,e),j(f.$$.fragment,e),j(u.$$.fragment,e),j(T.$$.fragment,e),S=!1},d(e){e&&(n(L),n(g),n(x),n(v),n(C),n(P),n(c),n(H),n($),n(w),n(h),n(y),n(d),n(k),n(b),n(z),n(m),n(E),n(A),n(M)),n(s),B(p,e),B(f,e),B(u,e),B(T,e)}}}const oe='{"title":"บทนำ","local":"บทนำ","sections":[],"depth":1}';function me(N){return Y(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class $e extends Z{constructor(s){super(),ee(this,s,me,le,W,{})}}export{$e as component}; | |
Xet Storage Details
- Size:
- 9.25 kB
- Xet hash:
- ad8ba610b23b1d77e2295de523046e23a58f7112a24716738075063af877a54b
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.