ბოლო რამდენიმე წლის განმავლობაში, დიდი ენობრივი მოდელების (LLMs) პროგრესი ძირითადად განპირობებული იყო მკვრივი ენობრივი მოდელების მასშტაბირებით. ადრეული მოდელებიდან, როგორიცაა ორიგინალი ULMFiT (~30 მილიონი პარამეტრი) ან GPT-2 (1.5 მილიარდი პარამეტრი, რომელიც იმ დროს „გამოსაქვეყნებლად ზედმეტად საშიშად“ ითვლებოდა 🧌), საბოლოოდ დღევანდელ ასობით მილიარდ პარამეტრიან სისტემებამდე, რეცეპტი მარტივი იყო: მეტი მონაცემი + მეტი პარამეტრი იძლევა უკეთეს წარმადობას. მასშტაბირების კანონებმა განამტკიცა ეს ტენდენცია, მაგრამ მკვრივ მასშტაბირებას პრაქტიკული ზღვარი აქვს: სწორედ აქ შემოდის სურათზე ექსპერტთა ნაზავი (MoE) მოდელები. თუ უკვე იცნობთ MoE-ებს და გსურთ პირდაპირ „ტრანსფორმერების“ (Transformers) ინჟინერულ ნაწილზე გადასვლა, შეგიძლიათ პირდაპირ გაეცნოთ განყოფილებას „ტრანსფორმერები და MoE-ები“. ექსპერტთა ნაზავი მოდელი ინარჩუნებს „ტრანსფორმერის“ ძირითად არქიტექტურას, მაგრამ ცვლის ზოგიერთ მკვრივ წინგადამცემ (feed-forward) ფენას ექსპერტების ნაკრებით. „ექსპერტი“ არ არის თემატურად სპეციალიზებული მოდული (მაგ. „მათემატიკის ექსპერტი“, „კოდის ექსპერტი“). ის უბრალოდ სასწავლო ქვექსელია. თითოეული ტოკენისთვის, როუტერი ირჩევს ექსპერტების მცირე ქვეჯგუფს მის დასამუშავებლად. სხვადასხვა ტოკენი ააქტიურებს სხვადასხვა ექსპერტს, მათი ფარული წარმოდგენების (hidden representations) საფუძველზე. მოდელის სიმძლავრე დამოკიდებულია მთლიან პარამეტრებზე, მაგრამ ინფერენციის სიჩქარე დამოკიდებულია აქტიურ პარამეტრებზე. ეს არის მთავარი იდეა. მაგალითად, ავიღოთ gpt-oss-20b. მას აქვს 21 მილიარდი საერთო პარამეტრი, მაგრამ იყენებს 4 აქტიურ ექსპერტს თითოეული ტოკენისთვის, სულ 32 ექსპერტიდან. გაზიარებული კომპონენტებისა და აქტიური ექსპერტების გათვალისწინებით, ეს მოდელი იყენებს დაახლოებით 3.6 მილიარდ აქტიურ პარამეტრს თითოეულ ტოკენზე. ამ მოდელის M3 Ultra Mac-ზე გაშვებისას, რომელსაც აქვს მეხსიერების გამტარუნარიანობა დაახლოებით 800 გბ, შეგვიძლია შევაფასოთ გენერაციის სიჩქარე, როგორც ~ 800 / (3.6 * 2) bfloat16-ში, სადაც თითოეული პარამეტრი იკავებს 2 ბაიტს. ეს იძლევა დაახლოებით 111 ტოკენს წამში. რეალური წარმადობა, რასაც ვიღებთ, არის ~115 ტოკენი/წმ, რაც ძალიან ახლოსაა ხელით გაანგარიშებასთან. ეს სუპერ სწრაფი სიჩქარე ადასტურებს, რომ მოდელი დაახლოებით 3.6 მილიარდი პარამეტრის მქონე მოდელის მსგავსად მუშაობს, მაგრამ მას აქვს იგივე სიმძლავრე (ან ხარისხი), რაც 21 მილიარდი პარამეტრის მქონე მოდელს. (შენიშვნა: სიჩქარე კიდევ უფრო სწრაფი იქნებოდა, თუ გამოვიყენებდით ბირთვებს (kernels) მშობლიური mxfp4 კვანტიზაციისთვის, რომელსაც მოდელი იყენებს). MoE-ები მიმზიდველია შემდეგი მიზეზების გამო: * **უკეთესი გამოთვლითი ეფექტურობა** – მოცემული ფიქსირებული FLOP ბიუჯეტის პირობებში, MoE-ები ხშირად აჭარბებენ მკვრივ ანალოგებს. ეს ნიშნავს უფრო სწრაფ იტერაციას და უკეთეს მასშტაბირების ეფექტურობას. * **ბუნებრივი პარალელიზაციის ღერძი** – ექსპერტები უზრუნველყოფენ სტრუქტურულ საზღვარს გამოთვლების გრაფაში. ვინაიდან სხვადასხვა ტოკენი სხვადასხვა ექსპერტს რთავს, შეგვიძლია პარალელიზაცია მოვახდინოთ ექსპერტებს შორის (ამას მოგვიანებით განვიხილავთ „ექსპერტთა პარალელიზმში“). * **ინდუსტრიის მიღება** – ბოლო რამდენიმე კვირის განმავლობაში ღია მოდელების MoE-ის მნიშვნელოვანი გამოშვებები მოიცავს Qwen 3.5-ს, MiniMax M2-ს, GLM-5-ს ან Kimi K2.5-ს. ტენდენცია დაჩქარდა DeepSeek R1-ის წარმატების შემდეგ 2025 წლის იანვარში, ადრინდელი სისტემების, როგორიცაა DeepSeek V2, საფუძველზე. კიდევ ერთი ადრეული MoE იყო Mixtral-8x7B, რომელიც გამოვიდა 2023 წლის დეკემბერში. დახურული ლაბორატორიებიც იყენებენ MoE-ებს. დიდი ხანია ვრცელდება ხმები, რომ ChatGPT იყენებს სპარსულ (sparse) არქიტექტურას, და ღია gpt-oss მოდელები ნამდვილად იყენებენ. თუ გსურთ მეტი გაიგოთ MoE-ების შესახებ ზოგადად, გირჩევთ წაიკითხოთ ეს ბლოგი და ნახოთ ჩვენი ბოლო YouTube ვიდეო მარშრუტიზაციის (routing) შესახებ. ეკოსისტემაში არსებული ხელსაწყოების უმეტესობა, მათ შორის მოდელის ჩატვირთვა, მოწყობილობის განთავსება, კვანტიზაცია და ბეკენდ-აღსრულება, თავდაპირველად შექმნილი იყო მკვრივი მოდელებისთვის. MoE-ები ამ ვარაუდებს ეჭვქვეშ აყენებენ. MoE-ების „ტრანსფორმერებში“ (Transformers) სრულფასოვან მოქალაქეებად ქცევა ნიშნავს ჩატვირთვის კონვეიერის (loading pipeline), აღსრულების მოდელის და განაწილებული აბსტრაქციების ნაწილების გადამუშავებას და არა უბრალოდ ახალი მოდელის კლასების დამატებას. ჩვენ ყურადღებას გავამახვილებთ იმაზე, თუ როგორ განვითარდა „ტრანსფორმერების“ ბიბლიოთეკა სპარსული (sparse) არქიტექტურების მხარდასაჭერად: `AutoModelForCausalLM.from_pretrained("model_id")` ჩამოტვირთავს და ტვირთავს მოდელის წონებს PyTorch მოდელში. მკვრივი მოდელებისთვის ჩატვირთვა შედარებით მარტივია, სადაც კონტროლური წერტილის (checkpoint) ყოველი ტენზორი ერთ-ერთ შესაბამის პარამეტრს ემთხვევა გაშვების დროის მოდულში. MoE-ებისთვის ეს უფრო რთულია. MoE-ის კონტროლური წერტილების უმეტესობაში, თითოეული ექსპერტი სერიალიზებულია დამოუკიდებლად. თითოეულ ექსპერტს აქვს საკუთარი წონის მატრიცების ნაკრები, არსებითად 256 (სულ 0-დან 255-მდე, DeepSeek-V3-ის მაგალითზე) მცირე წინგადამცემი ქსელი, რომლებიც ერთმანეთის გვერდით არის შენახული. თუმცა, გაშვების დროს, GPU-ები ოპტიმიზებულ ბირთვებს (kernels) ასრულებენ. თანამედროვე MoE ბირთვები, როგორიცაა დაჯგუფებული GEMM-ები (grouped GEMMs) და შერწყმული MoE იმპლემენტაციები, შექმნილია ყველა ექსპერტის ერთ ოპერაციაში დასამუშავებლად და არა თითო-თითო ციკლით. ამის ეფექტურად გასაკეთებლად, მათ სჭირდებათ ექსპერტების წონები, შეფუთული ერთ უწყვეტ ტენზორში. ასე რომ, გვაქვს შეუსაბამობა: ამ ხარვეზის სისტემატური აღმოფხვრა სწორედ წონების ჩატვირთვის რეფაქტორინგმა (weight loading refactor) შესაძლებელი გახადა. ზოგადი `WeightConverter`-ის შემოღებით, აზროვნების მოდელი შეიცვალა: ძველიდან: „კონტროლური წერტილი უკვე შეესაბამება ჩემს გაშვების დროის განლაგებას; ჩატვირთვა ძირითადად გასაღები-გასაღებით კოპირებაა.“ ახალზე: „კონტროლური წერტილი მხოლოდ ტენზორების სერიალიზებული წყაროა. ჩატვირთვა არის კონვერტაციის კონვეიერი, რომელიც მათ გარდაქმნის ჩვენთვის სასურველ გაშვების დროის განლაგებად.“ ამ რეფაქტორინგის მიერ შემოღებული ცენტრალური აბსტრაქცია არის წონების დინამიური ჩატვირთვა `WeightConverter`-ის მეშვეობით. `WeightConverter` საშუალებას გვაძლევს განვსაზღვროთ: პრიმიტიული ოპერაციები