<p align="center">
<br>
<img width=50% src="docs/docs/_static/azimuth_logo_universal_color.png">
<br>
<br>
<a href="https://github.com/ServiceNow/azimuth/actions/workflows/pythonci.yml">
<img alt="Tests" src="https://github.com/ServiceNow/azimuth/actions/workflows/pythonci.yml/badge.svg"/></a>
<a href="https://servicenow.github.io/azimuth">
<img alt="Documentation" src="https://github.com/ServiceNow/azimuth/actions/workflows/docs_cd.yml/badge.svg"/></a>
<a href="https://join.slack.com/t/azimuth-org/shared_invite/zt-1i9eu48n9-7NnCXHw5VzUs~gs20xHxyg">
<img alt="Slack" src="https://img.shields.io/badge/slack-chat-blue.svg?logo=slack"/></a>
<a href="./LICENSE">
<img alt="Licence" src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"/></a>
<a href="https://doi.org/10.5281/zenodo.6511558">
<img src="https://zenodo.org/badge/DOI/10.5281/zenodo.6511558.svg" alt="DOI"></a>
<a href="https://arxiv.org/abs/2212.08216">
<img src="https://img.shields.io/badge/arXiv-2212.08216-blue.svg" alt="arXiv"></a>
<a href="https://azimuth-demo.net/">
<img alt="Azimuth" src="https://shields.io/badge/Azimuth-demo-blue?logo=data:image/png;base64,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"/></a>
<br>
<br>
Azimuth, an open-source dataset and error analysis tool for text classification, with love from ServiceNow.
</p>
<p align="center">
<img width=60% src="docs/docs/_static/images/exploration-space/prediction-overview.png">
</p>
Overview
Azimuth is an open source application that helps AI practitioners and data scientists better
understand their dataset and model predictions by performing thorough dataset and error
analyses. The application leverages different tools, including robustness tests, semantic
similarity analysis and saliency maps, unified by concepts such as smart tags and proposed
actions. It currently only supports text classification use cases.
Published Paper at EMNLP
Our paper was accepted as a system demo at EMNLP 2022. It is available here.
Documentation
Our documentation contains all the instructions and
references to use Azimuth.
- Getting Started
contains all the instructions to install and launch the app.
- Key Concepts explains the different
concepts and analyses that are provided in Azimuth to perform dataset and error analysis.
- User Guide goes screen per screen to
explain the different interactions and visualizations available.
- Reference details the config file and the
different contracts which allow configuring Azimuth with different datasets and pipelines.
- Development guides on how to develop and
contribute to the repo.
YouTube Playlist
<p align="center">
<a href="https://www.youtube.com/playlist?list=PLdq4WQvLzJCnJmInRYBSfeCWLiHbX55V8">
<img src="docs/docs/_static/images/youtube.png" width="560" height="315" />
</a>
</p>
Run Our Demo
After installing the requirements, as explained
in Installation, run the
following command to run the demo. More details
in Learn Basics.
pip install gdown
make download_demo
make CFG_PATH=/config/development/clinc/conf.json launch
Once the startup tasks are completed, you will be able to access Azimuth at http://localhost:8080.
To learn more about Azimuth's features, refer to
our Key Concepts and
our User Guide.
To use your own dataset and models, please refer to
Run on Your Use Case.
How to Contribute?
Refer to our CONTRIBUTING.md.
Code Documentation
At different places in the code, you'll find README files explaining further how the back end works. Don't hesitate to
add other README files in appropriate places, and don't forget to edit them if you change these components.
Repo Structure
├── azimuth # Back End
│ ├── modules
│ │ └── Where core capabilities are implemented
│ ├── plots
│ │ └── Plotting functions
│ ├── routers
│ │ └── FastAPI routers
│ ├── types
│ │ └── Specific pydantic types that this application is based on
│ ├── utils
│ │ └── Extra utilities
├── azimuth_shr
│ └── Custom code that is shareable.
├── config
│ └── Config files for different data/models
├── docs
│ └── User documentation
├── tests
│ └── Unit/integration tests
├── webapp
│ └── Front End
├── docker-compose.yml # Where the config and images are specified.
├── docker-compose-gpu.yml # Extension to use Azimuth with gpus.
└── runner.py # Application entrypoint.
Contact
To contact us, join our slack or send us an email!
License
The package is licensed by ServiceNow, Inc. under the Apache 2.0 license. See LICENSE for more details.
Vulnerability Reporting
Please notify psirt-oss@servicenow.com regarding any vulnerability reports in addition to following current reporting procedure.