Spaces:
Runtime error
Runtime error
Commit
Β·
1a74fec
1
Parent(s):
76e1a38
modifying name of the metric
Browse files
README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
emoji: π
|
| 4 |
colorFrom: purple
|
| 5 |
colorTo: pink
|
|
@@ -29,19 +29,19 @@ It is defined as the exponentiated average negative log-likelihood of a sequence
|
|
| 29 |
For more information, see https://huggingface.co/docs/transformers/perplexity
|
| 30 |
|
| 31 |
## How to Use
|
| 32 |
-
At minimum, this metric requires the model and
|
| 33 |
```python
|
| 34 |
>>> import evaluate
|
| 35 |
-
>>> perplexity = evaluate.load("
|
| 36 |
>>> input_texts = ["lorem ipsum", "Happy Birthday!", "Bienvenue"]
|
| 37 |
-
>>> results = perplexity.compute(model='distilgpt2',
|
| 38 |
>>> print(results)
|
| 39 |
-
{'
|
| 40 |
```
|
| 41 |
|
| 42 |
### Inputs
|
| 43 |
- **model** (`Union`[`str`,`AutoModelForCausalLM`]): model used for calculating Perplexity
|
| 44 |
-
- **
|
| 45 |
- **device** (`str`): device to run on, defaults to 'cuda' when available.
|
| 46 |
- **max_length** (`int`): maximum sequence length, defaults to 2048.
|
| 47 |
|
|
@@ -59,9 +59,9 @@ This metric outputs a dictionary, containing the loss and perplexity score.
|
|
| 59 |
```python
|
| 60 |
>>> import evaluate
|
| 61 |
>>> from datasets import load_dataset
|
| 62 |
-
>>> perplexity = evaluate.load("
|
| 63 |
>>> input_texts = load_dataset("wikitext", "wikitext-2-raw-v1", split="test")["text"][:10]
|
| 64 |
-
>>> results = perplexity.compute(model='distilgpt2',
|
| 65 |
>>> print(list(results.keys()))
|
| 66 |
['loss', 'perplexity']
|
| 67 |
>>> print(results['loss'])
|
|
|
|
| 1 |
---
|
| 2 |
+
title: DmxPerplexity
|
| 3 |
emoji: π
|
| 4 |
colorFrom: purple
|
| 5 |
colorTo: pink
|
|
|
|
| 29 |
For more information, see https://huggingface.co/docs/transformers/perplexity
|
| 30 |
|
| 31 |
## How to Use
|
| 32 |
+
At minimum, this metric requires the model and references as inputs.
|
| 33 |
```python
|
| 34 |
>>> import evaluate
|
| 35 |
+
>>> perplexity = evaluate.load("dmx_perplexity", module_type="metric")
|
| 36 |
>>> input_texts = ["lorem ipsum", "Happy Birthday!", "Bienvenue"]
|
| 37 |
+
>>> results = perplexity.compute(model='distilgpt2',references=input_texts)
|
| 38 |
>>> print(results)
|
| 39 |
+
{'loss': 4.993086338043213, 'perplexity': 147.390625}
|
| 40 |
```
|
| 41 |
|
| 42 |
### Inputs
|
| 43 |
- **model** (`Union`[`str`,`AutoModelForCausalLM`]): model used for calculating Perplexity
|
| 44 |
+
- **references** (`list` of `str`): input text, each separate text snippet is one list entry.
|
| 45 |
- **device** (`str`): device to run on, defaults to 'cuda' when available.
|
| 46 |
- **max_length** (`int`): maximum sequence length, defaults to 2048.
|
| 47 |
|
|
|
|
| 59 |
```python
|
| 60 |
>>> import evaluate
|
| 61 |
>>> from datasets import load_dataset
|
| 62 |
+
>>> perplexity = evaluate.load("dmx_perplexity", module_type="metric")
|
| 63 |
>>> input_texts = load_dataset("wikitext", "wikitext-2-raw-v1", split="test")["text"][:10]
|
| 64 |
+
>>> results = perplexity.compute(model='distilgpt2',references=input_texts)
|
| 65 |
>>> print(list(results.keys()))
|
| 66 |
['loss', 'perplexity']
|
| 67 |
>>> print(results['loss'])
|
perplexity.py β dmx_perplexity/dmx_perplexity.py
RENAMED
|
@@ -20,7 +20,7 @@ Args:
|
|
| 20 |
causal versions of t5, and more (the full list can be found
|
| 21 |
in the AutoModelForCausalLM documentation here:
|
| 22 |
https://huggingface.co/docs/transformers/master/en/model_doc/auto#transformers.AutoModelForCausalLM )
|
| 23 |
-
|
| 24 |
device (str): device to run on, defaults to 'cuda' when available.
|
| 25 |
max_length (int): maximum sequence length, defaults to 2048.
|
| 26 |
Returns:
|
|
@@ -31,7 +31,7 @@ Examples:
|
|
| 31 |
>>> perplexity = evaluate.load("dmx_perplexity", module_type="metric")
|
| 32 |
>>> input_texts = load_dataset("wikitext", "wikitext-2-raw-v1", split="test")["text"][:10] # doctest: +SKIP
|
| 33 |
>>> results = perplexity.compute(model='distilgpt2',
|
| 34 |
-
...
|
| 35 |
>>> print(list(results.keys()))
|
| 36 |
['loss', 'perplexity']
|
| 37 |
>>> print(results['loss']) # doctest: +SKIP
|
|
@@ -41,7 +41,7 @@ Examples:
|
|
| 41 |
"""
|
| 42 |
|
| 43 |
@evaluate.utils.file_utils.add_start_docstrings(_DESCRIPTION, _KWARGS_DESCRIPTION)
|
| 44 |
-
class
|
| 45 |
def _info(self):
|
| 46 |
return evaluate.MetricInfo(
|
| 47 |
module_type="metric",
|
|
@@ -50,7 +50,7 @@ class Perplexity(evaluate.Metric):
|
|
| 50 |
inputs_description=_KWARGS_DESCRIPTION,
|
| 51 |
features=datasets.Features(
|
| 52 |
{
|
| 53 |
-
"
|
| 54 |
}
|
| 55 |
),
|
| 56 |
reference_urls=["https://huggingface.co/docs/transformers/perplexity"],
|
|
@@ -58,7 +58,7 @@ class Perplexity(evaluate.Metric):
|
|
| 58 |
|
| 59 |
def _compute(
|
| 60 |
self,
|
| 61 |
-
|
| 62 |
model: Union[str, AutoModelForCausalLM],
|
| 63 |
device=None,
|
| 64 |
max_length=None,
|
|
@@ -91,7 +91,7 @@ class Perplexity(evaluate.Metric):
|
|
| 91 |
max_seq_len = 2048
|
| 92 |
|
| 93 |
model = model.to(device)
|
| 94 |
-
encodings = tokenizer("\n\n".join(
|
| 95 |
|
| 96 |
stride = max_seq_len
|
| 97 |
seq_len = encodings.input_ids.size(1)
|
|
|
|
| 20 |
causal versions of t5, and more (the full list can be found
|
| 21 |
in the AutoModelForCausalLM documentation here:
|
| 22 |
https://huggingface.co/docs/transformers/master/en/model_doc/auto#transformers.AutoModelForCausalLM )
|
| 23 |
+
references (list of str): input text, each separate text snippet is one list entry.
|
| 24 |
device (str): device to run on, defaults to 'cuda' when available.
|
| 25 |
max_length (int): maximum sequence length, defaults to 2048.
|
| 26 |
Returns:
|
|
|
|
| 31 |
>>> perplexity = evaluate.load("dmx_perplexity", module_type="metric")
|
| 32 |
>>> input_texts = load_dataset("wikitext", "wikitext-2-raw-v1", split="test")["text"][:10] # doctest: +SKIP
|
| 33 |
>>> results = perplexity.compute(model='distilgpt2',
|
| 34 |
+
... references=input_texts)
|
| 35 |
>>> print(list(results.keys()))
|
| 36 |
['loss', 'perplexity']
|
| 37 |
>>> print(results['loss']) # doctest: +SKIP
|
|
|
|
| 41 |
"""
|
| 42 |
|
| 43 |
@evaluate.utils.file_utils.add_start_docstrings(_DESCRIPTION, _KWARGS_DESCRIPTION)
|
| 44 |
+
class DmxPerplexity(evaluate.Metric):
|
| 45 |
def _info(self):
|
| 46 |
return evaluate.MetricInfo(
|
| 47 |
module_type="metric",
|
|
|
|
| 50 |
inputs_description=_KWARGS_DESCRIPTION,
|
| 51 |
features=datasets.Features(
|
| 52 |
{
|
| 53 |
+
"references": datasets.Value("string"),
|
| 54 |
}
|
| 55 |
),
|
| 56 |
reference_urls=["https://huggingface.co/docs/transformers/perplexity"],
|
|
|
|
| 58 |
|
| 59 |
def _compute(
|
| 60 |
self,
|
| 61 |
+
references,
|
| 62 |
model: Union[str, AutoModelForCausalLM],
|
| 63 |
device=None,
|
| 64 |
max_length=None,
|
|
|
|
| 91 |
max_seq_len = 2048
|
| 92 |
|
| 93 |
model = model.to(device)
|
| 94 |
+
encodings = tokenizer("\n\n".join(references), return_tensors="pt")
|
| 95 |
|
| 96 |
stride = max_seq_len
|
| 97 |
seq_len = encodings.input_ids.size(1)
|