własny projekt

Zaczęty przez mariotti, 25 Maj 2012, 23:40

mariotti

Cześć

Jakie warunki trzeba spełnić, aby w sieci obliczeń rozproszonych
uruchomić własny projekt? Czy to jest możliwe tylko dla dużych
instytucji, czy każdy może napisać i potem zainstalować?

Pozdrawiam

Cyfron

taaa... zwłaszcza, że u nas na forum stworzone zostały 2-3 projekty i jeden chodzi w ogóle na jakimś ledwo żywym kompie (Enigma) i obsługuje to osoba prywatna :)
Więc może zrobić sobie to jedna osoba pod warunkiem że sobie to ogarnie wszystko.
Z naszej strony będzie wsparcie merytoryczne i pomoc w rozwiązywaniu jakiś problemów, ale zrobić musisz sobie to sam, albo znaleźć sobie do tego ludzi.

Tobas

Napisz jaki to miałby być projekt,
na pewno coś doradzimy..

mariotti


Dziękuję za szybkie odpowiedzi, nie spodziewałem się
tak szybkiej reakcji. Już odpowiadam na wszystko.

Z samym napisaniem programu/programów raczej nie będę
miał problemów, programuję zawodowo od kilkunastu lat.

Natomiast mogę mieć różne problemy ze zrozumieniem protokołów,
komunikacji, instalacji, może coś mi się wydawać niejasne w
dokumentacji - z takiej pomocy z pewnością chętnie skorzystam.

O jakim projekcie myślę? Osobiście interesuję się uczeniem
maszynowym i grami. Dwa lata temu kupiłem specjalny
komputer i testuję na nim różne metody uczenia maszynowego w
zastosowaniu do szachów. Innymi słowy staram się napisać
taki program, aby sam nauczył się dobrze grać w szachy.
Starsza wersja mojego programu grała w międzynarodowym
turnieju:
http://wbec-ridderkerk.nl/html/BayesianElo_ed14.htm
i sklasyfikowała się na 173 miejscu - myślę że nieźle
jak na program który wszystkie parametry dobrał sobie
sam w wyniku procesu samouczenia. Najnowsza wersja
jest silniejsza, ale jeszcze wyników nie ma i nie pochwalę
się - organizatorom turniejów też brakuje mocy obliczeniowej i
trzeba czekać miesiącami na wyniki :)
Jakby ktoś chciał sam pograć, to można ściągnąć ze strony:
http://brodacz100.republika.pl


Niestety zabawa w samouczenie programu szachowego wymaga koszmarnej
mocy obliczeniowej. Kiedyś wykonałem symulację na znacznie prostszej grze, aby
oszacować ile trzeba rozegrać gier w trakcie uczenia. Wyniki
są zastraszające. Np. aby uzyskać systematyczny postęp
przy pomocy algorytmu genetycznego trzeba rozegrać wiele
turniejów a w każdym turnieju musi być przynajmniej 50mln gier.
Gdyby gra trwała choćby 30 sekund, potrzeba 50 lat obliczeń
na jeden turniej :)

Oczywiście są metody szybsze niż genetyczna, gdy mam
wolny czas to właśnie zajmuję się testowaniem tych metod.
Najszybsza metoda jaką testowałem wymaga tez kilku lat
ciągłych obliczeń. Oczywiście metodę trzeba uruchamiać
wiele razy z różnymi parametrami, analizować wyniki, nanosić
poprawki i próbować od nowa...

Gry i uczenie maszynowe to nie jedyne moje zainteresowanie.
Jeśli macie propozycje na jakieś inne projekty które by miały
lepsze wzięcie i jeśli od strony teoretycznej bym podołał, to...
nie obiecuję na pewno, ale może bym zrobił :)

Pozdrawiam!

Cyfron

moim zdaniem jest to świetny materiał na projekt :)

migawron

popieram, widzę zarys projektu mającego szanse zaistnieć na świecie... Jeśli tylko będę jakoś mógł się przydać, to chętnie pomogę.


NeuroChess@home ?? :whistle:



Troll81

zajefajny pomysł. Na pewno znajdziesz u nas wsparcie :D projekt idealny na potrzeby BOINC :D

mariotti

Za sprawą waszych wypowiedzi jestem wstępnie napalony.
Musiałbym więc zapoznać się z jakimś regulaminem i potem z
dokumentacją. Jakie dokumenty polecacie dla początkującego?
Bez zrozumienia na jakiej zasadzie to działa trudno snuć
dalsze spekulacje...

Może na rozgrzewkę warto napisać coś prostszego... może jakiś
hello world szachowy... może tzw test PERFT. Test ten polega
na policzeniu ile liści ma drzewo gry po przeszukaniu na zadaną
głębokość. Może policzymy na głębokość 14 ruchów :D
http://www.talkchess.com/forum/viewtopic.php?start=0&t=38862&topic_view=flat&sid=cb1572b39cc54505d74c2ec5044a572a

Pozdrawiam

Radegast

Witamy na forum. Bardzo interesujące pomysły.  :ahoy:

PoznanskaPyra

Cytat: mariotti w 26 Maj 2012, 01:56
Za sprawą waszych wypowiedzi jestem wstępnie napalony.
Musiałbym więc zapoznać się z jakimś regulaminem i potem z
dokumentacją. Jakie dokumenty polecacie dla początkującego?
Bez zrozumienia na jakiej zasadzie to działa trudno snuć
dalsze spekulacje...

Może na rozgrzewkę warto napisać coś prostszego... może jakiś
hello world szachowy... może tzw test PERFT. Test ten polega
na policzeniu ile liści ma drzewo gry po przeszukaniu na zadaną
głębokość. Może policzymy na głębokość 14 ruchów :D
http://www.talkchess.com/forum/viewtopic.php?start=0&t=38862&topic_view=flat&sid=cb1572b39cc54505d74c2ec5044a572a

Pozdrawiam

Witam na forum
Wg mnie konieczne by było napisanie aplikacji na CUDA NV lub ATI STREAM. Mogę się też postarać wykonać jakieś odznaki :)
WIZYTÓWKA
Kompy:
AMD Ryzen 9-3900X + GTX980Ti
Intel i5 4570 + HD7970

mariotti

Cytat: PoznanskaPyra w 26 Maj 2012, 02:28
Wg mnie konieczne by było napisanie aplikacji na CUDA NV lub ATI STREAM. Mogę się też postarać wykonać jakieś odznaki :)
Witam :)

Ale konieczne do czego? Do szachów się nie nadają, bo nie mają stosu.

Pozdrawiam

Troll81

raczej do chwalenia się. Najpierw musisz mieć aplikację którą da się podzielić na zadania.

np przy szukaniu liczb pierwszych każdy dostaje algorytm jako aplikację liczącą a zakres liczb jako jednostkę pracy. W zadanym zakresie przy użyciu algorytmu szuka liczb pierwszych a jak zakończy to odsyła wyniki na serwer. W ten sposób to działa. Nie pamiętam zbyt wiele z algorytmów uczących ale można by ten sam algorytm przeprowadzić na kilku maszynach na tym samym zestawie danych a potem sprawdzić które wyniki są lepsze.

BTW jaka jest całkowita ilość rozegrań w szachy? bo widzę tu pewna możliwość :D mieć rozegrane wszystkie partie i podczas gry sprawdzać sytuację na szachownicy. wyszukiwać w bazie danego układu a potem patrzeć która sekwencja ruchów w przód zagwarantuje nam zwycięstwo....

krzyszp

Witam na forum :)

Pomysł masz doskonały, do tego idealnie wpasowuje się w zasady liczenia na platformie BOINC (przetwarzanie równoległe na wielu maszynach).
Do uruchomienia systemu w zasadzie wystarczy dowolny w miarę wydajny komputer, natomiast może być konieczne wyposażenie w dużą przestrzeń dyskową na przechowywanie wyników tych obliczeń (choć nie koniecznie).
Generalnie w kwestii samego uruchomienia serwera BOINC najlepiej chyba pytać TJM'a - ma w tym niezłą praktykę i opiekuje się już dwoma takimi projektami (Enigma@Home oraz Radioactive@Home).
Oczywiście, wszelką pomoc uzyskasz także na naszym forum :)

Fajne zegarki :)
Należę do drużyny BOINC@Poland
 Moja wizytówka

PoznanskaPyra

Cytat: mariotti w 26 Maj 2012, 03:33
Cytat: PoznanskaPyra w 26 Maj 2012, 02:28
Wg mnie konieczne by było napisanie aplikacji na CUDA NV lub ATI STREAM. Mogę się też postarać wykonać jakieś odznaki :)
Witam :)

Ale konieczne do czego? Do szachów się nie nadają, bo nie mają stosu.

Pozdrawiam
Na programowaniu się nie znam. Ale widząc wyniki obliczeń wydawało mi się, że karta graficzna jest tu zdecydowanie lepsza od procka i co to jest ten stos? Dowiem się czegoś chociaż. Btw. jak Ci się coś sypnie hardware-owo to uderzaj do mnie. :)
WIZYTÓWKA
Kompy:
AMD Ryzen 9-3900X + GTX980Ti
Intel i5 4570 + HD7970

Karlik

Cytat: PoznanskaPyra w 26 Maj 2012, 11:56Na programowaniu się nie znam. Ale widząc wyniki obliczeń wydawało mi się, że karta graficzna jest tu zdecydowanie lepsza od procka i co to jest ten stos? Dowiem się czegoś chociaż. Btw. jak Ci się coś sypnie hardware-owo to uderzaj do mnie. :)
Nie wchodząc w szczegóły to to karta graficzna nie nadaje się do programów z dużą ilością skoków :P Z tego co zrozumiałem to mariotti chce zaimplementować sprawdzanie drzewa rekurencyjnie do czego się po prostu karta graficzna nie nadaje. :whistle:

migawron

trudno, będzie projekt cpu only



PoznanskaPyra

Wpadłem na pomysł odznak, żeby zrobić szachownice i białe pola zastąpić kolorem odznaczenia.
WIZYTÓWKA
Kompy:
AMD Ryzen 9-3900X + GTX980Ti
Intel i5 4570 + HD7970

Radegast

Może też być dobrze rozpoznawalna ikonka w stylu konika szachowego w kolorze odpowiadającym poziomowi odznaki.

lukaszja

Mogę powiedzieć tylko jedno - jako osoba kiedyś związana "zawodowo" z szachami - będę zdecydowanie kibicował!

PoznanskaPyra

O albo im więcej punktów tym starsza figura.

[smg id=9596 type=full align=center caption="odznaka"]

WIZYTÓWKA
Kompy:
AMD Ryzen 9-3900X + GTX980Ti
Intel i5 4570 + HD7970

Tomasz R. Gwiazda

chyba wybiegacie z tymi badgami za daleko w przyszlosc....
serwera projektu jeszcze nie ma, aplikacji tez...

Troll81

Najpierw aplikacja :D potem serwer projektu a badge to pieśń przyszłości. Choć mi się podoba pomysł ze starszeństwem figur....

PoznanskaPyra

Te odznaki powyżej są na licencji CC więc można je wykorzystać.
WIZYTÓWKA
Kompy:
AMD Ryzen 9-3900X + GTX980Ti
Intel i5 4570 + HD7970

mariotti

Dziękuję za wszystkie odpowiedzi.

Moja decyzja jest taka: najpierw napiszę jakiś baaardzo prosty
projekt zgodny z BOINC, żeby nie rzucać się od razu na głęboką
wodę. Chcę zobaczyć jak się programuje aplikacje zgodne z
BOINC i jak to wszystko działa. Jeśli się uda z prostym projektem,
to potem sztuczna inteligencja w zastosowaniu do szachów.

Macie może jakieś propozycje bardzo prostej aplikacji? Mnie tak
na zawołanie przychodzi np. metoda brut-force do sprawdzania
czy liczba 64 bitowa jest liczbą pierwszą.

Moja pierwsza prośba o pomoc jest nasŧępująca: jak się zabrać za pisanie
aplikacji zgodnej z BOINC? Co powinienem przeczytać najpierw?
Dacie linki do materiałów? Na obliczeniach rozproszonych powiedzmy że
się znam, ale jak to jest zorganizowane w BOINC to kompletnie nie wiem.


Pozdrawiam

krzyszp

Generalnie, chyba najwięcej informacji znajdziesz tutaj.
Budowanie aplikacji jako takiej pod BOINC raczej się nie różni zbytnio od innych systemów przetwarzania rozproszonego, w skrócie:
1. W kodzie aplikacji podajesz informacje o jej starcie (w C o ile pamiętam jest to BOINC_START();).
2. Ciało aplikacji, zapisanie wyników.
3. Informacja o wyjściu/zakończeniu.
Później możesz rozbudowywać np. poprzez dodanie informacji o postępie, wygaszacza, itd.
Myślę, że dobrym startem by było przejrzenie źródeł jakiegokolwiek projektu, np. Radioactive@Home ma stosunkowo prostą budowę (źródła dostępne na stronie projektu).

Fajne zegarki :)
Należę do drużyny BOINC@Poland
 Moja wizytówka

mariotti

Ok, dziękuję za namiary.
Jakby jeszcze ktoś jeszcze podrzucił jakieś materiały (może po polsku) to
będę wdzięczny. Zacząłem czytać wiki, zobaczymy czy się połapię w
tym wszystkim :) Wkrótce dam znać co się dzieje.
Pozdrawiam

PoznanskaPyra

Czekamy na wieści  ;D  :parrrty:
WIZYTÓWKA
Kompy:
AMD Ryzen 9-3900X + GTX980Ti
Intel i5 4570 + HD7970

Radegast

Czekamy i powodzenia!  :attack:

Troll81

może przy okazii poprowadzisz bloga o tworzeniu projektu? ewentualnie udokumentujesz swe poczynania w formie artykułu?? byłby to świetny materiał dla idacych w twe ślady.....

mariotti

Cytat: Troll81 w 28 Maj 2012, 06:16
może przy okazii poprowadzisz bloga o tworzeniu projektu? ewentualnie udokumentujesz swe poczynania w formie artykułu?? byłby to świetny materiał dla idacych w twe ślady.....
Obecnie sam takiego bloga potrzebuję.
Pozdrawiam

Troll81

no więc własnie proponuje jego utworzenie :D

mariotti

Cytat: Troll81 w 28 Maj 2012, 08:30
no więc własnie proponuje jego utworzenie :D
Jeśli się nie znam na tym to jak mam go utworzyć?
Pozdrawiam

Cyfron

no właśnie tak, że jak coś wyczytasz i osiągniesz sukces, to wstaw to na bloga.
Nie musi być to blog dla ludzi - rób go dla siebie - nie ma być ładny, tylko zawierać potrzebne Tobie informacje - łatwiej będzie wrócić później do bloga a nie szukać na nowo w necie informacji o tym, jak to zrobiłeś. (sam myślę założyć sobie takiego bloga z różnymi informacjami potrzebnymi do mojej pracy, bo nie chce mi się szukać po kilka razy tego samego :) )

Troll81

dokładnie jak pisze Cyfron. Rób sobie dokumentację to łatwiej będzie ci po miesiącu np wrócić do tego dlaczego np cos ci nie dizała....

mariotti

Cytat: Troll81 w 28 Maj 2012, 09:44
dokładnie jak pisze Cyfron. Rób sobie dokumentację to łatwiej będzie ci po miesiącu np wrócić do tego dlaczego np cos ci nie dizała....
Nie wydaje mi się aby to był dobry pomysł. Jeśli czegoś się nauczę to z
materiałów które gdzieś znajdę. Więc co będę mógł zrobić? Powielić
to co znalazłem i ewentualnie dodać swoje pomyłki? ;-) Nie zrobię tego
lepiej niż autorzy. Jeśli nie ma dobrych materiałów i naprawdę trzeba je
wykonać to ja po prostu tego się nie nauczę bo nie będę miał skąd.
Natomiast mogę was zapewnić że jeśli wpadnie mi w ręce jakiś dobry
papier to się podzielę.
Pozdrawiam

Troll81

chodzi raczej o kwestie dokumentowania. Możesz to spisywać choćby i w rodzie. Załózmy że spotakasz dwa sposoby roziazania jakiegos problemu. Wykorzystasz jeden z nich i niby problem zniknął. Ale za miesiąc okaże się że rozwiązanie nie do końca działa a ty juz nie pamietasz które wybrałeśi jak sie je robiło. A tak wrócisz do bloga i sobie sprawdzisz. ponadto dokumentacja bywa przestarzała i np cos tam sie zmieniło. Np w nowszej wersji PHP juz czegoś tam nie trzeba robić... tego jest mnóstwo. Zresztą jako programista powinienes wiedziec jak wazne jest dokumentowanie tego co robisz. Nie zakładaj też że zawsze tylko ty będziesz cos robił przy projekcie. Czasem ktos cie będzie musiał zastąpic i dobrze by było by wiedział co i jak albo wiedział gdzie tego szukac.....

mariotti

Cytat: Troll81 w 28 Maj 2012, 10:57
chodzi raczej o kwestie dokumentowania. Możesz to spisywać choćby i w rodzie. Załózmy że spotakasz dwa sposoby roziazania jakiegos problemu. Wykorzystasz jeden z nich i niby problem zniknął. Ale za miesiąc okaże się że rozwiązanie nie do końca działa a ty juz nie pamietasz które wybrałeśi jak sie je robiło. A tak wrócisz do bloga i sobie sprawdzisz. ponadto dokumentacja bywa przestarzała i np cos tam sie zmieniło. Np w nowszej wersji PHP juz czegoś tam nie trzeba robić... tego jest mnóstwo. Zresztą jako programista powinienes wiedziec jak wazne jest dokumentowanie tego co robisz. Nie zakładaj też że zawsze tylko ty będziesz cos robił przy projekcie. Czasem ktos cie będzie musiał zastąpic i dobrze by było by wiedział co i jak albo wiedział gdzie tego szukac.....
To jest oczywiste że swoje prace warto dokumentować. Myślałem
że chodzi o "moje ślady" w sieci obliczeń rozproszonych...
Jeśli chodzi o udokumentowanie moich prac z zakresu uczenia maszynowego w
szachach to oczywiście gromadzę doświadczenia, wiedzę, wyniki eksperymentów,
przemyślenia i co tam jeszcze. Przy pomyślnych wiatrach za kilka lat powstanie z
tego monografia.
Pozdrawiam



Troll81

mi chodzi o taką dokumentację procesu stawiania projektu BIONC.

Czyli o tym jak będziesz pisał palkację. stawiał serwer, robił strone, potem zamknięe testy. potem otwarte testy. A potem wiek niemowlęcy projektu itp....

mariotti

Będę próbował wpinać się w BIONC dokładnie ze wskazówkami jakie znajdę w
dokumentacji. Nic nowego/odmiennego nie wymyślę w tej dziedzinie.

Troll81

i tak warto zapisac :D