Buckets:
| import{s as ul,o as ml,n as Ul}from"../chunks/scheduler.37c15a92.js";import{S as wl,i as hl,g as p,s as n,r,A as fl,h as i,f as e,c as a,j as Tl,u as J,x as M,k as xl,y as gl,a as l,v as y,d as c,t as o,w as j}from"../chunks/index.2bf4358c.js";import{T as dl}from"../chunks/Tip.363c041f.js";import{Y as Cl}from"../chunks/Youtube.1e50a667.js";import{C as T}from"../chunks/CodeBlock.4e987730.js";import{C as bl}from"../chunks/CourseFloatingBanner.6add7356.js";import{H as he,E as Ql}from"../chunks/getInferenceSnippets.24b50994.js";function $l(qs){let x,U=`⚠️ การเทรน tokenize จะไม่เหมือนการกับเทรนโมเดลทั่วไป ในการเทรนโมเดลทั่วไปเราใช้ stochastic gradient descent เพื่อลดค่า loss ในทุก batch กระบวนการนี้มีความ random อยู่ในตัวของมัน (ซึ่งแปลว่า ถ้าคุณเทรนโมเดลสองครั้งแล้วอยากได้ผลลัพธ์ที่เหมือนกัน คุณจะต้องตั้งค่า seed ของการ random ให้เหมือนกันในทุกครั้งที่คุณเทรน) | |
| ส่วนการเทรน tokenize เป็นกระบวนการทางสถิติที่พยายามจะค้นหาคำย่อยที่เหมาะสมที่สุดจากคลังข้อมูลหนึ่ง วิธีในการเลือกค้นหาคำย่อยนี้ก็มีหลากหลายวิธี | |
| ผลลัพธ์ของการเทรนประเภทนี้จะมีความคงที่ (deterministic) ซึ่งแปลว่าคุณจะได้ผลลัพธ์เดิมทุกครั้งหลังจากการเทรน ถ้าหากคุณใช้อัลกอริทึมและข้อมูลเดิมทุกครั้ง`;return{c(){x=p("p"),x.textContent=U},l(u){x=i(u,"P",{"data-svelte-h":!0}),M(x)!=="svelte-5q1t6b"&&(x.textContent=U)},m(u,Rs){l(u,x,Rs)},p:Ul,d(u){u&&e(x)}}}function kl(qs){let x,U,u,Rs,w,Ss,h,Ps,f,fe=`สมมติว่าคุณต้องการจะใช้ language model ในการทำงานใดงานหนึ่ง แต่ตอนนี้ไม่มีโมเดลในภาษาที่คุณต้องการหรือโมเดลที่มีอยู่นั้นถูกเทรนจากคลังข้อมูลที่แตกต่างจากข้อมูลที่คุณต้องการจะใช้งานมาก | |
| ในกรณีนี้คุณอาจจะจำเป็นต้องเทรน langauge model ขึ้นมาใหม่ เพื่อให้ได้โมเดลที่เหมาะกับการใช้งานของคุณ และในการเทรนนั้นคุณก็ต้องมี tokenizer ที่เหมาะกับข้อมูลของคุณ | |
| แล้ววิธีเทรน tokenizer ขึ้นมาใหม่นั้นทำได้อย่างไร?`,Ls,g,ge=`ใน<a href="/course/chapter2">บทที่ 2</a> คุณจะเห็นว่าโมเดล Transformer ส่วนมากใช้เทคนิคการตัดคำที่ใช้หน่วยย่อยของคำ (<em>subword tokenization algorithm</em> ) | |
| ในการตัดคำแบบนี้ ตัวตัดคำจะต้องหาหน่วยย่อยของคำ(subword)ที่เป็นประโยชน์และพบบ่อยในคลังข้อมูล ในกระบวนการหาคำย่อยนี้ tokenizer จะต้องอ่านทุกๆข้อความในคลังข้อมูล ขั้นตอนนี้เราเรียกว่าการ<em>เทรน</em>`,Fs,d,de="กฎที่ใช้ในการเทรนนั้นขึ้นกับประเภทของ tokenizer ที่เราเลือกใช้ เราจะพูดถึงกับอัลกอริทึม 3 แบบที่ใช้ในการเทรน tokenizer กันในตอนท้ายของบทนี้",Ks,C,Os,m,st,b,tt,Q,Ce="🤗 Transformers มี API ที่ใช้งานง่าย ที่สามารถใช้เทรน tokenizer ให้มีลักษณะเหมือน tokenizer ตัวอื่นที่เรามีอยู่แล้ว โดยการใช้ <code>AutoTokenizer.train_new_from_iterator()</code>",et,$,be=`เพื่อให้คุณเห็นภาพชัดเจน เราจะสมมติว่า คุณต้องการเทรนโมเดล GPT-2 ตั้งแต่เริ่มแรก แต่เป็นภาษาอื่นที่ไม่ใช่ภาษาอังกฤษ | |
| สิ่งที่แรกที่คุณต้องทำคือรวบรวมข้อความในภาษานั้นเพื่อสร้างชุดข้อมูลสำหรับการเทรน | |
| ในตัวอย่างต่อไปนี้ เพื่อให้ผู้อ่านทุกคนเข้าใจได้ง่าย เราจะไม่ใช้ภาษารัสเซียหรือภาษาจีนเป็นตัวอย่าง แต่จะใช้ภาษาหนึ่งที่เป็นภาษาอังกฤษแบบพิเศษ นั่นคือ Python code`,lt,k,Qe=`เราจะใช้ <a href="https://github.com/huggingface/datasets" rel="nofollow">🤗 Datasets</a> library เพื่อช่วยสร้างคลังข้อมูล | |
| และใช้ฟังก์ชัน <code>load_dataset()</code> เพื่อดาวโหลดและ cache ชุดข้อมูล <a href="https://huggingface.co/datasets/code_search_net" rel="nofollow">CodeSearchNet</a> | |
| ชุดข้อมูลชุดนี้ถูกสร้างขึ้นมาเพื่อใช้ในการแข่งขัน <a href="https://wandb.ai/github/CodeSearchNet/benchmark" rel="nofollow">CodeSearchNet challenge</a> | |
| และประกอบไปด้วยโค้ดของฟังก์ชันจาก open source libraries จาก GitHub ในหลายๆภาษา เราจะดาวโหลดเฉพาะโค้ดที่เป็น Python`,nt,I,at,_,$e="คุณสามารถเช็คดูข้อมูลส่วนที่ใช้เทรนได้โดยรันโค้ดข้างล่างนี้ เพื่อจะได้ดูว่าในชุดข้อมูลมีคอลัมน์อะไรบ้าง",pt,z,it,V,Mt,A,ke=`เราจะเห็นว่าในชุดข้อมูลนี้ ส่วนที่เป็น docstrings จะถูกแยก ออกจากส่วนที่เป็น code และนอกจากนั้น แต่ละส่วนยังมีอีกคอลัมน์เพื่อเก็บข้อความที่ถูกตัดออกเป็น token แล้วอีกด้วย | |
| เราจะใช้แค่คอลัมน์ <code>whole_func_string</code> ในการเทรน tokenizer ของเรา`,rt,B,Ie="คุณสามารถสุ่มตัวอย่างของข้อมูลในแต่ละคอลัมน์มาดูได้ดังนี้",Jt,Z,yt,v,_e="คำสั่งข้างบนจะ print ผลลัพธ์ข้างล่างนี้ :",ct,X,ot,G,ze=`หลังจากนั้น เราก็จะต้องแปลงชุดข้อมูลนี้เป็น <em>iterator</em> ของ list ของข้อความ (<em>iterator</em> of lists of texts) ตัวอย่างเช่น list ของ list ของข้อความ (list of list of texts) | |
| การใช้ list ของข้อความแบบนี้ จะทำให้การเทรนเร็วขึ้น เพราะว่าการเทรนเป็น batch จะเร็วกว่าการประมวลผลครั้งละหนึ่งข้อความ และสาเหตุที่ input ควรจะเป็น iterator ก็เพื่อป้องกันไม่ให้ Python อ่านข้อความทั้งหมดเข้าไปเก็บใน memory ของคอมพิวเตอร์ภายในครั้งเดียว | |
| ถ้าชุดข้อมูลของคุณนั้นใหญ่มาก คุณอาจจะลองใช้ 🤗 Datasets เพื่อช่วยจัดการชุดข้อมูล เพราะมันจะไม่อ่านข้อมูลทั้งหมดเข้าไปเก็บใน RAM แต่บันทึกข้อมูลใน disk แทน`,jt,N,Ve="โค้ดข้างล่างนี้จะสร้าง list ของ list ของ 1,000 ข้อความ (list of lists of 1,000 texts) และจะโหลดข้อมูล input ทั้งหมดไปเก็บใน memory:",Tt,W,xt,H,Ae="ถ้าหากคุณเปลี่ยนมาใช้ Python generator แทน ก็จะป้องกันไม่ให้ Python โหลดข้อมูลทั้งหมดเข้าไปใน memory ถ้าไม่จำเป็น",ut,E,Be="วิธีการสร้าง generator ก็ง่ายๆเพียงแค่ แทนที่วงเล็บเหลี่ยม <code>[</code> ด้วยเว็บเล็บธรรมดา <code>(</code> ในโค้ดข้างบน:",mt,D,Ut,R,Ze="โค้ดข้างบนนี้ จะไม่โหลดข้อความจาก <code>raw_datasets</code> ทั้งหมดเข้าไปใน memory แต่จะสร้าง iterator ซึ่งเป็น Python object ที่เป็นเสมือนตัวเก็บข้อมูลชั่วคราว",wt,Y,ve="การจะเรียกใช้ข้อมูลในนั้น ทำได้โดยใช้ <code>for</code> loop ข้อความใน iterator จะถูกโหลดเข้าไปใน memory ก็ต่อเมื่อคุณจะใช้งานมันเท่านั้น(ซึ่งก็คือ เวลาที่ <code>for</code> loop วนไปถึง item นั้น) ในตัวอย่างของเรา ในแต่ละ loop จะมีเพียงแค่ 1000 ข้อความเท่านั้นที่จะถูกโหลดมาเก็บไว้ใน memory การทำแบบนี้จะช่วยไม่ให้ memory ถูกใช้งานมากเกินไป หากคุณมีชุดข้อมูลที่ใหญ่มาก",ht,q,Xe="แต่ข้อเสียของ generator ก็คือเราสามารถใช้มันได้แค่ครั้งเดียว ดูตัวอย่างจากโค้ดข้างล่างนี้",ft,S,gt,P,Ge="เราจะเห็นว่าโค้ดนี้ print ผลลัพธ์แค่ครั้งแรก ส่วนในการสั่ง print ครั้งที่สองเราได้เพียง list เปล่ากลับมา:",dt,L,Ct,F,Ne="เพื่อแก้ปัญหานี้ เราจะสร้างฟังก์ชันที่ผลิต Python generator เพื่อเอาไว้เก็บชุดข้อมูลแทน:",bt,K,Qt,O,We="การสร้าง generator ทำได้โดย ใช้ <code>for</code> loop และ <code>yield</code> statement:",$t,ss,kt,ts,He="ฟังก์ชันนี้จะสร้าง generator แบบเดียวกับวิธีการข้างบน แต่ช่วยให้คุณสามารถเขียน logic ที่ซับซ้อนได้มากกว่าการใช้เพียง list comprehension",It,es,_t,ls,Ee="หลังจากเราก็มี iterator ที่แบ่งชุดข้อมูลเป็น batch แล้ว เราก็พร้อมแล้วที่จะเทรน tokenizer สิ่งแรกที่คุณต้องทำคือโหลด tokenizer ที่คุณต้องการจะใช้คู่กับโมเดลหลัก(ในตัวอย่างนี้โมเดลหลักของเราคือ GPT-2)",zt,ns,Vt,as,De=`ถึงแม้ว่าเป้าหมายของเราคือการเทรน tokenizer ใหม่ เราจะเริ่มต้นด้วยการโหลด tokenizer ที่ถูกเทรนมาแล้ว เพื่อที่เราจะได้ไม่ต้องเริ่มกระบวนการทั้งหมดตั้งแต่แรก | |
| ข้อดีของการทำแบบนี้ก็คือ คุณไม่ต้องเสียเวลาตั้งค่าต่างๆ เช่น ประเภทอัลกอริทึมของ tokenizer หรือ token พิเศษต่างๆ tokenizer ตัวใหม่ของเราจะมีโครงสร้างเหมือนกับตัวที่ใช้ใน GPT-2 สิ่งเดียวที่แตกต่างคือชุดคำศัพท์(vocabulary) ซึ่งจะเปลี่ยนไปตามชุดข้อมูลใหม่ที่เราจะใช้`,At,ps,Re="ก่อนอื่นมาดูกันว่า tokenizer ที่เราเพิ่งโหลดมา จะแบ่งข้อความตัวอย่างข้างล่างอย่างไร :",Bt,is,Zt,Ms,vt,rs,Ye=`tokenizer นี้มีการใช้สัญลักษณ์พิเศษ เช่น <code>Ġ</code> ซึ่งเอาไว้แทนช่องว่าง (space) และ <code>Ċ</code> ซึ่งแทนการเริ่มบรรทัดใหม่ (newline) | |
| เราจะเห็นว่า ผลลัพธ์ของการตัดคำไม่ค่อยจะดีนัก เพราะว่าช่องว่างที่อยู่ต่อกันนั้น ถูกแบ่งออกเป็นอย่างละ token ซึ่งจริงๆแล้วการแบ่งที่ดีกว่านี้คือ ช่องว่างที่อยู่ติดกันควรจะถูกรวมให้เป็น token เดียว (เพราะว่าการพิมพ์ช่องว่าง 4 หรือ 8 ครั้ง เป็นสิ่งที่พบได้ทั่วไปในการเขียนโค้ด)`,Xt,Js,qe="นอกจากนั้น tokenizer นี้ยังแบ่งชื่อฟังก์ชันได้ไม่ดีเท่าไหร่ เหมือนกับว่ามันไม่คุ้นเคยกับสัญลักษณ์ <code>_</code> ทำให้ชื่อฟังก์ชันถูกแยกออกเป็นสี่ส่วน",Gt,ys,Se="เรามาเริ่มเทรน tokenizer ตัวใหม่กัน แล้วดูว่า เราจะแก้ปัญหานี้ได้หรือเปล่า เราจะเริ่มจากการใช้ Python method ชื่อว่า <code>train_new_from_iterator()</code>:",Nt,cs,Wt,os,Pe="เวลารันคำสั่งนี้ โปรแกรมอาจจะเวลาซักพัก ถ้าคุณใช้ชุดข้อมูลที่ใหญ่มาก แต่สำหรับชุดข้อมูลตัวอย่างของเราที่มีขนาด 1.6 GB การประมวลผลนั้นค่อนข้างเร็ว (ใช้เวลาทั้งหมด 1 นาที 16 วินาที บนซีพียู AMD Ryzen 9 3900X CPU ซึ่งมี 12 cores)",Ht,js,Le="สิ่งหนึ่งที่คุณควรรู้คือ <code>AutoTokenizer.train_new_from_iterator()</code> นั้น ใช้งานได้แค่ในกรณีที่ตัวตัดคำเป็นแบบเร็ว",Et,Ts,Fe=`คุณจะได้เห็นในบทต่อไปว่า 🤗 Transformers library มี tokenizer สองประเภท ประเภทแรกคือตัวที่เขียนด้วย Python ล้วน และประเภทที่สอง(แบบเร็ว)ที่สร้างจาก 🤗 Tokenizers library ซึ่งใช้ภาษา <a href="https://www.rust-lang.org" rel="nofollow">Rust</a> ในการเขียน | |
| แม้ว่า Python จะเป็นภาษาที่ได้รับความนิยมมากที่สุดในงานด้าน data science และ deep learning แต่ถ้าเราต้องการประมวลผลข้อมูลให้รวดเร็วมากขึ้น โดยใช้การประมวลผลแบบ parallel (หมายถึง ประมวลผลหลายๆงานพร้อมๆกัน) เราจำเป็นต้องเขียนโปรแกรมด้วยภาษาอื่น | |
| ตัวอย่างเช่น การคูณเมทริกซ์ ซึ่งถือเป็นการคำนวณหลักในการประมวลผลของโมเดลประเภท neural network โค้ดส่วนนี้จะถูกเขียนด้วยภาษา CUDA ซึ่งเป็น C library ที่ถูกพัฒนาให้เหมาะกับการใช้งานร่วมกับ GPU | |
| หากเราเขียนโปรแกรมสำหรับเทรน tokenizer ด้วย Python อย่างเดียว จะทำให้การคำนวณช้ามาก นี่คือเหตุผลที่ Huggingface สร้าง 🤗 Tokenizers library ขึ้นมา`,Dt,xs,Ke="แต่ไม่ต้องกังวลกับส่วนนี้ เพราะคุณไม่จำเป็นต้องรู้ภาษา Rust เพื่อจะใช้งานตัวตัดคำแบบเร็วนี้ เหมือนกับที่คุณไม่จำเป็นต้องรู้ภาษา CUDA เพื่อจะรันโมเดลบน GPU",Rt,us,Oe=`🤗 Tokenizers library มี Python bindings สำหรับ method ที่ต้องเรียกใช้โค้ดจากภาษา Rust | |
| ตัวอย่างเช่น โค้ดส่วนที่ทำให้การเทรน tokenizer เป็นไปแบบ parallel หรือตอนที่เรารัน tokenizer กับ | |
| input แบบ batch <a href="/course/chapter3">Chapter 3</a>`,Yt,ms,sl=`โมเดล Transformer ส่วนมากรองรับการใช้งานร่วมกับตัวตัดคำแบบเร็ว (แต่มีกรณียกเว้น คุณสามารถเช็คดูได้ที่<a href="https://huggingface.co/transformers/#supported-frameworks" rel="nofollow">นี่</a>) | |
| สำหรับโมเดลที่รองรับการตัดคำแบบเร็ว <code>AutoTokenizer</code> API จะโหลดตัวตัดคำแบบเร็วเป็นค่าเริ่มต้นเสมอ`,qt,Us,tl="ใน section ถัดไปเราจะเรียนเกี่ยวกับ feature พิเศษต่างๆของตัวตัดคำแบบเร็ว ซึ่งจะมีประโยชน์ในงานประเภท token classification หรือ question answering",St,ws,el="ก่อนที่เราจะไปดูรายละเอียดกัน เรามาดูประสิทธิภาพของ tokenizer ที่เพิ่งเทรนเสร็จแล้วของเรากันดีกว่า เราจะลองใส่ข้อความที่เราใช้ในตัวอย่างด้านบนให้กับ tokenizer ของเราดู",Pt,hs,Lt,fs,Ft,gs,ll=`ในผลลัพธ์ของการตัดคำ คุณจะยังเห็นสัญลักษณ์พิเศษ <code>Ġ</code> และ <code>Ċ</code> เหมือนในตัวอย่างก่อนหน้า แต่คุณจะสังเกตว่า ตอนนี้ tokenizer ของเรานั้นได้เรียนรู้และเห็นว่า token บางตัวนั้น โดดเด่นกว่าตัวอื่นๆในชุดข้อมูล | |
| ตัวอย่างเช่น token <code>ĊĠĠĠ</code> แสดงถึงการย่อหน้า(indentation) และ <code>Ġ"""</code> แสดงถึงเครื่องหมายคำพูดสามตัว ที่โปรแกรมเมอร์ใช้เวลาจะเริ่มเขียน docstring | |
| ตัวตัดคำใหม่นี้ ยังแบ่งชื่อฟังก์ชันได้อย่างถูกต้องอีกด้วย โดยแบ่งที่ <code>_</code>`,Kt,ds,nl="การแบ่งคำแบบนี้ ทำให้สัญลักษณ์หรือตัวอักษรต่างๆถูกรวบให้กระทัดรัดขึ้น หากเทียบกับ tokenizer เก่าที่เทรนจากข้อความภาษาอังกฤษปกติ เราจะเห็นว่า ถ้าเราใช้ทั้งสอง tokenizer เพื่อตัดข้อความ input เดียวกัน tokenizer เก่าจะให้ผลลัพธ์ที่ยาวกว่า tokenizer ตัวใหม่",Ot,Cs,se,bs,te,Qs,al="มาดูอีกตัวอย่างกัน :",ee,$s,le,ks,ne,Is,pl="ในตัวอย่างนี้ นอกจากเราจะเห็น token ที่แสดงถึงย่อหน้าแล้ว เรายังเห็น token ของ double indentation ซึ่งคือ <code>ĊĠĠĠĠĠĠĠ</code> ส่วนคำที่มีความหมายพิเศษใน Python เช่น <code>class</code>, <code>init</code>, <code>call</code>, <code>self</code> และ <code>return</code> ก็ถูกแบ่งให้เป็นอย่างละ token อย่างถูกต้อง",ae,_s,il="นอกจากนั้น เราจะยังเห็นด้วยว่า tokenizer จะตัดแบ่งข้อความเวลาที่มันเห็นสัญลักษณ์ <code>_</code> และ <code>.</code> และยังแบ่งข้อความที่เป็น camel-cased ได้อย่างถูกต้อง เช่น <code>LinearLayer</code> ถูกแยกออกเป็น <code>["ĠLinear", "Layer"]</code>",pe,zs,ie,Vs,Ml="เพื่อที่เราจะสามารถใช้งาน tokenizer ที่เราเทรนเมื่อซักครู่นี้ได้อีกในครั้งหน้า เราจำเป็นจะต้องเก็บบันทึกมันไว้ ในการเซฟเราจะใช้ method ชื่อ <code>save_pretrained()</code>",Me,As,re,Bs,rl=`คำสั่งนี้จะสร้างแฟ้มงาน (folder) ขึ้นมาใหม่ ชื่อว่า <em>code-search-net-tokenizer</em> ซึ่งเอาไว้บันทึกข้อมูลต่างๆของ tokenizer ที่จำเป็นในการเรียกใช้งานอีกครั้ง | |
| ถ้าคุณต้องการจะแชร์ tokenizer นี้กับเพื่อนร่วมงานหรือเพื่อนของคุณ คุณสามารถอัพโหลดมันไปที่ Hub ของ Huggingface ได้ โดยคุณจะต้อง login เข้าบัญชีก่อน | |
| ถ้าคุณทำงานใน notebook (เช่น Jupyter notebook) คุณสามารถใช้ function ข้างล่างนี้ได้เพื่อความสะดวก`,Je,Zs,ye,vs,Jl=`หลังจากคุณรันโค้ดข้างบน คุณจะเห็น widget ให้ล็อกอินเข้าบัญชี Hugging Face | |
| แต่หากคุณไม่ได้ใช้ notebook ให้พิมพ์คำสั่งข้างล่างนี้ใน terminal`,ce,Xs,oe,Gs,yl="หลังจากล็อกอินแล้ว คุณจะสามารถ push tokenizer ของคุณไปที่ Hub ได้ โดยใช้คำสั่งข้างล่างนี้",je,Ns,Te,Ws,cl="คำสั่งนี้จะสร้าง repository ใหม่ในชื่อ <code>code-search-net-tokenizer</code> ใน namespace ของคุณ ซึ่ง repository นี้ก็จะเก็บไฟล์เกี่ยวกับ tokenizer ของคุณไว้ หลังจากนั้น คุณก็จะสามารถดาวน์โหลด tokenizer นี้ได้ ด้วยการใช้ <code>from_pretrained()</code>",xe,Hs,ue,Es,ol='มาถึงตอนนี้คุณก็พร้อมแล้วที่จะเทรน และ fine-tune language model สำหรับงานที่คุณต้องการ เราจะเรียนเรื่องกันนี้ใน<a href="/course/chapter7">บทที่ 7</a> แต่ในบทนี้ เราจะเรียนเกี่ยวกับ fast tokenizer ให้ละเอียดมากขึ้นและมาดูกันว่า เวลาคุณรัน <code>train_new_from_iterator()</code> มีการคำนวณอะไรเกิดขึ้นบ้าง',me,Ds,Ue,Ys,we;return w=new he({props:{title:"การเทรน tokenizer จาก tokenizer ที่มีอยู่แล้ว",local:"การเทรน-tokenizer-จาก-tokenizer-ทมอยแลว",headingTag:"h1"}}),h=new bl({props:{chapter:6,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/th/chapter6/section2.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/th/chapter6/section2.ipynb"}]}}),C=new Cl({props:{id:"DJimQynXZsQ"}}),m=new dl({props:{warning:!0,$$slots:{default:[$l]},$$scope:{ctx:qs}}}),b=new he({props:{title:"การสร้างคลังข้อมูล (Assembling a corpus)",local:"การสรางคลงขอมล-assembling-a-corpus",headingTag:"h2"}}),I=new T({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBJTIzJTIwVGhpcyUyMGNhbiUyMHRha2UlMjBhJTIwZmV3JTIwbWludXRlcyUyMHRvJTIwbG9hZCUyQyUyMHNvJTIwZ3JhYiUyMGElMjBjb2ZmZWUlMjBvciUyMHRlYSUyMHdoaWxlJTIweW91JTIwd2FpdCElMEFyYXdfZGF0YXNldHMlMjAlM0QlMjBsb2FkX2RhdGFzZXQoJTIyY29kZV9zZWFyY2hfbmV0JTIyJTJDJTIwJTIycHl0aG9uJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset | |
| <span class="hljs-comment"># This can take a few minutes to load, so grab a coffee or tea while you wait!</span> | |
| raw_datasets = load_dataset(<span class="hljs-string">"code_search_net"</span>, <span class="hljs-string">"python"</span>)`,wrap:!1}}),z=new T({props:{code:"cmF3X2RhdGFzZXRzJTVCJTIydHJhaW4lMjIlNUQ=",highlighted:'raw_datasets[<span class="hljs-string">"train"</span>]',wrap:!1}}),V=new T({props:{code:"RGF0YXNldCglN0IlMEElMjAlMjAlMjAlMjBmZWF0dXJlcyUzQSUyMCU1QidyZXBvc2l0b3J5X25hbWUnJTJDJTIwJ2Z1bmNfcGF0aF9pbl9yZXBvc2l0b3J5JyUyQyUyMCdmdW5jX25hbWUnJTJDJTIwJ3dob2xlX2Z1bmNfc3RyaW5nJyUyQyUyMCdsYW5ndWFnZSclMkMlMjAlMEElMjAlMjAlMjAlMjAlMjAlMjAnZnVuY19jb2RlX3N0cmluZyclMkMlMjAnZnVuY19jb2RlX3Rva2VucyclMkMlMjAnZnVuY19kb2N1bWVudGF0aW9uX3N0cmluZyclMkMlMjAnZnVuY19kb2N1bWVudGF0aW9uX3Rva2VucyclMkMlMjAnc3BsaXRfbmFtZSclMkMlMjAlMEElMjAlMjAlMjAlMjAlMjAlMjAnZnVuY19jb2RlX3VybCclMEElMjAlMjAlMjAlMjAlNUQlMkMlMEElMjAlMjAlMjAlMjBudW1fcm93cyUzQSUyMDQxMjE3OCUwQSU3RCk=",highlighted:`Dataset({ | |
| features: [<span class="hljs-string">'repository_name'</span>, <span class="hljs-string">'func_path_in_repository'</span>, <span class="hljs-string">'func_name'</span>, <span class="hljs-string">'whole_func_string'</span>, <span class="hljs-string">'language'</span>, | |
| <span class="hljs-string">'func_code_string'</span>, <span class="hljs-string">'func_code_tokens'</span>, <span class="hljs-string">'func_documentation_string'</span>, <span class="hljs-string">'func_documentation_tokens'</span>, <span class="hljs-string">'split_name'</span>, | |
| <span class="hljs-string">'func_code_url'</span> | |
| ], | |
| num_rows: <span class="hljs-number">412178</span> | |
| })`,wrap:!1}}),Z=new T({props:{code:"cHJpbnQocmF3X2RhdGFzZXRzJTVCJTIydHJhaW4lMjIlNUQlNUIxMjM0NTYlNUQlNUIlMjJ3aG9sZV9mdW5jX3N0cmluZyUyMiU1RCk=",highlighted:'<span class="hljs-built_in">print</span>(raw_datasets[<span class="hljs-string">"train"</span>][<span class="hljs-number">123456</span>][<span class="hljs-string">"whole_func_string"</span>])',wrap:!1}}),X=new T({props:{code:"ZGVmJTIwaGFuZGxlX3NpbXBsZV9yZXNwb25zZXMoJTBBJTIwJTIwJTIwJTIwJTIwJTIwc2VsZiUyQyUyMHRpbWVvdXRfbXMlM0ROb25lJTJDJTIwaW5mb19jYiUzRERFRkFVTFRfTUVTU0FHRV9DQUxMQkFDSyklM0ElMEElMjAlMjAlMjAlMjAlMjIlMjIlMjJBY2NlcHRzJTIwbm9ybWFsJTIwcmVzcG9uc2VzJTIwZnJvbSUyMHRoZSUyMGRldmljZS4lMEElMEElMjAlMjAlMjAlMjBBcmdzJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwdGltZW91dF9tcyUzQSUyMFRpbWVvdXQlMjBpbiUyMG1pbGxpc2Vjb25kcyUyMHRvJTIwd2FpdCUyMGZvciUyMGVhY2glMjByZXNwb25zZS4lMEElMjAlMjAlMjAlMjAlMjAlMjBpbmZvX2NiJTNBJTIwT3B0aW9uYWwlMjBjYWxsYmFjayUyMGZvciUyMHRleHQlMjBzZW50JTIwZnJvbSUyMHRoZSUyMGJvb3Rsb2FkZXIuJTBBJTBBJTIwJTIwJTIwJTIwUmV0dXJucyUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyME9LQVklMjBwYWNrZXQncyUyMG1lc3NhZ2UuJTBBJTIwJTIwJTIwJTIwJTIyJTIyJTIyJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwc2VsZi5fYWNjZXB0X3Jlc3BvbnNlcygnT0tBWSclMkMlMjBpbmZvX2NiJTJDJTIwdGltZW91dF9tcyUzRHRpbWVvdXRfbXMp",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">handle_simple_responses</span>(<span class="hljs-params"> | |
| self, timeout_ms=<span class="hljs-literal">None</span>, info_cb=DEFAULT_MESSAGE_CALLBACK</span>): | |
| <span class="hljs-string">"""Accepts normal responses from the device. | |
| Args: | |
| timeout_ms: Timeout in milliseconds to wait for each response. | |
| info_cb: Optional callback for text sent from the bootloader. | |
| Returns: | |
| OKAY packet's message. | |
| """</span> | |
| <span class="hljs-keyword">return</span> self._accept_responses(<span class="hljs-string">'OKAY'</span>, info_cb, timeout_ms=timeout_ms)`,wrap:!1}}),W=new T({props:{code:"JTIzJTIwRG9uJ3QlMjB1bmNvbW1lbnQlMjB0aGUlMjBmb2xsb3dpbmclMjBsaW5lJTIwdW5sZXNzJTIweW91ciUyMGRhdGFzZXQlMjBpcyUyMHNtYWxsISUwQSUyMyUyMHRyYWluaW5nX2NvcnB1cyUyMCUzRCUyMCU1QnJhd19kYXRhc2V0cyU1QiUyMnRyYWluJTIyJTVEJTVCaSUzQSUyMGklMjAlMkIlMjAxMDAwJTVEJTVCJTIyd2hvbGVfZnVuY19zdHJpbmclMjIlNUQlMjBmb3IlMjBpJTIwaW4lMjByYW5nZSgwJTJDJTIwbGVuKHJhd19kYXRhc2V0cyU1QiUyMnRyYWluJTIyJTVEKSUyQyUyMDEwMDApJTVE",highlighted:`<span class="hljs-comment"># Don't uncomment the following line unless your dataset is small!</span> | |
| <span class="hljs-comment"># training_corpus = [raw_datasets["train"][i: i + 1000]["whole_func_string"] for i in range(0, len(raw_datasets["train"]), 1000)]</span>`,wrap:!1}}),D=new T({props:{code:"dHJhaW5pbmdfY29ycHVzJTIwJTNEJTIwKCUwQSUyMCUyMCUyMCUyMHJhd19kYXRhc2V0cyU1QiUyMnRyYWluJTIyJTVEJTVCaSUyMCUzQSUyMGklMjAlMkIlMjAxMDAwJTVEJTVCJTIyd2hvbGVfZnVuY19zdHJpbmclMjIlNUQlMEElMjAlMjAlMjAlMjBmb3IlMjBpJTIwaW4lMjByYW5nZSgwJTJDJTIwbGVuKHJhd19kYXRhc2V0cyU1QiUyMnRyYWluJTIyJTVEKSUyQyUyMDEwMDApJTBBKQ==",highlighted:`training_corpus = ( | |
| raw_datasets[<span class="hljs-string">"train"</span>][i : i + <span class="hljs-number">1000</span>][<span class="hljs-string">"whole_func_string"</span>] | |
| <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">0</span>, <span class="hljs-built_in">len</span>(raw_datasets[<span class="hljs-string">"train"</span>]), <span class="hljs-number">1000</span>) | |
| )`,wrap:!1}}),S=new T({props:{code:"Z2VuJTIwJTNEJTIwKGklMjBmb3IlMjBpJTIwaW4lMjByYW5nZSgxMCkpJTBBcHJpbnQobGlzdChnZW4pKSUwQXByaW50KGxpc3QoZ2VuKSk=",highlighted:`gen = (i <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">10</span>)) | |
| <span class="hljs-built_in">print</span>(<span class="hljs-built_in">list</span>(gen)) | |
| <span class="hljs-built_in">print</span>(<span class="hljs-built_in">list</span>(gen))`,wrap:!1}}),L=new T({props:{code:"JTVCMCUyQyUyMDElMkMlMjAyJTJDJTIwMyUyQyUyMDQlMkMlMjA1JTJDJTIwNiUyQyUyMDclMkMlMjA4JTJDJTIwOSU1RCUwQSU1QiU1RA==",highlighted:`[<span class="hljs-number">0</span>, <span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>, <span class="hljs-number">6</span>, <span class="hljs-number">7</span>, <span class="hljs-number">8</span>, <span class="hljs-number">9</span>] | |
| []`,wrap:!1}}),K=new T({props:{code:"ZGVmJTIwZ2V0X3RyYWluaW5nX2NvcnB1cygpJTNBJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJhd19kYXRhc2V0cyU1QiUyMnRyYWluJTIyJTVEJTVCaSUyMCUzQSUyMGklMjAlMkIlMjAxMDAwJTVEJTVCJTIyd2hvbGVfZnVuY19zdHJpbmclMjIlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmb3IlMjBpJTIwaW4lMjByYW5nZSgwJTJDJTIwbGVuKHJhd19kYXRhc2V0cyU1QiUyMnRyYWluJTIyJTVEKSUyQyUyMDEwMDApJTBBJTIwJTIwJTIwJTIwKSUwQSUwQSUwQXRyYWluaW5nX2NvcnB1cyUyMCUzRCUyMGdldF90cmFpbmluZ19jb3JwdXMoKQ==",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">get_training_corpus</span>(): | |
| <span class="hljs-keyword">return</span> ( | |
| raw_datasets[<span class="hljs-string">"train"</span>][i : i + <span class="hljs-number">1000</span>][<span class="hljs-string">"whole_func_string"</span>] | |
| <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">0</span>, <span class="hljs-built_in">len</span>(raw_datasets[<span class="hljs-string">"train"</span>]), <span class="hljs-number">1000</span>) | |
| ) | |
| training_corpus = get_training_corpus()`,wrap:!1}}),ss=new T({props:{code:"ZGVmJTIwZ2V0X3RyYWluaW5nX2NvcnB1cygpJTNBJTBBJTIwJTIwJTIwJTIwZGF0YXNldCUyMCUzRCUyMHJhd19kYXRhc2V0cyU1QiUyMnRyYWluJTIyJTVEJTBBJTIwJTIwJTIwJTIwZm9yJTIwc3RhcnRfaWR4JTIwaW4lMjByYW5nZSgwJTJDJTIwbGVuKGRhdGFzZXQpJTJDJTIwMTAwMCklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzYW1wbGVzJTIwJTNEJTIwZGF0YXNldCU1QnN0YXJ0X2lkeCUyMCUzQSUyMHN0YXJ0X2lkeCUyMCUyQiUyMDEwMDAlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB5aWVsZCUyMHNhbXBsZXMlNUIlMjJ3aG9sZV9mdW5jX3N0cmluZyUyMiU1RA==",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">get_training_corpus</span>(): | |
| dataset = raw_datasets[<span class="hljs-string">"train"</span>] | |
| <span class="hljs-keyword">for</span> start_idx <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">0</span>, <span class="hljs-built_in">len</span>(dataset), <span class="hljs-number">1000</span>): | |
| samples = dataset[start_idx : start_idx + <span class="hljs-number">1000</span>] | |
| <span class="hljs-keyword">yield</span> samples[<span class="hljs-string">"whole_func_string"</span>]`,wrap:!1}}),es=new he({props:{title:"การเทรน tokenizer",local:"การเทรน-tokenizer",headingTag:"h2"}}),ns=new T({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEFvbGRfdG9rZW5pemVyJTIwJTNEJTIwQXV0b1Rva2VuaXplci5mcm9tX3ByZXRyYWluZWQoJTIyZ3B0MiUyMik=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer | |
| old_tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">"gpt2"</span>)`,wrap:!1}}),is=new T({props:{code:"ZXhhbXBsZSUyMCUzRCUyMCcnJ2RlZiUyMGFkZF9udW1iZXJzKGElMkMlMjBiKSUzQSUwQSUyMCUyMCUyMCUyMCUyMiUyMiUyMkFkZCUyMHRoZSUyMHR3byUyMG51bWJlcnMlMjAlNjBhJTYwJTIwYW5kJTIwJTYwYiU2MC4lMjIlMjIlMjIlMEElMjAlMjAlMjAlMjByZXR1cm4lMjBhJTIwJTJCJTIwYicnJyUwQSUwQXRva2VucyUyMCUzRCUyMG9sZF90b2tlbml6ZXIudG9rZW5pemUoZXhhbXBsZSklMEF0b2tlbnM=",highlighted:`example = <span class="hljs-string">'''def add_numbers(a, b): | |
| """Add the two numbers \`a\` and \`b\`.""" | |
| return a + b'''</span> | |
| tokens = old_tokenizer.tokenize(example) | |
| tokens`,wrap:!1}}),Ms=new T({props:{code:"JTVCJ2RlZiclMkMlMjAnJUM0JUEwYWRkJyUyQyUyMCdfJyUyQyUyMCduJyUyQyUyMCd1bWJlcnMnJTJDJTIwJygnJTJDJTIwJ2EnJTJDJTIwJyUyQyclMkMlMjAnJUM0JUEwYiclMkMlMjAnKSUzQSclMkMlMjAnJUM0JThBJyUyQyUyMCclQzQlQTAnJTJDJTIwJyVDNCVBMCclMkMlMjAnJUM0JUEwJyUyQyUyMCclQzQlQTAlMjIlMjIlMjInJTJDJTIwJ0FkZCclMkMlMjAnJUM0JUEwdGhlJyUyQyUyMCclQzQlQTB0d28nJTJDJTBBJTIwJyVDNCVBMG51bWJlcnMnJTJDJTIwJyVDNCVBMCU2MCclMkMlMjAnYSclMkMlMjAnJTYwJyUyQyUyMCclQzQlQTBhbmQnJTJDJTIwJyVDNCVBMCU2MCclMkMlMjAnYiclMkMlMjAnJTYwJyUyQyUyMCcuJTIyJyUyQyUyMCclMjIlMjInJTJDJTIwJyVDNCU4QSclMkMlMjAnJUM0JUEwJyUyQyUyMCclQzQlQTAnJTJDJTIwJyVDNCVBMCclMkMlMjAnJUM0JUEwcmV0dXJuJyUyQyUyMCclQzQlQTBhJyUyQyUyMCclQzQlQTAlMkInJTJDJTIwJyVDNCVBMGInJTVE",highlighted:'[<span class="hljs-string">'def'</span>, <span class="hljs-string">'Ġadd'</span>, <span class="hljs-string">'_'</span>, <span class="hljs-string">'n'</span>, <span class="hljs-string">'umbers'</span>, <span class="hljs-string">'('</span>, <span class="hljs-string">'a'</span>, <span class="hljs-string">','</span>, <span class="hljs-string">'Ġb'</span>, <span class="hljs-string">'):'</span>, <span class="hljs-string">'Ċ'</span>, <span class="hljs-string">'Ġ'</span>, <span class="hljs-string">'Ġ'</span>, <span class="hljs-string">'Ġ'</span>, <span class="hljs-string">'Ġ"""'</span>, <span class="hljs-string">'Add'</span>, <span class="hljs-string">'Ġthe'</span>, <span class="hljs-string">'Ġtwo'</span>,\n <span class="hljs-string">'Ġnumbers'</span>, <span class="hljs-string">'Ġ`'</span>, <span class="hljs-string">'a'</span>, <span class="hljs-string">'`'</span>, <span class="hljs-string">'Ġand'</span>, <span class="hljs-string">'Ġ`'</span>, <span class="hljs-string">'b'</span>, <span class="hljs-string">'`'</span>, <span class="hljs-string">'."'</span>, <span class="hljs-string">'""'</span>, <span class="hljs-string">'Ċ'</span>, <span class="hljs-string">'Ġ'</span>, <span class="hljs-string">'Ġ'</span>, <span class="hljs-string">'Ġ'</span>, <span class="hljs-string">'Ġreturn'</span>, <span class="hljs-string">'Ġa'</span>, <span class="hljs-string">'Ġ+'</span>, <span class="hljs-string">'Ġb'</span>]',wrap:!1}}),cs=new T({props:{code:"dG9rZW5pemVyJTIwJTNEJTIwb2xkX3Rva2VuaXplci50cmFpbl9uZXdfZnJvbV9pdGVyYXRvcih0cmFpbmluZ19jb3JwdXMlMkMlMjA1MjAwMCk=",highlighted:'tokenizer = old_tokenizer.train_new_from_iterator(training_corpus, <span class="hljs-number">52000</span>)',wrap:!1}}),hs=new T({props:{code:"dG9rZW5zJTIwJTNEJTIwdG9rZW5pemVyLnRva2VuaXplKGV4YW1wbGUpJTBBdG9rZW5z",highlighted:`tokens = tokenizer.tokenize(example) | |
| tokens`,wrap:!1}}),fs=new T({props:{code:"JTVCJ2RlZiclMkMlMjAnJUM0JUEwYWRkJyUyQyUyMCdfJyUyQyUyMCdudW1iZXJzJyUyQyUyMCcoJyUyQyUyMCdhJyUyQyUyMCclMkMnJTJDJTIwJyVDNCVBMGInJTJDJTIwJyklM0EnJTJDJTIwJyVDNCU4QSVDNCVBMCVDNCVBMCVDNCVBMCclMkMlMjAnJUM0JUEwJTIyJTIyJTIyJyUyQyUyMCdBZGQnJTJDJTIwJyVDNCVBMHRoZSclMkMlMjAnJUM0JUEwdHdvJyUyQyUyMCclQzQlQTBudW1iZXJzJyUyQyUyMCclQzQlQTAlNjAnJTJDJTBBJTIwJ2EnJTJDJTIwJyU2MCclMkMlMjAnJUM0JUEwYW5kJyUyQyUyMCclQzQlQTAlNjAnJTJDJTIwJ2InJTJDJTIwJyU2MC4lMjIlMjIlMjInJTJDJTIwJyVDNCU4QSVDNCVBMCVDNCVBMCVDNCVBMCclMkMlMjAnJUM0JUEwcmV0dXJuJyUyQyUyMCclQzQlQTBhJyUyQyUyMCclQzQlQTAlMkInJTJDJTIwJyVDNCVBMGInJTVE",highlighted:'[<span class="hljs-string">'def'</span>, <span class="hljs-string">'Ġadd'</span>, <span class="hljs-string">'_'</span>, <span class="hljs-string">'numbers'</span>, <span class="hljs-string">'('</span>, <span class="hljs-string">'a'</span>, <span class="hljs-string">','</span>, <span class="hljs-string">'Ġb'</span>, <span class="hljs-string">'):'</span>, <span class="hljs-string">'ĊĠĠĠ'</span>, <span class="hljs-string">'Ġ"""'</span>, <span class="hljs-string">'Add'</span>, <span class="hljs-string">'Ġthe'</span>, <span class="hljs-string">'Ġtwo'</span>, <span class="hljs-string">'Ġnumbers'</span>, <span class="hljs-string">'Ġ`'</span>,\n <span class="hljs-string">'a'</span>, <span class="hljs-string">'`'</span>, <span class="hljs-string">'Ġand'</span>, <span class="hljs-string">'Ġ`'</span>, <span class="hljs-string">'b'</span>, <span class="hljs-string">'`."""'</span>, <span class="hljs-string">'ĊĠĠĠ'</span>, <span class="hljs-string">'Ġreturn'</span>, <span class="hljs-string">'Ġa'</span>, <span class="hljs-string">'Ġ+'</span>, <span class="hljs-string">'Ġb'</span>]',wrap:!1}}),Cs=new T({props:{code:"cHJpbnQobGVuKHRva2VucykpJTBBcHJpbnQobGVuKG9sZF90b2tlbml6ZXIudG9rZW5pemUoZXhhbXBsZSkpKQ==",highlighted:`<span class="hljs-built_in">print</span>(<span class="hljs-built_in">len</span>(tokens)) | |
| <span class="hljs-built_in">print</span>(<span class="hljs-built_in">len</span>(old_tokenizer.tokenize(example)))`,wrap:!1}}),bs=new T({props:{code:"MjclMEEzNg==",highlighted:`<span class="hljs-number">27</span> | |
| <span class="hljs-number">36</span>`,wrap:!1}}),$s=new T({props:{code:"ZXhhbXBsZSUyMCUzRCUyMCUyMiUyMiUyMmNsYXNzJTIwTGluZWFyTGF5ZXIoKSUzQSUwQSUyMCUyMCUyMCUyMGRlZiUyMF9faW5pdF9fKHNlbGYlMkMlMjBpbnB1dF9zaXplJTJDJTIwb3V0cHV0X3NpemUpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZi53ZWlnaHQlMjAlM0QlMjB0b3JjaC5yYW5kbihpbnB1dF9zaXplJTJDJTIwb3V0cHV0X3NpemUpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZi5iaWFzJTIwJTNEJTIwdG9yY2guemVyb3Mob3V0cHV0X3NpemUpJTBBJTBBJTIwJTIwJTIwJTIwZGVmJTIwX19jYWxsX18oc2VsZiUyQyUyMHgpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIweCUyMCU0MCUyMHNlbGYud2VpZ2h0cyUyMCUyQiUyMHNlbGYuYmlhcyUwQSUyMCUyMCUyMCUyMCUyMiUyMiUyMiUwQXRva2VuaXplci50b2tlbml6ZShleGFtcGxlKQ==",highlighted:`example = <span class="hljs-string">"""class LinearLayer(): | |
| def __init__(self, input_size, output_size): | |
| self.weight = torch.randn(input_size, output_size) | |
| self.bias = torch.zeros(output_size) | |
| def __call__(self, x): | |
| return x @ self.weights + self.bias | |
| """</span> | |
| tokenizer.tokenize(example)`,wrap:!1}}),ks=new T({props:{code:"JTVCJ2NsYXNzJyUyQyUyMCclQzQlQTBMaW5lYXInJTJDJTIwJ0xheWVyJyUyQyUyMCcoKSUzQSclMkMlMjAnJUM0JThBJUM0JUEwJUM0JUEwJUM0JUEwJyUyQyUyMCclQzQlQTBkZWYnJTJDJTIwJyVDNCVBMF9fJyUyQyUyMCdpbml0JyUyQyUyMCdfXygnJTJDJTIwJ3NlbGYnJTJDJTIwJyUyQyclMkMlMjAnJUM0JUEwaW5wdXQnJTJDJTIwJ18nJTJDJTIwJ3NpemUnJTJDJTIwJyUyQyclMkMlMEElMjAnJUM0JUEwb3V0cHV0JyUyQyUyMCdfJyUyQyUyMCdzaXplJyUyQyUyMCcpJTNBJyUyQyUyMCclQzQlOEElQzQlQTAlQzQlQTAlQzQlQTAlQzQlQTAlQzQlQTAlQzQlQTAlQzQlQTAnJTJDJTIwJyVDNCVBMHNlbGYnJTJDJTIwJy4nJTJDJTIwJ3dlaWdodCclMkMlMjAnJUM0JUEwJTNEJyUyQyUyMCclQzQlQTB0b3JjaCclMkMlMjAnLiclMkMlMjAncmFuZG4nJTJDJTIwJygnJTJDJTIwJ2lucHV0JyUyQyUyMCdfJyUyQyUwQSUyMCdzaXplJyUyQyUyMCclMkMnJTJDJTIwJyVDNCVBMG91dHB1dCclMkMlMjAnXyclMkMlMjAnc2l6ZSclMkMlMjAnKSclMkMlMjAnJUM0JThBJUM0JUEwJUM0JUEwJUM0JUEwJUM0JUEwJUM0JUEwJUM0JUEwJUM0JUEwJyUyQyUyMCclQzQlQTBzZWxmJyUyQyUyMCcuJyUyQyUyMCdiaWFzJyUyQyUyMCclQzQlQTAlM0QnJTJDJTIwJyVDNCVBMHRvcmNoJyUyQyUyMCcuJyUyQyUyMCd6ZXJvcyclMkMlMjAnKCclMkMlMEElMjAnb3V0cHV0JyUyQyUyMCdfJyUyQyUyMCdzaXplJyUyQyUyMCcpJyUyQyUyMCclQzQlOEElQzQlOEElQzQlQTAlQzQlQTAlQzQlQTAnJTJDJTIwJyVDNCVBMGRlZiclMkMlMjAnJUM0JUEwX18nJTJDJTIwJ2NhbGwnJTJDJTIwJ19fKCclMkMlMjAnc2VsZiclMkMlMjAnJTJDJyUyQyUyMCclQzQlQTB4JyUyQyUyMCcpJTNBJyUyQyUyMCclQzQlOEElQzQlQTAlQzQlQTAlQzQlQTAlQzQlQTAlQzQlQTAlQzQlQTAlQzQlQTAnJTJDJTBBJTIwJyVDNCVBMHJldHVybiclMkMlMjAnJUM0JUEweCclMkMlMjAnJUM0JUEwJTQwJyUyQyUyMCclQzQlQTBzZWxmJyUyQyUyMCcuJyUyQyUyMCd3ZWlnaHRzJyUyQyUyMCclQzQlQTAlMkInJTJDJTIwJyVDNCVBMHNlbGYnJTJDJTIwJy4nJTJDJTIwJ2JpYXMnJTJDJTIwJyVDNCU4QSVDNCVBMCVDNCVBMCVDNCVBMCVDNCVBMCclNUQ=",highlighted:`[<span class="hljs-string">'class'</span>, <span class="hljs-string">'ĠLinear'</span>, <span class="hljs-string">'Layer'</span>, <span class="hljs-string">'():'</span>, <span class="hljs-string">'ĊĠĠĠ'</span>, <span class="hljs-string">'Ġdef'</span>, <span class="hljs-string">'Ġ__'</span>, <span class="hljs-string">'init'</span>, <span class="hljs-string">'__('</span>, <span class="hljs-string">'self'</span>, <span class="hljs-string">','</span>, <span class="hljs-string">'Ġinput'</span>, <span class="hljs-string">'_'</span>, <span class="hljs-string">'size'</span>, <span class="hljs-string">','</span>, | |
| <span class="hljs-string">'Ġoutput'</span>, <span class="hljs-string">'_'</span>, <span class="hljs-string">'size'</span>, <span class="hljs-string">'):'</span>, <span class="hljs-string">'ĊĠĠĠĠĠĠĠ'</span>, <span class="hljs-string">'Ġself'</span>, <span class="hljs-string">'.'</span>, <span class="hljs-string">'weight'</span>, <span class="hljs-string">'Ġ='</span>, <span class="hljs-string">'Ġtorch'</span>, <span class="hljs-string">'.'</span>, <span class="hljs-string">'randn'</span>, <span class="hljs-string">'('</span>, <span class="hljs-string">'input'</span>, <span class="hljs-string">'_'</span>, | |
| <span class="hljs-string">'size'</span>, <span class="hljs-string">','</span>, <span class="hljs-string">'Ġoutput'</span>, <span class="hljs-string">'_'</span>, <span class="hljs-string">'size'</span>, <span class="hljs-string">')'</span>, <span class="hljs-string">'ĊĠĠĠĠĠĠĠ'</span>, <span class="hljs-string">'Ġself'</span>, <span class="hljs-string">'.'</span>, <span class="hljs-string">'bias'</span>, <span class="hljs-string">'Ġ='</span>, <span class="hljs-string">'Ġtorch'</span>, <span class="hljs-string">'.'</span>, <span class="hljs-string">'zeros'</span>, <span class="hljs-string">'('</span>, | |
| <span class="hljs-string">'output'</span>, <span class="hljs-string">'_'</span>, <span class="hljs-string">'size'</span>, <span class="hljs-string">')'</span>, <span class="hljs-string">'ĊĊĠĠĠ'</span>, <span class="hljs-string">'Ġdef'</span>, <span class="hljs-string">'Ġ__'</span>, <span class="hljs-string">'call'</span>, <span class="hljs-string">'__('</span>, <span class="hljs-string">'self'</span>, <span class="hljs-string">','</span>, <span class="hljs-string">'Ġx'</span>, <span class="hljs-string">'):'</span>, <span class="hljs-string">'ĊĠĠĠĠĠĠĠ'</span>, | |
| <span class="hljs-string">'Ġreturn'</span>, <span class="hljs-string">'Ġx'</span>, <span class="hljs-string">'Ġ@'</span>, <span class="hljs-string">'Ġself'</span>, <span class="hljs-string">'.'</span>, <span class="hljs-string">'weights'</span>, <span class="hljs-string">'Ġ+'</span>, <span class="hljs-string">'Ġself'</span>, <span class="hljs-string">'.'</span>, <span class="hljs-string">'bias'</span>, <span class="hljs-string">'ĊĠĠĠĠ'</span>]`,wrap:!1}}),zs=new he({props:{title:"การบันทึก tokenizer",local:"การบนทก-tokenizer",headingTag:"h2"}}),As=new T({props:{code:"dG9rZW5pemVyLnNhdmVfcHJldHJhaW5lZCglMjJjb2RlLXNlYXJjaC1uZXQtdG9rZW5pemVyJTIyKQ==",highlighted:'tokenizer.save_pretrained(<span class="hljs-string">"code-search-net-tokenizer"</span>)',wrap:!1}}),Zs=new T({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMG5vdGVib29rX2xvZ2luJTBBJTBBbm90ZWJvb2tfbG9naW4oKQ==",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> notebook_login | |
| notebook_login()`,wrap:!1}}),Xs=new T({props:{code:"aHVnZ2luZ2ZhY2UtY2xpJTIwbG9naW4=",highlighted:"huggingface-cli login",wrap:!1}}),Ns=new T({props:{code:"dG9rZW5pemVyLnB1c2hfdG9faHViKCUyMmNvZGUtc2VhcmNoLW5ldC10b2tlbml6ZXIlMjIp",highlighted:'tokenizer.push_to_hub(<span class="hljs-string">"code-search-net-tokenizer"</span>)',wrap:!1}}),Hs=new T({props:{code:"JTIzJTIwUmVwbGFjZSUyMCUyMmh1Z2dpbmdmYWNlLWNvdXJzZSUyMiUyMGJlbG93JTIwd2l0aCUyMHlvdXIlMjBhY3R1YWwlMjBuYW1lc3BhY2UlMjB0byUyMHVzZSUyMHlvdXIlMjBvd24lMjB0b2tlbml6ZXIlMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJodWdnaW5nZmFjZS1jb3Vyc2UlMkZjb2RlLXNlYXJjaC1uZXQtdG9rZW5pemVyJTIyKQ==",highlighted:`<span class="hljs-comment"># Replace "huggingface-course" below with your actual namespace to use your own tokenizer</span> | |
| tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">"huggingface-course/code-search-net-tokenizer"</span>)`,wrap:!1}}),Ds=new Ql({props:{source:"https://github.com/huggingface/course/blob/main/chapters/th/chapter6/2.mdx"}}),{c(){x=p("meta"),U=n(),u=p("p"),Rs=n(),r(w.$$.fragment),Ss=n(),r(h.$$.fragment),Ps=n(),f=p("p"),f.textContent=fe,Ls=n(),g=p("p"),g.innerHTML=ge,Fs=n(),d=p("p"),d.textContent=de,Ks=n(),r(C.$$.fragment),Os=n(),r(m.$$.fragment),st=n(),r(b.$$.fragment),tt=n(),Q=p("p"),Q.innerHTML=Ce,et=n(),$=p("p"),$.textContent=be,lt=n(),k=p("p"),k.innerHTML=Qe,nt=n(),r(I.$$.fragment),at=n(),_=p("p"),_.textContent=$e,pt=n(),r(z.$$.fragment),it=n(),r(V.$$.fragment),Mt=n(),A=p("p"),A.innerHTML=ke,rt=n(),B=p("p"),B.textContent=Ie,Jt=n(),r(Z.$$.fragment),yt=n(),v=p("p"),v.textContent=_e,ct=n(),r(X.$$.fragment),ot=n(),G=p("p"),G.innerHTML=ze,jt=n(),N=p("p"),N.textContent=Ve,Tt=n(),r(W.$$.fragment),xt=n(),H=p("p"),H.textContent=Ae,ut=n(),E=p("p"),E.innerHTML=Be,mt=n(),r(D.$$.fragment),Ut=n(),R=p("p"),R.innerHTML=Ze,wt=n(),Y=p("p"),Y.innerHTML=ve,ht=n(),q=p("p"),q.textContent=Xe,ft=n(),r(S.$$.fragment),gt=n(),P=p("p"),P.textContent=Ge,dt=n(),r(L.$$.fragment),Ct=n(),F=p("p"),F.textContent=Ne,bt=n(),r(K.$$.fragment),Qt=n(),O=p("p"),O.innerHTML=We,$t=n(),r(ss.$$.fragment),kt=n(),ts=p("p"),ts.textContent=He,It=n(),r(es.$$.fragment),_t=n(),ls=p("p"),ls.textContent=Ee,zt=n(),r(ns.$$.fragment),Vt=n(),as=p("p"),as.textContent=De,At=n(),ps=p("p"),ps.textContent=Re,Bt=n(),r(is.$$.fragment),Zt=n(),r(Ms.$$.fragment),vt=n(),rs=p("p"),rs.innerHTML=Ye,Xt=n(),Js=p("p"),Js.innerHTML=qe,Gt=n(),ys=p("p"),ys.innerHTML=Se,Nt=n(),r(cs.$$.fragment),Wt=n(),os=p("p"),os.textContent=Pe,Ht=n(),js=p("p"),js.innerHTML=Le,Et=n(),Ts=p("p"),Ts.innerHTML=Fe,Dt=n(),xs=p("p"),xs.textContent=Ke,Rt=n(),us=p("p"),us.innerHTML=Oe,Yt=n(),ms=p("p"),ms.innerHTML=sl,qt=n(),Us=p("p"),Us.textContent=tl,St=n(),ws=p("p"),ws.textContent=el,Pt=n(),r(hs.$$.fragment),Lt=n(),r(fs.$$.fragment),Ft=n(),gs=p("p"),gs.innerHTML=ll,Kt=n(),ds=p("p"),ds.textContent=nl,Ot=n(),r(Cs.$$.fragment),se=n(),r(bs.$$.fragment),te=n(),Qs=p("p"),Qs.textContent=al,ee=n(),r($s.$$.fragment),le=n(),r(ks.$$.fragment),ne=n(),Is=p("p"),Is.innerHTML=pl,ae=n(),_s=p("p"),_s.innerHTML=il,pe=n(),r(zs.$$.fragment),ie=n(),Vs=p("p"),Vs.innerHTML=Ml,Me=n(),r(As.$$.fragment),re=n(),Bs=p("p"),Bs.innerHTML=rl,Je=n(),r(Zs.$$.fragment),ye=n(),vs=p("p"),vs.textContent=Jl,ce=n(),r(Xs.$$.fragment),oe=n(),Gs=p("p"),Gs.textContent=yl,je=n(),r(Ns.$$.fragment),Te=n(),Ws=p("p"),Ws.innerHTML=cl,xe=n(),r(Hs.$$.fragment),ue=n(),Es=p("p"),Es.innerHTML=ol,me=n(),r(Ds.$$.fragment),Ue=n(),Ys=p("p"),this.h()},l(s){const t=fl("svelte-u9bgzb",document.head);x=i(t,"META",{name:!0,content:!0}),t.forEach(e),U=a(s),u=i(s,"P",{}),Tl(u).forEach(e),Rs=a(s),J(w.$$.fragment,s),Ss=a(s),J(h.$$.fragment,s),Ps=a(s),f=i(s,"P",{"data-svelte-h":!0}),M(f)!=="svelte-a0vfrb"&&(f.textContent=fe),Ls=a(s),g=i(s,"P",{"data-svelte-h":!0}),M(g)!=="svelte-wmj4iq"&&(g.innerHTML=ge),Fs=a(s),d=i(s,"P",{"data-svelte-h":!0}),M(d)!=="svelte-1aqu51c"&&(d.textContent=de),Ks=a(s),J(C.$$.fragment,s),Os=a(s),J(m.$$.fragment,s),st=a(s),J(b.$$.fragment,s),tt=a(s),Q=i(s,"P",{"data-svelte-h":!0}),M(Q)!=="svelte-1a9akqi"&&(Q.innerHTML=Ce),et=a(s),$=i(s,"P",{"data-svelte-h":!0}),M($)!=="svelte-16idyns"&&($.textContent=be),lt=a(s),k=i(s,"P",{"data-svelte-h":!0}),M(k)!=="svelte-1qz05e8"&&(k.innerHTML=Qe),nt=a(s),J(I.$$.fragment,s),at=a(s),_=i(s,"P",{"data-svelte-h":!0}),M(_)!=="svelte-1yoper8"&&(_.textContent=$e),pt=a(s),J(z.$$.fragment,s),it=a(s),J(V.$$.fragment,s),Mt=a(s),A=i(s,"P",{"data-svelte-h":!0}),M(A)!=="svelte-9lp8ei"&&(A.innerHTML=ke),rt=a(s),B=i(s,"P",{"data-svelte-h":!0}),M(B)!=="svelte-1kvr7s6"&&(B.textContent=Ie),Jt=a(s),J(Z.$$.fragment,s),yt=a(s),v=i(s,"P",{"data-svelte-h":!0}),M(v)!=="svelte-1vxkhh7"&&(v.textContent=_e),ct=a(s),J(X.$$.fragment,s),ot=a(s),G=i(s,"P",{"data-svelte-h":!0}),M(G)!=="svelte-q6xu6u"&&(G.innerHTML=ze),jt=a(s),N=i(s,"P",{"data-svelte-h":!0}),M(N)!=="svelte-1gibedm"&&(N.textContent=Ve),Tt=a(s),J(W.$$.fragment,s),xt=a(s),H=i(s,"P",{"data-svelte-h":!0}),M(H)!=="svelte-1mun290"&&(H.textContent=Ae),ut=a(s),E=i(s,"P",{"data-svelte-h":!0}),M(E)!=="svelte-xw49j7"&&(E.innerHTML=Be),mt=a(s),J(D.$$.fragment,s),Ut=a(s),R=i(s,"P",{"data-svelte-h":!0}),M(R)!=="svelte-f8cdcv"&&(R.innerHTML=Ze),wt=a(s),Y=i(s,"P",{"data-svelte-h":!0}),M(Y)!=="svelte-k9gzay"&&(Y.innerHTML=ve),ht=a(s),q=i(s,"P",{"data-svelte-h":!0}),M(q)!=="svelte-my13vx"&&(q.textContent=Xe),ft=a(s),J(S.$$.fragment,s),gt=a(s),P=i(s,"P",{"data-svelte-h":!0}),M(P)!=="svelte-tpogfa"&&(P.textContent=Ge),dt=a(s),J(L.$$.fragment,s),Ct=a(s),F=i(s,"P",{"data-svelte-h":!0}),M(F)!=="svelte-7dj2z8"&&(F.textContent=Ne),bt=a(s),J(K.$$.fragment,s),Qt=a(s),O=i(s,"P",{"data-svelte-h":!0}),M(O)!=="svelte-c2ih1c"&&(O.innerHTML=We),$t=a(s),J(ss.$$.fragment,s),kt=a(s),ts=i(s,"P",{"data-svelte-h":!0}),M(ts)!=="svelte-224zvf"&&(ts.textContent=He),It=a(s),J(es.$$.fragment,s),_t=a(s),ls=i(s,"P",{"data-svelte-h":!0}),M(ls)!=="svelte-oanflb"&&(ls.textContent=Ee),zt=a(s),J(ns.$$.fragment,s),Vt=a(s),as=i(s,"P",{"data-svelte-h":!0}),M(as)!=="svelte-1g6sg40"&&(as.textContent=De),At=a(s),ps=i(s,"P",{"data-svelte-h":!0}),M(ps)!=="svelte-fnojui"&&(ps.textContent=Re),Bt=a(s),J(is.$$.fragment,s),Zt=a(s),J(Ms.$$.fragment,s),vt=a(s),rs=i(s,"P",{"data-svelte-h":!0}),M(rs)!=="svelte-w52enb"&&(rs.innerHTML=Ye),Xt=a(s),Js=i(s,"P",{"data-svelte-h":!0}),M(Js)!=="svelte-1hlunit"&&(Js.innerHTML=qe),Gt=a(s),ys=i(s,"P",{"data-svelte-h":!0}),M(ys)!=="svelte-1wxgplq"&&(ys.innerHTML=Se),Nt=a(s),J(cs.$$.fragment,s),Wt=a(s),os=i(s,"P",{"data-svelte-h":!0}),M(os)!=="svelte-1t0cuvj"&&(os.textContent=Pe),Ht=a(s),js=i(s,"P",{"data-svelte-h":!0}),M(js)!=="svelte-qhbqio"&&(js.innerHTML=Le),Et=a(s),Ts=i(s,"P",{"data-svelte-h":!0}),M(Ts)!=="svelte-swdiid"&&(Ts.innerHTML=Fe),Dt=a(s),xs=i(s,"P",{"data-svelte-h":!0}),M(xs)!=="svelte-1asmn0x"&&(xs.textContent=Ke),Rt=a(s),us=i(s,"P",{"data-svelte-h":!0}),M(us)!=="svelte-eipqg"&&(us.innerHTML=Oe),Yt=a(s),ms=i(s,"P",{"data-svelte-h":!0}),M(ms)!=="svelte-fug5uk"&&(ms.innerHTML=sl),qt=a(s),Us=i(s,"P",{"data-svelte-h":!0}),M(Us)!=="svelte-1swlg4w"&&(Us.textContent=tl),St=a(s),ws=i(s,"P",{"data-svelte-h":!0}),M(ws)!=="svelte-joi1vn"&&(ws.textContent=el),Pt=a(s),J(hs.$$.fragment,s),Lt=a(s),J(fs.$$.fragment,s),Ft=a(s),gs=i(s,"P",{"data-svelte-h":!0}),M(gs)!=="svelte-111ndqd"&&(gs.innerHTML=ll),Kt=a(s),ds=i(s,"P",{"data-svelte-h":!0}),M(ds)!=="svelte-quzlfg"&&(ds.textContent=nl),Ot=a(s),J(Cs.$$.fragment,s),se=a(s),J(bs.$$.fragment,s),te=a(s),Qs=i(s,"P",{"data-svelte-h":!0}),M(Qs)!=="svelte-10w04in"&&(Qs.textContent=al),ee=a(s),J($s.$$.fragment,s),le=a(s),J(ks.$$.fragment,s),ne=a(s),Is=i(s,"P",{"data-svelte-h":!0}),M(Is)!=="svelte-mnqkem"&&(Is.innerHTML=pl),ae=a(s),_s=i(s,"P",{"data-svelte-h":!0}),M(_s)!=="svelte-9kajg0"&&(_s.innerHTML=il),pe=a(s),J(zs.$$.fragment,s),ie=a(s),Vs=i(s,"P",{"data-svelte-h":!0}),M(Vs)!=="svelte-3sduq0"&&(Vs.innerHTML=Ml),Me=a(s),J(As.$$.fragment,s),re=a(s),Bs=i(s,"P",{"data-svelte-h":!0}),M(Bs)!=="svelte-1r8qr09"&&(Bs.innerHTML=rl),Je=a(s),J(Zs.$$.fragment,s),ye=a(s),vs=i(s,"P",{"data-svelte-h":!0}),M(vs)!=="svelte-52ued4"&&(vs.textContent=Jl),ce=a(s),J(Xs.$$.fragment,s),oe=a(s),Gs=i(s,"P",{"data-svelte-h":!0}),M(Gs)!=="svelte-188atjl"&&(Gs.textContent=yl),je=a(s),J(Ns.$$.fragment,s),Te=a(s),Ws=i(s,"P",{"data-svelte-h":!0}),M(Ws)!=="svelte-j9yxhz"&&(Ws.innerHTML=cl),xe=a(s),J(Hs.$$.fragment,s),ue=a(s),Es=i(s,"P",{"data-svelte-h":!0}),M(Es)!=="svelte-zgktej"&&(Es.innerHTML=ol),me=a(s),J(Ds.$$.fragment,s),Ue=a(s),Ys=i(s,"P",{}),Tl(Ys).forEach(e),this.h()},h(){xl(x,"name","hf:doc:metadata"),xl(x,"content",Il)},m(s,t){gl(document.head,x),l(s,U,t),l(s,u,t),l(s,Rs,t),y(w,s,t),l(s,Ss,t),y(h,s,t),l(s,Ps,t),l(s,f,t),l(s,Ls,t),l(s,g,t),l(s,Fs,t),l(s,d,t),l(s,Ks,t),y(C,s,t),l(s,Os,t),y(m,s,t),l(s,st,t),y(b,s,t),l(s,tt,t),l(s,Q,t),l(s,et,t),l(s,$,t),l(s,lt,t),l(s,k,t),l(s,nt,t),y(I,s,t),l(s,at,t),l(s,_,t),l(s,pt,t),y(z,s,t),l(s,it,t),y(V,s,t),l(s,Mt,t),l(s,A,t),l(s,rt,t),l(s,B,t),l(s,Jt,t),y(Z,s,t),l(s,yt,t),l(s,v,t),l(s,ct,t),y(X,s,t),l(s,ot,t),l(s,G,t),l(s,jt,t),l(s,N,t),l(s,Tt,t),y(W,s,t),l(s,xt,t),l(s,H,t),l(s,ut,t),l(s,E,t),l(s,mt,t),y(D,s,t),l(s,Ut,t),l(s,R,t),l(s,wt,t),l(s,Y,t),l(s,ht,t),l(s,q,t),l(s,ft,t),y(S,s,t),l(s,gt,t),l(s,P,t),l(s,dt,t),y(L,s,t),l(s,Ct,t),l(s,F,t),l(s,bt,t),y(K,s,t),l(s,Qt,t),l(s,O,t),l(s,$t,t),y(ss,s,t),l(s,kt,t),l(s,ts,t),l(s,It,t),y(es,s,t),l(s,_t,t),l(s,ls,t),l(s,zt,t),y(ns,s,t),l(s,Vt,t),l(s,as,t),l(s,At,t),l(s,ps,t),l(s,Bt,t),y(is,s,t),l(s,Zt,t),y(Ms,s,t),l(s,vt,t),l(s,rs,t),l(s,Xt,t),l(s,Js,t),l(s,Gt,t),l(s,ys,t),l(s,Nt,t),y(cs,s,t),l(s,Wt,t),l(s,os,t),l(s,Ht,t),l(s,js,t),l(s,Et,t),l(s,Ts,t),l(s,Dt,t),l(s,xs,t),l(s,Rt,t),l(s,us,t),l(s,Yt,t),l(s,ms,t),l(s,qt,t),l(s,Us,t),l(s,St,t),l(s,ws,t),l(s,Pt,t),y(hs,s,t),l(s,Lt,t),y(fs,s,t),l(s,Ft,t),l(s,gs,t),l(s,Kt,t),l(s,ds,t),l(s,Ot,t),y(Cs,s,t),l(s,se,t),y(bs,s,t),l(s,te,t),l(s,Qs,t),l(s,ee,t),y($s,s,t),l(s,le,t),y(ks,s,t),l(s,ne,t),l(s,Is,t),l(s,ae,t),l(s,_s,t),l(s,pe,t),y(zs,s,t),l(s,ie,t),l(s,Vs,t),l(s,Me,t),y(As,s,t),l(s,re,t),l(s,Bs,t),l(s,Je,t),y(Zs,s,t),l(s,ye,t),l(s,vs,t),l(s,ce,t),y(Xs,s,t),l(s,oe,t),l(s,Gs,t),l(s,je,t),y(Ns,s,t),l(s,Te,t),l(s,Ws,t),l(s,xe,t),y(Hs,s,t),l(s,ue,t),l(s,Es,t),l(s,me,t),y(Ds,s,t),l(s,Ue,t),l(s,Ys,t),we=!0},p(s,[t]){const jl={};t&2&&(jl.$$scope={dirty:t,ctx:s}),m.$set(jl)},i(s){we||(c(w.$$.fragment,s),c(h.$$.fragment,s),c(C.$$.fragment,s),c(m.$$.fragment,s),c(b.$$.fragment,s),c(I.$$.fragment,s),c(z.$$.fragment,s),c(V.$$.fragment,s),c(Z.$$.fragment,s),c(X.$$.fragment,s),c(W.$$.fragment,s),c(D.$$.fragment,s),c(S.$$.fragment,s),c(L.$$.fragment,s),c(K.$$.fragment,s),c(ss.$$.fragment,s),c(es.$$.fragment,s),c(ns.$$.fragment,s),c(is.$$.fragment,s),c(Ms.$$.fragment,s),c(cs.$$.fragment,s),c(hs.$$.fragment,s),c(fs.$$.fragment,s),c(Cs.$$.fragment,s),c(bs.$$.fragment,s),c($s.$$.fragment,s),c(ks.$$.fragment,s),c(zs.$$.fragment,s),c(As.$$.fragment,s),c(Zs.$$.fragment,s),c(Xs.$$.fragment,s),c(Ns.$$.fragment,s),c(Hs.$$.fragment,s),c(Ds.$$.fragment,s),we=!0)},o(s){o(w.$$.fragment,s),o(h.$$.fragment,s),o(C.$$.fragment,s),o(m.$$.fragment,s),o(b.$$.fragment,s),o(I.$$.fragment,s),o(z.$$.fragment,s),o(V.$$.fragment,s),o(Z.$$.fragment,s),o(X.$$.fragment,s),o(W.$$.fragment,s),o(D.$$.fragment,s),o(S.$$.fragment,s),o(L.$$.fragment,s),o(K.$$.fragment,s),o(ss.$$.fragment,s),o(es.$$.fragment,s),o(ns.$$.fragment,s),o(is.$$.fragment,s),o(Ms.$$.fragment,s),o(cs.$$.fragment,s),o(hs.$$.fragment,s),o(fs.$$.fragment,s),o(Cs.$$.fragment,s),o(bs.$$.fragment,s),o($s.$$.fragment,s),o(ks.$$.fragment,s),o(zs.$$.fragment,s),o(As.$$.fragment,s),o(Zs.$$.fragment,s),o(Xs.$$.fragment,s),o(Ns.$$.fragment,s),o(Hs.$$.fragment,s),o(Ds.$$.fragment,s),we=!1},d(s){s&&(e(U),e(u),e(Rs),e(Ss),e(Ps),e(f),e(Ls),e(g),e(Fs),e(d),e(Ks),e(Os),e(st),e(tt),e(Q),e(et),e($),e(lt),e(k),e(nt),e(at),e(_),e(pt),e(it),e(Mt),e(A),e(rt),e(B),e(Jt),e(yt),e(v),e(ct),e(ot),e(G),e(jt),e(N),e(Tt),e(xt),e(H),e(ut),e(E),e(mt),e(Ut),e(R),e(wt),e(Y),e(ht),e(q),e(ft),e(gt),e(P),e(dt),e(Ct),e(F),e(bt),e(Qt),e(O),e($t),e(kt),e(ts),e(It),e(_t),e(ls),e(zt),e(Vt),e(as),e(At),e(ps),e(Bt),e(Zt),e(vt),e(rs),e(Xt),e(Js),e(Gt),e(ys),e(Nt),e(Wt),e(os),e(Ht),e(js),e(Et),e(Ts),e(Dt),e(xs),e(Rt),e(us),e(Yt),e(ms),e(qt),e(Us),e(St),e(ws),e(Pt),e(Lt),e(Ft),e(gs),e(Kt),e(ds),e(Ot),e(se),e(te),e(Qs),e(ee),e(le),e(ne),e(Is),e(ae),e(_s),e(pe),e(ie),e(Vs),e(Me),e(re),e(Bs),e(Je),e(ye),e(vs),e(ce),e(oe),e(Gs),e(je),e(Te),e(Ws),e(xe),e(ue),e(Es),e(me),e(Ue),e(Ys)),e(x),j(w,s),j(h,s),j(C,s),j(m,s),j(b,s),j(I,s),j(z,s),j(V,s),j(Z,s),j(X,s),j(W,s),j(D,s),j(S,s),j(L,s),j(K,s),j(ss,s),j(es,s),j(ns,s),j(is,s),j(Ms,s),j(cs,s),j(hs,s),j(fs,s),j(Cs,s),j(bs,s),j($s,s),j(ks,s),j(zs,s),j(As,s),j(Zs,s),j(Xs,s),j(Ns,s),j(Hs,s),j(Ds,s)}}}const Il='{"title":"การเทรน tokenizer จาก tokenizer ที่มีอยู่แล้ว","local":"การเทรน-tokenizer-จาก-tokenizer-ทมอยแลว","sections":[{"title":"การสร้างคลังข้อมูล (Assembling a corpus)","local":"การสรางคลงขอมล-assembling-a-corpus","sections":[],"depth":2},{"title":"การเทรน tokenizer","local":"การเทรน-tokenizer","sections":[],"depth":2},{"title":"การบันทึก tokenizer","local":"การบนทก-tokenizer","sections":[],"depth":2}],"depth":1}';function _l(qs){return ml(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Gl extends wl{constructor(x){super(),hl(this,x,_l,kl,ul,{})}}export{Gl as component}; | |
Xet Storage Details
- Size:
- 65 kB
- Xet hash:
- 8dbb560b69978c3c8d0b0e7015c83f1f2824a569c368a7fbfdb14bb40bf99666
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.