Skip to main content

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

Project description


An easy-to-use & supercharged open-source AI metadata tracker.

Aim logs all your AI metadata, enables a UI to observe/compare them, and an SDK to query them programmatically.

Learn more:
Experiment tracking with Aim
AI agents tracing with Aim


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 StartExamplesDocumentationCommunityBlogCOMING SOON!!


ℹ️ About

Aim is an open-source, self-hosted AI Metadata tracking tool designed to handle 100,000s of tracked metadata sequences.

Aim provides a performant and beautiful UI for exploring and comparing metadata such as training runs or agents executions. 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 🎯


AI systems and agents tracing with Aim

Log Inputs, Outputs and Actions of Executions 🤖 Visualize & Compare Executions Steps via UI 🔍
  • Track all the inputs, outputs of LLMs and tools
  • Capture terminal output of executions
  • Get notified on executions progress and finish
  • Deep dive into single execution steps
  • Compare executions side-by-side
  • View previous exectutions terminal outputs

Experiment tracking with Aim

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

🔮 Aim 4.0

Aim 4.0 is coming soon!!

A major iteration of Aim as the ultimate metadata library to track all your interactions with your models - including experiments, prompts etc.

  • Remote first
  • Scalable
  • Capable of storing and querying 100,000s of metadata sequences
  • Custom UI dashboards and reports

The Aim experiment tracker is not just one-off experiment tracker. It's built on top of the metadata library that Aim is. Now you can also do prompt engineering on Aim. Stay tuned for more...

🎬 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 hyperparams 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-4.0.0a17-cp311-cp311-manylinux_2_24_x86_64.whl (5.8 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.24+ x86-64

aim-4.0.0a17-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-4.0.0a17-cp310-cp310-manylinux_2_24_x86_64.whl (5.7 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.24+ x86-64

aim-4.0.0a17-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.8 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

aim-4.0.0a17-cp39-cp39-manylinux_2_24_x86_64.whl (5.7 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.24+ x86-64

aim-4.0.0a17-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-4.0.0a17-cp38-cp38-manylinux_2_24_x86_64.whl (5.9 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.24+ x86-64

aim-4.0.0a17-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.9 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

aim-4.0.0a17-cp37-cp37m-manylinux_2_24_x86_64.whl (5.6 MB view details)

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

aim-4.0.0a17-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.5 MB view details)

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

File details

Details for the file aim-4.0.0a17-cp311-cp311-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for aim-4.0.0a17-cp311-cp311-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 616dcb1d5c7eb55de87d4fbee08b39750cebe12e795aab8d13ae1bb52638e8d8
MD5 1cae36bfd8dcbde3788ac63f6ebe6ae2
BLAKE2b-256 ea902fe91c5cc55f4820d102456220aad512c20bd051d0056b26e52bc1279363

See more details on using hashes here.

File details

Details for the file aim-4.0.0a17-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for aim-4.0.0a17-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ca287a7ec62ffa4320a86a3b952b517f52b12fc3e0093511529814c21f303f7e
MD5 3e4b46a8e8fdcc4e65aa0187e924515e
BLAKE2b-256 dfffaab1b50793092b8b2fe72f729df040579beb0eca0c8b305f3cd4884551c8

See more details on using hashes here.

File details

Details for the file aim-4.0.0a17-cp310-cp310-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for aim-4.0.0a17-cp310-cp310-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 2782e521115f0b189fd44d11b7abef3006861544e038fee606d424fa0aa5b78d
MD5 0f4ed331e8d4447136c8c4eb61dc4315
BLAKE2b-256 e7f4a824f9098a41bd0420df66b4eecfd3fb7686a6d4e325563f51fffebc85b3

See more details on using hashes here.

File details

Details for the file aim-4.0.0a17-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for aim-4.0.0a17-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 04f4cec92aa051a9dbcba704069f1576650fd06f2d7614e02e0d09d10037f576
MD5 5abde36ead974174fdcd161493c677a1
BLAKE2b-256 59dbd2059dfe06acd3c22d7bee99d11bcfa19b1e5c3402acc18a8ce93d98639b

See more details on using hashes here.

File details

Details for the file aim-4.0.0a17-cp39-cp39-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for aim-4.0.0a17-cp39-cp39-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 3fa8d31504ce0e7a0d49719d2656e2cde4cff523abd0394220b2f89365efaf74
MD5 c6023adfd31950ac35a10a0fee735256
BLAKE2b-256 4d63d104c020991833845adcc3ef42522a67ba348939b2838d13a43bbd06d2b9

See more details on using hashes here.

File details

Details for the file aim-4.0.0a17-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for aim-4.0.0a17-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e8a79f1b8f9ed5ce06b0e1b41116cb5f481002252c5bee130ab1710d5c82c29e
MD5 187b9ef0606eadca06c625a430e79f4f
BLAKE2b-256 712cd6118ad1cbac3cac73e3442674a5b276ea2e20fe4570925c1dfeeea51f01

See more details on using hashes here.

File details

Details for the file aim-4.0.0a17-cp38-cp38-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for aim-4.0.0a17-cp38-cp38-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 d385412fa29a944eab36fab603acb137ac10e2acc20858b70ff2ebe34206b111
MD5 1f118a9f5d3f7d0959e35d2f3183b207
BLAKE2b-256 4fb7a3c9e3780a1de213b478a0467f7378c888857b232441766d30cb54cee984

See more details on using hashes here.

File details

Details for the file aim-4.0.0a17-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for aim-4.0.0a17-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 64be51e1cfae4947a060e514a24ff2943a584d7e386c2a7730cd059824311747
MD5 223cb5e78bda8ed72445b056000eeecb
BLAKE2b-256 52b11f16df076178849df1fcd7c5810e843503859e76ee06fc3e3a40d68f0c92

See more details on using hashes here.

File details

Details for the file aim-4.0.0a17-cp37-cp37m-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for aim-4.0.0a17-cp37-cp37m-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 50d54ecde9c9177322da4e3bbe7aac6441e7beb0609d42d8033e80720e8d6eb7
MD5 4df5aeaaad5ef76051408b698453533b
BLAKE2b-256 8ae4712eac634d6756abf2942e1056aa6c7ce2a7adb832bef4d2b6f3b6ca9447

See more details on using hashes here.

File details

Details for the file aim-4.0.0a17-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for aim-4.0.0a17-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 08ccc9014f1fb7efce50744d64d631ca07adc23f2125bccd3bd8e6d9e36a335b
MD5 b336d5b491342a862c25890e095d65c5
BLAKE2b-256 c2862d73c3dee2da60f5d2ff5c85c2dab91b53ff181c73c3d2ab01febeb75c90

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