BigCodeBench: ახალი ბენჩმარკი ხელოვნური ინტელექტის პროგრამირების შესაძლებლობების შესაფასებლად
საზოგადოებას კვლავ აკლია მარტივი გამოსაყენებელი ბენჩმარკი, რომელსაც შეუძლია დიდი ენობრივი მოდელების (LLM) პროგრამირების შესაძლებლობების ფართოდ შეფასება. ამ გამოწვევის საპასუხოდ, წარდგენილია BigCodeBench – ახალი, ყოვლისმომცველი შეფასების პლატფორმა, რომელიც 1,140 ფუნქციის დონის ამოცანის საშუალებით ამოწმებს LLM-ებს პრაქტიკული და რთული პროგრამირების ამოცანების გადაწყვეტაში, მათ შორის ინსტრუქციების შესრულებასა და მრავალი ფუნქციის გამოძახებაში 139 ბიბლიოთეკიდან. BigCodeBench მკაცრად აფასებს მოდელებს მ
მიუხედავად იმისა, რომ ამ საკითხების მოსაგვარებლად გარკვეული ძალისხმევა იყო, ისინი ან დომენ-სპეციფიკურია, ან დეტერმინისტული, ან აგენტ-ცენტრული (ბოდიში, 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-ს ხარბი დეკოდირებით, ვზომავთ სწორად გადაჭრილი ამოცანების პროცენტს პირველი გენერირებული კოდის ნაგლეჯით, შერჩეული სატესტო შემთხვევების საშუალებით. ეს მიდგომა შეესაბამება ისეთ ბენჩმარკებს, როგორებიცაა 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 წელზე მეტი პითონის პროგრამირების გამოცდილება აქვს — ნებაყოფლობით ხელმძღვანელობს GPT-4-ს შესრულებაზე დაფუძნებულ სენდბოქსში. ისინი განუწყვეტლივ აძლევენ მითითებებს სინთეზირებული ამოცანების გასაუმჯობესებლად და სატესტო შემთხვევების დასამატებლად. ამოცანები და სატესტო შემთხვევები შემდეგ მოწმდება ადგილობრივ გარემოში, წინასწარ ფასდება სხვა 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) აღწევს calibrated Pass@1-ს 61.1% BigCodeBench-Complete-ზე და 51.1% BigCodeBench-Instruct-ზე. გარდა ამისა, არსებობს შესამჩნევი უფსკრული დახურულ და ღია LLM-ებს შორის. მიუხედავად იმისა, რომ Pass@1 კარგი მეტრიკაა საერთო შესრულებისთვის, ის არ არის საკმარისად დეტალური მოდელების უშუალო შესადარებლად. Chatbot Arena-თი შთაგონებულნი, ჩვენ ვიყენებთ Elo რეიტინგს BigCodeBench-Complete-ზე მოდელების რანჟირებისთვის. ეს მეთოდი, რომელიც თავდაპირველად ჭადრაკში გამოიყენებოდა, აფასებს მოთამაშეებს მათი თამაშის შესრულების მიხედვით. ჩვენ მას ვაკეთებთ პროგრამირების ამოცანებზე, თითოეულ ამოცანას ვექცევით როგორც მატჩს, რომელიც მოდელებს შორის თამაშდება.
წყარო: huggingface.co
AI-ით გადამუშავებული