Bonjour à tous
Je voulais faire du machine learning, alors j'ai essayé le jubatus abordable. Quand j'ai essayé le tutoriel, c'était relativement facile à faire, mais j'ai trouvé que j'en étais accro, donc je vais partager la cause et les contre-mesures.
jubatus
http://jubat.us/ja/index.html
Cela semble être un cadre de traitement distribué pour l'apprentissage automatique en ligne. Récemment, je me demandais si le nombre d'outils d'apprentissage automatique fabriqués au Japon avait augmenté, mais cela semble exister depuis un certain temps. Il existe de nombreux documents japonais, je vais donc essayer de les utiliser! C'est pourquoi je l'ai essayé.
L'installation vient de suivre le démarrage rapide. Aussi, comme d'habitude, j'ai décidé de me plonger dans l'environnement virtuel.
Tout d'abord, en tant qu'environnement virtuel, la boîte trusty64 d'ubuntu est officiellement fournie, je vais donc utiliser celle-ci.
vagrant init ubuntu/trusty64; vagrant up --provider virtualbox
Maintenant que vous disposez d'un environnement virtuel, vous pouvez immédiatement entrer et effectuer le travail d'installation. http://jubat.us/ja/quickstart.html
Utilisons python comme client de jubatus. Parce que c'est dans la plupart des Linux
$ sudo vim /etc/apt/sources.list.d/jubatus.listv #Ajouter un référentiel
$ 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 est installé
$ sudo apt-get install python-pip
$ sudo pip install jubatus #le client python jubatus est installé
$ source /opt/jubatus/profile #Parce que le fichier de paramètres est lu à chaque fois~/.bash_C'est une bonne idée de fouiller dans votre profil
Maintenant que l'installation est terminée sans aucun problème, passons au tutoriel. Au début, Ubuntu ne semble pas avoir de git, donc sur l'hôte
git clone https://github.com/jubatus/jubatus-tutorial-python.git
cd jubatus-tutorial-python
Le référentiel déposé sera le répertoire de travail tel quel, alors insérez les données de test ici.
$ wget http://qwone.com/~jason/20Newsgroups//20news-bydate.tar.gz
$ tar xvzf 20news-bydate.tar.gz
C'est assez lourd, alors soyez patient jusqu'à ce que le téléchargement soit terminé. Après le téléchargement, démarrez immédiatement jubatus.
jubaclassifier --configpath config.json
Il semble que le serveur jubatus ait démarré. Enfin, démarrons le client et jetons les données de test dans jubatus.
python tutorial.py
Maintenant, le client démarre. .. ..
msgpackrpc.error.RPCError: Request timed out
Il crache une erreur de temporisation et s'arrête Je me demande s'il ne s'agit que d'un simple délai d'attente. .. ..
starting load from /tmp/10.0.2.15_9199_classifier_tutorial.jubatus
Killed
Le serveur est arrêté avec une erreur comme celle-ci. Un simple timeout ne devrait pas arrêter le serveur.
Donc, j'ai essayé de le vérifier un peu plus, mais il semble que le serveur s'est arrêté en premier, puis le client s'est arrêté. En premier lieu, il semble que cela se fasse du côté du système d'exploitation car il a été soudainement tué sans préavis. Dans ce cas, vous pouvez également consulter le syslog.
$ 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 !! C'est celui qui a été foiré avec MySQL Je ne savais pas pourquoi le fichier de processus ne pouvait pas être trouvé, mais quand j'ai regardé le journal, je n'ai pas pu démarrer le moteur en raison d'un manque de mémoire. .. ..
Ensuite, il semble que vous devriez augmenter la mémoire Si c'est AWS, je vais faire un swap, mais cette fois c'est un vagabond donc je peux facilement l'augmenter
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
Comme prévu, si vous avez 2 Go de mémoire, cela fonctionnera.
Et le résultat est
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
Cela a bien fonctionné.
Si vous voulez tuer sans mémoire, vous pouvez écrire sans mémoire. .. .. Eh bien, je me demande s'il est correct de le publier dans syslog. .. ..
Pour le moment, si le serveur est en panne au lieu du client, vous devriez vérifier le syslog.
Jubatus: Framework de traitement distribué pour l'apprentissage automatique en ligne L'erreur de temporisation de Jubatus n'est pas une erreur de temporisation mais un ajustement (Quelqu'un a eu le même problème il y a un jour ...)
Recommended Posts