Mam skrypty R do odczytu dużych ilości danych csv z różnych plików, a następnie wykonuję zadania uczenia maszynowego, takie jak svm w celu klasyfikacji.
Czy są jakieś biblioteki do korzystania z wielu rdzeni na serwerze dla R.
lub
Jaki jest najbardziej odpowiedni sposób na osiągnięcie tego?
r
parallel-computing
multicore
mohany
źródło
źródło
Odpowiedzi:
Jeśli jest na Linuksie, najprostszym jest wielordzeniowy . Poza tym proponuję rzucić okiem na MPI (szczególnie z pakietem śniegowym ).
Ogólniej, spójrz na:
Na koniec zalecamy użycie pakietu foreach w celu wyodrębnienia równoległego zaplecza w kodzie. To sprawi, że będzie bardziej przydatne na dłuższą metę.
źródło
Jeśli używasz GNU / Linuksa, poprzednie odpowiedzi Shane'a i Dirka są świetne.
Jeśli potrzebujesz rozwiązania dla systemu Windows, w tym poście jest jedno:
Równoległe przetwarzanie wielordzeniowe z R (w systemie Windows)
Chociaż pakiet nie jest jeszcze w CRAN. można go pobrać z tego linku.
źródło
Shane ma rację. Zarówno multicore, jak i Rmpi są zwycięzcami.
Nieco szerszy zakres tematu znajduje się w widoku zadań CRAN dotyczącym obliczeń o wysokiej wydajności . Odnosi się to również do dość niedawnego artykułu ankiety na temat przetwarzania równoległego z R z JSS.
Na koniec kilka praktycznych przykładów i wskazówek znajduje się we wstępie do HPC z samouczkiem R, który daję raz na jakiś czas - zobacz moją prezentację na najnowszą kopię z ostatniego tygodnia na useR.
źródło
Zauważyłem, że w poprzednich odpowiedziach brakuje pewnych ogólnych rozważań HPC.
Po pierwsze, żaden z tych pakietów nie pozwoli na równoległe uruchomienie jednego SVM. Więc to, co możesz przyspieszyć, to optymalizacja parametrów lub walidacja krzyżowa, wciąż musisz do tego napisać własne funkcje. Lub oczywiście możesz uruchomić zadanie dla różnych zestawów danych równolegle, jeśli jest to przypadek.
Drugi problem to pamięć; jeśli chcesz rozłożyć kalkulację na kilka fizycznych komputerów, nie ma bezpłatnego lunchu i musisz skopiować dane - tutaj musisz rozważyć, czy rozsądnie jest wstępnie rozdzielić kopię danych między komputerami, aby zaoszczędzić trochę komunikacji. Z drugiej strony, jeśli chcesz używać wielu rdzeni na jednym komputerze, wielordzeniowy jest szczególnie odpowiedni, ponieważ umożliwia wszystkim procesom potomnym dostęp do pamięci procesu nadrzędnego, dzięki czemu możesz zaoszczędzić trochę czasu i dużo miejsca w pamięci.
źródło
sprint
dla R z funkcjąpsvm
, ale są one trochę w tyle za nadążaniem za zmianami R 3.0 i nowymi wytycznymi dotyczącymi przesyłania CRAN, więc bieżące pobieranie nie jest dostępne w CRAN ani w pełni kompatybilne z R 3.0. Twój przebieg może się różnić.Odpowiedzi Shane'a i Dirka są natychmiastowe.
Niemniej jednak możesz rzucić okiem na komercyjną wersję R, zwaną Revolution R, która jest zbudowana do obsługi dużych zbiorów danych i działa na wielu rdzeniach. To oprogramowanie jest bezpłatne dla nauczycieli akademickich (co może być twoim przypadkiem, nie wiem)
źródło