Aktualności:

Nasz kanał IRC - Porozmawiaj z nami.

Menu główne

własny projekt

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

krzyszp

Cytat: lukaszja w 31 Maj 2012, 16:14
Cytat: krzyszp w 31 Maj 2012, 16:07
Tak, ale przecież my rozmawiamy o programowaniu aplikacji do trenowania systemu, a nie samej gry, prawda?
Prawda. Tylko jakie przyjmiemy założenia oraz co chcemy osiągnąć (a także przy pomocy jakich narzędzi informatycznych), to już inna bajka ;)
To również nie jest problemem, przecież ograniczenia czasowe dla aplikacji łatwo zaimplementować i właściwie z punktu widzenia projektu nie ma to znaczenia...

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

mariotti

Cytat: Cyfron w 31 Maj 2012, 14:47
a możesz mi wytłumaczyć (bo po prostu nie rozumiem) mariotti - dlaczego czas grania jest taki ważny?

Mówiąc w uproszczeniu jest tak jak już pisałem. Program szachowy ma
wiele cech. Jedna część z tych cech jest wrażliwa na głębokość przeszukiwania,
a druga nie.

Załóżmy że mamy program który ma jakąś cechę X. Gramy tym
programem miliony partii, zmieniamy cechę X i sprawdzamy czy program
po zmianie gra lepiej czy gorzej. W końcu wybieramy taką wartość cechy po jakiej
program grał najlepiej. Następnie zmieniamy warunki testowania. Np. wcześniej
graliśmy partie na 5 minut, a po zmianie gramy na godzinę. I znowu zmieniamy
cechę X i wybieram taką z jaką program grał najlepiej. Jeśli to jest cecha
depth-sensitive to dla różnych czasów różne konfiguracje będą najlepsze.

Tak wiec jeśli zoptymalizujemy program do gry na 5minut to niekoniecznie
będzie optymalny na 60 minut.

Cytat: Cyfron w 31 Maj 2012, 14:47
Bo ja tak sobie myślę, że ten algorytm, który ma potem grać, to trzeba nauczyć pewnych postępowań, myślenia o kolejnych ruchach - czy uczenie nie polega na przeprowadzeniu po prostu iluś partii (nie ważne jak szybko, tylko ważne ile)? i na podstawie symulacji on sobie będzie wiedział jaka opcja jest najbardziej korzystna jako kolejny ruch.
Co nazywasz 'symulacjami'?

Cytat: Cyfron w 31 Maj 2012, 14:47
Ja mam wrażenie, że w szachach nie liczy się jak długo się gra (bo jeden ruch można wymyślać przez tydzień) tylko "ogranie" i wiedzenie co należy kiedy zrobić. więc jak dla mnie liczy się jednak prędkość i ilość wątków, a tutaj mówisz, że prędkość i ilość nie ma znaczenia, bo cały czas jest to samo, bo liczy się czas przeliczania - dlaczego?
W zupełnie innym kontekście pisałem że prędkość i ilość nie ma znaczenia. Byś musiał
przeczytać od kilku postów wcześniej.

Pozdrawiam

mariotti

Cytat: goofyx w 31 Maj 2012, 14:51
dzisiaj mam chyba ciężki dzień.
porównanie do kierowcy i samochodu to kapuje, ale jaką ty aplikację chciałbyś zrobić?
tylko taką co działa na procesorach 4 wątkowych przez np.: 10 minut?
dla każdej ilości wątków inną aplikację chcesz zrobić <- naprawdę się pogubiłem.
Jak dla mnie to albo program jest jednowątkowy albo wielowątkowy <- tworzenie iluś tam aplikacji w zależności od ilości wątków jest chyba nie zbyt trafiona.
wytłumacz mi to jak 5-latkowi <- ja naprawdę chcę zrozumieć sens tego co chcesz mi przekazać.
Jedyne co ja chcę, to być autorem, albo współautorem bardzo mocnego
programu do gry w szachy :) Jeśli zrozumiałeś porównanie do kierowcy to
zrozumiałeś wszystko. Za 10 lat będziemy mieli szybsze komputery, ale
to oznacza że warunki w których będzie grał program się zmienią. Ta
zmiana pociąga za sobą konieczność użycia większej mocy obliczeniowej w
trakcie uczenia. A więc relatywnie szybsze komputery niewiele pomagają.
Pozdrawiam


mariotti

Cytat: Martin Fox w 31 Maj 2012, 15:30
Cytat: mariotti w 31 Maj 2012, 14:12
Załóżmy że dzisiejszy standard to procesory 4-rdzeniowe i możliwość
przetwarzania 2mld instrukcji na sekundę. Więc dziś się pisze programy
szachowe które dobrze grają w czasie 30 minut na 4 rdzeniach, czyli
takie które wykorzystują 2mld * 30 * 60 * 4 instrukcji. Ok?

Za 10 lat będziemy mieli 40 rdzeni i szybkość 20mld instrukcji. Więc
będzie się pisało programy które zagrają optymalnie pod warunkiem
wykorzystania 20mld * 30 * 60 * 40 instrukcji. Ok?
A nie można napisać programu wykorzystującego jeden rdzeń robiący (przykładowo) 2mld * 30 * 60 instrukcji, i puścić cztery takie na czterech rdzeniach?
Można, nikt nie pisał że nie można.
Pozdrawiam

mariotti

Cytat: lukaszja w 31 Maj 2012, 15:51
3. Ilość wątków i czasu przeznaczonego na 1 WU dla mnie przekłada się na poziom "mocy" - nie jestem pewien, czy 8 aplikacji na 1 rdzeniu dadzą to samo, to 1 aplikacja wykorzystująca 8 rdzeni - to pytanie do znawców tematu.
Zależy o jakiej mocy rozmawiamy. O mocy obliczeniowej? O mocy programu - czyli o
to jak dobrze gra? Czy o mocy algorytmu uczenia  - czyli o to jak mocy wyprodukuje
program?

Jeśli chodzi o siłę gry to tam jest najlepsze znane mi opracowanie:
http://www.cis.uab.edu/hyatt/search.html

Jeśli chodzi o moc algorytmu uczącego to odmian algorytmów tego typu
jest bardzo dużo. Czasami z dodaniem nowego procesora/komputera ich
wydajność narasta liniowo, a czasami znacznie wolniej. Dużo zależy
od ilości komputerów, mylę że do około 300 - 1000 komputerów
wydajność w algorytmach rojowych narastałaby liniowo.

Cytat: lukaszja w 31 Maj 2012, 15:51
4. Sama "moc" przekłada się na założenia końcowe - szukamy szachowego Gralla, czy "tylko" podwyższamy poprzeczkę znajomości tej gry.
Mnie się marzy taki algorytm który co roku wygeneruje trochę mocniejszy
program do grania w szachy, ale to naprawdę bardzo trudne zadanie.

Pozdrawiam

Rysiu

Proszę nie pisać miliarda postów, a starać się wszystko mieścić w jednym (nie chce mi się teraz tego łączyć).

Tomasz R. Gwiazda

mysle ze sie wiele wyjasni jak bedzie testowa aplikacja
i jak troche pomozemy podpinajac sie do projektu :)
wtedy wyjdzie jaka moc obliczeniowa (ile hostow) przez jaki czas pomoze osiagnac cel.



mariotti

#87
Cytat: krzyszp w 31 Maj 2012, 15:36
Ja to rozumiem inaczej.
Sensem aplikacji ma być nauka systemu prawidłowego planowania gry a nie napisanie programu szachowego. Przy takim założeniu ma powstać aplikacja BOINC i wtedy najlepiej napisać aplikację trenującą system - dobrze rozumiem?
Dobrze zrozumiałeś, ale jest jedno ale. Otóż napisanie systemu który będzie uczył grać w szachy coś od zera jest
skazane na kompletną porażkę. Jeśli systemowi uczącemu powierzymy zadanie zbudowania programu szachowego
to nie będzie rezultatów bez względu jakiej mocy użyjemy. Może przesadzam... jakbyśmy mieli
10^(10^8) komputerów to powinno się udać ;-)

Więc systemowi trzeba jakoś pomóc. Jeśli wiadomo że system nie będzie w stanie czegoś wyuczyć to trzeba
zrobić to za niego. Więc zwyczajnie trzeba napisać program szachowy i to w dodatku mocny program w oparciu o
najnowszą wiedzę jaka jest dostępna na świecie - powiedzmy że taki program już mam, ale wymaga paru
udoskonaleń. Potem małe kawałeczki z tego programu się wyrzuca i system jako zadanie otrzymuje zbudowanie
tylko tych kawałeczków w sposób lepszy niż było w oryginale. O jakich kawałeczkach mowa? Powiedzmy że dzielą
się na cztery grupy:
1) parametry funkcji oceniającej
2) parametry przeszukiwania drzewa gry
3) książka otwarć
4) baza danych, albo baza wiedzy o grze w końcówkach - jeśli AI to raczej baza wiedzy :)


Cytat: krzyszp w 31 Maj 2012, 15:36
Jeśli tak, mamy dwa założenia wzajemnie się wykluczające:
1. Aplikacja jednowątkowa - dostaje określone parametry, wykonuje funkcje trenujące, zwraca wyniki - program na serwerze dokonuje oceny wyników działania.
2. Aplikacja wielowątkowa - służy głównie do np. testowania algorytmów gry (z wyszczególnieniem wielowątkowości), może też być użyta do trenowania, ale w tym wypadku w zasadzie jest marnowaniem zasobów (IMHO).
Wszystko zależy od celu tworzenia aplikacji, jeśli ma służyć tylko jako "trener" właściwego systemu, to w zasadzie nie ma znaczenia, której opcji użyjesz, bo wtedy w całym systemie poszczególne taski (wysłane aplikacje) są właśnie takimi "wątkami" większego systemu.
Hmmm
Jest to znacznie bardziej skomplikowane. Po pierwsze sam program do gry w szachy
powinien być wielowątkowy. Jeśli nie będzie wielowątkowy, to katastrofy nie będzie, ale
dobrze by było jakby był. Po drugie rożne z tych małych kawałeczków które wymieniłem
powyżej są w różnym stopniu podatne na różne metody uczenia. Czasami mogłoby być
właśnie tak jak napisałeś, np. scentralizowany algorytm wnioskowania, a w sieci
BOINC turnieje i testy.


Cytat: krzyszp w 31 Maj 2012, 15:36
Natomiast faktem jest, że w zasadzie nie masz innej możliwości (tak myślę) uzyskania takiej ilości mocy obliczeniowej do trenowania algorytmów szachowych w inny sposób...
No nie mam :)

Pozdrawiam

mariotti

Cytat: goofyx w 31 Maj 2012, 15:59
4. ale co da ci duuża moc na jednym komputerze skoro chcesz zrobić aplikację boinc i pozyskać jak najwięcej userów <- tego nie rozumiem. no chyba że robisz aplikację dla siebie i wiesz że będzie ona chodzić na i7 z 8 wątkami
Nie pisałem że chcę dużą moc na jednym komputerze, ale że z upływem czasu
moc pojedynczego komputera rośnie. Więc rośnie moc komputerów na których
program docelowo będzie grał. Więc zapotrzebowanie na moc w trakcie uczenia
też rośnie (przykład z kierowcą wyścigowym). Więc z upływem czasu, pomimo
narastającej mocy obliczeniowej pojedynczego komputera, proces uczenia
nie będzie dużo szybciej przebiegał. :)

Pozdrawiam

mariotti

Cytat: Rysiu w 31 Maj 2012, 20:25
Proszę nie pisać miliarda postów, a starać się wszystko mieścić w jednym (nie chce mi się teraz tego łączyć).
A po co łączyć posty? Jest pytanie i odpowiedź, czy może być bardziej czytelnie?
Pozdrawiam

mariotti

Cytat: Tomasz R. Gwiazda w 31 Maj 2012, 20:25
mysle ze sie wiele wyjasni jak bedzie testowa aplikacja
i jak troche pomozemy podpinajac sie do projektu :)
wtedy wyjdzie jaka moc obliczeniowa (ile hostow) przez jaki czas pomoze osiagnac cel.
Chyba założę że będzie maksymalnie 100 komputerów i napiszę taki algorytm uczenia
który niemal na pewno będzie robił postępy na takiej mocy obliczeniowej.

Niestety nadal jestem kompletnie zielony jeśli chodzi o działanie samej sieci BOINC.
Gdy przebrnę etap rozgryzania BOINC to myślę że w około 3-6 tygodni mógłbym
jeden z moich projektów przenieść z wersji jedno komputerowej na rozproszoną.

Optymistycznie za 2-3 miesiące coś powinno ruszyć.

Pozdrawiam

Rysiu

Cytat: mariotti w 31 Maj 2012, 21:08
Cytat: Rysiu w 31 Maj 2012, 20:25
Proszę nie pisać miliarda postów, a starać się wszystko mieścić w jednym (nie chce mi się teraz tego łączyć).
A po co łączyć posty? Jest pytanie i odpowiedź, czy może być bardziej czytelnie?
Pozdrawiam
Tak. W jednym poście można zmieścić wszystkie odpowiedzi. Nikt na forum nie pisze tyle postów jeden pod drugim.

mariotti

Cytat: Rysiu w 31 Maj 2012, 21:43
Cytat: mariotti w 31 Maj 2012, 21:08
Cytat: Rysiu w 31 Maj 2012, 20:25
Proszę nie pisać miliarda postów, a starać się wszystko mieścić w jednym (nie chce mi się teraz tego łączyć).
A po co łączyć posty? Jest pytanie i odpowiedź, czy może być bardziej czytelnie?
Pozdrawiam
Tak. W jednym poście można zmieścić wszystkie odpowiedzi. Nikt na forum nie pisze tyle postów jeden pod drugim.
To się zrobi bałagan, nie będzie wiadomo która wypowiedź tyczy się którego problemu. Już trudno
się połapać o czym rozmawiamy, a bez podziału na posty to w ogóle będzie mieszanka :)
Pozdrawiam


krzyszp

Można zamieszczać kilka cytatów w jednym poście ;)

Ale wracając do tematu...
Myślę, że właśnie droga wykorzystania BOINC jako "trenera" właściwego systemu ma najwięcej zalet:
1. Możesz utworzyć tysiące wątków i jednocześnie testować setki taktyk.
2. Stosunkowo łatwo regulować ramy czasowe, a także testować jednocześnie różne okresy testów (długość trwania poszczególnej rozgrywki) niezależnie od innych (poprzez preferencje).
3. Dowolna kombinacja powyższych.
4. Można także testować algorytmy dla określonych maszyn (w sensie ilości rdzeni, poprzez aplikacje wielowątkowe, uruchamiane tylko na komputerach o określonej ilości wolnych rdzeni).
5. Oddzielenie funkcji testujących strategie pozwala na oddzielne ładowanie i testowanie wyników (a to również można "zrównoleglić" i wysłać jako osobną aplikację bazującą na uzyskanych poprzednio wynikach).

W sumie jestem baaaardzo ciekawy tego projektu. Ciekawe może być sam... turniej pomiędzy komputerami wolontariuszy!  :fright:

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

mariotti

Cytat: krzyszp w 01 Czerwiec 2012, 01:35
Można zamieszczać kilka cytatów w jednym poście ;)
Proszę nie, gdy jeden post tnę na kilka cytatów to już się boję że pomieszam wszystko :)


Cytat: krzyszp w 01 Czerwiec 2012, 01:35
Ale wracając do tematu...
Myślę, że właśnie droga wykorzystania BOINC jako "trenera" właściwego systemu ma najwięcej zalet:
1. Możesz utworzyć tysiące wątków i jednocześnie testować setki taktyk.
To nie jest takie proste że więcej znaczy po prostu lepiej. W pewnej odmianie algorytmów
rojowych (którą osobiście nazywam metodą magnetyczną) bardzo ciekawe rezultaty miałem
gdy testowałem jednocześnie tylko 10 strategii. Metoda magnetyczna jest odporna na
niedokładne testowanie gdyż uśrednia wyniki z tysięcy turniejów. Z symulacji na
prostszych zadaniach niż szachy wychodziło mi że optymalna ilość w jednym turnieju
to 10 programów i 90 gier - każdy z każdym ze zmianą kolorów.

Z kolei w przypadku algorytmu genetycznego obawiam się że tysiące komputerów to
nadal za mało na szachy. Raczej potrzebne są miliony komputerów i całe dziesiątki lat
obliczeń.

Cytat: krzyszp w 01 Czerwiec 2012, 01:35
2. Stosunkowo łatwo regulować ramy czasowe, a także testować jednocześnie różne okresy testów (długość trwania poszczególnej rozgrywki) niezależnie od innych (poprzez preferencje).
3. Dowolna kombinacja powyższych.
4. Można także testować algorytmy dla określonych maszyn (w sensie ilości rdzeni, poprzez aplikacje wielowątkowe, uruchamiane tylko na komputerach o określonej ilości wolnych rdzeni).
5. Oddzielenie funkcji testujących strategie pozwala na oddzielne ładowanie i testowanie wyników (a to również można "zrównoleglić" i wysłać jako osobną aplikację bazującą na uzyskanych poprzednio wynikach).
Temat rzeka :) Zastanawiałem się nad problemami uczenia i programowania
szachów przez 10 lat, de facto z przerwami. Mógłbym pisać i pisać... większość
moich pomysłów jest niedopracowana a jeszcze większa większość nie sprawdzona - nigdy
ich nawet nie próbowałem zaimplementować, więc to mogą być tylko bzdury :)

Chcąc opisać tylko to co w miarę wartościowe i tak zmuszony jestem do pisania w
skrócie. Przede wszystkim są różne metody uczenia. Każda metoda wymaga czegoś
innego. Pierwszy z rękawa podział metod uczenia jest np. taki: z nauczycielem, bez
nauczyciela i ze wzmocnieniem. Przy czym nie ma większego problemu aby użyć
metody kombinowanej która łączy w sobie cechy powyższych.

Weźmy np. uczenie ze wzmocnieniem. Wtedy model o jakim mówisz pasuje jak ulał.
Mamy rozproszone środowisko testowe i mamy jakiś scentralizowany algorytm uczenia.
Program jest modyfikowany, trafia do środowiska, tam jest testowany, jeśli test
wypadł pomyślnie to następuje jakieś wzmocnienie cech, a jeśli negatywnie to jakiś
zanik. [Tak na marginesie: łatwo napisać takie zdanie, ale realizacja takich algorytmów
zwłaszcza do tak trudnego zadania jak szachy jest bardzo skomplikowana. Poza tym
testowanie, wzmocnienie/zanik cech i modyfikacje można zaimplementować na
bardzo wiele sposobów, a poszczególne sposoby znacznie różnią się efektywnością.
Bez problemu można zrobić tak że program nigdy się nie wyuczy, choć implementacja
algorytmu będzie poprawna.]

Naprzeciw metod ze wzmocnieniem stoją metody z nauczycielem. Problemem w metodach z
nauczycielem jest zebranie reprezentatywnego zbioru danych. Załóżmy jednak że
jakoś udało się ten zbiór pozyskać i możemy uczyć z nauczycielem. Jak takie uczenie
może wyglądać? Cóż, trzeba wziąć jakiś aproksymator albo klasyfikator i go po prostu uczyć. Np.
możemy wziąć lasy drzew regresyjnych, albo bazy reguł, albo sztuczne sieci neuronowe, albo...
Dane wysyłamy do komputerów wolontariuszy i na każdym komputerze następuje proces
uczenia z innym zarodkiem liczb losowych. Potem czekamy miesiąc czasu i najlepsze rozwiązanie
kopiujemy do programu szachowego. Z tym też się wiąże masa problemów, np. trzeba zupełnie inaczej
podejść do problemu gdy dane nie zmieszczą się w pamięci jednego komputera. Pozostaje także problem
zebrania reprezentatywnych danych.


Naprawdę to nie jest tak hop-siup :) Samo napisanie w miarę dobrego programu
do gry w szachy może zająć np. od jednego roku do nawet 10 lat. A tutaj jeszcze
trzeba zaimplementować algorytmy uczenia i dobrać je tak, aby miały chociaż
minimalne szanse na powodzenie. A gdzie uczenie książki debiutowej... a
gdzie uczenie gry w końcówce... :)


Cytat: krzyszp w 01 Czerwiec 2012, 01:35
W sumie jestem baaaardzo ciekawy tego projektu. Ciekawe może być sam... turniej pomiędzy komputerami wolontariuszy!  :fright:
Ja tym bardziej :) W ogóle można zrobić duuuużo, jednak poprawna implementacja tych
algorytmów jest bardzo trudna. To nie jest tak że pogadamy sobie na forum, krzykniemy
hura, zrobimy, uruchomimy i będą super wyniki. To jest katorżnicza robota. Niektóre
techniki w programach szachowych powstały przez pomyłkę. Wszelka logika mówiła
że dany kod jest błędy i niekorzystnie wpłynie na siłę gry a jednak w testach program
grał lepiej.

Takich pomysłów jest dużo, ale trzeba spojrzeć realnie z punktu widzenia ich realizacji :)
Myślałem np. nad czymś takim aby wolontariusz mógł regulować ręcznie parametry.
Potem następuje ogromny turniej i mamy tą marchewkę: autor parametrów dostaje
jakąś nagrodę, albo chociaż jego nazwisko się pojawia na stronie. Jednak będzie problem z
czymś takim w praktyce. W przypadku algorytmu genetycznego trzeba zrobić setki
milionów gier aby wyłonić zwycięzcę. A w przypadku metody magnetycznej parametry się...
nie liczą! Następuje tylko uśrednianie wyników i tak naprawdę końcowy program to
ten który nie zagrał nawet ani jedne gry - a wiadomo że on jest najlepszy - paradoks? :)

Muszę napisać jakieś prostsze zadanie na rozgrzewkę aby nabrać obycia w BOINC.

Pozdrawiam

Troll81

nikt nie mówi że zrobienie takiego projektu to hop siup. Najpierw sam musisz zdecydowac która droga pójdziesz ty i twój pies :D

mariotti

Cytat: Troll81 w 01 Czerwiec 2012, 06:43
nikt nie mówi że zrobienie takiego projektu to hop siup. Najpierw sam musisz zdecydowac która droga pójdziesz ty i twój pies :D
Jedyna droga która wydaje mi się słuszna to droga kolejnych przybliżeń do celu.
Najpierw coś prościutkiego. Jeśli się uda to coś trudniejsze itd.

Na razie nie mogę przebrnąć przez instalacje i konfiguracje środowiska, bibliotek itd.
Pozdrawiam

Troll81

no i najwazniejsza decyzja podjeta :D. jak masz pytania to mecz na forum :D

mariotti

Cytat: Troll81 w 01 Czerwiec 2012, 07:39
no i najwazniejsza decyzja podjeta :D. jak masz pytania to mecz na forum :D
No mam pytanie. Gdzie jest tutorial i przykład jak zrobić najprostszą aplikację?
Pozdrawiam

Troll81

źródła przykładowej aplikacji uppercase powinny byc dostępne wraz z serwerem. Jest to przy okazji aplikacja testujące czy poszczególne składowe serwera działają prawidłowo.

goofyx

@mariotti (nawiązując do odpowiedzi nr.94)
piszesz różnych możliwościach do wyboru jeśli chodzi o algorytmy, o mocy jaka jest potrzebna i dziesiątkach lat obliczeń...
osobiście uważam, że boinc jest idealną platformą do czegoś takiego.
Jeśli masz "problem" z wyborem konkretnego algorytmu czy sposobu w jaki ma być rozwijana baza wiedzy programu to może utworzysz projekt z kilkoma aplikacjami używającymi każda innego algorytmu <- dzięki czemu sam będziesz wstanie określić po jakimś czasie, który algorytm jest najlepszy do nauki. Wiem, że to trudne <- ale może zamiast zastanawiać się co wybrać, można przetestować więcej niż jeden algorytm.
Po za tym to może być ciekawe doświadczenie także dla ciebie <- pisałeś, że z takimi algorytmami masz kontakt od 10 lat.
Projekt testujący różne rozwiązania + dający później możliwość zagrania z taką coraz "mądrzejszą" SI byłby baardzo atrakcyjny. No wiesz jednego dnia wygrywasz z SI, a drugiego po aktualizacji wiedzy wtapiasz ;) to zmusza cie do poprawy umiejętności :)

com napisał napisałem, mam nadzieję że na temat ;)

mariotti

Cytat: goofyx w 01 Czerwiec 2012, 08:21
@mariotti (nawiązując do odpowiedzi nr.94)
piszesz różnych możliwościach do wyboru jeśli chodzi o algorytmy, o mocy jaka jest potrzebna i dziesiątkach lat obliczeń...
osobiście uważam, że boinc jest idealną platformą do czegoś takiego.
Zobaczymy. Jeśli podołam z tym API BOINC i jeśli będzie 20 wolontariuszy non-stop to super.

Cytat: goofyx w 01 Czerwiec 2012, 08:21
Jeśli masz "problem" z wyborem konkretnego algorytmu czy sposobu w jaki ma być rozwijana baza wiedzy programu to może utworzysz projekt z kilkoma aplikacjami używającymi każda innego algorytmu <- dzięki czemu sam będziesz wstanie określić po jakimś czasie, który algorytm jest najlepszy do nauki. Wiem, że to trudne <- ale może zamiast zastanawiać się co wybrać, można przetestować więcej niż jeden algorytm.
Myślę i myślę i czaszka mi już dymi... Muszę najpierw zrozumieć API BOINC, bo robię
plany a nie wiem czy dam radę napisać cokolwiek :)


Cytat: goofyx w 01 Czerwiec 2012, 08:21
Po za tym to może być ciekawe doświadczenie także dla ciebie <- pisałeś, że z takimi algorytmami masz kontakt od 10 lat.
Projekt testujący różne rozwiązania + dający później możliwość zagrania z taką coraz "mądrzejszą" SI byłby baardzo atrakcyjny.
No wiesz jednego dnia wygrywasz z SI, a drugiego po aktualizacji wiedzy wtapiasz ;) to zmusza cie do poprawy umiejętności :)
com napisał napisałem, mam nadzieję że na temat ;)
Komputery grają już za mocno w szachy żeby z nimi grać. Z moim programem nie wygrałem
jeszcze ani razu. Mam na swoim kompie obliczeniowym 60 programów napisanych przez
innych autorów. Programy te są bardzo różne zarówno pod względem siły jak i stylu gry.
W trakcie uczenia co jakiś czas mój program gra z tymi programami minimum 200 gier, no
widzę czy robi postępy.

W przypadku uczenia w BOINC będzie tak samo (o ile zrobię), np. co 3 doby uczenia jeden
turniej kontrolny i wyniki gdzieś na stronie www.

Co jakiś czas pojawiają się także wyniki na stronach z turniejami programów szachowych, np.
tam jest taka: http://wbec-ridderkerk.nl/html/BayesianElo_ed18.htm
Będzie widać czy program robi postępy czy nie.
Pozdrawiam




mariotti

Cytat: Troll81 w 01 Czerwiec 2012, 08:19
źródła przykładowej aplikacji uppercase powinny byc dostępne wraz z serwerem. Jest to przy okazji aplikacja testujące czy poszczególne składowe serwera działają prawidłowo.
Właśnie znalazłem to:
http://boinc.berkeley.edu/trac/wiki/BasicApi
Nie wydaje się straszne, oby tak dalej.
Pozdrawiam

goofyx

Cytat: mariotti w 01 Czerwiec 2012, 08:44
Cytat: goofyx w 01 Czerwiec 2012, 08:21
@mariotti (nawiązując do odpowiedzi nr.94)
piszesz różnych możliwościach do wyboru jeśli chodzi o algorytmy, o mocy jaka jest potrzebna i dziesiątkach lat obliczeń...
osobiście uważam, że boinc jest idealną platformą do czegoś takiego.
Zobaczymy. Jeśli podołam z tym API BOINC i jeśli będzie 20 wolontariuszy non-stop to super.
na mnie możesz liczyć.
za 2-3 tygodnie skończę zdobywanie odznak w WCG i będę mógł przepiąć swoje hosty (jakoś 20 kompów) na inny projekt :)

mariotti

Cytat: goofyx w 01 Czerwiec 2012, 09:05
na mnie możesz liczyć.
za 2-3 tygodnie skończę zdobywanie odznak w WCG i będę mógł przepiąć swoje hosty (jakoś 20 kompów) na inny projekt :)
Super fajnie, ale na razie to próbuję policzyć coś w ramach rosetta i... chyba nawet tego nie potrafię :)
Pozdrawiam

krzyszp

Jak coś, to z 10 -15 rdzeni będzie do dyspozycji :)
Myślę, że nie doceniasz popularności BOINC - ciekawy problem (a ten jest ciekawy) może łatwo przyciągnąć dziesiątki tysięcy ludzi (a przynajmniej komputerów) na stałe...

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

Tomasz R. Gwiazda

wystarczy odpowiednio dobrze ustawic system punktow za przeliczenie zadan. i chetnych bedzie bardzo duzo.
Kwestia techniczna , miec serwer ktory bedzie w stanie obsluzyc taki ruch.
I tu kolejna kwestia, raczej lepiej zeby zadania byly odpowiednio dlugie (4-6h) to zminiejszyloby ruch moze


Troll81

albo nawet zadania o czasie 200h :D jak pokazuje przykład primegrid :D da się

goofyx

Cytat: Troll81 w 01 Czerwiec 2012, 12:01
albo nawet zadania o czasie 200h :D jak pokazuje przykład primegrid :D da się
mnie zadania po 200h nie kręcą <- choć ClimatePrediction lub podobny liczył się chyba 1WU przez 30 dni :D
ja proponuje WU o czasach 1-3h

migawron

Cytat: krzyszp w 01 Czerwiec 2012, 11:36
Jak coś, to z 10 -15 rdzeni będzie do dyspozycji :)
Myślę, że nie doceniasz popularności BOINC - ciekawy problem (a ten jest ciekawy) może łatwo przyciągnąć dziesiątki tysięcy ludzi (a przynajmniej komputerów) na stałe...

ciekawy nieciekawy, każdy oceni we własnym zakresie, mnie zaciekawiło już od samego początku. Inna kwestia jest taka, że projektów matematycznych, białkowych, astronomicznych jest po kilka (naście) a szachowy w takim kształcie będzie jeden niepowtarzalny. Myślę że większym problemem będzie obsłużenie ruchu na serwerze i obróbka wyników/bieżące generowanie próbek niż brak chętnych.



goofyx

Cytat: migawron w 01 Czerwiec 2012, 13:52
Cytat: krzyszp w 01 Czerwiec 2012, 11:36
Jak coś, to z 10 -15 rdzeni będzie do dyspozycji :)
Myślę, że nie doceniasz popularności BOINC - ciekawy problem (a ten jest ciekawy) może łatwo przyciągnąć dziesiątki tysięcy ludzi (a przynajmniej komputerów) na stałe...

ciekawy nieciekawy, każdy oceni we własnym zakresie, mnie zaciekawiło już od samego początku. Inna kwestia jest taka, że projektów matematycznych, białkowych, astronomicznych jest po kilka (naście) a szachowy w takim kształcie będzie jeden niepowtarzalny. Myślę że większym problemem będzie obsłużenie ruchu na serwerze i obróbka wyników/bieżące generowanie próbek niż brak chętnych.
jeśli projekt ruszy i będzie popularny to i na odpowiedni sprzęt znajdzie się kasa.

Rysiu

Cytat: goofyx w 01 Czerwiec 2012, 13:23
Cytat: Troll81 w 01 Czerwiec 2012, 12:01
albo nawet zadania o czasie 200h :D jak pokazuje przykład primegrid :D da się
mnie zadania po 200h nie kręcą <- choć ClimatePrediction lub podobny liczył się chyba 1WU przez 30 dni :D
ja proponuje WU o czasach 1-3h
Te ClimatePrediction (przynajmniej za starych czasów na starszych komputerach) mogły liczyć się po kilka miesięcy (może nawet do niecałego roku).

goofyx

Cytat: Rysiu w 01 Czerwiec 2012, 14:10
Cytat: goofyx w 01 Czerwiec 2012, 13:23
Cytat: Troll81 w 01 Czerwiec 2012, 12:01
albo nawet zadania o czasie 200h :D jak pokazuje przykład primegrid :D da się
mnie zadania po 200h nie kręcą <- choć ClimatePrediction lub podobny liczył się chyba 1WU przez 30 dni :D
ja proponuje WU o czasach 1-3h
Te ClimatePrediction (przynajmniej za starych czasów na starszych komputerach) mogły liczyć się po kilka miesięcy (może nawet do niecałego roku).
mój rekord to pół roku ;)
ale potem straciłem cierpliwość i przeszedłem na WCG :D

mariotti

Cytat
Jak coś, to z 10 -15 rdzeni będzie do dyspozycji :)
Myślę, że nie doceniasz popularności BOINC - ciekawy problem (a ten jest ciekawy) może łatwo przyciągnąć dziesiątki tysięcy ludzi (a przynajmniej komputerów) na stałe...
No jeśli tak to super fajnie. Taką aplikację rozproszoną bez pośrednictwa BOINC bym zrobił może w tydzień.
A tu minął tydzień i jedyne co osiągnąłem to pad systemu na obliczeniach rosetta.

Cytat
wystarczy odpowiednio dobrze ustawic system punktow za przeliczenie zadan. i chetnych bedzie bardzo duzo.
Na punktach na razie kompletnie się nie znam.

Cytat
Kwestia techniczna , miec serwer ktory bedzie w stanie obsluzyc taki ruch.
Czy komunikacja jest też za pośrednictwem API BOINC czy piszemy sobie własny serwer?

Cytat
I tu kolejna kwestia, raczej lepiej zeby zadania byly odpowiednio dlugie (4-6h) to zminiejszyloby ruch moze
Niestety pierwszy projekt z AI będzie miał jeden task na około 1-2 minuty. Transfery są małe, ale częste.
Nie wiem czy BOINC robi jakiś narzut na transfer.

Cytat
albo nawet zadania o czasie 200h :D jak pokazuje przykład primegrid :D da się
200h na jednym kompie jest niemożliwe. Uczenie to proces iteracyjny. Chodzi o
to aby iteracji było dużo, tysiące albo miliony. Dla metody magnetycznej idealnie
jest 100-1000 komputerów i na każdym 1 minuta obliczeń.

Cytat
Myślę że większym problemem będzie obsłużenie ruchu na serwerze i obróbka wyników/bieżące generowanie próbek niż brak chętnych.
Nie wiem jaki narzut na obsługę jest ze strony oprogramowania BOINC. W metodzie magnetycznej
klient będzie musiał odebrać dwie listy parametrów. Lista będzie mała, rzędu 50-2000 liczb w pliku
tekstowym. Program zmieniany będzie rzadko, po zmianie też będzie musiał go odebrać. Potem klient
liczy 1-2 minuty i wysyła wynik jako jeden wiersz tekstowy. I znowu pobór dwóch list i
tak w kółko.  Obróbka danych jest łatwa. Trzeba wyłonić zwycięzce, zrobić krok iteracyjny,
wylosować trochę liczb i następna iteracja gotowa.

Cytat
jeśli projekt ruszy i będzie popularny to i na odpowiedni sprzęt znajdzie się kasa.
Ciekawy jestem co zrobić aby stał się popularny. Popularność dobrze nabijają
takie rzeczy jak algorytmy genetyczne. Jednak obawiam się że na AG
trzeba milionów komputerów. Nie wiem czy to będzie dobrze brzmiało: algorytmy
rojowe do szachów?

Pozdrawiam

krzyszp

W kwestii popularności, to chyba najlepiej systematycznie publikować wyniki, a pomysł z programem i turniejami też przysporzy wiele liczydłowych.
Kilkaset rdzeni do dyspozycji, to otrzymasz spokojnie z naszej drużyny, a w skali świata...

Generalnie dobry kontakt ze społecznością skupioną wokół BOINC jest chyba najlepszą opcją, najbardziej przyciąga chętnych gdyż ludzie zajmujący się tą technologią zwykle są ciekawi świata nauki  :)

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

mariotti

Cytat: krzyszp w 01 Czerwiec 2012, 17:10
W kwestii popularności, to chyba najlepiej systematycznie publikować wyniki, a pomysł z programem i turniejami też przysporzy wiele liczydłowych.
Kilkaset rdzeni do dyspozycji, to otrzymasz spokojnie z naszej drużyny, a w skali świata...

Generalnie dobry kontakt ze społecznością skupioną wokół BOINC jest chyba najlepszą opcją, najbardziej przyciąga chętnych gdyż ludzie zajmujący się tą technologią zwykle są ciekawi świata nauki  :)
Dobre kontakty to moja słaba strona ;-)  W pracy muszę mieć osobistego menadżera :)

A wracając do meritum...
Jak pobrać i skompilować ten przykładowy program? Motam się strasznie.
Mam kubuntu 64bity.

API niby przeczytałem, niby rozumiem:
http://boinc.berkeley.edu/trac/wiki/BasicApi#TheBOINCapplicationprogramminginterfaceAPI
Ale po pierwsze wydaje mi się podejrzanie mało tego, a
po drugie nadal nie wiem jak założyć projekt, jak to kompilować,
jak instalować, jak testować... To się kompiluje do jakiejś biblioteki?

Pozdrawiam


Troll81

Z tego co pamiętam to program uppercase (czyli przykładowa apka) zamienia małe litery na duże. Jest prosty jak konstrukcja cepa bo ma tylko testować czy projekt wysyła aplikacje czy jest ona prawidłowo uruchamiana i zakańczana na komputerach i czy wyniki sa odsyłane i prawidłowo przyjmowane przez serwer....

mariotti

Cytat: Troll81 w 01 Czerwiec 2012, 18:33
Z tego co pamiętam to program uppercase (czyli przykładowa apka) zamienia małe litery na duże. Jest prosty jak konstrukcja cepa bo ma tylko testować czy projekt wysyła aplikacje czy jest ona prawidłowo uruchamiana i zakańczana na komputerach i czy wyniki sa odsyłane i prawidłowo przyjmowane przez serwer....
Przeglądam poniższe instrukcje:
http://boinc.berkeley.edu/trac/wiki/SourceCode
http://boinc.berkeley.edu/trac/wiki/ExampleApps
http://boinc.berkeley.edu/trac/wiki/CompileApp
i próbuje cokolwiek uruchomić. Na początku wydaje się to zagmatwane, ale
mam nadzieję że przebrnę. Ma ktoś linuxa 64bit żeby pomóc w testowaniu
jakby mi się udało coś wyrzeźbić?
Pozdrawiam


Tomasz R. Gwiazda

mamy na forum tworcow trzech projektow BOINC - Enigma, Merssine, Radioactive
wiec na pewno ktos pomoze :)

Troll81

Jeszcze Goldbach się gdzies zapodział w twej liście :D