Google hat kürzlich den Clould ML Ссылка angekündigt und es ist sehr nützlich. Eine Einschränkung ist jedoch, dass die Eingabe / Ausgabe eines Tensorflow-Programms gs: // unterstützen sollte.
Wenn wir alle Tensorflow-APIS zum Lesen / Schreiben von Dateien verwenden, sollte es OK sein, da diese APIs gs://
unterstützen.
Wenn wir jedoch native Datei-IO-APIs wie open
verwenden, funktioniert das nicht, weil sie gs://
Zum Beispiel:
%Vor%Dieser Code funktioniert in Google Cloud ML nicht.
Es ist jedoch sehr mühsam, alle nativen Datei-IO-APIs in Tensorflow-APIs oder Google Storage Python-APIs zu ändern. Gibt es einen einfachen Weg, dies zu tun? Alle Wrapper zur Unterstützung von Google-Speichersystemen, gs://
über der nativen Datei IO?
Wie hier vorgeschlagen Eingelegte Scipy Sparse Matrix als Eingabedaten? Vielleicht können wir file_io.read_file_to_string('gs://...')
verwenden, aber dies erfordert eine signifikante Code-Änderung.
Eine Lösung besteht darin, beim Start des Programms alle Daten auf den lokalen Datenträger zu kopieren. Sie können dies mit gsutil innerhalb des Python-Skripts tun, das ausgeführt wird, etwa wie folgt:
%Vor% Und wenn Sie Ausgaben haben, können Sie sie auf lokale Festplatte und gsutil rsync
sie schreiben. (Aber, seien Sie vorsichtig, um Neustarts richtig zu behandeln, weil Sie möglicherweise auf eine andere Maschine gesetzt werden).
Die andere Lösung ist Affe patch open
(Anmerkung: ungetestet):
Seien Sie sicher, dass Sie das tun, bevor irgendein Modul versucht, von GCS zu lesen.
Mach es so:
%Vor%Oder Sie können die Beizdatei wie folgt lesen:
%Vor%apache_beam hat die gcsio Modul, mit dem ein Standard-Python-Dateiobjekt zum Lesen / Schreiben von GCS zurückgegeben werden kann Objekte. Sie können dieses Objekt mit jeder Methode verwenden, die mit Python-Dateiobjekten arbeitet. Zum Beispiel
%Vor%Tags und Links tensorflow google-cloud-ml google-storage-api