[PYTHON] Utilisez Numpy, Scipy, scikit-learn avec Heroku

Lorsque vous écrivez une application qui intègre l'apprentissage automatique en Python, cela dépend souvent de scicit-learn, voire de Numpy ou Scipy.

Celles-ci dépendent de diverses bibliothèques, donc le déploiement sur Heroku n'est pas simple. Si vous pouvez configurer votre propre serveur sur AWS, etc., vous pouvez le configurer là-bas, mais cela coûte de l'argent et je veux le faire avec Heroku! Je pense qu'il y a des cas, alors je vais vous présenter une méthode pour cela.

Docker Container

Le déploiement à l'aide de Docker Container est désormais possible dans Heroku, utilisez donc ceci plutôt que d'éditer le buildpack à la hâte. Est plus pratique. Vous trouverez ci-dessous un échantillon officiel, veuillez donc vous y référer.

heroku-examples/python-miniconda

Désormais, vous n'aurez plus rien à installer avec apt-get ni à vous plaindre que la taille de votre laitier est trop grande!

Conda buildpack Les bibliothèques telles que Numpy et Scipy sont généralement assez difficiles à installer à partir de pip, c'est-à-dire à construire à partir du code source. Il existe un environnement d'exécution appelé Miniconda qui peut éviter cela, c'est-à-dire installer le binaire compilé, mais un pack de construction qui peut être utilisé sur Heroku est fourni. Je suis.

conda-buildpack

Il y a deux façons de configurer un buildpack sur Heroku: le spécifier au moment de la création ou le modifier plus tard.

** Spécifié à la création **

heroku create --buildpack https://github.com/kennethreitz/conda-buildpack.git

** Précisez plus tard **

heroku config:add BUILDPACK_URL=https://github.com/kennethreitz/conda-buildpack.git

Pour l'utiliser, préparez simplement conda-requirements.txt ( requirements.txt dans conda) pour l'installation avec conda. Ceux qui ne sont pas fournis par conda peuvent également être installés en utilisant pip, donc si vous avez besoin d'installer avec pip, vous pouvez toujours écrire dans requirements.txt.

La difficulté est que l'environnement créé par conda entre en conflit avec virtualenv et ne peut pas être utilisé ensemble. Par conséquent, si vous souhaitez déployer dans Heroku, vous devez utiliser conda pour créer l'environnement virtuel. Pour une utilisation simple de la commande conda, reportez-vous à here.

Définissez le pack de construction dans Heroku et préparez le fichier de configuration pour conda. Vous pouvez désormais exécuter des applications avec des bibliothèques d'apprentissage automatique sur Heroku.

J'ai créé un référentiel que j'ai réellement essayé en utilisant conda-buildpack, alors veuillez vous y référer. Puisqu'il a un bouton Heroku, il peut être déployé tel quel.

number_recognizer

Heroku buildpack Ceci est un pack de construction que j'ai créé car je ne connaissais pas l'existence de conda-buildpack et le déploie en fonction de pip comme d'habitude.

Cependant, la compilation de scipy prend tellement de temps qu'elle expire sur Heroku (assurez-vous que vous pouvez construire Numpy). Le seul moyen de surmonter cela est d'utiliser un meilleur Dyno, donc je pense que c'est difficile avec le niveau gratuit.

Heroku buildpack: Python with Numpy, Scipy, scikit-learn

Ce n'est pas seulement compatible avec Numpy et Scipy, il est conçu pour améliorer son environnement de compilation, il devrait donc fonctionner universellement pour les choses qui dépendent de bibliothèques similaires (celles qui). Je pense qu'il est fourni par conda ...). Si pip ne fonctionnait pas et que vous avez abandonné lors du déploiement d'Heroku, cela pourrait également fonctionner pour cela.

Vous pouvez utiliser heroku-buildpack-apt qui peut installer la bibliothèque avec apt-get dans l'environnement Heroku utilisé ici, ou connecter plusieurs packs de construction. heroku-buildpack-multi peut être utile dans d'autres scènes car il peut être utile de s'en souvenir. heroku-buildpack-multi peut être utilisé lors de l'utilisation de bower etc. (processus bower avec le pack de construction pour Node.js, puis exécutez le processus avec le pack de construction pour le corps principal).

Recommended Posts

Utilisez Numpy, Scipy, scikit-learn avec Heroku
Utilisez Numpy, Scipy, scikit-learn sur Amazon Linux
Utilisez OpenBLAS avec numpy, scipy
python + django + scikit-learn + mecab (1) avec heroku
python + django + scikit-learn + mecab (2) avec heroku
Utilisez Numpy
Installez CVXOPT, NumPy, SciPy sur Travis CI
Utilisez BLAS / LAPACK multi-thread avec numpy / scipy
Redis sur Heroku
Si vous souhaitez utiliser NumPy, Pandas, Matplotlib, IPython, SciPy sous Windows
shimehari sur heroku
Installez et exécutez Python3.5 + NumPy + SciPy sur Windows 10
Jusqu'à l'utilisation de PhantomJS avec Python sur Heroku
Utilisez pyvenv sous Windows
Installez numpy sur Marvericks
Comment utiliser numpy
Utilisez Ansible sur Windows
Utilisez QuTiP sur Windows
Utiliser pip sur Windows
Utilisez matplotlib sur Ubuntu 12 et Python
Utilisez music21 sur Google Colaboratory
Utiliser Github Desktop sous Linux
Déployer l'application Masonite sur Heroku 2020
Mon mémo numpy / scipy inversé
Utiliser matplot libwidget sur Mac
Utiliser Python sur Windows (PyCharm)
Utilisez NeoPixel avec la tarte aux framboises
Utiliser Linux sur Windows 10 (WSL2)
Installation à partir des sources de python, numpy, scipy sans privilèges root sur Linux