რას ჭამს ტოკენიზატორი, ის ხდება ის, რაც იცის
ტოკენიზატორის დიეტა: განმარტება
ჰარისის ტოკენიზატორი ვარჯიშობს კორპუსის ნიმუშზე. ის ატარებს დისტრიბუციულ ანალიზს ამ ნიმუშის მასშტაბით, ირჩევს N სეგმენტს, რომლებიც ყველაზე ძლიერად მეორდება, და წერს მათ ლექსიკაში. ვარჯიშის შემდეგ, ეს N სეგმენტი ხდება ფიქსირებული ალფაბეტი, რომელსაც ენის მოდელი იყენებს ყველაფრისთვის: ვარჯიშისთვის, ინფერენსისთვის, ყველა შეყვანისთვის, ყველა გამოყვანისთვის.
ტოკენიზატორის დიეტა = ტექსტის ნიმუში, რომელზეც ტოკენიზატორი ვარჯიშობს.
ტრენინგის დიეტა = კორპუსი, რომელზეც ენის მოდელი ვარჯიშობს.
როდესაც ორი დიეტა განსხვავდება, ტოკენიზატორი სწავლობს სეგმენტებს, რომლებიც მორგებულია ტექსტზე, რომელსაც მოდელი არასდროს ნახავს. ჩაშენების შესაძლებლობა (ერთი სლოტი თითო ვოკაბულარულ ჩანაწერზე) ხარჯდება სეგმენტებზე, რომლებიც ვარჯიშის დროს ჯილდოს არ იღებენ.
ANDREA-12M-ის შეცდომა
ANDREA-12M-მა თავისი Harris ტოკენიზატორი გააწვრთნა megachat-v8.txt-ის შეუმუშავებელ თავზე. ამ თავში იყო კოდის ნიმუშები და tool-call მონაცემები. თუმცა, ტრენინგის კურიკულუმმა გამოტოვა კოდი და tool call-ები; ANDREA-12M მხოლოდ საუბრის ტექსტს ხედავდა.
შედეგი: ტოკენიზატორმა ისწავლა სეგმენტები Python-ის საკვანძო სიტყვებიდან, JSON ფრჩხილებიდან, shell ფლაგებიდან. მოდელი გაწვრთნილია ლექსიკონის ჩანაწერებზე და დიალოგზე. მხოლოდ 36.4%-ი სეგმენტების გადაფარავდა კურიკულუმით შეწონილი ნიმუშს. დარჩენილი 63.6% ლექსიკის სლოტები გამოიყო სეგმენტებზე, რომლებსაც მოდელი არასდროს შეხებდა ტრენინგის დროს.
რატომ არის ეს მნიშვნელოვანი
თითოეული ლექსიკის ჩანაწერი მოიხმარს embedding პარამეტრებს: ერთი სტრიქონი embedding მატრიცის V × d_model ფორმისგან (განხილულია აქტივობა 4-ში). V = 4353 და d_model = 384-ის შემთხვევაში, ყოველი ლექსიკის სლოტი ღირს 384 ფლოუტს. 63.6%-ის ფლანგვა ნიშნავს embedding მატრიცის 63.6%-ის ფლანგვას მონაცემებზე, რომლებსაც მოდელი არასდროს ხედავს.
დააჯერე დიეტის წესი
რამდენად დიდი უნდა იყოს N
ვოკაბის მეცნიერების სკანირება
ANDREA-120M-მა ჩაატარა ვოკაბის მეცნიერების ექსპერიმენტი: გააწვრთნა Harris ტოკენიზატორები სხვადასხვა N მნიშვნელობებზე (მოთხოვნილი სეგმენტები) იმავე 1.25B-სიმბოლოან firehose კორპუსზე. გაზომე, რამდენ სეგმენტს პოულობს ტოკენიზატორი. გამოტოვე შედეგები.
| მოთხოვნილი N | ნამდვილი სეგმენტები, რომლებიც მოიძებნა | სტატუსი |
|---|---|---|
| 2,048 | 2,048 | არასაჯერებული (აირჩიეთ ზრდის ადგილი) |
| 4,096 | 4,096 | არასაჯერებული |
| 8,192 | 8,192 | საჯერებულობის წერტილი |
| 16,384 | 13,106 | კორპუსი ამოწურული |
რას ნიშნავს საჯერებულობა
მცირე N-ის შემთხვევაში, კორპუსში ბევრი განმეორებადი შაბლონია; ტოკენიზატორი ყველა სლოტს ავსებს, რასაც ითხოვს. დიდი N-ის შემთხვევაში, ტოკენიზატორი ეშვება სტატისტიკურად მნიშვნელოვანი საზღვრებისგან. 1.25B სიმბოლოების კორპუსი შეიცავს დაახლოებით 13,106 ხშირ მორფემის ფორმის სეგმენტს ფრეკვენციის ზღვარს მიღმა. 16,384-ის მოთხოვნა იძლევა 13,106-ს; დარჩენილი 3,278 სლოტი ივსება ან ცარიელი რჩება.
გაჯერება: წერტილი, სადაც მოთხოვნილი N = ნაპოვნი N. გაჯერების მიღმა, ტოკენიზატორი ვერ აღმოაჩენს მეტ სეგმენტს ხარისხის განზავების გარეშე (ფრეკვენციის ზღვრების შემცირება & ხმაურის მიღება).
ტკბილი წერტილი 8192-ზე
ANDREA-120M-მა აირჩია N = 8192. მოსაზრება:
- 8192-ის ქვემოთ (მაგ. 4096): ლექსიკონი არასაკმარისად იჭერს ხშირ მორფემებს; თანმიმდევრობები ფრაგმენტიზდება მეტი ტოკენებად; პროდუქტიულობა კლებულობს.
- 8192-ზე: ყველა სეგმენტის სლოტი კორპუსში რეალურ, ხშირად მიმეორებად პატერნს უკავშირდება.
- 8192-ზე მეტი: მცირდება შედეგიანობა; 13,106 < 16,384 ნიშნავს, რომ სლოტები ფუჭდება.
საბოლოო ANDREA-120M ლექსიკა: 256 + 8192 + 1 = 8449 ტოკენი. საშუალო კომპრესია: 5.91 UTF-8 ბაიტი თითო ტოკენზე, რაც ნიშნავს, რომ თითოეული ტოკენი ცვლის ~5.9 ბაიტს ნედლეული ტექსტის. ეს თანაფარდობა განსაზღვრავს მოდელის ეფექტურ კონტექსტს: 1024 ტოკენი × 5.91 ბაიტი/ტოკენზე, ANDREA-120M კითხულობს დაახლოებით 6,050 სიმბოლოს კონტექსტს თითო forward pass-ზე.
სატურაციის ზევით თუ ქვემოთ
საიდან მოდის 63.6%
ხარბი სლოტების თვლა
ANDREA-12M-ის ტოკენიზერი გაწვრთნილია შემოკლებულ megachat-v8.txt-ზე (მოთხოვნილია 4096 სეგმენტი, ნაპოვნია). გუმბათმა აიღო კურიკულუმით შეწონილი ქვესეგმენტი: კორპუსი, რომელიც შეწონილია იმით, თუ რამდენჯერ აიღო თითოეული წყარო ბანდიტის მიერ. მათ ხელახლა ჩაატარეს Harris-ის ანალიზი ამ შეწონილ ნიმუშზე და დაუსვეს კითხვა: თუ რამდენი ორიგინალური 4096 სეგმენტი რჩება კურიკულუმის შეწონის შემდეგ?
შედეგი: 36.4% გადაფარვა. 1,491 of 4,096 სეგმენტი შეწონილია კურიკულუმით. დარჩენილი 2,605 სეგმენტი მოდის წყაროებიდან, რომლებიც მოდელმა გამოკლო.
ლექსიკის ადგილების 63.6% მოდელმა არასდროს ნანახი ბაიტებისთვის გამოიყო.
Embedding Cost
თითოეული ლექსიკის ჩანაწერი იკავებს ერთ სტრიქონს embedding მატრიცაში ფორმით (V, d_model). ANDREA-12M-ისთვის:
- V = 4353 (256 + 4096 + 1)
- d_model = 384
- Embedding params = V × d_model = 4353 × 384 = 1,671,552 parameters
ამ პარამეტრების 63.6% არ გამოიყენებოდა საუბრის ტრენინგისთვის. 1,063,107 პარამეტრი გამოყოფილი, 0 ჯილდოს სიგნალი. ANDREA-12M გადარჩება იმიტომ, რომ 256 ბაზისური ბაიტი ყოველთვის ფარავს ნებისმიერ სიმბოლოს; მაგრამ პარამეტრზე სიმძლავრე მკვეთრად შემცირდა.
როგორ გამოასწორა ANDREA-120M ეს
ANDREA-120M-ის ტოკენიზერი გაწვრთნილია სრულ ფაირჰოუზზე (1.25B სიმბოლო, 21 წყარო) სატურაციის N = 8192-ზე. ტრენინგის კორპუსი = იგივე ფაირჰოუზი. დიეტური ალიგნმენტი: 100%. შედეგად გადაფარვა ჩატ-წონიან ნიმუშზე: 36.5%. (შენიშვნა: 36.5% არის გადაფარვა, არა დაფარვა; ჩატი მარტო სრული ფაირჰოუზის ქვემოდელს წარმოადგენს, ამიტომ ეს რიცხვი განსხვავებულად იქცევა 12M-ის 36.4%-დან.)
ეფექტური კომპრესია: 5.91 UTF-8 ბაიტი ტოკენზე. ANDREA-120M-ის ემბედინგის მატრიცა: 8449 × 768 = 6,488,832 პარამეტრი. ყველა პარამეტრი იღებს ჯილდოს სიგნალს იმიტომ, რომ ყველა სეგმენტი მიუთითებს ტექსტზე, რომელზეც მოდელი სინამდვილეში იწვრთნება.
დაფარვა საწინააღმდეგოდ გადაფარვა
რატომ არის მნიშვნელოვანი 5.91 ბაიტი ტოკენზე
რკალის კოეფიციენტი
საშუალო UTF-8 ბაიტი ტოკენზე ზომავს, თუ რამდენად რკალავს თითოეული ვოკაბულარის შეყვანა ნედლ ტექსტს. ANDREA-120M საშუალოდ 5.91-ს აჩვენებს. მოდელს, რომელსაც უფრო მოკლე ნაწილაკები აქვს (3 ბაიტი/ტოკენი), ნაკლები კონტექსტი კითხულობს ფორვარდ პასზე; მოდელს, რომელსაც უფრო გრძელი ნაწილაკები აქვს (8 ბაიტი/ტოკენი), მეტს კითხულობს მაგრამ უფრო ნელა იბრძოდება (თითოეული ნაწილაკის კარგად შესწავლა მეტ ნიმუშს საჭიროებს).
ეფექტური კონტექსტი
| რაოდენობა | მნიშვნელობა |
|---|---|
| ტოკენის კონტექსტის ფანჯარა | 1,024 ტოკენი |
| საშუალო ბაიტი ტოკენზე | 5.91 |
| ეფექტური სიმბოლოების კონტექსტი | 1024 × 5.91 ≈ 6,050 |
დაახლოებით 6,000 UTF-8 სიმბოლო ეტევა ერთ ANDREA-120M პირდაპირი გავლისას. მკვრივი ინგლისური პროზის გვერდი შეიცავს ~3,000-4,000 სიმბოლოს; ANDREA კითხულობს დაახლოებით ერთსა და ნახევარ გვერდს თითო გავლაზე.
დიეტა ასხამს კომპრესიას
კარგად მორგებული ტოკენიზატორი უკეთ კომპრიმირდება. როდესაც ტოკენიზატორი სწავლობს სეგმენტებს, რომლებიც მეორდება სწავლის კორპუსში, მეტი ტექსტი ეტევა თითო ტოკენზე. ANDREA-12M-ის არასწორად მორგებული ტოკენიზატორი უარეს კომპრიმირდებოდა ჩატზე (მეტი ბაიტი ხარჯდებოდა ბაიტ-ფოლბექ ფრაგმენტებზე, რადგან ჩატის სეგმენტები უფრო იშვიათი იყო ლექსიკაში). ANDREA-120M-ის დიეტით მორგებული ტოკენიზატორი ჩატის ფორმის ნაწილს ინარჩუნებს სწრაფ ბილიკზე და იშვიათ სკრიპტებს ბაიტ ფოლბეკზე.
აქტივობა 4 გრძელდება
აქტივობა 4 (grow_a_language_model_embeddings) მოიცავს იმას, რა ხდება ამ 8449 ლექსიკის ჩანაწერებთან: ისინი ხდება ემბედინგის მატრიცის სტრიქონები ფორმით V × d_model, შემდეგ ემატება შეხსენებული პოზიციის ემბედინგები, სანამ ჩაეტევა პირველ ტრანსფორმერის ბლოკში.