Skip to main content

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

Project description

Drop a star to support Aim ⭐ Join Aim discord community

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

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

Discord Server Twitter Follow Medium

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



SEAMLESSLY INTEGRATES WITH:


TRUSTED BY ML TEAMS FROM:


AimStack offers enterprise support that's beyond core Aim. Contact via hello@aimstack.io e-mail.


AboutDemosEcosystemQuick StartExamplesDocumentationCommunityBlog


ℹ️ About

Aim is an open-source, self-hosted ML experiment tracking tool designed to handle 10,000s of training runs.

Aim provides a performant and beautiful UI for exploring and comparing training runs. Additionally, its SDK enables programmatic access to tracked metadata — perfect for automations and Jupyter Notebook analysis.

Aim's mission is to democratize AI dev tools 🎯


Log Metadata Across Your ML Pipeline 💾 Visualize & Compare Metadata via UI 📊
  • ML experiments and any metadata tracking
  • Integration with popular ML frameworks
  • Easy migration from other experiment trackers
  • Metadata visualization via Aim Explorers
  • Grouping and aggregation
  • Querying using Python expressions
Run ML Trainings Effectively ⚡ Organize Your Experiments 🗂️
  • System info and resource usage tracking
  • Real-time alerting on training progress
  • Logging and configurable notifications
  • Detailed run information for easy debugging
  • Centralized dashboard for holistic view
  • Runs grouping with tags and experiments

🎬 Demos

Check out live Aim demos NOW to see it in action.

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

🌍 Ecosystem

Aim is not just an experiment tracker. It's a groundwork for an ecosystem. Check out the two most famous Aim-based tools.

aimlflow Aim-spaCy
aimlflow Aim-spaCy
Exploring MLflow experiments with a powerful UI an Aim-based spaCy experiment tracker

🏁 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

Learn more

Migrate from other tools

Aim has built-in converters to easily migrate logs from other tools. These migrations cover the most common usage scenarios. In case of custom and complex scenarios you can use Aim SDK to implement your own conversion script.

Integrate Aim into an existing project

Aim easily integrates with a wide range of ML frameworks, providing built-in callbacks for most of them.

Query runs programmatically via SDK

Aim Python SDK empowers you to query and access any piece of tracked metadata with ease.

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()
Set up a centralized tracking server

Aim remote tracking server allows running experiments in a multi-host environment and collect tracked data in a centralized location.

See the docs on how to set up the remote server.

Deploy Aim on kubernetes

Read the full documentation on aimstack.readthedocs.io 📖

🆚 Comparisons to familiar tools

TensorBoard vs Aim

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 vs Aim

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.

Aim and MLflow are a perfect match - check out the aimlflow - the tool that enables Aim superpowers on Mlflow.

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 vs Aim

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 milestones

The Aim product roadmap :sparkle:

  • 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:

In progress

  • Aim SDK low-level interface
  • Dashboards – customizable layouts with embedded explorers
  • Ergonomic UI kit
  • Text Explorer
Next-up

Aim UI

  • Runs management
    • Runs explorer – query and visualize runs data(images, audio, distributions, ...) in a central dashboard
  • Explorers
    • Distributions Explorer

SDK and Storage

  • Scalability
    • Smooth UI and SDK experience with over 10.000 runs
  • Runs management
    • CLI commands
      • Reporting - runs summary and run details in a CLI compatible format
      • Manipulations – copy, move, delete runs, params and sequences
  • Cloud storage support – store runs blob(e.g. images) data on the cloud
  • Artifact storage – store files, model checkpoints, and beyond

Integrations

  • ML Frameworks:
    • Shortlist: scikit-learn
  • Resource management tools
    • Shortlist: Kubeflow, Slurm
  • Workflow orchestration tools
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)
  • Fairseq integration (Start: Mar 27 2022, Shipped: Mar 29 2022)
  • LightGBM integration (Start: Apr 14 2022, Shipped: May 17 2022)
  • CatBoost integration (Start: Apr 20 2022, Shipped: May 17 2022)
  • Run execution details(display stdout/stderr logs) (Start: Apr 25 2022, Shipped: May 17 2022)
  • Long sequences(up to 5M of steps) support (Start: Apr 25 2022, Shipped: Jun 22 2022)
  • Figures Explorer (Start: Mar 1 2022, Shipped: Aug 21 2022)
  • Notify on stuck runs (Start: Jul 22 2022, Shipped: Aug 21 2022)
  • Integration with KerasTuner (Start: Aug 10 2022, Shipped: Aug 21 2022)
  • Integration with WandB (Start: Aug 15 2022, Shipped: Aug 21 2022)
  • Stable remote tracking server (Start: Jun 15 2022, Shipped: Aug 21 2022)
  • Integration with fast.ai (Start: Aug 22 2022, Shipped: Oct 6 2022)
  • Integration with MXNet (Start: Sep 20 2022, Shipped: Oct 6 2022)
  • Project overview page (Start: Sep 1 2022, Shipped: Oct 6 2022)
  • Remote tracking server scaling (Start: Sep 11 2022, Shipped: Nov 26 2022)
  • Integration with PaddlePaddle (Start: Oct 2 2022, Shipped: Nov 26 2022)
  • Integration with Optuna (Start: Oct 2 2022, Shipped: Nov 26 2022)
  • Audios Explorer (Start: Oct 30 2022, Shipped: Nov 26 2022)
  • Experiment page (Start: Nov 9 2022, Shipped: Nov 26 2022)
  • HuggingFace datasets (Start: Dec 29 2022, Feb 3 2023)

👥 Community

Aim README badge

Add Aim badge to your README, if you've enjoyed using Aim in your work:

Aim

[![Aim](https://img.shields.io/badge/powered%20by-Aim-%231473E6)](https://github.com/aimhubio/aim)

Cite Aim in your papers

In case you've found Aim helpful in your research journey, we'd be thrilled if you could acknowledge Aim's contribution:

@software{Arakelyan_Aim_2020,
  author = {Arakelyan, Gor and Soghomonyan, Gevorg and {The Aim team}},
  doi = {10.5281/zenodo.6536395},
  license = {Apache-2.0},
  month = {6},
  title = {{Aim}},
  url = {https://github.com/aimhubio/aim},
  version = {3.9.3},
  year = {2020}
}

Contributing to Aim

Considering contibuting to Aim? To get started, please take a moment to read the CONTRIBUTING.md guide.

Join Aim contributors by submitting your first pull request. Happy coding! 😊

Made with contrib.rocks.

More questions?

  1. Read the docs
  2. Open a feature request or report a bug
  3. Join Discord community server

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 Distributions

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

Built Distributions

aim-3.26.0.dev20241025-cp311-cp311-manylinux_2_24_x86_64.whl (5.9 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.24+ x86-64

aim-3.26.0.dev20241025-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

aim-3.26.0.dev20241025-cp310-cp310-manylinux_2_24_x86_64.whl (5.8 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.24+ x86-64

aim-3.26.0.dev20241025-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.9 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

aim-3.26.0.dev20241025-cp39-cp39-manylinux_2_24_x86_64.whl (5.8 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.24+ x86-64

aim-3.26.0.dev20241025-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.9 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

aim-3.26.0.dev20241025-cp38-cp38-manylinux_2_24_x86_64.whl (6.1 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.24+ x86-64

aim-3.26.0.dev20241025-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.0 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

aim-3.26.0.dev20241025-cp37-cp37m-manylinux_2_24_x86_64.whl (5.7 MB view details)

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

aim-3.26.0.dev20241025-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.6 MB view details)

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

File details

Details for the file aim-3.26.0.dev20241025-cp311-cp311-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.26.0.dev20241025-cp311-cp311-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 1628cf775183a806243a6136e3a8d22a2a9658395641c26fdd48f7e1954d0a7c
MD5 5e2be7184277ddf02460fb4d45fbac7f
BLAKE2b-256 ebbc94b20b9e04e1a214de21d94193262d69cc8e50e8d15668a39c03ee23742d

See more details on using hashes here.

File details

Details for the file aim-3.26.0.dev20241025-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.26.0.dev20241025-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 562379bf18ac086d1145c329ae15c44fffce7d1ca8e4e4f1048fbf94ae082287
MD5 bfebb91946b867009e55ea1d26a5cdfd
BLAKE2b-256 68f3dec02dc2eea7d687ee7a38ff1a38850dae8a83e12fb934443b24d24a3d16

See more details on using hashes here.

File details

Details for the file aim-3.26.0.dev20241025-cp310-cp310-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.26.0.dev20241025-cp310-cp310-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 e363c3621483163b3d13f91508e4cd3b06604ed9a6f6e0587e05b0d1f262d614
MD5 5e84946d2080d412087cf9295ee8b828
BLAKE2b-256 959d6e32f26aa10d3a843d41666339fc89be6d091512a8238eebaa1ff661cdde

See more details on using hashes here.

File details

Details for the file aim-3.26.0.dev20241025-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.26.0.dev20241025-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 230426599fdb59387d62a88057f795c3b7ac8a4ff5fe6abf7eac143be78974d0
MD5 76dac2b14b815adc4397c7dabf27ded1
BLAKE2b-256 0c4241e6b5e613f792e64fd9aad0e54e5b7ec85d67aba46fced4697690a23f4b

See more details on using hashes here.

File details

Details for the file aim-3.26.0.dev20241025-cp39-cp39-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.26.0.dev20241025-cp39-cp39-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 c642ca4d8e60cf55a67c5d00199c9f0dcb5f6ee0c2132ff0b67ef3ce69b8f4f6
MD5 68a8fd70bbb5920537b2ddb44d7d1831
BLAKE2b-256 843052f7411938b1f97d596108a12a104fd0e8f735e2bcb7eec4f2b191cbfd1c

See more details on using hashes here.

File details

Details for the file aim-3.26.0.dev20241025-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.26.0.dev20241025-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 debdcfad7cb26b15691ce59bad10a944ac481785e69d13b223c18c82af642802
MD5 24adac7ea4f529be64c9211638a1dadb
BLAKE2b-256 023242914196ceb19e4488302af6265032600434ec49ea9fa6c2b697321ab84f

See more details on using hashes here.

File details

Details for the file aim-3.26.0.dev20241025-cp38-cp38-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.26.0.dev20241025-cp38-cp38-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 e9af32d7a2cbbde1df4c6cbc7b8ccc7c8cb5c17f72233b4f326d83c6582f80f4
MD5 c7f58fe78db1ded328818f2f3c76cd6c
BLAKE2b-256 dbd568eb6c9dc78037a97f76184c121355487e1487b0d3518e36bb72a36ec363

See more details on using hashes here.

File details

Details for the file aim-3.26.0.dev20241025-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.26.0.dev20241025-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4c93710786ceab27950bfe9e480815227021b5569920160b04fdf24832e6a322
MD5 6fa73b9bc91c70950799c71b25bba19d
BLAKE2b-256 f3a3021dd09f230a8fdb3e0b5927e85ed37af4841cae8d40ff9aa06c24fc1ddd

See more details on using hashes here.

File details

Details for the file aim-3.26.0.dev20241025-cp37-cp37m-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.26.0.dev20241025-cp37-cp37m-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 0e6199e2b7fef809a5b4f5d52ab3ab9270f8581ef4ef53763cd611e8ce428f87
MD5 d4bc3a6bc550215c9efdfddc7a94fc48
BLAKE2b-256 4b1bd750b6c9e42f2f3015b018e0fda408deb256d442ed49b28c2ed855fae961

See more details on using hashes here.

File details

Details for the file aim-3.26.0.dev20241025-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for aim-3.26.0.dev20241025-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dd327796167dae196e9c3fc14a4975f07feff28891f4f9e379f8f15e6bcb2446
MD5 c56a54f20f51b38d0c16b3afc04507e1
BLAKE2b-256 e385b9e6d46c453b57d3e2a7717a2ce1af5cc011dfb582a80609d88bc9849006

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