august 29, 2019

Hõbekuul leitud: Tarkvara 2.0



Vaadake mõttega läbi ülaltoodud esitlus.
Kes veel ei ole AI ekspert (ma ei ole ja tõenäoliselt ei saagi selleks)  , nendele on eriti
oluline "MÕTTEGA" täiend. Te ei pea toimuva mõttest aimumiseks aimama, mis asjad toimuvad AI-s!
Kui te eriti ei viitsi, siis lugege vähemalt läbi Andrej Karpathy vastav blogitekst:
https://medium.com/@karpathy (Software 2.0)
Või ... lugege edasi, sest ma natukeosas kordan üle (ja ei saa paljustki veel aru)
Karpathy  sõnumist. Aga ma loodan siiski, et põhisõnum on mullegi piisavalt selge.
Niisiis on tarkvaraarenduse mudeli 1.0 asemel tekkinud ja kiiresti arenemas tarkvaraarenduse mudel 2.0, kus tarkvara, kui sellist enam ei kirjutata.
On olemas nõuded, mida tarkvara peaks tegema ja näidisandmed, millest antud tarkvara peaks tegema nõutud andmed. On olemas kiire meetod, millega testida, kas tulemus vastab soovitule või ei s.t. on olemas küllaltki selge seos ja võimalus öelda, kas näidisandmetest on saadud õieti aru, s.t. kas tarkvara sai tulemuseks selle, mida meie eeldasime.
Tõlgin ja panen RASVASEKS Karpathy blogiteksti ALGUSE täielikult, et jõuaks kohale, et see ei ole lihtsalt üks uus lisavidin või raamistik või midagi sarnast, millega iga programmeerija on juba harjunud:

Mõnikord ma avastan, et neuronvõrkudele viidatakse lihtsalt kui "masinõppe tööriistakasti lisavahendile". Nendel  lisavahenditel on mõned eelised ja puudused, ja aeg - ajalt saate neid kasutada, et võita KAGGLE võistlusi. Õnnetuseks ei näe see tõlgendus absoluutselt puude taga metsa.
Neuronvõrgud EI OLE teine klassifikaator, nad VIITAVAD põhimõttelisele muutusele meie tarkvara kirjutusviisis: NAD ON TARKVARA 2.0


See algus kahjuks on üks tõdemus, mida iga tarkvaranikerdaja saab pidada vaid ebameeldivaks,
sest näitab armutult kätte tema koha ajaloolises arengus - täpselt samas seisus olid ludiidid, endised käsitöömeistrid 18. sajandi lõpus. Ludiidid ei olnud rumalad või võimetud inimesed - vastupidi, nad olid käsitöömeistrid, kes olid läbinud pikaajalise sellistaatuse, et üldse niikaugele jõuda ....
Nad olid erinevalt paljudest teistest PALJU VÕIMEKAMAD, sest olid aastaid vaevelnud õpipoisistaatuses ...seejärel aga saanud oma valdkonna meistriteks...

Need pühad tegevused, mida te praegu teete
NÄIDE tööpakkumiste ridadest:
(JAVASCRIPT, TYPESCIPPT (PARTIKULAARSELT ANGULAR);
RUBY ON RAILS 5.0 FRAMEWORK;
JAVASCRIPT; CSS; HTML ....
JA KÕIK ÄNGLISH. -.... see taltetsistumine käib ikka täie rauaga!
on mõne aja pärast täelik xxxx (bullshit).
sest sellistele täispinurakendustele leidub alternatiiv, kus me treenime oma kasutajapõhiste juhtumikirjelduste ja vastavate andmetega põhjal välja neuronvõrgu ja seejärel lihtsalt hakkama seda treenimist täpsustama, edasi arendama, uusi andmeid hankima. Ülejäänud töö teeb ära neuronvõrk.
Ei mingeid täispinuprogrammeerijaid enam!
Võimalik, et jääb järgi andmearhitekt ja see sõna pidage meeles. Need on lihtsalt inimesed, kes tõlgivad selle, mida kasutajad tahavad sellesse keelde, millest arvuti aru saab. See tõlge aga võib olla muutunud küllaltki triviaalseks selles mõttes, et ei eelda enam suuri teadmisi programmeerimisest.
Küll aga peab inimene valdama väga hästi valdkonda, milles ta oma programmile  tellimust koostab.
Alles jäävad ka inimesed, kes selles AI maailmas suudavad luua AI neuronvõrkude loomiseks ja edasiarendamiseks vajalikku raamistikku, keskkonda või tuge. Aga neid inimesi ei ole eriti palju vaja.
Aga needsamad koodinikerdajad, kes vanasti tõstsid ühte lipikut teise kohta ja juhul a teisendasid kasutaja sisestatud arvu ühtemoodi ja juhul b teistmoodi, if else või koguni for või foreach tsüklitega misiganes moodsas või mittemoodsas raamistikus või misiganes raamistikes - kui asjapulk oli täispinuprogrammeerija - võivad ennast avastada tänavalt, koos näiteks selleks ajaks tänaval olevate autojuhtidega. Mis sellest, et need autojuhid või programmeerijad võivad oma rekkasid või arvuteid sama osavalt roolida või programmeerida, kui Tänak WTC ralliautot - palka nad selle töö eest enam ei saa, sest sama töö teeb palju paremini ja kiiremini ära neuronvõrk, mille jaoks on juba olemas ka spetsiaalne AI kivi, mis eriti hästi oskab selliseid neuronvõrkude tulemeid arvutada ...
Nii saab olema kahjuks ka täispinuprogrammeerijatega.
Teie helge elu saab üsna kiiresti otsa! Ega see praegugi, eriti vananenud raamistikes tegijatele väga helge polegi!
Bill Gates on öelnud, et me ülehindame krooniliselt seda, mida võime teha 1 aastaga ja alahindame seda, mida saab teha 10 aastaga. See ajaskaala on tõenäoliselt AI toimuva osas väga täpne, sest tõenäoliselt programmeerijate vajadus isegi kasvab lähema 5 - 10 aasta jooksul, aga siis hakkab langema.
btw: Selle kasvu juures võite avastada ennast ikka juba tänavalt, sest ... sama tööb teeb ära Ukraina või India kolleeg pisut madalama töötunnihinna eest. Nii ei ole juba näiteks praegu Soome programmeerijate (Eestist puuduvad andmed) töötasu kasvanud. Küllap leidub naabermaadest kolleege, kes sama töö ära teevad madalama hinna eest.
Uus tegija tööturul, neuronvõrk ja sellele võrgule ehitatud kiibid teeb ära ülejäänu - s.t. suur % inimesi leiavad ennast varsti tänavalt või lihtsalt konkureerimas väga triviaalsete tööülesannete täitmise nimel 100 ja enama osalistega missikonkurssidel!
Millalgi oli ka telegrafist väga kuum amet. Seejärel sai sellest tavaline käsitöö ja seejärel see amet lihtsalt hääbus.
Lugegu aga seda juttu TÕSISELT iga ülikooli astuv IT huviline - kui te kohe praegu ei võta kätte AI õpikut või näiteks AI Pythoni raamistikku, siis olete juba hilinenud. See on viimane šanss saada oma valdkonnas viisakat tööd. Kõik need täispinuarendusoskused omandage kui hetkel vajalikud käsitööoskused, aga mitte rohkemat silmas pidades, sest juba 10 aasta pärast algab nende tööde vajaduste hääbumine.
Ja AI vallas jäävad alles vaid MEISTRID.
Sellest hoolimata saavad IT vallas tööd paljud, Näiteks vangid Soomes pidavat saama lisaraha selle eest, et märgivad ära ühe või teise artikli kohta, kas see on asjakohane (on teemas, või täiesti mööda), või ei ole ...
Ma ei tea, kuidas on see seotud Püütoni või mõne teise püha programmeerimiskeelega või üldse programmeerimisega - IT-ga on see aga seotud, sest ütleb närvivõrgule, et see lahend on "möödalask" ja see on ok. Sellist tööd saab ka edaspidi teha, kahjuks on see ainult väga kauge pärand ajast, millal programmeerija oli meie tööturul "püha lehm", s.t. amet, mida igal juhul tasus õppida....
Aga olen konkreetne, sest ma tean, et et kodeerijate enamik oma elukutse paratamatuste tõttu on skeptilised igasuguste sarnaste tekstide osas:
AI kambrium raudvaras
Just praegu saab märgata igat sorti AI tootjate "kambriumi" plahvatust. Igasugused skeemid on äkki käibel, mida "eelkambriumi" ajal unistadagi ei võinud.
Lähemalt: https://arstechnica.com/gadgets/2018/07/the-ai-revolution-has-spawned-a-new-chips-arms-race/
Tarkvara revolutsioon:
Aga selle põhjuseks on muidugi tarkvaras toimunud revolutsioon.
Lõik Andrej Karpathy blogist
Tuleb välja, et suure hulga reaalse maailma probleemide puhul on palju lihtsam koguda andmeid (või määratleda soovitavat käitumist) kui täpselt kirjutada seda programselt. Nendel juhtudel jagunevad programmeerijad kahte meeskonda. 2.0 programmeerijad säilitavad, parandavad, sildistavad, muudavad ja puhastavad andmehulkasid: iga sildistatud näide programmeerib lõppsüsteemi, sest see andmehulk kompileeritakse "Tarkvara 2.0" koodi" optimiseerimise läbi. Samal ajal tegelevad 1.0 programmeerijad vajalike töövahenditega: analüütikaga, visualiseerimisega, sildistamise infrastruktuuri ja treeningkoodiga.
Konkreetsed näited:
Visuaalne tuvastamine, kõnetuvastamine, kõnesüntees, tehistõlge, mängud,
andmebaasid.
Kõige ilmekam ja võib-olla hirmutavam näide AI-s on MÄNGUDE vallast. Google-l on olnud sisuliselt üks projekt nii malemängu kui GO mängus esikoha võitmiseks eesliitega Alpha (AlphaGo, AlphaZero)
Minu huvi ja kompetents on praegu male, seetõttu käsitlen lühidalt vaid malemängu, Go-le viidates (ei valda). AlphaZero nimeline programm on saanud viimastel aastatel hakkama malemängu parimate mootorite põrmustamisega. Neist praegu parim mootor kannab nime
StockFish ja selle mootori "ELO" on umbes 3400. Kui seda võrrelda inimese ELO-ga, on vahe 500 punkti, s.t. StockFishi puhul saab eeldad vaid mõnda % positiivseid punktides võrreldes inimesega. Magnus Carlsseni ELO on tänaseks umbes 2880 ja ei ole selge, kas see saavutab millalgi 3000 taseme.
AlphaZero mootor põrmustas StockFishi-i pärast miljoneid tunde väldanud treeningperioodi (kasutades Google enda väljatöötatud TPusid, Tensor Processing Unit) ja selle malemootori partiid Stockfishiga on malehuvilistele avalikuks uurimiseks nähtavad. Need partiid on fantastilised ka teises mõttes - nad on ikkagi arusaadavad inimestele, isegi kelle ELO on madal (ma olen Nõukogude Liidu II järk, ei oska selle ELO-t öelda). Isegi mina näen nendes suurt ilu - see, kuidas AlphaZero suudab üle mängida Prantsuse kaitses StockFishi on suurepärane näide sellest, mida võib saavutad AI.
 Male on hea näide vallast, kus inimese kompetentsi peeti pikka aega masinast kõrgemaks ja väga raskesti ületatavaks. Kuigi isegi traditsioonilise lähenemisega on see muutunud, arvutid mängisid enne AlphaZero tuleku ka malet väga hästi, toimus AlphaZeroga kvalitatiivne hüpe. On eeldatud, et AlphaZero ELO on umbes 3600 ja see tõenäoliselt kasvab ja tõenäoliselt saame üsna varsti teada, kas valged alustavad ja võidavad (või jääb mäng viiki).
AlphaGo on sama teinud Go mängus ja ei ole mingit alust arvata, et seda ei juhtu teistes sarnastes mängudes. Inimeste mängud on sedapuhku lõplikult ületatud arvuti poolt, ei ole ja tõenäoliselt tulevikus pole ühtegi mängu, kus inimene oleks parem. (hiljutine näide on pokker).
Aga veel enam on oodata neuronvõrkudelt seal, kus inimene juba ammu ammu on olnud väga halb mängur - tavaline andmetöötlus, tavalised arvutused, andmebaasid. Näiteks andmebaasimootorite asendamisel neuronvõrkude indekseerimise süsteemiga saaksime umbes 70% kiiruse ja mälu kokkuhoidu - ja seda kõike toimetab arvuti nii, et inimesel ei ole ja ei saa iialgi olema täpselt selgust, kuidas arvuti seda teeb.
Selles mõttes on "Tarkvara 2.0" üsna ohtlik leiutis: esmakordselt inimkonna ajaloos inimesed ei saa kontrollida arvuti poolt genereeritava tarkvara käitumist.
Teame ainult, et AlphaZero oskab mängida malet väga hästi ja teeb tõenäoliselt parima käigu antud olukorras. Mis viisil see programm aga oma neuronkihtides sellise järelduseni jõuab, on praktiliselt võimatu teada saada.
Jõuan aga tagasi tarkvaraarendajate või koodinikerdajate juurde.
KUI te olete alles alustav koodinikerdaja, on teie puhul vältimatu AI -ga tutvus.
Ei ole mõtet mingit mõtet investeerida hääbuvasse tarkvara arenduse harusse, mis 15 aasta pärast on poolsurnud, te peate teadma midagi AI-st ja oskama hakkama saada uues olukorras.
Ärge alahinnake andmearhitekti ametit - see amet ei kao niipea. Seevastu lihtne kodeerija amet võib haihtuda lähima 20 aasta jooksul.
Kui te olete aga tegev koodinikerdaja, siis viimane aeg oleks oma tegevus ümber vaadata ja vanuses alla 60 alustada ümberõpet. Ei ole eriti tore jääda tööturule uute väljakutsega rinda pistma vanuses näiteks ütleme  58 (või mõni muu 5-ga algav number).