Zastosowanie Tensorflow/PyTorch w pracy zwykłego programisty

0

Szukając nowych ścieżek rozwoju jako programista zacząłem ostatnio eksperymentować trochę w temacie głębokich sieci neuronowych. Nie mam jakiegoś zacięcia w kierunku matematyki czy pracy jako naukowiec, bardziej patrzę na to jako "inny sposób programowania". Przerobiłem parę kursów, udało mi się wytrenować parę prostszych sieci neuronowych, natomiast nie bardzo mam pomysł w jaki sposób tę naukę kontynuować. W odróżnieniu od nauki "tradycyjnego" programowania, gdzie stosunkowo niewielkim kosztem czasowym można osiągnąć coś oryginalnego (typu aplikację rozwiązującą jakiś problem, pozwalającą zorganizować dane w jakiś konkretny sposób) i stosunkowo łatwo znaleźć następny cel, kamień milowy w rozwoju, o tyle projektowanie modeli w TF czy PyTorch mam wrażenie pod tym względem z góry skazane jest na porażkę. Nieważne jakie modyfikacje w modelu wprowadzę, zawsze okazuje się, że istnieje już gdzieś lepszy, stworzony przez kogoś kto ma więcej czasu, zasobów sprzętowych i danych. Mam wrażenie że przeciętny model (typu jakiś Resnet, Efficientnet) ma zwykle dużo szersze i bardziej ogólne zastosowanie niż przeciętny kod źródłowy. W moich projektach zawsze koniec końców okazuje się, że bardziej opłaca się skorzystać z gotowej, skopiowanej skądś architektury, albo gotowego, wytrenowanego modelu poprzez zewnętrze API na jakimś Azure niż faktycznie napisać taką sieć samemu: bo jest zawsze lepsza.

Stąd moje pytanie: czy taki przeciętny człowiek jak ja: bez zasobów, zespołu, serwerowni pełnej kart graficznych i korporacji za plecami jest w stanie coś zdziałać na tym polu? Czy zdarzyło się komuś z was pisać kod z użyciem PyTorch'a lub Tensorflow jednocześnie będąc "zwykłym" programistą, a nie osobą na stanowisku typu "Data Scientist"? Czy może to ja źle podchodzę do tematu i to nie o projektowanie nowych architektur tu chodzi?

1

Źle podchodzisz do tematu. Chęć bycia najlepszym we wszystkim jest zgubna. Idąc tym tokiem myślenia, mógłbyś równie dobrze nie zapraszać dziewczyn na randki, bo i tak znajdzie się ktoś przystojniejszy od Ciebie :D

Wracając do tematu - Jeśli temat Cię interesuje to go zwyczajnie zgłębiaj.

0

Jeśli czujesz, że samemu doszedłeś już do ściany to polecam Ci poszukanie projektów OpenSource i dołączenie do jakiejś grupy gdzie tworzony jest "poważniejszy soft" choćby nawet hobbystycznie ale bardziej złożony. Najlepiej oczywiście jakiś zespół z biegłym angielskim, GITem, dobrym kodem itp.

Polecam też startowanie w konkursach z nagrodami, jakiś czas temu przeleciał mi przez przeglądarkę taki konkurs ale na pewno teraz nie odnajdę tego linku. Może to być fajny czynnik motywujący do rozwoju i poznanie ludzi z tej branży a i do wygrania są fajne piniondze.

Są jeszcze możliwości działania nawet nie posiadając poteżnych serwerów itp.

Powodzenia! :)

2

Faktycznie, jak chcesz rozwiązać oklepany problem, to masz publiczne repozytoria gotowych modeli. A jak chcesz rozwiązać jakiś nieszablonowy problem, to musisz zbudować i zoptymalizować swój model.

Niestety, poniekąd byłem zmuszony żeby się nauczyć Pythona, Pandas i TensorFlow, żeby rozwiązać pewien problem. W .NET było to zbyt problematyczne, może nawet niemożliwe. Tak więc, w moim wypadku, TensorFlow jest narzędziem, a nie celem samym w sobie.

1
iteredi napisał(a):

Nieważne jakie modyfikacje w modelu wprowadzę, zawsze okazuje się, że istnieje już gdzieś lepszy, stworzony przez kogoś kto ma więcej czasu, zasobów sprzętowych i danych. Mam wrażenie że przeciętny model (typu jakiś Resnet, Efficientnet) ma zwykle dużo szersze i bardziej ogólne zastosowanie niż przeciętny kod źródłowy. W moich projektach zawsze koniec końców okazuje się, że bardziej opłaca się skorzystać z gotowej, skopiowanej skądś architektury, albo gotowego, wytrenowanego modelu poprzez zewnętrze API na jakimś Azure niż faktycznie napisać taką sieć samemu: bo jest zawsze lepsza.

Na początku zabaw z takimi technologiami jak AI zawsze próbujemy robić rzeczy łatwe i oczywiste dlatego nie ma nic dziwnego w tym, że to już ktoś zrobił lepiej. Pierwsze sieci neuronowe działały na lampach elektronowych a teoria jest jeszcze starsza... Więc naukowcy trochę lat, jużmieli na to żeby dobrze zaimplementować rozpoznawanie literek czy obrazków.

Sieci neuronowe, algorytmy genetyczne czy systemy rozmyte to bezdyskusyjnie przyszłość. Wyspecjalizowanie się w tych dziedzinach zagwarantuje Ci pracę w bardzo ciekawych miejscach...
Trzeba jednak wiedzieć, że aby taką pracę dostać to nie wystarczy wiedzieć jak wytrenować prostą sieć, ale trzeba samemu potrafić problem postawić tak aby za pomocą AI był rozwiązaywalny, a to już wymaga praktyki i kilku lat doświadczeń. Pewne jest, że warto w to iść.
Dziś AI dopiero wychodzi z uczelnianych zakamarków do świata komercyjnego. Lawina pomysłów na zastosowanie tych technologii jest dopiero przed nami.

Stąd moje pytanie: czy taki przeciętny człowiek jak ja: bez zasobów, zespołu, serwerowni pełnej kart graficznych i korporacji za plecami jest w stanie coś zdziałać na tym polu? Czy zdarzyło się komuś z was pisać kod z użyciem PyTorch'a lub Tensorflow jednocześnie będąc "zwykłym" programistą, a nie osobą na stanowisku typu "Data Scientist"? Czy może to ja źle podchodzę do tematu i to nie o projektowanie nowych architektur tu chodzi?

Tak. Choć to zwykle dużo trudniejsze to małe zespoły/firmy też tworzą wiele innowacyjnych rozwiązań. Rzecz w tym, że w takiej sytuacji sam musisz się zaopiekować produktem, który stworzysz. Sam się nie sprzeda.
Zatem jeśli chcesz być tylko programistą i wolnym strzelcem jednocześnie to raczej mała szansa, że tą wiedzę przerobisz na pieniądz. Jeśli jednak masz chęć tworzyć własne produktu i je sprzedawać to taka wiedza jest jak "złoto".

1

Stąd moje pytanie: czy taki przeciętny człowiek jak ja: bez zasobów, zespołu, serwerowni pełnej kart graficznych i korporacji za plecami jest w stanie coś zdziałać na tym polu? Czy zdarzyło się komuś z was pisać kod z użyciem PyTorch'a lub Tensorflow jednocześnie będąc "zwykłym" programistą, a nie osobą na stanowisku typu "Data Scientist"? Czy może to ja źle podchodzę do tematu i to nie o projektowanie nowych architektur tu chodzi?

Dobry sprzęt zawsze się przyda przy trenowaniu nowych modeli, niemniej to jest tylko mały kawałek AI jakim możesz się zajmować,

Polecałbym Ci skupić się na jakimś obszarze deep learningu który jest dla Ciebie interesujący typu np. segmentacja czy detekcja obrazu bądź najbardziej przystępna klasyfikacja obrazu i nabrać w tym jakiejś biegłości. Potem bym Ci polecał wziąć się za nowe publikacje z tego obszaru aby go bardzo wgłębiać. Samo zastosowanie ResNet jest niesamowicie szerokie - masz ogrom innych architektur które w sobie coś podobnego do resneta zawierają. A może zamiast resneta w tych architektuach użyć coś innego ? Dużo osób pewnie się nad tym zastanawiało, jednakże nadal postaje dużo prac przykładowo z obszaru ciągłych sieci neuronowych które mogą wydawać się pewnym krokiem naprzód w rozwoju architektury resnet a przy tym i innych w dziedzinie computer vision.

I tak pewnie można o każdej dziedzinie AI. Natomiast jeśi interesuje Cię używanie AI tylko w zakresie używania tego jak młotka to zawsze znajdą się inni którzy wgląbią się troszkę dalej. Nie chodzi o to aby umieć wszystko, ale jakąś działkę warto poznać lepiej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1