Skip to main content

Framework for verifying integrity of pretrained AI models

Project description

Mithridatium

A framework for verifying the integrity of pretrained AI models

Mithridatium is a research-driven project for detecting potential backdoors and data poisoning behavior in pretrained models. The project provides a modular command-line workflow for loading models, running defenses, and generating structured JSON reports.


Project Overview

Modern ML pipelines often reuse pretrained weights from online repositories.
This comes with risks:

  • Backdoors: models behave normally until triggered by a specific pattern.
  • Data poisoning: compromised training data leading to biased or malicious models.

Mithridatium analyzes pretrained models to flag potential compromises using multiple defenses from academic research.


Web Demo

Try the hosted Streamlit demo on Hugging Face Spaces:

https://huggingface.co/spaces/williamphoenix/Mithridatium

The repository also includes a local Streamlit app:

streamlit run app.py

Documentation

The project documentation has been reorganized under docs/.

Quickstart

python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

# Optional extras:
# pip install -e ".[hf]"      # Hugging Face model loading
# pip install -e ".[ui]"      # Streamlit/Gradio UI dependencies
# pip install -e ".[all]"     # Everything for development/demo work

# (A) Train demo models (fast settings)

# Clean model on 5 epochs (Increase epochs for better accuracy, but it will take longer)
python -m scripts.train_resnet18 --dataset clean --epochs 5 --output_path models/resnet18_clean.pth

# Poisoned model on 5 epochs (increase epochs for better accuracy)
python -m scripts.train_resnet18 --dataset poison --train_poison_rate 0.1 --target_class 0 \
  --epochs 5 --output_path models/resnet18_poison.pth

# Invisible-trigger model using a small universal perturbation
python -m scripts.train_resnet18 --dataset invisible --train_poison_rate 0.1 --target_class 0 \
  --uap-norm 2 --uap-xi 0.05 --poison_loss_weight 2.0 \
  --epochs 5 --output_path models/resnet18_invisible.pth

# (B) Run one supported defense (default architecture hint: resnet18)
mithridatium detect --model models/resnet18_poison.pth --defense mmbd --data cifar10 --out reports/mmbd.json

# (B2) Run FreeEagle detection with optional overrides
mithridatium detect --model models/resnet18_poison.pth --defense freeeagle --data cifar10 \
  --freeeagle-anomaly-threshold 2.5 --freeeagle-optimize-steps 100 --out reports/freeeagle.json

# (Optional) Specify architecture (supported: resnet18, resnet34)
mithridatium detect --model models/resnet18_poison.pth --defense mmbd --data cifar10 --arch resnet34 --out reports/mmbd.json

# (C) See report JSON
cat reports/mmbd.json

For more examples, see docs/testing/sample-commands.md.

CLI Help

To see all available options and arguments:

mithridatium detect --help

Defense-specific options are documented in docs/defenses/. Keeping the full CLI help in the command output avoids stale duplicated option lists in this README.

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

mithridatium-0.1.2.tar.gz (43.3 kB view details)

Uploaded Source

Built Distribution

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

mithridatium-0.1.2-py3-none-any.whl (49.7 kB view details)

Uploaded Python 3

File details

Details for the file mithridatium-0.1.2.tar.gz.

File metadata

  • Download URL: mithridatium-0.1.2.tar.gz
  • Upload date:
  • Size: 43.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for mithridatium-0.1.2.tar.gz
Algorithm Hash digest
SHA256 da134e466c89691fd40447c90fce437854283d055da2c9af20d83b200edab2b4
MD5 0bcf1b55f3e2e5b20eab1049520c3ca4
BLAKE2b-256 22062e25cb24781d0b449669c777a9f0e6d48706de1bf32dde81c0335ca55e70

See more details on using hashes here.

File details

Details for the file mithridatium-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: mithridatium-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 49.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for mithridatium-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9df47319733181b1554e86a4f5f384908122b0ee7e8e37ed7efab1c70ca9e321
MD5 53eb7153dac8ca827d82809bfe26b699
BLAKE2b-256 c11a0942b1827f1c7d7b687c747adc02d529608a702141dcf7ee288f08a22d2c

See more details on using hashes here.

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