[PYTHON] Ich habe versucht, TensorFlow in der AWS Lambda-Umgebung auszuführen: Vorbereitung

Dieser Artikel in 3 Zeilen

1. Motivation

Während der Studiensitzung hielt ich eine Präsentation mit dem Titel "Ich habe versucht, Texte mit TensorFlow zu klassifizieren". Ich konnte einige Ergebnisse erzielen und entschied mich, es ernsthaft zu verwenden, und mein Favorit AWS Lambda und [Amazon API Gateway] Ich habe beschlossen, eine API mit (https://aws.amazon.com/jp/api-gateway/) zu erstellen.

2. Ergebnis

Ich habe TensorFlow verwendet, um "1 + 2" zu berechnen und habe das richtige Ergebnis "3" erhalten. Zumindest konnte ich bestätigen, dass TensorFlow in der AWS Lambda-Umgebung "importiert" werden kann.

3. Experimentelle Methode

3.1 Vorbereiten nativer Module in einer Amazon EC2-Umgebung

AWS Lambda läuft unter Amazon Linux. Informationen zur spezifischen Umgebung finden Sie unter "[Lambda-Ausführungsumgebung und verfügbare Bibliotheken - AWS Lambda](http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/current-supported-versions.html" auf der offiziellen Seite. ) ”.

Da wir diesmal in der Region Tokio operieren möchten, können wir auf der obigen Seite sehen, dass wir "ami-383c1956" verwenden sollten. Bitte beachten Sie, dass der AMI für jede Region unterschiedlich ist. Ich habe eine "t2.micro" -Instanz von "ami-383c1956" auf Amazon EC2 erstellt und ein natives Modul vorbereitet.

Die fertige ZIP-Datei wird als [ami-383c1956-python2.7-tensorflow0.7.1-20160320.zip` in gist: 9b11f081186b98fe130e abgelegt. Die Dateigröße beträgt ca. 23 MB und der SHA-1-Hashwert lautet "3157f010853fee1769a1149afbed15383bf2be96".

Das Konstruktionsverfahren ist wie folgt.

#Überprüfen Sie die Umgebung
$ uname -a
Linux ip-xxx-xxx-xxx-xxx 4.1.10-17.31.amzn1.x86_64 #1 SMP Sat Oct 24 01:31:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/system-release
Amazon Linux AMI release 2015.09

#Aktualisieren und installieren Sie Pakete
$ sudo yum -y update
$ sudo yum -y upgrade
$ sudo yum -y groupinstall "Development Tools"
$ sudo yum -y install python27-devel python27-pip gcc

#Bereiten Sie virtualenv vor
$ export ENV_ROOT=~/env
$ virtualenv ${ENV_ROOT}
$ source ${ENV_ROOT}/bin/activate

#Überprüfen Sie die Python-Version und den Pfad
(env)$ python2.7 --version
Python 2.7.10
(env)$ which python2.7
~/env/bin/python2.7
(env)$ which pip2.7
~/env/bin/pip2.7

#Installieren Sie TensorFlow und abhängige Bibliotheken
(env)$ pip2.7 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.7.1-cp27-none-linux_x86_64.whl
Successfully installed numpy-1.10.4 protobuf-3.0.0b2 setuptools-20.3.1 six-1.10.0 tensorflow-0.7.1 wheel-0.29.0

(env)$ deactivate

#Erstellen Sie eine ZIP-Datei
$ export OUT_FILE=~/ami-383c1956-python2.7-tensorflow0.7.1-20160320.zip
$ cd ${ENV_ROOT}/lib/python2.7/site-packages
$ touch google/__init__.py
$ zip -r9v ${OUT_FILE} . --exclude \*.pyc
$ cd ${ENV_ROOT}/lib64/python2.7/site-packages
$ zip -r9v ${OUT_FILE} . --exclude \*.pyc
$ sha1sum ${OUT_FILE}
3157f010853fee1769a1149afbed15383bf2be96  /home/ec2-user/ami-383c1956-python2.7-tensorflow0.7.1-20160320.zip

3.2 Bereiten Sie das AWS Lambda-Bereitstellungspaket vor

Diesmal habe ich den folgenden Code verwendet. Es ist ein sehr einfacher Code, der nur "1 + 2" berechnet.

main.py


import tensorflow as tf

def lambda_handler(event, context):
    a = tf.constant(1)
    b = tf.constant(2)
    with tf.Session() as sess:
        return str(sess.run(a + b))

Ich habe ein Bereitstellungspaket erstellt, indem ich "ami-383c1956-python2.7-tensorflow0.7.1-20160320.zip" kopiert und "main.py" hinzugefügt habe.

$ cd /project/path/tensorflow
$ cp ami-383c1956-python2.7-tensorflow0.7.1-20160320.zip test.zip

$ cd /project/path/tensorflow/lambda
$ vi main.py
$ zip -r9v ../test.zip . --exclude \*.pyc

3.3. Laden Sie das AWS Lambda-Bereitstellungspaket hoch

Diesmal habe ich eine Lambda-Funktion über die Webkonsole erstellt und test.zip hochgeladen. Die Standardspeichergröße beträgt 128 MB. Der Timeout-Wert wurde auf 10 Sekunden verlängert.

3.4 Ausführen von AWS Lambda

Als ich die "Test" -Taste von der Webkonsole aus drückte und die Lambda-Funktion ausführte, konnte ich das korrekte Ergebnis von "3" erhalten. Zumindest ab dem zweiten Mal betrug die Ausführungszeit weniger als 100 ms und die maximale Speichernutzung betrug 33 MB.

4. Referenzen

Das Folgende ist eine Referenzseite.

Recommended Posts

Ich habe versucht, TensorFlow in der AWS Lambda-Umgebung auszuführen: Vorbereitung
Ich habe versucht, TensorFlow auszuführen
Ich habe versucht, GAN in Colaboratory auszuführen
Ich habe versucht, virtualenv in die Cygwin-Umgebung zu integrieren
Ich habe versucht, AWS Lambda mit anderen Diensten zu verbinden
Ich habe versucht, Pymc auszuführen
Ich habe AWS CDK ausprobiert!
Ich habe AWS Iot ausprobiert
Ich habe versucht, mit AWS Lambda einen AMI zu erhalten
AWS Lambda unterstützt jetzt Python, also habe ich es versucht
Ich habe Selen und kopfloses Chrom in AWS Lambda gegeben. (Hinweise unter Win10-Umgebung usw.)
[Python] Scraping in AWS Lambda
Ich habe versucht, Magenta / TensorFlow zu verwenden
Ich habe versucht, AWS Chalice zu verwenden
[AWS] Ich habe versucht, EC2, RDS, Django zu verwenden. Umweltbau ab 1
Ich habe den Super-Resolution-Algorithmus "PULSE" in einer Windows-Umgebung ausprobiert
Ich habe gerade eine virtuelle Umgebung mit der AWS-Lambda-Schicht erstellt
Ich habe versucht, das Offline-Spracherkennungssystem Julius mit Python in der virtuellen Docker-Umgebung auszuführen
Ich habe das TensorFlow-Tutorial als erstes ausprobiert
Berühren Sie Unterstützung für AWS Lambda-Umgebungsvariablen
Schreiben Sie die AWS Lambda-Funktion in Python
Ich habe das 2. TensorFlow-Tutorial ausprobiert
Installieren Sie Tensorflow in einer anaconda + python3.5-Umgebung
Versuchen Sie, AWS Lambda-Umgebungsvariablen anzugeben?
[Python / AWS Lambda-Ebenen] Ich möchte nur Module in AWS Lambda-Ebenen wiederverwenden
Ich habe es mit Grumpy versucht (Python ausführen).
Ich habe Node.js und Python beim Erstellen eines Miniaturbilds mit AWS Lambda verglichen
Ich habe versucht, Prolog mit Python 3.8.2 auszuführen.
Ich habe Line Benachrichtigung in Python versucht
Ich habe versucht, das TensorFlow-Tutorial mit Kommentaren auszuführen (_TensorFlow_2_0_Einführung für Anfänger).
Ich habe versucht, schlechte Tweets regelmäßig mit der AWS Lambda + Twitter API zu löschen
Ich habe versucht, Zabbix Server über einen Ausführungsfehler der AWS Lambda-Funktion zu informieren
[Django] SQLite-Versionsfehler beim Ausführen von python manage.py in einer aws cloud9-Umgebung
Ich habe versucht, NVDashboard zu verwenden (für diejenigen, die GPU in einer Jupyter-Umgebung verwenden)
TensorFlow Tutorial Ich habe MNIST 3rd ausprobiert
Ich habe versucht, PLSA in Python zu implementieren
Ich habe versucht, einen Linebot zu erstellen (Vorbereitung)
Ich habe zum ersten Mal Tensorflow ausprobiert
Ich habe versucht, AutoEncoder mit TensorFlow zu visualisieren
Umgebung, in der native Bibliotheken in AWS Lambda enthalten sind
Ich habe versucht, ○ ✕ mit TensorFlow zu spielen
Ich habe versucht, PLSA in Python 2 zu implementieren
Ich habe versucht, Text mit TensorFlow zu klassifizieren
Ich habe versucht, ADALINE in Python zu implementieren
Ich habe versucht, PPO in Python zu implementieren
Ich habe eine TensorFlow-Umgebung mit Windows 10 erstellt
Startete Node.js in einer virtuellen Umgebung
DQN mit TensorFlow implementiert (ich wollte ...)
Ich habe gerade FizzBuzz mit AWS Lambda gemacht
[AWS] Lassen Sie uns einen Komponententest der Lambda-Funktion in der lokalen Umgebung durchführen
Ich habe das TensorFlow-Tutorial mit Kommentaren ausgeführt (Textklassifizierung von Filmkritiken).
Ich habe versucht, die Kosten zu senken, indem ich EC2 in einer Charge mit AWS Lambda gestartet / gestoppt habe
Ich habe versucht, eine Umgebung zu erstellen, um regelmäßig mit Selenium mit AWS Fargate zu überprüfen
Ich habe versucht, Twitter Scraper mit AWS Lambda zu verwenden, aber es hat nicht funktioniert.
Ich habe versucht, die Detect Labels-API von AWS Rekognition zu verwenden
Unterschiede zwischen queryStringParameters und multiValueQueryStringParameters in AWS Lambda
Python: Ich konnte in Lambda rekursieren
Ich habe versucht, mit Python ein Tippspiel zu spielen