写入 Google Cloud ML 中的文件

Writing to a file in Google Cloud ML

在我的 Tensorflow Python 脚本中,我想写一些对于 stackdriver 日志来说过于冗长的调试信息,所以我想只写到我自己的文件中。如果我这样做:

f.write('my_file.txt', 'w+')

我没有收到任何错误,这意味着我有一些写权限。但是,我不知道如何找到这个文件。它在 JOB_DIR 中吗?作业完成后如何写入可访问的文件?

文件被写入 VM 的本地存储,即 运行 您的代码。如果您想在作业完成后访问该文件,则需要将其复制到脚本末尾的 GCS 存储桶中。您可以使用 python google 云存储客户端 api:

from google.cloud import storage
client = storage.Client()
bucket = client.bucket(BUCKETNAME)

blob = bucket.blob(BLOBNAME)
blob.upload_from_file('my_file.txt')

如果您使用的是 TensorFlow,请知道某些 TF io 实用程序可以处理 gs:// blob 位置,就好像它们是文件路径一样。例如,tf.keras Tensorboard 回调允许您将 Tensorboard 日志文件直接流式传输到 GCS 存储桶,而不必将它们存储在本地然后手动上传:

from tensorflow.keras.callbacks import TensorBoard

# Define a callback that will store tensorboard log files in a GCS bucket
callbacks = [TensorBoard(log_dir='gs://BUCKET/BLOB')]
model.fit(..., callbacks=callbacks)

使用 TensorFlow API 将文件直接写入 Google 云存储:

with tf.gfile.GFile("gs://bucket/some/dir/somefile", "w") as f:
        f.write(result_str)