Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

ModelBench

Run safety benchmarks against AI models and view detailed reports showing how well they performed.

Badges

License Python Version from PEP 621 TOML GitHub Actions Workflow Status

Background

This is a MLCommons project, part of the AI Safety Working Group. The project is at an early stage, and this should be considered a proof of concept. Results are not intended to indicate actual levels of AI system safety. You can see sample benchmarks here and read the white paper here.

ModelBench is closely related to ModelGauge. ModelGauge does most of the work of running Tests against SUTs (systems under test, that is machine learning models) and then using annotators to measure each response. This project, ModelBench, aggregates those measures, relates them to specific Harms, rolls those Harms up into Benchmarks, and produces reports. If you are looking to run a benchmark for your model, start by adding a SUT that works with ModelGauge.

Requirements

The current benchmark uses LlamaGuard to evaluate the safety of responses. For now you will need a TogetherAI account to use it. For 0.5, all included models are also run via TogetherAI. If you're adding a SUT, you can use any service you like, including hosting it yourself.

Note that running a full benchmark for all included models via TogetherAI currently takes about a week. Depending on response time, running your own SUT may be faster. We aim to speed things up substantially for 1.0. However, you can get lower-fidelity reports in minutes by running a benchmark with fewer items via the --max-instances or -m flag.

Installation

Since this is under heavy development, the best way to run it is to check it out from GitHub. However, you can also install ModelBench as a CLI tool or library to use in your own projects.

Install ModelBench with Poetry for local development.

  1. Install Poetry using one of these recommended methods. For example:
pipx install poetry
  1. Clone this repository.
git clone https://github.com/mlcommons/modelbench.git
  1. Install ModelBench and dependencies.
cd modelbench
poetry install

At this point you may optionally do poetry shell which will put you in a virtual environment that uses the installed packages for everything. If you do that, you don't have to explicitly say poetry run in the commands below.

Install ModelBench from PyPI

  1. Install ModelBench into your local environment or project the way you normally would. For example:
pip install modelbench

Running Tests

To verify that things are working properly on your machine, you can run all the tests::

poetry run pytest tests

Trying It Out

We encourage interested parties to try it out and give us feedback. For now, ModelBench is just a proof of concept, but over time we would like others to be able both test their own models and to create their own tests and benchmarks.

Running Your First Benchmark

Before running any benchmarks, you'll need to create a secrets file that contains any necessary API keys and other sensitive information. Create a file at config/secrets.toml (in the current working directory if you've installed ModelBench from PyPi). You can use the following as a template.

[together]
api_key = "<your key here>"

To obtain an API key for Together, you can create an account here.

With your keys in place, you are now ready to run your first benchmark! Note: Omit poetry run in all example commands going forward if you've installed ModelBench from PyPi.

poetry run modelbench benchmark -m 10

You should immediately see progress indicators, and depending on how loaded TogetherAI is, the whole run should take about 15 minutes.

Viewing the Scores

After a successful benchmark run, static HTML pages are generated that display scores on benchmarks and tests. These can be viewed by opening web/index.html in a web browser. E.g., firefox web/index.html.

If you would like to dump the raw scores, you can do:

poetry run modelbench grid -m 10 > scoring-grid.csv

To see all raw requests, responses, and annotations, do:

poetry run modelbench responses -m 10 response-output-dir

That will produce a series of CSV files, one per Harm, in the given output directory. Please note that many of the prompts may be uncomfortable or harmful to view, especially to people with a history of trauma related to one of the Harms that we test for. Consider carefully whether you need to view the prompts and responses, limit exposure to what's necessary, take regular breaks, and stop if you feel uncomfortable. For more information on the risks, see this literature review on vicarious trauma.

Managing the Cache

To speed up runs, ModelBench caches calls to both SUTs and annotators. That's normally what a benchmark-runner wants. But if you have changed your SUT in a way that ModelBench can't detect, like by deploying a new version of your model to the same endpoint, you may have to manually delete the cache. Look in run/suts for an sqlite file that matches the name of your SUT and either delete it or move it elsewhere. The cache will be created anew on the next run.

Running the benchmark on your SUT

ModelBench uses the ModelGauge library to discover and manage SUTs. For an example of how you can run a benchmark against a custom SUT, check out this tutorial.

Contributing

ModelBench uses the following tools for development, code quality, and packaging:

  1. Poetry - dependency management and packaging
  2. Black - code formatting and style
  3. MyPy - static typing

To contribute:

  1. Fork the repository
  2. Create your feature branch
  3. Ensure there are tests for your changes and that they pass
  4. Create a pull request

Metadata

Release files for modelbench 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for modelbench 0.6.0
File Size Uploaded Provenance
modelbench-0.6.0.tar.gz 73.3 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for modelbench 0.6.0
File Interpreter ABI Platform
modelbench-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 156.0 kB

Release files / modelbench-0.6.0.tar.gz

Download URL modelbench-0.6.0.tar.gz
Size 73.3 kB
Tags Source
SHA-256 checksum
How to use checksums
d4c1fa7b42e287ff38729b27e1754bfb452e9cc81968e60fc1ac5bf560809a5f
BLAKE2b-256 checksum
How to use checksums
c56ecf5aaca7693075ad249b4a8da1a8471a5f77db5336e5895170ab3246c15b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.12.4 Darwin/23.5.0

Release files / modelbench-0.6.0-py3-none-any.whl

Download URL modelbench-0.6.0-py3-none-any.whl
Size 82.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1527c027e0aa3ec8b0974f7c2109ad4d65da923fb987039c705f30d06d859191
BLAKE2b-256 checksum
How to use checksums
3875a37ffe828789703877fda93f9b4898bcd8dd56cfbef7e4d16917e041ac6c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.12.4 Darwin/23.5.0

Security for modelbench 0.6.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page