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.
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.
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
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
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.
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.
Das Folgende ist eine Referenzseite.