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

Uploaded Source

Built Distributions

aim-3.10.2-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.2-cp310-cp310-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

aim-3.10.2-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.2-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.2-cp39-cp39-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

aim-3.10.2-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.2-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.2-cp38-cp38-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

aim-3.10.2-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.2-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.2-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.2-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.2-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.2.tar.gz.

File metadata

  • Download URL: aim-3.10.2.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.2.tar.gz
Algorithm Hash digest
SHA256 e45bd100950a433e3b288f0c1f57807685418fff0e14d8f19ce95af07cc372ff
MD5 85015517e1ae1480e6b90d34302449d1
BLAKE2b-256 dfbf1b4160cb1660cd31363b6689d9f673ef19761bab4eb843de6648c3fe7012

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aim-3.10.2-cp310-cp310-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 43bde2919f0f2432a1b577dccf740756866a8c2bff56a03bc6ad5f38c7f4936d
MD5 91c6e3ef0ecdb3c9dcbddde530c9ffac
BLAKE2b-256 637d16549c5805f85872864a62da259e5b24feb65d91b76ad84783630a055a8d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aim-3.10.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0db63334de6b46a1989bd6210c4b46c32035d80d0b720ff06ca5b4c0cf235e69
MD5 8449f46e4ae060ef3fc2012f43ffdb2e
BLAKE2b-256 17f59c94b1bd0fb86970b0c4d00424e7728c0b3778b1697796aaf8213cc4dfce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aim-3.10.2-cp310-cp310-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 bf89f762709577d7750d19465e37056d9dab8420a9fe949886d233611f95ea02
MD5 f8ea0b9781f46af17585b8882da4f57b
BLAKE2b-256 daf8022a85ef2fcd3986ffb4e18d8e494da91da17dd934df00075af21a846ec9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aim-3.10.2-cp39-cp39-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 077c6605041e9ca8247600e8fc789116cdb785407bbb2ede1d0ac589958730a2
MD5 a7e1694d0fce94d8c233317414876f91
BLAKE2b-256 bde770b821a0e31090b4d3fb127957df7382d870a7cee4cb9b761538714d766c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aim-3.10.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 21fe68610fd10791d4a6d3c2a6734dc51f68b7446806cc92b35af97bb96a36cc
MD5 43bf12d5a206294132b73e0fbf0c1bb6
BLAKE2b-256 b67858d6ba5fc38cabdba2ba705be8468174e5c0117403c2fffdd98812681352

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aim-3.10.2-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 fd9a1ecdc1175322f3262a649442fc3392f2948c7980fb5c3cd9ceb7095511e9
MD5 2be457cf42470fd8426b6b84da0a6986
BLAKE2b-256 bf597e9d73bd2bd190edadcd759e661d576503f46bba9dd5c2d75aa8d16f66de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aim-3.10.2-cp38-cp38-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 d312856913aa80d5bf8f7357601c3652da5ceaac3090c6b2e71b3903daa978d5
MD5 46563a2be7a2ce07f7b2bfc93a968d00
BLAKE2b-256 3b871ed4a3bee2c8334b8a3a628967f6189c85ef782e9bddea09aff479adac77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aim-3.10.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ab3da9c1ddee4f6e7c98e749734e27baf0479a147a43a491186324431ab1ac5c
MD5 d085b41bcc49fb96868427a08da882cb
BLAKE2b-256 471c3d5fd71c42e5c69259df6c46e8e0aa4b4d7d5943242d8880d6b0ab154f86

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aim-3.10.2-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 ac7992f4eb9969b120a0efc09fb0bda7ff29645f5aa38313d6d0f314923b7a42
MD5 02d7c7182486a1051e0e944422c988be
BLAKE2b-256 af0990179a057d18c12bfe69841276ffcdd478254523dbe9d337ad3d56102340

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aim-3.10.2-cp37-cp37m-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 e9d7bda566da8fe6d7d191c018761920be7171f9dd0c23af0c3b0063832d0cf0
MD5 5a583c60d49e10a4979f96835b0ce57c
BLAKE2b-256 6eae626d7be8a032f0b46f2f3041247e866f690751b872bea661548808cf0d83

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aim-3.10.2-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 ed08217c50ddd360ef012e99845ad541ef3cbe621e2afc5edfb2325189ee6a80
MD5 ddc980851f3f0c52f45566423c71fd1f
BLAKE2b-256 02af3660877dfbc6b9fedcafd5855b120d88b3ea4dde021fe7a33666778dce3b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aim-3.10.2-cp36-cp36m-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 24a8a572e350b7661d8409ab581395b80f0126d727531858a3ab0ea60c60651f
MD5 c0bc4a2d57f596c50a407dd44a70a486
BLAKE2b-256 db8cca78654de9074996459b0b6a6965d24d663b0d2e0fdf7341bb65cb880c5c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: aim-3.10.2-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.2-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 14d540701c8c3b0ac0958e25bc056fb870ca11636c394c9558d30b6457a54554
MD5 183c0d47876eb04c2869b2e90474f8bf
BLAKE2b-256 5d82c47f674c08a52614e4df16587fe8c6e9880a2b7b86f1ff05b8efad4d2f7a

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