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.
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
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.
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.
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.
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