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)
|