Wenn Sie eine Anwendung schreiben, die maschinelles Lernen in Python beinhaltet, hängt dies häufig von Scicit-Learn oder sogar von Numpy oder Scipy ab.
Diese hängen von verschiedenen Bibliotheken ab, sodass die Bereitstellung auf Heroku nicht einfach ist. Wenn Sie Ihren eigenen Server auf AWS usw. einrichten können, können Sie ihn dort einrichten, aber es kostet Geld und ich möchte es mit Heroku tun! Ich denke, dass es Fälle gibt, deshalb werde ich eine Methode dafür einführen.
Docker Container
Die Bereitstellung mit Docker Container ist jetzt in Heroku möglich. Verwenden Sie diese Option, anstatt das Buildpack zu bearbeiten. Ist bequemer. Unten finden Sie ein offizielles Beispiel. Bitte beziehen Sie sich darauf.
heroku-examples/python-miniconda
Jetzt müssen Sie nichts mehr mit apt-get installieren oder sich beschweren, dass Ihre Schlackengröße zu groß ist!
Conda buildpack Bibliotheken wie Numpy und Scipy sind normalerweise recht schwierig von "pip" zu installieren, dh aus dem Quellcode zu erstellen. Es gibt eine Ausführungsumgebung namens Miniconda, die dies vermeiden kann, dh die kompilierte Binärdatei installiert. Es wird jedoch ein Build Pack bereitgestellt, das auf Heroku verwendet werden kann. Ich bin.
Es gibt zwei Möglichkeiten, ein Buildpack auf Heroku einzurichten: Geben Sie es beim Erstellen an oder ändern Sie es später.
** Bei der Erstellung angegeben **
heroku create --buildpack https://github.com/kennethreitz/conda-buildpack.git
** Später angeben **
heroku config:add BUILDPACK_URL=https://github.com/kennethreitz/conda-buildpack.git
Um es zu verwenden, bereiten Sie einfach conda-require.txt
( require.txt
in conda) für die Installation mit conda vor. Diejenigen, die nicht von conda bereitgestellt werden, können auch mit pip installiert werden. Wenn Sie also mit pip installieren müssen, können Sie trotzdem in "require.txt" schreiben.
nomkl
zu conda-require.txt
hinzu, um die mkl-optimierte Version (# 21 nicht zu verwenden. einundzwanzig)).Die Schwierigkeit besteht darin, dass die durch conda erstellte Umgebung mit virtualenv in Konflikt steht und nicht zusammen verwendet werden kann. Wenn Sie in Heroku bereitstellen möchten, müssen Sie daher conda verwenden, um die virtuelle Umgebung zu erstellen. Eine einfache Verwendung des Befehls conda finden Sie unter hier.
Stellen Sie das Build Pack in Heroku ein und bereiten Sie die Einstellungsdatei für conda vor. Jetzt können Sie Anwendungen mit Bibliotheken für maschinelles Lernen auf Heroku ausführen.
Ich habe ein Repository erstellt, das ich tatsächlich mit conda-buildpack ausprobiert habe. Da es einen Heroku-Button hat, kann es so eingesetzt werden, wie es ist.
Heroku buildpack Dies ist ein Build Pack, das ich erstellt habe, weil ich die Existenz von "conda-buildpack" nicht kannte und es wie gewohnt basierend auf pip bereitstellt.
Das Kompilieren von scipy dauert jedoch so lange, dass bei Heroku eine Zeitüberschreitung auftritt (stellen Sie sicher, dass Sie Numpy erstellen können). Die einzige Möglichkeit, dies zu überwinden, ist die Verwendung eines besseren Dyno. Ich denke, es ist schwierig mit der kostenlosen Stufe.
Heroku buildpack: Python with Numpy, Scipy, scikit-learn
Es ist nicht nur mit Numpy und Scipy kompatibel, es wurde auch entwickelt, um die Kompilierungsumgebung zu verbessern. Daher sollte es universell für Dinge funktionieren, die von ähnlichen Bibliotheken abhängen (solche, die). Ich denke, es wird von conda bereitgestellt ...). Wenn pip nicht funktioniert hat und Sie bei der Bereitstellung von Heroku aufgegeben haben, funktioniert es möglicherweise auch dafür.
Sie können heroku-buildpack-apt verwenden, um die Bibliothek mit apt-get in der hier verwendeten Heroku-Umgebung zu installieren, oder mehrere Build-Packs verbinden. heroku-buildpack-multi kann in anderen Szenen nützlich sein, da es nützlich sein kann, sich daran zu erinnern. heroku-buildpack-multi kann verwendet werden, wenn bower usw. verwendet wird (bower mit dem Buildpack für Node.js verarbeiten und dann den Prozess mit dem Buildpack für den Hauptteil ausführen).
Recommended Posts