გაძლიერებითი სწავლა ადამიანის უკუკავშირით (RLHF) ფაქტობრივად ბოლო სავარჯიშო ნაბიჯად იქცა დიდი ენობრივი მოდელებისთვის (LLM), როგორიცაა GPT-4 ან Claude, რათა უზრუნველყოფილი იყოს ენობრივი მოდელის გამომუშავებული შედეგების შესაბამისობა ადამიანურ მოლოდინებთან, მაგალითად, საუბრის უნართან ან უსაფრთხოების ფუნქციებთან მიმართებაში. თუმცა, მას RL-ის გარკვეული სირთულეები შემოაქვს NLP-ში: საჭიროა კარგი ჯილდოს ფუნქციის აგება, მოდელის გაწვრთნა მდგომარეობის ღირებულების შესაფასებლად და, ამავდროულად, სიფრთხილე, რათა ზედმეტად არ გადავუხვიოთ ორიგინალურ მოდელს და აზრიანი ტექსტის ნაცვლად უაზრობა არ მივიღოთ. ასეთი პროცესი საკმაოდ კომპლექსურია, მოიცავს მრავალ მოძრავ ნაწილს, სადაც ყველაფრის სწორად გაკეთება ყოველთვის ადვილი არ არის. რაფაილოვის, შარმას, მიტჩელის და სხვათა ბოლო ნაშრომი, „პირდაპირი უპირატესობის ოპტიმიზაცია“, გვთავაზობს არსებული მეთოდებით გამოყენებული RL-ზე დაფუძნებული ობიექტური ფუნქციის გადაქცევას ისეთ ობიექტურ ფუნქციად, რომლის ოპტიმიზაცია უშუალოდ მარტივი ბინარული კროს-ენტროპიის დანაკარგის საშუალებით შეიძლება, რაც LLM-ების დახვეწის პროცესს მნიშვნელოვნად ამარტივებს. ეს ბლოგ-პოსტი წარმოგიდგენთ პირდაპირი უპირატესობის ოპტიმიზაციის (DPO) მეთოდს, რომელიც უკვე ხელმისაწვდომია TRL ბიბლიოთეკაში და გვიჩვენებს, თუ როგორ შეიძლება Llama v2 7B-პარამეტრიანი მოდელის დახვეწა stack-exchange უპირატესობის მონაცემთა ნაკრებზე, რომელიც შეიცავს დარეიტინგებულ პასუხებს სხვადასხვა stack-exchange პორტალზე დასმულ შეკითხვებზე. RL-ის საშუალებით ადამიანის მიერ მიღებული უპირატესობების ოპტიმიზაციის ტრადიციულ მოდელში, გამოყენებული მეთოდი იყო დამხმარე ჯილდოს მოდელის გამოყენება და ინტერესის მოდელის დახვეწა ისე, რომ მან მაქსიმალურად გაზარდოს ეს მოცემული ჯილდო RL-ის მექანიზმების მეშვეობით. ინტუიციურად, ჩვენ ვიყენებთ ჯილდოს მოდელს, რათა მივაწოდოთ უკუკავშირი ოპტიმიზირებად მოდელს, რათა მან უფრო ხშირად გამოიმუშავოს მაღალი ჯილდოს ნიმუშები და ნაკლებად ხშირად დაბალი ჯილდოს ნიმუშები. ამავდროულად, ვიყენებთ გაყინულ საცნობარო მოდელს, რათა დავრწმუნდეთ, რომ გამომუშავებული შედეგი ზედმეტად არ გადაუხვევს და შეინარჩუნებს გენერაციის მრავალფეროვნებას. ეს, როგორც წესი, ხდება KL ჯარიმის დამატებით ჯილდოს მაქსიმიზაციის სრულ ობიექტურ ფუნქციასთან საცნობარო მოდელის მეშვეობით, რაც ხელს უშლის მოდელს, ისწავლოს ჯილდოს მოდელის მოტყუება ან ექსპლუატაცია. DPO-ის ფორმულირება გვერდს უვლის ჯილდოს მოდელირების ნაბიჯს და პირდაპირ ახდენს ენობრივი მოდელის ოპტიმიზაციას უპირატესობის მონაცემებზე, ძირითადი იდეის მეშვეობით: ეს არის ანალიტიკური ასახვა ჯილდოს ფუნქციიდან ოპტიმალურ RL პოლიტიკაზე, რაც ავტორებს საშუალებას აძლევს, RL დანაკარგი ჯილდოსა და საცნობარო მოდელებზე პირდაპირ გარდაქმნან დანაკარგად მხოლოდ საცნობარო მოდელზე! ეს ასახვა ინტუიციურად ზომავს, რამდენად კარგად შეესაბამება მოცემული ჯილდოს ფუნქცია მოცემულ უპირატესობის მონაცემებს. ამრიგად, DPO იწყება RLHF დანაკარგის ოპტიმალური გადაწყვეტით და ცვლადების შეცვლის გზით გამოჰყავს დანაკარგი მხოლოდ საცნობარო მოდელზე! ამგვარად, ამ პირდაპირი ალბათობის ობიექტური ფუნქციის ოპტიმიზაცია შესაძლებელია ჯილდოს მოდელის საჭიროების გარეშე ან პოტენციურად რთული RL-ზე დაფუძნებული ოპტიმიზაციის შესრულების გარეშე. როგორც აღინიშნა, როგორც წესი, RLHF კონვეიერი შედგება ამ განცალკევებული ნაწილებისგან: TRL ბიბლიოთეკა გთავაზობთ დამხმარეს ამ ყველა ნაწილისთვის, თუმცა DPO ვარჯიში გამორიცხავს ჯილდოს მოდელირების და RL-ის ამოცანებს (ნაბიჯები 3 და 4) და პირდაპირ ახდენს DPO ობიექტის ოპტიმიზაციას უპირატესობის აღნიშნულ მონაცემებზე. ამ თვალსაზრისით, ჩვენ მაინც დაგვჭირდება ნაბიჯი 1-ის შესრულება, მაგრამ ნაბიჯების 3 და 4 ნაცვლად, TRL-ში DPOTrainer-ს უნდა მივაწოდოთ უპირატესობის მონაცემები ნაბიჯი 2-დან, რომელსაც აქვს ძალიან სპეციფიკური ფორმატი, კერძოდ, ლექსიკონი შემდეგი სამი გასაღებით: მაგალითად, stack-exchange უპირატესობის წყვილების მონაცემთა ნაკრებისთვის, შეგვიძლია მონაცემთა ნაკრების ჩანაწერები დავამუშავოთ სასურველი ლექსიკონის დასაბრუნებლად შემდეგი დამხმარის საშუალებით და წავშალოთ ყველა ორიგინალური სვეტი: მონაცემთა ნაკრების დახარისხების შემდეგ, DPO დანაკარგი არსებითად ზედამხედველობითი დანაკარგია, რომელიც იღებს იმპლიციტურ ჯილდოს საცნობარო მოდელის მეშვეობით და, მაღალ დონეზე, DPOTrainer მოითხოვს საბაზისო მოდელს, რომლის ოპტიმიზაციაც გვსურს, ასევე საცნობარო მოდელს: სადაც ბეტა ჰიპერპარამეტრი არის ტემპერატურის პარამეტრი DPO დანაკარგისთვის, როგორც წესი 0.1-დან 0.5-მდე დიაპაზონში. ეს აკონტროლებს, თუ რამდენად დიდ ყურადღებას ვაქცევთ საცნობარო მოდელს იმ გაგებით, რომ რაც უფრო მცირდება ბეტა, მით უფრო მეტად ვაიგნორებთ საცნობარო მოდელს. ტრეინერის ინიციალიზაციის შემდეგ, შეგვიძლია მისი გაწვრთნა მონაცემთა ნაკრებზე მოცემული training_args-ის გამოყენებით, უბრალოდ გამოძახებით: TRL-ში DPO ტრეინერის იმპლემენტაციის უპირატესობა ის არის, რომ შესაძლებელია დიდი LLM-ების ვარჯიშისთვის განკუთვნილი ყველა დამატებითი ფუნქციონალის გამოყენება, რომელიც მოყვება TRL-ს და მის დამოკიდებულ ბიბლიოთეკებს, როგორიცაა Peft და Accelerate. ამ ბიბლიოთეკების საშუალებით ჩვენ შეგვიძლია Llama v2 მოდელის გაწვრთნაც კი bitsandbytes ბიბლიოთეკის მიერ მოწოდებული QLoRA ტექნიკის გამოყენებით. ზემოთ აღწერილი პროცესი მოიცავს ზედამხედველობითი დახვეწის ეტაპს QLoRA-ის გამოყენებით 7B Llama v2 მოდელზე მონაცემთა SFT გაყოფაზე TRL-ის SFTTrainer-ის მეშვეობით: SFT-ის დასრულების შემდეგ, შეგვიძლია შევინახოთ მიღებული მოდელი და გადავიდეთ DPO ვარჯიშზე. როგორც წესი კეთდება, ჩვენ გამოვიყენებთ შენახულ მოდელს წინა SFT ეტაპიდან როგორც საბაზისო მოდელისთვის, ასევე DPO-ის საცნობარო მოდელისთვის. შემდეგ შეგვიძლია მათი გამოყენება მოდელის გასაწვრთნელად DPO ობიექტური ფუნქციით ზემოთ ნაჩვენებ stack-exchange უპირატესობის მონაცემებზე. ვინაიდან მოდელები გაწვრთნილი იყო LoRa ადაპტ