Żeby zacząć bawić się z Machine Learningiem potrzebna jest dobra karta graficzna. Bo nawet na dobrym zwykłym procesorze uczenie sieci trwa długo. Na procesorze graficznym jest to dużo szybsze.
Co jeśli chciałbym taką aplikację z ML postawić w internecie? Przecież nie będzie stała na moim GPU pod biurkiem. Trzeba ją uruchomić na jakimś serwerze. Obecnie nawet VPS-y nie mają GPU. Zostaje mi jedynie Amazon AWS (czy podobne rozwiązanie od Google lub Azure) gdzie słono się płaci za każdą uruchomioną godzinę.
Nie ma innego wyboru?
A może jedynie uczenie sieci wymaga mocnego GPU, a postawienie aplikacji i jej działanie już nie? Przykładowo, aplikacja ma rozpoznawać koty/psy: - Do przemielenia tysięcy zdjęć potrzeba mocnego GPU. Wystarczy to zrobić tylko raz (np. u mnie na komputerze pod biurkiem). - Ale jak już wytrenuję sieć (taką "wyuczoną sieć" mógłbym przenieść w formie np. jakiegoś pliku), to aplikacja po podaniu nowego zdjęcia ma tylko sprawdzić czy zgadza się z wyuczonymi wagami. To mogłoby być szybko realizowane nawet na zwykłym procesorze? Dobrze myślę?
Oczywiście jakby siec miała uczyć się na bieżąco z nowych zdjęć, to musiałaby aktualizować tą sieć. Ale nowe dane spływałyby bardzo wolno. Ewentualnie raz na jakiś czas zbierałbym dane i trenował (aktualizował) siec u siebie lokalnie zamiast na serwerze.
Jeśli to prawda, to teraz drugie pytanie. Czemu takie gotowe wytrenowane sieci nie są udostępniane w internecie? Albo czemu firmy nie sprzedają takich gotowych sieci? Jakbym miał jakiś biznes to wolałbym kupić gotowca niż bawić się samemu z uczeniem.
@mk321: Nie robiłem sieci rozwiązujących skomplikowane problemy, ale pewnie będzie jak przy prostszych, czyli nauka jest najbardziej obliczeniożerna, a samo używanie już nauczonej sieci dużo mniej. Jak nie chcesz używać AWS to załatw sobie stałe ip, i sam sobie taki serwer z GPU postaw ( ͡°ʖ̯͡°). Co do drugiego pytania, pewnie ciężko zrobić coś na tyle uniwersalnego żeby sprzedawać jako nauczoną sieć. Łatwiej udostępnić
@mk321: "Użycie" sieci jest bardzo mało zasobożerne w porównaniu do uczenia jej. Przy uczeniu ta sieć jest używana i poprawiana tysiące, miliony albo i więcej razy, zależnie od problemu do rozwiązania i wielkości sieci. Użycie to jest tylko wykonywanie wielu operacji mnożenia i dodawania i jest zależne jedynie od rozmiarów sieci - ilości i wielkości warstw oraz ilości danych wejściowych i wyjściowych.
Uczenie sieci jest drogie. Ja płacę za AWS i dodatkowo mam dwie 1070. Jak to się robi komercyjnie, to nie jest tak tragicznie drogo, ale hobbystycznie to chyba bym nie inwestował w to.
Można ściągnąć sporo sieci z internetu. Poszukaj pre trained neural network github.
Do predykcji (rozpoznawanie) karta graficzna nie jest niezbędna.
@mk321: Wszystko zależy od architektury sieci, czyli głebokości, ilości neuronów, a w przypadku rozpoznawania obrazów wielkości nakładanych filtrów i innych parametrów (conv net).
Sieci są jaknajbardziej publikowane, ale słyszałem jedynie o tych konkursowych, takich jak google net czy resnet. Te razem z obszerną ich recenzją są publikowane w ramach rozwoju nauki. Problem z nimi jest taki, że są przystosowane do rozpoznawania tysiąca czy więcej klas, przez co są całkiem ogólne i można powiedzieć
@mk321: Jeszcze myślę że warto dodać w ramach tego co pisałem, że na GPU rzeczywiście jest szokujący przyrost prędkości, natomiast nie zmienia to tego, że na CPU można sobie poradzić.
Wlaśnie po mękach postawiłem dual boota z linuxem z sterownikami i bibliotekami potrzebnymi pod obliczenia na NN i okazało się że trening wykonuje się około 60 razy szybciej niż na mobilnym CPU i5. Sam jestem w szoku że to aż
Żeby zacząć bawić się z Machine Learningiem potrzebna jest dobra karta graficzna. Bo nawet na dobrym zwykłym procesorze uczenie sieci trwa długo. Na procesorze graficznym jest to dużo szybsze.
Co jeśli chciałbym taką aplikację z ML postawić w internecie? Przecież nie będzie stała na moim GPU pod biurkiem. Trzeba ją uruchomić na jakimś serwerze. Obecnie nawet VPS-y nie mają GPU. Zostaje mi jedynie Amazon AWS (czy podobne rozwiązanie od Google lub Azure) gdzie słono się płaci za każdą uruchomioną godzinę.
Nie ma innego wyboru?
A może jedynie uczenie sieci wymaga mocnego GPU, a postawienie aplikacji i jej działanie już nie?
Przykładowo, aplikacja ma rozpoznawać koty/psy:
- Do przemielenia tysięcy zdjęć potrzeba mocnego GPU. Wystarczy to zrobić tylko raz (np. u mnie na komputerze pod biurkiem).
- Ale jak już wytrenuję sieć (taką "wyuczoną sieć" mógłbym przenieść w formie np. jakiegoś pliku), to aplikacja po podaniu nowego zdjęcia ma tylko sprawdzić czy zgadza się z wyuczonymi wagami. To mogłoby być szybko realizowane nawet na zwykłym procesorze? Dobrze myślę?
Oczywiście jakby siec miała uczyć się na bieżąco z nowych zdjęć, to musiałaby aktualizować tą sieć. Ale nowe dane spływałyby bardzo wolno. Ewentualnie raz na jakiś czas zbierałbym dane i trenował (aktualizował) siec u siebie lokalnie zamiast na serwerze.
Komentarz usunięty przez autora
Komentarz usunięty przez autora
Komentarz usunięty przez autora
Użycie to jest tylko wykonywanie wielu operacji mnożenia i dodawania i jest zależne jedynie od rozmiarów sieci - ilości i wielkości warstw oraz ilości danych wejściowych i wyjściowych.
Można ściągnąć sporo sieci z internetu. Poszukaj pre trained neural network github.
Do predykcji (rozpoznawanie) karta graficzna nie jest niezbędna.
Sieci są jaknajbardziej publikowane, ale słyszałem jedynie o tych konkursowych, takich jak google net czy resnet.
Te razem z obszerną ich recenzją są publikowane w ramach rozwoju nauki.
Problem z nimi jest taki, że są przystosowane do rozpoznawania tysiąca czy więcej klas, przez co są całkiem ogólne i można powiedzieć
Wlaśnie po mękach postawiłem dual boota z linuxem z sterownikami i bibliotekami potrzebnymi pod obliczenia na NN i okazało się że trening wykonuje się około 60 razy szybciej niż na mobilnym CPU i5.
Sam jestem w szoku że to aż