English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

სტუმარი
1 / ?
უკან გაკვეთილებზე

ემბედინგი არის საძებნელი ცხრილი, არა ფუნქცია

ტოკენაიზერის შემდგომი პირველი ფენა

ტოკენაიზერი მოდელს გადასცემს მთელ რიცხვებს: [256, 1842, 7301, ...]. ტრანსფორმერის პირველი მოქმედება: თითოეული ID-ის გადაქცევა d_model რიცხვების ვექტორად. ეს ვექტორი მდებარეობს d_model-განზომილებიან სივრცეში (768 განზომილება ANDREA-120M-ისთვის).


ემბედინგის ფენა არის საძებნელი ცხრილი, არა ფუნქცია. წარმოიდგინეთ უზარმაზარი მატრიცა:


ფორმა: (V, d_model)
მწკრივი 0:    [e_0_0, e_0_1, ..., e_0_767]
მწკრივი 1:    [e_1_0, e_1_1, ..., e_1_767]
...
მწკრივი 8448: [e_8448_0, e_8448_1, ..., e_8448_767]

Token ID i ირჩევს მწკრივს i. პირდაპირი მასივის წვდომა. არანაირი არითმეტიკა, არანაირი აქტივაცია. უბრალოდ ინდექსი.


Token & position embedding flow


Trainable Floats

ამ ცხრილის ყველა ჩანაწერი იწყება პატარა შემთხვევითი float-ით (ჩვეულებრივ ნორმალური განაწილებიდან, რომელიც მასშტაბირებულია 1/sqrt(d_model)-ით). Backpropagation განაახლებს თითოეულ მწკრივს, როდესაც მისი token ID გამოჩნდება batch-ში. ტრენინგის შემდეგ მსგავსი ტოკენები (cat, dog, pet) იღებენ მსგავს ვექტორებს; არამსგავსი ტოკენები (cat, Tuesday, xylophone) მდებარეობენ შორს ერთმანეთისგან ვექტორულ სივრცეში.


ANDREA-120M Token Embedding Cost


რაოდენობამნიშვნელობა
V8,449
d_model768
პარამეტრები6,488,832

ტოკენების ჩაშენების ცხრილში დაახლოებით 6.5 მილიონი პარამეტრია, რაც ANDREA-120M-ის მთლიანი რაოდენობის დაახლოებით 5.4%-ია. თითოეული ლექსიკონის სლოტი ამ 768 მცურავ წერტილს იღებს.

ჩაშენების ცხრილების ზომის განსაზღვრა

გამოთვალეთ ტოკენების ჩაშენების პარამეტრების რაოდენობა ორი მომავალი ვარიანტისთვის. (a) ANDREA-480M: V = 16,641 (16,384-სეგმენტიანი ტოკენაიზერი პლუს 256 ბაიტი პლუს 1 BOS), d_model = 1536. (b) ANDREA-12M: V = 4,353, d_model = 384. აჩვენეთ V × d_model არითმეტიკა თითოეული ვარიანტისთვის.

წერტილოვანი ნამრავლები ზომავს მსგავსებას

ვექტორები როგორც ისრები

768-განზომილებიანი ვექტორი ცხოვრობს სივრცეში, რომელსაც ადამიანები ვერ წარმოიდგენენ, მაგრამ იგივე ალგებრა მოქმედებს ნებისმიერ განზომილებაში. ტრანსფორმერებისთვის მნიშვნელოვანია ორი ძირითადი ოპერაცია:


სიდიდე (ისრის სიგრძე):


||v|| = sqrt(v_0² + v_1² + ... + v_767²)

წერტილოვანი ნამრავლი (ორ ისარს შორის განლაგება):


u · v = u_0 × v_0 + u_1 × v_1 + ... + u_767 × v_767

რას გვეუბნება წერტილოვანი ნამრავლი

ნებისმიერ განზომილებაში მოქმედი ორი ფაქტი:


- u · v = ||u|| × ||v|| × cos(theta), სადაც theta არის კუთხე მათ შორის.

- ერთი მიმართულებით მიმართული ვექტორები იძლევიან დიდ დადებით სკალარულ ნამრავლებს.

- საპირისპირო მიმართულებით მიმართული ვექტორები იძლევიან დიდ უარყოფით სკალარულ ნამრავლებს.

- მართი კუთხით მდებარე ვექტორები იძლევიან ნულოვან სკალარულ ნამრავლს.


სკალარული ნამრავლი = არანორმალიზებული მსგავსება. ორი გაწვრთნილი ტოკენის ემბედინგი cat და dog იღებენ მაღალ სკალარულ ნამრავლს, რადგან უკანა გავრცელებამ ისინი ერთმანეთთან დაახლოვა (ორივე პროგნოზირებს შინაური ცხოველებისთვის დამახასიათებელ კონტექსტებს). cat და Tuesday თითქმის ორთოგონალური ხდება, რადგან ისინი სხვადასხვა კონტექსტებს პროგნოზირებენ.


რატომ აინტერესებს ტრანსფორმერს

აქტივობა 5 (grow_a_language_model_attention) აგებს ყურადღებას წერტილოვანი ნამრავლებიდან: მოთხოვნის ვექტორის წერტილოვანი ნამრავლი საკვანძო ვექტორებთან იძლევა ქულებს, რომლებიც მიუთითებენ, თუ რომელი წინა ტოკენებია მნიშვნელოვანი შემდეგი ტოკენის პროგნოზირებისთვის. ჩაშენებები და წერტილოვანი ნამრავლები ერთად ატარებენ ყველა ურთიერთქმედებას ტრანსფორმერის შიგნით.

მსგავსების პროგნოზირება

ტრენინგის შემდეგ ANDREA-120M-ის ჩაშენება `believ`-ისთვის (ტოკენის მწკრივი 4287, ჰიპოთეტური) დაახლოებით გასწორებულია `know`, `understand`, `learn`-თან. ზუსტი მნიშვნელობების გამოთვლის გარეშე, დაალაგეთ წერტილოვანი ნამრავლები დიდიდან პატარამდე: `believ · know`, `believ · stone`, `believ · understand`. დაასაბუთეთ თქვენი დალაგება ერთი ფრაზით თითოეული წყვილისთვის.

ANDREA იყენებს ნასწავლ პოზიციურ ჩაშენებებს

პრობლემა

ტოკენის ჩაშენება მოდელს ეუბნება, თუ რა სიტყვაა ამ პოზიციაზე. ის არ ეუბნება მოდელს, სად მდებარეობს ეს სიტყვა. პოზიციური ინფორმაციის გარეშე ტრანსფორმერი the cat sat on a mat და mat a on sat cat the იდენტურად აღიქვამს: ერთი და იგივე ტოკენების ნაკრები, თანმიმდევრობის სიგნალის გარეშე.


ტრანსფორმერის ლიტერატურაში სამი გამოსავალი არსებობს:


სინუსოიდური (Vaswani 2017). ფიქსირებული მათემატიკური ფორმულა, რომელიც დაფუძნებულია სინუსებსა და კოსინუსებზე. პოზიცია 0 იღებს კონკრეტულ 768-ვექტორს; პოზიცია 1 იღებს სხვას; არასოდეს ვარჯიშდება, არასოდეს განახლდება. ფორმულის მეშვეობით განზოგადდება ნებისმიერ პოზიციაზე.


RoPE (Rotary Position Embedding). მბრუნავს query და key ვექტორებს პოზიციის მიხედვით. გამოიყენება LLaMA-სა და Qwen-ში. არ საჭიროებს დამატებით პარამეტრებს; როტაცია ჩაშენებულია attention-ში.


Learned. ცალკე embedding ცხრილი ფორმით (T, d_model), სადაც T არის კონტექსტის სიგრძე. თითოეული მწკრივი ვარჯიშდება backpropagation-ით, ისევე როგორც token embeddings.


ANDREA-ს არჩევანი: Learned

ANDREA იღებს learned-position მიდგომას microGPT-სგან, რომელიც მემკვიდრეობით მიიღო nanoGPT-სგან, რომელიც მემკვიდრეობით მიიღო GPT-2-სგან. მსჯელობა:


- სიმარტივე. ყურადღების მექანიზმში არანაირი სპეციალური მათემატიკა არ არის საჭირო. პოზიციის ცხრილი იგივეა, რაც ტოკენის ცხრილი.

- თავსებადობა custom CUDA-სთან. ANDREA-ის microgpt_cuda.cu ძრავა ორივე embedding-ის მოძებნას ერთნაირად ამუშავებს; sin/cos ბირთვები არ არის საჭირო.

- საკმარისია ფიქსირებული კონტექსტისთვის. ANDREA T-ს 1024-ზე ზღუდავს. სწავლებადი ცხრილი კარგად მუშაობს ფიქსირებული სიგრძის თანმიმდევრობებისთვის.


ANDREA-120M პოზიციის embedding-ის ღირებულება


რაოდენობამნიშვნელობა
T (კონტექსტი)1,024
d_model768
პარამეტრები786,432

0.79M პარამეტრი პოზიციისთვის. ტოკენების ემბედინგებთან ერთად: 6.49M + 0.79M = სულ 7.27M ემბედინგის პარამეტრი ANDREA-120M-ისთვის.


როგორ ერწყმიან ისინი

თითოეულ პოზიციაზე t შეყვანის თანმიმდევრობაში:


x_t = token_embedding[token_id_t] + position_embedding[t]

ორი 768-ვექტორი, ელემენტურად შეკრებილი. შედეგი, x_t, გადადის პირველ ტრანსფორმერ ბლოკში. მოდელი მათ აღარ გამოყოფს; ის სწავლობს კომბინირებული სიგნალის გამოყენებას.

სწავლებადი vs სინუსოიდური

შეადარეთ პოზიციის ჩაშენების ორი სტრატეგია ჰიპოთეტური ANDREA მოდელისთვის. სტრატეგია A: სწავლებადი, T = 1024. სტრატეგია B: სინუსოიდური, T თვითნებური (მუშაობს ნებისმიერი თანმიმდევრობის სიგრძისთვის). დაასახელეთ თითო უპირატესობა თითოეული მათგანისთვის. შემდეგ მიუთითეთ, რომელს ირჩევს ANDREA და ერთი მიზეზი CUDA / ინჟინერიის კუთხით.

სად მდებარეობს Embedding-ის პარამეტრები

სრული ANDREA-120M Embedding Layer


კომპონენტიფორმაპარამეტრები
ტოკენების ემბედინგების ცხრილი8,449 × 7686,488,832
პოზიციის ემბედინგების ცხრილი1,024 × 768786,432
სულ7,275,264

დაახლოებით 7.3 მილიონი პარამეტრი. ANDREA-120M-ის საერთო პარამეტრების რაოდენობა: ~120 მილიონი. მხოლოდ ემბედინგების ფენა: 6%. დარჩენილი 94% მდებარეობს ტრანსფორმერის ბლოკებში (attention + MLP, განხილულია 5-7 აქტივობებში).


დაუკავშირებელი vs დაკავშირებული ემბედინგები

ბევრი ტრანსფორმერის დიზაინი (მათ შორის GPT-2) აკავშირებს ტოკენის ემბედინგს საბოლოო გამომავალ პროექციასთან: ერთი და იგივე V × d_model მატრიცა გამოიყენება შეყვანისას და გამომავალზე (ლოგიტები ლექსიკონზე). დაკავშირება ზოგავს V × d_model პარამეტრებს და ხშირად აუმჯობესებს ხარისხს.


ANDREA იყენებს დაუკავშირებელ ემბედინგებს: შეყვანის ემბედინგი და გამომავალი პროექცია ვარჯიშდება ცალკე მატრიცებად. აქტივობა 7 (grow_a_language_model_transformer_block) მოიცავს საბოლოო ფენას.


წინსვლის გავლა ამ დრომდე

შეყვანა: ტოკენის ID-ები [256, 1842, 7301, ...] (მათგან 1024). თითოეული ID იძებნება 768-ვექტორად. თითოეული პოზიცია იძებნება 768-ვექტორად. ელემენტურად ჯამდება. შედეგი: (1024, 768) მატრიცა x ტოკენისა და პოზიციის ვექტორებით. x გადადის ტრანსფორმერის ბლოკ 1-ში.


აქტივობა 5 (grow_a_language_model_attention) მოიცავს იმას, რასაც ბლოკი 1 აკეთებს: მასშტაბირებული წერტილოვანი პროდუქტის ყურადღება კაუზალური ნიღბით და softmax-ით.

ჩასმის სტრუქტურის პროგნოზირება

დაფიქრდი: ANDREA-120M-ს აქვს 8449 ტოკენის ჩასმა და 1024 პოზიციის ჩასმა, რომლებიც იზიარებენ ერთსა და იმავე 768-განზომილებიან სივრცეს. ვარჯიშის შემდეგ რას ელოდები: (ა) ტოკენის ჩასმის მატრიცას (კლასტერული ნიმუშები?) თუ (ბ) პოზიციის ჩასმის მატრიცას (გლუვი გრადიენტი?). აირჩიე ერთი და იწინასწარმეტყველე ერთ ან ორ წინადადებაში. არ არსებობს არასწორი პასუხი; მსჯელობა მნიშვნელოვანია.