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.

maite.testing

Support for rigorous software testing

The testing subpackage is designed to help developers create a rigorous automated test suite for their project. These include:

  • Pytest fixtures for initializing test functions with common models, datasets, and other inputs that are useful for testing machine learning code.
  • Functions running static type checking tests using pyright in a pytest test suite, including scans of both source code and example documentation code blocks.
  • Hypothesis strategies for driving property-based tests of interfaces that leverage MAITE protocols.

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.8.0.tar.gz (57.1 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.8.0-py3-none-any.whl (76.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for maite-0.8.0.tar.gz
Algorithm Hash digest
SHA256 2c4c4ed655b14e63ced5c6e51d7419578158eabf8c27cb3b4525b1bc38fd8c87
MD5 a4443e7f6a0ca4ab17f1ec09322c9e11
BLAKE2b-256 b363ef133fad460ed0a2e5948962382c4d573d416e0b33f49cdc9e8221e2cec8

See more details on using hashes here.

Provenance

The following attestation bundles were made for maite-0.8.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.8.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for maite-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a863f0d7a02fca4341146a8d5b3d76e22eb983b0fcc5aa11e60e971e710dea44
MD5 32ac39a3afcf3f40ad23e94b8fe612f7
BLAKE2b-256 b919e590eb7b6b286cad18819fe104bbb4b7cc7b9f2a29d77f28e720a8e09673

See more details on using hashes here.

Provenance

The following attestation bundles were made for maite-0.8.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