მოხარული ვართ წარმოგიდგინოთ RLOO (REINFORCE Leave One-Out) ტრენერი TRL-ში. PPO-ს ალტერნატივად, RLOO არის გაძლიერებითი სწავლების ადამიანის უკუკავშირით (RLHF) ვარჯიშის ახალი ონლაინ ალგორითმი, რომელიც შექმნილია იმისთვის, რომ იყოს უფრო ხელმისაწვდომი და მარტივი იმპლემენტაციისთვის. კერძოდ, RLOO მოითხოვს ნაკლებ GPU მეხსიერებას და საჭიროებს ნაკლებ დროს კონვერგენციისთვის. როგორც ქვემოთ მოცემულ ფიგურებშია ნაჩვენები: RLOO-ს მეშვეობით, ჩვენ ვაბრუნებთ გაძლიერებით სწავლებას RLHF-ში, რაც საზოგადოებას საშუალებას აძლევს უფრო მარტივად შეისწავლოს ონლაინ გაძლიერებითი სწავლების (RL) მეთოდები. ეს ამაღელვებელია, რადგან სულ უფრო მეტი კვლევა აჩვენებს, რომ ონლაინ RL უფრო ეფექტურია, ვიდრე ოფლაინ მეთოდები, როგორიცაა DPO (https://arxiv.org/abs/2402.04792, https://arxiv.org/abs/2405.08448). ეს ბლოგპოსტი განმარტავს RLOO ტრენერის შექმნის მოტივაციას, მის მუშაობის პრინციპებს და გამოყენებას TRL-ში. PPO არის ეფექტური ონლაინ RLHF ვარჯიშის ალგორითმი, რომელიც გამოიყენება ისეთი თანამედროვე მოდელების მოსამზადებლად, როგორიცაა GPT-4. თუმცა, PPO-ს გამოყენება პრაქტიკაში საკმაოდ რთულია მისი მაღალი GPU მეხსიერების მოთხოვნების გამო. კერძოდ, PPO-ს მეხსიერებაში ოთხი მოდელის ასლის ჩატვირთვა სჭირდება: 1) პოლიტიკის მოდელი, 2) საცნობარო პოლიტიკის მოდელი, 3) ჯილდოს მოდელი და 4) ღირებულების მოდელი, როგორც ეს ნაჩვენებია შემდეგ ფიგურაში. PPO-ს ასევე აქვს მრავალი დახვეწილი იმპლემენტაციის დეტალი, რომელთა სწორად გამოყენება რთულია (Engstrom et al; 2020, Huang et al 2022). Cohere-ის ახალ ნაშრომში, აჰმადიანმა და სხვებმა (2024) გადახედეს RLHF ვარჯიშის საფუძვლებს და შემოგვთავაზეს უფრო ელეგანტური მეთოდი სახელწოდებით RLOO, რომელიც წარმოადგენს ვარჯიშის ახალ ონლაინ ალგორითმს. RLOO-ს მხოლოდ სამი მოდელის ასლის ჩატვირთვა სჭირდება მეხსიერებაში: 1) პოლიტიკის მოდელი, 2) საცნობარო პოლიტიკის მოდელი და 3) ჯილდოს მოდელი, როგორც ეს ნაჩვენებია ზემოთ მოცემულ ფიგურაში. მნიშვნელოვანია, რომ RLOO მოითხოვს ნაკლებ მეხსიერებას, რაც მის გამოყენებას ამარტივებს. გარდა ამისა, RLOO მთელ დასრულების ტოკენებს ერთ მოქმედებად აყალიბებს, როგორც ეს ქვემოთ მოცემულ ფიგურაშია ილუსტრირებული. შემდეგ ნაწილში, ჩვენ უფრო დეტალურად განვიხილავთ კოდის ფრაგმენტებთან ერთად. RLOO-საც და PPO-საც აქვთ რამდენიმე საერთო ნაბიჯი: პოლიტიკის მოდელი წარმოქმნის დასრულების ტოკენებს და მიიღებს თითოეული ტოკენის ლოგ-ალბათობებს მიმდინარე და საცნობარო პოლიტიკის მიხედვით. შემდეგ ჩვენ ვიანგარიშებთ თითოეული ტოკენის KL ჯარიმებს, როგორც სხვაობას მიმდინარე და საცნობარო პოლიტიკების ლოგ-ალბათობებს შორის. შემდეგ ჩვენ ვიღებთ მთლიანი დასრულების ქულას ჯილდოს მოდელიდან. აქედან მოყოლებული, ჩვეულებრივი PPO და RLOO განსხვავდებიან მიდგომაში. RLOO-ს აქვს რამდენიმე ძირითადი იდეა. პირველ რიგში, ის მთელი მოდელის დასრულებას ერთ მოქმედებად განიხილავს, ხოლო ჩვეულებრივი PPO თითოეულ დასრულების ტოკენს ინდივიდუალურ მოქმედებებად აღიქვამს. როგორც წესი, მხოლოდ EOS ტოკენი იღებს ნამდვილ ჯილდოს, რაც ძალიან იშვიათია. ჩვეულებრივი PPO ჯილდოს მიაკუთვნებს EOS ტოკენს, ხოლო RLOO ამ EOS ჯილდოს მიაკუთვნებს მთელ დასრულებას, როგორც ეს ქვემოთაა ნაჩვენები. მეორეც, RLOO იყენებს REINFORCE დანაკარგს, რომელიც ძირითადად ამრავლებს (ჯილდო - საბაზისო დონე) მოქმედებების ლოგ-ალბათობაზე. აქ ჩვენ ხაზს ვუსვამთ განსხვავებებს ტოკენის მიხედვით REINFORCE დანაკარგსა და მთლიანი დასრულების REINFORCE დანაკარგს შორის. გაითვალისწინეთ, რომ PPO-ს დანაკარგისთვის, ჩვენ დამატებით უნდა გამოგვეთვალა უპირატესობა ღირებულების მოდელის საფუძველზე განზოგადებული უპირატესობის შეფასებით (GAE). მესამე, RLOO ჭკვიანურად ითვლის საბაზისო დონეებს. გაითვალისწინეთ, რომ ზემოთ ჩვენ გამოვიყენეთ ფიქტიური საბაზისო დონე. პრაქტიკაში, RLOO იყენებს ჯგუფში არსებული ყველა სხვა ნიმუშის ჯილდოს, როგორც საბაზისო დონეს. ქვემოთ მოცემულია შემთხვევა, სადაც გვაქვს 3 მოთხოვნა და თითოეულზე 4 დასრულება. ჩვენ ვიანგარიშებთ საბაზისო დონეს თითოეული დასრულებისთვის იმავე მოთხოვნის ყველა სხვა დასრულების ჯილდოების საშუალო არითმეტიკულით. დიდი მადლობა არაშ აჰმადიანს, რომელმაც უზრუნველყო ზემოთ მოცემული უპირატესობების გამოთვლის ვექტორიზებული იმპლემენტაცია. RLOO-ს დასაწყებად, შეგიძლიათ დააინსტალიროთ TRL-ის უახლესი ვერსია `pip install --upgrade trl` ბრძანებით და იმპორტირება გაუკეთოთ `RLOOTrainer`-ს. ქვემოთ მოცემულია მოკლე ფრაგმენტი, რომელიც აჩვენებს API-ის მაღალი დონის გამოყენებას. იხილეთ დოკუმენტაცია. აქ მოცემულია Weights and Biases ექსპერიმენტების მაგალითი: https://wandb.ai/huggingface/trl/runs/dd2o3g35. RLOO-სა და PPOv2-ის იმპლემენტაციის კოდირებისას, ჩვენ აქცენტი გავაკეთეთ მოდელის შემუშავების გამჭვირვალობის გაუმჯობესების გამარტივებაზე. კერძოდ, ჩვენ გავაუმჯობესეთ დოკუმენტაცია, რათა მოგვეცვა აღრიცხული მეტრიკების ახსნა და სახელმძღვანელო ამ მეტრიკების წაკითხვისა და გამართვის შესახებ. მაგალითად, ვარჯიშის დროს გირჩევთ ყურადღებით აკონტროლოთ `objective/rlhf_reward`, რომელიც RLHF ვარჯიშის საბოლოო მიზანია. ვარჯიშის პროგრესის ვიზუალიზაციისთვის, ჩვენ პერიოდულად აღვრიცხავთ მოდელის მიერ შესრულებულ რამდენიმე ნიმუშ დასრულებას. აქ მოცემულია დასრულების მაგალითი. Weights and Biases-ზე თვალყურის დევნილ გაშვების მაგალითში (https://wandb.ai/huggingface/trl/runs/dd2o3g35), ის ასე გამოიყურება, რაც საშუალებას გაძლევთ ნახოთ მოდელის პასუხი ვარჯიშის სხვადასხვა ეტაპზე. ნაგულისხმევად, ჩვენ ვაგენერირებთ `--num_sample_generations 10` ვარჯიშის დროს, მაგრამ შეგიძლიათ მორგოთ გენერაციების რაოდენობა. ჩვენ განვახორციელეთ RLOO ტრენერი ჩვენი ახალი ექსპერიმენტული PPOv2Trainer-ის საფუძველზე, რომელიც თავის მხრივ ეფუძნება https://arxiv.org/abs/2403.17031. საინტერესოა, რომ RLOO ტრენერის ჩვენი იმპლემენტაცია კვლავ იყენებს PPO დანაკარგს.