В этом посте я хотел бы поэкспериментировать с моделью TensorFlow / Keras на облачной платформе neptune.ai и посмотреть, как мы можем отслеживать наши эксперименты.
Neptune.ai предлагает установку как в облаке, так и на месте, здесь в этом посте я буду работать в первую очередь с отдельными учетными записями в облаке.
Настройка Jupyterlab
Затем я хотел бы подключить свой локальный Jupyterlab к Neptune, что позволит мне проводить эксперименты локально и отслеживать прогресс в облаке Neptune.
Во-первых, вам необходимо установить плагин Neptune, который вы можете найти на торговой площадке jupyterlab, обязательно установите npm / nodejs в своей среде, прежде чем включать его.
Если плагин включен, вам необходимо настроить токен API, который вы можете скопировать из своей облачной учетной записи neptune в разделе учетной записи. Если он включен, вы увидите параметры на панели инструментов jupterlab.
Создать эксперимент
Установка
Установка с помощью pip довольно проста.
pip install neptune-client neptune-tensorflow-keras tensorflow
После установки всех библиотек запустите приведенную ниже модель TensorFlow на своем ноутбуке, заменив ее именем проекта Neptune и токеном API.
import tensorflow as tf import neptune.new as neptune from neptune.new.integrations.tensorflow_keras import NeptuneCallback run = neptune.init( project="<neptune_project_name>", api_token="api_tocken", ) # your credentials params = {"lr": 0.005, "momentum": 0.4, "epochs": 30, "batch_size": 128} run["parameters"] = params 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 model = tf.keras.models.Sequential( [ tf.keras.layers.Flatten(), tf.keras.layers.Dense(256, activation=tf.keras.activations.relu), tf.keras.layers.Dropout(0.5), tf.keras.layers.Dense(10, activation=tf.keras.activations.softmax), ] ) optimizer = tf.keras.optimizers.SGD( learning_rate=params["lr"], momentum=params["momentum"], ) model.compile( optimizer=optimizer, loss="sparse_categorical_crossentropy", metrics=["accuracy"] ) neptune_cbk = NeptuneCallback(run=run, base_namespace="training") model.fit( x_train, y_train, epochs=params["epochs"], batch_size=params["batch_size"], callbacks=[neptune_cbk], ) eval_metrics = model.evaluate(x_test, y_test, verbose=0) for j, metric in enumerate(eval_metrics): run["eval/{}".format(model.metrics_names[j])] = metric run.stop()
После успешного запуска вы обнаружите, что в облаке Neptune создается новая строка запуска эксперимента, которая будет отслеживать производительность и другие матрицы вашей модели.
Отслеживание экспериментов
В первом прогоне, за 10 эпох и размер пакета 64, точность достигла около 94%.
График зависимости точности / потерь от размера партии
График точности / потерь в зависимости от эпох
Во втором прогоне, за 20 эпох и размер пакета 64, точность повысилась примерно до 95%.
В третьем прогоне, через 30 эпох и размер пакета 128, точность начала падать на тестовом наборе, поскольку она все еще улучшается на обучающем наборе, который движется в направлении переобучения.
Нептун также отслеживает использование ЦП и памяти во время тренировки, что довольно круто. В нашем эксперименте мы использовали около 20% ЦП и 11 ГБ памяти.
в метаданных eval вы можете найти метрики acc / loss в наборе eval. Все метаданные, которые развиваются в ходе эксперимента, можно отслеживать на вкладке метаданных.
в метаданных eval вы можете найти метрики acc / loss в наборе eval
в обучающих метаданных вы можете найти метрики Acc / loss на обучающем наборе.
при интеграции исходного кода вы можете отслеживать снимки ваших записных книжек.
в параметрах вы можете отслеживать все гиперпараметры с течением времени
мониторинг предоставит вам матрицы для использования оборудования.
Пока что Neptune предоставляет очень желаемые матрицы для отслеживания производительности модели. В следующем посте мы обсудим реестр моделей с Neptune. Быть в курсе!