Installation | Basic usage | Overview | Benchmark | Demo application | Documentation
LM-Polygraph provides a battery of state-of-the-art of uncertainty estimation (UE) methods for LMs in text generation tasks. High uncertainty can indicate the presence of hallucinations and knowing a score that estimates uncertinaty can help to make applications of LLMs safer.
The framework also introduces an extendable benchmark for consistent evaluation of UE techniques by researchers and a demo web application that enriches the standard chat dialog with confidence scores, empowering end-users to discern unreliable responses.
git clone https://github.com/IINemo/lm-polygraph.git && cd lm-polygraph && pip install .
- Initialize the model (encoder-decoder or decoder-only) from HuggingFace or a local file. For example,
bigscience/bloomz-3b
from lm_polygraph.utils.model import WhiteboxModel
model = WhiteboxModel.from_pretrained(
"bigscience/bloomz-3b",
device="cuda:0",
)
- Specify UE method
from lm_polygraph.estimators import *
ue_method = MeanPointwiseMutualInformation()
- Get predictions and their uncertainty scores
from lm_polygraph.utils.manager import estimate_uncertainty
input_text = "Who is George Bush?"
estimate_uncertainty(model, ue_method, input_text=input_text)
- example.ipynb: simple examples of scoring individual queries;
- claim_level_example.ipynb: an example of scoring individual claims;
- qa_example.ipynb: an example of scoring the
bigscience/bloomz-3b
model on theTriviaQA
dataset; - mt_example.ipynb: an of scoring the
facebook/wmt19-en-de
model on theWMT14 En-De
dataset; - ats_example.ipynb: an example of scoring the
facebook/bart-large-cnn
model on theXSUM
summarization dataset; - colab: demo web application in Colab (
bloomz-560m
,gpt-3.5-turbo
, andgpt-4
fit the default memory limit; other models require Colab-pro).
Uncertainty Estimation Method | Type | Category | Compute | Memory | Need Training Data? | Level |
---|---|---|---|---|---|---|
Maximum sequence probability | White-box | Information-based | Low | Low | No | sequence/claim |
Perplexity (Fomicheva et al., 2020a) | White-box | Information-based | Low | Low | No | sequence/claim |
Mean/max token entropy (Fomicheva et al., 2020a) | White-box | Information-based | Low | Low | No | sequence/claim |
Monte Carlo sequence entropy (Kuhn et al., 2023) | White-box | Information-based | High | Low | No | sequence |
Pointwise mutual information (PMI) (Takayama and Arase, 2019) | White-box | Information-based | Medium | Low | No | sequence/claim |
Conditional PMI (van der Poel et al., 2022) | White-box | Information-based | Medium | Medium | No | sequence |
Rényi divergence (Darrin et al., 2023) | White-box | Information-based | Low | Low | No | sequence |
Fisher-Rao distance (Darrin et al., 2023) | White-box | Information-based | Low | Low | No | sequence |
Semantic entropy (Kuhn et al., 2023) | White-box | Meaning diversity | High | Low | No | sequence |
Claim-Conditioned Probability (Fadeeva et al., 2024) | White-box | Meaning diversity | Low | Low | No | sequence/claim |
TokenSAR (Duan et al., 2023) | White-box | Meaning diversity | High | Low | No | sequence |
SentenceSAR (Duan et al., 2023) | White-box | Meaning diversity | High | Low | No | sequence |
SAR (Duan et al., 2023) | White-box | Meaning diversity | High | Low | No | sequence |
Sentence-level ensemble-based measures (Malinin and Gales, 2020) | White-box | Ensembling | High | High | Yes | sequence |
Token-level ensemble-based measures (Malinin and Gales, 2020) | White-box | Ensembling | High | High | Yes | sequence |
Mahalanobis distance (MD) (Lee et al., 2018) | White-box | Density-based | Low | Low | Yes | sequence |
Robust density estimation (RDE) (Yoo et al., 2022) | White-box | Density-based | Low | Low | Yes | sequence |
Relative Mahalanobis distance (RMD) (Ren et al., 2023) | White-box | Density-based | Low | Low | Yes | sequence |
Hybrid Uncertainty Quantification (HUQ) (Vazhentsev et al., 2023a) | White-box | Density-based | Low | Low | Yes | sequence |
p(True) (Kadavath et al., 2022) | White-box | Reflexive | Medium | Low | No | sequence/claim |
Number of semantic sets (NumSets) (Lin et al., 2023) | Black-box | Meaning Diversity | High | Low | No | sequence |
Sum of eigenvalues of the graph Laplacian (EigV) (Lin et al., 2023) | Black-box | Meaning Diversity | High | Low | No | sequence |
Degree matrix (Deg) (Lin et al., 2023) | Black-box | Meaning Diversity | High | Low | No | sequence |
Eccentricity (Ecc) (Lin et al., 2023) | Black-box | Meaning Diversity | High | Low | No | sequence |
Lexical similarity (LexSim) (Fomicheva et al., 2020a) | Black-box | Meaning Diversity | High | Low | No | sequence |
To evaluate the performance of uncertainty estimation methods consider a quick example:
HYDRA_CONFIG=../examples/configs/polygraph_eval_coqa.yaml python ./scripts/polygraph_eval \
dataset="coqa" \
model.path="databricks/dolly-v2-3b" \
save_path="./workdir/output" \
"seed=[1,2,3,4,5]"
Use visualization_tables.ipynb
or result_tables.ipynb
to generate the summarizing tables for an experiment.
A detailed description of the benchmark is in the documentation.
![gui7](https://private-user-images.githubusercontent.com/21058413/261061587-51aa12f7-f996-4257-b1bc-afbec6db4da7.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjEyMTU1MjIsIm5iZiI6MTcyMTIxNTIyMiwicGF0aCI6Ii8yMTA1ODQxMy8yNjEwNjE1ODctNTFhYTEyZjctZjk5Ni00MjU3LWIxYmMtYWZiZWM2ZGI0ZGE3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzE3VDExMjAyMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ1ZjIzZjQ4NDEzOGY2MjE0MmRhMWNiNmUxYTJlZmQ4YzFhZGYxOTExYzU5NjcxZDM4YTIyMjhhM2MwNzllN2ImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.exXXAw_VbEjXhxOXRWqKDLeAIQuoAE0op5YIIlC-6uU)
docker run -p 3001:3001 -it \
-v $HOME/.cache/huggingface/hub:/root/.cache/huggingface/hub \
--gpus all mephodybro/polygraph_demo:0.0.17 polygraph_server
The server should be available on http://localhost:3001
A more detailed description of the demo is available in the documentation.
@inproceedings{fadeeva-etal-2023-lm,
title = "{LM}-Polygraph: Uncertainty Estimation for Language Models",
author = "Fadeeva, Ekaterina and
Vashurin, Roman and
Tsvigun, Akim and
Vazhentsev, Artem and
Petrakov, Sergey and
Fedyanin, Kirill and
Vasilev, Daniil and
Goncharova, Elizaveta and
Panchenko, Alexander and
Panov, Maxim and
Baldwin, Timothy and
Shelmanov, Artem",
editor = "Feng, Yansong and
Lefever, Els",
booktitle = "Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing: System Demonstrations",
month = dec,
year = "2023",
address = "Singapore",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2023.emnlp-demo.41",
doi = "10.18653/v1/2023.emnlp-demo.41",
pages = "446--461",
abstract = "Recent advancements in the capabilities of large language models (LLMs) have paved the way for a myriad of groundbreaking applications in various fields. However, a significant challenge arises as these models often {``}hallucinate{''}, i.e., fabricate facts without providing users an apparent means to discern the veracity of their statements. Uncertainty estimation (UE) methods are one path to safer, more responsible, and more effective use of LLMs. However, to date, research on UE methods for LLMs has been focused primarily on theoretical rather than engineering contributions. In this work, we tackle this issue by introducing LM-Polygraph, a framework with implementations of a battery of state-of-the-art UE methods for LLMs in text generation tasks, with unified program interfaces in Python. Additionally, it introduces an extendable benchmark for consistent evaluation of UE techniques by researchers, and a demo web application that enriches the standard chat dialog with confidence scores, empowering end-users to discern unreliable responses. LM-Polygraph is compatible with the most recent LLMs, including BLOOMz, LLaMA-2, ChatGPT, and GPT-4, and is designed to support future releases of similarly-styled LMs.",
}
The chat GUI implementation is based on the chatgpt-web-application project.