Learn R Programming

Neptune

Neptune is a metadata store for MLOps, built for teams that run a lot of experiments.

It gives you a single place to log, store, display, organize, compare, and query all your model-building metadata.

Neptune is used for:

  • Experiment tracking: Log, display, organize, and compare ML experiments in a single place.
  • Model registry: Version, store, manage, and query trained models, and model building metadata.
  • Monitoring ML runs live: Record and monitor model training, evaluation, or production runs live

Getting started

Register

Go to https://neptune.ai/ and sign up.

You can use Neptune for free for work, research, and personal projects. All individual accounts are free within quota.

Install Neptune R package

If you don't have a Python installed and just want use Neptune, simply run the following code:

install.packages("reticulate")
library(reticulate)
install_miniconda()

install.packages("neptune")
library(neptune)
neptune_install()

This code will install miniconda (a minimalistic Python environment) and set it up for you. This is a one time thing and after that you only need to run the last two lines when you want to work with Neptune:

library(neptune)
neptune_install()

If you have a Python virtual environment already setup (conda, miniconda, or virtualenv), you can point to it instead of creating a new one:

# If you are using virtualenv
install.packages("neptune")
library(neptune)
neptune_install(method="virtualenv", envname = "PATH/TO/YOUR/VIRTUALENV")


# If you are using conda or miniconda
install.packages("neptune")
library(neptune)
neptune_install(method="conda", envname = "PATH/TO/YOUR/CONDA/ENVIRONMENT")

Create a tracked run

run <- neptune_init(project="MY_WORKSPACE/MY_PROJECT",
                    api_token="NEPTUNE_API_TOKEN")

This code creates a Run in the project of your choice. This will be your gateway to log metadata to Neptune.

You need to pass your credentials (project and API token) to the neptune_init() method. You can also set the API token globally:

neptune_set_api_token(token = "NEPTUNE_API_TOKEN")

API token

To find your API token:

  • Go to the Neptune UI
  • Open the User menu toggle in the upper right
  • Click Get your API token
  • Copy your API token

or get your API token directly from here.

Project

The project argument has the format WORKSPACE_NAME/PROJECT_NAME.

To find it:

  • Go to the Neptune UI
  • Go to your project
  • Open Settings > Properties
  • Copy the project name

Stop tracking

Once you are finished with tracking metadata you need to stop the tracking for that particular run:

neptune_stop(run)

# Note that you can also use reticulate based syntax:
run$stop()

If you are running a script it will stop tracking automatically at the end. However, in interactive environment such as RStudio you need to to stop it explicitly.

Track metadata

Log hyperparameters

params <- list(
  "dense_units"= 128,
  "activation"= "relu",
  "dropout"= 0.23,
  "learning_rate"= 0.15,
  "batch_size"= 64,
  "n_epochs"= 30
)
run["parameters"] <- params

If you have parameters in form of a dictionary you can log them to Neptune in batch. It will create a field with the appropriate type for each dictionary entry. You can update the hyperparameters or add new ones later in the code:

# Add additional parameters 
run["model/parameters/seed"] <- RANDOM_SEED

# Update parameters e.g. after triggering an early stopping
run["model/parameters/n_epochs"] <- epoch

Log training metrics

for (i in 1:epochs) {
  [...] # My training loop
  neptune_log(run["train/epoch/loss"], loss)
  neptune_log(run["train/epoch/accuracy"], acc)
}

# Note that you can also use reticulate based syntax:
run["train/epoch/loss"]$log(loss)

You can log training metrics to Neptune using series fields. In Neptune there are three types of series - float series, string series, and file series. Each neptune_log() will add a new value at the end of the series.

Log evaluation results

run["evaluation/accuracy"] <- eval_acc
run["evaluation/loss"] <- eval_loss

To log evaluation metrics simply assign them to a field of your choice. Using the snippet above, both evaluation metrics will be stored in the same evaluation namespace.

neptune_upload(run["evaluation/ROC"], "roc.png")

# You can upload ggplot plots directly without saving them to a file
neptune_upload(run["evaluation/ROC"], ggplot_roc)

# If you want to control additional parameters like size of the plot you can pass the same arguments as to ggsave
neptune_upload(run["evaluation/ROC"], ggplot_roc, width=20, height=20, units="cm")

# Note that you can also use reticulate based syntax:
run["evaluation/ROC"]$upload("roc.png")
run["evaluation/ROC"]$upload(ggplot_roc)

You can log plots and charts easily using the neptune_upload() function. In the case of a ggplot object, it gets converted to an image file and uploaded, but you can also upload images from the local disc.

Upload model file

You can upload any binary file (e.g. model weights) from disk using the neptune_upload() method. If your model is saved as multiple files you can upload a whole folder as a FileSet using neptune_upload_files().

# Upload a single fingle sile
neptune_upload(run["model"], "model.Rdata")

# You can also upload folders in batch if you don't need access to the separate files
neptune_upload_files(run["model"], "models")

# Note that you can also use reticulate based syntax:
run["model"]$upload("model.Rdata")
run["model"]$upload_files("models")

Getting help

If you get stuck, don't worry we are here to help:

Copy Link

Version

Install

install.packages('neptune')

Monthly Downloads

211

Version

0.2.3

License

Apache License 2.0 | file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Rafal Jankowski

Last Published

April 13th, 2022

Functions in neptune (0.2.3)

neptune_delete_files

Delete the file or files specified by paths from the FileSet stored on the Neptune servers.
neptune_fetch_runs_table

Retrieve runs matching the specified criteria.
neptune_fetch_last

Fetches last value stored in the series from Neptune servers.
neptune_fetch_values

Fetches all values stored in the series from Neptune servers.
neptune_file_as_html

Converts an object to an HTML File value object.
neptune_print_structure

Pretty prints the structure of the run's metadata. Paths are ordered lexicographically and the whole structure is neatly colored.
neptune_pop

Removes the field or whole namespace stored under the path completely and all data associated with them.
neptune_remove

Removes the provided tag or tags from the set.
neptune_set_api_token

Sets NEPTUNE_API_TOKEN environment variables
neptune_get_run_url

Returns a direct link to run in Neptune. It's the same link that is printed at the moment of initialization of the run.
neptune_file_as_image

Static method for converting image objects or image-like objects to an image File value object.
neptune_upload_files

Uploads the provided file or files and stores them inside the FileSet.
[.neptune.new.metadata_containers.run.Run

Field lookup
neptune_get_structure

Returns a run's metadata structure in form of a named list.
[<-.neptune.new.metadata_containers.run.Run

Assigns the provided value to the field.
neptune_sync

Synchronizes the run with with Neptune servers.
neptune_init

Starts a new tracked run, and append it to the top of the Runs table view.
neptune_stop

Stop neptune run.
neptune_wait

Wait for all the tracking calls to finish.
neptune_install

Install neptune-client along with required python enviroment.
neptune_log

Logs the provided number or a collection of numbers.
neptune_upload

Uploads provided file under specified field path
neptune_track_files

Saves the artifact metadata.
neptune_clear

Removes all tags from the StringSet.
neptune_add

Adds the provided tag or tags to the run's tags.
neptune_exists

Checks if there is any field or namespace under the specified path.
neptune_fetch

Fetch values of all non-File Atom fields as a named list.
neptune_fetch_files_list

Fetches a list of artifact files from the Neptune servers.
neptune_fetch_hash

Fetches the Hash of the artifact from Neptune servers.
neptune_assign

Assigns the provided value to the field.
neptune_download

Downloads all the files that are referenced in the field.
neptune_download_last

Downloads the last File stored in the series from Neptune servers and save it locally.