Класс RemoteMonitor
Класс RemoteMonitor представляет собой колбэк,
который во время обучения модели отправляет
информацию о текущей эпохе на удаленный сервер.
Данные передаются методом POST в формате JSON.
Первым параметром передается корневой адрес сервера,
вторым - путь для отправки запросов,
третьим - тип поля, в котором передается полезная нагрузка.
Класс удобен, когда нужно следить за обучением модели
удаленно, например, из другого приложения или панели мониторинга.
Синтаксис
tf.keras.callbacks.RemoteMonitor(root='http://localhost:9000', path='/publish/epoch/end/', field='data', headers=None, send_as_json=False)
Параметры
Класс принимает следующие параметры:
-
root- корневой адрес удаленного сервера, по умолчанию'http://localhost:9000'; -
path- путь на сервере, куда отправляются данные, по умолчанию'/publish/epoch/end/'; -
field- имя поля, в котором передаются данные, по умолчанию'data'; -
headers- словарь дополнительных HTTP-заголовков, по умолчаниюNone; -
send_as_json- еслиTrue, данные отправляются в формате JSON, иначе как form-data.
Пример
Давайте создадим колбэк RemoteMonitor
и подключим его к обучению простой модели:
import tensorflow as tf
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=(1,))
])
model.compile(optimizer='sgd', loss='mse')
x = tf.constant([[1.0], [2.0], [3.0], [4.0], [5.0]])
y = tf.constant([[2.0], [4.0], [6.0], [8.0], [10.0]])
monitor = tf.keras.callbacks.RemoteMonitor(
root='http://localhost:9000',
path='/publish/epoch/end/',
field='data'
)
print(monitor)
Результат выполнения кода:
<keras.src.callbacks.remote_monitor.RemoteMonitor object at 0x...>
Пример
Давайте обучим модель с колбэком RemoteMonitor,
отправляя данные на локальный сервер:
import tensorflow as tf
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=(1,))
])
model.compile(optimizer='sgd', loss='mse')
x = tf.constant([[1.0], [2.0], [3.0], [4.0], [5.0]])
y = tf.constant([[2.0], [4.0], [6.0], [8.0], [10.0]])
monitor = tf.keras.callbacks.RemoteMonitor(
root='http://localhost:9000',
path='/publish/epoch/end/',
field='data',
send_as_json=True
)
try:
history = model.fit(x, y, epochs=2, verbose=0, callbacks=[monitor])
print('training finished')
except Exception as e:
print('connection error')
Результат выполнения кода:
"connection error"
Пример
Давайте создадим колбэк с дополнительными HTTP-заголовками для авторизации:
import tensorflow as tf
monitor = tf.keras.callbacks.RemoteMonitor(
root='http://example.com',
path='/api/train/epoch/',
field='payload',
headers={'Authorization': 'Bearer token'},
send_as_json=True
)
print(monitor.root)
print(monitor.path)
print(monitor.field)
Результат выполнения кода:
http://example.com
/api/train/epoch/
payload
Смотрите также
-
класс
TensorBoard,
который записывает данные обучения для визуализации -
класс
CSVLogger,
который сохраняет данные обучения в CSV-файл -
класс
LambdaCallback,
который выполняет пользовательские функции во время обучения -
класс
History,
который хранит историю обучения модели