Sukūrėme GPT‑4 – naujausią „OpenAI“ etapą plečiant gilųjį mokymąsi. GPT‑4 – tai didelis multimodalinis modelis (priimantis vaizdų ir teksto įvestis, teikiantis tekstinę išvestį), kuris, nors ir yra mažiau gabus nei žmonės daugelyje realaus pasaulio scenarijų, demonstruoja žmogaus lygio rezultatus įvairiuose profesiniuose ir akademiniuose lyginamuosiuose testuose. Pavyzdžiui, jis išlaiko imituojamą advokatų egzaminą, surinkdamas balų skaičių, kurio užtenka patekti tarp geriausių 10 % laikiusiųjų; GPT‑3.5 rezultatas, priešingai, pateko į prasčiausių 10 % intervalą. Šešis mėnesius iteraciniu būdu derindami GPT‑4 , pasinaudodami patirtimi, įgyta naudojantis spragoms nustatyti skirta testavimo programa ir ChatGPT, pasiekėme geriausių (nors toli gražu ne idealių) faktinio tikslumo, valdomumo ir gebėjimo neperžengti apsaugos nuo piktnaudžiavimo ribų rezultatų.
Per pastaruosius dvejus metus perkūrėme visą savo gilaus mokymosi techninį paketą ir kartu su „Azure“ nuo nulio suprojektavome superkompiuterį, skirtą mūsų darbo krūviui. Prieš metus mokėme GPT‑3.5 – tai buvo pirmasis sistemos „bandomasis paleidimas“. Radome ir ištaisėme keletą klaidų bei patobulinome teorinius pagrindus. Dėl to mūsų GPT‑4 mokymo eiga buvo (bent jau mums!) neįprastai stabili – tai pirmasis didelis modelis, kurio mokymo našumą galėjome tiksliai numatyti iš anksto. Toliau telkdami dėmesį į patikimą mastelio keitimą, siekiame tobulinti savo metodiką, kad ji padėtų numatyti būsimas galimybes ir joms pasirengti kuo anksčiau – tai laikome itin svarbiu kriterijumi saugai užtikrinti.
GPT‑4 teksto įvesties galimybę teikiame per „ChatGPT“ ir API (su laukiančiųjų sąrašu). Ruošdami vaizdo įvesties galimybę platesniam prieinamumui, iš pradžių glaudžiai bendradarbiaujame su vienu partneriu(atsidaro naujame lange) Taip pat atvirojo kodo principu viešiname „OpenAI Evals“(atsidaro naujame lange) – mūsų programinį karkasą automatizuotam DI modelių našumui vertinti, kad bet kas galėtų pranešti apie mūsų modelių trūkumus ir taip padėti juos tobulinti.
Kasdieniame pokalbyje skirtumas tarp GPT‑3.5 ir GPT‑4 gali būti nežymus. Jis išryškėja, kai užduoties sudėtingumas pasiekia pakankamą ribą – GPT‑4 yra patikimesnis, kūrybiškesnis ir geba apdoroti daug sudėtingesnes instrukcijas nei GPT‑3.5.
Siekdami suprasti skirtumą tarp šių dviejų modelių, išbandėme juos atlikdami įvairius lyginamuosius testus, įskaitant žmonėms skirtų egzaminų imitavimą. Naudojome naujausius viešai prieinamus testus (olimpiadų ir AP klausimų su laisvaisiais atsakymais atvejais) arba įsigijome 2022–2023 m. praktinių egzaminų rinkinius. Specialiai šiems egzaminams modelio nemokėme. Nedidelę dalį egzaminų užduočių modelis matė per mokymą, tačiau manome, kad rezultatai yra reprezentatyvūs – daugiau informacijos rasite mūsų techniniame pranešime(atsidaro naujame lange).
vidinė nuoroda 1
Taip pat įvertinome GPT‑4 pagal tradicinius mašininiam mokymuisi skirtus lyginamuosius testus. GPT‑4 gerokai pranoksta esamus didžiuosius kalbos modelius, taip pat daugumą pažangiausių (SOTA) modelių, kuriems gali būti taikomos specialiai lyginamajam testui pritaikytos ar papildomos mokymo procedūros.
Daugelis esamų mašininio mokymosi (ML) lyginamųjų testų parengti anglų kalba. Norėdami susidaryti pradinį vaizdą apie pajėgumą kitomis kalbomis, MMLU lyginamąjį testą – 14 tūkst. pasirenkamųjų atsakymų užduočių rinkinį, apimantį 57 dalykus, – išvertėme į įvairias kalbas naudodami „Azure Translate“ (žr. Priedą). 24-iomis iš 26-ų tirtų kalbų GPT‑4 pranoksta GPT‑3.5 ir kitus LLM („Chinchilla“, „PaLM“) anglų kalba, įskaitant kalbas, kurių ištekliai menki, pavyzdžiui, latvių, valų ir svahilių.
GPT‑4 taip pat naudojame vidaus poreikiams – tai daro didelį poveikį tokioms funkcijoms kaip palaikymas, pardavimai, turinio moderavimas ir programavimas. Taip pat jį naudojame padėti žmonėms vertinti DI išvestis – taip pradedame antrąjį savo derinimo strategijos etapą.
GPT‑4 gali priimti teksto ir vaizdų raginimą, kuris, kaip ir tik teksto režime, leidžia naudotojui nurodyti bet kokią vaizdo ar kalbos užduotį. Tiksliau, jis generuoja tekstines išvestis (natūralią kalbą, kodą ir t. t.) pagal įvestis, susidedančias iš kaitaliojamų teksto ir vaizdų. Įvairiose srityse, įskaitant dokumentus su tekstu ir nuotraukomis, diagramas ar ekrano nuotraukas, GPT‑4 demonstruoja panašius gebėjimus kaip ir naudojant tik teksto įvestis. Be to, jį galima papildyti testuojant taikomais metodais, kurie buvo sukurti tik tekstiniams kalbos modeliams, įskaitant kelių bandymų ir minčių grandinės(atsidaro naujame lange) raginimus. Vaizdo įvestys vis dar yra tyrimų peržiūros stadijoje ir viešai neprieinamos.
Iš anksto peržiūrime GPT‑4 našumą, vertindami jį pagal siaurą standartinių akademinių vaizdo lyginamųjų testų rinkinį. Tačiau šie skaičiai nevisiškai atspindi jo gebėjimų mastą, nes nuolat atrandame naujų ir įdomių užduočių, kurias modelis geba įveikti. Netrukus planuojame paskelbti tolesnes analizes ir vertinimo skaičius, taip pat išsamų testuojant taikomų metodų poveikio tyrimą.
vidinė išnašaA
Dirbame su kiekvienu plano aspektu, išdėstytu mūsų įraše apie DI elgsenos apibrėžimą, įskaitant valdomumą. Užuot laikęsi klasikinės ChatGPT „asmenybės“ su fiksuotu išsamumu, tonu ir stiliumi, programuotojai (ir netrukus – „ChatGPT“ naudotojai) dabar gali „sistemos“ pranešime aprašytais nurodymais apibūdinti savo dirbtinio intelekto stilių ir užduotį. Sistemos pranešimai leidžia programavimo sąsajos (API) naudotojams reikšmingai pritaikyti naudotojų patirtį leistinose ribose(atsidaro naujame lange). Mes ir toliau tobulinsime šią sritį (ypač žinome, kad sistemos pranešimai yra lengviausias būdas apeiti ribojimus dabartiniame modelyje, t. y., ribų laikymasis nėra tobulas), tačiau raginame tai išbandyti ir pranešti mums, ką galvojate.
Nepaisant savo gebėjimų, GPT‑4 turi panašių apribojimų kaip ir ankstesni GPT modeliai. Svarbiausia – jis vis dar nėra visiškai patikimas (prigalvoja „faktų“ ir daro samprotavimo klaidų). Kalbos modelių išvestimis reikia naudotis itin atsargiai, ypač didelės rizikos situacijose, o tikslus protokolas – pavyzdžiui, kad rezultatus peržiūrėtų žmogus, kad jie būtų pagrįsti papildomu kontekstu arba kad apskritai būtų vengiama naudojimo didelės rizikos kontekste – turi atitikti konkretaus naudojimo atvejį.
Nors problema neišnyko, GPT‑4, palyginti su ankstesniais modeliais (kurie taip pat gerėjo su kiekviena iteracija), gerokai sumažina klaidingų teiginių kūrimą. GPT‑4 mūsų vidaus faktiškumo vertinimuose, skirtuose nustatyti spragas, surenka 40 proc. daugiau balų nei naujausias GPT‑3.5:
Padarėme pažangą pagal išorinius lyginamuosius testus, tokius kaip „TruthfulQA“, kurie tikrina modelio gebėjimą atskirti faktus nuo tyčia parinkto klaidinančių teiginių rinkinio. Šiuos klausimus lydi faktiškai neteisingi, tačiau statistiškai patraukliai atrodantys atsakymai.
Bazinis GPT‑4 modelis šią užduotį atlieka tik šiek tiek geriau nei GPT‑3.5; tačiau po RLHF papildomo derinimo (taikant tą patį procesą, kurį naudojome su GPT‑3.5) atotrūkis yra didelis. Nagrinėjant kai kuriuos toliau pateiktus pavyzdžius, GPT‑4 vengia rinktis įprastus posakius (seno šuns naujų triukų neišmokysi), tačiau vis tiek gali praleisti smulkias detales (Elvis Presley nebuvo aktoriaus sūnus).
Modelis savo išvestyse gali būti įvairiai šališkas – šioje srityje padarėme pažangą, tačiau dar yra ką nuveikti. Kaip rašėme naujausiame tinklaraščio įraše, siekiame, kad mūsų kuriamų DI sistemų numatytasis elgesys pagrįstai atspindėtų plačios naudotojų grupės vertybes, kad šias sistemas būtų galima pritaikyti plačiose ribose ir kad dėl tų ribų gautume viešų atsiliepimų.
GPT‑4 paprastai neturi žinių apie įvykius, įvykusius po didžiosios dalies duomenų apribojimo (2021 m. rugsėjį) ir nesimoko iš patirties. Kartais jis daro paprastas samprotavimo klaidas, nederančias su jo kompetencija daugelyje sričių, arba būna pernelyg patiklus, priimdamas akivaizdžius klaidingus teiginius iš naudotojo. Kartais jis taip pat suklumpa ties sudėtingomis problemomis, kaip ir žmonės — pavyzdžiui, į generuojamą kodą gali įnešti saugumo spragų.
GPT‑4 kartais gali būti užtikrintai neteisus savo prognozėse ir neskirti pakankamai dėmesio patikrinimui, kai tikimybė suklysti yra didesnė. Įdomu tai, kad bazinis, iš anksto išmokytas modelis yra gerai sukalibruotas (jo nurodytas pasitikėjimas atsakymu paprastai atitinka teisingumo tikimybę). Tačiau po dabartinio papildomo derinimo proceso šis kalibravimas sumažėja.
Nuo pat mokymo pradžios nuosekliai tobulinome GPT‑4, kad jis būtų saugesnis ir labiau suderintas su ketinimais, įskaitant išankstinių mokymo duomenų atranką ir filtravimą, vertinimus ir ekspertų įtraukimą, modelio saugos patobulinimus bei stebėseną ir taisyklių vykdymo užtikrinimą.
GPT‑4 kelia panašią riziką kaip ir ankstesni modeliai, pavyzdžiui, generuoja žalingus patarimus, klaidingą kodą ar netikslią informaciją. Tačiau papildomi GPT‑4 gebėjimai sukuria naujas rizikos plotmes. Siekdami suprasti šios rizikos mastą, pasitelkėme daugiau nei 50 ekspertų iš tokių sričių kaip DI suderinamumo rizika, kibernetinis saugumas, biologinė rizika, pasitikėjimas ir sauga bei tarptautinis saugumas, kurie testavo modelį jį bandydami rasti jo spragas. Šių ekspertų išvados leido išbandyti modelio elgseną didelės rizikos srityse, kurioms įvertinti reikia specialių žinių. Ekspertų atsiliepimai ir duomenys buvo panaudoti mūsų modelio rizikos švelninimo priemonėms ir patobulinimams kurti; pavyzdžiui, surinkome papildomų duomenų, kad pagerintume GPT‑4 gebėjimą atmesti užklausas, kaip sintetinti pavojingas chemines medžiagas.
GPT‑4 RLHF mokyme įtrauktas papildomas saugos atlygio signalas, mažinantis žalingų išvesčių skaičių (kaip apibrėžta mūsų naudojimo gairėse(atsidaro naujame lange)), mokant modelį atsisakyti tokio turinio užklausų. Atlygį suteikia GPT‑4 „nulinio šūvio“ (angl. „zero-shot“) klasifikatorius, vertinantis saugos ribas ir užbaigimo stilių su sauga susijusiuose raginimuose. Kad modelis neatmestų pagrįstų užklausų, renkame įvairialypį duomenų rinkinį iš įvairių šaltinių (pvz., pažymėtų gamybos duomenų, žmonių atlikto testavimo siekiant atrasti spragas, modelio generuotų raginimų) ir taikome saugos atlygio signalą (su teigiama arba neigiama reikšme) tiek leistinoms, tiek neleistinoms kategorijoms.
Mūsų švelninimo priemonės žymiai pagerino daugelį GPT‑4 saugos savybių, palyginti su GPT‑3.5. Modelio polinkį reaguoti į užklausas dėl neleidžiamo turinio sumažinome 82 proc. palyginti su GPT‑3.5, o į jautrias užklausas (pvz., medicininiai patarimai, savižalos temos) GPT‑4 laikydamasis mūsų politikų atsako 29 proc. dažniau.
Apskritai mūsų intervencijos modelio lygmeniu apsunkina netinkamos elgsenos išgavimą, tačiau tai vis dar įmanoma. Be to, vis dar esama būdų „apeiti apribojimus“ (angl. „jailbreak“), siekiant generuoti turinį, kuris pažeidžia mūsų naudojimo gaires. Didėjant DI sistemų „rizikai vienam žetonui“, taps labai svarbu pasiekti itin aukštą šių intervencijų patikimumo lygį; kol kas svarbu šiuos ribotumus papildyti diegimo metu taikomomis saugos priemonėmis, pavyzdžiui, piktnaudžiavimo stebėsena.
GPT‑4 ir vėlesni modeliai gali reikšmingai paveikti visuomenę tiek teigiamai, tiek neigiamai. Bendradarbiaujame su išorės tyrėjais, siekdami geriau suprasti ir įvertinti galimą poveikį, taip pat parengti pavojingų gebėjimų, kurie gali atsirasti ateities sistemose, vertinimus. Netrukus pasidalysime daugiau idėjų apie galimą socialinį ir ekonominį GPT‑4 ir kitų DI sistemų poveikį.
Kaip ir ankstesni GPT modeliai, GPT‑4 bazinis modelis buvo mokomas nuspėti kitą žodį tekste ir treniruotas su viešai prieinamais duomenimis (pvz., interneto duomenimis) bei mūsų licencijuotais duomenimis. Duomenys – tai žiniatinklio masto duomenų korpusas, apimantis teisingus ir neteisingus matematikos uždavinių sprendimus, silpną ir stiprų samprotavimą, prieštaringus ir nuoseklius teiginius, atspindinčius didelę ideologijų ir idėjų įvairovę.
Todėl, gavęs klausimą, bazinis modelis gali atsakyti labai įvairiai – neretai toli nuo naudotojo ketinimų. Siekdami suderinti jį su naudotojo tikslu pagal apsaugos nuo piktnaudžiavimo priemones, modelio elgseną koreguojame naudodami pastiprinimo mokymąsi su žmogaus atsiliepimais (RLHF).
Atkreipkite dėmesį, kad modelio gebėjimai, regis, daugiausia kyla iš išankstinio mokymo proceso – RLHF negerina egzaminų rezultatų (be aktyvių pastangų netgi juos blogina). Tačiau modelio valdymas atsiranda po papildomo derinimo – baziniam modeliui reikalinga greita inžinerija, kad jis išvis žinotų, jog turi atsakyti į klausimus.
Didelė GPT‑4 projekto dalis buvo skirta sukurti gilaus mokymosi technologinį paketą, kurio mastelis keistųsi nuspėjamai. Pagrindinė priežastis ta, kad vykdant labai didelius mokymo ciklus, tokius kaip GPT‑4, neįmanoma atlikti plataus modeliui skirto derinimo. Sukūrėme infrastruktūrą ir optimizavimo priemones, kurios pasižymi labai nuspėjama elgsena įvairiais masteliais. Kad patikrintume šį mastelio keitimą, iš anksto tiksliai numatėme galutinį GPT‑4 praradimą mūsų vidinėje kodų bazėje (kuri nėra mokymo rinkinio dalis), ekstrapoliuodami iš modelių, mokytų naudojant tą pačią metodiką, bet turinčių 10 tūkst. kartų mažesnę skaičiavimo galią:
Dabar, kai galime tiksliai numatyti rodiklį, kurį optimizuojame mokymo metu (praradimą), pradedame kurti metodiką, skirtą labiau interpretuojamiems rodikliams prognozuoti. Pavyzdžiui, sėkmingai nuspėjome sėkmingų sprendimų dalį („pass rate“) dalyje HumanEval(atsidaro naujame lange) duomenų rinkinio, ekstrapoliuodami iš modelių, turinčių 1 000 kartų mažesnę skaičiavimo galią:
Kai kuriuos gebėjimus vis dar sunku nuspėti. Pavyzdžiui, „Inverse Scaling Prize“ buvo konkursas, skirtas rasti rodiklį, kuris blogėja didėjant modelio skaičiavimo galiai, o hindsight neglect(atsidaro naujame lange) buvo viena iš laimėjusių idėjų. Kaip ir su kitu nesenu rezultatu(atsidaro naujame lange), GPT‑4 šią tendenciją apgręžia:
Manome, kad tikslus būsimų mašininio mokymosi gebėjimų prognozavimas yra svarbi saugos dalis, kuriai, palyginti su galimu poveikiu, skiriama gerokai per mažai dėmesio (nors mus džiugina kelių institucijų pastangos). Plečiame pastangas kurti metodus, kurie visuomenei suteiktų geresnes gaires, ko tikėtis iš būsimų sistemų, ir tikimės, kad tai taps bendru šios srities tikslu.
Atvirojo kodo principu viešiname „OpenAI Evals“(atsidaro naujame lange) – mūsų programinį karkasą, skirtą kurti ir vykdyti lyginamuosius testus tokiems modeliams kaip GPT‑4, kartu tikrinant jų veikimą po vieną pavyzdį. Naudojame „Evals“, kad nukreiptume savo modelių kūrimą (nustatydami trūkumus ir užkirsdami kelią regresijoms), o mūsų naudotojai gali jį taikyti našumui stebėti skirtingose modelių versijose (kurios dabar bus reguliariai išleidžiamos) ir besivystančioms produktų integracijoms. Pavyzdžiui, „Stripe“ naudojo „Evals“, kad papildytų žmonių atliekamus vertinimus, siekdama įvertinti GPT palaikomo dokumentacijos įrankio tikslumą.
Kadangi visas kodas yra atviras, „Evals“ palaiko naujų klasių rašymą, siekiant įgyvendinti pasirinktinę vertinimo logiką(atsidaro naujame lange). Iš patirties žinome, kad daugelis lyginamųjų testų atitinka vieną iš kelių „šablonų“, todėl įtraukėme ir tuos šablonus(atsidaro naujame lange), kurie buvo naudingiausi įmonės viduje (įskaitant šabloną „modelio vertinamiems atsakymams“ – pastebėjome, kad GPT‑4 stebėtinai gerai geba patikrinti savo darbą). Paprastai efektyviausias būdas sukurti naują vertinimą(atsidaro naujame lange) – sukurti vieno iš šių šablonų egzempliorių ir pateikti duomenis. Džiaugiamės matydami, ką kiti gali sukurti naudodami šiuos šablonus ir apskritai „Evals“.
Tikimės, kad „Evals“ taps priemone dalytis ir telkti lyginamuosius testus, atspindinčius kuo platesnį nesėkmės atvejų ir sudėtingų užduočių rinkinį. Kaip sektiną pavyzdį, sukūrėme loginių galvosūkių(atsidaro naujame lange) vertinimą, kuriame yra dešimt raginimų, kurių GPT‑4 nesugeba išpildyti „Evals“ taip pat suderinama su esamų lyginamųjų testų įgyvendinimu; kaip pavyzdį įtraukėme keletą bloknotų(atsidaro naujame lange), įgyvendinančių akademinius lyginamuosius testus, ir keletą CoQA(atsidaro naujame lange) (mažų dalių) integravimo variantų.
Kviečiame visus naudoti „Evals“ mūsų modeliams testuoti ir pateikti įdomiausius pavyzdžius. Tikime, kad „Evals“ bus neatsiejama mūsų modelių naudojimo ir tobulinimo proceso dalis, ir laukiame tiesioginio indėlio, klausimų ir atsiliepimų(atsidaro naujame lange).
„ChatGPT Plus“ prenumeratoriai gaus prieigą prie GPT‑4 adresu chatgpt.com(atsidaro naujame lange) su vartotojo apribojimais. Tikslius vartotojo apribojimus koreguosime atsižvelgdami į paklausą ir sistemos našumą realiomis sąlygomis, tačiau tikėtina, kad pajėgumai bus labai riboti (nors ateinančiais mėnesiais juos plėsime ir optimizuosime).
Atsižvelgdami į matomas judėjimo tendencijas, galime įvesti naują prenumeratos lygį, skirtą didesnės apimties GPT‑4 naudojimui; taip pat tikimės kada nors pasiūlyti tam tikrą kiekį nemokamų GPT‑4 užklausų, kad galėtų išbandyti ir tie, kurie neturi prenumeratos.
Norėdami gauti prieigą prie GPT‑4 API (kuri naudoja tą pačią „ChatCompletions“ API(atsidaro naujame lange) kaip ir „gpt-3.5-turbo“), užsiregistruokite mūsų laukiančiųjų sąraše. Kai kuriuos programuotojus pradėsime kviesite šiandien ir pamažu didinsime jų skaičių, kad suderintume pajėgumus su paklausa. Jei esate tyrėjas, tiriantis DI visuomeninį poveikį ar DI suderinamumo klausimus, taip pat galite kreiptis dėl subsidijuojamos prieigos per mūsų Tyrėjų prieigos programą.
Gavę prieigą, galėsite teikti tik teksto užklausas GPT‑4 modeliui (vaizdų įvestys vis dar yra ribotoje alfa versijoje), kurį automatiškai atnaujinsime į rekomenduojamą stabilų modelį sukūrę naujas versijas (dabartinę versiją galite prisegti iškviesdami „gpt-4-0314“ – ją palaikysime iki birželio 14 d.). Kaina yra 0,03 USD už 1 000 raginimo žetonų ir 0,06 USD už 1 000 užbaigimo žetonų. Numatytieji dažnio apribojimai yra 40 000 žetonų per minutę ir 200 užklausų per minutę.
GPT‑4 konteksto ilgis – 8 192 žetonai. Taip pat teikiame ribotą prieigą prie mūsų 32 768 konteksto (apie 50 puslapių teksto) versijos, „gpt-4-32k“, kuri taip pat bus automatiškai atnaujinama laikui bėgant (dabartinė versija „gpt-4-32k-0314“, taip pat palaikoma iki birželio 14 d.). Kaina yra 0,06 USD už 1 000 raginimo žetonų ir 0,12 USD už 1 000 užbaigimo žetonų. Vis dar geriname modelio kokybę ilgam kontekstui ir mielai sulauktume atsiliepimų apie tai, kaip jis veikia jums jį naudojant. Apdorojame 8K ir 32K modulių užklausas skirtingu greičiu, pagal pajėgumus, todėl prieigą prie jų galite gauti skirtingu metu.
Tikimės, kad GPT‑4 taps vertingu įrankiu, gerinančiu žmonių gyvenimą ir palaikančiu daugelį programų. Dar reikia daug nuveikti, o modelį norime toliau gerinti bendromis bendruomenės, kuri jį plėtoja, tyrinėja ir prie jo prisideda, pastangomis.
Daugiau: Skaityti straipsnį(atsidaro naujame lange) / Peržiūrėti sistemos kortelę(atsidaro naujame lange) / Išbandyti „ChatGPT Plus“(atsidaro naujame lange) / Išbandyti „Playground“(atsidaro naujame lange) / Žiūrėti demonstracinės versijos tiesioginę transliaciją(atsidaro naujame lange) / Prisidėti prie „OpenAI Evals“(atsidaro naujame lange)
MMLU klausimų pavyzdys, išverstas į kitas kalbas. Dėmesio – naudojame nuoseklius pasirinkimo variantus (A–D):
Pastabos
- A
Šį lyginamąjį testą vertiname naudodami mąstymo sekos raginimą su 4 pavyzdžiais iš mokymo rinkinio kontekste. Konkretus raginimas buvo suderintas pagal tikrinimo rinkinį.
Nuorodos
- 1
P. Arredondo („Casetext“ / „Stanford CodeX“), D. Katz („Stanford CodeX“), M. Bommarito („Stanford CodeX“), S. Gao („Casetext“). Išsamesnė analizė pateikiama straipsnyje(atsidaro naujame lange)


