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

un

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

ორი პრობლემა ტრენინგის ორივე ბოლოში

ადრეული ნაბიჯის პრობლემა: ახალი წონები ვერ იღებენ დიდ ნაბიჯებს

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


ANDREA-120M v1-მა დაუშვა ეს შეცდომა. არ იყო warmup. ნაბიჯ 1-ზე გამოიყენეს lr = 0.0003 ახლად ინიციალიზებულ წონებზე. შედეგი: მოდელი ცუდ პარამეტრების ბასინში მოხვდა რამდენიმე ასეული ნაბიჯის განმავლობაში. დანაკარგის მაჩვენებლები გონივრულად გამოიყურებოდა; ნიმუშებმა გამოიწვია განმეორებითი მარყუჟები 80K ნაბიჯზე და აღარ გამოსწორდა.


გვიანი ეტაპის პრობლემა: დიდი ნაბიჯები ვერ გააპრიალებს გადაწყვეტას

100K ნაბიჯისთვის მოდელმა უკვე ისწავლა უხეში სტრუქტურა. გრადიენტები ახლა ატარებენ წვრილმარცვლოვან სიგნალს: რომელი ტოკენის წონებს სჭირდება მცირე შეცვლა, რომელი ატენშენის თავი საჭიროებს მცირე გადაწყობას. ამ ეტაპზე პიკური სწავლის სიჩქარის გამოყენება ყველა წვრილ კორექტირებას გადააჭარბებს, რაც იწვევს ოსცილაციას ოპტიმუმის გარშემო დასახლების გარეშე.


ორი პრობლემა, ტრენინგის საპირისპირო ბოლოებზე. ერთი განრიგი, ორი რეგიონი: ნაზად აწევა და შეუფერხებლად დაღმავლობა.

წრფივი გახურება: პირველი 2000 ნაბიჯი

ფორმულა

ANDREA-120M v2 იყენებს წრფივ გახურებას 2000 ნაბიჯზე:


lr(t) = lr_scheduled(t) * min(1, (t + 1) / warmup_steps)


სადაც t არის ნაბიჯის ნომერი (0-დან დაწყებული), warmup_steps = 2000, და lr_scheduled(t) არის ის, რასაც კოსინუსის განრიგი დანიშნავდა, თუ გათბობას არ გავითვალისწინებდით.


ფორმულის წაკითხვა:


- t = 0-ზე: lr = lr_scheduled(0) min(1, 1/2000) = lr_scheduled(0) 0.0005. ძალიან პატარა პირველი ნაბიჯი.

- t = 1000-ზე: lr = lr_scheduled(1000) min(1, 1001/2000) = lr_scheduled(1000) 0.5. ნახევარი სიძლიერე. [BLOCK_TYPE CONTENT intro/warmup_explained]

- t = 2000-ზე: lr = lr_scheduled(2000) min(1, 2001/2000) = lr_scheduled(2000) 1.0. სრული სიძლიერე. [BLOCK_TYPE CONTENT intro/warmup_explained]

- t > 2000-ზე: clamp ინარჩუნებს მულტიპლიკატორს 1-ზე, warmup აღარ მოქმედებს, მხოლოდ cosine decay მუშაობს. [BLOCK_TYPE CONTENT intro/warmup_explained]

[BLOCK_TYPE CONTENT intro/warmup_explained]

ხაზოვანი ზრდა ნულიდან მოდელს 2000 ნაბიჯს აძლევს უხეში წარმოდგენების ფორმირებისთვის, სანამ AdamW და gradient clipping სრული სიძლიერის განახლებებს მიიღებენ. 2000-ე ნაბიჯისთვის წონები საკმარისად შეიცვალა, რომ პიკური lr აღარ გადაიყვანოს მათ ცუდ ბაზინში. [BLOCK_TYPE TITLE intro/warmup_question]

LR-ის გამოთვლა Warmup-ის დროს [BLOCK_TYPE QUESTION intro/warmup_question]

ANDREA-120M v2 იყენებს `lr_scheduled = 0.0003` (პიკი) და `warmup_steps = 2000`. Warmup-ის დროს cosine decay იგნორირებულია (ვვარაუდობთ, რომ `lr_scheduled` მუდმივია). გამოთვალეთ ფაქტობრივი სწავლის სიჩქარე: (ა) ნაბიჯი 0, (ბ) ნაბიჯი 500, (გ) ნაბიჯი 2000, (დ) ნაბიჯი 5000. აჩვენეთ თქვენი არითმეტიკა. [BLOCK_TYPE CONTENT intro/warmup_question]

კოსინუსური დაშლა warmup-ის შემდეგ

მრუდი

როდესაც warmup მთავრდება 2000-ე ნაბიჯზე, სწავლის სიჩქარე მიჰყვება კოსინუსურ მრუდს პიკიდან ნულამდე დარჩენილ ნაბიჯებზე:


lr(t) = lr_min + (lr_peak - lr_min) 0.5 (1 + cos(pi * progress))


სადაც progress = (t - warmup_steps) / (total_steps - warmup_steps). პროგრესის = 0 მნიშვნელობისას (გახურების შემდეგ), cos(0) = 1, lr = პიკი. პროგრესის = 1 მნიშვნელობისას (ბოლო ნაბიჯი), cos(pi) = -1, lr = lr_min (ჩვეულებრივ 0 ან მცირე მინიმუმი).


რატომ კოსინუსი და არა წრფივი ან ექსპონენციალური?

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


1. პლატო პიკთან ახლოს. გახურების შემდგომი ადრეული ნაბიჯები მაინც იღებენ თითქმის სრულ lr-ს, რაც მოდელს საშუალებას აძლევს გამოიყენოს მაღალი სწავლის სიჩქარის გრძელი მონაკვეთი წარმოდგენების ასაგებად.

2. გლუვი გადასვლა შუა ნაწილში. არ არის მკვეთრი ნახტომები, რომლებიც AdamW-მ უნდა შთანთქას.

3. ნულთან ახლოს პლატო. საბოლოო ნაბიჯებზე lr ძალიან მცირე ხდება დახვეწილი პოლირებისთვის, რაც მსგავსია სიმულირებული გაგრილების (simulated annealing).


ANDREA-120M სულ 200K ნაბიჯს ვარჯიშობს; ამედან 198K ნაბიჯი კოსინუსური დაშლის (cosine decay) რეგიონშია 2000-ნაბიჯიანი გახურების (warmup) შემდეგ.


LR Warmup & Cosine Decay

ANDREA-12M-ის თბილი გადატვირთვა 25K ნაბიჯზე

პლატო

ANDREA-12M ვარჯიშობდა 60K ნაბიჯს კოსინუსური დაშლით lr = 0.0004 პიკიდან. დაახლოებით 22K ნაბიჯზე დანაკარგი (loss) პლატოზე დადგა EMA ~2.4-ზე. კოსინუსურმა დაშლამ lr ~0.00015-მდე შეამცირა. ბანდიტი მრავალფეროვან მონაცემებს აწვდიდა; მოდელი შეწყვიტა გაუმჯობესება.


დიაგნოზი: lr ზედმეტად დაეცა და მოდელს ვერ მისცა საშუალება თავისი მიმდინარე აუზიდან გამოსულიყო. Hermes-ის მონაცემები აპირებდა სასწავლო პროგრამაში შესვლას (ნაბიჯი 25K), რაც 590K ახალ საუბარს მოიტანდა. მოდელს ესაჭიროებოდა ენერგია ამ მონაცემთა შოკის შესაწოვად.


გადატვირთვა

ნაბიჯზე 25K განრიგმა შეასრულა თბილი გადატვირთვა: lr გაზარდა 0.00015-დან (დაშლილი) 0.0004-მდე (თავდაპირველი პიკი), შემდეგ კი განაგრძო კოსინუსური დაშლა დარჩენილ ნაბიჯებზე.


Loshchilov & Hutter (2017) ამ ტექნიკას უწოდეს „SGDR“ (სტოქასტური გრადიენტული დაშვება თბილი გადატვირთვებით). ინტუიცია: მაღალი lr ანიჭებს საკმარის კინეტიკურ ენერგიას ლოკალური აუზიდან გასასვლელად და მეზობელი აუზების შესასწავლად; შემდგომი კოსინუსური დაშლა კვლავ ანეილებს უკეთეს აუზში.


Outcome. Loss EMA dropped from 2.40 to 2.10 over the next 10K steps after the restart. Model shipped at step 43.6K with SMMA loss 2.0, demonstrating coherent Q&A turn structure.


ANDREA-120M v2 chose NOT to use warm restarts: with 200K steps available & a much larger parameter count, smooth monotonic decay produced steadier convergence. Restart works best when training is short & a plateau coincides with a known data shift.

v1-ის წარუმატებლობის დიაგნოსტიკა

ANDREA-120M v1 იყენებდა `lr = 0.0003` 1-ლი ნაბიჯიდან, warmup-ის გარეშე. 80K ნაბიჯისთვის მოდელი აწარმოებდა `region region region region`. ახსენით მექანიკურად: გაიარეთ რა ხდება ახლად ინიციალიზებულ წონათა მატრიცასთან 1-დან 100-მდე ნაბიჯებში `lr = 0.0003` და 2000-ნაბიჯიანი warmup-ის პირობებში. რატომ მივყავართ no-warmup გზას ცუდ ბასინში?

განრიგის არჩევანი პრაქტიკაში

თუ თქვენ ვარჯიშობდით 120M მოდელს ხმაურიან მონაცემთა ნაკრებზე მხოლოდ 50K ნაბიჯის განმავლობაში, გამოიყენებდით უფრო გრძელ თუ უფრო მოკლე warmup-ს, ვიდრე ANDREA-120M v2-ის 2000 ნაბიჯი? დაასაბუთეთ ერთი მექანისტური არგუმენტით.

მიმდებარე აქტივობები

სამი და-ძმა დაკავშირებულია LR განრიგთან:


- აქტივობა 10: AdamW. Warmup იძლევა AdamW-ის bias correction-ის დროს სტაბილიზაციისთვის. Warmup-ის გარეშე, 10x გამრავლება 1-ელ საფეხურზე ამრავლებს ნებისმიერ ხმაურს, რომელსაც გრადიენტები ატარებენ; warmup-ით გამრავლება ხვდება რეალურ სიგნალს.

- აქტივობა 12: Gradient clipping. Clipping ზღუდავს გრადიენტის L2 ნორმას 1.0-ზე AdamW-მდე. Warmup ათავისუფლებს lr-ს; clipping ათავისუფლებს g-ს. ერთად ისინი უზრუნველყოფენ ადრეული საფეხურების უსაფრთხოებას, თუნდაც შოკისკენ მიდრეკილ სასწავლო პროგრამებზე.

- აქტივობა 22: Checkpointing. თბილი გადატვირთვა მოითხოვს ოპტიმიზატორის მდგომარეობის (m, v, საფეხურის მრიცხველი) ჩატვირთვას checkpoint-იდან, შემდეგ განრიგის შუა გაშვებისას შეცვლას. ANDREA-12M-ის გადატვირთვა 25K საფეხურზე ამას აჩვენებს; საჭირო გახდა ორი მცდელობა მდგომარეობის ჩატვირთვის ლოგიკის სწორად მუშაობისთვის.


განრიგი, ოპტიმიზატორი და clipping ქმნიან სტაბილურობის სამკუთხედს. თუ ერთი წვერო ჩამოაგდებთ, ANDREA გაიმეორებს თავის v1-ის კოლაფსს.