Archwilio nanoGPT!
Wedi fy ysbrydoli gan bostiadau gwych Richard Jones, penderfynais roi cynnig ar hyfforddi model iaith bach fy hun gan ddefnyddio nanoGPT, offer ffynhonnell agored a grëwyd gan Andrej Karpathy fel ystafell ddosbarth fyw ar gyfer deall sut mae modelau iaith mawr yn gweithio o'r tu mewn.
Sefydlu'r Amgylchedd
Dechreuais ar Windows 11 gyda GPU ar gael - roeddwn am wylio'r GPU yn gweithio yn hytrach na dim ond defnyddio CPU. Y cam cyntaf oedd gosod Python, CUDA, a PyTorch.
Yn ystod y broses sefydlu, roeddwn i'n cadw llygad ar ddefnydd y GPU - mae gweld y llinellau perfformiad yn neidio wrth i ddysgu ddigwydd yn rhoi teimlad gwirioneddol am beth yw hyfforddi model.
Yr Heriau Cynnar
Un o'r problemau cynnar: mai dim ond un craidd CPU oedd yn cael ei ddefnyddio wrth dechrau - ac ar yr adeg honno, roeddwn i'n meddwl fod hynny'n ddyluniad bwriadol. Yn amlwg, nid oedd - cam sefydlu cyflym a wnaeth gywiro hwn.
Heriau pellach oedd llif data GPT-2 - 12GB wrth lawrlwytho - a'r ffaith fod y storfa asgell SDS (Solid State Drive) yn cael ei llenwi'n gyflym wrth storio data wedi'i dioganu yn ystod hyfforddiant. Aeth yn 5.5 awr o uwch-dasgau tokenization cyn i'r hyfforddiant go iawn ddechrau.
Ond yr her fwyaf rhwystredig oedd hon: roedd y sgript yn taflu gwall yn ystod tokenization, ond roedd yn ymddangos fel pe bai'n gweithio'n iawn - a oedd y gwall yn fwysig? Penderfynais ei adael i redeg, gan obeithio'r gorau. Am ddyddiau. Yn oedi'r broses cyn rhoi'r cyfrifiadur i gysgu pob nos. Dim byd. Wythnosau wedyn, doeddwn i'n mynd i unman.
Felly dechreuais chwilio'r rhyngrwyd am eraill a oedd wedi taro'r un gwall - ac fe wnes i ddod o hyd iddynt. Rhai newidiadau cod pellach, ac yn sydyn gwelais beth yr oedd i fod i'w wneud. Roedd y gwall yn bwysig wedi'r cyfan - ac unwaith y'i cywirwyd, ailredeg y cam tokenization a chwblhau mewn 5.5 awr (o gymharu â'r 32+ awr yr oedd yn ei gymryd yn y fersiwn anghywir).
Hyfforddi gyda Data Shakespeare
Ar gyfer y cam hyfforddi go iawn, defnyddiais y dataset Shakespeare - casgliad clasurol ar gyfer profi modelau iaith bach, yn ddigon cymhleth i roi her gyda mewn data adnabyddus cyn mynd ymlaen at bopeth fwy cymhleth.
Gwylio'r hyfforddiant yn ymarfer oedd un o'r profiadau mwyaf diddorol o'r sesiwn gyfan - gweld y colli (loss) yn lleihau dros gyfnodau, yn gallu dilyn y camau'r llwyfan hyfforddi.
Canlyniad y Fine-tuning
Yn y pen draw, symudais ymlaen i fine-tuning gyda data Shakespeare, sydd yn wahanol i hyfforddi model yn llwyr o'r dechrau - mae fine-tuning yn cymryd model sy'n bodoli eisoes a'i diweddaru gyda data newydd. Cwblhaodd hwn yn gymharol gyflym - munudau, nid oriau - a'r cof GPU yn cael ei daro cyn y GPU ei hun (mae cael 24GB o RAM GPU yn fantais drawiadol yma).
Roedd y canlyniad yn bymtheg tudalen o destun. Mae ansawdd y testun yn llawer gwell na'r fersiynau cychwynnol - mae'n swnio'n Shakespearaidd (rhywfaint!) ond gydag ymddatodiad amlwg, sy'n union beth rydych chi'n ei ddisgwyl o fodel syml a data cyfyngedig.
Y Gwersi
Mae gwneud hyn yn ymarferol yn eich dysgu pethau nad yw darllen amdano yn eu dysgu. Mae penderfyniadau pensaernïol fel maint y batchs, cyflymder dysgu, y faint o gyfnodau - maen nhw i gyd yn effeithio ar y canlyniad mewn ffyrdd cymhleth.
Mae hefyd yn atgoffa mai dim ond haen gyfleus yn ymyl cyfrifiant cymhleth o ddyrus yw y sgyrsiau a'r testun a gynhyrchir gan LLMs. Yr hyfforddiant, y data, y maint model - mae'r cyfan yn bwysig.
Os nad ydych chi wedi rhoi cynnig arni, rwyf yn argymell nanoGPT fel man cychwyn. Mae'r ddogfennaeth yn glir, mae'r cod yn ddarllenadwy, ac mae'n eich rhoi chi yn lleoliad gwych i ddeall ffenomen fawr y cyfnod hwn mewn ffordd sydd wedi'i seilio mewn peirianneg go iawn.
Mwynheais y dasg hon yn fawr - mae wedi profi y gallaf ddelio â datrys problemau cod a gwneud i bethau weithio (er mai dyn seilwaith wyf i yn y bôn). Ac mae wedi rhoi blasiad i mi ar brofion pellach - felly mae mwy i ddod!
Parhau i archwilio