artykuły

Praktyczne zastosowania sztucznej inteligencji w komputerze osobistym

15
7 marca 2020, 14:01 Mateusz Brzostek

Z reklam elektroniki, informacji prasowych i plotkarskich doniesień wylewa się ostatnio sztuczna inteligencja. Już kilka lat temu hasło SI pojawiło się na billboardach w połączeniu z wizerunkiem telefonu i słynnego piłkarza. Dziś SI zaczyna się pojawiać na liście rzekomych atutów pecetów, zwykłych komputerów, o których każdy użytkownik wie, że nie są wcale zbyt inteligentne.

Spis treści

Wstęp

Zacznijmy od określenia terminów, którymi będziemy się posługiwać. Jeśli widzicie pojęcia AI, SI, sztuczna inteligencja gdziekolwiek indziej niż w literaturze science-fiction czy debatach filozoficznych, to prawie na pewno chodzi o wypaczone znaczenie tych słów. Te pojęcia zostały zawłaszczone przez marketing i stały się sloganami. Nie opisują rzeczywistości; oderwały się od znaczenia, a przytwierdziły do efektu lub reakcji jaką mają wywołać u słuchacza. Nie mają prawie nic wspólnego z uniwersalną sztuczną inteligencją rodem z Odysei Kosmicznej czy Ja, Robot. Ponieważ utraciły znaczenie, można pod nimi „ukryć” innowację techniczną dowolnego kalibru i reklamować coś jako inteligentne lub z SI.

Jak czytamy na stronie internetowej Intela, w opisie procesorów Core 10. generacji:

Inteligentna wydajność dzięki mocy SI: Laptopy z procesorami Intel® Core™ dziesiątej generacji uczą się i przystosowują do potrzeb użytkownika, wykorzystując zalety wbudowanych instrukcji SI, które pozwalają szybciej i płynniej wykonywać zadania.

Możemy zignorować nadużycia językowe w tym cytacie, ale nie możemy przymknąć oczu na to, że laptopy z całą pewnością nie uczą się. Za chwilę to pokażemy, przyglądając się z bliska wszystkiemu, co ukryto pod tym jednym hasłem: moc SI

Sztuczna inteligencja na co dzień

We współczesnych produktach elektronicznych sztuczna inteligencja oznacza zwykle oprogramowanie spełniające swoją funkcję dzięki specyficznemu algorytmowi. Algorytm nie jest stworzony krok po kroku przez programistę, ale kształtuje się sam na podstawie przykładowych danych oraz przykładu pożądanego efektu. Na przykład rozpoznawanie mowy albo twarzy na zdjęciu jest skomplikowanym zadaniem, którego nie potrafimy podzielić na małe kroki i zaprogramować każdego z nich. Zamiast tego zbieramy dużo danych wejściowych, określamy jaki powinien być efekt i pozwalamy, żeby algorytm naśladujący podane przez ludzi rozwiązania sam się ukształtował.

Efektem tego kształtowania (uczenia maszynowego) jest model – zbiór danych stanowiący „pamięć” algorytmu oraz listę operacji, który mają być poddane nowe dane. Podczas uczenia algorytm zna przykłady i poprawne odpowiedzi. Kiedy jesteśmy usatysfakcjonowani skutecznością algorytmu, możemy go użyć do wnioskowania, czyli przedstawiać mu nowe dane i oczekiwać poprawnych lub zbliżonych do poprawnych odpowiedzi.

Uczenie i wnioskowanie

Większość tych algorytmów ma ze sobą coś wspólnego: do uczenia wymagają ogromnej ilości danych, oraz ogromnej mocy obliczeniowej. Wnioskowanie, czyli praktyczne wykorzystanie już ukształtowanch algorytmów, wymaga stosunkowo mało danych i stosunkowo mało mocy obliczeniowej. To naturalnie powoduje, że uczenie zwykle odbywa się w centrach danych lub u twórców oprogramowania. Spora część tego oprogramowania działa wyłącznie w centrach danych, uczona i udoskonalana regularnie na podstawie zebranych z internetu (również „internetu rzeczy”) danych. Dla nas dostępna jest tylko w postaci interfejsu, z którego można skorzystać mając dowolny terminal internetowy. Na przykład usługa Google Translate na stronie internetowej translate.google.com wykorzystuje „SI” działającą na serwerach Google. Za to aplikacja Google Translate z pobranym odpowiednim słownikiem działa bez internetu – model sieci neuronowej jest przechowywany lokalnie, i do wnioskowania służy moc obliczeniowa telefonu.

Użytkownik jakiegokolwiek oprogramowania ma niezwykle rzadko do czynienia z uczeniem sieci neuronowej, czyli kształtowaniem tego algorytmu na podstawie ogromnego zbioru danych. Domowy użytkownik – nie programista, data scientist czy eksperymentator w tej dziedzinie – styka się tylko z programami wykorzystującymi sieci neuronowe do wnioskowania. Niektóre funkcje takich programów są osobnymi „czarnymi skrzynkami”, do których wchodzą dane do przetworzenia, a wychodzą efekty pracy sieci neuronowej.

Program posługujący się siecią neuronową musi mieć jej model, czyli paczkę danych opisującą sztuczne neurony (wagi, funkcje aktywacji), ich połączenia oraz operacje matematyczne wykonywane pomiędzy neuronami. Taki model można sobie wyobrazić jako graf, w którym dane wejściowe są przekazywane do coraz to kolejnych węzłów, z których każdy oznacza jakiś pakiet „zamrożonych” danych oraz obliczeń do wykonania. Poza modelem jest potrzebne oprogramowanie, które wykona wspomniane operacje. To może być częścią dystrybuowanego programu – czyli być skompilowane, zdefiniowane i zoptymalizowane jeden raz z myślą o konkretnej maszynie obliczeniowej. Może nie być częścią programu, lecz systemu operacyjnego czy sterowników do konkretnej maszyny obliczeniowej – w takim przypadku program zakłada, że system operacyjny „zrozumie” przekazany mu model i zatroszczy się o przetłumaczenie i uruchomienie go. Można też zbudować specjalny akcelerator, dla którego ogólnie opisane operacje będą zrozumiałym językiem, i który nie potrzebuje kompilacji do żadnej prostszej postaci.

To wszystko tworzy kilka warstw abstrakcji, a przez każdą z nich jest wiele ścieżek powiązanych z różnymi dostawcami oprogramowania, producentami sprzętu i projektami badawczymi. Różne zestawy narzędzi i runtime zmieniają się, łączą, rozdzielają lub dezaktualizują bardzo często. W tym gąszczu powoli wyłania się kilka praktycznych i stosunkowo uniwersalnych metod przejścia od wyuczonego modelu do wykonania obliczeń przez maszynę obliczeniową.

Microsoft proponuje budować aplikacje w oparciu o API WindowsML. Aplikacja zawiera model w formacie ONNX i za pomocą tego API zleca systemowi operacyjnemu przeprowadzenie wnioskowania. Resztą – wybraniem optymalnego akceleratora, przetłumaczeniem operacji na odpowiedni język programowania – na zajmuje się system Windows.

Model przekazany WindowsML zostaje przerobiony, a obliczenia wykonane albo przez CPU, albo za pomocą DirectML – części DirectX. DirectML pozwala wnioskować na podstawie modeli ONNX za pomocą dowolnego GPU kompatybilnego z API DirectX 12. API WindowsML i DirectML są częścią Windowsa począwszy od wersji 1809, więc powinny być dostępne na większości nowoczesnych komputerów osobistych.

Jednocześnie Microsoft rozwija pewną alternatywną ścieżkę: zestaw oprogramowania ONNX Runtime. Działa na Linuksie, Mac OS i Windowsie, jest otwartoźródłowy i może wykonywać obliczenia za pomocą wielu rodzajów maszyn obliczeniowych i API, między innymi CUDA, TensorRT, DirectML, OpenVINO, a wkrótce także przez MIGraphX.

Rozwiązania Microsoftu mają szansę zdobyć sporą popularność z dwóch powodów. Po pierwsze, akceleracja obliczeń nie jest powiązana z konkretnym dostawcą sprzętu – aplikacje korzystające z WindowsML powinny działać na dowolnym sprzęcie, na którym działa Windows. Po drugie, zakładają wykorzystanie modeli w formacie ONNX: to otwarty format, wspierany przez bardzo wiele wiodących firm z tej branży, kompatybilny z większością popularnych narzędzi do tworzenia sieci neuronowych. Przygotowanie modeli ONNX pozwala łatwo wybierać pomiędzy różnymi systemami operacyjnymi, technikami przyspieszania obliczeń, i architekturami sprzętu, nie tylko tymi udostępnianymi przez Microsoft.

Oczywiście WindowsML to tylko jedna z setek istniejących dróg prowadzących od modelu do wyniku obliczeń. Zestawy narzędzi takie jak TensorFlow, Caffe, MXNet oferują własne możliwości wykonywania obliczeń z minimalnym pośrednictwem innych API. Producenci sprzętu oferują całe zestawy oprogramowania obejmujące wszystkie opisane warstwy abstrakcji – na przykład Intel OpenVINO (a w przyszłości oneAPI), Nvidia TensorRT i inne. Cały czas powstają nowe pomysły na wysoko wydajne i szeroko kompatybilne sposoby prowadzenia obliczeń związanych z wnioskowaniem, więc sytuacja przedstawiona w tym artykule zapewne zmieni się w ciągu najbliższych lat.

Strona:
*Konto usunięte*2020.03.07, 21:25
-11#1
pierfsza
Edytowane przez autora (2020.03.08, 11:13)
1piotr13Zobacz profil
Poziom ostrzeżenia: 0%
1piotr132020.03.07, 21:38
-8#2
krysia1990xxx @ 2020.03.07 21:25  Post: 1236357
piersza

Nie dość, że jeden wyraz napisała, to jeszcze z błędem. Czym tu się chwalić 🤔
*Konto usunięte*2020.03.08, 11:12
-3#3
1piotr13 @ 2020.03.07 21:38  Post: 1236358
krysia1990xxx @ 2020.03.07 21:25  Post: 1236357
piersza

Nie dość, że jeden wyraz napisała, to jeszcze z błędem. Czym tu się chwalić 🤔

widzę, że mamy tutaj zazdrośnika xD cóż, może następnym razem Ci się uda być pierfszym...
Edytowane przez autora (2020.03.08, 11:13)
mjwhiteZobacz profil
Poziom ostrzeżenia: 0%
mjwhite2020.03.08, 13:16
-1#4
Bardzo ciekawy artykuł, brawo. Może wreszcie niektórzy zrozumieją że nie tylko punkciki w cinebenchu się liczą.
GrLTZobacz profil
Poziom ostrzeżenia: 0%
GrLT2020.03.08, 13:55
Słyszałem że AI miało pisać newsy na Pclabie, ale nie wyszło bo za bardzo się wyróżniała pisząc bez błędów :E
StjepanZobacz profil
Poziom ostrzeżenia: 0%
Stjepan2020.03.08, 22:34
-2#6
GrLT @ 2020.03.08 13:55  Post: 1236390
Słyszałem że AI miało pisać newsy na Pclabie, ale nie wyszło bo za bardzo się wyróżniała pisząc bez błędów :E

Gdyby było takie ładne jak Dahj/Soji z Picarda to tak.
pyniek1972Zobacz profil
Poziom ostrzeżenia: 0%
pyniek19722020.03.09, 04:44
AI dawno już pisze newsy na PCLabie patrząc na jakość tychże :)
KwantZobacz profil
Poziom ostrzeżenia: 0%
Kwant2020.03.09, 10:14
'Microsoft proponuje budować aplikacje w oparciu o API WindowsML.'

Hoho ho ;-) MS znowu przegapił trend i próbuje wskoczyć do uciekającego pociągu. Wszyscy używają googlowego TensorFlow ewentualnie facebookowego PyTorch.

Do TensorFlow google daje darmowe maszynki wirtualne (colab.research.google.com hostowanie w googlowej chmurze z potężnym GPU).

MS 'wynalazł' nowy framework, w praktyce Windows-only bo potrzebne VisualStudio i na dodatek preferowany C#. Przewiduję pełny sukces, na poziomie tego z WindowsPhone ;-)
doopanZobacz profil
Poziom ostrzeżenia: 0%
doopan2020.03.09, 11:58
Strasznie fajny artykul.
forumgoscZobacz profil
Poziom ostrzeżenia: 0%
forumgosc2020.03.09, 17:46
-1#10
jest tu gdzies na forum cos o tej nowej luce amd ? ciekawi mnie co tutaj o tym sadza
Funkcja komentowania została wyłączona. Do dyskusji zapraszamy na forum.
1