Skip to main content

A simple record toolkit generating human readable data record for experiment

Project description

record-kit

A simple record toolkit generating human-readable data record in experiments.

Installation

pip install record-kit

Usage

Suppose you have an experiment script like this:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--lr', type=float)
args = parser.parse_args()

def train_ml_model():
    for i in range(2):
        epoch, loss, acc = i, 0.1, 0.5

Using record-kit to track these generated data is quite easy:

from record_kit import Recorder, Record             # use Recorder to track experiment data
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--lr', type=float, default=0.1)
args = parser.parse_args()


def train_ml_model():
    for i in range(2):
        epoch, loss, acc = i, 0.1, 0.5
        recorder.add_data(epoch, loss, acc)   # save data


# init Recorder
recorder = Recorder()                              # init Recorder
recorder.set_meta(args)                            # save arguments like hyperparameters
recorder.set_header('epoch', 'loss', 'acc')        # specify table header

# parse record
record = Record(recorder) # or record = Record('path/to/record')
print(record.meta)
print(record.data)

output

{'lr': 0.1}
   epoch  loss  acc
0    0.0  0.10  0.5
1    1.0  0.08  0.9

generated record in ./records/record-timestamp.md

record_example

Record Format

A typical record includes two sections Meta and Data.

# record-20201020-154912
## Meta
| key | value | type |
| :---: | :---: | :---: |
| lr | 0.1 | float |
## Data
| epoch | loss | acc |
| :---: | :---: | :---: |
| 0 | 0.1 | 0.5 |
| 1 | 0.08 | 0.9 |

API

Recorder

Recorder(file_name='record', records_dir='./records', with_timestamp=True)

Initialize a Recorder instance

Recorder.set_meta(dict_like_object)

Add meta info to the record. Note meta info can only be added once. You may use dict or argparse.Namespace(return type of parser.parse_args()) as its parameter.

Recorder.set_header(*args)

Specify header of data table in Data section. The header can only be added once.

Recorder.add(*args)

Add a data line to the table in Data section. The number of parameters in should be consistent with Recorder.set_header(*args)

Record

Record(Recorder_or_path_str)

Load & parse record

Record.meta -> dict

Get meta info of record.

Record.data -> pandas.DataFrame

Get data table of record.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

record_kit-0.1.10-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file record_kit-0.1.10-py3-none-any.whl.

File metadata

  • Download URL: record_kit-0.1.10-py3-none-any.whl
  • Upload date:
  • Size: 5.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.0

File hashes

Hashes for record_kit-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 5e5cfc61dfeb11c5dce0db2a8dd655d762710e5a363116875470721189217ff1
MD5 35149d23dbde47722c1dbf364ccde33b
BLAKE2b-256 e1768fc0f2baf89024e3daf43f023f73e5b6f02aae605022bea3c0aeba259d07

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page