Mae gofyn a yw wedi gorffen yn tynnu’r clo
Async Digital Ltd Caerdydd, DU
Rwy’n rhedeg mwy nag un sesiwn codio AI ar y tro, ac maent yn rhannu un ffeil gadw. Mae dwy sesiwn yn ysgrifennu iddi ar unwaith yn wrthdrawiad go iawn, felly mae un ohonynt yn dal clo wrth gadw. Y ffordd amlwg o gydlynu trosglwyddiad yw gofyn i’r sesiwn o’ch blaen a yw wedi gorffen. Adeiladais y cwestiwn hwnnw i mewn, ac wrth ymchwilio i ddarn am yr union ddyluniad hwn, gwyliais y peth yn methu’n fyw. Achosodd neges yn gofyn a oedd sesiwn wedi gorffen i amddiffyniad y sesiwn honno ryddhau ei hun, yn dawel, tra oedd hi’n dal i gadw. Ni ddywedwyd wrth y daliwr erioed, a daliodd ati i weithio gan gredu ei fod wedi ei ddiogelu.
Rwyf wedi treulio’r flwyddyn hon yn ceisio darganfod beth sy’n torri mewn gwirionedd pan roddwch waith go iawn i asiantau AI, yn hytrach na’r hyn y dywed pobl sy’n torri. Achosais hwn fy hun, yn fwriadol, wrth ei ysgrifennu.
Un ffeil gadw, mwy nag un ysgrifennwr
Mae fy asiantau’n cadw storfa rannol o nodiadau iddynt eu hunain: beth a newidiodd, beth sy’n dal yn agored, beth i’w godi’r tro nesaf. Mae’n cael ei chefnogi gan git, felly nid rhywbeth damcaniaethol yw dwy sesiwn yn ysgrifennu iddi ar yr un eiliad, ond dydd Mawrth cyffredin. Cwblhewch ddwy sesiwn ar unwaith heb gydlynu ac fe gewch wrthdrawiad go iawn: ymrwymiad un sesiwn yn rasio un arall, neu ffeil mynegai a rennir wedi ei hysgrifennu hanner ffordd gan y ddwy.
Felly mae sesiwn sydd ar fin cadw yn cymryd clo yn gyntaf. Caiff cyfeiriadur ei greu; ei fodolaeth yw’r mecanwaith cyfan. Dim byd ffansi, ac mae hynny’n fwriadol. Naill ai mae’r cyfeiriadur yn bodoli neu nid yw, ac mae pob sesiwn yn gwirio cyn ysgrifennu.
Unwaith y bydd gennych glo, mae arnoch angen protocol ar gyfer pwy sy’n aros a phwy sy’n mynd yn ei flaen. Adeiladais un yn y ffordd amlwg: mae sesiwn sydd am orffen yn anfon neges at y sesiwn o’i blaen ac yn gofyn a yw wedi gorffen eto. Arhoswch am ateb clir, yna ewch.
Y protocol hwnnw yw’r nam.
Achosais ef wrth ysgrifennu amdano
Roeddwn yn ymchwilio i ddarn ar yr union broblem gydlynu hon, ac er mwyn cael enghraifft lân gofynnais i un sesiwn anfon neges at un arall, ynghanol sesiwn, yn gofyn a oedd wedi gorffen cadw. Funudau’n ddiweddarach, roedd cyfeiriadur y clo wedi mynd. Nid am fod y sesiwn oedd yn ei ddal wedi gorffen. Nid oedd hi wedi: roedd gan ffeiliau roedd hi’n eu hysgrifennu’n weithredol stampiau amser o dan dri munud oed, ac roedd ei hateb diweddaraf ei hun, a anfonwyd o fewn yr un ffenest honno, yn ei disgrifio’i hun fel un oedd yn dal i ddal y clo.
Y neges a ofynnodd y cwestiwn oedd y peth a ryddhaodd y clo. Mae neges sy’n cyrraedd sesiwn yn tanio llwybr trin negeseuon arferol y sesiwn honno, ac mae un gangen o’r llwybr hwnnw’n gollwng unrhyw glo sydd gan y sesiwn yn dawel, ar y sail bod sesiwn sydd ar fin darllen neges newydd ar gael ac felly heb fod ynghanol dim. Mae’r rhesymu hwnnw’n gadarn ar gyfer y rhan fwyaf o negeseuon. Mae’n union anghywir ar gyfer yr un hon, oherwydd holl bwrpas y neges hon oedd gwirio a oedd y sesiwn ynghanol rhywbeth.
Ni ddywedwyd wrth y daliwr erioed fod ei amddiffyniad wedi mynd. Daliodd ati i ymrwymo i’r storfa a rennir gan gredu ei fod yn ddiogel, cyhyd ag y cymerodd y cadw go iawn.
Absennol yw’r cyflwr rhydd, nid clo wedi torri
Yr hyn sy’n gwneud hwn yn anodd ei ddal yw nad oes dim yn edrych o’i le wedyn. Gweithrediad cyfan y clo yw “a yw’r cyfeiriadur hwn yn bodoli”. Mae cyfeiriadur absennol yn annidoladwy oddi wrth sesiwn a orffennodd yn lân eiliadau’n ôl. Nid oes gwall, dim olrhain pôl, dim llinell log sy’n dweud i glo gael ei dynnu yn hytrach na’i ryddhau. Byddai’n rhaid i chi amau’r bai’n barod cyn mynd i chwilio amdano, sef yn union o chwith i’r ffordd rydych am i fecanwaith diogelwch fethu.
Dim ond am fy mod yn syllu ar stampiau amser ffeiliau am reswm cwbl arall ar yr union eiliad y digwyddodd y cefais hyd iddo, ac nid oedd y rhifyddeg yn gwneud synnwyr: clo yn darllen fel un rhydd, wrth ymyl pedair ffeil â stampiau munudau oed, wrth ymyl neges y daliwr ei hun yn ei ddisgrifio’i hun fel un oedd yn dal i weithio.
Roedd rheol gywir wedi ei hysgrifennu eisoes ar gyfer sefyllfa gysylltiedig: peidiwch byth ag anfon neges at sesiwn sydd ynghanol cadw. Roedd wedi ei mesur a’i chofnodi wythnosau ynghynt. Nid achubodd neb yma, oherwydd cafodd ei hysgrifennu ar gyfer un siâp o gydlynu, un cydlynydd yn anfon at sawl gweithiwr, a siâp gwahanol oedd hwn, un sesiwn yn gofyn i gymar yn uniongyrchol. Roedd y rheol yn wir ac yn y cynhwysydd anghywir, sy’n tanio’n union mor aml â rheol na chafodd ei hysgrifennu o gwbl.
Ail fai yn eistedd o dan y cyntaf
Wrth fynd ar ei ôl ymhellach, nid y clo cadw-ar-y-gweill yw’r stori gyfan. Mae rhan o’r hyn y mae sesiwn yn ei gadw yn byw mewn lleoliad sy’n gyswllt symbolaidd i mewn i’r storfa a rennir, ac nid yw’r llwybr cod sy’n ysgrifennu drwy’r cyswllt hwnnw’n cymryd y clo o gwbl. Felly nid oedd “mae’r clo’n rhydd” erioed yn ddirprwy cadarn am “nid oes neb yn ysgrifennu”, hyd yn oed cyn y nam neges-yn-tynnu’r-clo. Dirprwy anghadarn ydoedd a oedd wedi bod yn lwcus.
Dyna siâp anghyfforddus yr ymchwiliad cyfan. Roedd pob haen a wiriais er mwyn cadarnhau bod sesiwn yn ddiogel i’w tharfu yn gwirio rhywbeth cyfagos i’r cwestiwn go iawn yn hytrach na’r cwestiwn ei hun. Mae’r clo’n ateb “a alwodd rhywun am glo”. Nid yw’n ateb “a oes rhywun yn ysgrifennu”. Fel arfer maent yn cytuno. Nid oes rhaid iddynt.
Gwnaeth ail achos byw yn yr un sesiwn ymchwil y pwynt eto o ongl arall: clo â churiad calon wedi rhewi ar yr eiliad y cafodd ei gymryd, wedi ei ddal gan ddynodwr proses nad oedd yn bodoli mwyach. Y darlleniad amlwg yw clo hen wedi ei adael ar ôl gan chwalfa, yn ddiogel i’w glirio. Yr eglurhad gwirioneddol oedd mai cynorthwyydd byrhoedlog oedd y broses ddaliol, un a oedd wedi gadael yn normal ar ôl cymryd y clo ar ran y sesiwn, felly nid oedd dynodwr marw yma’n profi dim o gwbl. Roedd y gwiriad henaint amlwg ei hun yn anghadarn, mewn sesiwn lle roeddwn yn ceisio bod yn ofalus am yr union ddosbarth hwn o gamgymeriad.
Peidiwch byth â gofyn, dim ond dweud
Y trwsiad yw protocol sy’n rhedeg un ffordd i bob cyfeiriad. Mae sesiwn sy’n aros i gadw yn tanysgrifio’n dawel: mae’n gwylio am i’r sesiwn o’i blaen ryddhau, heb anfon neges ati byth. Mae sesiwn sydd wedi gorffen yn dweud, yn benodol a dim ond pan nad oes dim o’i heiddo hi’n dal mewn perygl. Caiff gofyn ei dynnu o’r eirfa’n llwyr, oherwydd y cwestiwn ei hun yw’r modd methu, nid ffordd esgeulus o’i ofyn.
Y gwrthdroad hwnnw yw’r wers gyfan, ac mae’n un dda’n union am mai’r dyluniad anghywir yw’r un y mae pawb yn estyn amdano gyntaf, cydlynu-drwy-holi, gan gynnwys y fersiwn o hyn a adeiladais y tro cyntaf. Mae gwirio’n gwrtais yn teimlo fel y ffordd gyfrifol o osgoi sathru ar waith rhywun. Yma, y gwiriad yw’r peth sy’n sathru.
Un fagl arall sy’n werth ei henwi, am i mi syrthio iddi yn yr un sesiwn. Mae ffeil y clo yn stampio ei hamser cychwyn mewn UTC. Mae darllen stamp o 07:21 yn erbyn cloc wal amser haf Prydain o 08:21 yn edrych fel awr o henaint nad yw yno; pum munud oed oedd y clo. Cyfrifwch y gwahaniaeth yn yr un gylchfa amser yn hytrach na llygadu dau gloc yn erbyn ei gilydd, neu bydd clo cwbl iach yn darllen fel un wedi ei adael.
Os ydych yn gwifrio unrhyw fath o drosglwyddiad rhwng sesiynau AI cydredol, ac mae’n codi’n fuan iawn wedi i chi redeg mwy nag un ar y tro, gwiriwch beth mae eich neges “a ydych wedi gorffen” yn ei wneud mewn gwirionedd i’r sesiwn sy’n ei derbyn. Roedd fy un i yn diarfogi’n dawel yr union amddiffyniad roedd yn bodoli i ofyn amdano.
Mae’r bai’n un go iawn a chafodd ei achosi fel y disgrifir: anfonodd un sesiwn asiant neges at un arall, ynghanol cadw, yn gofyn a oedd wedi gorffen, tra oeddwn yn ymchwilio i ddarn am yr union ddyluniad cydlynu hwn. Gwiriwyd absenoldeb y clo, stampiau amser ffres y ffeiliau, ac ateb y daliwr ei hun o fewn y ffenest yn uniongyrchol yn erbyn y system fyw, heb eu hail-lunio wedyn.
Ysgrifennais hwn gydag asiant AI, yr un math o offeryn ag y mae’r nodyn amdano. Cefais hyd i’r achos byw, dewisais y ddadl, a golygais y canlyniad.
O ystyried y pwnc, ei ddweud yw’r lleiaf y gallaf ei wneud.