Skip to main content

A super-easy way to record, search and compare AI experiments.

Project description

An easy-to-use & supercharged open-source experiment tracker

Aim logs your training runs, enables a beautiful UI to compare them and an API to query them programmatically.

AboutFeaturesDemosExamplesQuick StartDocumentationRoadmapSlack CommunityTwitter

Platform Support PyPI - Python Version PyPI Package License PyPI Downloads Issues

Integrates seamlessly with your favorite tools



About Aim

Track and version ML runs Visualize runs via beautiful UI Query runs metadata via SDK

Aim is an open-source, self-hosted ML experiment tracking tool. It's good at tracking lots (1000s) of training runs and it allows you to compare them with a performant and beautiful UI.

You can use not only the great Aim UI but also its SDK to query your runs' metadata programmatically. That's especially useful for automations and additional analysis on a Jupyter Notebook.

Aim's mission is to democratize AI dev tools.

Why use Aim?

Compare 100s of runs in a few clicks - build models faster

  • Compare, group and aggregate 100s of metrics thanks to effective visualizations.
  • Analyze, learn correlations and patterns between hparams and metrics.
  • Easy pythonic search to query the runs you want to explore.

Deep dive into details of each run for easy debugging

  • Hyperparameters, metrics, images, distributions, audio, text - all available at hand on an intuitive UI to understand the performance of your model.
  • Easily track plots built via your favourite visualisation tools, like plotly and matplotlib.
  • Analyze system resource usage to effectively utilize computational resources.

Have all relevant information organised and accessible for easy governance

  • Centralized dashboard to holistically view all your runs, their hparams and results.
  • Use SDK to query/access all your runs and tracked metadata.
  • You own your data - Aim is open source and self hosted.

Demos

Machine translation lightweight-GAN
Training logs of a neural translation model(from WMT'19 competition). Training logs of 'lightweight' GAN, proposed in ICLR 2021.
FastSpeech 2 Simple MNIST
Training logs of Microsoft's "FastSpeech 2: Fast and High-Quality End-to-End Text to Speech". Simple MNIST training logs.

Quick Start

Follow the steps below to get started with Aim.

1. Install Aim on your training environment

pip3 install aim

2. Integrate Aim with your code

from aim import Run

# Initialize a new run
run = Run()

# Log run parameters
run["hparams"] = {
    "learning_rate": 0.001,
    "batch_size": 32,
}

# Log metrics
for i in range(10):
    run.track(i, name='loss', step=i, context={ "subset":"train" })
    run.track(i, name='acc', step=i, context={ "subset":"train" })

See the full list of supported trackable objects(e.g. images, text, etc) here.

3. Run the training as usual and start Aim UI

aim up

4. Or query runs programmatically via SDK

from aim import Repo

my_repo = Repo('/path/to/aim/repo')

query = "metric.name == 'loss'" # Example query

# Get collection of metrics
for run_metrics_collection in my_repo.query_metrics(query).iter_runs():
    for metric in run_metrics_collection:
        # Get run params
        params = metric.run[...]
        # Get metric values
        steps, metric_values = metric.values.sparse_numpy()

Integrations

Integrate PyTorch Lightning
from aim.pytorch_lightning import AimLogger

# ...
trainer = pl.Trainer(logger=AimLogger(experiment='experiment_name'))
# ...

See documentation here.

Integrate Hugging Face
from aim.hugging_face import AimCallback

# ...
aim_callback = AimCallback(repo='/path/to/logs/dir', experiment='mnli')
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset if training_args.do_train else None,
    eval_dataset=eval_dataset if training_args.do_eval else None,
    callbacks=[aim_callback],
    # ...
)
# ...

See documentation here.

Integrate Keras & tf.keras
import aim

# ...
model.fit(x_train, y_train, epochs=epochs, callbacks=[
    aim.keras.AimCallback(repo='/path/to/logs/dir', experiment='experiment_name')
    
    # Use aim.tensorflow.AimCallback in case of tf.keras
    aim.tensorflow.AimCallback(repo='/path/to/logs/dir', experiment='experiment_name')
])
# ...

See documentation here.

Integrate XGBoost
from aim.xgboost import AimCallback

# ...
aim_callback = AimCallback(repo='/path/to/logs/dir', experiment='experiment_name')
bst = xgb.train(param, xg_train, num_round, watchlist, callbacks=[aim_callback])
# ...

See documentation here.

Comparisons to familiar tools

Tensorboard

Training run comparison

Order of magnitude faster training run comparison with Aim

  • The tracked params are first class citizens at Aim. You can search, group, aggregate via params - deeply explore all the tracked data (metrics, params, images) on the UI.
  • With tensorboard the users are forced to record those parameters in the training run name to be able to search and compare. This causes a super-tedius comparison experience and usability issues on the UI when there are many experiments and params. TensorBoard doesn't have features to group, aggregate the metrics

Scalability

  • Aim is built to handle 1000s of training runs - both on the backend and on the UI.
  • TensorBoard becomes really slow and hard to use when a few hundred training runs are queried / compared.

Beloved TB visualizations to be added on Aim

  • Embedding projector.
  • Neural network visualization.

MLFlow

MLFlow is an end-to-end ML Lifecycle tool. Aim is focused on training tracking. The main differences of Aim and MLflow are around the UI scalability and run comparison features.

Run comparison

  • Aim treats tracked parameters as first-class citizens. Users can query runs, metrics, images and filter using the params.
  • MLFlow does have a search by tracked config, but there are no grouping, aggregation, subplotting by hyparparams and other comparison features available.

UI Scalability

  • Aim UI can handle several thousands of metrics at the same time smoothly with 1000s of steps. It may get shaky when you explore 1000s of metrics with 10000s of steps each. But we are constantly optimizing!
  • MLflow UI becomes slow to use when there are a few hundreds of runs.

Weights and Biases

Hosted vs self-hosted

  • Weights and Biases is a hosted closed-source MLOps platform.
  • Aim is self-hosted, free and open-source experiment tracking tool.

Roadmap

Detailed Sprints

:sparkle: The Aim product roadmap

  • The Backlog contains the issues we are going to choose from and prioritize weekly
  • The issues are mainly prioritized by the highly-requested features

High-level roadmap

The high-level features we are going to work on the next few months

Done

  • Live updates (Shipped: Oct 18 2021)
  • Images tracking and visualization (Start: Oct 18 2021, Shipped: Nov 19 2021)
  • Distributions tracking and visualization (Start: Nov 10 2021, Shipped: Dec 3 2021)
  • Jupyter integration (Start: Nov 18 2021, Shipped: Dec 3 2021)
  • Audio tracking and visualization (Start: Dec 6 2021, Shipped: Dec 17 2021)
  • Transcripts tracking and visualization (Start: Dec 6 2021, Shipped: Dec 17 2021)
  • Plotly integration (Start: Dec 1 2021, Shipped: Dec 17 2021)
  • Colab integration (Start: Nov 18 2021, Shipped: Dec 17 2021)
  • Centralized tracking server (Start: Oct 18 2021, Shipped: Jan 22 2022)
  • Tensorboard adaptor - visualize TensorBoard logs with Aim (Start: Dec 17 2021, Shipped: Feb 3 2022)
  • Track git info, env vars, CLI arguments, dependencies (Start: Jan 17 2022, Shipped: Feb 3 2022)
  • MLFlow adaptor (visualize MLflow logs with Aim) (Start: Feb 14 2022, Shipped: Feb 22 2022)
  • Activeloop Hub integration (Start: Feb 14 2022, Shipped: Feb 22 2022)
  • PyTorch-Ignite integration (Start: Feb 14 2022, Shipped: Feb 22 2022)
  • Run summary and overview info(system params, CLI args, git info, ...) (Start: Feb 14 2022, Shipped: Mar 9 2022)
  • Add DVC related metadata into aim run (Start: Mar 7 2022, Shipped: Mar 26 2022)
  • Ability to attach notes to Run from UI (Start: Mar 7 2022, Shipped: Apr 29 2022)

In Progress

  • Cloud storage support – store runs blob(e.g. images) data on the cloud (Start: Mar 21 2022)
  • Artifact storage – store files, model checkpoints, and beyond (Start: Mar 21 2022)
  • Run execution details(display stdout/stderr logs) (Start: 25 Apr 2022)
  • Long sequences(up to 5M of steps) support (Start: 25 Apr 2022)

To Do

Aim UI

  • Runs management
    • Runs explorer – query and visualize runs data(images, audio, distributions, ...) in a central dashboard
  • Explorers
    • Audio Explorer
    • Text Explorer
    • Figures Explorer
    • Distributions Explorer
  • Dashboards – customizable layouts with embedded explorers

SDK and Storage

  • Scalability
    • Smooth UI and SDK experience with over 10.000 runs
  • Runs management
    • SDK interfaces
      • Reporting – query and compare runs, explore data with familiar tools such as matlpotlib and pandas
      • Manipulations – copy, move, delete runs, params and sequences
    • CLI interfaces
      • Reporting - runs summary and run details in a CLI compatible format
      • Manipulations – copy, move, delete runs, params and sequences

Integrations

  • ML Frameworks:
    • Shortlist: MONAI, SpaCy, AllenNLP, LightGBM, Raytune, Fairseq, fast.ai, KerasTuner
  • Datasets versioning tools
    • Shortlist: HuggingFace Datasets
  • Resource management tools
    • Shortlist: Kubeflow, Slurm
  • Workflow orchestration tools
  • Others: Hydra, Google MLMD, Streamlit, ...

On hold

  • scikit-learn integration

Community

If you have questions

  1. Read the docs
  2. Open a feature request or report a bug
  3. Join our slack

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

aim-3.10.1.tar.gz (1.5 MB view details)

Uploaded Source

Built Distributions

aim-3.10.1-cp310-cp310-manylinux_2_24_x86_64.whl (5.5 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.24+ x86-64

aim-3.10.1-cp310-cp310-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

aim-3.10.1-cp310-cp310-macosx_10_14_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.10 macOS 10.14+ x86-64

aim-3.10.1-cp39-cp39-manylinux_2_24_x86_64.whl (5.6 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.24+ x86-64

aim-3.10.1-cp39-cp39-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

aim-3.10.1-cp39-cp39-macosx_10_14_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.9 macOS 10.14+ x86-64

aim-3.10.1-cp38-cp38-manylinux_2_24_x86_64.whl (5.8 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.24+ x86-64

aim-3.10.1-cp38-cp38-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

aim-3.10.1-cp38-cp38-macosx_10_14_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.8 macOS 10.14+ x86-64

aim-3.10.1-cp37-cp37m-manylinux_2_24_x86_64.whl (5.5 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.24+ x86-64

aim-3.10.1-cp37-cp37m-macosx_10_14_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.7m macOS 10.14+ x86-64

aim-3.10.1-cp36-cp36m-manylinux_2_24_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.24+ x86-64

aim-3.10.1-cp36-cp36m-macosx_10_14_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.6m macOS 10.14+ x86-64

File details

Details for the file aim-3.10.1.tar.gz.

File metadata

  • Download URL: aim-3.10.1.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.4

File hashes

Hashes for aim-3.10.1.tar.gz
Algorithm Hash digest
SHA256 64c9aa585a9d0399363df0f2ef298865004db467d5d3414bb22b61fda01b5a24
MD5 03316793ae0884a89aa2d03923226a05
BLAKE2b-256 f843a318a2e699608bc104adf6236ad5a4fb8d4c5c7e650dd2384bfc48c134a3

See more details on using hashes here.

File details

Details for the file aim-3.10.1-cp310-cp310-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.10.1-cp310-cp310-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 0b3e33b19cc1be14e76f7e73a1b07d1b1ea4053646b6b5556b68e4fb0b29efce
MD5 14a381c2e3ad453fd3b7c64eacc87731
BLAKE2b-256 58dce83c7c76f892ed0fc9b99d2d96b24891781b5934863fee6231c604bc4fa4

See more details on using hashes here.

File details

Details for the file aim-3.10.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aim-3.10.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8ee0c377cec9fe497ebbf5b844e691722f40d8c6a250e9d237536dc4c8b8fb7f
MD5 c5a15c441cdfa9e79bb06de804fc4f9f
BLAKE2b-256 6587268f27d5f76bb4f1ea083871a6927fb663447fcbbe9ff9045c04378d4ff0

See more details on using hashes here.

File details

Details for the file aim-3.10.1-cp310-cp310-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.10.1-cp310-cp310-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 d9158b098d1214deb9bd9be4df4919a586996330e8a4935dceffae8da8883379
MD5 7316ce3dc0b8cf44ccfce2721663e64a
BLAKE2b-256 2bc6c45fc86b748f4e35adb38daed0c311806ba79fa2c2695259f68785272a52

See more details on using hashes here.

File details

Details for the file aim-3.10.1-cp39-cp39-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.10.1-cp39-cp39-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 f58943725a5b8cb900b6f789a3e2875b3fada320f8453f45c82fa2fe03375065
MD5 7681bac77a45086fa7c5cbcf584099cc
BLAKE2b-256 0b995c8163c5989e9653aae8be98c3766cc08e002a1edb3fee43d52c9aee333a

See more details on using hashes here.

File details

Details for the file aim-3.10.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aim-3.10.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 79e0609309d4a8d2a7012b5c25e6488bc1dade812067d979d0a0ff4a332b4e68
MD5 3bdf301c20f7c6eb4329f0ba7389c7cb
BLAKE2b-256 f7fc7dfb4994a19b0b202e9e4edb3fed79eaa39b3a7133dcd3dd89eac340c09b

See more details on using hashes here.

File details

Details for the file aim-3.10.1-cp39-cp39-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.10.1-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 0f1e4731fe02a31eb3cf2f9cd5a2f3cf4a1f0b7d3af5ce9de72266aec5fc8fec
MD5 49d6c0dcccea348e33813519895e3802
BLAKE2b-256 477aa3b4875adf0120fe69718848679518f843e438d9207aa091acee12734d1e

See more details on using hashes here.

File details

Details for the file aim-3.10.1-cp38-cp38-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.10.1-cp38-cp38-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 593fa6cfc85c6bf31915753ad6dddf1cc55fb6ed5dd0a6972bc809b7d4387e18
MD5 828194520805f67dbc6f6e228199ff0e
BLAKE2b-256 c507ea1a91e2d9da0f21daa436ade95261c12e5328c3cedfd0bb28d8ee4fa87b

See more details on using hashes here.

File details

Details for the file aim-3.10.1-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aim-3.10.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f7a615880557fa572adec7ed0a5dcdfc470bae7faaf4615ccc8f5e86fe712ff7
MD5 3035475e05a4d6bd63cf844b49ef6ae6
BLAKE2b-256 0ff170f8342959a5b62072cbe55f133b39c07bb8901f5d48e33aebc29db7dff2

See more details on using hashes here.

File details

Details for the file aim-3.10.1-cp38-cp38-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.10.1-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 8fdf818e72971abdb48b031e0624bfcc82263e452e634b18e060be0dc6951a02
MD5 9e599acc54f4270134f75be0f637e338
BLAKE2b-256 014d117c5dfefeb082f5eb64afb311dadd98ea24d6bad3b47fe716cd2410f2fb

See more details on using hashes here.

File details

Details for the file aim-3.10.1-cp37-cp37m-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.10.1-cp37-cp37m-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 ff9d588e6a22f37357924275d271dd1e023b2a0061efa806a26c587674a9f952
MD5 30d1495e4c4ef5e6c0d95f0fa8455d09
BLAKE2b-256 01540a2f37884ef6836fdef176e19d8fb64d900cbb0f1364dc787dc182795280

See more details on using hashes here.

File details

Details for the file aim-3.10.1-cp37-cp37m-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.10.1-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 d3529a6d79f5a6401a8ec21fed317ec953b7cf8c9775d88666879dd52ae861d6
MD5 0b08e3512e69532f03cba5c57f89c34a
BLAKE2b-256 535fb9e4d3a65af6857b43ed189d164b410e42291931dafa6f21138005e0b0ae

See more details on using hashes here.

File details

Details for the file aim-3.10.1-cp36-cp36m-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.10.1-cp36-cp36m-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 89b1c8062d1f4e051a03aaac39c7b62520074b0c674b805b7f9fdd0b55de889e
MD5 27fa8ed9d4099fff3ab38af580f3ab22
BLAKE2b-256 5d435b21e8fe5087e6e2a7a56feeb1e2b1fdc1a44e2d4767cd5fad9e4cc852ba

See more details on using hashes here.

File details

Details for the file aim-3.10.1-cp36-cp36m-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: aim-3.10.1-cp36-cp36m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.6m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.64.0 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.6.13

File hashes

Hashes for aim-3.10.1-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 19ae51ace9d2c10a3ad4ce63c127eb3c87cfc76b53326c3a3e589cef5907b40a
MD5 86eb07dd12e3d6dbcbcab176b8381dc1
BLAKE2b-256 9f736d966e4c543f2349bf7a0146b241c364835a4b0e2b803b56eedc5f0e0857

See more details on using hashes here.

Supported by

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