Наблюдаемость TensorFlow Keras

Материал из Документация Ключ-АСТРОМ
Версия от 16:21, 4 февраля 2026; IKuznetsov (обсуждение | вклад) (Новая страница: «'''TensorFlow''' и его удобный последовательный интерфейс '''Keras''' представляют собой передовую...»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)

TensorFlow и его удобный последовательный интерфейс Keras представляют собой передовую технологию для обучения и запуска моделей глубокого обучения.

TensorFlow представляет собой универсальную платформу машинного обучения, которая позволяет специалистам по обработке данных создавать, обучать и запускать всевозможные модели искусственного интеллекта на её основе.

TensorFlow также поставляется вместе с удобным сервером отладки под названием TensorBoard, который позволяет специалистам по обработке данных собирать и визуализировать всю соответствующую информацию об обучении, такую ​​как логи, события и метрики, на веб-дашборде.

TensorBoard — отличный инструмент для локальной отладки вашей модели ИИ, он неприменим для долговременного наблюдения за работающей моделью ИИ в производственной среде.

Поскольку сбор данных в TensorBoard основан на гибком интерфейсе приема обратных вызовов TensorFlow, легко напрямую отправлять информацию о работе вашей модели ИИ в Ключ-АСТРОМ.

Все, что необходимо — это специальная реализация функции обратного вызова TensorFlow, которая собирает данные и пересылает их в среду мониторинга Ключ-АСТРОМ.

Ключ-АСТРОМ TensorFlow callback receiver

Реализация обработчика обратных вызовов TensorFlow действительно получает важные обновления информации во время этапов обучения и оценки модели.

Ниже представлена ​​реализация обработчика обратных вызовов Ключ-АСТРОМ TensorFlow, который передает метрические данные во время обучения и оценки модели.

import tensorflow as tf

from tensorflow import keras

import requests

# Custom TensorFlow Keras callback receiver that sends the logged metrics

# to a astromkey monitoring environment.

# Read more about writing your own callback receiver here:

# https://www.tensorflow.org/guide/keras/custom_callback

class astromkeyKerasCallback(keras.callbacks.Callback):

    metricprefix = ''

    modelname = ''

    url = ''

    apitoken = ''

    batch = ''

    # Constructor that takes a metric prefix, the name of the current model that is used,

    # the astromkey metric ingest API endpoint (e.g.: https://your.live.astromkey.com/api/v2/metrics/ingest)

    # and the astromkey API token (with metric ingest scope enabled)

    def __init__(self, metricprefix='tensorflow.', modelname='', url='', apitoken=''):

        self.metricprefix = metricprefix

        self.modelname = modelname

        self.url = url

        self.apitoken = apitoken

    def send_metric(self, name, value, tags):

      tags_str = ''

      for tag_key in tags:

        tags_str = tags_str + ',{key}={value}'.format(key=tag_key, value=tags[tag_key])

      line = '{prefix}.{name}{tags} {value}\n'.format(prefix=self.metricprefix, tags=tags_str, model=self.modelname, name=name, value=value)

      self.batch = self.batch + line

    def flush(self):

      print(self.batch)

      r = requests.post(self.url, headers={'Content-Type': 'text/plain', 'Authorization' : 'Api-Token ' + self.apitoken}, data=self.batch)

      self.batch = ''

    def on_train_end(self, logs=None):

        keys = list(logs.keys())

        for m in keys:

          self.send_metric(m, logs[m], { 'model' : self.modelname, 'stage' : 'train' })

        self.flush()

    def on_epoch_end(self, epoch, logs=None):

        keys = list(logs.keys())

        for m in keys:

          self.send_metric(m, logs[m], { 'model' : self.modelname, 'stage' : 'train' })

        self.flush()

    def on_test_end(self, logs=None):

        keys = list(logs.keys())

        for m in keys:

          self.send_metric(m, logs[m], { 'model' : self.modelname, 'stage' : 'test' })

        self.flush()

    def on_predict_end(self, logs=None):

        keys = list(logs.keys())

        for m in keys:

          self.send_metric(m, logs[m], { 'model' : self.modelname, 'stage' : 'predict' })

        self.flush()

Пример обучения и оценки модели Keras

В следующем примере модель Keras загружает известный набор тестовых данных (MNIST) и обучает последовательную модель Keras.

Настроенный приемник обратного вызова Ключ-АСТРОМ TensorFlow, который автоматически получает и пересылает метрики точности и потерь в настроенную среду мониторинга.

В производственной среде (на этапе оценки) тот же приёмник обратного вызова Ключ-АСТРОМ используется для непрерывного получения данных наблюдаемости о работающей модели.

import tensorflow as tf

print("TensorFlow version:", tf.__version__)

import time

# load the astromkey callback receiver

from astromkey import astromkeyKerasCallback

# Load a sample data set

mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()

x_train, x_test = x_train / 255.0, x_test / 255.0

# Define a model

model = tf.keras.models.Sequential([

  tf.keras.layers.Flatten(input_shape=(28, 28)),

  tf.keras.layers.Dense(128, activation='relu'),

  tf.keras.layers.Dropout(0.2),

  tf.keras.layers.Dense(10)

])

# Define a loss function

loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)

# Compile the model

model.compile(optimizer='adam',

              loss=loss_fn,

              metrics=['accuracy'])

# Define the tensor board callbacks

dt_callback = astromkeyKerasCallback(metricprefix='tensorflow', modelname='mnist-classifier', url='https://<YOUR_ENV>.live.astromkey.com/api/v2/metrics/ingest', apitoken='<YOUR_TOKEN>')

# Train the model

model.fit(x_train, y_train, epochs=5, callbacks=[dt_callback])

# Use the model in production

while True:

    model.evaluate(x_test,  y_test, verbose=2, callbacks=[dt_callback])

    time.sleep(60)

Визуализация метрик модели TensorFlow в Ключ-АСТРОМ

После того как приёмник обратного вызова Ключ-АСТРОМ TensorFlow зарегистрирован в вашей собственной AI-модели, все собранные метрики перенаправляются в вашу среду мониторинга.