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.0.dev9.tar.gz (1.5 MB view details)

Uploaded Source

Built Distributions

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

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

Uploaded CPython 3.10manylinux: glibc 2.24+ x86-64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.10macOS 10.14+ x86-64

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

Uploaded CPython 3.9manylinux: glibc 2.24+ x86-64

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

Uploaded CPython 3.9macOS 11.0+ ARM64

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

Uploaded CPython 3.9macOS 10.14+ x86-64

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

Uploaded CPython 3.8manylinux: glibc 2.24+ x86-64

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

Uploaded CPython 3.8macOS 11.0+ ARM64

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

Uploaded CPython 3.8macOS 10.14+ x86-64

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

Uploaded CPython 3.7mmanylinux: glibc 2.24+ x86-64

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

Uploaded CPython 3.7mmacOS 10.14+ x86-64

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

Uploaded CPython 3.6mmanylinux: glibc 2.24+ x86-64

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

Uploaded CPython 3.6mmacOS 10.14+ x86-64

File details

Details for the file aim-3.10.0.dev9.tar.gz.

File metadata

  • Download URL: aim-3.10.0.dev9.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.0.dev9.tar.gz
Algorithm Hash digest
SHA256 614d90b337ed683cfa0a942745ce271f91366d33a9bb9d97436bf18e26518cd7
MD5 e7f4809d37e53a303c9d337d6be49e3d
BLAKE2b-256 00297d60866d63a04e325b270d0c7c3f8fa5f20b4bba2a2542e6b5ec5ad9b14a

See more details on using hashes here.

File details

Details for the file aim-3.10.0.dev9-cp310-cp310-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.10.0.dev9-cp310-cp310-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 7032700a1c544d58b5977f84ebbe2c6340947626958ea71fdad40b72db377089
MD5 0e9361a5235996170cdbc09465a0243c
BLAKE2b-256 799667a937fddd52b9fbc0b95fef0ac5f7db1a99bf8f7c2d67f23e12e86fc763

See more details on using hashes here.

File details

Details for the file aim-3.10.0.dev9-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aim-3.10.0.dev9-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ea60d3bde6108c6bca773e462d0cb39f73321643cae895c37a4361e1122460c9
MD5 9a4e2bbda2d06e415646aaa9ff94cb5a
BLAKE2b-256 26b09c779f0131d76c4c1f95b3bc7411cc1514c3c741e5acf747e183416a244b

See more details on using hashes here.

File details

Details for the file aim-3.10.0.dev9-cp310-cp310-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.10.0.dev9-cp310-cp310-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 744666a99015898430eeb921a41fb0431090681b87cff6c4b02164c92c1b39d9
MD5 4aff56b1247d89a1d181b1f336932bef
BLAKE2b-256 9028baff44c1a7904d52a32a91d9ef1c26f3462f3a25327848f95485da162f7b

See more details on using hashes here.

File details

Details for the file aim-3.10.0.dev9-cp39-cp39-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.10.0.dev9-cp39-cp39-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 3bf22846c3273e10f9ca01813e3c4c8af892932bdf8d3eead793e53207ca9b81
MD5 a4ac953fc03975f55a9fc7d4880c2ab2
BLAKE2b-256 2310a7b452aa7e57ac236189e01850d600b2fb06749032e33dcad8162284414a

See more details on using hashes here.

File details

Details for the file aim-3.10.0.dev9-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aim-3.10.0.dev9-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1ed5e491635ad15df4fa3a9606a45d8a87c51926ae2d755efe13553115e3f7c0
MD5 8cab9df9086525ee31e482949a79548e
BLAKE2b-256 239a36792ef8cade51ce03d9b8a8827cf9a1155868b71c2832923b61a282699a

See more details on using hashes here.

File details

Details for the file aim-3.10.0.dev9-cp39-cp39-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.10.0.dev9-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 25078dfeebf2317a3c4dbe0dcc7bdcdb7cba7d55d9ea5a33e1e2ca83f548f9f7
MD5 16b041546d11895c109fa2917db9211f
BLAKE2b-256 c1c4cfaf05be4cc2b6ca61391abc12ea508be2c15adb36ba5b8460913fd1f4eb

See more details on using hashes here.

File details

Details for the file aim-3.10.0.dev9-cp38-cp38-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.10.0.dev9-cp38-cp38-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 ad566dc1c3cb30b8e2c6e998ee37d45a1c9cadd66591d0a76205969b7c28f93d
MD5 ffd63222c3770642db4942d3b79b35af
BLAKE2b-256 182fc2ae9e3b025506b1d2e185a40b02e8c90cc1f6f3d98e197857b6eef153d2

See more details on using hashes here.

File details

Details for the file aim-3.10.0.dev9-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aim-3.10.0.dev9-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a39cfc2a17c497c7d86dc48fee8b4a3ab5a070a7e38999d5fbc1c151c5b9c104
MD5 2549d2aa925c46489dc9f0f3bd16a781
BLAKE2b-256 659900da014a58bbf0ac1396bc6a8adb16481ff358a091c76b86dfaa1c7936a8

See more details on using hashes here.

File details

Details for the file aim-3.10.0.dev9-cp38-cp38-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.10.0.dev9-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 da0856bab36502212fc1f33450b679abae0bc44dfe4793ab31a2394a48993a11
MD5 4fd10db23d6e1577520d2fa4bae798f2
BLAKE2b-256 296571ff2419e6f6d678f930c5baa6e5fb2e3bd8bb8c8daaa5401fbacaf00f60

See more details on using hashes here.

File details

Details for the file aim-3.10.0.dev9-cp37-cp37m-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.10.0.dev9-cp37-cp37m-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 5c1d8490dc7bfc7f6758fefdeec791f04097abdeb06ec2ad955417e0cab4737f
MD5 ecd44fd76473a1b81251691a8348774b
BLAKE2b-256 8a84dfd7604a10f864c9196525dfcef3f82c4435d030356d4199631b5c404541

See more details on using hashes here.

File details

Details for the file aim-3.10.0.dev9-cp37-cp37m-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.10.0.dev9-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 c9da5b31268760d8924b52ef5e6cbc9f252a8cd19f281d64e84e545ecd510ca5
MD5 621fd3ccea131960155f74df131ec2c2
BLAKE2b-256 eea4a7f4c06190007fdb187c1bf9f60c56a1aaacabc62029b95fc96cd74f6027

See more details on using hashes here.

File details

Details for the file aim-3.10.0.dev9-cp36-cp36m-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.10.0.dev9-cp36-cp36m-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 74d253a804ec4304a764987847083429d872a493db1bc6b4e65d114c1de60f89
MD5 e7a8919d1d01982b510f1c80649b024f
BLAKE2b-256 27b4108cfebdc4fa1cccf719fddf2697f78b929699de3311fea60da23b5e2aa4

See more details on using hashes here.

File details

Details for the file aim-3.10.0.dev9-cp36-cp36m-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: aim-3.10.0.dev9-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.0.dev9-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 9eb96aeb6256584cc427d8459c88297d4e3123f5bd40f85f958fe730578d5e1d
MD5 96935d36ebc35587084821f41c1d47b2
BLAKE2b-256 9e8c01dba7fabda4ad2b710447df7645511bf21b53ff2c517480fb4f7d23d582

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