BigCodeBench: ახალი ეტალონი LLM-ების პროგრამირების შეფასებისთვის
კვლევითი გუნდი წარმოგიდგენთ BigCodeBench-ს, ახალ, ყოვლისმომცველ ეტალონს, რომელიც მიზნად ისახავს დიდი ენობრივი მოდელების (LLM) პროგრამირების შესაძლებლობების შეფასებას. ეს ინსტრუმენტი, არსებული ალტერნატივების შეზღუდვების საპასუხოდ შეიქმნა და მოიცავს 1,140 ფუნქციურ დავალებას, რომლებიც მოითხოვს პრაქტიკული და რთული პროგრამირების ამოცანების გადაჭრას მკაცრი ტესტირების პირობებში, დაბინძურების გარეშე. BigCodeBench-ი ეხმარება დეველოპერებს, უკეთ შეაფასონ LLM-ების უნარი, მიჰყვნენ ინსტრუქციებს და მოახდინონ ფ
მიუხედავად იმისა, რომ უკვე არსებობს გარკვეული ძალისხმევა ამ საკითხების მოსაგვარებლად, ისინი ძირითადად დომენზე ორიენტირებული, დეტერმინისტული ან აგენტ-ცენტრულია (ბოდიში DS-1000, ODEX და SWE-bench 💔). ჩვენი აზრით, საზოგადოებას კვლავ აკლია მარტივი გამოსაყენებელი ეტალონი, რომელსაც შეუძლია LLM-ების პროგრამირების შესაძლებლობების ფართოდ შეფასება, და სწორედ ამაზე გავამახვილეთ ყურადღება. სიხარულით გაუწყებთ BigCodeBench-ის გამოშვებას, რომელიც LLM-ებს აფასებს პრაქტიკული და რთული პროგრამირების ამოცანების გადაჭრაში, დაბინძურების გარეშე. კერძოდ, BigCodeBench შეიცავს 1,140 ფუნქციურ დავალებას, რათა LLM-ებს გამოწვევა მისცეს, დაიცვან ინსტრუქციები და შეადგინონ მრავალი ფუნქციური გამოძახება, როგორც ხელსაწყოები 139 ბიბლიოთეკიდან. LLM-ების მკაცრად შესაფასებლად, თითოეული პროგრამირების დავალება მოიცავს საშუალოდ 5.6 სატესტო შემთხვევას, 99%-იანი განშტოების დაფარვით. მზად ხართ ჩაუღრმავდეთ BigCodeBench-ს? მოდით დავიწყოთ! 🚀
BigCodeBench გთავაზობთ რთულ, მომხმარებელზე ორიენტირებულ ინსტრუქციებს თითოეული დავალებისთვის, მათ შორის ფუნქციონალურობის მკაფიო აღწერილობებს, შეყვანის/გამოყვანის ფორმატებს, შეცდომების დამუშავებას და დადასტურებულ ინტერაქტიულ მაგალითებს. ჩვენ ვერიდებით დავალებების ეტაპობრივ ინსტრუქციებს, რადგან გვჯერა, რომ კომპეტენტურმა LLM-ებმა უნდა გაიგონ და გადაჭრან ამოცანები მომხმარებლის პერსპექტივიდან, ღია ფორმატით. ჩვენ ვამოწმებთ კონკრეტულ მახასიათებლებს სატესტო შემთხვევების გამოყენებით. BigCodeBench-ში არსებული ამოცანები იყენებენ მრავალფეროვან ფუნქციურ გამოძახებებს პოპულარული ბიბლიოთეკებიდან. ჩვენ არ ვზღუდავთ ფუნქციურ გამოძახებებს, რომელთა გამოყენებაც LLM-ებს შეუძლიათ, ვინაიდან ველით, რომ ისინი თავად აირჩევენ შესაბამის ფუნქციებს და მოქნილად დააკომბინირებენ მათ ამოცანების გადასაჭრელად. სატესტო შემთხვევები შექმნილია, როგორც სატესტო სისტემები, რათა შეამოწმონ პროგრამის მოსალოდნელი ქცევა შესრულების დროს.
LLM-ის მუშაობის შესაფასებლად, ჩვენ ვიყენებთ Pass@1-ს ხარბი დეკოდირებით (greedy decoding), რომელიც ზომავს სწორად გადაჭრილი ამოცანების პროცენტს პირველივე გენერირებული კოდის ფრაგმენტით, შერჩეული სატესტო შემთხვევების მეშვეობით. ეს მიდგომა შეესაბამება ისეთ ეტალონებს, როგორიცაა HumanEval და MBPP. ჩვენ ვუმკლავდებით LLM-ების ტენდენციას, გამოტოვონ გრძელი კოდის მოთხოვნები, დამატებითი კონფიგურაციების (მაგ., import განცხადებები, გლობალური კონსტანტები) დამატებით Pass@1 შეფასების დროს, რასაც calibrated Pass@1 ეწოდება.
განხორციელების სირთულისა და ხელსაწყოების გამოყენების მრავალფეროვნების უკეთ გასაგებად, ჩვენ შევადარეთ BigCodeBench-ის ამოცანები წარმომადგენლობითი ეტალონების ამოცანებს, მათ შორის APPS, DS-1000, ODEX, APIBench, MBPP, NumpyEval, PandasEval, HumanEval და TorchDataEval. ჩვენ აღმოვაჩინეთ, რომ BigCodeBench მოითხოვს უფრო კომპლექსურ მსჯელობასა და პრობლემის გადაჭრის უნარებს ყოვლისმომცველი ფუნქციონალურობის განსახორციელებლად. როგორც დავალების სურათზეა ნაჩვენები, ძირითადი სამიზნე სცენარი არის კოდის დასრულება (აღნიშნული როგორც BigCodeBench-Complete), სადაც LLM-ებს მოეთხოვებათ ფუნქციის იმპლემენტაციის დასრულება docstring-ში მოცემული დეტალური ინსტრუქციების საფუძველზე. თუმცა, ქვედა დინების აპლიკაციების (როგორიცაა მრავალმხრივი დიალოგი) გათვალისწინებით, მომხმარებლებს შეუძლიათ მოთხოვნების აღწერა უფრო სასაუბრო და ნაკლებად ვრცელი ფორმით. სწორედ აქ არის სასარგებლო ინსტრუქციებზე მორგებული LLM-ები, რადგან ისინი გაწვრთნილი არიან, დაიცვან ბუნებრივი ენის ინსტრუქციები და შექმნან კოდის ფრაგმენტები შესაბამისად. იმის შესამოწმებლად, შეუძლიათ თუ არა მოდელებს ნამდვილად გაიგონ ადამიანის განზრახვები და გადააქციონ ისინი კოდში, ჩვენ შევქმენით BigCodeBench-Instruct, BigCodeBench-ის უფრო რთული ვარიანტი, რომელიც განკუთვნილია ინსტრუქციებზე მორგებული LLM-ების შესაფასებლად.
ჩვენ გარანტიას ვაძლევთ BigCodeBench-ში არსებული დავალებების ხარისხს სისტემური „ადამიანის-LLM თანამშრომლობის პროცესის“ მეშვეობით. ჩვენ ვიწყებთ ODEX-ით, როგორც „საწყისი მონაცემთა ნაკრებით“, რომელიც შეიცავს მოკლე, მაგრამ რეალისტურ ადამიანურ განზრახვებს და შესაბამის Python-ის ერთსტრიქონიან კოდებს Stack Overflow-დან. ჩვენ ვიყენებთ GPT-4-ს ამ ერთსტრიქონიანი კოდების ყოვლისმომცველ ფუნქციურ დავალებებად გასაფართოებლად. შემდეგ, 20 ადამიანის ექსპერტი — რომელთა უმეტესობას 5 წელზე მეტი Python-ის პროგრამირების გამოცდილება აქვს — ნებაყოფლობით ხელმძღვანელობს GPT-4-ს შესრულებაზე დაფუძნებულ სავარჯიშო გარემოში (sandbox). ისინი მუდმივად ავალებენ მას სინთეზირებული ამოცანების დახვეწასა და სატესტო შემთხვევების დამატებას. შემდეგ დავალებები და სატესტო შემთხვევები მოწმდება ადგილობრივ გარემოში, წინასწარ ფასდება სხვა LLM-ებზე და კვლავ მოწმდება დამატებითი 7 ადამიანის ექსპერტის მიერ მათი ხარისხის უზრუნველსაყოფად. საერთო ხარისხის დასადასტურებლად, ავტორებმა 11 ადამიანის ექსპერტს მიაწოდეს ნიმუში ამოცანები გადასაჭრელად, სადაც მათ მიაღწიეს საშუალო ადამიანურ შესრულებას 97%.
BigCodeBench-ის ლიდერთა დაფა განთავსებულია როგორც Hugging Face Space-ზე, ასევე GitHub Pages-ზე. აქ, მაგალითად, Hugging Face-ის ლიდერთა დაფას ვიყენებთ. საინტერესოა, რომ ჩვენ ვაკვირდებით, რომ ინსტრუქციებზე მორგებულ LLM-ებს, როგორიცაა GPT-4, შეუძლიათ გამოტოვონ აუცილებელი import განცხადებები BigCodeBench-Complete-ის გრძელ მოთხოვნებში, რაც იწვევს ამოცანების ჩავარდნას მოდულებისა და კონსტანტების არარსებობის გამო. ამ ქცევას, რომელსაც „მოდელის სიზარმაცე“ ეწოდება, განიხილავენ საზოგადოებაში. ადამიანის შესრულებასთან შედარებით, LLM-ები მნიშვნელოვნად დაბალ შედეგებს აჩვენებენ BigCodeBench-Complete-ზე და კიდევ უფრო დაბალს BigCodeBench-Instruct-ზე. საუკეთესო მოდელი (GPT-4o) აღწევს 61.1%-იან calibrated Pass@1-ს BigCodeBench-Complete-ზე და 51.1%-ს BigCodeBench-Instruct-ზე. გარდა ამისა, არსებობს შესამჩნევი უფსკრული დახურულ და ღია LLM-ებს შორის მუშაობის თვალსაზრისით. მიუხედავად იმისა, რომ Pass@1 კარგი მეტრიკაა საერთო შესრულებისთვის, ის არ არის საკმარისად დეტალური მოდელების პირდაპირ შესადარებლად. Chatbot Arena-თი შთაგონებულებმა, ჩვენ ვიყენებთ Elo რეიტინგს BigCodeBench-Complete-ზე მოდელების რანჟირებისთვის. ეს მეთოდი, რომელიც თავდაპირველად ჭადრაკში გამოიყენებოდა, აფასებს მოთამაშეებს მათი თამაშის შესრულების მიხედვით. ჩვენ მას ადაპტირებას ვუკეთებთ პროგრამირების ამოცანებს, თითოეულ ამოცანას ვექცევით როგორც...
თეგები:
#ხელოვნური ინტელექტი
#llm
#ტესტირება
#მანქანური სწავლება
#პროგრამირება
#კოდის გენერაცია
#პითონი
#bigcodebench
#ეტალონი
წყარო: huggingface.co
AI-ით გადამუშავებული