Mellum: Modeli Ndogo na ya Haraka ya Kukamilisha Msimbo katika Kihariri Chako
Ulimwengu wa Mazingira Jumuishi ya Ukuzaji (IDEs) kwa muda mrefu umeimarishwa na nguvu na usahihi wa vipengele vya ukamilishaji otomatiki. Hata hivyo, mshindani mpya ameingia kwenye uwanja: Akili Bandia (AI). Ushirikiano wa AI katika IDEs unazidi kuwa wa kawaida, na kusababisha tathmini mpya ya zana za jadi. Ingawa mbinu hizi za zamani bado zinafanya kazi, zinaweza zisitoe usaidizi wa kisasa ambao watengenezaji wanatarajia sasa.
Makala haya yametokana na chapisho la blogu na JetBrains, na yanaeleza mafunzo na uwezo wa Mellum, modeli inayoendeshwa na ukamilishaji otomatiki wa msingi wa wingu. JetBrains, inayojulikana kwa IDEs na wahariri wa msimbo iliyoundwa kwa ajili ya programu, imeunda Mellum ili kutoa ukamilishaji otomatiki wa msimbo wa haraka na ufanisi. Mellum imeundwa kufanya kazi kwa ufanisi kwenye kifaa cha ndani, na kuiweka kando kama mojawapo ya modeli za haraka zaidi na zenye kompakt katika darasa lake. Mradi sawa kimawazo ni Microsoft Phi.
Kukabiliana na Changamoto Zilizo Wazi
Wahandisi wa JetBrains walikumbana na changamoto kadhaa muhimu katika harakati zao za ukamilishaji otomatiki unaoendeshwa na AI:
- Kasi na Gharama: Modeli za kawaida za gumzo zilionekana kuwa hazifai kutokana na gharama zao za juu za kompyuta na nyakati za polepole za majibu. Modeli hizi pia hazikuwa na ufahamu wa mbinu mahususi za msimbo kama vile kujaza katikati (FIM) au uponyaji wa tokeni.
- Uumbizaji wa Matokeo: Modeli za gumzo maarufu mara nyingi zilitengeneza data katika miundo isiyolingana, na hivyo kufanya iwe vigumu kuchanganua majibu na kuyaunganisha kwa urahisi katika kihariri.
- Asili ya Data: Kuamua asili ya data ya mafunzo na kupunguza masuala yanayoweza kutokea ya ukiukaji wa hakimiliki kuliwasilisha kikwazo kikubwa.
Mellum: Muhtasari
Timu ya maendeleo katika JetBrains iligundua kuwa kuunda modeli yao wenyewe ndiyo njia bora zaidi. Lengo lao lilikuwa kuunda modeli ambayo ililinganisha ubora, gharama za uingizaji, na muda wa kusubiri huku ikifunzwa kwenye data yenye asili iliyo wazi. Utafiti wa awali ulipendekeza kwamba modeli yenye takriban vipimo bilioni 4 inaweza kutoa uwezo wa ukamilishaji otomatiki kwa matukio na watumiaji mbalimbali. Zaidi ya hayo, kwa kufunza modeli pekee kwenye msimbo, wangeweza kuanzisha msamiati maalum wa tokeni, bila data isiyo muhimu.
Mchakato wa mafunzo kwa modeli ya Mellum una hatua tatu tofauti, kila moja ikichangia ujuzi mpya na kuboresha ubora wa msimbo uliotengenezwa. Awamu ya awali inahusisha mafunzo ya awali ya msingi kwenye mkusanyiko mkubwa wa faili za mtu binafsi. Hatua ya pili inajumuisha kusafisha modeli kwa seti ndogo ya mifano maalum. Kujifunza kwa Kuimarisha na Maoni ya AI (RLAIF) kunatumiwa katika hatua ya tatu ili kukabiliana na modeli na sifa mahususi za IDE na kuondoa matokeo yasiyotakiwa.
Mafunzo ya Awali
Ili kuepuka masuala yanayoweza kutokea yanayohusiana na asili ya data isiyo wazi, modeli ilifunzwa kutoka mwanzo, ikihitaji utangulizi wa kina kwa lugha nyingi, sintaksia ya programu, ruwaza, na dhana kuu.
Seti ya Data
Chanzo kikuu cha data kwa mafunzo ya awali kilikuwa TheStack. Seti hii ya data inahakikisha kwamba data ni nzuri kisheria na yenye manufaa kwa vitendo.
Mchakato wa Mafunzo ya Awali
Wakati wa mafunzo ya awali, seti ya data ilichukuliwa mara nyingi ili kufikia takriban tokeni trilioni 3. Dirisha la muktadha la tokeni 8192 lilitumika, huku seti ya data ikigawanywa katika vipande vya ukubwa huu. Mabadiliko ya kujaza katikati (FIM) yalitumiwa kwa nusu ya faili katika kila kipande, na kuhimiza modeli kuzingatia msimbo unaotangulia na unaofuata. Mbinu hii inaiga kwa karibu matukio halisi ya utengenezaji wa msimbo.
Awamu ya mafunzo ya awali ilifanyika kwenye nguzo ya nodi kumi na sita, kila moja ikiwa na vifaa vya GPU nane za H100. Hatua hii ilichukua takriban siku 15 kukamilika, na kusababisha modeli ya msingi ya vipimo bilioni 4 ya Mellum.
Mafunzo ya awali huunda modeli ya kusudi la jumla ya ukamilishaji otomatiki wa msimbo yenye ujuzi mkubwa wa lugha nyingi za programu. Hata hivyo, katika hatua hii, modeli hufunzwa tu kutabiri tokeni inayofuata katika sehemu ya faili iliyochaguliwa nasibu. Bila muktadha wa ziada, modeli haina ufahamu wa muundo wa msimbo na haina utaratibu wa kuamua wakati wa kuacha kutengeneza msimbo.
Hatua ya urekebishaji mzuri imeundwa ili kushughulikia mapungufu haya.
Urekebishaji Mzuri unaozingatia Muktadha
Kujaza Katikati Kuboreshwa
Tofauti na mafunzo ya awali, ambapo vipande vya msimbo huchaguliwa nasibu kwa utabiri, urekebishaji mzuri huzingatia kugawanya msimbo kwa njia yenye maana zaidi, kufundisha modeli kutoa vipande vya msimbo vinavyotokea ‘porini’.
Mifano Maalum
Katika mazoezi, ukamilishaji otomatiki wa msimbo unahitaji kuelewa faili zinazozunguka na muktadha mpana zaidi, unaowezekana kujumuisha miradi yote.
Kwa usindikaji wa data, kampuni ilizindua mradi wa ndani ulioitwa Code Engine: SDK ya majukwaa mbalimbali na seti ya huduma za dashibodi zilizotengenezwa ili kujenga muktadha moja kwa moja kutoka kwa faili za kawaida bila kuhitaji kuorodhesha mradi kamili. SDK hii ilitumwa kwenye nguzo ya ndani ya MapReduce na kutumika kuchakata maelfu ya hazina za umma, na kutoa mifano mingi muhimu kwa mafunzo katika muda unaofaa.
Kupata algoriti sahihi kulihitaji majaribio na makosa.
Kurekebisha kwa Lugha Mahususi
Modeli ndogo zinaweza kufaidika sana kutokana na utaalam kwa lugha mahususi. Ingawa modeli ya msingi imefunzwa kwa zaidi ya lugha 80, watumiaji wengi kwa kawaida hufanya kazi na moja au mbili tu. Ili kukabiliana na hili, JetBrains iliunda modeli nyingi maalum:
- mellum-all: Inaauni lugha nyingi na lahaja zinazopatikana katika IDEs za JetBrains, lakini ubora wa ukamilishaji otomatiki ni chini kuliko modeli maalum.
- mellum-python: Ina utaalam katika Python na Jupyter.
- mellum-kotlin: Ina utaalam katika Java na Kotlin.
- mellum-web: Ina utaalam katika teknolojia za wavuti.
Hatua ya Mwisho: RLAIF
Hatimaye, kesi ambazo malengo ya kujifunza hayalingani na matarajio ya mtumiaji lazima zitatuliwe. Awamu ya ziada ya mafunzo, RLAIF — Kujifunza kwa Kuimarisha na Maoni ya AI, hutumiwa kutatua matatizo kama hayo.
Modeli hujifunza kutoka kwa mwingiliano wa mtumiaji na inaelewa jinsi ya kuonyesha vyema mapendekezo ya mtumiaji.
Mbinu hii haiboresha tu alama ya jumla ya ubora lakini pia inapunguza idadi ya mabaki ya kizazi ya kukasirisha.
Mellum ni Nzuri Kiasi Gani?
Modeli hufanya kazi vizuri sana kwa ukubwa wake. Hivi ndivyo ilivyotathminiwa:
- Kwanza, modeli ilitathminiwa kwenye alama ya ndani iliyoandikwa ‘JetBrains BigCode’.
- Kisha ilijaribiwa kwenye alama za umma zinazojulikana kama vile SAFIM.
- Hatimaye, takwimu za matumizi ya vipengele zilikusanywa, na vipimo vya mtumiaji vilihesabiwa.
Tathmini Nje ya Mtandao
Kukusanya data ni kazi ngumu, lakini kuunda kipimo kizuri ambacho kinalinganisha pendekezo la asili na jipya lililopendekezwa na mtandao wa neva ni changamoto zaidi. Tulifanya utafiti mdogo na hatimaye tukatulia kwenye mchanganyiko wa vipimo viwili vya msingi:
EM:
- Mechi Sahihi ni wazo maarufu sana.
- Utabiri unachukuliwa kuwa mzuri ikiwa mstari wa kwanza wa ukamilishaji unalingana na mstari wa kwanza wa asili, na usindikaji mdogo.
KK:
- Kipimo kilipewa jina la waandishi wake.
- Idadi ya mistari iliyopendekezwa kutoka kwa asili imegawanywa na idadi ya mistari katika ukamilishaji uliopendekezwa.
JetBrains BigCode
Modeli ilitathminiwa dhidi ya seti ya data ya alama iliyopatikana kwa kutumia zana ya ndani ya JetBrains BigCode.
Kwa kudumisha udhibiti kamili juu ya seti yetu ya data badala ya kutegemea alama za umma, inakuwa inawezekana kutathmini kwa uaminifu ubora wa modeli kwa mitindo na mazoea mbalimbali ya kuweka misimbo.
Matokeo ya tathmini yetu ya JetBrains BigCode yanaonyesha ubora unaofanana na modeli maarufu, lakini Mellum ni ndogo na yenye ufanisi zaidi.
Ubora wa mapendekezo ya mstari mmoja (kipimo cha EM)
Alama za Umma
Modeli ilitathminiwa sio tu kwenye seti ya data ya ndani lakini pia kwenye alama mbalimbali za umma, kama vile alama ya lugha nyingi SAFIM (kujaza katikati kwa ufahamu wa sintaksia).
Tathmini Mtandaoni
Kipimo kikuu kinaitwa uwiano wa msimbo uliokamilishwa (RoCC). Inafafanuliwa kama uwiano wa herufi za msimbo ulioandikwa kwa kutumia ukamilishaji otomatiki wa msimbo kwa jumla ya kiasi cha msimbo katika kihariri.
Kipimo kingine muhimu ni kiwango cha kukubalika (AR), ambacho kinahesabiwa kama idadi ya mapendekezo yaliyokubaliwa imegawanywa na idadi ya mapendekezo yote yaliyoonyeshwa.
Huu ulikuwa safari ngumu, lakini wataalamu wa JetBrains waliikamilisha kwa heshima. Mwishowe, modeli moja ya jumla na kadhaa maalum zilipatikana, ambazo zinapatikana kupitia jukwaa la JetBrains AI. Sasa zinafanya kazi kwa mafanikio katika Msaidizi wa JetBrains AI.
Nini Kifuata?
- Wahandisi wa JetBrains kwa sasa wanafanya kazi kwenye modeli ya lugha za ukuzaji wa wavuti. Inaweza kupatikana kwa umma hivi karibuni.
- Kuna mipango ya kuongeza idadi ya vipimo na utofauti wa data kwa wakati mmoja. Kuna kazi nyingi tofauti katika kuweka misimbo — Mellum ataweza kuzifanya pia. Utendaji wa huduma bado ni kipimo muhimu, kwa hivyo upanuzi wa modeli utakuwa ndani ya mipaka inayofaa.