Buckets:
| import{s as Kn,n as On,o as Qn}from"../chunks/scheduler.505acc25.js";import{S as Wn,i as Xn,e as r,s as i,c as f,h as Zn,a,d as n,b as s,f as Fn,g as o,j as m,k as d,l as Jn,m as l,n as u,t as p,o as g,p as c}from"../chunks/index.17dd9071.js";import{C as el,H as v,E as tl}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.a9278744.js";import{Y as Kt}from"../chunks/Youtube.793fe4bf.js";import{C as nl}from"../chunks/CourseFloatingBanner.01eb9a8d.js";function ll(Ot){let h,qe,Pe,je,H,Ae,y,Be,w,Re,P,Qt="ในส่วนนี้เราจะมาดูกันว่าสถาปัตยกรรมของโมเดล Transformer ทำงานกันยังไง",ze,E,De,q,Wt="รูปด้านล่างแสดงรายชื่อของโมเดล Transformer ตามแต่ละช่วงเวลา:",Ie,x,Xt='<img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/transformers_chrono.svg" alt="A brief chronology of Transformers models."/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/transformers_chrono-dark.svg" alt="A brief chronology of Transformers models."/>',Ge,j,Zt='<a href="https://arxiv.org/abs/1706.03762" rel="nofollow">สถาปัตยกรรม Transformer</a> ถูกสร้างขึ้นเมื่อปี 2017 เป้าหมายในการสร้างโมเดลก็เพื่องานในการแปลภาษา หลังจากนั้นก็มีโมเดลที่ได้รับแรงบันดาลใจต่อ ๆ มา เช่น',Ve,A,Jt='<li><p><strong>มิถุนายน 2018</strong>: <a href="https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf" rel="nofollow">GPT</a>, โมเดล Transformer ตัวแรก ที่มาพร้อมกับพร้อมกับโมเดลที่เทรนมาแล้ว ใช้ในการ fine-tune งานทางด้าน NLP ได้หลายงานและได้ผลลัพธ์ที่เทียบเท่างานวิจัยล่าสุด</p></li> <li><p><strong>ตุลาคม 2018</strong>: <a href="https://arxiv.org/abs/1810.04805" rel="nofollow">BERT</a>, โมเดลขนาดใหญ่อีกตัวหนึ่งที่ผ่านการเทรนมาแล้ว ซึ่งออกแบบมาสำหรับงานในการสรุปความ (อ่านต่อได้ในบทถัดไป)</p></li> <li><p><strong>กุมภาพันธ์ 2019</strong>: <a href="https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf" rel="nofollow">GPT-2</a>, โมเดล GPT รุ่นพัฒนาที่ดีขึ้น(และใหญ่ขึ้นด้วย) แต่ว่าไม่ได้เปิดให้ใช้สาธารณะในทันทีเนื่องจากอาจมีการนำไปใช้ในด้านไม่ดี</p></li> <li><p><strong>ตุลาคม 2019</strong>: <a href="https://arxiv.org/abs/1910.01108" rel="nofollow">DistilBERT</a>, โมเดล BERT ขนาดย่อ ซึ่งเร็วกว่า 60% และใช้หน่วยความจำลดลง 40% แต่ยังคงประสิทธิภาพไว้ที่ 97% ของโมเดล BERT ปกติ</p></li> <li><p><strong>ตุลาคม 2019</strong>: <a href="https://arxiv.org/abs/1910.13461" rel="nofollow">BART</a> และ <a href="https://arxiv.org/abs/1910.10683" rel="nofollow">T5</a>, โมเดลที่ผ่านการเทรนมาแล้วทั้งสองตัวที่ใช้สถาปัตยกรรมเดียวกันกับโมเดล Transformer ต้นฉบับ (โมเดลแรกที่ทำแบบนี้)</p></li> <li><p><strong>พฤษภาคม 2020</strong>, <a href="https://arxiv.org/abs/2005.14165" rel="nofollow">GPT-3</a>, โมเดล GPT-2 ที่ใหญ่ขึ้นไปอีกซึ่งสามารถทำงานได้หลายอย่างโดยไม่ต้องการการ fine-tune (หรือเรียกว่า <em>zero-shot learning</em>)</p></li>',Ue,B,en="ที่จริงแล้วยังมีโมเดลอื่น ๆ อีกมากนอกเหนือจากรายชื่อที่กล่าวไป ในที่นี้ต้องการที่จะเน้นย้ำอีกครั้งในส่วนของประเภทของโมเดล Transformer ซึ่งสามารถแบ่งได้ดังนี้:",Ne,R,tn="<li>กลุ่ม GPT (หรือเรียกว่า โมเดล Transformer แบบ <em>auto-regressive</em>)</li> <li>กลุ่ม BERT (หรือเรียกว่า โมเดล Transformer แบบ <em>auto-encoding</em>)</li> <li>กลุ่ม BART/T5 (หรือเรียกว่า โมเดล Transformer แบบ <em>sequence-to-sequence</em>)</li>",Se,z,nn="โดยเราจะกล่าวถึงแต่ละกลุ่มในรายละเอียดกันภายหลัง",Ye,D,Fe,I,ln="โมเดล Transformer ที่กล่าวไปด้านบนทั้งหมด (GPT, BERT, BART, T5 เป็นต้น) ถูกเทรนให้เป็น<em>โมเดลบริบททางภาษา</em> (หรือเรียกว่า language model) นั่นคือโมเดลเหล่านี้ถูกเทรนผ่านข้อความดิบขนาดใหญ่เรียนรู้ด้วยตนเอง (หรือเรียกว่า self-supervised) การ self-supervised นั้นคือการเทรนแบบหนึ่งซึ่งเป้าหมายในการเทรนจะถูกคำนวณออกมาอัตโนมัติจาก input ที่ใส่เข้าไป ดังนั้นการเทรนแบบนี้จึงไม่จำเป็นต้อง label ข้อมูลเลย!",Ke,G,sn="โมเดลประเภทนี้จะเข้าในภาษาที่ถูกเทรนมาในเชิงสถิติ แต่ในการใช้งานจริงอาจไม่มีประโยชน์เท่าไหร่ ดังนั้นโมเดลที่ผ่านการเทรนแบบนี้มาจึงถูกนำไปใช้ในกระบวนการ <em>transfer learning</em> ซึ่งก็คือโมเดลนี้จะถูกนำไป fine-tune ต่อในงานอื่นที่มี label จากมนุษย์",Oe,V,rn="ตัวอย่างงานดังกล่าวได้แก่ การเดาคำต่อไปหลังจากอ่านคำในประโยค <em>n</em> คำ สิ่งนี้เรียกว่า <em>causal language model</em> เนื่องจาก output ขึ้นอยู่กับ input ในอดีตและปัจจุบันเท่านั้น",Qe,T,an='<img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/causal_modeling.svg" alt="Example of causal language modeling in which the next word from a sentence is predicted."/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/causal_modeling-dark.svg" alt="Example of causal language modeling in which the next word from a sentence is predicted."/>',We,U,mn="อีกตัวอย่างหนึ่งได้แก่ การเติมคำในช่องว่าง (หรือเรียกว่า <em>masked language modeling</em>) เป็นการเดาคำที่เว้นว่างไว้ในประโยค โดยในที่นี้จะใช้คำว่า <code>[MASK]</code> แทนการเว้นว่าง",Xe,$,fn='<img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/masked_modeling.svg" alt="Example of masked language modeling in which a masked word from a sentence is predicted."/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/masked_modeling-dark.svg" alt="Example of masked language modeling in which a masked word from a sentence is predicted."/>',Ze,N,Je,S,on="ถ้าไม่นับพวกโมเดลแปลก ๆ อย่าง DistilBERT การจะได้มาซึ่งผลลัพธ์ที่ดีขึ้นก็ต้องเพิ่มขนาดโมเดลและขนาดข้อมูลที่นำมาเทรนโมเดล",et,C,un='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/model_parameters.png" alt="Number of parameters of recent Transformers models" width="90%"/>',tt,Y,pn="ซึ่งในการเทรนโมเดลโดยเฉพาะโมเดลขนาดใหญ่ต้องการข้อมูลในการเทรนจำนวนมาก ดังนั้นการเทรนแต่ละครั้งจึงกินทั้งทรัพยากรเวลาและทรัพยากรในการคำนวณมากขึ้นไปอีก ซึ่งหมายถึงผลกระทบต่อสิ่งแวดล้อมดังแสดงในภาพด้านล่าง",nt,_,gn='<img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/carbon_footprint.svg" alt="The carbon footprint of a large language model."/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/carbon_footprint-dark.svg" alt="The carbon footprint of a large language model."/>',lt,F,it,K,cn="รูปภาพทำขึ้นเพื่อจะสื่อสารไปยังทีมพัฒนาต่าง ๆ ให้เห็นถึงผลกระทบต่อสิ่งแวดล้อมในการเทรนโมเดลขนาดใหญ่(มาก ๆ) และหากต้องการจะทดลองเพื่อหา hyperparameter ที่ดีสุด ผลกระทบย่อมเพิ่มขึ้นอีกเป็นเงาตามตัว",st,O,dn="ลองนึกสภาพว่าหากแต่ละทีมวิจัย, กลุ่มการศึกษา, หรือบริษัทเอกชนใด ๆ ต้องการเทรนโมเดลซักโมเดลหนึ่ง โดยเริ่มต้นมาจากศูนย์ทุกครั้ง จะก่อให้เกิดค่าใช้จ่ายที่ไม่จำเป็นอย่างใหญ่หลวงมาก",rt,Q,vn="เพราะฉะนั้นการแบ่งปันโมเดลที่เทรนไว้แล้วจึงเป็นเรื่องสำคัญอย่างมาก การแบ่งปัน weight ของโมเดลและสร้างสิ่งต่าง ๆ ผ่าน weight ที่มีคนทำมาแล้วจะช่วยลดค่าใช้จ่ายและลดค่า carbon footprint โดยทั่วกัน",at,W,mt,X,ft,Z,hn="<em>Pretraining</em> เป็นการเทรนโมเดลจากศูนย์ ซึ่งก็คือ weight ในโมเดลเริ่มต้นจากค่าสุ่ม และเริ่มเทรนโดยไม่มีความรู้อะไรเลย",ot,k,xn='<img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/pretraining.svg" alt="The pretraining of a language model is costly in both time and money."/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/pretraining-dark.svg" alt="The pretraining of a language model is costly in both time and money."/>',ut,J,Tn="โดยมากแล้วการ pretrain จะใช้ข้อมูลขนาดใหญ่มาก ๆ ดังนั้นจึงต้องการข้อมูลภาษาขนาดใหญ่และใช้เวลาเทรนหลายสัปดาห์",pt,ee,$n="<em>Fine-tuning</em> เป็นการเทรนโมเดล<strong>หลังจาก</strong>การ pretrain ซึ่งก็คือ นำ language model ที่ผ่านการ pretrain แล้ว มาเทรนเพิ่มเติมด้วยชุดข้อมูลที่เฉพาะเจาะจงในงานที่ต้องการ ว่าแต่ ทำไมไม่เทรนโมเดลสำหรับงานสุดท้ายไปทีเดียวเลยล่ะ? มันมีเหตุผลอยู่ ดังนี้:",gt,te,Cn="<li>โมเดลที่ผ่านการ pretrain มาแล้วมีความเข้าใจความเหมือนบางอย่างในชุดข้อมูลที่นำมา fine-tune ดังนั้น การ fine-tune จึงสามารถนำความรู้ที่ได้จากการ pretrain มาใช้ประโยชน์ได้ทันที (เช่น โมเดลที่ pretrain มาแล้วทางด้าน NLP พอจะมีเข้าใจเบื้องต้นเกี่ยวกับภาษาที่เรากำลังใช้อยู่ในเชิงสถิติ)</li> <li>เนื่องจากโมเดลที่ผ่านการ pretrain มาแล้วนั้นถูกเทรนด้วยข้อมูลขนาดใหญ่มาก การใช้ข้อมูลเพียงเล็กน้อยในการ fine-tune ก็สามารถให้ผลเป็นที่พึงพอใจได้</li> <li>และด้วยเหตุผลเดียวกันนี้ เวลาและทรัพยากรที่ใช้เพื่อให้ได้ผลลัพธ์ที่ดีก็น้อยกว่าเช่นกัน</li>",ct,ne,_n="ตัวอย่างเช่น เราสามารถใช้โมเดล pretrain ในภาษาอังกฤษและ fine-tune ด้วยข้อมูลภาษาจากใน arXiv (แหล่งข้อมูลค้นคว้าวิจัยทางด้านวิทยาศาสตร์) ทำให้ได้โมเดลที่เก่งทางด้านวิทยาศาสตร์และการวิจัย การ fine-tune นี้ต้องการข้อมูลเพียงเล็กน้อยเท่านั้น ความรู้ความเข้าใจทางภาษาของโมเดลถูกส่งต่อมาจากโมเดล pretrain ดังนั้นกระบวนการนี้จึงเรียกว่า <em>transfer learning</em>",dt,L,kn='<img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/finetuning.svg" alt="The fine-tuning of a language model is cheaper than pretraining in both time and money."/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/finetuning-dark.svg" alt="The fine-tuning of a language model is cheaper than pretraining in both time and money."/>',vt,le,Ln="ด้วยเหตุนี้การ fine-tune จึงใช้เวลา ข้อมูล ค่าใช้จ่าย และผลกระทบต่อสิ่งแวดล้อมน้อยกว่า รวมถึงว่าเราสามารถทดลองรูปแบบการ fine-tune ต่าง ๆ ได้ง่ายกว่าและเร็วกว่าอีกด้วย เนื่องจากการเทรนแบบนี้มีเงื่อนไขต่ำกว่าการเทรนเต็มรูปแบบ",ht,ie,bn="กระบวนการดังกล่าวนี้ยังให้ผลลัพธ์ที่ดีกว่าการเทรนทุกอย่างจากศูนย์อีกด้วย(เว้นแต่ว่าคุณจะมีข้อมูลเยอะมากจริง ๆ) และนี่ก็เป็นอีกสาเหตุหนึ่งที่คุณควรใช้โมเดล pretrain ที่ใกล้เคียงกับงานที่คุณต้องการทำที่สุดและแค่ fine-tune มันออกมา",xt,se,Tt,re,Mn="ในส่วนนี้เราจะพูดถึงสถาปัตยกรรมทั่วไปของโมเดล Transformer ไม่ต้องกังวลไปหากคุณไม่เข้าใจเนื้อหาบางส่วนตอนนี้ เนื้อหาในส่วนหลังจะอธิบานเรื่องเหล่านี้ในรายละเอียดเพิ่มเติมให้",$t,ae,Ct,me,_t,fe,Hn="โมเดล Transformer ประกอบด้วยส่วนใหญ่ ๆ สองส่วน ได้แก่:",kt,oe,yn="<li><strong>ส่วนเข้ารหัส (หรือเรียกว่า Encoder) (ซ้าย)</strong>: encoder รับ input เข้ามาและสร้างตัวแทน input เหล่านั้น โดยตัวแทนเหล่านี้เรียกว่า feature นั่นหมายความว่าโมเดลจะปรับแต่งตัวเองให้เข้าใจ input ได้ในส่วนนี้</li> <li><strong>ส่วนถอดรหัส (หรือเรียกว่า Decoder) (ขวา)</strong>: decoder สร้าง output ออกมาเป็นข้อมูลลำดับ (หรือเรียกว่า sequence) โดยอาศัย feature และ input อื่น ๆ นั่นหมายถึงโมเดลปรับแต่งตัวเองให้สร้าง output ได้ในส่วนนี้</li>",Lt,b,wn='<img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/transformers_blocks.svg" alt="Architecture of a Transformers models"/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/transformers_blocks-dark.svg" alt="Architecture of a Transformers models"/>',bt,ue,Pn="แต่ละส่วนดังกล่าวสามารถแยกใช้อิสระต่อกันได้ ขึ้นอยู่กับว่าใช้ในงานอะไร เช่น:",Mt,pe,En="<li><strong>โมเดลที่ใช้ encoder อย่างเดียว</strong>: สำหรับงานที่ต้องการให้เข้าใจ input เช่น การแยกหมวดหมู่ประโยคและการระบุชนิดของคำในประโยค</li> <li><strong>โมเดลที่ใช้ decoder อย่างเดียว</strong>: สำหรับงานในการสร้าง output ออกมา เช่น การสร้างข้อความ</li> <li><strong>โมเดลที่ใช้ทั้ง encoder และ decoder</strong> หรือ <strong>โมเดล sequence-to-sequence</strong> สำหรับงานในการสร้าง output ที่ต้องการ input เข้ามาด้วย เช่น การแปลภาษาหรือการสรุปความ</li>",Ht,ge,qn="ซึ่งเราจะเจาะลงไปในรายละเอียดของแต่ละสถาปัตยกรรมกันต่อในภายหลัง",yt,ce,wt,de,jn='ฟีเจอร์สำคัญของโมเดล Transformer ก็คือโมเดลนี้ถูกสร้างขึ้นมาจาก layer พิเศษที่ชื่อว่า <em>attention layer</em> ซึ่งเป็นสาเหตุที่ชื่อของงานวิจัยที่พูดถึงสถาปัตยกรรม Transformer เป็นครั้งแรกถูกตั้งชื่อว่า <a href="https://arxiv.org/abs/1706.03762" rel="nofollow">“Attention Is All You Need”</a> (Attention เป็นทุกอย่างให้เธอแล้ว) เราจะมาอธิบายเกี่ยวกับ attention layer ในรายละเอียดกันในช่วงหลังของคอร์สนี้ แต่สำหรับตอนนี้ คุณแค่เข้าใจว่า attention layer ทำหน้าที่บอกให้โมเดลให้ความสนใจ(attend)กับคำที่ตำแหน่งใดเป็นพิเศษจากประโยคส่งให้(รวมถึงบอกให้มองข้ามคำที่ตำแหน่งอื่นด้วย)เมื่อต้องการอธิบายความหมายของคำใด ๆ',Pt,ve,An="เพื่อให้เห็นภาพมากขึ้น ลองนึกถึงงานในการแปลข้อความจากภาษาอังกฤษเป็นภาษาฝรั่งเศส ตัวอย่างเช่นประโยค “You like this course” โมเดลแปลภาษาต้องสนใจไปที่คำว่า “You” เพื่อให้ได้คำแปลของคำว่า “like” ที่เหมาะสม เนื่องจากในภาษาฝรั่งเศสคำว่า “like” นั้นเปลี่ยนรูปไปตามประธานในประโยค คำอื่น ๆ ที่เหลือในประโยคไม่ได้ส่งผลต่อการแปลคำว่า “like” เลย ในลักษณะเดียวกัน การแปลคำว่า “this” โมเดลต้องสนใจไปที่คำว่า “course” เนื่องจากคำว่า “this” ในภาษาฝรั่งเศสจะแปลออกมาว่าอย่างไรขึ้นอยู่กับว่าคำนั้นเป็นเพศชายหรือหญิง(ในบางภาษาคำแต่ละคำจะมีเพศกำกับไว้แม้ว่าจะไม่ได้เป็นสิ่งมีชีวิตที่มีเพศจริง ๆ ก็ตาม โดยไวยากรณ์ของภาษานั้น ๆ จะผันตามเพศของคำ) และแน่นอนคำอื่น ๆ ในประโยคไม่ได้ส่งผลต่อการแปลว่าคำว่า “this” เลย และเมื่อประโยคซับซ้อนมากยิ่งขึ้น(ส่งผลให้กฎไวยากรณ์ซับซ้อนมากยิ่งขึ้น) โมเดลยิ่งต้องให้ความสนใจไปยังคำที่ไกลออกไปในประโยคเพื่อแปลคำแต่ละคำให้เหมาะสม",Et,he,Bn="แนวคิดเดียวกันนี้ใช้ได้กับงาน NLP อื่น ๆ นั่นคือ คำแต่ละคำมีความหมายในตัวมันเอง โดยความหมายเหล่านี้ส่งผลมาจากบริบทของคำ ซึ่งก็คือคำอื่นที่อยู่รอบ ๆ คำนั้น ๆ",qt,xe,Rn="ตอนนี้คุณก็พอจะเข้าใจแล้วว่า attention layer คืออะไร ลองมาดูรายละเอียดของสถาปัตยกรรม Transformer กัน",jt,Te,At,$e,zn="ในตอนแรก Transformer ออกแบบมาเพื่องานแปลภาษา ระหว่างการเทรน ตัว encoder รับ input เป็นประโยคในภาษาหนึ่ง ในขณะที่ decoder เองก็รับประโยคเดียวกันในภาษาเป้าหมาย โดย attention layer ใน encoder สามารถใช้คำทั้งหมดในประโยคได้(เนื่องจากการแปลคำใด ๆ ขึ้นอยู่กับคำที่อาจจะอยู่ข้างหน้าหรือข้างหลังคำนั้น ๆ ก็ได้) ในขณะที่ decoder ต้องสร้างคำเป็นลำดับออกมาทีละคำ นั่นคือ decoder สามารถสนใจคำที่แปลออกมาก่อนได้เท่านั้น ตัวอย่างเช่น เมื่อเราแปลคำในภาษาเป้าหมายไป 3 คำแรก เราก็จะเอา 3 คำนี้ส่งไปยัง decoder รวมกับ input อื่นจาก encoder เพื่อทำนายคำที่ 4 ออกมา",Bt,Ce,Dn="เพื่อให้กระบวนการเทรนเร็วมากขึ้น(เมื่อโมเดลเข้าถึงประโยคในภาษาเป้าหมายได้) decoder จะรับประโยคในภาษาเป้าหมายไปทั้งประโยค แต่แค่ไม่อนุญาตให้เข้าถึงคำที่กำลังจะแปลในอนาคต(ลองคิดดูว่าถ้ากำลังทำนายคำในประโยคเป้าหมายตำแหน่งที่ 2 แล้วโมเดลก็เข้าถึงคำในตำแหน่งที่ 2 ในประโยคเป้าหมายได้ ปัญหามันก็ดูจะแก้ได้ง่ายเกินไปแหละ) หรืออีกนัยหนึ่งคือ ขณะที่กำลังทำนายคำที่ 4 ในประโยค ตัว attention layer จะเข้าถึงได้แค่คำที่ตำแหน่ง 1 ถึง 3 เท่านั้น",Rt,_e,In="รูปด้านล่างแสดงสถาปัตยกรรม Transformer โดย encoder อยู่ด้านซ้ายและ decoder อยู่ด้านขวา:",zt,M,Gn='<img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/transformers.svg" alt="Architecture of a Transformers models"/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/transformers-dark.svg" alt="Architecture of a Transformers models"/>',Dt,ke,Vn="หมายเหตุไว้หน่อยว่า attention layer แรกใน decoder สนใจไปที่ input (ในอดีต)ทั้งหมดของ decoder แต่ attention layer ที่สองใช้ output ของ encoder ด้วย นั่นคือ มันสามารถเข้าถึงประโยค input ทั้งหมดเพื่อทำนายคำในปัจจุบันได้ ส่วนนี้มีประโยชน์มากเนื่องจากแต่ละภาษาก็มีหลักไวยากรณ์ในการวางตำแหน่งคำที่ต่างกัน หรือบริบทที่ถูกกล่าวถึงทีหลังในประโยคอาจส่งผลต่อการหาคำแปลที่เหมาะสมของคำในปัจจุบัน",It,Le,Un="<em>attention mask</em> เป็นอีกส่วนประกอบที่ใช้ได้กับทั้ง encoder และ decoder เพื่อป้องกันไม่ให้โมเดลสนใจไปยังคำบางคำ ตัวอย่างเช่น คำพิเศษบางคำที่เอามาเติมในประโยคให้ประโยคใน input ที่ความยาวเท่ากับเวลาประมวลผลประโยคพร้อมกัน",Gt,be,Vt,Me,Nn="ดังที่เราได้เรียนรู้โมเดล Transformer มาในคอร์สนี้ คุณจะเห็นคำที่ความหมายคล้าย ๆ กัน อย่างเช่น <em>architecture</em> และ <em>checkpoint</em> รวมถึง <em>model</em> อย่างไรก็ตาม คำแหล่านี้มีความหมายแตกต่างกันเล็กน้อย ดังนี้:",Ut,He,Sn="<li><strong>Architecture</strong>: เป็นโครงสร้างของโมเดล นั่นคือ เป็นการกำหนดนิยามของ layer (เช่น บอกว่า มีทั้งหมดกี่ layer และ layer แต่ละ layer เป็นประเภทใด) รวมถึงบอกว่า layer นั้น ๆ จะมีกระบวนการการทำอะไรบ้าง</li> <li><strong>Checkpoints</strong>: เป็นเพียงการเซฟ weight หรือค่าคงที่ของ parameter ในแต่ละ layer ที่จะเอาไปใช้ใน architecture ที่กำหนดได้</li> <li><strong>Model</strong>: เป็นคำกว้าง ๆ ไม่ได้ระบุความหมายเฉพาะเจาะจงเหมือนคำว่า “architecture” หรือ “checkpoint” ซึ่งจริง ๆ อาจจะหมายถึงคำใดก็ได้ แต่ในคอร์สนี้จะใช้คำว่า <em>architecture</em> หรือ <em>checkpoint</em> ไปเลยเพื่อหลีกเลี่ยงความสับสน</li>",Nt,ye,Yn="ยกตัวอย่างง่าย ๆ เช่น BERT เป็น architecture ในขณะที่ <code>bert-base-cased</code> เป็น checkpoint ที่เซฟ weight จากการเทรน BERT ที่ทีม Google ปล่อยออกมาตอนเปิดให้ใช้งานครั้งแรก โดยเราสามารถเรียกสิ่งเหล่านี้ว่า”โมเดล BERT” หรือ “โมเดล <code>bert-base-cased</code>” ก็ถือว่าถูกต้องทั้งคู่",St,we,Yt,Ee,Ft;return H=new el({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),y=new v({props:{title:"Transformer ทำงานยังไง?",local:"transformer-ทำงานยงไง",headingTag:"h1"}}),w=new nl({props:{chapter:1,classNames:"absolute z-10 right-0 top-0"}}),E=new v({props:{title:"ประวัติของ Transformer เบื้องต้น",local:"ประวตของ-transformer-เบองตน",headingTag:"h2"}}),D=new v({props:{title:"Transformers ก็คือโมเดลบริบททางภาษาแบบหนึ่งนั่นแหละ",local:"transformers-กคอโมเดลบรบททางภาษาแบบหนงนนแหละ",headingTag:"h2"}}),N=new v({props:{title:"Transformers มัน ใหญ่ มาก",local:"transformers-มน-ใหญ-มาก",headingTag:"h2"}}),F=new Kt({props:{id:"ftWlj4FBHTg"}}),W=new v({props:{title:"Transfer Learning",local:"transfer-learning",headingTag:"h2"}}),X=new Kt({props:{id:"BqqfQnyjmgg"}}),se=new v({props:{title:"สถาปัตยกรรมทั่วไป",local:"สถาปตยกรรมทวไป",headingTag:"h2"}}),ae=new Kt({props:{id:"H39Z_720T5s"}}),me=new v({props:{title:"เริ่มต้น",local:"เรมตน",headingTag:"h2"}}),ce=new v({props:{title:"Attention layers",local:"attention-layers",headingTag:"h2"}}),Te=new v({props:{title:"สถาปัตยกรรมต้นฉบับ",local:"สถาปตยกรรมตนฉบบ",headingTag:"h2"}}),be=new v({props:{title:"สถาปัตยกรรม(หรือเรียกว่า Architecture) vs. จุดเซฟ(หรือเรียกว่า checkpoints)",local:"สถาปตยกรรมหรอเรยกวา-architecture-vs-จดเซฟหรอเรยกวา-checkpoints",headingTag:"h2"}}),we=new tl({props:{source:"https://github.com/huggingface/course/blob/main/chapters/th/chapter1/4.mdx"}}),{c(){h=r("meta"),qe=i(),Pe=r("p"),je=i(),f(H.$$.fragment),Ae=i(),f(y.$$.fragment),Be=i(),f(w.$$.fragment),Re=i(),P=r("p"),P.textContent=Qt,ze=i(),f(E.$$.fragment),De=i(),q=r("p"),q.textContent=Wt,Ie=i(),x=r("div"),x.innerHTML=Xt,Ge=i(),j=r("p"),j.innerHTML=Zt,Ve=i(),A=r("ul"),A.innerHTML=Jt,Ue=i(),B=r("p"),B.textContent=en,Ne=i(),R=r("ul"),R.innerHTML=tn,Se=i(),z=r("p"),z.textContent=nn,Ye=i(),f(D.$$.fragment),Fe=i(),I=r("p"),I.innerHTML=ln,Ke=i(),G=r("p"),G.innerHTML=sn,Oe=i(),V=r("p"),V.innerHTML=rn,Qe=i(),T=r("div"),T.innerHTML=an,We=i(),U=r("p"),U.innerHTML=mn,Xe=i(),$=r("div"),$.innerHTML=fn,Ze=i(),f(N.$$.fragment),Je=i(),S=r("p"),S.textContent=on,et=i(),C=r("div"),C.innerHTML=un,tt=i(),Y=r("p"),Y.textContent=pn,nt=i(),_=r("div"),_.innerHTML=gn,lt=i(),f(F.$$.fragment),it=i(),K=r("p"),K.textContent=cn,st=i(),O=r("p"),O.textContent=dn,rt=i(),Q=r("p"),Q.textContent=vn,at=i(),f(W.$$.fragment),mt=i(),f(X.$$.fragment),ft=i(),Z=r("p"),Z.innerHTML=hn,ot=i(),k=r("div"),k.innerHTML=xn,ut=i(),J=r("p"),J.textContent=Tn,pt=i(),ee=r("p"),ee.innerHTML=$n,gt=i(),te=r("ul"),te.innerHTML=Cn,ct=i(),ne=r("p"),ne.innerHTML=_n,dt=i(),L=r("div"),L.innerHTML=kn,vt=i(),le=r("p"),le.textContent=Ln,ht=i(),ie=r("p"),ie.textContent=bn,xt=i(),f(se.$$.fragment),Tt=i(),re=r("p"),re.textContent=Mn,$t=i(),f(ae.$$.fragment),Ct=i(),f(me.$$.fragment),_t=i(),fe=r("p"),fe.textContent=Hn,kt=i(),oe=r("ul"),oe.innerHTML=yn,Lt=i(),b=r("div"),b.innerHTML=wn,bt=i(),ue=r("p"),ue.textContent=Pn,Mt=i(),pe=r("ul"),pe.innerHTML=En,Ht=i(),ge=r("p"),ge.textContent=qn,yt=i(),f(ce.$$.fragment),wt=i(),de=r("p"),de.innerHTML=jn,Pt=i(),ve=r("p"),ve.textContent=An,Et=i(),he=r("p"),he.textContent=Bn,qt=i(),xe=r("p"),xe.textContent=Rn,jt=i(),f(Te.$$.fragment),At=i(),$e=r("p"),$e.textContent=zn,Bt=i(),Ce=r("p"),Ce.textContent=Dn,Rt=i(),_e=r("p"),_e.textContent=In,zt=i(),M=r("div"),M.innerHTML=Gn,Dt=i(),ke=r("p"),ke.textContent=Vn,It=i(),Le=r("p"),Le.innerHTML=Un,Gt=i(),f(be.$$.fragment),Vt=i(),Me=r("p"),Me.innerHTML=Nn,Ut=i(),He=r("ul"),He.innerHTML=Sn,Nt=i(),ye=r("p"),ye.innerHTML=Yn,St=i(),f(we.$$.fragment),Yt=i(),Ee=r("p"),this.h()},l(e){const t=Zn("svelte-u9bgzb",document.head);h=a(t,"META",{name:!0,content:!0}),t.forEach(n),qe=s(e),Pe=a(e,"P",{}),Fn(Pe).forEach(n),je=s(e),o(H.$$.fragment,e),Ae=s(e),o(y.$$.fragment,e),Be=s(e),o(w.$$.fragment,e),Re=s(e),P=a(e,"P",{"data-svelte-h":!0}),m(P)!=="svelte-18eolf6"&&(P.textContent=Qt),ze=s(e),o(E.$$.fragment,e),De=s(e),q=a(e,"P",{"data-svelte-h":!0}),m(q)!=="svelte-u0u6wy"&&(q.textContent=Wt),Ie=s(e),x=a(e,"DIV",{class:!0,"data-svelte-h":!0}),m(x)!=="svelte-u8zu2n"&&(x.innerHTML=Xt),Ge=s(e),j=a(e,"P",{"data-svelte-h":!0}),m(j)!=="svelte-wrx2xq"&&(j.innerHTML=Zt),Ve=s(e),A=a(e,"UL",{"data-svelte-h":!0}),m(A)!=="svelte-qmj6tv"&&(A.innerHTML=Jt),Ue=s(e),B=a(e,"P",{"data-svelte-h":!0}),m(B)!=="svelte-ubqyjc"&&(B.textContent=en),Ne=s(e),R=a(e,"UL",{"data-svelte-h":!0}),m(R)!=="svelte-e05puu"&&(R.innerHTML=tn),Se=s(e),z=a(e,"P",{"data-svelte-h":!0}),m(z)!=="svelte-k1gz4c"&&(z.textContent=nn),Ye=s(e),o(D.$$.fragment,e),Fe=s(e),I=a(e,"P",{"data-svelte-h":!0}),m(I)!=="svelte-mq3zc2"&&(I.innerHTML=ln),Ke=s(e),G=a(e,"P",{"data-svelte-h":!0}),m(G)!=="svelte-14n4qcx"&&(G.innerHTML=sn),Oe=s(e),V=a(e,"P",{"data-svelte-h":!0}),m(V)!=="svelte-wjecrm"&&(V.innerHTML=rn),Qe=s(e),T=a(e,"DIV",{class:!0,"data-svelte-h":!0}),m(T)!=="svelte-lvew4p"&&(T.innerHTML=an),We=s(e),U=a(e,"P",{"data-svelte-h":!0}),m(U)!=="svelte-mrx81q"&&(U.innerHTML=mn),Xe=s(e),$=a(e,"DIV",{class:!0,"data-svelte-h":!0}),m($)!=="svelte-1r8x2dd"&&($.innerHTML=fn),Ze=s(e),o(N.$$.fragment,e),Je=s(e),S=a(e,"P",{"data-svelte-h":!0}),m(S)!=="svelte-5g5nqw"&&(S.textContent=on),et=s(e),C=a(e,"DIV",{class:!0,"data-svelte-h":!0}),m(C)!=="svelte-5uz5bp"&&(C.innerHTML=un),tt=s(e),Y=a(e,"P",{"data-svelte-h":!0}),m(Y)!=="svelte-1qd3bh5"&&(Y.textContent=pn),nt=s(e),_=a(e,"DIV",{class:!0,"data-svelte-h":!0}),m(_)!=="svelte-1a8euan"&&(_.innerHTML=gn),lt=s(e),o(F.$$.fragment,e),it=s(e),K=a(e,"P",{"data-svelte-h":!0}),m(K)!=="svelte-zp2mp2"&&(K.textContent=cn),st=s(e),O=a(e,"P",{"data-svelte-h":!0}),m(O)!=="svelte-1i8mvn"&&(O.textContent=dn),rt=s(e),Q=a(e,"P",{"data-svelte-h":!0}),m(Q)!=="svelte-jkn7i"&&(Q.textContent=vn),at=s(e),o(W.$$.fragment,e),mt=s(e),o(X.$$.fragment,e),ft=s(e),Z=a(e,"P",{"data-svelte-h":!0}),m(Z)!=="svelte-1i06tx6"&&(Z.innerHTML=hn),ot=s(e),k=a(e,"DIV",{class:!0,"data-svelte-h":!0}),m(k)!=="svelte-152v0kx"&&(k.innerHTML=xn),ut=s(e),J=a(e,"P",{"data-svelte-h":!0}),m(J)!=="svelte-vpye13"&&(J.textContent=Tn),pt=s(e),ee=a(e,"P",{"data-svelte-h":!0}),m(ee)!=="svelte-19cj7by"&&(ee.innerHTML=$n),gt=s(e),te=a(e,"UL",{"data-svelte-h":!0}),m(te)!=="svelte-1lttv5z"&&(te.innerHTML=Cn),ct=s(e),ne=a(e,"P",{"data-svelte-h":!0}),m(ne)!=="svelte-84wsy2"&&(ne.innerHTML=_n),dt=s(e),L=a(e,"DIV",{class:!0,"data-svelte-h":!0}),m(L)!=="svelte-1ngyuh1"&&(L.innerHTML=kn),vt=s(e),le=a(e,"P",{"data-svelte-h":!0}),m(le)!=="svelte-16vp9t9"&&(le.textContent=Ln),ht=s(e),ie=a(e,"P",{"data-svelte-h":!0}),m(ie)!=="svelte-76xw0z"&&(ie.textContent=bn),xt=s(e),o(se.$$.fragment,e),Tt=s(e),re=a(e,"P",{"data-svelte-h":!0}),m(re)!=="svelte-kkml71"&&(re.textContent=Mn),$t=s(e),o(ae.$$.fragment,e),Ct=s(e),o(me.$$.fragment,e),_t=s(e),fe=a(e,"P",{"data-svelte-h":!0}),m(fe)!=="svelte-1f02pun"&&(fe.textContent=Hn),kt=s(e),oe=a(e,"UL",{"data-svelte-h":!0}),m(oe)!=="svelte-82aa3p"&&(oe.innerHTML=yn),Lt=s(e),b=a(e,"DIV",{class:!0,"data-svelte-h":!0}),m(b)!=="svelte-l70qs1"&&(b.innerHTML=wn),bt=s(e),ue=a(e,"P",{"data-svelte-h":!0}),m(ue)!=="svelte-1t0gel4"&&(ue.textContent=Pn),Mt=s(e),pe=a(e,"UL",{"data-svelte-h":!0}),m(pe)!=="svelte-1veud0o"&&(pe.innerHTML=En),Ht=s(e),ge=a(e,"P",{"data-svelte-h":!0}),m(ge)!=="svelte-1jfyyk9"&&(ge.textContent=qn),yt=s(e),o(ce.$$.fragment,e),wt=s(e),de=a(e,"P",{"data-svelte-h":!0}),m(de)!=="svelte-18x2ctb"&&(de.innerHTML=jn),Pt=s(e),ve=a(e,"P",{"data-svelte-h":!0}),m(ve)!=="svelte-rm83wc"&&(ve.textContent=An),Et=s(e),he=a(e,"P",{"data-svelte-h":!0}),m(he)!=="svelte-68uhfs"&&(he.textContent=Bn),qt=s(e),xe=a(e,"P",{"data-svelte-h":!0}),m(xe)!=="svelte-gigsds"&&(xe.textContent=Rn),jt=s(e),o(Te.$$.fragment,e),At=s(e),$e=a(e,"P",{"data-svelte-h":!0}),m($e)!=="svelte-7fuvnb"&&($e.textContent=zn),Bt=s(e),Ce=a(e,"P",{"data-svelte-h":!0}),m(Ce)!=="svelte-fkupd0"&&(Ce.textContent=Dn),Rt=s(e),_e=a(e,"P",{"data-svelte-h":!0}),m(_e)!=="svelte-1czeppo"&&(_e.textContent=In),zt=s(e),M=a(e,"DIV",{class:!0,"data-svelte-h":!0}),m(M)!=="svelte-14wvpqf"&&(M.innerHTML=Gn),Dt=s(e),ke=a(e,"P",{"data-svelte-h":!0}),m(ke)!=="svelte-i7r50x"&&(ke.textContent=Vn),It=s(e),Le=a(e,"P",{"data-svelte-h":!0}),m(Le)!=="svelte-1q8est3"&&(Le.innerHTML=Un),Gt=s(e),o(be.$$.fragment,e),Vt=s(e),Me=a(e,"P",{"data-svelte-h":!0}),m(Me)!=="svelte-zbic8e"&&(Me.innerHTML=Nn),Ut=s(e),He=a(e,"UL",{"data-svelte-h":!0}),m(He)!=="svelte-1i3jq28"&&(He.innerHTML=Sn),Nt=s(e),ye=a(e,"P",{"data-svelte-h":!0}),m(ye)!=="svelte-19mi9u8"&&(ye.innerHTML=Yn),St=s(e),o(we.$$.fragment,e),Yt=s(e),Ee=a(e,"P",{}),Fn(Ee).forEach(n),this.h()},h(){d(h,"name","hf:doc:metadata"),d(h,"content",il),d(x,"class","flex justify-center"),d(T,"class","flex justify-center"),d($,"class","flex justify-center"),d(C,"class","flex justify-center"),d(_,"class","flex justify-center"),d(k,"class","flex justify-center"),d(L,"class","flex justify-center"),d(b,"class","flex justify-center"),d(M,"class","flex justify-center")},m(e,t){Jn(document.head,h),l(e,qe,t),l(e,Pe,t),l(e,je,t),u(H,e,t),l(e,Ae,t),u(y,e,t),l(e,Be,t),u(w,e,t),l(e,Re,t),l(e,P,t),l(e,ze,t),u(E,e,t),l(e,De,t),l(e,q,t),l(e,Ie,t),l(e,x,t),l(e,Ge,t),l(e,j,t),l(e,Ve,t),l(e,A,t),l(e,Ue,t),l(e,B,t),l(e,Ne,t),l(e,R,t),l(e,Se,t),l(e,z,t),l(e,Ye,t),u(D,e,t),l(e,Fe,t),l(e,I,t),l(e,Ke,t),l(e,G,t),l(e,Oe,t),l(e,V,t),l(e,Qe,t),l(e,T,t),l(e,We,t),l(e,U,t),l(e,Xe,t),l(e,$,t),l(e,Ze,t),u(N,e,t),l(e,Je,t),l(e,S,t),l(e,et,t),l(e,C,t),l(e,tt,t),l(e,Y,t),l(e,nt,t),l(e,_,t),l(e,lt,t),u(F,e,t),l(e,it,t),l(e,K,t),l(e,st,t),l(e,O,t),l(e,rt,t),l(e,Q,t),l(e,at,t),u(W,e,t),l(e,mt,t),u(X,e,t),l(e,ft,t),l(e,Z,t),l(e,ot,t),l(e,k,t),l(e,ut,t),l(e,J,t),l(e,pt,t),l(e,ee,t),l(e,gt,t),l(e,te,t),l(e,ct,t),l(e,ne,t),l(e,dt,t),l(e,L,t),l(e,vt,t),l(e,le,t),l(e,ht,t),l(e,ie,t),l(e,xt,t),u(se,e,t),l(e,Tt,t),l(e,re,t),l(e,$t,t),u(ae,e,t),l(e,Ct,t),u(me,e,t),l(e,_t,t),l(e,fe,t),l(e,kt,t),l(e,oe,t),l(e,Lt,t),l(e,b,t),l(e,bt,t),l(e,ue,t),l(e,Mt,t),l(e,pe,t),l(e,Ht,t),l(e,ge,t),l(e,yt,t),u(ce,e,t),l(e,wt,t),l(e,de,t),l(e,Pt,t),l(e,ve,t),l(e,Et,t),l(e,he,t),l(e,qt,t),l(e,xe,t),l(e,jt,t),u(Te,e,t),l(e,At,t),l(e,$e,t),l(e,Bt,t),l(e,Ce,t),l(e,Rt,t),l(e,_e,t),l(e,zt,t),l(e,M,t),l(e,Dt,t),l(e,ke,t),l(e,It,t),l(e,Le,t),l(e,Gt,t),u(be,e,t),l(e,Vt,t),l(e,Me,t),l(e,Ut,t),l(e,He,t),l(e,Nt,t),l(e,ye,t),l(e,St,t),u(we,e,t),l(e,Yt,t),l(e,Ee,t),Ft=!0},p:On,i(e){Ft||(p(H.$$.fragment,e),p(y.$$.fragment,e),p(w.$$.fragment,e),p(E.$$.fragment,e),p(D.$$.fragment,e),p(N.$$.fragment,e),p(F.$$.fragment,e),p(W.$$.fragment,e),p(X.$$.fragment,e),p(se.$$.fragment,e),p(ae.$$.fragment,e),p(me.$$.fragment,e),p(ce.$$.fragment,e),p(Te.$$.fragment,e),p(be.$$.fragment,e),p(we.$$.fragment,e),Ft=!0)},o(e){g(H.$$.fragment,e),g(y.$$.fragment,e),g(w.$$.fragment,e),g(E.$$.fragment,e),g(D.$$.fragment,e),g(N.$$.fragment,e),g(F.$$.fragment,e),g(W.$$.fragment,e),g(X.$$.fragment,e),g(se.$$.fragment,e),g(ae.$$.fragment,e),g(me.$$.fragment,e),g(ce.$$.fragment,e),g(Te.$$.fragment,e),g(be.$$.fragment,e),g(we.$$.fragment,e),Ft=!1},d(e){e&&(n(qe),n(Pe),n(je),n(Ae),n(Be),n(Re),n(P),n(ze),n(De),n(q),n(Ie),n(x),n(Ge),n(j),n(Ve),n(A),n(Ue),n(B),n(Ne),n(R),n(Se),n(z),n(Ye),n(Fe),n(I),n(Ke),n(G),n(Oe),n(V),n(Qe),n(T),n(We),n(U),n(Xe),n($),n(Ze),n(Je),n(S),n(et),n(C),n(tt),n(Y),n(nt),n(_),n(lt),n(it),n(K),n(st),n(O),n(rt),n(Q),n(at),n(mt),n(ft),n(Z),n(ot),n(k),n(ut),n(J),n(pt),n(ee),n(gt),n(te),n(ct),n(ne),n(dt),n(L),n(vt),n(le),n(ht),n(ie),n(xt),n(Tt),n(re),n($t),n(Ct),n(_t),n(fe),n(kt),n(oe),n(Lt),n(b),n(bt),n(ue),n(Mt),n(pe),n(Ht),n(ge),n(yt),n(wt),n(de),n(Pt),n(ve),n(Et),n(he),n(qt),n(xe),n(jt),n(At),n($e),n(Bt),n(Ce),n(Rt),n(_e),n(zt),n(M),n(Dt),n(ke),n(It),n(Le),n(Gt),n(Vt),n(Me),n(Ut),n(He),n(Nt),n(ye),n(St),n(Yt),n(Ee)),n(h),c(H,e),c(y,e),c(w,e),c(E,e),c(D,e),c(N,e),c(F,e),c(W,e),c(X,e),c(se,e),c(ae,e),c(me,e),c(ce,e),c(Te,e),c(be,e),c(we,e)}}}const il='{"title":"Transformer ทำงานยังไง?","local":"transformer-ทำงานยงไง","sections":[{"title":"ประวัติของ Transformer เบื้องต้น","local":"ประวตของ-transformer-เบองตน","sections":[],"depth":2},{"title":"Transformers ก็คือโมเดลบริบททางภาษาแบบหนึ่งนั่นแหละ","local":"transformers-กคอโมเดลบรบททางภาษาแบบหนงนนแหละ","sections":[],"depth":2},{"title":"Transformers มัน ใหญ่ มาก","local":"transformers-มน-ใหญ-มาก","sections":[],"depth":2},{"title":"Transfer Learning","local":"transfer-learning","sections":[],"depth":2},{"title":"สถาปัตยกรรมทั่วไป","local":"สถาปตยกรรมทวไป","sections":[],"depth":2},{"title":"เริ่มต้น","local":"เรมตน","sections":[],"depth":2},{"title":"Attention layers","local":"attention-layers","sections":[],"depth":2},{"title":"สถาปัตยกรรมต้นฉบับ","local":"สถาปตยกรรมตนฉบบ","sections":[],"depth":2},{"title":"สถาปัตยกรรม(หรือเรียกว่า Architecture) vs. จุดเซฟ(หรือเรียกว่า checkpoints)","local":"สถาปตยกรรมหรอเรยกวา-architecture-vs-จดเซฟหรอเรยกวา-checkpoints","sections":[],"depth":2}],"depth":1}';function sl(Ot){return Qn(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class ul extends Wn{constructor(h){super(),Xn(this,h,sl,ll,Kn,{})}}export{ul as component}; | |
Xet Storage Details
- Size:
- 47.6 kB
- Xet hash:
- 1cf731ee07657332dcc7137bf8abbc1ec7fa054db2292df09889a92530a19da8
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.