Mpanoratra: 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 Famintarana Ny Modely Lehibe Fiteny (LLM) voaofana amin'ny kaody dia manova ny dingana famolavolana rindrambaiko. Mihabetsaka ny LLM kaody no ampidirina amin'ny tontolo famolavolana rindrambaiko mba hampitomboana ny famokarana ny mpamorona olombelona, ary ny mpitsikilo mifototra amin'ny LLM dia manomboka mampiseho fanantenana amin'ny fikarakarana asa sarotra amin'ny fomba mandeha ho azy. Ny fanatanterahana ny fahafenoan'ny LLM kaody dia mitaky fahaiza-manao maro, anisan'izany ny famoronana kaody, fanamboarana bibikely, fanazavana sy fanondroana kaody, fitantanana tahiry, sy ny maro hafa. Amin'ity asa ity, mampiditra ny andian-dahatsoratra Granite amin'ny modely kaody mpanala-tena izahay ho an'ny asa famoronana kaody, voaofana amin'ny kaody nosoratana tamin'ny fiteny fandaharana 116. Ny fianakavian'ny Modely Kaody Granite dia ahitana modely miovaova ny habeny manomboka amin'ny 3 ka hatramin'ny 34 miliara ny parametera, mety amin'ny fampiharana manomboka amin'ny asa fanavaozana rindrambaiko sarotra ka hatramin'ny tranga ilana fahatsiarovana voafetra amin'ny fitaovana. Ny fanombanana amin'ny andiana asa feno dia mampiseho fa ny Modely Kaody Granite dia tsy tapaka mahatratra ny fampisehoana avo lenta eo amin'ny LLM kaody misokatra. Ny fianakavian'ny Modely Kaody Granite dia natsangana ho an'ny fomba fiasan'ny famolavolana rindrambaiko orinasa ary mandeha tsara amin'ny karazana asa kodé (ohatra, famoronana kaody, fanamboarana ary fanazavana), ka mahatonga azy ho modely kaody mahay mandanjàna. Mamoaka ny modely Kaody Granite rehetra izahay eo ambanin'ny fahazoan-dalana Apache 2.0 ho an'ny fikarohana sy fampiasana ara-barotra. https://github.com/ibm-granite/granite-code-models 1 Fampidirana Tao anatin'ny am-polony taona farany, ny rindrambaiko dia nanjary ampahany manan-danja amin'ny lafiny rehetra amin'ny fiaraha-monina misy antsika. Rehefa mitombo ny fangatahana famolavolana rindrambaiko, dia vao mainka zava-dehibe ny hampitomboana ny famokarana famolavolana rindrambaiko, ary ny LLM dia manome lalana mampanantena ho an'ny fanampiana ireo mpamorona olombelona. Ny tranga ampiasaina amin'ny orinasa ho an'ny LLM amin'ny famokarana rindrambaiko dia ahitana ny famoronana kaody, fanazavana kaody, fanamboarana kaody, famoronana andrana vondrona sy fanondroana, fanavaozana rindrambaiko, fitadiavana fahadisoana, fandikan-teny kaody, sy ny maro hafa. Tao anatin'ny taona vao haingana, dia nahita fandrosoana haingana ny fahaizan'ny LLM hamorona sy hanao fanovana ny kaody, ary misy andiana modely manana fahaiza-manao kodé mahavariana ankehitriny. Ny modely dia miovaova ny habeny manomboka amin'ny miliara vitsivitsy (ohatra, Llama-7B (Touvron et al., 2023), Gemma-7B (Gemma-Team et al., 2024), sns.) ka hatramin'ny zato miliara: DBRX (Databricks), Arctic (Snowflake), Grok, Mixtral 8x22B (MistralAI), Command R+ (Cohere), ary miovaova amin'ny ankapobeny ny fampiasana kendrena, miaraka amin'ny modely sasany mikendry ny handrakotra asa maro ivelan'ny kaody, raha ny hafa kosa dia mifantoka voalohany amin'ny asa mifandraika amin'ny kaody (ohatra, StarCoder (Li et al., 2023a; Lozhkov et al., 2024), CodeGen (Nijkamp et al., 2023), CodeLlama (Rozie`re et al., 2023), ary CodeGemma (CodeGemma Team et al., 2024)). Na izany aza, mbola misy banga lehibe eo amin'ny sehatry ny LLM ho an'ny kaody, indrindra amin'ny tontolon'ny famolavolana rindrambaiko orinasa. Voalohany, na dia mahomby amin'ny fampisehoana kodé aza ny LLM ankapobeny lehibe dia lehibe, ny haben'izy ireo dia lafo ny fametrahana azy. Ny modely kaody kely kokoa ( , ; , ; , ; , ; , ) dia afaka mahatratra fampisehoana famoronana kaody tena tsara amin'ny fonosana kely sy mora kokoa, saingy ny fampisehoana amin'ny asa kodé mihoatra ny famoronana (ohatra, fanamboarana sy fanazavana) dia mety hihoatra ny fampisehoana famoronana kaody. Li et al. 2023a Lozhkov et al. 2024 Nijkamp et al. 2023 Rozie`re et al. 2023 CodeGemma Team et al. 2024 Ao amin'ny tontolo orinasa maro, ny fampiasana LLM kaody dia mety ho sarotra kokoa noho ny fampisehoana ny modely. Ohatra, na dia misy modely misokatra aza dia misy tsy fahampian'ny mangarahara momba ny loharanom-baovao sy ny fomba fanodinana angona izay nampidirina tao amin'ny modely, izay mety hampihena ny fahatokisana ny modely amin'ny toe-javatra tena ilaina sy voafehy. Fanampin'izay, ny fepetra fahazoan-dalana amin'ny LLM misokatra ankehitriny dia mety hisakana sy hampiady hevitra ny fahafahan'ny orinasa mampiasa modely. Eto, mampiditra ny modely Granite Code izahay, andiana LLM kaody tena mahay, natsangana hanohanana ny famolavolana rindrambaiko orinasa amin'ny karazana asa kodé maro. Ny modely Granite Code dia manana karazany roa lehibe izay mamoaka amin'ny habeny efatra (3B, 8B, 20B, ary 34B): modely fototra fototra ho an'ny asa mifandraika amin'ny kaody; Granite Code Base: modely manaraka toromarika noforonina tamin'ny alalan'ny fampifangaroana ireo fanovana Git miaraka amin'ny toromarika olombelona sy ireo angona fanondroana kaody sintona avy amin'ny loharano misokatra. Granite Code Instruct: Ny modely fototra amin'ny andiany dia voaofana hatrany am-boalohany miaraka amin'ny paikady fanofanana roa dingana. Amin'ny dingana 1, ny modely dia voaofana amin'ny 3 ka hatramin'ny 4 trillion marika avy amin'ny fiteny fandaharana 116, miantoka ny fahatakarana feno ny fiteny fandaharana sy ny syntax. Amin'ny dingana 2, ny modely dia voaofana bebe kokoa amin'ny 500 miliara marika miaraka amin'ny fifangaroana angona avo lenta avy amin'ny sehatry ny kaody sy ny fiteny mba hanatsarana ny fahaizan'ny modely mihevitra. Mampiasa ny tanjon'ny fiteny tsy voafehy izahay mba hampiofanana ny modely fototra amin'ny dingana roa amin'ny fanofanana. Ny modely fampianarana dia avy amin'ny fanamafisana bebe kokoa ireo modely fototra voaofana teo aloha tamin'ny fifangaroana ny kinova voasivan'ny CommitPack ( , ), angona fanarahan-dalana toromarika teny voajanahary (OASST ( , ), HelpSteer ( , )) ary angona matematika misokatra (MathInstruct ( , ) ary MetaMathQA ( , )), anisan'izany ny angona kaody sintona ho an'ny fanatsarana ny fanarahan-dalana toromarika sy ny fahaiza-mihevitra. Muennighoff et al. 2023 Ko¨ pf et al. 2023 Wang et al. 2023 Yue et al. 2023 Yu et al. 2023 Manaova fanombanana feno ny LLM kaodinay amin'ny andiana benchmarks feno, anisan'izany ny HumanEvalPack ( , ), MBPP(+) ( , ; , ), RepoBench ( , ), ReCode ( , ), sy ny maro hafa. Ity andiana benchmarks ity dia mandrakotra karazana asa kodé maro ankoatra ny famoronana kaody ao amin'ny Python, ohatra, fanamboarana kaody, fanazavana kaody, fanovana kaody, fandikan-teny kaody, sns., amin'ny ankamaroan'ny fiteny fandaharana lehibe (Python, JavaScript, Java, Go, C++, Rust, sns.). Muennighoff et al. 2023 Austin et al. 2021 Liu et al. 2023a Liu et al. 2023b Wang et al. 2022 Ny zavatra hitanay dia mampiseho fa eo anivon'ny modely misokatra, ny modely Granite Code dia mampiseho fampisehoana matanjaka be eo amin'ny haben'ny modely sy benchmarks rehetra (matetika mihoatra ny modely kaody misokatra hafa izay indroa lehibe kokoa noho i Granite). Ho ohatra, ny sary (ambony) dia mampiseho fampitahana ny Granite-8B-Code-Base amin'ny LLM fototra kaody misokatra hafa, ao anatin'izany ny LLM fototra ankapobeny vao haingana natao ho mahomby toy ny Mistral ( , ) sy LLama-3 ( , ) eo amin'ny HumanEvalPack ( , ). Raha tsara ny fampisehoana ny CodeGemma sy StarCoder2 amin'ny famoronana kaody, dia ratsy be ny fampisehoana amin'ny variants fanamboarana sy fanazavana kaody ao amin'ny HumanEvalPack. Amin'ny salan'isa, ny Granite-8B-Code-Base dia mihoatra ny modely CodeGemma-8B mifaninana indrindra amin'ny 12 isa eo ho eo amin'ny HumanEvalPack (33.2% vs 21.3%), na dia voaofana amin'ny isa kely kokoa aza ny marika (4.5T vs 7.5T marika). Ankoatra ny modely fototra, ny variants nampianarin'ny toromarika momba ny modely Granite Code dia mampiseho fampisehoana matanjaka ihany koa amin'ny HumanEvalPack, mihoatra ny modely toromarika misokatra hafa (kaody), mampiseho tombontsoa amin'ny andiana asa kodé midadasika kokoa miaraka amin'ny toromarika teny voajanahary (jereo ny sary (ambany)). 1 Jiang et al. 2023b AI@Meta 2024 Muennighoff et al. 2023 1 Fanampin'izany, satria zava-dehibe ny fisainana amin'ny famahana olana sy asa sarotra, dia manandrana ihany koa ny modely Granite-8B-Code-Base izahay amin'ny benchmarks matematika enina, ao anatin'izany ny MATH ( , ), GSM8K ( , ) sy famahana olana amin'ny fahafahana miditra amin'ny fitaovana kajy, izay mahatratra ny modely 8B anay ny fampisehoana tsara kokoa raha oharina amin'ny ankamaroan'ny LLM 7B na 8B avo lenta. Ohatra, ny Granite-8B-Code-Base dia mihoatra ny Llama-3-8B-Base amin'ny ~12 isa eo amin'ny GSM8K sy ~6 isa eo amin'ny MATH (jereo ny latabatra ). Cobbe et al. 2021 Cobbe et al. 2021 15 Ny tombontsoa lehibe amin'ny modely Granite Code dia ahitana: : Ny modely Granite Code dia mahatratra fampisehoana mifaninana na avo lenta amin'ny karazana asa mifandraika amin'ny kaody, ao anatin'izany ny famoronana kaody, fanazavana, fanamboarana, fanovana, fandikan-teny, sns., mampiseho ny fahaizany mamaha asa kodé isan-karazany; Modely Kaody Feno : Ny modely rehetra dia voaofana amin'ny angona azo alalana azo angonina mifanaraka amin'ny fitsipiky ny IBM momba ny etika AI ary tarihin'ny ekipa ara-dalàna ao amin'ny IBM ho an'ny fampiasana orinasa azo itokisana. Ny modely Granite Code rehetra dia mivoaka eo ambanin'ny fahazoan-dalana Apache 2.0. Modely Feno Fitokisana ho an'ny Orinasa 1 Faranoaranay ny fomba fanangonana angona, fanivanana ary fanodinana rehetra ao amin'ny fizarana . Ny fizarana dia mamariparitra ny antsipiriany momba ny rafitry ny modely, arahin'ny antsipiriany fanofanana ao amin'ny Fizarana . Ny fizarana dia manome ny antsipiriany momba ny fanamafisana ny toromarika, ary ny fizarana dia mamariparitra ny andrana sy ny vokatra mampitaha ny modely Granite Code amin'ny LLM misokatra hafa. 2 3 4 5 6 2 Fanangonana Angona Amin'ity fizarana ity, mamariparitra ny dingana fampandriana sy fanivanana (And. ), fanalana duplicates (And. ), fanivanana HAP/PII (And. ) ampiasaina hanomanana ny angona kaody ho an'ny fanofanana modely. Manome hevitra ankapobeny momba ny angona teny voajanahary avo lenta ampiasaina hanatsarana ny fahatakarana fiteny sy ny fahaiza-mihevitra matematika ihany koa izahay. 2.1 2.2 2.3 2.1 Fampandriana sy Fanivanana Angona Ny angona kaody famelohana voalohany dia nalaina avy amin'ny fifangaroan'ny angona misokatra toy ny Github Code Clean , StarCoderdata , ary tahiry kaody sy olana misokatra hafa avy amin'ny GitHub. Manivana ny angona manta izahay mba hitazomana lisitr'ireo fiteny fandaharana 116 amin'ny fiteny 300+ mihoatra, araka ny voalaza ao amin'ny Appendice . Ny fampifandraisana ny angona amin'ny fiteny fandaharana dia ataon'ny fanitarana rakitra ihany, mitovy amin'ny StarCoder ( , ). Aorian'ny fanivanana fiteny, dia mampihatra fitsipika fanivanana lehibe efatra izahay mba hanivana ny kaody ambany kalitao ( , ): (1) esorina ny rakitra misy tarehintsoratra alfabeta latsaky ny 25%, (2) afa-tsy ny fiteny XSLT, esorina ny rakitra izay misy ny teny hoe "<?xml version=” eo anatin'ny 100 tarehintsoratra voalohany, (3) ho an'ny rakitra HTML, tazonina ihany ny rakitra izay mahatratra 20% fara-kelatsy ny soratra hita ao amin'ny kaody HTML ary manana halavany farafahatsiarany 100 tarehintsoratra, (4) ho an'ny rakitra JSON sy YAML, tazonina ihany ny rakitra manana isa tarehintsoratra manomboka amin'ny 50 ka hatramin'ny 5000 tarehintsoratra. Manondro ihany koa ny olana GitHub izahay amin'ny alalan'ny andiana metrika kalitao izay ahitana ny fanesorana ny lahatsoratra novokarin'ny milina, ny fanivanana ireo olana tsy anglisy, ny fanesorana ny fanehoan-kevitr'i bot, ary ny fampiasana ny isan'ny mpampiasa mandray anjara amin'ny resaka ho marika ny kalitao. Manondro ihany koa ny rakitra kaody tsirairay miaraka amin'ny vaovao momba ny fahazoan-dalana mifandraika amin'ny tahiry tsirairay, hita amin'ny alalan'ny API GitHub ary tazonina ihany ny rakitra misy fahazoan-dalana mety hampiasaina amin'ny fanofanana modely. 2 3 A Li et al. 2023a Li et al. 2023a 2.2 Fanalana Duplicates Marina sy Mifangaro Mampiasa paikady fanalana duplicates hentitra izahay, ao anatin'izany ny fanalana duplicates marina sy mifangaro mba hanesorana ireo antontan-taratasy manana (saika) kaody mitovy tanteraka ao amin'ny angona fanofanana. Ho an'ny fanalana duplicates marina, dia kajianay aloha ny hashes SHA256 amin'ny votoatin'ny antontan-taratasy ary esorina ny firaketana manana hashes mitovy. Aorian'ny fanalana duplicates marina, dia mampihatra ny fanalana duplicates mifangaro izahay miaraka amin'ny tanjona hanesorana ireo rakitra kaody izay mety manana fanovana kely ary noho izany dia hanalana ny angona bebe kokoa. Mampiasa fomba roa dingana ho an'izany izahay: (1) kajiana ny MinHashes amin'ny antontan-taratasy rehetra ary avy eo ampiasaina ny Locally Sensitive Hashing (LSH) mba hampifangaroana ireo antontan-taratasy mifototra amin'ny rina-tsoratra MinHash azy ireo, (2) refesina ny fitoviana Jaccard eo amin'ny mpivady tsirairay amin'ny antontan-taratasy ao anaty vilia iray ihany ary atao hoe duplicates ireo antontan-taratasy afa-tsy iray, mifototra amin'ny fetra fitoviana 0.7. Mampihatra ity dingana fanalana duplicates akaiky ity amin'ny fiteny fandaharana rehetra izahay ao anatin'izany ny olana GitHub mba hanatsarana ny harena sy ny fahasamihafana amin'ny angona fanofanana. 2.3 Fanivanana HAP, PII, Malware mba hampihenana ny mety hisian'ny teny fankahalana, fampihorohoroana, na fahaloto fiteny (HAP) avy amin'ny modely, dia manao ezaka mafy izahay mba hanivana ny votoaty HAP ao amin'ny angona fanofanana. Mamorona diksionera teny fankahala HAP izahay ary avy eo manondro ny antontan-taratasy kaody tsirairay miaraka amin'ny isa ny fisehoan'ireo teny fanalahidy toy izany ao anatin'ny votoaty anisan'izany ny fanehoan-kevitra. Manivana ireo antontan-taratasy mihoatra ny fetra HAP izahay, kajiana mifototra amin'ny famakafakana fitsinjarana ary koa ny famakafakana amin'ny tanana ny rakitra kaody. Fanampin'izany, mba hiarovana ny fiainana manokana, manaraka ny StarCoder izahay ( , ) ary manao ezaka mafy mba hanalana ireo Fampahalalana Maha-manokana (PII) ao amin'ny angona fanofanana. Amin'ny fomba manokana, mampiasa ny modely StarPII izahay mba hamantarana ny adiresy IP, lakile, adiresy mailaka, anarana, anarana mpampiasa, ary teny miafina hita ao anatin'ny votoaty. Ny dingana fanalana PII dia manolo ny lahatsoratra PII amin'ny marika mifanaraka amin'ny NAME, EMAIL, KEY, PASSWORD ary manova ny adiresy IP amin'ny adiresy IP sintona, toy ny ao amin'ny Li et al. (2023a). Scan ihany koa ny angonam-baovao izahay mba hamantarana sy hanesorana ireo tranga malware ao amin'ny kaody loharano. Li et al. 2023a 4 2.4 Angonam-baovao Teny Voajanahary Ho fanampin'ny fanangonana angona kaody ho an'ny fanofanana modely, manangona angonam-baovao teny voajanahary avo lenta maromaro misokatra izahay mba hanatsarana ny fahafahan'ny modely amin'ny fahatakarana fiteny sy ny fahaiza-mihevitra matematika. Ny angona marika eo ambanin'ity sokajy ity dia ahitana antontan-taratasy web (Stackexchange, CommonCrawl), lahatsoratra matematika web (OpenWeb-Math; ( ), StackMathQA; ( )), lahatsoratra akademika (Arxiv, Wikipedia), ary angona fanamafisana toromarika (FLAN; ( ), HelpSteer ( , )). Tsy manala duplicates amin'ireo angonam-baovao teny voajanahary efa novokarina ireo izahay. Paster et al. 2023 Zhang 2024 Longpre et al. 2023 Wang et al. 2023 3 Rafitra Modely Mampiofana andiana modely kaody amin'ny habeny miovaova izahay mifototra amin'ny rafitra mpanala transformer ( , ). Ny hyperparameters amin'ny modely ho an'ireo modely ireo dia omena ao amin'ny Latabatra . Ho an'ny rafitra modely rehetra, mampiasa fampifanarahana mialoha izahay ( , ): ny fampifanarahana dia ampiharina amin'ny fampidirana amin'ny sakana attention sy MLP. Vaswani et al. 2017 1 Xiong et al. 2020 : Ny modely kely indrindra amin'ny fianakavian'ny modely Granite-code dia voaofana amin'ny fampidirana RoPE ( , ) sy Multi-Head Attention ( , ). Ity modely ity dia mampiasa ny asa fampitoviana swish ( , ) miaraka amin'ny GLU ( , ) ho an'ny MLP, fantatra koa amin'ny anarana hoe swiglu. Ho an'ny fampifanarahana, mampiasa RMSNorm izahay ( , ) satria mahomby kokoa amin'ny kajy izy io noho ny LayerNorm ( , ). Ny modely 3B dia voaofana miaraka amin'ny halavany fifandraisana 2048 marika. 3B Su et al. 2023 Vaswani et al. 2017 Ramachandran et al. 2017 Shazeer 2020 Zhang & Sennrich 2019 Ba et al. 2016 : Ny modely 8B dia manana rafitra mitovy amin'ny modely 3B afa-tsy ny fampiasana Grouped-Query Attention (GQA) ( , ). Ny fampiasana GQA dia manome fifandanjana tsara kokoa eo amin'ny fampisehoana modely sy ny fahombiazan'ny famoahana amin'io elanelana io. Mampiofana ny modely 8B izahay miaraka amin'ny halavany fifandraisana 4096 marika. 8B Ainslie et al. 2023 : Ny modely kaody 20B dia voaofana miaraka amin'ny fampidirana toerana napetraka. Mampiasa Multi-Query Attention izahay ( , ) mandritra ny fanofanana mba hahomby ny famoahana aoriana. Ho an'ny sakana MLP, mampiasa ny asa fampitoviana GELU izahay ( , ). Ho an'ny fampifanarahana ny fampitoviana, mampiasa LayerNorm izahay ( , ). Ity modely ity dia voaofana miaraka amin'ny halavany fifandraisana 8192 marika. 20B Shazeer 2019 Hendrycks & Gimpel 2023 Ba et al. 2016 : mba hampiofanana ny modely 34B, manaraka ny fomba nata 34B