L-am rezolvat pan' la urma, da' cu eforturi maxime
.
Pana la urma problema era de la driver-ele video. Am aflat cu stupoare ca la Linux-urile contemporane driver-ele sunt integrate in kernel ca la Windows ... cum ar zice unii
. Nu mai e kernel-ul minimal monobloc si driverele externe in fisiere, cum era pe vremuri.
Cum toate distributiile de Linux se instaleaza in prezent in mod grafic, ele vor sa incarce inca de la bootare driverele video standard inegrate in kernel, care se cheama 'nouveau'. Deci nu pleaca instalarea, orice-ai face. Driver-ele astea sunt bune; in general merg cu tot ce e pe piata, din pacate nu si cu GTX1080, care e prea noua.
Singura metoda este instalarea de mana, in mod linie de comanda, fara instalarea interfetelor grafice sau a suportului pentru ele (Xserver & Co) => sperand ca driver-ele nouveau nu sunt incarcate.
Procedura este urmatoarea, distilata de mine dupa jdemii de incercari, rateuri si citit forumuri. Din pacate, lucrurile s-au mutat atat de mult catre modul grafic incare totul se face automat si transparent pentru user, incat preocuparea si documentatia pentru asa ceva a inceput sa se piarda in negura timpului. Procedura merge pe unele distributii mai usor, pe altele mai greu, pe altele deloc). Deci procedura:
- instalare in mod text pur.
- inhibare (blacklist) driver-e nouveau. Pasul asta e optional, insa e legat de urmatorul.
- 'spargere' kernel pentru a face loc driverelor proprietar NVidia. Se recompileaza partial kernel-ul adaugand un set de kernel-headere, apoi se instaleaza un pachet care faciliteaza izolarea a diverse componente din kernel (printer care si video), apoi se instaleaza driverele NVidia selectand sa fie compilate in modul 'izolat', astfel incat daca sunt upgradate sau busite, ele nu busesc tot kernel-ul.
- instalare Xserver + desktop environment-ul preferat (KDE, Gnome, .... etc.).
- sistemul porneste automat in mod grafic incarcand driverele NVidia. Se pot face niste modificari ca sa nu mai porneasca in mod grafic, ca pe vremuri. Insa by default, sistemul va porni in mod grafic dupa instalarea ecosistemului grafic.
1) Am incercat prima data cu Debian. Din fericire, Debian-ul pastreaza in meniul de instalare optiunea pentru instalare in mod text pur. Am instalat ca mai sus si a mers OK (sistemul in sine); nici nu a fost nevoie sa fac blacklist la nouveau. Problema a fost ca majoritatea aplicatiilor cu si pentru machine learning nu sunt verificate pentru Debian; asta include si framework-urile CUDA si cuDNN de la NVidia, fara de care nuse poate face GPU processing. In general ele vin cu dedicatie pentru Ubuntu. Fiind pentru Ubuntu, ele au de obicei si sursele de Debian si teoretic se pot instala/complia pe Debian ... Practic, la compilare ramai agatat in miliarde de dependinte care pe Ubuntu exista si pe Debian nu, librarii peste librarii dau erori cat cuprinde ... si tot asa. In final, instalarea merge dar, am citit pe forumuri ca sunt probleme mari chiar la rularea aplicatiilor prin CUDA, cand apar erori de procesare datorate interpretarii/aproximarii gresite a calculelor in virgula fixa/mobila pe GPU. Deci s-au trezit oamenii cu rezultate aiurea, chiar daca nu au erori la run-time. Deci in final ... am abandonat Debian-ul si m-am intors la Ubuntu.
2) Ubuntu nu are optiune de instalare in mod text. Exista niste artificii tehnice la momentul boot-arii prin care se poate pacali sa plece in mod text, exista artificii si pentru evitarea incarcarii driverelor nouveau ... dar ulterior, sistemul tot nu merge.
Asadar, m-am indreptat catre Ubuntu server, care se instaleaza fara partea grafica (e scris mare in documentatie si pe site la Ubunutu). In mod stupid totusi ... dupa instalare, isi incarca automat driverele video, chiar daca suportul grafic nu e instalat; ca la tampiti
. Deci oricat am incercat, n-am reusit sa-l fac sa mearga. Dupa terminarea instalarii text, la urmatoarea boot-are vroia sa incarce driverele nouveau ... si evident crapa. In plus, dupa instalare artificiile pentru a pacali boot-area nu mai merg; SIC!
3) Nu m-am dat batut. Am cautat si pana la urma am gasit o versiune de Ubuntu care are doar sistemul in varianta minimala; e pe undeva bine ascuns prin arhivele de pe site-ul lor. Deci am pus varianta asta, care nu are decat optiune de instalare text (evident, kerne-ul e acelasi ,deci driver-ele nouveau sunt si ele acolo). Cu acesta, am parcurs pasii din procedura; si dupa ceva carpeli si instalari/reinstalari de dependinte si librarii, a mers. Deci intr-un final am ajuns la momentul in care aveam un Ubuntu functional in mod grafic, cu driver bune de GTX1080.
De-aici a urmat alt circ cu instalarea CUDA 8.0, cuDNN 5.1 si Tensor Flow variant GPU. Desi sunt aplicatii dedicate Ubuntu ... vai de mama lor. Au probleme cu dependintele, warning-uri si erori la compilare ... s.a.m.d. Nu bate nic pe departe descrierea roz din documentatiile de instalare cu realitatea sumbra de pe calculator
. Pana la urma insa, a mers.
In final, am aflat ca TensorFlow de la Google a fost lansat si pentru Windows cu foarte putin timp in urma
. Deci am instalkat CUDA 8.0, cuDNN 5.1 si TensorFlow GPU pe Windows 10 in fix juma' de ora, din care mare parte a constat in download-ul lor.
In final, ca performante, am rulat un demo cu convolutional neural networks pentru handwriting recognition. Cu un CPU i7 ultimul racnet am obtinut ~40 d minute. Cu GPU, am obtinut ~50 de secunde si pe Ubuntu si pe Windows, insa nu sunt sigur daca au lucrat toate 4 GPU in parallel sau doar 1. Cred ca doar 1, pentru ca codul demo-ului in TensorFlow nu parea facut pentru multi-GPU.
Cam atat pentru momeht. Revin cu amanunte daca mai apar ... provocari