Skip to main content

Library of common types, protocols (a.k.a. structural subtypes), and utilities to support AI test and evaluation

Project description

MAITE (Modular AI Trustworthy Engineering)

Python version support Code Coverage Type-Completeness Score Tested with Hypothesis

A toolbox of common types, protocols, and tooling to support AI test and evaluation workflows.

Check out the documentation and examples for more information.

MAITE is a library of common types, protocols (a.k.a. structural subtypes), and utilities for the test and evaluation (T&E) of supervised machine learning models. It is being developed under the Joint AI T&E Infrastructure Capability (JATIC) program. Its goal is to streamline the development of JATIC Python projects by ensuring seamless, synergistic workflows when working with MAITE-conforming Python packages for different T&E tasks. To this end, MAITE seeks to eliminate redundancies that would otherwise be shared across – and burden – separate efforts in machine learning test and evaluation. MAITE is designed to be a low-dependency, frequently-improved Python package that is installed by JATIC projects. The following is a brief overview of the current state of its submodules.

Installation

From Python Package Index (PyPI)

To install from the Python Package Index (PyPI), run:

pip install maite

:information_source: You can install MAITE for a given release tag, e.g. v0.6.1, by running:

$ pip install git+ssh://git@github.com/mit-ll-ai-technology/maite.git@v0.6.1

From Source

To clone this repository and install from source, run:

$ git clone https://github.com/mit-ll-ai-technology/maite
$ cd maite
$ pip install .

maite.protocols

Common types for machine learning test and evaluation

The protocols subpackage defines common types – such as an inference-mode object detector – to be leveraged across JATIC projects. These are specifically designed to be Python protocol classes, which support structural subtyping. As a result, developers and users can satisfy MAITE-typed interfaces without having to explicitly subclass. This ability helps to promote common interfaces across JATIC projects without introducing explicit inter-dependencies between them.

Pyright Static Type Checking in Code

>>> def f(x: str):
...     return 1 + x
>>> pyright_analyze(f)
{'version': '1.1.281',
  'time': '1669686515154',
  'generalDiagnostics': [{'file': 'source.py',
    'severity': 'error',
    'message': 'Operator "+" not supported for types "Literal[1]" and "str"\n\xa0\xa0Operator "+" not supported for types "Literal[1]" and "str"',
    'range': {'start': {'line': 1, 'character': 11},
    'end': {'line': 1, 'character': 16}},
    'rule': 'reportGeneralTypeIssues'}],
  'summary': {'filesAnalyzed': 20,
  'errorCount': 1,
  'warningCount': 0,
  'informationCount': 0,
  'timeInSec': 0.319}}

maite.utils

General utilities

  • Functions for validating the types and values of user arguments, with explicit and consistent user-error messages, that raise MAITE-customized exceptions.
  • Specialized PyTorch utilities to help facilitate safe and ergonomic code patterns for manipulating stateful torch objects
  • Other quality assurance and convenience functions that may be widely useful across projects

Disclaimer

DISTRIBUTION STATEMENT A. Approved for public release. Distribution is unlimited.

© 2024 MASSACHUSETTS INSTITUTE OF TECHNOLOGY

  • Subject to FAR 52.227-11 – Patent Rights – Ownership by the Contractor (May 2014)
  • SPDX-License-Identifier: MIT

This material is based upon work supported by the Under Secretary of Defense for Research and Engineering under Air Force Contract No. FA8702-15-D-0001. Any opinions, findings, conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the Under Secretary of Defense for Research and Engineering.

The software/firmware is provided to you on an As-Is basis

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

maite-0.9.0.tar.gz (76.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

maite-0.9.0-py3-none-any.whl (69.3 kB view details)

Uploaded Python 3

File details

Details for the file maite-0.9.0.tar.gz.

File metadata

  • Download URL: maite-0.9.0.tar.gz
  • Upload date:
  • Size: 76.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for maite-0.9.0.tar.gz
Algorithm Hash digest
SHA256 002cd05302d55b1e3be6542b01fce671e8a85be700377b1f28bb703ef9995969
MD5 5b4a952daacd4966423222c7c9c5cc01
BLAKE2b-256 fa73c0a4b3168730f98440f977c44955a995816aa7c2cbdaa03018d136e31475

See more details on using hashes here.

Provenance

The following attestation bundles were made for maite-0.9.0.tar.gz:

Publisher: pypi_publish.yml on mit-ll-ai-technology/maite

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file maite-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: maite-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 69.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for maite-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 30a4b33eb6d43ebb99855eacd25ae9f5ed593bfc7a1863285c0e04cf9b5f3ae6
MD5 2d72bb655fbe48e397d066eebf3740b3
BLAKE2b-256 8c82ff75d9b7911a9edccc0d17a537a90d51a5abd4ee9a89c6cded424efabf26

See more details on using hashes here.

Provenance

The following attestation bundles were made for maite-0.9.0-py3-none-any.whl:

Publisher: pypi_publish.yml on mit-ll-ai-technology/maite

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page