File size: 6,403 Bytes
efeee6d
314f91a
95f85ed
efeee6d
 
 
 
 
 
314f91a
efeee6d
 
943f952
fb032a1
 
a1d6dff
 
 
524d4e3
e39b6d4
524d4e3
 
aad5a98
 
3e7001c
524d4e3
efeee6d
60b3a41
58733e4
efeee6d
8c49cb6
b52a077
44ef4de
3b4e965
44ef4de
 
0227006
 
efeee6d
ad554f1
f621b6a
d313dbd
c2ba07b
44ef4de
f621b6a
 
 
 
44ef4de
992caee
44ef4de
db734a2
44ef4de
 
 
3fc8d52
f621b6a
b52a077
058891a
749c594
9218171
 
 
 
bfcc60c
b52a077
9218171
 
 
 
f621b6a
44ef4de
 
 
db734a2
f621b6a
44ef4de
d313dbd
2163a21
c91d7f4
 
 
d16cee2
d313dbd
 
8c49cb6
d313dbd
 
4085e97
d313dbd
4085e97
 
 
 
 
 
 
 
 
524d4e3
d313dbd
8c49cb6
b323764
d313dbd
 
 
 
 
 
 
b323764
d313dbd
 
 
61a673a
 
 
 
58733e4
2a73469
749c594
0f51a5c
2a73469
217b585
d958415
9833cdb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
from dataclasses import dataclass
from enum import Enum

@dataclass
class Task:
    benchmark: str
    metric: str
    col_name: str


# Init: to update with your specific keys
class Tasks(Enum):
    # task_key in the json file, metric_key in the json file, name to display in the leaderboard 
    task0 = Task("logiqa", "delta_abs", "LogiQA Ξ”")
    task1 = Task("logiqa2", "delta_abs", "LogiQA2 Ξ”")
    task2 = Task("lsat-ar", "delta_abs", "LSAT-ar Ξ”")
    task3 = Task("lsat-lr", "delta_abs", "LSAT-lr Ξ”")
    task4 = Task("lsat-rc", "delta_abs", "LSAT-rc Ξ”")

#METRICS = list(set([task.value.metric for task in Tasks]))


logo1_url = "https://raw.githubusercontent.com/logikon-ai/cot-eval/main/assets/AI2_Logo_Square.png" 
logo2_url = "https://raw.githubusercontent.com/logikon-ai/cot-eval/main/assets/logo_logikon_notext_withborder.png"
LOGOS = f'<div style="display: flex; justify-content: center;"><a href="https://allenai.org/"><img src="{logo1_url}" alt="AI2" style="width: 30vw; min-width: 20px; max-width: 60px;"></a> <a href="https://logikon.ai"><img src="{logo2_url}" alt="Logikon AI" style="width: 30vw; min-width: 20px; max-width: 60px; margin-left: 10px;"></a></div>'

# Your leaderboard name
TITLE = f'<h1 align="center" id="space-title"> Open CoT Leaderboard</h1> {LOGOS}'

# What does your leaderboard evaluate?
INTRODUCTION_TEXT = """
The Open CoT Leaderboard tracks the reasoning skills of LLMs, measured as their ability to generate **effective chain-of-thought reasoning traces**.

The leaderboard reports **accuracy gains** achieved by using [chain-of-thought](https://logikon.ai/docs/delib_prompting) (CoT), i.e.: _accuracy gain Ξ”_ = _accuracy with CoT_ β€” _accuracy w/o CoT_.

See the "About" tab for more details and motivation.
"""

# Which evaluations are you running? how can people reproduce what you have?
LLM_BENCHMARKS_TEXT = f"""
## How it works (roughly)

To assess the reasoning skill of a given `model`, we carry out the following steps for each `task` (test dataset) and different CoT `regimes`. (A CoT `regime` consists in a prompt chain and decoding parameters used to generate a reasoning trace.)

1. `model` generates CoT reasoning traces for all problems in the test dataset according to `regime`.
2. `model` answers the test dataset problems, we record the resulting _baseline accuracy_.
3. `model` answers the test dataset problems _with the reasoning traces appended_ to the prompt, we record the resulting _CoT accuracy_.
4. We compute the _accuracy gain Ξ”_ = _CoT accuracy_ β€” _baseline accuracy_ for the given `model`, `task`, and `regime`.

Each `regime` yields a different _accuracy gain Ξ”_, and the leaderboard reports (for every `model`/`task`) the best Ξ” achieved by any regime. All models are evaluated against the same set of regimes.

A notebook with detailed result exploration and visualization is available [here](https://github.com/logikon-ai/cot-eval/blob/main/notebooks/CoT_Leaderboard_Results_Exploration.ipynb).

## How is it different from other leaderboards?

Performance leaderboards like the [πŸ€— Open LLM Leaderboard](https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard) or [YALL](https://huggingface.co/spaces/mlabonne/Yet_Another_LLM_Leaderboard) do a great job in ranking models according to task performance.

Unlike these leaderboards, the Open CoT Leaderboard assesses a model's ability to effectively reason about a `task`:

### πŸ€— Open LLM Leaderboard
* a. Can `model` solve `task`?
* b. Metric: absolute accuracy.
* c. Measures `task` performance.
* d. Covers broad spectrum of `tasks`.

### Open CoT Leaderboard
* a. Can `model` do CoT to improve in `task`?
* b. Metric: relative accuracy gain.
* c. Measures ability to reason (about `task`).
* d. Focuses on critical thinking `tasks`.


## Test dataset selection (`tasks`)

The test dataset problems in the CoT Leaderboard can be solved through clear thinking alone, no specific knowledge is required to do so. They are subsets of the [AGIEval benchmark](https://github.com/ruixiangcui/AGIEval) and re-published as [`logikon-bench`](https://huggingface.co/datasets/logikon/logikon-bench). The `logiqa` dataset has been newly translated from Chinese to English.


## Reproducibility
To learn more about the evaluation pipeline and reproduce our results, check out the repository [cot-eval](https://github.com/logikon-ai/cot-eval).

## Acknowledgements
We're grateful to community members for running evaluations and reporting results. To contribute, join us at [`cot-leaderboard`](https://huggingface.co/cot-leaderboard) organization.

"""

EVALUATION_QUEUE_TEXT = """
## Some good practices before submitting a model

### 1) Make sure you can load your model and tokenizer with `vLLM`:
```python
from vllm import LLM, SamplingParams
prompts = [
    "Hello, my name is",
    "The president of the United States is",
    "The capital of France is",
    "The future of AI is",
]
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
llm = LLM(model="<USER>/<MODEL>")
outputs = llm.generate(prompts, sampling_params)
```
If this step fails, follow the error messages to debug your model before submitting it. It's likely your model has been improperly uploaded.

Note: make sure your model is public!

### 2) Convert your model weights to [safetensors](https://huggingface.co/docs/safetensors/index)
It's a new format for storing weights which is safer and faster to load and use. It will also allow us to add the number of parameters of your model to the `Extended Viewer`!

### 3) Make sure your model has an open license!
This is a leaderboard for Open LLMs, and we'd love for as many people as possible to know they can use your model πŸ€—

### 4) Fill up your model card
When we add extra information about models to the leaderboard, it will be automatically taken from the model card

## Your model is stuck in the pending queue?

We're populating the Open CoT Leaderboard step by step. The idea is to grow a diverse and informative sample of the LLM space. Plus, with limited compute, we're currently prioritizing models that are popular, promising, and relatively small.

"""



CITATION_BUTTON_LABEL = "Copy the following snippet to cite these results"
CITATION_BUTTON_TEXT = r"""
Betz, G. and Cacean, S. and Richardson, K. (2024). Open CoT Leaderboard. Retrieved from https://huggingface.co/spaces/logikon/open_cot_leaderboard
"""