gpt4 book ai didi

tensorflow - 如何让 Google Cloud AI Platform 在训练期间检测 `tf.summary.scalar` 调用?

转载 作者:行者123 更新时间:2023-12-03 14:53:42 24 4
gpt4 key购买 nike

(注:我也问过这个问题 here)

问题

我一直在尝试让 Google Cloud 的 AI 平台显示在 AI 平台上训练的 Keras 模型的准确性。我使用 hptuning_config.yaml 配置了超参数调整它有效。但是我无法让 AI 平台接听 tf.summary.scalar训练期间调用。

文档

我一直在关注以下文档页面:

1. Overview of hyperparameter tuning

2. Using hyperparameter tuning

根据 [1] :

How AI Platform Training gets your metric You may notice that there are no instructions in this documentation for passing your hyperparameter metric to the AI Platform Training training service. That's because the service monitors TensorFlow summary events generated by your training application and retrieves the metric."



并根据 [2] ,生成这样一个 Tensorflow 摘要事件的一种方法是创建一个回调类,如下所示:
class MyMetricCallback(tf.keras.callbacks.Callback):

def on_epoch_end(self, epoch, logs=None):
tf.summary.scalar('metric1', logs['RootMeanSquaredError'], epoch)

我的代码

所以在我的代码中我包括:
# hptuning_config.yaml

trainingInput:
hyperparameters:
goal: MAXIMIZE
maxTrials: 4
maxParallelTrials: 2
hyperparameterMetricTag: val_accuracy
params:
- parameterName: learning_rate
type: DOUBLE
minValue: 0.001
maxValue: 0.01
scaleType: UNIT_LOG_SCALE
# model.py

class MetricCallback(tf.keras.callbacks.Callback):

def on_epoch_end(self, epoch, logs):
tf.summary.scalar('val_accuracy', logs['val_accuracy'], epoch)

我什至试过
# model.py

class MetricCallback(tf.keras.callbacks.Callback):
def __init__(self, logdir):
self.writer = tf.summary.create_file_writer(logdir)

def on_epoch_end(self, epoch, logs):
with writer.as_default():
tf.summary.scalar('val_accuracy', logs['val_accuracy'], epoch)

它成功地将“val_accuracy”指标保存到 Google 存储中(我也可以通过 TensorBoard 看到这一点)。但是,尽管在 中提出了声明,但 AI 平台并没有发现这一点。 [1] .

部分解决方案:

使用 Cloud ML Hypertune包,我创建了以下类:
# model.py

class MetricCallback(tf.keras.callbacks.Callback):
def __init__(self):
self.hpt = hypertune.HyperTune()

def on_epoch_end(self, epoch, logs):
self.hpt.report_hyperparameter_tuning_metric(
hyperparameter_metric_tag='val_accuracy',
metric_value=logs['val_accuracy'],
global_step=epoch
)

哪个有效!但我不知道怎么做,因为它似乎所做的只是写入 AI 平台上的文件 worker /tmp/hypertune/* . Google Cloud 文档中没有任何内容可以解释 AI 平台如何获取此信息...

为了获得 tf.summary.scalar 我错过了什么吗?要显示的事件?

最佳答案

我遇到了同样的问题,我无法让 AI 平台接收 tf.summary.scalar。在过去的 2 个月里,我尝试与 GCP 支持和 AI 平台工程团队一起调试它。即使我们使用几乎相同的代码,他们也没有设法重现该问题。我们甚至进行了一次编码 session ,但仍然有不同的结果。
GCP 人工智能平台工程团队的建议:“不要使用 tf.summary.scalar”主要原因是通过使用另一种方法:

  • 它适用于每个人
  • 您可以控制并查看会发生什么(不是黑匣子)

  • 他们将更新文档以反射(reflect)这一新建议。
    设置:
  • Tensoflow 2.2.0
  • TensorBoard 2.2.2
  • keras 模型是在 tf.distribute.MirroredStrategy() 范围内创建的
  • TensorBoard 的 keras 回调

  • 通过以下设置,观察到“问题”:
  • 当 TensorBoard 与 update_freq='epoch' 和 1 个epoch 一起使用时

  • 它似乎适用于其他设置。无论如何,我将遵循 GCP 的建议并使用自定义解决方案来避免问题
    enter image description here

    关于tensorflow - 如何让 Google Cloud AI Platform 在训练期间检测 `tf.summary.scalar` 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61480051/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com