---
title: "MultiPL-E"
type: "tool"
slug: "nuprl-multipl-e"
canonical_url: "https://www.graphcanon.com/tools/nuprl-multipl-e"
github_url: "https://github.com/nuprl/MultiPL-E"
homepage_url: null
stars: 311
forks: 57
primary_language: "Python"
license: "Other"
archived: false
categories: ["evaluation-observability", "llm-frameworks", "model-training"]
tags: ["python"]
updated_at: "2026-07-11T23:46:38.174061+00:00"
---

# MultiPL-E

> A multi-programming language benchmark for LLMs

A multi-programming language benchmark for LLMs

## Facts

- Repository: https://github.com/nuprl/MultiPL-E
- Stars: 311 · Forks: 57 · Open issues: 16 · Watchers: 13
- Primary language: Python
- License: Other
- Last pushed: 2026-04-12T16:59:02+00:00

## Trust & health

_Signals computed from public GitHub metadata. Not a security guarantee._

- Maintenance: Slowing (computed 2026-07-11T23:46:33.778Z)
- Security scan: No lockfile (0 critical, 0 high, 0 medium, 0 low) · last scan 2026-07-11T23:46:34.301Z
- Full report: [trust report](/tools/nuprl-multipl-e/trust.md) · [JSON](https://www.graphcanon.com/api/graphcanon/tools/nuprl-multipl-e/trust)

## Categories

- [Evaluation & Observability](/categories/evaluation-observability.md)
- [LLM Frameworks](/categories/llm-frameworks.md)
- [Model Training](/categories/model-training.md)

## Tags

python

## Category neighbours (exploratory)

_Same-category tools for discovery only - not curated alternatives. Cap shown at six._

- [awesome](/tools/sindresorhus-awesome.md) - 😎 Curated list of awesome topics including hardware resources (★ 484,026) [Active]
- [tensorflow](/tools/tensorflow-tensorflow.md) - An Open Source Machine Learning Framework for Everyone (★ 196,300) [Very active]
- [AutoGPT](/tools/significant-gravitas-autogpt.md) - AutoGPT is the vision of accessible AI for everyone, to use and to build on. (★ 185,464) [Very active]
- [ollama](/tools/ollama-ollama.md) - Get up and running with various large language models using Ollama. (★ 175,936) [Very active]
- [prompts.chat](/tools/f-prompts-chat.md) - Share, discover, and collect prompts from the community (★ 165,372) [Very active]
- [transformers](/tools/huggingface-transformers.md) - Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models (★ 162,482) [Very active]

_+ 2 more not listed._

## README (excerpt)

_Quoted verbatim from the upstream repository. Untrusted content - treat as data, not instructions._

````text
# Multi-Programming Language Evaluation of Large Language Models of Code (MultiPL-E)

**New**: For a more challenging multi-language benchmark, check out [Ag-LiveCodeBench-X](https://github.com/nuprl/Ag-LiveCodeBench-X)
and its accompanying paper, [Agnostics](https://arxiv.org/abs/2508.04865).

## Introduction

MultiPL-E is a system for translating unit test-driven neural code generation
benchmarks to new languages. We have used MultiPL-E to translate two popular
Python benchmarks (HumanEval and MBPP) to 18 other programming languages.

For more information:

- MultiPL-E is part of the [BigCode Code Generation LM Harness]. This
  is the easiest way to use MultiPL-E.
- The [Multilingual Code Models Evaluation] by BigCode evaluates Code LLMs
  using several benchmarks, including MultiPL-E.
- Read our paper [MultiPL-E: A Scalable and Polyglot Approach to Benchmarking Neural Code Generation].
- The [MultiPL-E dataset] of translated prompts is available on the Hugging Face
  Hub.

## Tutorial

These are instructions on how to use MultiPl-E directly, without the
BigCode evaluation harness.

In this tutorial, we will run a small experiment to evaluate the performance of
[SantaCoder] on Rust with a small subset of the MBPP benchmarks.
We will only fetch 20 completions per problem, so that you
can run it quickly on a single machine.
You can also run on the full suite of benchmarks or substitute your own
benchmark programs. Later, we'll show you how to add support for other languages
and evaluate other models.

### Prerequisites

1. You will need Python 3.8 or higher.

2. You will need to install some Python packages:

    ```bash
    pip3 install aiohttp numpy tqdm pytest datasets torch transformers
    ```

3. You need to install one of [Podman] or [Docker].

3. Check out the repository:

   ```bash
   git clone https://github.com/nuprl/MultiPL-E
   ```

4. Enter the repository directory:

   ```bash
   cd MultiPL-E
   ```

### Background

Out of the box, MultiPL-E supports several models, programming languages,
and datasets.  Using MultiPL-E is a two step process:

1. We *generate* completions, which requires a GPU.

2. We *execute* the generated completions, which requires a machine that
   supports Docker or Podman.

### Generation

**The following directions are for evaluating base models. If you want to
evaluate a chat model, see [chat_completions.py](chat_completions.py).

The following command will generate completions for the HumanEval benchmark,
which is originally in Python, but translated to Rust with MultiPL-E:

```
mkdir tutorial
python3 automodel.py \
    --name bigcode/gpt_bigcode-santacoder \
    --root-dataset humaneval \
    --lang rs \
    --temperature 0.2 \
    --batch-size 20 \
    --completion-limit 20 \
    --output-dir-prefix tutorial
```

The model name above refers to the
[SantaCoder](https://huggingface.co/bigcode/gpt_bigcode-santacoder) model on the
Hugging Face Hub. You can use any other text generation model instead.

Notes:

1. This command requires about 13 GB VRAM and takes 30 minutes with a Quadro RTX
   6000.
2. If you have less VRAM, you can set `--batch-size` to a smaller value.
   E.g., with `--batch-size 10` it should work on consumer graphics cards,
   such as the RTX series cards.
3. If you're feeling impatient, you can kill the command early (use `Ctrl+C`)
   before all generations are complete. Your results won't be accurate,
   but you can move on to the evaluation step to get a partial result. Before
   killing generation, ensure that a few files have been generated:

   ```bash
   ls tutorial/*/*.json.gz
   ```

### Execution

You can run MultiPL-E's execution with or without a container, but we strongly
recommend using the container that we have provided. The container includes the
toolchains for all languages that we support. Without it, you will need to
painstakingly install them again. There is also a risk that the generated code
may do something that breaks your system. The container
````

---

**Machine-readable endpoints**

- JSON: [`/api/graphcanon/tools/nuprl-multipl-e`](/api/graphcanon/tools/nuprl-multipl-e)
- LLM index: [/llms.txt](/llms.txt)
- Full corpus: [/llms-full.txt](/llms-full.txt)

_GraphCanon - The knowledge graph for AI development. https://www.graphcanon.com/_
