Linux – kalendarz adwentowy #1

Jeżeli myślisz o uczeniu maszynowym czy ogólnie o nauce o danych, to pewnie Twoją pierwszą myślą nie jest … Linux. I w sumie słusznie. Masz pewnie jakiś komputer z jakimś systemem operacyjnym. Prawdopodobnie jest to komputer z systemem Windows, albo jest to produkt Apple z systemem macOS. I nie ma w tym nic złego. Okazuje się, że da się efektywnie pracować z danymi na tych systemach. Nie musisz więc zmieniać swoich przyzwyczajeń i ulubionych narzędzi. Ale … nie będzie to prawdopodobnie najefektywniejszy sposób na tę pracę.

Postawiłem bardzo odważną hipotezę, więc muszę ją spróbować obronić. Zaczynajmy więc!

Koszt

Prawdopodobnie najsłabszy argument, ale jednocześnie najłatwiejszy to wykazania. Znaczna większość dystrybucji systemu Linux jest całkowicie darmowa. Do celów prywatnych, jak i komercyjnych. Nie ma więc znaczenia czy instalujesz ten system na kawałku elektroniki służącym do monitorowania wilgotności Twojej roślinki domowej, czy też na najpotężniejszych komputerach na świecie – możesz go pobrać, zainstalować i nie będzie Cię to nic kosztować. A jeżeli masz zbędne pieniądze, to też możesz je tutaj ulokować. Istnieją komercyjne dystrybucje Linuksa wspierane przez duże firmy, które całkiem ochoczo udzielą Ci wsparcia w zamian za przelewy. Jesteś więc kryty niezależnie od grubości portfela.

Wygoda

Jeśli nie używasz na co dzień Linuksa, będzie to dla Ciebie słaby argument. Jeśli jednak lubisz „grzebać” w systemie i dokonywać różnych „tuningów” to jest to idealne miejsce dla Ciebie. Nic nie ogranicza Cię w sposobie pracy. Masz do dyspozycji całą masę managerów okien, interfejsów oraz opcji dekoracji. Możesz pracować całkowicie w trybie tekstowym bez użycia myszki, możesz też pracować całkowicie w trybie graficznym, nie zaglądając do terminala. Zresztą, spójrz tylko tutaj, jakie pomysły mają ludzie, na tworzenie swojego idealnego środowiska pracy.

Narzędzia

Ten argument jest najważniejszy jeśli na serio myślisz o pracy z danymi. Nie raz widziałem blady strach u osób których Windows/macOS przestawał się zachowywać tak, jak powinien. Nie chodziło tutaj o strach przed utratą danych, bardziej przerażała ich myśl, że potencjalnie będą musieli spędzić kilka bądź kilkanaście godzin na ponownej instalacji systemu i używanego oprogramowania. A we współczesnych Linuksach, nawet jeżeli przytrafi Ci się jakaś krytyczna awaria systemu bądź sprzętu jesteś w stanie to wszystko odbudować automatycznie w czasie przerwy obiadowej. Co więcej, jeśli programujesz w Pythonie, R bądź w zasadzie jakimkolwiek innym języku programowania, to czas z poziomu „gołego metalu” do „działającego środowiska programistycznego ze wsparciem GPU” będzie tutaj minimalny. Linux i konsola tekstowa wydają się straszne na pierwszy rzut oka, ale gdy już się je pozna, to inne systemy wydają się krokami wstecz jeśli chodzi o zarządzanie oprogramowaniem.

Dygresja — integracja

Mogło tak się zdarzyć, że do tej pory pracując z danymi, nie budowałeś aplikacji, która miała jakoś te dane wykorzystywać. Budowałeś model, wizualizacje, ale Twoim produktem były wnioski. Jest jednak jeszcze jeden sposób na wykorzystanie danych – stworzenie aplikacji, która będzie na nich bazować, a dla użytkownika końcowego będzie realizować jakieś działanie. Może to być np. aplikacja sterująca samochodem, inwestująca na giełdzie albo interpretująca mowę. Będziesz musiał wtedy zintegrować cały swój proces analityczny z tą aplikacją.

Nie jest to nic strasznego. Podobne procesy dzieją się od wielu lat. Są to procesy continuous integration i continuous delivery. W dużym uproszczeniu idea ta wygląda tak, że maksymalnie często praca programistów zajmujących się różnymi komponentami jest ze sobą automatycznie integrowana, testowana i przygotowywana do wydania. Przy dobrze przygotowanym procesie zespół programistów dostaje natychmiastowe informacje zwrotne jeśli efekty ich pracy przestają ze sobą współpracować i nie stanowią działającego produktu. Uzyskują również możliwość łatwego eksperymentowania i szybkiego dostarczania kodu, gdyż w każdym dowolnym momencie są w stanie wybrać która wersja spełnia ich wymagania. Fajna sprawa, która jest już w zasadzie fundamentem wytwarzania oprogramowania.

Powtarzalność

Jest jednak jeden zasadniczy wymóg, żeby takie procesy mogły powstać. Środowisko pracy programisty musi być łatwe do odtworzenia „od zera” przez system integrujący. W praktyce wygląda to tak, że komputery, które są odpowiedzialne za CI/CD, są efemeryczne. Mogą i często są automatycznie powoływane jako maszyny wirtualne i integrują, budują i testują kod, a po zakończeniu pracy są wyłączane. Zostaje po nich tylko paczka z oprogramowaniem i ewentualnie wyniki testów i logi. A co z sytuacją gdy chcemy użyć nowszych bibliotek? Nie ma problemu. Umieszczamy informację o ich wersjach w naszym kodzie, a system CI/CD sam je pobierze i „przebuduje” maszynę wirtualną tak, aby pasowała do naszych potrzeb. Możemy mieć całą masę różnych takich maszyn, na których mogą być np. różne wersje Pythona. Niczego nie musimy instalować, bo dzięki wspomnianej powyżej możliwości zarządzania narzędziami, wszystko to dzieje się dynamicznie za naszymi plecami.

Jeżeli korzystamy z takich sprytnych rozwiązań, łatwo jest nam też upewnić się, że wszyscy w zespole korzystają z tych samych wersji oprogramowania. Możemy również przy odrobinie szczęścia „cofać się w czasie” i np. rozwiązywać problemy z naszym produktem, którego wersję wydaliśmy dawno temu i nikt już nie ma jej pod ręką, żeby się za to zabrać. Zdecydowanie polecam.

Linux — Którą dystrybucję wybrać?

Istnieje całkiem duża szansa, że udało mi się Cię przekonać do wypróbowania Linuksa jeśli jeszcze tego nie zrobiłeś. Którą więc dystrybucję powinieneś wybrać? Będzie krótko i uwaga, bardzo subiektywnie:

  • Jeżeli szukasz nowinek i chcesz od razu być na czasie z Linuksem – Fedora.
  • Jeśli zależy Ci na stabilności podsyconej nutką ideologii i nie przejmujesz się nieco zakurzonymi wersjami aplikacji – Debian.
  • Natomiast jeżeli jesteś leniwy lub chciałbyś przeznaczyć jak najmniej czasu na przesiadkę – Ubuntu.
  • A jeśli jesteś paranoikiem i nie przejmujesz się utratą wygody, to też znajdzie się coś dla Ciebie – Qubes OS.

Linux — Podsumowanie

Możesz śmiało pracować z danymi bez znajomości systemu Linux. Jeśli jednak zdecydujesz się na wypróbowanie tego systemu, może okazać się, że już nigdy nie będziesz chciał niczego innego. Z czasem pewnie też uda Ci się „przypadkowo” nabrać różnych ciekawych umiejętności, które są cenione w szeroko rozumianym IT.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *