0

Ich verwende Open-Source-Tensorflow-Implementierungen von Forschungsarbeiten, zum Beispiel DCGAN-tensorflow. Die meisten Bibliotheken, die ich verwende, sind so konfiguriert, dass sie das Modell lokal trainieren, aber ich möchte Google Cloud ML verwenden, um das Modell zu trainieren, da ich keine GPU auf meinem Laptop habe. Ich finde es schwierig, den Code zu ändern, um GCS-Buckets zu unterstützen. Momentan speichere ich meine Logs und Modelle in/tmp und führe dann einen 'gsutil' Befehl aus, um das Verzeichnis am Ende des Trainings nach gs: // my-bucket zu kopieren (example here). Wenn ich versuche, das Modell direkt in gs: // my-bucket zu speichern, wird es nie angezeigt.Google Cloud ML und GCS Bucket Ausgaben

Bei Trainingsdaten kopiert eine der Tensorflow-Proben Daten aus GCS nach/tmp zum Training (example here), aber dies funktioniert nur, wenn der Datensatz klein ist. Ich möchte celebA verwenden, und es ist zu groß, um jeden Lauf nach/tmp zu kopieren. Gibt es Dokumentationen oder Anleitungen zur Aktualisierung von Code, der lokal für die Verwendung von Google Cloud ML programmiert wird?

Die Implementierungen laufen verschiedene Versionen von Tensorflow, hauptsächlich .11 und .12

Antwort

6

Es gibt derzeit keine definitiven Führer. Die grundlegende Idee wäre, alle Vorkommen von nativen Dateioperationen mit Mitteln in file_io Modul, insbesondere Python zu ersetzen:

Diese Funktionen funktionieren lokal und auf GCS (sowie jedes registrierte Dateisystem). Es ist jedoch zu beachten, dass es kleine Unterschiede in file_io und den Standard-Dateioperationen gibt (z. B. wird eine andere Gruppe von "Modi" unterstützt).

Glücklicherweise funktioniert Checkpoint und summarisches Schreiben out of the box, nur sicher sein, einen GCS-Pfad zu tf.train.Saver.save und tf.summary.FileWriter zu übergeben.

In der Probe, die Sie gesendet haben, sieht das möglicherweise schmerzhaft aus. Stellen Sie sich vor, dass Affen die Python-Funktionen patchen, um sie den TensorFlow-Entsprechungen zuzuordnen, wenn das Programm es nur einmal zu tun braucht (demonstriert here).

Als eine Randnotiz, zeigen alle Proben auf this Seite lesen Dateien von GCS.

+0

Danke für diese Info. Beim Einlesen einer Bilddatei tritt ein Problem auf. Anstatt scipy.misc.imread ("gs: // BUCKET/PATH") zu verwenden, was nicht mit einem GCS-URI funktioniert, öffne ich zuerst die Datei mit file_io: scipy.misc.imread (file_io.FileIO (Pfad, mode = 'r')). Dies scheint ein -Objekt anstelle eines Arrays zurückzugeben. Ich bin mir nicht sicher, wie dieses Problem bei Cloud ML behoben werden kann, da die Online-Diskussionen darauf hindeuten, dass es sich um ein Problem bei der PIL-Installation handelt. – psoulos

+0

Dies ist ein hässlicher Hack, aber Sie können subprocess in Ihrem setup.py verwenden, um Dinge wie "apt-get" und "pip install" zu tun. Lassen Sie mich das untersuchen. Es könnte sinnvoll sein, eine separate Frage zu diesem Thema zu stellen. – rhaertel80

+0

Notiert dies in meiner Antwort auf Ihre andere Frage hier (http://stackoverflow.com/questions/42821093/google-cloud-ml-scipy-misc-imread-returning-pil-jpegimageplugin-jpegimagefile), aber das Problem scheint zu sein ein Fehler in der Version von file_io in TF 0.12.1, und in TF 1.0 behoben –

Verwandte Themen