[PYTHON] Die wahre Ursache für einen Jubatus-Client, der einen Fehler ausspuckt

Hallo zusammen

Ich wollte eine Weile maschinell lernen, also habe ich den erschwinglichen Jubatus ausprobiert. Als ich das Tutorial ausprobierte, war es relativ einfach, aber ich war süchtig danach, also werde ich die Ursache und die Gegenmaßnahmen teilen.

jubatus

http://jubat.us/ja/index.html

Es scheint ein verteilter Verarbeitungsrahmen für maschinelles Online-Lernen zu sein. Vor kurzem habe ich mich gefragt, ob die Anzahl der in Japan hergestellten Werkzeuge für maschinelles Lernen zugenommen hat, aber dies scheint schon seit geraumer Zeit zu existieren. Es gibt viele japanische Dokumente, also werde ich versuchen, sie zu verwenden! Deshalb habe ich es versucht.

Installation

Die Installation folgte gerade dem Schnellstart. Außerdem habe ich mich wie immer entschlossen, in die virtuelle Umgebung einzutauchen.

Als virtuelle Umgebung wird zunächst die vertrauenswürdige 64-Box von Ubuntu offiziell bereitgestellt, daher werde ich diese verwenden.

vagrant init ubuntu/trusty64; vagrant up --provider virtualbox

Nachdem Sie eine virtuelle Umgebung haben, können Sie sofort hineingehen und die Installationsarbeiten ausführen. http://jubat.us/ja/quickstart.html

Verwenden wir Python als Client von Jubatus. Weil es in den meisten Linux-Versionen enthalten ist

$ sudo vim /etc/apt/sources.list.d/jubatus.listv #Repository hinzufügen
$ cat /etc/apt/sources.list.d/jubatus.list
deb http://download.jubat.us/apt binary/

$ sudo apt-get update
$ sudo apt-get install jubatus #Jubatus ist installiert

$ sudo apt-get install python-pip
$ sudo pip install jubatus #Python Jubatus Client ist installiert

$ source /opt/jubatus/profile #Weil die Einstellungsdatei jedes Mal gelesen wird~/.bash_Es ist eine gute Idee, sich in Ihr Profil zu vertiefen

Führen Sie das Tutorial aus

Nachdem die Installation ohne Probleme abgeschlossen ist, fahren wir mit dem Lernprogramm fort. Frühes Ubuntu scheint keinen Schwachkopf zu haben, also auf dem Host

git clone https://github.com/jubatus/jubatus-tutorial-python.git
cd jubatus-tutorial-python

Das abgelegte Repository ist das Arbeitsverzeichnis, wie es ist. Fügen Sie daher die Testdaten hier ein.

$ wget http://qwone.com/~jason/20Newsgroups//20news-bydate.tar.gz
$ tar xvzf 20news-bydate.tar.gz

Es ist ziemlich schwer, also haben Sie etwas Geduld, bis der Download abgeschlossen ist. Starten Sie jubatus nach dem Herunterladen sofort.

jubaclassifier --configpath config.json

Es scheint, dass der Jubatus-Server gestartet wurde. Zum Schluss starten wir den Client und werfen die Testdaten in jubatus.

Ein Fehler. .. ..

python tutorial.py

Nun startet der Client. .. ..

msgpackrpc.error.RPCError: Request timed out

Es gibt einen Timeout-Fehler aus und stoppt Ich frage mich, ob dies nur eine einfache Auszeit ist. .. ..

starting load from /tmp/10.0.2.15_9199_classifier_tutorial.jubatus
Killed

Der Server ist mit einem solchen Fehler ausgefallen. Ein einfaches Timeout sollte den Server nicht stoppen.

Also habe ich versucht, es etwas genauer zu überprüfen, aber es scheint, dass der Server zuerst und dann der Client gestoppt wurde. Erstens scheint es, dass es von der Betriebssystemseite aus gemacht wird, weil es plötzlich ohne Vorankündigung getötet wurde. In diesem Fall können Sie sich auch das Syslog ansehen.

$ tail /var/log/syslog
Feb  8 12:29:49 vagrant-ubuntu-trusty-64 kernel: [56821.828429] [ 9500]  1000  9497   128839    93956     234        0             0 jubaclassifier
Feb  8 12:29:49 vagrant-ubuntu-trusty-64 kernel: [56821.828431] [ 9501]  1000  9501    12649     2238      29        0             0 python
Feb  8 12:29:49 vagrant-ubuntu-trusty-64 kernel: [56821.828432] Out of memory: Kill process 9500 (jubaclassifier) score 750 or sacrifice child
Feb  8 12:29:49 vagrant-ubuntu-trusty-64 kernel: [56821.829547] Killed process 9500 (jubaclassifier) total-vm:515356kB, anon-rss:375824kB, file-rss:0kB

Out of memory !! Es ist das, was mit MySQL durcheinander gebracht wurde Ich wusste nicht, warum die Prozessdatei nicht gefunden werden konnte, aber als ich mir das Protokoll ansah, konnte ich die Engine aufgrund von Speichermangel nicht starten. .. ..

Dann scheint es, dass Sie den Speicher erhöhen sollten Wenn es AWS ist, werde ich einen Tausch machen, aber diesmal ist es ein Landstreicher, damit ich ihn leicht erhöhen kann

   config.vm.provider "virtualbox" do |vb|
  #   # Display the VirtualBox GUI when booting the machine
  #   vb.gui = true
  #
  #   # Customize the amount of memory on the VM:
     vb.memory = "2048"
   end

Wenn Sie über 2 GB Speicher verfügen, funktioniert dies erwartungsgemäß.

Und das Ergebnis ist

OK,sci.med, sci.med, 0.584435760975
NG,sci.electronics, soc.religion.christian, 0.37116548419
OK,talk.politics.guns, talk.politics.guns, 1.49401080608

▽
OK,rec.sport.hockey, rec.sport.hockey, 1.0699224472
===================
OK: 5398
NG: 2134

Es hat gut funktioniert.

Zusammenfassung

Wenn Sie mit zu wenig Speicher töten möchten, können Sie zu wenig Speicher schreiben. .. .. Nun, ich frage mich, ob es in Ordnung ist, es in Syslog zu veröffentlichen. .. ..

Wenn es vorerst auf den Server anstatt auf den Client fällt, habe ich Ihnen vorerst gesagt, dass Sie das Syslog überprüfen sollen.

Referenz

Jubatus: Distributed Processing Framework für maschinelles Online-Lernen Jubatus 'Zeitüberschreitungsfehler ist kein Zeitüberschreitungsfehler, sondern eine Anpassung (Jemand hatte vor einem Tag das gleiche Problem ...)

Recommended Posts

Die wahre Ursache für einen Jubatus-Client, der einen Fehler ausspuckt
Die Geschichte eines Fehlers in PyOCR
Was ist die Ursache für den folgenden Fehler?
Berücksichtigung der Stärken und Schwächen von Python
Verursachen Sie einen Pufferüberlauf und führen Sie eine beliebige Funktion aus.
Eine Geschichte über das Ausprobieren von pyenv, virtualenv und virtualenvwrapper
Ich habe mir die Versionen von Blender und Python angesehen
VisibleDeprecationWarning: Die Verwendung einer Nicht-Ganzzahl anstelle einer Ganzzahl führt in Zukunft zu einem Fehler