README 未说明
aim
aimhubioApache-2.0活跃维护开源实验追踪工具,能记录、可视化和对比机器学习训练中的指标、超参数与元数据,帮团队理清大量实验。
Aim 💫 — An easy-to-use & supercharged open-source experiment tracker.
开源自托管 ML 实验追踪工具,能管理上万次训练运行并可视化对比
开源实验追踪工具,能记录、可视化和对比机器学习训练中的指标、超参数与元数据,帮团队理清大量实验。
核心能力
- 记录训练运行与任意 AI 元数据
- 用 UI 探索器可视化并对比多次运行
- 用 Python 表达式查询元数据
- SDK 支持编程访问,便于自动化与 Notebook 分析
- 跟踪系统信息与资源使用,支持训练进度告警
容易踩的坑
- v3.29.1🚀 v3.29.1 - Improved query performance by reading from single unified database and constant data indexing, fixes in min/max calculation in UI and jupiter/colab integration最新正式版2025-05-08 · 2025-05-08 10:24 UTC
What's Changed
- [feat] Constant indexing of in-progress Runs by @alberttorosyan in https://github.com/aimhubio/aim/pull/3310
- [fix] Resolve issue of min/max calculation for single point metrics by @mihran113 in https://github.com/aimhubio/aim/pull/3315
- [fix] Use polling observer to make sure new file modifications are detected by @alberttorosyan in https://github.com/aimhubio/aim/pull/3316
- [feat] Mark stalled runs as finished by @alberttorosyan in https://github.com/aimhubio/aim/pull/3314
- [fix] Aim web ui integration in jupyter/colab by @larissapoghosyan in https://github.com/aimhubio/aim/pull/3319
- [fix] Fallback to union db if index is missing by @alberttorosyan in https://github.com/aimhubio/aim/pull/3317
New Contributors
- @larissapoghosyan made their first contribution in https://github.com/aimhubio/aim/pull/3319
Full Changelog: https://github.com/aimhubio/aim/compare/v3.28.0...v3.29.1
- v3.28.0🚀 v3.28.0 - Improved performance by removing redundant checks and bypassing runs known to yield false results, new callback for hugging face distributed runs, fixes in Tag duplicates handling, remote tracking exception handling and more, code style improvements.2025-03-21 · 2025-03-21 18:01 UTC
查看更新说明
What's Changed
- [fix] Bad typing for S3ArtifactStorage_clientconfig args by @sbatchelder in https://github.com/aimhubio/aim/pull/3276
- [docs] pages/bookmarks intended section links by @guspan-tanadi in https://github.com/aimhubio/aim/pull/3274
- [feat] Add
py.typedmarker to allow users to benefit from existing type annotations by @bluenote10 in https://github.com/aimhubio/aim/pull/3281 - [fix] Decrease client resources keep-alive time by @mihran113 in https://github.com/aimhubio/aim/pull/3279
- [fix] Resolve issues on data points connection on epoch alignment by @mihran113 in https://github.com/aimhubio/aim/pull/3283
- [fix] Correct indentation on query proxy object return statement by @alberttorosyan in https://github.com/aimhubio/aim/pull/3287
- [feat] Skip metrics check when run is known to yield false result by @alberttorosyan in https://github.com/aimhubio/aim/pull/3288
- [chore] Bump ruff version from 0.3.3 to 0.9.2 and fix some invalid/dead noqas by @bluenote10 in https://github.com/aimhubio/aim/pull/3282
- [fix] Move performance tests to local mac mini by @mihran113 in https://github.com/aimhubio/aim/pull/3290
- [fix] Resolve session refresh issues when db file is replaced by @mihran113 in https://github.com/aimhubio/aim/pull/3294
- [fix] Resolve issue with adding duplicate tags by @mihran113 in https://github.com/aimhubio/aim/pull/3296
- [fix] Message stream parsing (#3297) by @qzed in https://github.com/aimhubio/aim/pull/3298
- [fix] Handle empty queries by @alberttorosyan in https://github.com/aimhubio/aim/pull/3299
- [chore] Remove legacy (
aim 2.x.x) sdk by @mihran113 in https://github.com/aimhubio/aim/pull/3305 - [fix] Improve error messages for remote tracking by @mihran113 in https://github.com/aimhubio/aim/pull/3303
- [feat] Add AimCallback for distributed runs using the hugging face API by @VassilisVassiliadis in https://github.com/aimhubio/aim/pull/3284
- [fix] Increase session pool size for sqlite engine by @mihran113 in https://github.com/aimhubio/aim/pull/3306
- [feat] Remove metric version check to improve metric retrieval performance by @mihran113 in https://github.com/aimhubio/aim/pull/3307
- [fix] Improve RT exception handling by @mihran113 in https://github.com/aimhubio/aim/pull/3309
- [feat] Move indexing thread to
aim upmain process by @alberttorosyan in https://github.com/aimhubio/aim/pull/3311
New Contributors
- @bluenote10 made their first contribution in https://github.com/aimhubio/aim/pull/3281
- @qzed made their first contribution in https://github.com/aimhubio/aim/pull/3298
Full Changelog: https://github.com/aimhubio/aim/compare/v3.27.0...v3.28.0
What's Changed
- [fix] Bad typing for S3ArtifactStorage_clientconfig args by @sbatchelder in https://github.com/aimhubio/aim/pull/3276
- [docs] pages/bookmarks intended section links by @guspan-tanadi in https://github.com/aimhubio/aim/pull/3274
- [feat] Add
py.typedmarker to allow users to benefit from existing type annotations by @bluenote10 in https://github.com/aimhubio/aim/pull/3281 - [fix] Decrease client resources keep-alive time by @mihran113 in https://github.com/aimhubio/aim/pull/3279
- [fix] Resolve issues on data points connection on epoch alignment by @mihran113 in https://github.com/aimhubio/aim/pull/3283
- [fix] Correct indentation on query proxy object return statement by @alberttorosyan in https://github.com/aimhubio/aim/pull/3287
- [feat] Skip metrics check when run is known to yield false result by @alberttorosyan in https://github.com/aimhubio/aim/pull/3288
- chore: bump ruff version from 0.3.3 to 0.9.2 and fix some invalid/dead noqas by @bluenote10 in https://github.com/aimhubio/aim/pull/3282
- [fix] Move performance tests to local mac mini by @mihran113 in https://github.com/aimhubio/aim/pull/3290
- [fix] Resolve session refresh issues when db file is replaced by @mihran113 in https://github.com/aimhubio/aim/pull/3294
- [fix] Resolve issue with adding duplicate
- v3.27.0🚀 v3.27.0 - Enhancements for PytorchLightning logger and S3ArtifactsStorage, fixes for RunStatusReporter, metric aggregations and tag creation from parallel runs2024-12-18 · 2024-12-18 16:58 UTC
查看更新说明
What's Changed
- [fix] Copy the keys of RunStatusReporter.timed_tasks before iterating them by @VassilisVassiliadis in https://github.com/aimhubio/aim/pull/3256
- [fix] Resolve issues with outdated packages by @mihran113 in https://github.com/aimhubio/aim/pull/3254
- [fix] Resolve tag addition issue from parallel runs by @mihran113 in https://github.com/aimhubio/aim/pull/3247
- [fix] Handle StopIteration error in iter_sequence_info_by_type method by @alberttorosyan in https://github.com/aimhubio/aim/pull/3265
- [feat] S3ArtifactStorage custom boto3 client parameters by @sbatchelder in https://github.com/aimhubio/aim/pull/3258
- [feat] Return
Noneforrun.artifact_uriif not set by @sbatchelder in https://github.com/aimhubio/aim/pull/3268 - [feat] PytorchLightning AimLogger custom contexts by @sbatchelder in https://github.com/aimhubio/aim/pull/3269
- [fix] Resolve issues with PR checks by @mihran113 in https://github.com/aimhubio/aim/pull/3270
New Contributors
- @VassilisVassiliadis made their first contribution in https://github.com/aimhubio/aim/pull/3256
- @sbatchelder made their first contribution in https://github.com/aimhubio/aim/pull/3258
Full Changelog: https://github.com/aimhubio/aim/compare/v3.26.1...v3.27.0
- v3.26.1🚀 v3.26.1 - Improved performance of metric queries, basic troubleshooting utilities2024-12-03 · 2024-12-03 07:02 UTC
查看更新说明
What's Changed
- [fix] Resolve issues with unit test failures by @mihran113 in https://github.com/aimhubio/aim/pull/3245
- [feat] Add basic stats dump script for Aim repositories by @alberttorosyan in https://github.com/aimhubio/aim/pull/3250
- [feat] Store Run sequence metadata by separate types by @alberttorosyan in https://github.com/aimhubio/aim/pull/3260
Full Changelog: https://github.com/aimhubio/aim/compare/v3.25.1...v3.26.1
- v3.25.1🚀 v3.25.1 - Fixes in empty index.db handling and python 3.12 builds2024-11-06 · 2024-11-06 12:12 UTC
查看更新说明
What's Changed
- [fix] Resolve issue with corruption marking on empty index by @mihran113 in https://github.com/aimhubio/aim/pull/3235
- [fix] Resolve issues with python 3.12 builds by @mihran113 in https://github.com/aimhubio/aim/pull/3244
Full Changelog: https://github.com/aimhubio/aim/compare/v3.25.0...v3.25.1
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
ℹ️ 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.
🎬 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 |
|---|---|
![]() | ![]() |
| 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
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.
Aim easily integrates with a wide range of ML frameworks, providing built-in callbacks for most of them.
- Integration with Pytorch Ignite
- Integration with Pytorch Lightning
- Integration with Hugging Face
- Integration with Keras & tf.Keras
- Integration with Keras Tuner
- Integration with XGboost
- Integration with CatBoost
- Integration with LightGBM
- Integration with fastai
- Integration with MXNet
- Integration with Optuna
- Integration with PaddlePaddle
- Integration with Stable-Baselines3
- Integration with Acme
- Integration with Prophet
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()
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.
- The official Aim docker image: https://hub.docker.com/r/aimstack/aim
- A guide on how to deploy Aim on kubernetes: https://aimstack.readthedocs.io/en/latest/using/k8s_deployment.html
Read the full documentation on aimstack.readthedocs.io 📖
🆚 Comparisons to familiar tools
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 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.
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
Backlogcontains 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
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
- CLI commands
- 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
- 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:
[](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.

