Mis on Yi-Coder-9B?
Yi-Coder-9B on 9 miljardi parameetriga programmeerimisele keskenduv keelemudel, mille töötas välja 01.AI. Mudel genereerib ja analüüsib teksti, kuid selle treenimine ja kasutusotstarve on suunatud peamiselt tarkvaraarenduse ülesannetele: koodi lõpetamisele, genereerimisele, muutmisele, ühest programmeerimiskeelest teise tõlkimisele, silumisele ja suurte koodikontekstide mõistmisele.
Mudel avaldati avalikult 5. septembril 2024. Selle kaalud on allalaaditavad näiteks Hugging Face'i repositooriumidest, mis tähendab, et kasutajad saavad seda käitada oma taristus või ühilduva kolmanda osapoole teenuse kaudu, selle asemel et sõltuda esimese osapoole hostitud lõpp-punktist.
Yi-Coder-9B on Yi-Coderi perekonna baasmudel. Eraldi mudel Yi-Coder-9B-Chat on mõeldud vestluslikumaks ja juhiste järgimisele keskenduvaks suhtluseks. See erinevus on praktikas oluline: baasmudel on eelkõige loodud teksti ja koodi jätkamiseks või teisendamiseks, samas kui vestluseks häälestatud variant on üldiselt mugavam siis, kui töövoog algab loomulikus keeles esitatud päringutest.
Olulisemad näitajad lühidalt
| Näitaja | Yi-Coder-9B |
|---|---|
| Pakkuja | 01.AI |
| Mudeli tüüp | Avatud kaaludega programmeerimise baasmudel |
| Ligikaudne parameetrite arv | 9 miljardit |
| Avaldamise kuupäev | 5. september 2024 |
| Maksimaalne konteksti pikkus | 128K tokenit ehk 131 072 tokenit |
| Programmeerimiskeelte tugi | 52 keelt vastavalt pakkuja projekti materjalidele |
| Litsents | Apache 2.0 |
| Treeningandmete ajaline piir | 2023. aasta lõpp |
| Hostitud API hind | Selle konkreetse mudeli ametlikku esimese osapoole hinda ei ole dokumenteeritud |
128K tokeni suurune kontekstiaken on mudeli dokumenteeritud maksimaalne konteksti pikkus. Kontekst hõlmab materjali, mille kasutaja mudelile edastab, näiteks juhiseid, lähtefaile, dokumentatsiooni ja varasemat teksti. Esitatud uurimismaterjalides ei ole määratud eraldi maksimaalset väljundtokenite arvu, mistõttu ei tohiks eeldada kontrollitud väljundi ülempiiri, mis ületaks valitud järeldusraamistiku ja saadaoleva riistvara seatud piiranguid.
Programmeerimisvõimalused ja keelte tugi
Yi-Coder-9B on mõeldud programmeerimise töövoogudeks, mitte üldotstarbeliseks vestlusroboti kasutuseks. Toetatud ülesannete hulka kuuluvad uue koodi kirjutamine, osaliselt kirjutatud funktsioonide lõpetamine, olemasoleva koodi muutmine, koodi tõlkimine ühest keelest teise, silumine ning suures repositooriumis paikneva koodi uurimine.
01.AI materjalide kohaselt toetab mudel 52 peamist programmeerimiskeelt. Dokumenteeritud näidete hulka kuuluvad Python, JavaScript, TypeScript, Java, C++, C#, Go, Rust, PHP, SQL, HTML, CSS, YAML, JSON, Shell, Ruby, Swift ja Kotlin. Paljude keelte tugi võib olla kasulik projektides, mis ühendavad rakendusekoodi, taristufaile, andmebaasipäringuid, konfiguratsiooni ja dokumentatsiooni.
Pikk kontekstiaken on eriti oluline repositooriumitaseme töö puhul. Ühe lühikese funktsiooni esitamise asemel võib kasutaja edastada oluliselt rohkem seotud koodi, liideseid, konfiguratsiooni või dokumentatsiooni. Seejärel saab mudel neid materjale muudatuste soovitamisel kasutada. Suur konteksti piirang ei taga siiski, et iga detaili õigesti käsitletakse. Arendajad peaksid endiselt valima asjakohased failid, kontrollima viiteid ja genereeritud muudatusi testima.
Mida avaldatud hindamistulemused näitavad?
01.AI avaldatud hindamistulemused paigutavad Yi-Coder-9B oma suurusklassis konkurentsivõimeliste programmeerimismudelite hulka. Pakkuja mitmekeelsetes HumanEvali tulemustes saavutas see loetletud programmeerimiskeelte lõikes keskmise tulemuse 49,6%. Samuti teatas pakkuja valitud matemaatika ja programmeerimise võrdlustestides keskmisest tulemusest 70,3%.
Need on pakkuja esitatud võrdlustestide tulemused, mitte tootliku kasutuse toimivuse garantiid. Võrdlustestide tulemused võivad erineda sõltuvalt viiba vormingust, genereerimise seadetest, testide valikust, keelest ja hindamismetoodikast. Samuti ei mõõda need kõiki praktilisi nõudeid, näiteks tundmatu repositooriumi mõistmist, kohalike kodeerimistavade järgimist, turvavigade vältimist või hooldatava koodi loomist.
Selle andmebaasi võrdlusskoorid on toimetuslikud hinnangud, mitte 01.AI avaldatud näitajad. Need hindavad mudeli suhtelist arutlus-, programmeerimis-, kiiruse- ja kuluprofiili praktilise võrdluse jaoks ning neid ei tohiks käsitleda 01.AI ametlike hinnangutena.
Modaalsused, arutlusvõime ja tööriistade tugi
Yi-Coder-9B on tekstisisendi ja tekstiväljundiga mudel. Selle kasutus keskendub tekstilistele viipadele ning genereeritud tekstile või koodile. Esitatud uurimismaterjalides ei ole selle konkreetse mudeli puhul dokumenteeritud loomulikku pildi-, heli- ega videosisendit või -väljundit ning need ei kinnita vektorite genereerimise, kõne, meedia genereerimise ega tegevuste genereerimise võimalusi.
Mudel suudab tavalise keelemudeli genereerimise kaudu käsitleda loogika- ja programmeerimisülesandeid, kuid seda ei ole dokumenteeritud eraldi turustatava arutlusmudelina, millel oleks spetsiaalne arutlusrežiim. Seetõttu peaksid kasutajad käsitlema selle arutlusvõimet koodi- ja keele genereerimise käitumise osana, mitte garanteeritud mõttekäigu või spetsiaalse lahendusfunktsioonina.
Funktsioonikutsed, tööriistade kasutamine, JSON-režiim, struktureeritud väljund, viipade vahemällu salvestamine, voogedastus ja pakkide API tugi ei ole selle konkreetse mudeli puhul esitatud uurimismaterjalides dokumenteeritud. Juurutusraamistik võib pakkuda ümbriseid või rakendustaseme juhtelemente, kuid neid ei tohiks segi ajada Yi-Coder-9B loomupäraste ja pakkuja kinnitatud võimalustega.
Juurutus, kohandamine ja litsents
Mudeli avatud kaaludega levitamine on selle peamine praktiline erinevus tavapärasest hostitud programmeerimis-API-st. Arendajad saavad kaalud alla laadida, käitada järeldust kohapeal või privaatses taristus ning valida oma töökoormusele sobiva riistvara ja teenindustarkvara. Ametlikud projekti materjalid dokumenteerivad kasutamist koos Transformers'i ja vLLM-iga, samas kui kogukonna tööriistad toetavad täiendavaid käituskeskkondi ja kvantiseeritud vorminguid.
Kvantiseerimine võib vähendada mälu- ja riistvaranõudeid, salvestades mudeli kaalud väiksema täpsusega vormingutes. See võib muuta kohaliku katsetamise praktilisemaks, kuigi mõju kvaliteedile, kiirusele ja toetatud funktsioonidele sõltub konkreetsest kvantiseerimisest ja käituskeskkonnast. Toetatud töövoona on dokumenteeritud ka peenhäälestus, mis võimaldab organisatsioonidel kohandada mudelit programmeerimisstiili, valdkonna sõnavara või sisemise ülesande järgi.
Yi-Coder-9B ja sellega seotud projekti kood on välja antud Apache 2.0 litsentsi alusel. See litsents on üldiselt lubav, kuid juurutamisotsused eeldavad siiski litsentsiteksti, mudelikaardi juhiste, treeningandmetega seotud kaalutluste, turvakontrollide ja süsteemi genereeritud koodi reguleerivate eeskirjade ülevaatamist.
Hind ja kogukulu
Esitatud uurimismaterjalides ei ole Yi-Coder-9B jaoks loetletud ametlikku esimese osapoole hostitud API hinda. Mudel on saadaval allalaaditavate kaaludena, mistõttu ei väljendata selle otsest hinda olemasolevas dokumentatsioonis korduva tokenipõhise tellimusena.
Ise hostimine ei ole tasuta. Kasutajatel võib tekkida kulu GPU-dele, salvestusruumile, elektrile, võrgule, seirele, hooldusele ja inseneritööle. Kolmanda osapoole hostid võivad küsida tasu arvutusressursi, päringute või genereeritud tokenite eest, kuid need hinnad kuuluvad hostile ja neid ei tohiks esitada 01.AI Yi-Coder-9B hinnana.
Mudel võib siiski olla atraktiivne meeskondadele, kellel on sobiv riistvara või kes vajavad kontrolli andmete ja juurutuse üle. Väiksem mudel võib pakkuda kasulikku kiiruse ja hinna kompromissi võrreldes palju suuremate programmeerimismudelitega, kuigi tegelik läbilaskevõime sõltub suurel määral riistvarast, kvantiseerimisest, pakisuurusest, konteksti pikkusest ja teeninduse konfiguratsioonist. Toimetuslik kuluskoor 9 kajastab mudeli avatud kaaludega ja suhteliselt kompaktse ülesehituse võimalikku taskukohasust; see ei ole pakkuja avaldatud hinnang hinnale.
Olulised piirangud
Yi-Coder-9B on baasmudel, mitte kohe kasutusvalmis programmeerimisassistent. See võib nõuda hoolikalt vormindatud viipasid, lõpetamisele keskenduvaid töövooge või täiendavat rakendusloogikat. Kasutajad, kes soovivad loomulikus keeles vestlust, tugevat juhiste järgimist või kohe kasutatavat programmeerimise vestlusrobotit, võivad eelistada varianti Yi-Coder-9B-Chat.
Selle treeningandmete ajaline piir on 2023. aasta lõpp. Seetõttu ei pruugi mudel tunda hiljem kasutusele võetud teeke, API-sid, keelefunktsioone, turvanõuandeid ja raamistike muudatusi. Värske dokumentatsiooni või repositooriumi konteksti edastamine võib aidata, kuid ei kõrvalda vajadust kontrollida genereeritud koodi ajakohaste allikate põhjal.
Mudelil ei ole dokumenteeritud loomulikku veebiotsingut, mistõttu ei saa see iseseisvalt kindlaks teha, kas uus vastus kajastab veebis olevat ajakohast dokumentatsiooni. Samuti ei ole dokumenteeritud ametlikku esimese osapoole hostitud hinda ega garanteeritud teenusetaseme kättesaadavust. Mudeli kohapeal või kolmanda osapoole kaudu käitamine annab juurutajale vastutuse mahu, uuenduste, juurdepääsukontrolli, logimise ja töökindluse eest.
Genereeritud kood tuleb üle vaadata ja seda testida. Pikk kontekstiaken võib aidata koodi ulatuslikumalt mõista, kuid ei taga sõltuvuste korrektset lahendamist, repositooriumi täielikku mõistmist, turvalist teostust ega edukat käivitamist. Tootmiskasutuses on endiselt olulised staatiline analüüs, ühiktestid, integratsioonitestid ja inimese tehtav ülevaatus.
Parimad kasutusjuhud
- Kohalik koodi lõpetamine: funktsioonide genereerimine või lõpetamine nii, et lähtekood jääb privaatsesse keskkonda.
- Koodi teisendamine: koodilõikude tõlkimine toetatud keelte vahel või koodi uuendamine suure edastatud konteksti piires.
- Repositooriumi analüüs: seotud failide, liideste, konfiguratsiooni ja dokumentatsiooni uurimine 128K tokeni konteksti piirangu piires.
- Arendajate katsetamine: avatud programmeerimismudeli testimine koos Transformersi, vLLM-i, kvantiseerimise või kohandatud teenindustaristuga.
- Peenhäälestus: baasmudeli kohandamine spetsialiseeritud programmeerimisvaldkondade, sisemiste tavade või korduvate koodiülesannete jaoks.
- Mitmekeelne programmeerimine: rakendusekoodi, skriptide, andmebaasipäringute, märgenduse ja konfiguratsioonikeeltega töötamine.
Millal valida Yi-Coder-9B?
Vali Yi-Coder-9B siis, kui allalaaditavad kaalud, privaatne juurutus, kohandatavus ja pikk programmeerimiskontekst on olulisemad kui kohe kasutusvalmis hostitud lahendus. See on mõistlik valik arendajatele, kes suudavad hallata järeldustaristut ning soovivad kontrollida riistvara, mudeliversioone, kvantiseerimist ja peenhäälestust.
Selle suhteliselt väike parameetrite arv võib pakkuda praktilist kiiruse- ja taristueelist palju suuremate programmeerimismudelite ees, eriti juhul, kui eelistatakse kohalikku või privaatset juurutust. See eelis on siiski kompromiss, mitte garantii: suuremad mudelid võivad anda paremaid tulemusi keerulise arutlemise, tundmatute repositooriumide või nüansirohkete juhiste järgimise puhul, samas kui Yi-Coder-9B-d võib olla lihtsam ja odavam käitada.
Kui peamine vajadus on minimaalse seadistusega vestluslik programmeerimisassistent, sobib paremini mõni muu lahendus. Sel juhul on sama perekonna vestluseks häälestatud mudel, näiteks Yi-Coder-9B-Chat, sobivam valik. Kui vastused peavad kajastama kiiresti muutuvaid teeke või dokumentatsiooni, võib eelistada ajakohase veebiühendusega süsteemi. Hostitud API võib olla sobivam ka siis, kui meeskond ei soovi hallata GPU-sid, skaleerimist, jälgitavust, turvalisust ja mudelite teenindamisega seotud toiminguid.
Kokkuvõte
Yi-Coder-9B-d tuleks käsitleda pigem kohandatava, avatud kaaludega programmeerimise alusmudeli kui täieliku arendajarakendusena. Selle kontrollitud tugevused on 128K tokeni suurune kontekstiaken, lai programmeerimiskeelte tugi, Apache 2.0 litsents ning kohaliku juurutuse ja peenhäälestuse tugi. Peamised kompromissid on dokumenteeritud esimese osapoole hostitud hinna, ajakohase veebiühenduse, loomulike multimodaalsete funktsioonide ja eraldi väljundtokenite spetsifikatsiooni puudumine ning lisainseneritöö, mida on vaja baasmudeli tõhusaks teenindamiseks.

