Μετάβαση στο κύριο περιεχόμενο
OpenAI

Διαχωρισμός σήματος από θόρυβο στις αξιολογήσεις προγραμματισμού

Μέσα από λεπτομερή έλεγχο, εντοπίζουμε εκτεταμένα προβλήματα εργασιών στο SWE-Bench Pro και εκτιμούμε ότι περίπου το 30% των εργασιών είναι προβληματικές.

Φόρτωση…

Η ακριβής μέτρηση των δυνατοτήτων των μοντέλων μας είναι σημαντική για τεκμηριωμένες αποφάσεις διάθεσης και ασφάλειας, μεταξύ άλλων και για αποφάσεις στο πλαίσιο του Πλαισίου Ετοιμότητας(ανοίγει σε νέο παράθυρο) της OpenAI. Με κάθε κυκλοφορία μοντέλου, αναφέρουμε αποτελέσματα για διάφορα εξωτερικά και εσωτερικά benchmark, ώστε να παρακολουθούμε την πρόοδο των μοντέλων. Όταν οι αξιολογήσεις έχουν ελαττώματα που επηρεάζουν τα αποτελέσματα, μπορούν να δώσουν εσφαλμένη εικόνα των δυνατοτήτων, παραποιώντας τα επιχειρήματα ασφάλειας και επηρεάζοντας τις ερευνητικές προτεραιότητες.

Πρόσφατα διερευνήσαμε πώς ένα από τα πιο ευρέως χρησιμοποιούμενα benchmark προγραμματισμού, το SWE-bench Verified, είχε θεμελιώδη προβλήματα σχεδιασμού και μόλυνσης δεδομένων, και διαπιστώσαμε ότι η αξιολόγηση δεν παρείχε πλέον ουσιαστικό σήμα για τις δυνατότητες ανάπτυξης λογισμικού. Τότε, ενθαρρύναμε την ευρύτερη κοινότητα να στραφεί στο SWE-Bench Pro.

Το SWE-Bench Pro(ανοίγει σε νέο παράθυρο) σχεδιάστηκε για να βελτιώσει το SWE-bench Verified, δοκιμάζοντας μοντέλα σε μεγαλύτερους χρονικούς ορίζοντες και πιο ρεαλιστικές εργασίες προγραμματισμού, ώστε να παρακολουθούνται καλύτερα οι δυνατότητες προγραμματισμού βάσει πράκτορα. Όπως και στο SWE-bench Verified, οι εργασίες αντλούνται προγραμματιστικά από το ιστορικό αλλαγών χαρακτηριστικών σε ένα σύνολο δημόσιων και ιδιωτικών αποθετηρίων. Τα μοντέλα πρέπει να υλοποιήσουν μια λύση που περνά νέες δοκιμές για ένα χαρακτηριστικό, χωρίς να διακόπτει την υπάρχουσα λειτουργικότητα. Στο δημόσιο τμήμα των 731 εργασιών, τα κορυφαία μοντέλα βελτίωσαν το ποσοστό επιτυχίας τους από 23,3% σε 80,3% μέσα σε οκτώ μήνες.

Έκτοτε πραγματοποιήσαμε παρόμοιο έλεγχο και στο SWE-Bench Pro, εξετάζοντας το σύνολο δεδομένων με μια διοχέτευση ανάλυσης σημείων δεδομένων. Η διοχέτευση εξέτασε τις απόπειρες των μοντέλων στην εργασία, τα μεταδεδομένα της εργασίας και τα ίχνη αποτυχίας, ώστε να επισημάνει πιθανά ελαττώματα αξιολόγησης. Κάθε επισημασμένη εργασία αξιολογήθηκε στη συνέχεια μέσω πολλαπλών περασμάτων ερευνητή-πράκτορα και ελέγχθηκε ανεξάρτητα από πέντε έμπειρους μηχανικούς λογισμικού, με τις διαφωνίες να προωθούνται για περαιτέρω διερεύνηση.

Βρίσκουμε ενδείξεις προβλημάτων που καθιστούν μη έγκυρο σημαντικό μέρος του συνόλου δεδομένων. Η διοχέτευση ανάλυσης σημείων δεδομένων επισήμανε 200 (27,4%) προβληματικές εργασίες, ενώ η εκστρατεία ανθρώπινης επισήμανσης εντόπισε 249 (34,1%).

Τα προβλήματα εντάσσονταν κυρίως σε τέσσερις κατηγορίες:

  • Οι υπερβολικά αυστηρές δοκιμές1 επιβάλλουν συγκεκριμένες λεπτομέρειες υλοποίησης που δεν ορίζονται στην προτροπή, καθιστώντας άκυρες πολλές λειτουργικά σωστές υποβολές.
  • Οι ανεπαρκώς προσδιορισμένες προτροπές2 παραλείπουν απαιτήσεις που επιβάλλουν οι κρυφές δοκιμές και που δεν μπορούν εύλογα να συναχθούν.
  • Οι δοκιμές χαμηλής κάλυψης δεν ελέγχουν επαρκώς το ζητούμενο χαρακτηριστικό, οπότε ελλιπείς διορθώσεις μπορούν να περάσουν.
  • Μια παραπλανητική προτροπή κατευθύνει τα μοντέλα προς λάθος συμπεριφορά ή αντιφάσκει με όσα απαιτούν οι δοκιμές.

Τα ευρήματά μας αναδεικνύουν τη δυσκολία επιμέλειας δύσκολων αλλά δίκαιων benchmark και την αυξανόμενη χρησιμότητα των πρακτόρων για κλιμακούμενους ελέγχους ποιότητας δεδομένων. Με βάση αυτά τα αποτελέσματα, εκτιμούμε ότι περίπου το 30% των εργασιών του SWE-bench Pro είναι προβληματικό και συνιστούμε στους προγραμματιστές μοντέλων να εξετάζουν προσεκτικά τα αποτελέσματα.

Μεθοδολογία

Στόχος μας είναι να διασφαλίσουμε ότι οι αποτυχίες στις εργασίες αντανακλούν πραγματικούς περιορισμούς του μοντέλου και πως οι επιτυχίες αντανακλούν πλήρεις και έγκυρες λύσεις στις απαιτήσεις της προτροπής. Για να ελέγξουμε την ποιότητα των δεδομένων που χρησιμοποιούνται στην αξιολόγηση, δημιουργήσαμε μια διοχέτευση διασφάλισης ποιότητας για να εκτιμήσουμε αν κάθε σημείο δεδομένων αντανακλά με ακρίβεια τις δυνατότητες του μοντέλου.

Ροή εργασίας διασφάλισης ποιότητας που συνδυάζει αυτοματοποιημένο έλεγχο και ανθρώπινη αξιολόγηση για εκτίμηση της ποιότητας των εργασιών.

Μια αρχική διοχέτευση ποιότητας δεδομένων επισημαίνει προβλήματα για έλεγχο. Επαληθεύουμε τα αποτελέσματα με βαθύτερο έλεγχο υποβοηθούμενο από πράκτορα σε επισημασμένες εργασίες και με εκστρατεία ανθρώπινης επισήμανσης με έμπειρους μηχανικούς.

Ένα αρχικό αυτοματοποιημένο φίλτρο εξετάζει τις οδηγίες που δόθηκαν στο μοντέλο, τις απόπειρες του μοντέλου να λύσει την εργασία και τις δοκιμές που χρησιμοποιούνται για βαθμολόγηση αυτών των αποπειρών, ώστε να επισημάνει πιθανώς προβληματικά παραδείγματα. Αυτό το φίλτρο επισήμανε 286 δυνητικά προβληματικές εργασίες. Στη συνέχεια πραγματοποιήσαμε βαθύτερο έλεγχο αυτού του υποσυνόλου με δύο τρόπους: ανθρώπινα εποπτευόμενο έλεγχο πράκτορα, που εκτελεί εκτενείς ελέγχους με ερευνητές πράκτορες και καταλήγει σε τελική ανθρώπινη κρίση, καθώς επίσης εκστρατεία ανθρώπινης επισήμανσης με έμπειρους προγραμματιστές λογισμικού.

Έλεγχος πράκτορα εποπτευόμενος από άνθρωπο

Κάθε επισημασμένο πρόβλημα ελέγχεται από ερευνητές πράκτορες που βασίζονται στο Codex και είχαν πρόσβαση στο αποθετήριο και στο περιβάλλον της εργασίας. Αυτό τους βοηθά να διακρίνουν την εύλογη ασάφεια μιας εργασίας, που συχνά μπορεί να λυθεί με μελέτη του κοντινού κώδικα και των συμβάσεων του αποθετηρίου, από την πραγματική ανεπαρκή προδιαγραφή. Ο πράκτορας μπορεί να εκτελεί δοκιμές, να επιθεωρεί αρχεία στο αποθετήριο και να διερευνά τις απόπειρες του μοντέλου και τους συχνούς τρόπους αστοχίας τους στην εργασία. Μετά από αρκετές ανεξάρτητες επαναλήψεις αυτών των βαθύτερων ελέγχων, ένας ερευνητής εξέτασε τις περιλήψεις, διατύπωσε τελική κρίση και επισήμανε τα πιθανά προβλήματα.

Εκστρατεία επισήμανσης από άνθρωπο

Παράλληλα, πραγματοποιήσαμε εκστρατεία επισήμανσης από άνθρωπο στο επισημασμένο υποσύνολο. Συνεργαστήκαμε με έμπειρους μηχανικούς λογισμικού, οι οποίοι εκπαιδεύτηκαν στους στόχους του benchmark, στην ταξινόμηση των προβλημάτων και στις οριακές περιπτώσεις πριν εξετάσουν τις εργασίες. Κάθε εργασία εξετάστηκε από πέντε μηχανικούς.

Οι αξιολογητές σχημάτισαν ανεξάρτητη κρίση από την ορατή διατύπωση του προβλήματος, τις περιπτώσεις δοκιμής και τη λύση αναφοράς αληθείας βάσης, γνωστή ως gold patch, προτού χρησιμοποιήσουν την ανάλυση της διοχέτευσης ή το αντίγραφο διαλόγου ως υποστηρικτικό πλαίσιο. Στη συνέχεια, οι αξιολογητές απέδωσαν ετικέτα και βαθμολογία σοβαρότητας με βάση συγκεκριμένα στοιχεία και προώθησαν διαφωνίες ή περιπτώσεις χαμηλής βεβαιότητας για περαιτέρω έλεγχο.

Οι άνθρωποι αξιολογητές ήταν πιο πιθανό από τους ερευνητές πράκτορες να χαρακτηρίσουν εργασίες ως προβληματικές. Υπήρχε επίσης κάποια διαφωνία ως προς τις κατηγορίες μεταξύ των δύο διαδρομών ελέγχου, αλλά σε καμία επισημασμένη εργασία η πιο συχνή ανθρώπινη ετικέτα δεν ήταν «μη προβληματική». Στις κατηγορίες που επισήμανε η διοχέτευση πράκτορα, οι κρίσεις των αξιολογητών συνέπιπταν στο 74% των περιπτώσεων.

Σε σύγκριση με τη διοχέτευση πράκτορα, οι άνθρωποι αξιολογητές ήταν επίσης πιο πιθανό να επιλέξουν πολλαπλές ετικέτες για μια εργασία, κάτι που δείχνει ότι βρήκαν εργασίες προβληματικές με πολλούς τρόπους ή ότι αυτές δεν εντάσσονταν καθαρά σε μία μόνο κατηγορία. Αυτό υποδηλώνει ότι η διοχέτευση πράκτορα με αξιολογητές οδήγησε σε συντηρητική επισήμανση: κατέγραψε τους ίδιους ευρείς τρόπους αστοχίας που εντόπισαν οι άνθρωποι, αλλά υπομέτρησε περιπτώσεις όπου οι αξιολογητές είδαν πρόσθετα ή επικαλυπτόμενα προβλήματα. Η μεγαλύτερη διαφορά αφορούσε τις δοκιμές χαμηλής κάλυψης, τις οποίες οι άνθρωποι επέλεξαν ως το συχνότερο πρόβλημα για το 9,4% του benchmark, έναντι 4,1% από τη διοχέτευση πράκτορα.

Τρόποι αστοχίας

Σε αρκετές περιπτώσεις, η προτροπή της εργασίας όριζε συγκεκριμένη υλοποίηση, αλλά οι κρυφές περιπτώσεις δοκιμής ανέμεναν διαφορετική συμπεριφορά.

This task involves normalizing table-of-contents entries and rendering them back to Markdown via TocEntry.to_markdown(). The task prompt specifies serialization down to character-level spacing, describing how exact spacing and pipes are enforced, and gives examples such as " | Chapter 1 | 1" and "** | Chapter 1 | 1":

Κανένα

1
"[space]| Chapter 1 | 1"
2
"**[space]| Chapter 1 | 1"
3
"[space]| Just title | "

The hidden test_to_markdown assertions instead require " | Chapter 1 | 1" and "** | Chapter 1 | 1":

Κανένα

1
"[space][space]| Chapter 1 | 1"
2
"**[space][space]| Chapter 1 | 1"
3
"[space][space]| Just title | "

There are two leading spaces in the hidden tests, but the example given to the model only contains one leading space. If a model rightly follows the given prompt, that one-character difference would fail the hidden test cases and the task would be marked incorrect.

Συζήτηση

Τα προβλήματα που εντοπίσαμε, σε συνδυασμό με παρόμοιες περιπτώσεις στο SWE-bench Verified, αναδεικνύουν τη σημασία του αυστηρού ελέγχου των benchmark. Τα ζητήματα και τα pull request από αποθετήρια ανοικτού κώδικα δημιουργήθηκαν αρχικά για ανθρώπινη συνεργασία, συχνά μέσα από μακρές ανταλλαγές μεταξύ συντηρητών και συνεισφερόντων. Ως αποτέλεσμα, οι περιγραφές προβλημάτων, ο συγχωνευμένος κώδικας και οι μονάδες δοκιμών δεν ευθυγραμμίζονται πάντα ώστε να σχηματίζουν καθαρές, απομονωμένες εργασίες για αξιόπιστη αξιολόγηση μοντέλων. Ειδικότερα, οι δοκιμές που περιλαμβάνονται σε pull request μπορεί να είναι υπερβολικά αυστηρές, επειδή γράφονται για να επικυρώσουν μια συγκεκριμένη αλλαγή και όχι για να ορίσουν ένα πρότυπο επίλυσης της εργασίας ανεξάρτητο από την υλοποίηση.

Ταυτόχρονα, τα ελαττώματα αξιολόγησης είναι πλέον πιο εύκολο να εντοπιστούν απ’ ό,τι θα ήταν ακόμη και πριν από λίγο καιρό. Καθώς βελτιώνονται οι δυνατότητες των μοντέλων, μπορούμε να χρησιμοποιούμε αυτά τα μοντέλα για να επιθεωρούμε προτροπές, δοκιμές, patch, ίχνη και οριακές περιπτώσεις με πολύ μεγαλύτερο βάθος και συνέπεια, βοηθώντας να αναδειχθούν προβλήματα benchmark που παλαιότερα ήταν δαπανηρό ή μη πρακτικό να εντοπιστούν σε κλίμακα.

Ελπίζουμε ότι η ευρύτερη κοινότητα αξιολόγησης θα αναπτύξει νέα benchmark, κατασκευασμένα από έμπειρους προγραμματιστές λογισμικού ειδικά για τη δοκιμή των δυνατοτήτων των μοντέλων. Αυτή η προσέγγιση μπορεί να διατηρήσει το υψηλό επίπεδο δυσκολίας και τον ρεαλισμό που θέλουμε για τη μέτρηση των δυνατοτήτων των μοντέλων και επιτρέπει καλύτερη ανθρώπινη επίβλεψη σε όλη τη διαδικασία. Δεδομένων των προβλημάτων που αποκαλύφθηκαν σε αυτήν την ανάλυση, αποσύρουμε την προηγούμενη σύστασή μας για υιοθέτηση του SWE-Bench Pro.

Τελικά, μια αξιολόγηση πρέπει να παρέχει ουσιαστικό σήμα μέσω benchmark που είναι δύσκολο να παρακαμφθούν, εύκολο να εμπιστευθεί κανείς και πραγματικά αντιπροσωπευτικά της δυνατότητας ή της ευθυγράμμισης ενός μοντέλου. Επειδή αυτά τα αποτελέσματα ενημερώνουν τις αποφάσεις διάθεσης και ασφάλειας της OpenAI, οι αξιολογήσεις που παρακολουθούμε πρέπει να είναι έγκυρες και πληροφοριακές.

Συντάκτης

OpenAI

Υποσημειώσεις

  1. 1

    Προηγουμένως αναφερόμασταν σε αυτήν την κατηγορία ως στενές δοκιμές.

  2. 2

    Προηγουμένως αναφερόμασταν σε αυτήν την κατηγορία ως ευρείες δοκιμές.