Συγγραφείς: Mayank Mishra⋆, IBM Matt Stallone⋆, IBM Gaoyuan Zhang⋆, IBM Yikang Shen, IBM Aditya Prasad, IBM Adriana Meza Soria, IBM Michele Merler, IBM Parameswaran Selvam, IBM Saptha Surendran, IBM Shivdeep Singh, IBM Manish Sethi, IBM Xuan-Hong Dang, IBM Pengyuan Li, IBM Kun-Lung Wu, IBM Syed Zawad, IBM Andrew Coleman, IBM Matthew White, IBM Mark Lewis, IBM Raju Pavuluri, IBM Yan Koyfman, IBM Boris Lublinsky, IBM Maximilien de Bayser, IBM Ibrahim Abdelaziz, IBM Kinjal Basu, IBM Mayank Agarwal, IBM Yi Zhou, IBM Chris Johnson, IBM Aanchal Goyal, IBM Hima Patel, IBM Yousaf Shah, IBM Petros Zerfos, IBM Heiko Ludwig, IBM Asim Munawar, IBM Maxwell Crouse, IBM Pavan Kapanipathi, IBM Shweta Salaria, IBM Bob Calio, IBM Sophia Wen, IBM Seetharami Seelam, IBM Brian Belgodere, IBM Carlos Fonseca, IBM Amith Singhee, IBM Nirmit Desai, IBM David D. Cox, IBM Ruchir Puri†, IBM Rameswar Panda†, IBM Περίληψη Τα Μεγάλα Γλωσσικά Μοντέλα (LLMs) που εκπαιδεύονται σε κώδικα φέρνουν επανάσταση στη διαδικασία ανάπτυξης λογισμικού. Όλο και περισσότερο, τα LLMs κώδικα ενσωματώνονται σε περιβάλλοντα ανάπτυξης λογισμικού για να βελτιώσουν την παραγωγικότητα των ανθρώπινων προγραμματιστών, και οι πράκτορες που βασίζονται σε LLM αρχίζουν να δείχνουν υποσχέσεις για τον αυτόνομο χειρισμό σύνθετων εργασιών. Η αξιοποίηση του πλήρους δυναμικού των LLMs κώδικα απαιτεί ένα ευρύ φάσμα δυνατοτήτων, συμπεριλαμβανομένης της παραγωγής κώδικα, της διόρθωσης σφαλμάτων, της εξήγησης και τεκμηρίωσης κώδικα, της συντήρησης αποθετηρίων και άλλων. Σε αυτήν την εργασία, παρουσιάζουμε τη σειρά Granite μοντέλων αποκωδικοποιητή-μόνο για εργασίες παραγωγής κώδικα, εκπαιδευμένα με κώδικα γραμμένο σε 116 γλώσσες προγραμματισμού. Η οικογένεια μοντέλων Granite Code αποτελείται από μοντέλα που κυμαίνονται σε μέγεθος από 3 έως 34 δισεκατομμύρια παραμέτρους, κατάλληλα για εφαρμογές που κυμαίνονται από σύνθετες εργασίες εκσυγχρονισμού εφαρμογών έως περιπτώσεις χρήσης περιορισμένης μνήμης στη συσκευή. Η αξιολόγηση σε ένα ολοκληρωμένο σύνολο εργασιών καταδεικνύει ότι τα μοντέλα Granite Code φτάνουν σταθερά σε κορυφαίες επιδόσεις μεταξύ των διαθέσιμων open-source LLMs κώδικα. Η οικογένεια μοντέλων Granite Code βελτιστοποιήθηκε για ροές εργασιών ανάπτυξης εταιρικού λογισμικού και αποδίδει καλά σε ένα εύρος εργασιών κωδικοποίησης (π.χ. παραγωγή, διόρθωση και εξήγηση κώδικα), καθιστώντας την ένα ευέλικτο "all around" μοντέλο κώδικα. Κυκλοφορούμε όλα τα μοντέλα Granite Code μας υπό άδεια Apache 2.0 για ερευνητική και εμπορική χρήση. https://github.com/ibm-granite/granite-code-models 1 Εισαγωγή Κατά τις τελευταίες δεκαετίες, το λογισμικό έχει υφανθεί στον ιστό κάθε πτυχής της κοινωνίας μας. Καθώς η ζήτηση για ανάπτυξη λογισμικού αυξάνεται, είναι πιο κρίσιμο από ποτέ να αυξηθεί η παραγωγικότητα στην ανάπτυξη λογισμικού, και τα LLMs παρέχουν μια πολλά υποσχόμενη οδό για τη συμπλήρωση των ανθρώπινων προγραμματιστών. Οι εξέχουσες περιπτώσεις χρήσης σε επιχειρήσεις για LLMs στην παραγωγικότητα ανάπτυξης λογισμικού περιλαμβάνουν παραγωγή κώδικα, εξήγηση κώδικα, διόρθωση κώδικα, παραγωγή unit test και τεκμηρίωσης, εκσυγχρονισμό εφαρμογών, ανίχνευση ευπαθειών, μετάφραση κώδικα και πολλά άλλα. Τα τελευταία χρόνια έχουν σημειωθεί ραγδαίες εξελίξεις στην ικανότητα των LLMs να παράγουν και να χειρίζονται κώδικα, και σήμερα είναι διαθέσιμη μια σειρά μοντέλων με εντυπωσιακές ικανότητες κωδικοποίησης. Τα μοντέλα κυμαίνονται σε μέγεθος από μερικά δισεκατομμύρια παραμέτρους (π.χ. Llama-7B (Touvron et al., 2023), Gemma-7B (Gemma-Team et al., 2024), κ.λπ.) έως εκατοντάδες δισεκατομμύρια: DBRX (Databricks), Arctic (Snowflake), Grok, Mixtral 8x22B (MistralAI), Command R+ (Cohere), και ποικίλλουν στην γενικότητα της προβλεπόμενης χρήσης, με ορισμένα μοντέλα να στοχεύουν στην κάλυψη ενός φάσματος χρήσεων εκτός κώδικα, ενώ άλλα εστιάζουν κυρίως σε εργασίες σχετικές με τον κώδικα (π.χ. StarCoder (Li et al., 2023a; Lozhkov et al., 2024), CodeGen (Nijkamp et al., 2023), CodeLlama (Rozie`re et al., 2023), και CodeGemma (CodeGemma Team et al., 2024)). Ωστόσο, εξακολουθούν να υπάρχουν σημαντικά κενά στον τρέχοντα τομέα των LLMs για κώδικα, ειδικά στο πλαίσιο της ανάπτυξης εταιρικού λογισμικού. Πρώτον, ενώ τα πολύ μεγάλα, γενικού σκοπού LLMs μπορούν να επιτύχουν εξαιρετικές επιδόσεις κωδικοποίησης, το μέγεθός τους τα καθιστά δαπανηρά για ανάπτυξη. Μικρότερα μοντέλα εστιασμένα στον κώδικα ( , ; , ; , ; , ; , ) μπορούν να επιτύχουν εξαιρετική απόδοση παραγωγής κώδικα σε μια μικρότερη και πιο ευέλικτη συσκευασία, αλλά η απόδοση σε εργασίες κωδικοποίησης πέραν της παραγωγής (π.χ. διόρθωση και εξήγηση) μπορεί να υστερεί σε σχέση με την απόδοση παραγωγής κώδικα. Li et al. 2023a Lozhkov et al. 2024 Nijkamp et al. 2023 Rozie`re et al. 2023 CodeGemma Team et al. 2024 Σε πολλά εταιρικά πλαίσια, η υιοθέτηση LLM κώδικα μπορεί να περιπλέκεται περαιτέρω από παράγοντες πέρα από τις επιδόσεις των μοντέλων. Για παράδειγμα, ακόμη και τα ανοιχτά μοντέλα συχνά μαστίζονται από έλλειψη διαφάνειας σχετικά με τις πηγές δεδομένων και τις μεθόδους επεξεργασίας δεδομένων που χρησιμοποιήθηκαν για τη δημιουργία του μοντέλου, γεγονός που μπορεί να μειώσει την εμπιστοσύνη στα μοντέλα σε κρίσιμα και ρυθμιζόμενα περιβάλλοντα. Επιπλέον, οι όροι αδειοδότησης στα σημερινά ανοιχτά LLMs μπορούν να επιβαρύνουν και να περιπλέξουν την ικανότητα μιας επιχείρησης να χρησιμοποιήσει ένα μοντέλο. Εδώ, παρουσιάζουμε τα μοντέλα Granite Code, μια σειρά από πολύ ικανά LLMs κώδικα, σχεδιασμένα για να υποστηρίζουν την ανάπτυξη εταιρικού λογισμικού σε ένα ευρύ φάσμα εργασιών κωδικοποίησης. Τα μοντέλα Granite Code έχουν δύο κύριες παραλλαγές που κυκλοφορούμε σε τέσσερα διαφορετικά μεγέθη (3B, 8B, 20B και 34B): βασικά θεμελιώδη μοντέλα για εργασίες σχετικές με τον κώδικα· Granite Code Base: μοντέλα που ακολουθούν οδηγίες, βελτιστοποιημένα χρησιμοποιώντας έναν συνδυασμό ζευγών Git commits με ανθρώπινες οδηγίες και open-source συνθετικά δημιουργημένα σύνολα δεδομένων οδηγιών κώδικα. Granite Code Instruct: Τα βασικά μοντέλα της σειράς έχουν εκπαιδευτεί από την αρχή με μια στρατηγική εκπαίδευσης δύο φάσεων. Στη φάση 1, το μοντέλο μας εκπαιδεύεται σε 3 έως 4 τρισεκατομμύρια tokens που προέρχονται από 116 γλώσσες προγραμματισμού, εξασφαλίζοντας ολοκληρωμένη κατανόηση γλωσσών προγραμματισμού και σύνταξης. Στη φάση 2, το μοντέλο μας εκπαιδεύεται περαιτέρω σε 500 δισεκατομμύρια tokens με ένα προσεκτικά σχεδιασμένο μείγμα υψηλής ποιότητας δεδομένων από πεδία κώδικα και φυσικής γλώσσας για να βελτιώσει την ικανότητα του μοντέλου να συλλογίζεται. Χρησιμοποιούμε το αντικείμενο γλωσσικού μοντελοποίησης χωρίς επίβλεψη για την εκπαίδευση των βασικών μοντέλων και στις δύο φάσεις εκπαίδευσης. Τα μοντέλα instruct προκύπτουν από περαιτέρω βελτιστοποίηση των παραπάνω εκπαιδευμένων βασικών μοντέλων σε έναν συνδυασμό μιας φιλτραρισμένης παραλλαγής του CommitPack ( , ), συνόλων δεδομένων οδηγιών φυσικής γλώσσας (OASST ( , ), HelpSteer ( , )) και open-source συνόλων δεδομένων μαθηματικών (MathInstruct ( , ) και MetaMathQA ( , )), συμπεριλαμβανομένων συνθετικά δημιουργημένων συνόλων δεδομένων κώδικα για τη βελτίωση της ικανότητας παρακολούθησης οδηγιών και συλλογισμού. Muennighoff et al. 2023 Ko¨ pf et al. 2023 Wang et al. 2023 Yue et al. 2023 Yu et al. 2023 Διεξάγουμε εκτενείς αξιολογήσεις των LLMs κώδικά μας σε ένα ολοκληρωμένο σύνολο benchmarks, συμπεριλαμβανομένων των HumanEvalPack ( , ), MBPP(+) ( , ; , ), RepoBench ( , ), ReCode ( , ), και άλλων. Αυτό το σύνολο benchmarks περιλαμβάνει πολλούς διαφορετικούς τύπους εργασιών κωδικοποίησης πέρα από την απλή σύνθεση κώδικα στην Python, π.χ., διόρθωση κώδικα, εξήγηση κώδικα, επεξεργασία κώδικα, μετάφραση κώδικα, κ.λπ., σε όλες τις κύριες γλώσσες προγραμματισμού (Python, JavaScript, Java, Go, C++, Rust, κ.λπ.). Muennighoff et al. 2023 Austin et al. 2021 Liu et al. 2023a Liu et al. 2023b Wang et al. 2022 Τα ευρήματά μας αποκαλύπτουν ότι μεταξύ των open-source μοντέλων, τα μοντέλα Granite Code δείχνουν συνολικά πολύ ισχυρές επιδόσεις σε όλα τα μεγέθη μοντέλων και benchmarks (συχνά ξεπερνώντας άλλα open-source μοντέλα κώδικα που είναι διπλάσια σε μέγεθος σε σύγκριση με το Granite). Ως παράδειγμα, η εικόνα (πάνω) δείχνει μια σύγκριση του Granite-8B-Code-Base με άλλα open-source βασικά LLMs κώδικα, συμπεριλαμβανομένων πρόσφατων υψηλών επιδόσεων γενικού σκοπού βασικών LLMs όπως το Mistral ( , ) και το LLama-3 ( , ) στο HumanEvalPack ( , ). Ενώ το CodeGemma και το StarCoder2 αποδίδουν λογικά καλά στην παραγωγή κώδικα, αποδίδουν σημαντικά χειρότερα στις παραλλαγές διόρθωσης και εξήγησης κώδικα του HumanEvalPack. Κατά μέσο όρο, το Granite-8B-Code-Base ξεπερνά το πιο ανταγωνιστικό μοντέλο CodeGemma-8B κατά σχεδόν 12 μονάδες στο HumanEvalPack (33,2% έναντι 21,3%), παρά το γεγονός ότι εκπαιδεύτηκε σε σημαντικά μικρότερο αριθμό tokens (4,5T έναντι 7,5T tokens). Εκτός από τα βασικά μοντέλα, οι βελτιστοποιημένες παραλλαγές των μοντέλων Granite Code μας δείχνουν επίσης ισχυρές επιδόσεις στο HumanEvalPack, ξεπερνώντας άλλα open-source (code) μοντέλα οδηγιών, καταδεικνύοντας οφέλη σε ένα ευρύτερο σύνολο εργασιών κωδικοποίησης με οδηγίες φυσικής γλώσσας (βλ. εικόνα (κάτω)). 1 Jiang et al. 2023b AI@Meta 2024 Muennighoff et al. 2023 1 Επιπλέον, εφόσον ο συλλογισμός είναι κρίσιμος για την επίλυση σύνθετων ερωτήσεων και εργασιών, δοκιμάζουμε επίσης το μοντέλο μας Granite-8B-Code-Base σε έξι μαθηματικά benchmarks, συμπεριλαμβανομένων των MATH ( , ), GSM8K ( , ) και επίλυση προβλημάτων με πρόσβαση σε υπολογιστικά εργαλεία, όπου το μοντέλο μας Granite 8B επιτυγχάνει καλύτερες επιδόσεις σε σύγκριση με τα περισσότερα state-of-the-art LLMs 7B ή 8B. Για παράδειγμα, το Granite-8B-Code-Base ξεπερνά το Llama-3-8B-Base κατά ~12 μονάδες στο GSM8K και ~6 μονάδες στο MATH (βλ. πίνακα ). Cobbe et al. 2021 Cobbe et al. 2021 15 Τα βασικά πλεονεκτήματα των μοντέλων Granite Code περιλαμβάνουν: : Τα μοντέλα Granite Code επιτυγχάνουν ανταγωνιστικές ή κορυφαίες επιδόσεις σε διάφορους τύπους εργασιών σχετικών με τον κώδικα, συμπεριλαμβανομένης της παραγωγής κώδικα, της εξήγησης, της διόρθωσης, της επεξεργασίας, της μετάφρασης, κ.λπ., καταδεικνύοντας την ικανότητά τους να επιλύουν ποικίλες εργασίες κωδικοποίησης· All-rounder Code LLM : Όλα τα μοντέλα μας εκπαιδεύονται σε δεδομένα που επιτρέπουν την άδεια χρήσης, συλλεχθέντα σύμφωνα με τις αρχές ηθικής της Τεχνητής Νοημοσύνης της IBM και καθοδηγούμενα από την Ομάδα Νομικών Υποθέσεων της IBM για αξιόπιστη χρήση σε επιχειρήσεις. Όλα τα μοντέλα Granite Code κυκλοφορούν υπό την άδεια Apache 2.0. Αξιόπιστο LLM Επιπέδου Επιχείρησης 1 Περιγράφουμε ολόκληρη τη διαδικασία συλλογής, φιλτραρίσματος και προεπεξεργασίας δεδομένων μας στην ενότητα . Η ενότητα περιγράφει τις λεπτομέρειες της αρχιτεκτονικής του μοντέλου, ακολουθούμενες από τις λεπτομέρειες εκπαίδευσης στην Ενότητα . Η ενότητα παρέχει τις λεπτομέρειες σχετικά με τη βελτιστοποίηση οδηγιών, και η ενότητα περιγράφει τα πειράματα και τα αποτελέσματα που συγκρίνουν τα μοντέλα Granite Code με άλλα open-source LLMs. 2 3 4 5 6 2 Συλλογή Δεδομένων Σε αυτήν την ενότητα, περιγράφουμε τη διαδικασία ανίχνευσης και φιλτραρίσματος (Ενότητα ), απαλοιφής διπλοτύπων (Ενότητα ), φιλτραρίσματος HAP/PII (Ενότητα ) που χρησιμοποιήθηκαν για την προετοιμασία των δεδομένων κώδικα για την εκπαίδευση του μοντέλου. Παρέχουμε επίσης μια επισκόπηση των υψηλής ποιότητας δεδομένων φυσικής γλώσσας που χρησιμοποιήθηκαν για τη βελτίωση της κατανόησης της γλώσσας και των δεξιοτήτων μαθηματικού συλλογισμού του μοντέλου. 2.1 2.2 2.3 2.1 Ανίχνευση και Φιλτράρισμα Δεδομένων Τα δεδομένα προ-εκπαίδευσης κώδικα προήλθαν από έναν συνδυασμό δημοσίως διαθέσιμων συνόλων δεδομένων όπως Github Code Clean , StarCoderdata , και πρόσθετα δημόσια αποθετήρια κώδικα και ζητήματα από το GitHub. Φιλτράρουμε τα ακατέργαστα δεδομένα για να διατηρήσουμε μια λίστα 116 γλωσσών προγραμματισμού από πάνω από 300 γλώσσες, όπως αναφέρεται στο Παράρτημα . Η ανάθεση δεδομένων σε γλώσσες προγραμματισμού γίνεται αποκλειστικά με βάση την επέκταση του αρχείου, παρόμοια με το StarCoder ( , ). Μετά το φιλτράρισμα γλωσσών, εφαρμόζουμε τέσσερις βασικούς κανόνες φιλτραρίσματος για να απορρίψουμε κώδικα χαμηλότερης ποιότητας ( , ): (1) αφαίρεση αρχείων με λιγότερο από 25% αλφαβητικούς χαρακτήρες, (2) εκτός από τη γλώσσα XSLT, φιλτράρισμα αρχείων όπου η συμβολοσειρά “<?xml version=” εμφανίζεται εντός των πρώτων 100 χαρακτήρων, (3) για αρχεία HTML, διατήρηση μόνο αρχείων όπου το ορατό κείμενο αποτελεί τουλάχιστον το 20% του κώδικα HTML και έχει ελάχιστο μήκος 100 χαρακτήρων, (4) για αρχεία JSON και YAML, διατήρηση μόνο αρχείων που έχουν αριθμό χαρακτήρων από 50 έως 5000 χαρακτήρες. Επίσης, φιλτράρουμε τα ζητήματα του GitHub χρησιμοποιώντας ένα σύνολο μετρικών ποιότητας που περιλαμβάνουν την αφαίρεση αυτο-δημιουργημένου κειμένου, το φιλτράρισμα ζητημάτων που δεν είναι στα Αγγλικά, την εξαίρεση σχολίων από bots, και τη χρήση του αριθμού των χρηστών που συμμετέχουν στη συζήτηση ως δείκτη ποιότητας. Επίσης, επισημαίνουμε κάθε αρχείο κώδικα με πληροφορίες αδειοδότησης που σχετίζονται με το αντίστοιχο αποθετήριο, που βρέθηκαν μέσω των APIs του GitHub και διατηρούμε μόνο αρχεία με επιτρεπόμενες άδειες για την εκπαίδευση του μοντέλου. 2 3 Α Li et al. 2023a Li et al. 2023a 2.2 Ακριβής και Ασαφής Απαλοιφή Διπλοτύπων Υιοθετούμε μια επιθετική στρατηγική απαλοιφής διπλοτύπων, συμπεριλαμβανομένης τόσο της ακριβούς όσο και της ασαφούς απαλοιφής διπλοτύπων, για να αφαιρέσουμε έγγραφα που έχουν (σχεδόν) πανομοιότυπο περιεχόμενο κώδικα στο σύνολο εκπαίδευσής μας. Για την ακριβή απαλοιφή διπλοτύπων, υπολογίζουμε πρώτα το hash SHA256 στο περιεχόμενο του εγγράφου και αφαιρούμε εγγραφές με πανομοιότυπα hashes. Μετά την ακριβή απαλοιφή διπλοτύπων, εφαρμόζουμε ασαφή απαλοιφή διπλοτύπων με στόχο την αφαίρεση αρχείων κώδικα που μπορεί να έχουν μικρές παραλλαγές και, επομένως, να κάνουμε τα δεδομένα πιο αμερόληπτα. Εφαρμόζουμε μια μέθοδο δύο βημάτων για αυτό: (1) υπολογίζουμε MinHashes όλων των εγγράφων και στη συνέχεια χρησιμοποιούμε Locally Sensitive Hashing (LSH) για να ομαδοποιήσουμε έγγραφα με βάση τα MinHash fingerprints τους, (2) μετρούμε την ομοιότητα Jaccard μεταξύ κάθε ζεύγους εγγράφων στην ίδια ομάδα και επισημαίνουμε έγγραφα εκτός ενός ως διπλότυπα με βάση ένα όριο ομοιότητας 0,7. Εφαρμόζουμε αυτήν τη διαδικασία κοντινής απαλοιφής διπλοτύπων σε όλες τις γλώσσες προγραμματισμού, συμπεριλαμβανομένων των ζητημάτων του GitHub, για να ενισχύσουμε τον πλούτο και την ποικιλομορφία του συνόλου δεδομένων εκπαίδευσης. 2.3 Φιλτράρισμα HAP, PII, Malware Για να μειώσουμε την πιθανότητα παραγωγής μισαλλόδοξου, προσβλητικού ή αθυρόστομου (HAP) λόγου από τα μοντέλα, καταβάλλουμε επιμελείς προσπάθειες για να φιλτράρουμε περιεχόμενο HAP από το σύνολο εκπαίδευσης. Δημιουργούμε πρώτα ένα λεξικό λέξεων-κλειδιών HAP και στη συνέχεια επισημαίνουμε κάθε έγγραφο κώδικα με τον αριθμό των εμφανίσεων τέτοιων λέξεων-κλειδιών στο περιεχόμενο, συμπεριλαμβανομένων των σχολίων. Φιλτράρουμε έγγραφα που υπερβαίνουν το όριο HAP, το οποίο υπολογίζεται με βάση μια κατανομητική ανάλυση καθώς και χειρωνακτική επιθεώρηση αρχείων κώδικα. Επιπλέον, για την προστασία της ιδιωτικότητας, ακολουθούμε το StarCoder ( , ) και καταβάλλουμε επιμελείς προσπάθειες για να διαγράψουμε Προσωπικά Αναγνωρίσιμα Στοιχεία (PII) από το σύνολο εκπαίδευσης. Συγκεκριμένα, αξιοποιούμε το μοντέλο StarPII για να ανιχνεύσουμε διευθύνσεις IP, κλειδιά, διευθύνσεις email, ονόματα, ονόματα χρήστη και κωδικούς πρόσβασης που βρίσκονται στο περιεχόμενο. Το βήμα διαγραφής PII αντικαθιστά το κείμενο PII με τα αντίστοιχα tokens NAME , EMAIL , KEY , PASSWORD και αλλάζει τη διεύθυνση IP με μια συνθετικά δημιουργημένη διεύθυνση IP, όπως στο Li et al. (2023a). Επίσης, σαρώνουμε τα σύνολα δεδομένων μας χρησιμοποιώντας για να εντοπίσουμε και να αφαιρέσουμε περιπτώσεις κακόβουλου λογισμικού στον πηγαίο κώδικα. Li et al. 2023a 4 2.4 Σύνολα Δεδομένων Φυσικής Γλώσσας Εκτός από τη συλλογή δεδομένων κώδικα για την εκπαίδευση του μοντέλου, επιμελούμαστε διάφορα δημοσίως διαθέσιμα σύνολα δεδομένων υψηλής ποιότητας φυσικής γλώσσας για τη βελτίωση της ικανότητας του μοντέλου στην κατανόηση της γλώσσας και στον μαθηματικό συλλογισμό. Αντιπροσωπευτικά σύνολα δεδομένων αυτής της κατηγορίας περιλαμβάνουν έγγραφα ιστού (Stackexchange, CommonCrawl), μαθηματικό κείμενο ιστού (OpenWeb-Math; ( ), StackMathQA; ( )), ακαδημαϊκό κείμενο (Arxiv, Wikipedia), και σύνολα δεδομένων βελτιστοποίησης οδηγιών (FLAN; ( ), HelpSteer ( , )). Δεν αφαιρούμε διπλότυπα από αυτά τα ήδη προ-επεξεργασμένα σύνολα δεδομένων φυσικής γλώσσας. Paster et al. 2023 Zhang 2024 Longpre et al. 2023 Wang et al. 2023 3 Αρχιτεκτονική Μοντέλου Εκπαιδεύουμε μια σειρά μοντέλων κώδικα διαφόρων μεγεθών με βάση την αρχιτεκτονική αποκωδικοποιητή transformer ( , ). Οι υπερπαράμετροι του μοντέλου για αυτά τα μοντέλα δίνονται στον Πίνακα . Για όλες τις αρχιτεκτονικές μοντέλων, χρησιμοποιούμε προ-κανονικοποίηση ( , ): κανονικοποίηση που εφαρμόζεται στην είσοδο των μπλοκ προσοχής και MLP. Vaswani et al. 2017 1 Xiong et al. 2020 : Το μικρότερο μοντέλο στην οικογένεια μοντέλων Granite-code εκπαιδεύεται με RoPE embedding ( , ) και Multi-Head Attention ( , ). Αυτό το μοντέλο χρησιμοποιεί τη συνάρτηση ενεργοποίησης swish ( , ) με GLU ( , ) για το MLP, γνωστό επίσης ως swiglu. Για κανονικοποίηση, χρησιμοποιούμε RMSNorm ( , ) καθώς είναι υπολογιστικά πιο αποδοτικό από το LayerNorm ( , ). Το μοντέλο 3B εκπαιδεύεται με μήκος πλαισίου 2048 tokens. 3B Su et al. 2023 Vaswani et al. 2017 Ramachandran et al. 2017 Shazeer 2020 Zhang & Sennrich 2019 Ba et al. 2016 : Το μοντέλο 8B έχει παρόμοια αρχιτεκτονική με το μοντέλο 3B, με τη διαφορά της χρήσης Grouped-Query Attention (GQA) ( , ). Η χρήση GQA προσφέρει καλύτερη ισορροπία μεταξύ της απόδοσης του μοντέλου και της αποδοτικότητας εξαγωγής συμπερασμάτων σε αυτήν την κλίμακα. Εκπαιδεύουμε το μοντέλο 8B με μήκος πλαισίου 4096 tokens. 8B Ainslie et al. 2023 : Το μοντέλο κώδικα 20B