უკვე ორი კვირაა, რაც მიმდინარეობს Open R1 პროექტი, რომლის მიზანია DeepSeek R1-ის დაკარგული კომპონენტების – კერძოდ, საწვრთნელი პაიპლაინისა და სინთეზური მონაცემების – რეკონსტრუქცია. ამ პოსტში მოხარულნი ვართ გაგიზიაროთ OpenR1-Math-220k-ის შექმნა: ჩვენი პირველი ფართომასშტაბიანი მონაცემთა ნაკრები მათემატიკური მსჯელობისთვის! ასევე გადავხედავთ საზოგადოების მხრიდან საინტერესო სიახლეებს, რომლებიც მიმართულია მცირე, მაღალი ხარისხის მონაცემთა ნაკრებების შეგროვებისკენ ზუსტი დახვეწისთვის (fine-tuning), და მივიღებთ ინფორმაციას, თუ როგორ გავაკონტროლოთ აზროვნების ჯაჭვის (chain-of-thought) სიგრძე მსჯელობის მოდელებიდან როგორც წვრთნის, ისე დასკვნის გამოტანის ეტაპზე. მოდით, დავიწყოთ! DeepSeek R1-ის ერთ-ერთი მთავარი უპირატესობაა მისი უნარი, მოახდინოს გაუმჯობესებული მსჯელობის შესაძლებლობების გადატანა მცირე მოდელებზე დისტილაციის გზით. DeepSeek-ის გუნდმა ეს აჩვენა 600 ათასი მსჯელობის კვალის (reasoning traces) გენერირებით და Qwen-ისა და Llama-ს მოდელების სერიის ზუსტი დახვეწით, რაც ადასტურებს, რომ R1-დან პირდაპირ დისტილაციას შეუძლია კონკურენტული მსჯელობის მიღწევა გაძლიერებითი სწავლის (reinforcement learning) გარეშე. აღსანიშნავია, რომ DeepSeek-R1-Distill-Qwen-7B-მა AIME 2024-ზე 55.5% შედეგი აჩვენა, რითაც აჯობა უფრო დიდ მოდელებს, როგორიცაა QwQ-32B-Preview. თუმცა, დისტილაციისთვის გამოყენებული მსჯელობის კვალი საჯაროდ არ გამოქვეყნებულა, რამაც საზოგადოებას აიძულა, დამოუკიდებლად შეექმნა მსგავსი მონაცემთა ნაკრებები. ამ დროისთვის, საზოგადოებამ გამოაქვეყნა მრავალი ღია მონაცემთა ნაკრები, მათ შორის OpenThoughts-114k, Bespoke-Stratos-17k, Dolphin-R1 და LIMO. 🐳 წარმოგიდგენთ OpenR1-Math-220k-ს, ფართომასშტაბიან მათემატიკური მსჯელობის მონაცემთა ნაკრებს, რომელიც ლოკალურად გენერირდა 512 H100 GPU-ზე, თითოეულ პრობლემაზე მრავალი პასუხით. OpenR1-Math-220k-ის შესაქმნელად, ჩვენ ვითანამშრომლეთ Numina-სთან, რომელმაც შეიმუშავა თავისი პოპულარული NuminaMath-CoT მონაცემთა ნაკრების სრულიად ახალი ვერსია. რა არის ახალი OpenR1 მონაცემთა ნაკრებში არსებულ მონაცემთა ნაკრებებთან შედარებით: მაშტაბირებადი, მაღალი ხარისხის მსჯელობის მონაცემთა გენერაციის დემონსტრირებით, ვიმედოვნებთ, რომ ეს პაიპლაინი შეიძლება გაფართოვდეს მათემატიკის მიღმა ისეთ სფეროებზე, როგორიცაა კოდის გენერაცია. OpenR1-220k-ის შესაქმნელად, ჩვენ DeepSeek R1-ს მივეცით დავალება, რომ გენერირებინა ამონახსნები NuminaMath 1.5-ის 400 ათასი პრობლემისთვის. ჩვენ მივყვებით მოდელის ბარათზე (model card) რეკომენდებულ პარამეტრებს და მომხმარებლის მოთხოვნას (user prompt) ვუძღვით შემდეგ ინსტრუქციას: "გთხოვთ, იმსჯელეთ ნაბიჯ-ნაბიჯ და საბოლოო პასუხი ჩასვით \boxed{} ფრჩხილებში." ჩვენ დავაყენეთ 16 ათასი ტოკენის ლიმიტი ყოველ გენერაციაზე, რადგან ჩვენმა ანალიზმა აჩვენა, რომ პრობლემების მხოლოდ 75% შეიძლება გადაჭრილიყო 8 ათას ტოკენზე ნაკლებში, ხოლო დარჩენილი პრობლემების უმეტესობას სჭირდებოდა სრული 16 ათასი ტოკენი. თავდაპირველად, დასკვნის გამოტანისთვის (inference) ვიყენებდით vLLM-ს, რითაც მივაღწიეთ 15 გენერაციას საათში თითო H100-ზე, და ჩვენი გენერაციის სკრიპტები გაზიარებული გვაქვს წინა განახლებებში და OpenR1 რეპოზიტორიუმში. ცოტა ხნის წინ, დავიწყეთ ექსპერიმენტები SGLang-თან და შევძელით 25 ამონახსნის გენერირება საათში თითო H100-ზე (თითქმის 2-ჯერადი დაჩქარება!), რამაც საშუალება მოგვცა დღეში 300 ათასი პრობლემის ამონახსნი გენერირებულიყო 512 H100-ზე. ამან საშუალება მოგვცა რამდენიმე დღეში 800 ათასი მსჯელობის კვალი შეგვექმნა. ჩვენ ვგენერირებთ ორ ამონახსნს თითო პრობლემაზე – ზოგიერთ შემთხვევაში კი ოთხს – რათა უზრუნველვყოთ მოქნილობა ფილტრაციასა და წვრთნაში. ეს მიდგომა იძლევა უარყოფის შერჩევის (rejection sampling) საშუალებას, DeepSeek R1-ის მეთოდოლოგიის მსგავსად, და ასევე ხდის მონაცემთა ნაკრებს შესაფერისს უპირატესობის ოპტიმიზაციის მეთოდებისთვის, როგორიცაა DPO. მონაცემთა გენერაციის სკრიპტები ხელმისაწვდომია აქ: https://github.com/huggingface/open-r1/tree/main/slurm გაუფილტრავი მონაცემთა ნაკრები ხელმისაწვდომია აქ: https://huggingface.co/datasets/open-r1/OpenR1-Math-Raw. მხოლოდ მაღალი ხარისხის, სწორი მსჯელობის კვალის შესანარჩუნებლად, ჩვენ ვიყენებთ Math Verify-ს, მათემატიკური გამოსახულების შეფასების მძლავრ სისტემას, რომელიც შექმნილია LLM-ის მიერ გენერირებული პასუხების შესაფასებლად. ჩვენ ამოგვაქვს საბოლოო პასუხები მოდელის გენერაციებიდან და ვადარებთ მათ მონაცემთა ნაკრებში არსებულ „ნამდვილ“ პასუხებს (ground truth answers). აღმოვაჩინეთ, რომ პრობლემების 55%-ს აქვს მინიმუმ ერთი სწორი პასუხი. თუმცა, NuminaMath 1.5-ში ზოგიერთი ნამდვილი პასუხი ცარიელი იყო ან არ იყო გადამოწმებად ფორმატში, რაც ავტომატურ ვალიდაციას ართულებდა. მიუხედავად იმისა, რომ ჩვენ გავაუმჯობესეთ Math-Verify, რათა უფრო ზუსტად გაუმკლავდეს ამ უჩვეულო გამომავალ ფორმატებს (იხ. Math-Verify-ის გაუმჯობესებები ქვემოთ), ასევე გამოვიკვლიეთ ალტერნატიული მეთოდი უარყოფილი ნიმუშებიდან სწორი ამონახსნების აღსადგენად: Llama-3.3-70B-Instruct-ის გამოყენება მსაჯულად უარყოფილი პრობლემების ქვეჯგუფზე. ამ ვალიდაციის ნაბიჯის გაშვებამდე, ჩვენ ვფილტრავთ არასრულ ან ცარიელი ნამდვილი პასუხის შემცველ ნიმუშებს, რითაც ვუზრუნველყოფთ მხოლოდ კარგად ფორმირებული პასუხების განხილვას მკაფიოდ შეფუთული საბოლოო პასუხით. ამ პროცესით წარმატებით აღდგა 28,000 ადრე უარყოფილი პრობლემა. ჩვენ Llama3.3-70B-Instruct-ს ვაძლევთ შემდეგ მოთხოვნას: წესებზე დაფუძნებული ვალიდაციის (Math Verify) LLM-ზე დაფუძნებულ შეფასებასთან კომბინაციით, ჩვენ ვზრდით მონაცემთა ნაკრების ხარისხს მასშტაბის შენარჩუნებით. საბოლოო მონაცემთა ნაკრები შედგება 220 ათასი პრობლემისგან დამოწმებული მსჯელობის კვალით, რაც მას ღირებულ რესურსად აქცევს მსჯელობის მოდელების წვრთნისთვის. თითოეულ პრობლემაზე მრავალი ამონახსნის მიწოდება საზოგადოებას აძლევს მოქნილობას, გაფილტროს უკეთესი გენერაციები და გამოიყენოს უფრო მიზნობრივი დახვეწები NuminaMath მონაცემთა წყაროებისა და პრობლემების ტიპების მიხედვით. მონაცემთა ნაკრები ხელმისაწვდომია ორ ნაწილად: რიგებისთვის, მრავალი სწორი პასუხით, ჩვენ ასევე ვცადეთ Reward Model (RM) გამოყენება, როგორც საბოლოო ფილტრი საუკეთესოს შესარჩევად.