Συγγραφείς: 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 μαζί με ανθρώπινες οδηγίες και συνθετικά παραγόμενα σύνολα δεδομένων οδηγιών κώδικα ανοιχτού κώδικα. Granite Code Instruct: Τα βασικά μοντέλα της σειράς έχουν εκπαιδευτεί από την αρχή με στρατηγική εκπαίδευσης δύο φάσεων. Στη φάση 1, το μοντέλο μας εκπαιδεύεται σε 3 έως 4 τρισεκατομμύρια tokens που προέρχονται από 116 γλώσσες προγραμματισμού, διασφαλίζοντας μια ολοκληρωμένη κατανόηση των γλωσσών προγραμματισμού και της σύνταξης. Στη φάση 2, το μοντέλο μας εκπαιδεύεται περαιτέρω σε 500 δισεκατομμύρια tokens με ένα προσεκτικά σχεδιασμένο μείγμα δεδομένων υψηλής ποιότητας από τομείς κώδικα και φυσικής γλώσσας για τη βελτίωση της ικανότητας του μοντέλου να συλλογίζεται. Χρησιμοποιούμε το ανεπίβλεπτο γλωσσικό μοντελοποιητικό στόχο για την εκπαίδευση των βασικών μοντέλων και στις δύο φάσεις εκπαίδευσης. Τα μοντέλα instruct προκύπτουν από περαιτέρω βελτιστοποίηση των παραπάνω εκπαιδευμένων βασικών μοντέλων σε έναν συνδυασμό φιλτραρισμένης παραλλαγής του CommitPack ( , ), συνόλων δεδομένων ακολούθησης οδηγιών φυσικής γλώσσας (OASST ( , ), HelpSteer ( , )) και συνόλων δεδομένων μαθηματικών ανοιχτού κώδικα (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). Εκτός από τα βασικά μοντέλα, οι παραλλαγές instruction-tuned των μοντέλων Granite Code μας εμφανίζουν επίσης ισχυρές επιδόσεις στο HumanEvalPack, ξεπερνώντας άλλα open-source (code) instruction models, αποδεικνύοντας οφέλη σε ένα ευρύτερο σύνολο εργασιών κωδικοποίησης με οδηγίες φυσικής γλώσσας (βλ. σχήμα (κάτω)). 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 επιτυγχάνουν ανταγωνιστικές ή state-of-the-art επιδόσεις σε διάφορους τύπους εργασιών σχετικών με τον κώδικα, συμπεριλαμβανομένης της παραγωγής, επεξήγησης, διόρθωσης, επεξεργασίας, μετάφρασης κώδικα, κ.λπ., αποδεικνύοντας την ικανότητά τους να επιλύουν ποικίλες εργασίες κωδικοποίησης· All-rounder Code LLM : Όλα τα μοντέλα μας έχουν εκπαιδευτεί σε δεδομένα με άδεια χρήσης που συλλέχθηκαν σύμφωνα με τις αρχές AI Ethics της IBM και καθοδηγούνται από την ομάδα Εταιρικής Νομικής Συμβούλου της IBM για αξιόπιστη εταιρική χρήση. Όλα τα μοντέλα Granite Code κυκλοφορούν υπό την άδεια Apache 2.0. Trustworthy Enterprise-Grade LLM 1 Περιγράφουμε ολόκληρη τη διαδικασία συλλογής, φιλτραρίσματος και προεπεξεργασίας δεδομένων μας στην ενότητα . Η ενότητα περιγράφει τις λεπτομέρειες της αρχιτεκτονικής του μοντέλου, ακολουθούμενη από τις λεπτομέρειες εκπαίδευσης στην Ενότητα . Η ενότητα παρέχει τις λεπτομέρειες σχετικά με την instruction tuning, και η ενότητα περιγράφει τα πειράματα και τα αποτελέσματα που συγκρίνουν τα μοντέλα Granite Code με άλλα open-source LLMs. 2 3 4 5 6 2 Συλλογή Δεδομένων Σε αυτήν την ενότητα, περιγράφουμε τη διαδικασία crawling και φιλτραρίσματος (Ενότητα ), deduplication (Ενότητα ), φιλτραρίσματος HAP/PII (Ενότητα ) που χρησιμοποιήθηκαν για την προετοιμασία των δεδομένων κώδικα για την εκπαίδευση του μοντέλου. Παρέχουμε επίσης μια επισκόπηση των δεδομένων φυσικής γλώσσας υψηλής ποιότητας που χρησιμοποιήθηκαν για τη βελτίωση της κατανόησης της γλώσσας και των δεξιοτήτων μαθηματικού συλλογισμού του μοντέλου. 2.1 2.2 2.3 2.1 Crawling και Φιλτράρισμα Δεδομένων Τα δεδομένα κώδικα προ-εκπαίδευσης προέρχονταν από έναν συνδυασμό δημόσια διαθέσιμων συνόλων δεδομένων όπως το 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 A Li et al. 2023a Li et al. 2023a 2.2 Ακριβής και Ασαφής Deduplication Υιοθετούμε μια επιθετική στρατηγική deduplication, συμπεριλαμβανομένων τόσο της ακριβούς όσο και της ασαφούς deduplication, για να αφαιρέσουμε έγγραφα που έχουν (σχεδόν) πανομοιότυπο περιεχόμενο κώδικα στο σύνολο εκπαίδευσής μας. Για ακριβή deduplication, πρώτα υπολογίζουμε το hash SHA256 στο περιεχόμενο του εγγράφου και αφαιρούμε εγγραφές με πανομοιότυπα hashes. Μετά την ακριβή deduplication, εφαρμόζουμε ασαφή deduplication με στόχο την αφαίρεση αρχείων κώδικα που μπορεί να έχουν μικρές διαφορές και έτσι να μειώσουμε περαιτέρω την προκατάληψη των δεδομένων. Εφαρμόζουμε μια μέθοδο δύο βημάτων γι' αυτό: (1) υπολογισμός MinHashes όλων των εγγράφων και στη συνέχεια χρήση Locally Sensitive Hashing (LSH) για ομαδοποίηση εγγράφων βάσει των MinHash fingerprints τους, (2) μέτρηση της ομοιότητας Jaccard μεταξύ κάθε ζεύγους εγγράφων στην ίδια ομάδα και επισήμανση εγγράφων εκτός από ένα ως διπλότυπα βάσει ενός ορίου ομοιότητας 0.7. Εφαρμόζουμε αυτήν τη διαδικασία κοντινής deduplication σε όλες τις γλώσσες προγραμματισμού, συμπεριλαμβανομένων των θεμάτων 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), και σύνολα δεδομένων instruction tuning (FLAN; ( ), HelpSteer ( , )). Δεν κάνουμε deduplication αυτών των ήδη προ-επεξεργασμένων συνόλων δεδομένων φυσικής γλώσσας. Paster et al. 2023 Zhang 2024 Longpre et al. 2023 Wang et al. 2023 3 Αρχιτεκτονική Μοντέλου Εκπαιδεύουμε μια σειρά μοντέλων κώδικα διαφόρων μεγεθών βασισμένη στην αρχιτεκτονική αποκωδικοποιητή transformer ( , ). Οι υπερπαράμετροι του μοντέλου για αυτά τα μοντέλα δίνονται στον Πίνακα . Για όλες τις αρχιτεκτονικές μοντέλων, χρησιμοποιούμε pre-normalization ( , ): κανονικοποίηση που εφαρμόζεται στην είσοδο των μπλοκ attention και 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 εκπαιδεύεται με learned absolute position embeddings. Χρησιμοποιούμε Multi-Query Attention ( , ) κατά την εκπαίδευση για αποδοτική εξαγωγή συμπερασμάτων κατάντη. Για το μπλοκ MLP, χρησιμοποιούμε τη συνάρτηση ενεργοποίησης GELU ( 20B Shazeer 2019 Hendrycks &