tfrere commited on
Commit
a8a8975
·
1 Parent(s): 7e389db

add downloadable documents | add full demo link

Browse files
backend/clean_and_restart_eval.py CHANGED
@@ -1,17 +1,16 @@
1
  #!/usr/bin/env python3
2
  """
3
- Script pour nettoyer les anciens résultats d'évaluation et relancer LightEval
4
  """
5
  import os
6
  import sys
7
- import shutil
8
  import argparse
9
  import asyncio
10
  from pathlib import Path
11
  from datetime import datetime
12
 
13
  # Importer la tâche d'évaluation
14
- from tasks.evaluation_task import EvaluationTask
15
 
16
 
17
  def log(message):
@@ -19,66 +18,37 @@ def log(message):
19
  print(f"[{datetime.now().strftime('%H:%M:%S')}] {message}")
20
 
21
 
22
- async def main(session_id, dataset_name, threshold=None):
23
  """
24
- Nettoie les anciens résultats et relance l'évaluation
25
 
26
  Args:
27
  session_id: ID de la session à traiter
28
  dataset_name: Nom du dataset à évaluer
29
- threshold: Seuil optionnel pour l'analyse des sentiments (positive_count - negative_count)
30
  """
31
  # Vérifier que le dossier de session existe
32
  session_dir = Path(f"uploaded_files/{session_id}")
33
  if not session_dir.exists():
34
  log(f"Erreur: Le dossier de session {session_id} n'existe pas")
35
  return 1
36
-
37
- # Chemin vers les résultats LightEval
38
- results_dir = session_dir / "lighteval_results"
39
-
40
- # Suppression des anciens résultats
41
- if results_dir.exists():
42
- log(f"Suppression de l'ancien dossier de résultats: {results_dir}")
43
- shutil.rmtree(results_dir)
44
- log("Nettoyage terminé")
45
 
46
- # Si un seuil est spécifié, modifier le config yaml pour le sentiment analysis
47
- if threshold is not None:
48
- # Chemin du module lighteval_task
49
- lighteval_task_path = Path("lighteval_task/lighteval_task.py")
50
-
51
- # Modifier le module uniquement s'il existe
52
- if lighteval_task_path.exists():
53
- log(f"Ajustement du seuil d'analyse de sentiment à {threshold}")
54
-
55
- # Lire le contenu
56
- with open(lighteval_task_path, 'r', encoding='utf-8') as file:
57
- content = file.read()
58
-
59
- # Remplacer le seuil dans la code
60
- content = content.replace(
61
- "pos_count > neg_count + 2", # Seuil par défaut
62
- f"pos_count > neg_count + {threshold}"
63
- )
64
- content = content.replace(
65
- "neg_count > pos_count + 2", # Seuil par défaut
66
- f"neg_count > pos_count + {threshold}"
67
- )
68
-
69
- # Écrire le fichier modifié
70
- with open(lighteval_task_path, 'w', encoding='utf-8') as file:
71
- file.write(content)
72
-
73
- log(f"Seuil d'analyse de sentiment ajusté à {threshold}")
74
 
75
- # Créer une nouvelle tâche d'évaluation
76
  log("Initialisation d'une nouvelle tâche d'évaluation")
77
- evaluation_task = EvaluationTask(session_id, dataset_name)
 
 
 
 
 
78
 
79
  # Exécuter l'évaluation
80
  log("Démarrage de l'évaluation...")
81
- await evaluation_task.run(clean_first=True)
82
 
83
  # Vérifier les résultats
84
  if evaluation_task.is_completed:
@@ -93,7 +63,14 @@ async def main(session_id, dataset_name, threshold=None):
93
 
94
 
95
  if __name__ == "__main__":
96
-
 
 
 
 
 
 
 
97
  # Exécuter la fonction principale de manière asynchrone
98
- exit_code = asyncio.run(main("pokemon-guide", "yourbench/yourbench_hurricane-faq", -1))
99
  sys.exit(exit_code)
 
1
  #!/usr/bin/env python3
2
  """
3
+ Script pour relancer l'évaluation LightEval avec un timeout personnalisé
4
  """
5
  import os
6
  import sys
 
7
  import argparse
8
  import asyncio
9
  from pathlib import Path
10
  from datetime import datetime
11
 
12
  # Importer la tâche d'évaluation
13
+ from tasks.evaluation_task import EvaluationTask, DEFAULT_EVALUATION_TIMEOUT
14
 
15
 
16
  def log(message):
 
18
  print(f"[{datetime.now().strftime('%H:%M:%S')}] {message}")
19
 
20
 
21
+ async def main(session_id, dataset_name, timeout=None):
22
  """
23
+ Relance l'évaluation avec un timeout personnalisé
24
 
25
  Args:
26
  session_id: ID de la session à traiter
27
  dataset_name: Nom du dataset à évaluer
28
+ timeout: Timeout en secondes pour chaque évaluation de modèle (utilise la valeur par défaut si None)
29
  """
30
  # Vérifier que le dossier de session existe
31
  session_dir = Path(f"uploaded_files/{session_id}")
32
  if not session_dir.exists():
33
  log(f"Erreur: Le dossier de session {session_id} n'existe pas")
34
  return 1
 
 
 
 
 
 
 
 
 
35
 
36
+ # Afficher le timeout utilisé
37
+ timeout_value = timeout if timeout is not None else DEFAULT_EVALUATION_TIMEOUT
38
+ log(f"Utilisation d'un timeout de {timeout_value} secondes pour l'évaluation")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
 
40
+ # Créer une nouvelle tâche d'évaluation avec le timeout spécifié
41
  log("Initialisation d'une nouvelle tâche d'évaluation")
42
+ evaluation_task = EvaluationTask(
43
+ session_uid=session_id,
44
+ dataset_name=dataset_name,
45
+ clean_old_results=True, # Nettoyer automatiquement les anciens résultats
46
+ timeout=timeout
47
+ )
48
 
49
  # Exécuter l'évaluation
50
  log("Démarrage de l'évaluation...")
51
+ await evaluation_task.run()
52
 
53
  # Vérifier les résultats
54
  if evaluation_task.is_completed:
 
63
 
64
 
65
  if __name__ == "__main__":
66
+ parser = argparse.ArgumentParser(description="Relancer l'évaluation LightEval avec un timeout personnalisé")
67
+ parser.add_argument("session_id", help="ID de la session à traiter")
68
+ parser.add_argument("dataset_name", help="Nom du dataset à évaluer")
69
+ parser.add_argument("--timeout", type=float, default=None,
70
+ help=f"Timeout en secondes pour chaque évaluation de modèle (défaut: {DEFAULT_EVALUATION_TIMEOUT})")
71
+
72
+ args = parser.parse_args()
73
+
74
  # Exécuter la fonction principale de manière asynchrone
75
+ exit_code = asyncio.run(main(args.session_id, args.dataset_name, args.timeout))
76
  sys.exit(exit_code)
backend/tasks/evaluation_task.py CHANGED
@@ -16,15 +16,15 @@ from tasks.get_model_providers import get_model_providers
16
  from huggingface_hub import HfApi
17
  import asyncio
18
 
19
- # Augmenter le timeout pour donner plus de temps aux modèles avec sambanova
20
- EVALUATION_TIMEOUT = 60.0 # 5 minutes
21
 
22
  class EvaluationTask:
23
  """
24
  Task to run evaluation using lighteval
25
  """
26
 
27
- def __init__(self, session_uid: str, dataset_name: str, clean_old_results: bool = False):
28
  """
29
  Initialize the evaluation task
30
 
@@ -32,12 +32,14 @@ class EvaluationTask:
32
  session_uid: Session ID for this task
33
  dataset_name: Name of the dataset to evaluate
34
  clean_old_results: If True, clean old results before evaluation
 
35
  """
36
  self.session_uid = session_uid
37
  self.dataset_name = dataset_name
38
  self.is_completed = False
39
  self.results = []
40
  self.hf_api = HfApi()
 
41
 
42
  # Nettoyer les anciens résultats si demandé
43
  if clean_old_results:
@@ -107,7 +109,7 @@ class EvaluationTask:
107
  except Exception as e:
108
  print(f"[{datetime.now().strftime('%H:%M:%S')}] Failed to save results to Hub: {str(e)}")
109
 
110
- async def _run_lighteval(self, model_name: str, provider: str, dataset_name: str) -> dict:
111
  start_time = time.time()
112
  print(f"[{datetime.now().strftime('%H:%M:%S')}] Starting evaluation with {provider} provider for {model_name}")
113
 
@@ -118,7 +120,7 @@ class EvaluationTask:
118
  from lighteval_task.lighteval_task import create_yourbench_task
119
 
120
  # Create yourbench task
121
- yourbench = create_yourbench_task("{dataset_name}", "single_shot_questions")
122
 
123
  # Define TASKS_TABLE needed by lighteval
124
  TASKS_TABLE = [yourbench]
@@ -153,7 +155,7 @@ TASKS_TABLE = [yourbench]
153
  )
154
 
155
  try:
156
- await asyncio.wait_for(process.communicate(), timeout=EVALUATION_TIMEOUT)
157
  except asyncio.TimeoutError:
158
  process.kill()
159
  print(f"[{datetime.now().strftime('%H:%M:%S')}] Evaluation timed out for {model_name} after {time.time() - start_time:.2f}s")
@@ -165,7 +167,7 @@ TASKS_TABLE = [yourbench]
165
  "model": model_name,
166
  "provider": provider,
167
  "accuracy": 0.0,
168
- "execution_time": EVALUATION_TIMEOUT,
169
  "status": "timeout"
170
  }
171
  except Exception as e:
@@ -250,7 +252,7 @@ TASKS_TABLE = [yourbench]
250
  tasks = []
251
  for model_name, providers in model_providers:
252
  if providers: # Only run if providers are available
253
- tasks.append(self._run_lighteval(model_name, providers[0], self.dataset_name))
254
 
255
  self.results = await asyncio.gather(*tasks)
256
 
 
16
  from huggingface_hub import HfApi
17
  import asyncio
18
 
19
+ # Valeur par défaut du timeout
20
+ DEFAULT_EVALUATION_TIMEOUT = 60.0 # 1 minute par défaut
21
 
22
  class EvaluationTask:
23
  """
24
  Task to run evaluation using lighteval
25
  """
26
 
27
+ def __init__(self, session_uid: str, dataset_name: str, clean_old_results: bool = False, timeout: float = None):
28
  """
29
  Initialize the evaluation task
30
 
 
32
  session_uid: Session ID for this task
33
  dataset_name: Name of the dataset to evaluate
34
  clean_old_results: If True, clean old results before evaluation
35
+ timeout: Timeout in seconds for each model evaluation (if None, uses default)
36
  """
37
  self.session_uid = session_uid
38
  self.dataset_name = dataset_name
39
  self.is_completed = False
40
  self.results = []
41
  self.hf_api = HfApi()
42
+ self.timeout = timeout if timeout is not None else DEFAULT_EVALUATION_TIMEOUT
43
 
44
  # Nettoyer les anciens résultats si demandé
45
  if clean_old_results:
 
109
  except Exception as e:
110
  print(f"[{datetime.now().strftime('%H:%M:%S')}] Failed to save results to Hub: {str(e)}")
111
 
112
+ async def _run_lighteval(self, model_name: str, provider: str) -> dict:
113
  start_time = time.time()
114
  print(f"[{datetime.now().strftime('%H:%M:%S')}] Starting evaluation with {provider} provider for {model_name}")
115
 
 
120
  from lighteval_task.lighteval_task import create_yourbench_task
121
 
122
  # Create yourbench task
123
+ yourbench = create_yourbench_task("{self.dataset_name}", "single_shot_questions")
124
 
125
  # Define TASKS_TABLE needed by lighteval
126
  TASKS_TABLE = [yourbench]
 
155
  )
156
 
157
  try:
158
+ await asyncio.wait_for(process.communicate(), timeout=self.timeout)
159
  except asyncio.TimeoutError:
160
  process.kill()
161
  print(f"[{datetime.now().strftime('%H:%M:%S')}] Evaluation timed out for {model_name} after {time.time() - start_time:.2f}s")
 
167
  "model": model_name,
168
  "provider": provider,
169
  "accuracy": 0.0,
170
+ "execution_time": self.timeout,
171
  "status": "timeout"
172
  }
173
  except Exception as e:
 
252
  tasks = []
253
  for model_name, providers in model_providers:
254
  if providers: # Only run if providers are available
255
+ tasks.append(self._run_lighteval(model_name, providers[0]))
256
 
257
  self.results = await asyncio.gather(*tasks)
258
 
frontend/public/hurricane-faq.md ADDED
@@ -0,0 +1,193 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Hurricanes: Interesting Facts and F.A.Q.
2
+
3
+  The word hurricane comes from the Taino Native American word, hurucane, meaning
4
+
5
+ evil spirit of the wind.
6
+
7
+  The first time anyone flew into a hurricane happened in 1943 in the middle of World
8
+
9
+ War II.
10
+
11
+  A tropical storm is classified as a hurricane once winds goes up to 74 miles per hour or
12
+
13
+ higher.
14
+
15
+  Hurricanes are the only weather disasters that have been given their own names.
16
+
17
+  All hurricanes begin life in a warm moist atmosphere over tropical ocean waters.
18
+
19
+  A typical hurricane can dump 6 inches to a foot of rain across a region.
20
+
21
+  The most violent winds and heaviest rains take place in the eye wall, the ring of clouds
22
+
23
+ and thunderstorms closely surrounding the eye.
24
+
25
+  Every second, a large hurricane releases the energy of 10 atomic bombs.
26
+
27
+  Hurricanes can also produce tornadoes. They are not as strong as regular tornadoes and
28
+
29
+ last only a few minutes.
30
+
31
+  Slow moving hurricanes produce more rainfall and can cause more damage from
32
+
33
+ flooding than faster-moving, more powerful hurricanes.
34
+
35
+  Hurricane Floyd was barely a category I hurricane, but it still managed to mow down 19
36
+
37
+ million trees and caused over a billion dollars in damage.
38
+
39
+  Most people who die in hurricanes are killed by the towering walls of sea water that
40
+
41
+ comes inland.
42
+
43
+
44
+
45
+ In the Pacific Ocean, Hurricanes are generally known as typhoons. In the Indian Ocean
46
+ they are called tropical cyclones.
47
+
48
+  The man who first gave names to hurricanes was an Australian weather forecaster
49
+
50
+ named C. Wragge in the early 1900s.
51
+
52
+  The first hurricane of the year is given a name beginning with the letter “A”.
53
+
54
+  Hurricane season is from June to November when the seas are at their warmest and
55
+
56
+ most humid, which are ripe conditions for a hurricane to develop.
57
+
58
+  The planet Jupiter has a hurricane which has been going on for over 300 years. It can be
59
+ seen as a red spot on the planet. This hurricane on Jupiter is bigger than the Earth itself.
60
+
61
+ Q. What are “Cape Verde” type hurricanes?
62
+
63
+ Cape Verde-type hurricanes are those Atlantic basin tropical cyclones that develop into tropical
64
+ storms fairly close (<1000km or so) to the Cape Verde Islands and then become hurricanes
65
+ before reaching the Caribbean. (there may be other definitions). Typically, this occurs in August
66
+ and September, but in rare years (like 1995), there may be some in late July and/or early
67
+ October. The numbers range from none up to around five per year, with an average of around
68
+ 2.
69
+
70
+ Q. What is the “eye?” How is it formed and maintained?
71
+ The “eye”(cid:157) is a roughly circular area of comparatively light winds and fair weather found at the
72
+ center of a severe tropical cyclone. Although the winds are calm at the axis of rotation, strong
73
+ winds may extend well into the eye. There is little or no precipitation in the eye, and sometimes
74
+ blue sky or stars can be seen. The eye is the region of lowest surface pressure and warmest
75
+ temperatures aloft: the eye temperature may be more than 10°C (18°F) warmer at an altitude
76
+ of 12 km (8 mi) than the surrounding environment, but only 0-2°C (0-3°F) warmer at the surface
77
+ in the tropical cyclone. Eyes range in size from 8 km (5 mi) to over 200 km (120 mi) across, but
78
+ most are approximately 30–60 km (20–40 mi) in diameter. The eye is surrounded by the
79
+ eyewall—”the roughly circular area of deep convection which is the area of highest surface
80
+ winds in the tropical cyclone. The eye is composed of air that is slowly sinking and the eyewall
81
+ has a net upward flow as a result of many moderate and occasionally strong updrafts and
82
+ downdrafts. The eye’s warm temperatures are due to compressional warming of the subsiding
83
+ air. Most soundings taken within the eye show a low-level layer which is relatively moist, with
84
+ an inversion above. This suggests that the sinking in the eye typically does not reach the ocean
85
+ surface, but instead only gets to around 1–3 km of the surface.
86
+
87
+ The general mechanisms by which the eye and eyewall are formed are not fully understood,
88
+ although observations have shed some light on the subject. The calm eye of the tropical
89
+ cyclone shares many qualitative characteristics with other vortical systems such as tornadoes,
90
+ waterspouts, dust devils and whirlpools. Given that many of these lack a change of phase of
91
+ water (i.e. no clouds and diabatic heating involved), it may be that the eye feature is a
92
+ fundamental component to all rotating fluids. It has been hypothesized that supergradient wind
93
+ flow (i.e. swirling winds that are stronger than what the local pressure gradient can typically
94
+ support) near the radius of maximum winds (RMW) causes air to be centrifuged out of the eye
95
+ into the eyewall, thus accounting for the subsidence in the eye. However, Willoughby found
96
+ that the swirling winds within several tropical storms and hurricanes were within 1–4% of
97
+ gradient balance. It may be that the amount of supergradient flow needed to cause such
98
+ centrifuging of air is only on the order of a couple percent and thus difficult to measure.
99
+
100
+ Another feature of tropical cyclones that probably plays a role in forming and maintaining the
101
+ eye is the eyewall convection. Convection in tropical cyclones is organized into long, narrow
102
+ rainbands which are oriented in the same direction as the horizontal wind. Because these
103
+ bands seem to spiral into the center of a tropical cyclone, they are sometimes called spiral
104
+ bands. Along these bands, low-level convergence is at a maximum, and therefore, upper-level
105
+ divergence is most pronounced above. A direct circulation develops in which warm, moist air
106
+ converges at the surface, ascends through these bands, diverges aloft, and descends on both
107
+ sides of the bands. Subsidence is distributed over a wide area on the outside of the rainband
108
+ but is concentrated in the small inside area. As the air subsides, adiabatic warming takes place,
109
+ and the air dries. Because subsidence is concentrated on the inside of the band, the adiabatic
110
+
111
+ warming is stronger inward from the band causing a sharp fall in pressure across the band since
112
+ warm air is lighter than cold air. Because of the pressure drops on the inside, the tangential
113
+ winds around the tropical cyclone increase due to the increases in the pressure gradient.
114
+ Eventually, the band moves toward the center and encircles it and the eye and eyewall form.
115
+
116
+ Thus, the cloud-free eye may be due to a combination of dynamically forced centrifuging of
117
+ mass out of the eye into the eyewall and to a forced descent caused by the moist convection of
118
+ the eyewall. This topic is certainly one that can use more research to ascertain which
119
+ mechanism is primary.
120
+
121
+ Some of the most intense tropical cyclones exhibit concentric eyewalls—two or more eyewall
122
+ structures centered at the circulation center of the storm. Just as the inner eyewall forms,
123
+ convection surrounding the eyewall can become organized into distinct rings. Eventually, the
124
+ inner eye begins to feel the effects of the subsidence resulting from the outer eyewall, and the
125
+ inner eyewall weakens to be replaced by the outer eyewall. The increasing pressure due to the
126
+ destruction of the inner eyewall is usually more rapid than the decreasing pressure caused by
127
+ the intensification of the outer eyewall, causing the cyclone to weaken for a short period of
128
+ time.
129
+
130
+ Q. What does an average hurricane season mean?
131
+ An average hurricane season brings 10.6 tropical storms. Six of those become hurricanes and
132
+ two become major hurricanes, meaning category 3 or greater.
133
+
134
+ The average is based on data from 1968 to 2003. Officially, the Atlantic hurricane season is
135
+ from June 1 to November 30, although storms can form outside this time period.
136
+
137
+ Q. What year was the most active? What year was the least active?
138
+ Until recently, 1933 had the most named storms on record with 21. In 2005, that record was
139
+ broken when the National Hurricane Center identified 28 storms. Since all of the traditional
140
+ names had been used for 2005, the last six named storms were called "Alpha," "Beta,"
141
+ "Gamma," "Delta," "Epsilon," and "Zeta," the first six letters of the Greek alphabet.
142
+
143
+ 1933 is now second, and 1995 is third with 19 tropical storms. 2005 also had the most
144
+ hurricanes in one season with 15. The least number of tropical storms happened in 1983 when
145
+ just four storms formed. In 1982, just two hurricanes formed, making it the year with the least
146
+ amount of hurricanes since 1968.
147
+
148
+ Q. Do I need to open my windows when a hurricane approaches?
149
+ That's a question we get every hurricane season. The answer is a resounding no. It is a myth
150
+ that opening windows will help equalize pressure in your house when a hurricane approaches.
151
+
152
+ Your windows should be boarded up with plywood or shutters. Leaving your windows open will
153
+ just bring a lot of rain into your house and flying debris could fly into your home, too. Don't
154
+ waste time taping your windows either. It won't help prevent hurricane damage. It's just
155
+ another myth.
156
+
157
+ Q. Why are hurricanes named?
158
+
159
+ A tropical cyclone is given a name when it becomes a tropical storm. It's much easier to
160
+ remember the name of a storm than try to track it by using latitude and longitude. It also helps
161
+ prevent confusion when there is more than one tropical storm or hurricane occurring at the
162
+ same time.
163
+
164
+ In 1953, the U.S. Weather Bureau began assigning women's names to tropical storms. In 1979,
165
+ men's names were included on the list. The names are in alphabetical order, excluding the
166
+ letters Q, U, X, Y and Z.
167
+
168
+ Today, the list includes names of English, Spanish and French origin because these languages
169
+ are most commonly used by the countries in the Atlantic Basin. There are six lists of names.
170
+ Each list is used in rotation every six years.
171
+
172
+ Q. How and why are names retired?
173
+ A name is retired when the storm caused so many deaths or so much destruction that it would
174
+ be confusing or insensitive to use the name again. The World Meteorological Organization is in
175
+ charge of retiring hurricane names and choosing new names.
176
+
177
+ The headline-making hurricanes of 2004 -- Charley, Frances, Ivan and Jeanne -- have all been
178
+ retired. They will be replaced by Colin, Fiona, Igor, and Julia when the list is used again this
179
+ year.
180
+
181
+ Q. Does El Niño affect hurricanes?
182
+ It can. In years with an El Niño, there are typically fewer tropical storms and hurricanes because
183
+ vertical shear increases during El Niño years. The vertical shear can prevent tropical cyclones
184
+ from forming and can prevent storms from intensifying.
185
+
186
+ El Niño is a warming of the equatorial Pacific Ocean waters, which usually occurs every three to
187
+ seven years and affects weather patterns around the world.
188
+
189
+ La Niña is the opposite of El Niño and is characterized by cooler than normal ocean waters in
190
+ the tropical Pacific. In years with La Niña, researchers have found that there is an increased
191
+ number of hurricanes and an increased chance that the United States and Caribbean will
192
+ experience hurricanes.
193
+
frontend/public/pokemon-guide.txt ADDED
@@ -0,0 +1,252 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ SCARLET POKEDEX
2
+ 0001-00 Bulbasaur For some time after its birth, it uses the nutrients that are packed into the seed on its back in order to grow.
3
+ 0002-00 Ivysaur The more sunlight Ivysaur bathes in, the more strength wells up within it, allowing the bud on its back to grow larger.
4
+ 0003-00 Venusaur While it basks in the sun, it can convert the light into energy. As a result, it is more powerful in the summertime.
5
+ 0004-00 Charmander The flame on its tail shows the strength of its life-force. If Charmander is weak, the flame also burns weakly.
6
+ 0005-00 Charmeleon When it swings its burning tail, the temperature around it rises higher and higher, tormenting its opponents.
7
+ 0006-00 Charizard If Charizard becomes truly angered, the flame at the tip of its tail burns in a light blue shade.
8
+ 0007-00 Squirtle After birth, its back swells and hardens into a shell. It sprays a potent foam from its mouth.
9
+ 0008-00 Wartortle Wartortle’s long, furry tail is a symbol of longevity, so this Pokémon is quite popular among older people.
10
+ 0009-00 Blastoise It deliberately increases its body weight so it can withstand the recoil of the water jets it fires.
11
+ 0023-00 Ekans It can freely detach its jaw to swallow large prey whole. It can become too heavy to move, however.
12
+ 0024-00 Arbok The pattern on its belly appears to be a frightening face. Weak foes will flee just at the sight of the pattern.
13
+ 0025-00 Pikachu When it is angered, it immediately discharges the energy stored in the pouches in its cheeks.
14
+ 0026-00 Raichu Its tail discharges electricity into the ground, protecting it from getting shocked.
15
+ 0027-00 Sandshrew It digs deep burrows to live in. When in danger, it rolls up its body to withstand attacks.
16
+ 0027-01 Sandshrew-1 It lives on snowy mountains. Its steel shell is very hard—so much so, it can’t roll its body up into a ball.
17
+ 0028-00 Sandslash It is adept at attacking with the spines on its back and its sharp claws while quickly scurrying about.
18
+ 0028-01 Sandslash-1 This Pokémon’s steel spikes are sheathed in ice. Stabs from these spikes cause deep wounds and severe frostbite as well.
19
+ 0035-00 Clefairy On nights with a full moon, Clefairy gather from all over and dance. Bathing in moonlight makes them float.
20
+ 0036-00 Clefable Said to live in quiet, remote mountains, this type of fairy has a strong aversion to being seen.
21
+ 0037-00 Vulpix If it is attacked by an enemy that is stronger than itself, it feigns injury to fool the enemy and escapes.
22
+ 0037-01 Vulpix-1 They live together in a skulk, helping one another. Before eating their prey, they freeze it solid with their −58 degree Fahrenheit breath.
23
+ 0038-00 Ninetales Some legends claim that each of its nine tails has its own unique type of special mystical power.
24
+ 0038-01 Ninetales-1 Possessing a calm demeanor, this Pokémon was revered as a deity incarnate before it was identified as a regional variant of Ninetales.
25
+ 0039-00 Jigglypuff When its huge eyes waver, it sings a mysteriously soothing melody that lulls its enemies to sleep.
26
+ 0040-00 Wigglytuff It has a very fine fur. Take care not to make it angry, or it may inflate steadily and hit with a body slam.
27
+ 0043-00 Oddish Its scientific name is Oddium wanderus. It is said to cover distances as far as 1,000 feet when night falls, walking on its two roots.
28
+ 0044-00 Gloom The fluid that oozes from its mouth isn’t drool. It is a nectar that is used to attract prey.
29
+ 0045-00 Vileplume The bud bursts into bloom with a bang. It then starts scattering allergenic, poisonous pollen.
30
+ 0048-00 Venonat Poison oozes from all over its body. It catches small bug Pokémon at night that are attracted by light.
31
+ 0049-00 Venomoth The wings are covered with dustlike scales. Every time it flaps its wings, it looses highly toxic dust.
32
+ 0050-00 Diglett It lives about one yard underground, where it feeds on plant roots. It sometimes appears aboveground.
33
+ 0050-01 Diglett-1 The things growing from its head are whiskers that have become metallic. Diglett communicates with its comrades by waving them.
34
+ 0051-00 Dugtrio Its three heads bob separately up and down to loosen the soil nearby, making it easier for it to burrow.
35
+ 0051-01 Dugtrio-1 Its shining gold whiskers are advanced sensors that can detect vibrations from sounds several miles away.
36
+ 0052-00 Meowth All it does is sleep during the daytime. At night, it patrols its territory with its eyes aglow.
37
+ 0053-00 Persian Although its fur has many admirers, it is tough to raise as a pet because of its fickle meanness.
38
+ 0054-00 Psyduck It is constantly wracked by a headache. When the headache turns intense, it begins using mysterious powers.
39
+ 0055-00 Golduck When it swims at full speed using its long, webbed limbs, its forehead somehow begins to glow.
40
+ 0056-00 Mankey It lives in groups in the treetops. If it loses sight of its group, it becomes infuriated by its loneliness.
41
+ 0057-00 Primeape It becomes wildly furious if it even senses someone looking at it. It chases anyone that meets its glare.
42
+ 0058-00 Growlithe It has a brave and trustworthy nature. It fearlessly stands up to bigger and stronger foes.
43
+ 0059-00 Arcanine An ancient picture scroll shows that people were captivated by its movement as it ran through prairies.
44
+ 0060-00 Poliwag The swirl on its belly is its insides showing through the skin. It appears more clearly after Poliwag eats.
45
+ 0061-00 Poliwhirl Its two legs are well developed. Even though it can live on the ground, it prefers living in water.
46
+ 0062-00 Poliwrath Although it’s skilled in a style of dynamic swimming that uses all its muscles, for some reason it lives on dry land.
47
+ 0069-00 Bellsprout No matter what Bellsprout is doing, if it detects movement nearby, it will immediately react by reaching out with its thin vines.
48
+ 0070-00 Weepinbell Even though it is filled with acid, it does not melt because it also oozes a protective fluid.
49
+ 0071-00 Victreebel It lures prey into its mouth with a nectar-like aroma. The helpless prey is melted with a dissolving fluid.
50
+ 0072-00 Tentacool When the tide goes out, dehydrated Tentacool can be found left behind on the shore.
51
+ 0073-00 Tentacruel On the rare occasions that large outbreaks of Tentacruel occur, all fish Pokémon disappear from the surrounding sea.
52
+ 0074-00 Geodude At rest, it looks just like a rock. Carelessly stepping on it will make it swing its fists angrily.
53
+ 0074-01 Geodude-1 Its body is a magnetic stone. Iron sand attaches firmly to the portions of its body that are particularly magnetic.
54
+ 0075-00 Graveler A slow walker, it rolls to move. It pays no attention to any object that happens to be in its path.
55
+ 0075-01 Graveler-1 They eat rocks and often get into a scrap over them. The impact of Graveler smashing together causes a flash of light and a booming noise.
56
+ 0076-00 Golem It is enclosed in a hard shell that is as rugged as slabs of rock. It sheds skin once a year to grow larger.
57
+ 0076-01 Golem-1 It’s grumpy and stubborn. If you upset it, it discharges electricity from the surface of its body and growls with a voice like thunder.
58
+ 0079-00 Slowpoke It is incredibly slow and dopey. It takes five seconds for it to feel pain when under attack.
59
+ 0079-01 Slowpoke-1 It gives off a stimulating scent because of chemicals that have seeped into its body from the spice that it eats as its staple food.
60
+ 0080-00 Slowbro When a Slowpoke went hunting in the sea, its tail was bitten by a Shellder. That made it evolve into Slowbro.
61
+ 0080-02 Slowbro-2 Shellder seems blissful over the taste of Slowbro even though the toxins seeping from the bite have caused Shellder to faint.
62
+ 0081-00 Magnemite The electromagnetic waves emitted by the units at the sides of its head expel antigravity, which allows it to float.
63
+ 0082-00 Magneton Three Magnemite are linked by a strong magnetic force. Earaches will occur if you get too close.
64
+ 0084-00 Doduo Its twin heads have exactly the same genes and battle in perfect sync with each other.
65
+ 0085-00 Dodrio It now has three hearts and three sets of lungs. Though it can’t run as fast as Doduo, Dodrio can keep running for longer stretches of time.
66
+ 0086-00 Seel The protrusion on its head is very hard. It is used for bashing through thick ice.
67
+ 0087-00 Dewgong It sleeps under shallow ocean waters during the day, then looks for food at night when it’s colder.
68
+ 0088-00 Grimer Born from sludge, these Pokémon now gather in polluted places and increase the bacteria in their bodies.
69
+ 0088-01 Grimer-1 They store their toxins inside their bodies, so unlike Grimer from other regions, they don’t smell bad even up close.
70
+ 0089-00 Muk It’s thickly covered with a filthy, vile sludge. It is so toxic, even its footprints contain poison.
71
+ 0089-01 Muk-1 There are over a hundred kinds of poison inside its body. Chemical reactions between different poisons are the source of its vitality.
72
+ 0090-00 Shellder It is encased in a shell that is harder than diamond. Inside, however, it is surprisingly tender.
73
+ 0091-00 Cloyster Cloyster that live in seas with harsh tidal currents grow large, sharp spikes on their shells.
74
+ 0092-00 Gastly It wraps its opponent in its gas-like body, slowly weakening its prey by poisoning it through the skin.
75
+ 0093-00 Haunter It likes to lurk in the dark and tap shoulders with a gaseous hand. Its touch causes endless shuddering.
76
+ 0094-00 Gengar To steal the life of its target, it slips into the prey’s shadow and silently waits for an opportunity.
77
+ 0096-00 Drowzee It remembers every dream it eats. It rarely eats the dreams of adults because children’s are much tastier.
78
+ 0097-00 Hypno When it locks eyes with an enemy, it will use a mix of psi moves, such as Hypnosis and Confusion.
79
+ 0100-00 Voltorb It rolls to move. If the ground is uneven, a sudden jolt from hitting a bump can cause it to explode.
80
+ 0101-00 Electrode The more energy it charges up, the faster it gets. But this also makes it more likely to explode.
81
+ 0102-00 Exeggcute If you touch one of Exeggcute’s heads, mistaking it for an egg, the other heads will quickly gather and attack you in a swarm.
82
+ 0103-00 Exeggutor It is called the Walking Jungle. Each of the nuts has a face and a will of its own.
83
+ 0103-01 Exeggutor-1 It swings its long neck like a whip and smacks its head into opponents. This makes Exeggutor itself a little dizzy too.
84
+ 0106-00 Hitmonlee At the exact moment it lands a kick on its target, Hitmonlee hardens the muscles on the sole of its foot, maximizing the power of the kick.
85
+ 0107-00 Hitmonchan It corners its foes with combo punches from both sides, then finishes them off with a single straight punch launched at over 300 mph.
86
+ 0109-00 Koffing Toxic gas is held within its thin, balloon-shaped body, so it can cause massive explosions.
87
+ 0110-00 Weezing Top-grade perfume is made using its internal poison gases by diluting them to the highest level.
88
+ 0111-00 Rhyhorn Rhyhorn claims an area with over a six mile radius as its territory. It apparently forgets where this territory is when running, however.
89
+ 0112-00 Rhydon The horn of a Rhydon is powerful enough to crush raw diamonds. These Pokémon polish their horns by bashing them together.
90
+ 0113-00 Chansey This kindly Pokémon lays highly nutritious eggs and shares them with injured Pokémon or people.
91
+ 0116-00 Horsea If attacked—even by a large enemy—Horsea effortlessly swims to safety by utilizing its well-developed dorsal fin.
92
+ 0117-00 Seadra The male raises the young. If it is approached while caring for young, it will use its toxic spines to fend off the intruder.
93
+ 0123-00 Scyther It slashes through grass with its sharp scythes, moving too fast for the human eye to track.
94
+ 0125-00 Electabuzz Its body constantly discharges electricity. Getting close to it will make your hair stand on end.
95
+ 0126-00 Magmar Found near the mouth of a volcano. This fire-breather’s body temperature is nearly 2,200 degrees Fahrenheit.
96
+ 0128-00 Tauros When it targets an enemy, it charges furiously while whipping its body with its long tails.
97
+ 0128-01 Tauros-1 This Pokémon has a muscular body and excels at close-quarters combat. It uses its short horns to strike the opponent’s weak spots.
98
+ 0128-02 Tauros-2 When heated by fire energy, its horns can get hotter than 1,800 degrees Fahrenheit. Those gored by them will suffer both wounds and burns.
99
+ 0128-03 Tauros-3 This Pokémon blasts water from holes on the tips of its horns—the high-pressure jets pierce right through Tauros’s enemies.
100
+ 0129-00 Magikarp An underpowered, pathetic Pokémon. It may jump high on rare occasions but never more than seven feet.
101
+ 0130-00 Gyarados Once it appears, it goes on a rampage. It remains enraged until it demolishes everything around it.
102
+ 0131-00 Lapras It ferries people across the sea on its back. It may sing an enchanting cry if it is in a good mood.
103
+ 0132-00 Ditto Its transformation ability is perfect. However, if made to laugh, it can’t maintain its disguise.
104
+ 0133-00 Eevee Its ability to evolve into many forms allows it to adapt smoothly and perfectly to any environment.
105
+ 0134-00 Vaporeon It lives close to water. Its long tail is ridged with a fin, which is often mistaken for a mermaid’s.
106
+ 0135-00 Jolteon It concentrates the weak electric charges emitted by its cells and launches wicked lightning bolts.
107
+ 0136-00 Flareon Inhaled air is carried to its flame sac, heated, and exhaled as fire that reaches over 3,000 degrees Fahrenheit.
108
+ 0137-00 Porygon It is an artificial Pokémon. Since it doesn’t breathe, people are excited by its potential to be useful in any environment.
109
+ 0143-00 Snorlax This gluttonous Pokémon eats constantly, apart from when it’s asleep. It devours nearly 900 pounds of food per day.
110
+ 0147-00 Dratini It sheds many layers of skin as it grows larger. During this process, it is protected by a rapid waterfall.
111
+ 0148-00 Dragonair They say that if it emits an aura from its whole body, the weather will begin to change instantly.
112
+ 0149-00 Dragonite It is said that somewhere in the ocean lies an island where these gather. Only they live there.
113
+ 0152-00 Chikorita It loves to bask in the sunlight. It uses the leaf on its head to seek out warm places.
114
+ 0153-00 Bayleef The spicy scent that wafts from around Bayleef’s neck somehow makes those who smell it want to fight.
115
+ 0154-00 Meganium Anyone who stands beside it becomes refreshed, just as if they were soaking in the soothing atmosphere of a forest.
116
+ 0155-00 Cyndaquil It usually stays hunched over. If it is angry or surprised, it shoots flames out of its back.
117
+ 0156-00 Quilava Before battle, it turns its back on its opponent to demonstrate how ferociously its fire blazes.
118
+ 0157-00 Typhlosion It has a secret, devastating move. It rubs its blazing fur to cause huge explosions.
119
+ 0158-00 Totodile Its powerful, well-developed jaws are capable of crushing anything. Even its Trainer must be careful.
120
+ 0159-00 Croconaw The tips of its fangs are slanted backward. Once those fangs clamp down, the prey has no hope of escape.
121
+ 0160-00 Feraligatr When it bites with its massive and powerful jaws, it shakes its head and savagely tears its victim up.
122
+ 0161-00 Sentret This Pokémon is extremely cautious. Its supple tail is well muscled and firm to the touch.
123
+ 0162-00 Furret It raises its offspring inside a long, narrow nest. Once they’re old enough, it takes them outside the nest to prepare them for independence.
124
+ 0163-00 Hoothoot Hoothoot’s internal clock is precise at all times. It tilts its head in a fixed rhythm.
125
+ 0164-00 Noctowl Its eyes are specially adapted. They concentrate even faint light and enable it to see in the dark.
126
+ 0167-00 Spinarak Even while there are prey ensnared in its nest of spun thread, Spinarak will wait motionlessly until darkness falls.
127
+ 0168-00 Ariados A single strand of a special thread is endlessly spun out of its rear. The thread leads back to its nest.
128
+ 0170-00 Chinchou It lives in ocean depths beyond the reach of sunlight. It flashes lights on its antennae to communicate with others of its kind.
129
+ 0171-00 Lanturn Portions of its dorsal fin mutated, becoming the parts that glow brightly to lure prey.
130
+ 0172-00 Pichu It is unskilled at storing electric power. Any kind of shock causes it to discharge energy spontaneously.
131
+ 0173-00 Cleffa On late nights illuminated by shooting stars, it gazes intently skyward, as if thinking of its home.
132
+ 0174-00 Igglybuff Its body has a faintly sweet scent and is bouncy and soft. If it bounces even once, it cannot stop.
133
+ 0179-00 Mareep If static electricity builds in its body, its fleece doubles in volume. Touching it will shock you.
134
+ 0180-00 Flaaffy As a result of storing too much electricity, it developed patches where even downy wool won’t grow.
135
+ 0181-00 Ampharos The bright light on its tail can be seen far away. It has been treasured since ancient times as a beacon.
136
+ 0182-00 Bellossom Due to the effects of the Sun Stone, it is now active during the daytime. It likes to dance in pools of sunlight.
137
+ 0183-00 Marill The fur on its body naturally repels water. It can stay dry even when it plays in the water.
138
+ 0184-00 Azumarill Its long ears are superb sensors. It can distinguish the movements of things in water and tell what they are.
139
+ 0185-00 Sudowoodo Although it always pretends to be a tree, its composition appears more similar to rock than to vegetation.
140
+ 0186-00 Politoed If Poliwag and Poliwhirl hear its echoing cry, they respond by gathering from far and wide.
141
+ 0187-00 Hoppip This Pokémon is blown across vast distances by the wind. It is unclear where the Hoppip of Paldea originally came from.
142
+ 0188-00 Skiploom Skiploom enthusiasts can apparently tell where a Skiploom was born by the scent drifting from the flower on the Pokémon’s head.
143
+ 0189-00 Jumpluff Jumpluff travels on seasonal winds. Once its cotton spores run out, its journey ends, as does its life.
144
+ 0190-00 Aipom It lives atop tall trees. When leaping from branch to branch, it deftly uses its tail for balance.
145
+ 0191-00 Sunkern It suddenly falls out of the sky in the morning. Knowing it’s weak, it simply feeds until it evolves.
146
+ 0192-00 Sunflora In the daytime, it rushes about in a hectic manner, but it comes to a complete stop when the sun sets.
147
+ 0193-00 Yanma As Yanma surveys its territory, it periodically stops to hover in place by flapping its wings at high speeds.
148
+ 0194-00 Wooper A transparent mucous membrane covers its body. Touching it bare-handed will cause a tingling numbness.
149
+ 0194-01 Wooper-1 After losing a territorial struggle, Wooper began living on land. The Pokémon changed over time, developing a poisonous film to protect its body.
150
+ 0195-00 Quagsire This carefree Pokémon has an easygoing nature. While swimming, it always bumps into boat hulls.
151
+ 0196-00 Espeon The tip of its forked tail quivers when it is predicting its opponent’s next move.
152
+ 0197-00 Umbreon When exposed to the moon’s aura, the rings on its body glow faintly and it gains a mysterious power.
153
+ 0198-00 Murkrow Feared and loathed by many, it is believed to bring misfortune to all those who see it at night.
154
+ 0199-00 Slowking When its head was bitten, toxins entered Slowpoke’s head and unlocked an extraordinary power.
155
+ 0199-01 Slowking-1 It administers its potions to weakened Pokémon it sees. These potions are derived from poison and secreted from holes in Slowking’s horns.
156
+ 0200-00 Misdreavus This Pokémon startles people in the middle of the night. It gathers fear as its energy.
157
+ 0203-00 Girafarig Though very small, the brain in its tail is still considered an important organ because it emits powerful psychic energy.
158
+ 0204-00 Pineco It likes to make its shell thicker by adding layers of tree bark. The additional weight doesn’t bother it.
159
+ 0205-00 Forretress It’s usually found hanging on to a fat tree trunk. It shoots out bits of its shell when it sees action.
160
+ 0206-00 Dunsparce It creates mazes in dark locations. When spotted, it flees into the ground by digging with its tail.
161
+ 0207-00 Gligar It builds its nest on a steep cliff. When it is done gliding, it hops along the ground back to its nest.
162
+ 0209-00 Snubbull In truth, it is a cowardly Pokémon. It growls eagerly in order to hide its fear from its opponent.
163
+ 0210-00 Granbull It is actually timid and easily spooked. If attacked, it desperately flails its limbs about in an attempt to repel its opponent.
164
+ 0211-00 Qwilfish Be cautious if this Pokémon starts sucking in water—it will soon attack by scattering the toxic spikes that grow all over its body.
165
+ 0211-01 Qwilfish-1 It lives just offshore in cold parts of the world. Its poisonous spikes are thicker and shorter than those of other regions’ Qwilfish.
166
+ 0212-00 Scizor This Pokémon’s pincers, which contain steel, can crush any hard object they get ahold of into bits.
167
+ 0214-00 Heracross It loves sweet nectar. To keep all the nectar to itself, it hurls rivals away with its prized horn.
168
+ 0215-00 Sneasel This cunning Pokémon hides under the cover of darkness, waiting to attack its prey.
169
+ 0216-00 Teddiursa This Pokémon discreetly follows Combee to find their hive. It scoops up big dollops of honey in its palms to eat.
170
+ 0217-00 Ursaring It usually wears a hardened expression, but when it’s licking up honey—which it loves—the joy it feels will cause it to break into a wide grin.
171
+ 0218-00 Slugma Its lava body can cool and chip away at times, but a magma bath will heal it right up.
172
+ 0219-00 Magcargo This Pokémon lives near the craters of volcanoes. It stores fire energy in its shell of cooled and hardened magma.
173
+ 0220-00 Swinub It searches for food by digging into the ground with its snout. Even frozen ground doesn’t give it any trouble.
174
+ 0221-00 Piloswine Covered by a shaggy coat, it is resistant to the cold. Its tusks of ice thicken when it snows.
175
+ 0225-00 Delibird It carries food all day long. There are tales about lost people who were saved by the food it had.
176
+ 0227-00 Skarmory Its sturdy, heavy-looking iron body is actually thin and light, so it can fly at speeds over 180 mph.
177
+ 0228-00 Houndour It is smart enough to hunt in packs. It uses a variety of cries for communicating with others.
178
+ 0229-00 Houndoom If you are burned by the flames it shoots from its mouth, the pain will never go away.
179
+ 0230-00 Kingdra It sleeps deep on the ocean floor to build its energy. It is said to cause tornadoes as it wakes.
180
+ 0231-00 Phanpy This Pokémon lives and nests on a riverbank. After playing in the mud, it won’t be able to settle down unless it washes its body.
181
+ 0232-00 Donphan Donphan is covered in tough hide, so even being hit by a car won’t faze this Pokémon. However, it is extremely susceptible to rain.
182
+ 0233-00 Porygon2 This artificial Pokémon evolved thanks to cutting- edge science. It sometimes displays behavior that is not in its programming.
183
+ 0234-00 Stantler This Pokémon apparently used to live in much harsher environments, and thus it once had stronger psychic powers than it does now.
184
+ 0235-00 Smeargle Once a Smeargle reaches adulthood, it will have other members of its species leave paw prints on its back.
185
+ 0236-00 Tyrogue This earnest Pokémon battles all sorts of opponents, searching for the fighting style that suits it best.
186
+ 0237-00 Hitmontop This Pokémon is adept at dance-like kicks. The horn atop its head is made from the same substance that generally forms fur and claws.
187
+ 0239-00 Elekid It loves violent thunder. The space between its horns flickers bluish white when it is charging energy.
188
+ 0240-00 Magby Each and every time it inhales and exhales, sparks leak from its mouth and nostrils.
189
+ 0242-00 Blissey Anyone who takes even one taste of Blissey’s egg becomes unfailingly caring and pleasant to everyone.
190
+ 0246-00 Larvitar Born deep underground, this Pokémon becomes a pupa after eating enough dirt to make a mountain.
191
+ 0247-00 Pupitar This pupa flies around wildly by venting with great force the gas pressurized inside its body.
192
+ 0248-00 Tyranitar Extremely strong, it can change the landscape. It is so insolent that it doesn’t care about others.
193
+ 0252-00 Treecko The small hooks on the soles of its feet latch on to walls and ceilings, so it will never fall even while hanging upside down.
194
+ 0253-00 Grovyle Its strongly developed thigh muscles give it astounding agility and jumping performance.
195
+ 0254-00 Sceptile It agilely flits through the jungle and uses the sharp-edged leaves on its arms to cut down its prey.
196
+ 0255-00 Torchic Torchic feels toasty warm if you hug it. It has a flame sac inside its belly, and the flames burn continuously as long as Torchic has life in it.
197
+ 0256-00 Combusken It boosts its concentration by emitting harsh cries. Its kicks have outstanding destructive power.
198
+ 0257-00 Blaziken When facing a tough foe, it looses flames from its wrists. Its powerful legs let it jump clear over buildings.
199
+ 0258-00 Mudkip It has the power to crush large boulders into pieces. To rest, it buries itself in mud at the bottom of a river.
200
+ 0259-00 Marshtomp Living on muddy ground that provides poor footing has served to train its lower body and caused it to develop sturdy legs.
201
+ 0260-00 Swampert Its arms are hard as rock. With one swing, it can break an enormous boulder into pieces.
202
+ 0261-00 Poochyena It bares its large fangs and barks vigorously to try to intimidate opponents, but this is actually a manifestation of its cowardly nature.
203
+ 0262-00 Mightyena They faithfully follow the orders of their leader. Prey targeted by Mightyena is never allowed to escape the outstanding teamwork of its pursuers.
204
+ 0270-00 Lotad The leaf on its head is naturally dirt repellent and will stay clean even after transporting Pokémon that are covered in mud.
205
+ 0271-00 Lombre Old folklore in Kitakami tells of a mischievous child who was reborn as a Pokémon.
206
+ 0272-00 Ludicolo There are structures throughout its whole body that produce energy when hit by sound waves with a cheerful rhythm.
207
+ 0273-00 Seedot To expand its habitat, it pretends to be a nut so that bird Pokémon will pick it up and carry it far away.
208
+ 0274-00 Nuzleaf It leads a quiet life deep in the forest. If anything wanders into its territory, Nuzleaf will warn the intruder by sounding its grass flute.
209
+ 0275-00 Shiftry It is said that when Shiftry flaps its leafy fans atop ancient trees, chilly winds blow and the season rolls into winter.
210
+ 0278-00 Wingull It soars high in the sky, riding on updrafts like a glider. It carries food tucked in its bill.
211
+ 0279-00 Pelipper It is a flying transporter that carries small Pokémon in its beak. It bobs on the waves to rest its wings.
212
+ 0280-00 Ralts The horns on its head provide a strong power that enables it to sense people’s emotions.
213
+ 0281-00 Kirlia It has a psychic power that enables it to distort the space around it and see into the future.
214
+ 0282-00 Gardevoir To protect its Trainer, it will expend all its psychic power to create a small black hole.
215
+ 0283-00 Surskit They usually live on ponds, but after an evening shower, they may appear on puddles in towns.
216
+ 0284-00 Masquerain It flaps its four wings to hover and fly freely in any direction—to and fro and sideways.
217
+ 0285-00 Shroomish It prefers damp places. By day it remains still in the forest shade. It releases toxic powder from its head.
218
+ 0286-00 Breloom It scatters poisonous spores and throws powerful punches while its foe is hampered by inhaled spores.
219
+ 0287-00 Slakoth It sleeps for 20 hours every day. Making drowsy those that see it is one of its abilities.
220
+ 0288-00 Vigoroth Its stress level rises if it cannot keep moving constantly. Too much stress makes it feel sick.
221
+ 0289-00 Slaking It is the world’s most slothful Pokémon. However, it can exert horrifying power by releasing pent-up energy all at once.
222
+ 0296-00 Makuhita It grows stronger by enduring harsh training. It is a gutsy Pokémon that can withstand any attack.
223
+ 0297-00 Hariyama It loves challenging others to tests of strength. It has the power to stop a train with a slap.
224
+ 0298-00 Azurill Its tail bounces like a rubber ball. It flings that tail around to fight opponents bigger than itself.
225
+ 0299-00 Nosepass The magnet in Nosepass’s nose provides an unerring compass, making this Pokémon an excellent partner for Trainers going on a journey.
226
+ 0302-00 Sableye It dwells in the darkness of caves. It uses its sharp claws to dig up gems to nourish itself.
227
+ 0307-00 Meditite It never skips its daily yoga training. It heightens its inner strength through meditation.
228
+ 0308-00 Medicham Through yoga training, it gained the psychic power to predict its foe’s next move.
229
+ 0311-00 Plusle It cheers on partners while scattering sparks from its body. It climbs telephone poles to absorb electricity.
230
+ 0312-00 Minun Exposure to electricity from Minun and Plusle promotes blood circulation and relaxes muscles.
231
+ 0313-00 Volbeat It lives around clean ponds. At night, its rear lights up. It converses with others by flashing its light.
232
+ 0314-00 Illumise Illumise uses its sweet scent to guide Volbeat, having them form over 200 patterns in the night sky.
233
+ 0316-00 Gulpin There is nothing its stomach can’t digest. While it is digesting, vile, overpowering gases are expelled.
234
+ 0317-00 Swalot It gulps anything that fits in its mouth. Its special enzymes can dissolve anything.
235
+ 0322-00 Numel Magma of almost 2,200 degrees Fahrenheit courses through its body. When it grows cold, the magma hardens and slows it.
236
+ 0323-00 Camerupt It lives in the crater of a volcano. It is well known that the humps on its back erupt every 10 years.
237
+ 0324-00 Torkoal It burns coal inside its shell for energy. It blows out black soot if it is endangered.
238
+ 0325-00 Spoink Spoink will die if it stops bouncing. The pearl on its head amplifies its psychic powers.
239
+ 0326-00 Grumpig It can perform odd dance steps to influence foes. Its style of dancing became hugely popular overseas.
240
+ 0328-00 Trapinch This Pokémon lives in arid deserts. It patiently awaits prey inside its funnel- shaped nest.
241
+ 0329-00 Vibrava Rather than using its underdeveloped wings for flight, it rubs them together, emitting ultrasonic waves to attack its enemies.
242
+ 0330-00 Flygon Known as the Desert Spirit, this Pokémon hides in the sandstorms it causes by beating its wings.
243
+ 0331-00 Cacnea It prefers harsh environments, such as deserts. It can survive for 30 days on water stored in its body.
244
+ 0332-00 Cacturne Packs of them follow travelers through the desert until the travelers can no longer move.
245
+ 0333-00 Swablu It constantly grooms its cotton-like wings. It takes a shower to clean itself if it becomes dirty.
246
+ 0334-00 Altaria If it bonds with a person, it will gently envelop the friend with its soft wings, then hum.
247
+ 0335-00 Zangoose It’s Seviper’s archrival. To threaten those it encounters, it fans out the claws on its front paws.
248
+ 0336-00 Seviper It sharpens its swordlike tail on hard rocks. It hides in tall grass and strikes unwary prey with venomous fangs.
249
+ 0339-00 Barboach Its two whiskers provide a sensitive radar. Even in muddy waters, it can detect its prey’s location.
250
+ 0340-00 Whiscash It is extremely protective of its territory. If any foe approaches, it attacks using vicious tremors.
251
+ 0341-00 Corphish It came from overseas. It is a very hardy creature that will quickly proliferate, even in polluted streams.
252
+ 0342-00 Crawdaunt Loving to battle, this Pokémon pinches all Pokémon that enter its territory with its pincers and throws them out.
frontend/public/the-bitter-lesson.html ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <html><head>
2
+ <title>The Bitter Lesson</title>
3
+ <style type="text/css">
4
+ <!--
5
+ .style1 {font-family: Palatino}
6
+ -->
7
+ </style>
8
+ </head>
9
+ <body>
10
+ <span class="style1">
11
+ <h1>The Bitter Lesson<br>
12
+ </h1>
13
+ <h2>Rich Sutton</h2>
14
+ <h3>March 13, 2019<br>
15
+ </h3>
16
+ The biggest lesson that can be read from 70 years of AI research is
17
+ that general methods that leverage computation are ultimately the most
18
+ effective, and by a large margin. The ultimate reason for this is
19
+ Moore's law, or rather its generalization of continued exponentially
20
+ falling cost per unit of computation. Most AI research has been
21
+ conducted as if the computation available to the agent were constant
22
+ (in which case leveraging human knowledge would be one of the only ways
23
+ to improve performance) but, over a slightly longer time than a typical
24
+ research project, massively more computation inevitably becomes
25
+ available. Seeking an improvement that makes a difference in the
26
+ shorter term, researchers seek to leverage their human knowledge of the
27
+ domain, but the only thing that matters in the long run is the
28
+ leveraging of computation. These two need not run counter to each
29
+ other, but in practice they tend to. Time spent on one is time not
30
+ spent on the other. There are psychological commitments to investment
31
+ in one approach or the other. And the human-knowledge approach tends to
32
+ complicate methods in ways that make them less suited to taking
33
+ advantage of general methods leveraging computation.&nbsp; There were
34
+ many examples of AI researchers' belated learning of this bitter
35
+ lesson,
36
+ and it is instructive to review some of the most prominent.<br>
37
+ <br>
38
+ In computer chess, the methods that defeated the world champion,
39
+ Kasparov, in 1997, were based on massive, deep search. At the time,
40
+ this was looked upon with dismay by the majority of computer-chess
41
+ researchers who had pursued methods that leveraged human understanding
42
+ of the special structure of chess. When a simpler, search-based
43
+ approach with special hardware and software proved vastly more
44
+ effective, these human-knowledge-based chess researchers were not good
45
+ losers. They said that ``brute force" search may have won this time,
46
+ but it was not a general strategy, and anyway it was not how people
47
+ played chess. These researchers wanted methods based on human input to
48
+ win and were disappointed when they did not.<br>
49
+ <br>
50
+ A similar pattern of research progress was seen in computer Go, only
51
+ delayed by a further 20 years. Enormous initial efforts went into
52
+ avoiding search by taking advantage of human knowledge, or of the
53
+ special features of the game, but all those efforts proved irrelevant,
54
+ or worse, once search was applied effectively at scale. Also important
55
+ was the use of learning by self play to learn a value function (as it
56
+ was in many other games and even in chess, although learning did not
57
+ play a big role in the 1997 program that first beat a world champion).
58
+ Learning by self play, and learning in general, is like search in that
59
+ it enables massive computation to be brought to bear. Search and
60
+ learning are the two most important classes of techniques for utilizing
61
+ massive amounts of computation in AI research. In computer Go, as in
62
+ computer chess, researchers' initial effort was directed towards
63
+ utilizing human understanding (so that less search was needed) and only
64
+ much later was much greater success had by embracing search and
65
+ learning.<br>
66
+ <br>
67
+ In speech recognition, there was an early competition, sponsored by
68
+ DARPA, in the 1970s. Entrants included a host of special methods that
69
+ took
70
+ advantage of human knowledge---knowledge of words, of phonemes, of the
71
+ human vocal tract, etc. On the other side were newer methods that were
72
+ more statistical in nature and did much more computation, based on
73
+ hidden Markov models (HMMs). Again, the statistical methods won out
74
+ over the human-knowledge-based methods. This led to a major change in
75
+ all of natural language processing, gradually over decades, where
76
+ statistics and computation came to dominate the field. The recent rise
77
+ of deep learning in speech recognition is the most recent step in this
78
+ consistent direction. Deep learning methods rely even less on human
79
+ knowledge, and use even more computation, together with learning on
80
+ huge training sets, to produce dramatically better speech recognition
81
+ systems. As in the games, researchers always tried to make systems that
82
+ worked the way the researchers thought their own minds worked---they
83
+ tried to put that knowledge in their systems---but it proved ultimately
84
+ counterproductive, and a colossal waste of researcher's time, when,
85
+ through Moore's law, massive computation became available and a means
86
+ was found to put it to good use.<br>
87
+ <br>
88
+ In computer vision, there has been a similar pattern. Early methods
89
+ conceived of vision as searching for edges, or generalized cylinders,
90
+ or in terms of SIFT features. But today all this is discarded. Modern
91
+ deep-learning neural networks use only the notions of convolution and
92
+ certain kinds of invariances, and perform much better.<br>
93
+ <br>
94
+ This is a big lesson. As a field, we still have not thoroughly learned
95
+ it, as we are continuing to make the same kind of mistakes. To see
96
+ this, and to effectively resist it, we have to understand the appeal of
97
+ these mistakes. We have to learn the bitter lesson that building in how
98
+ we think we think does not work in the long run. The bitter lesson is
99
+ based on the historical observations that 1) AI researchers have often
100
+ tried to build knowledge into their agents, 2) this always helps in the
101
+ short term, and is personally satisfying to the researcher, but 3) in
102
+ the long run it plateaus and even inhibits further progress, and 4)
103
+ breakthrough progress eventually arrives by an opposing approach based
104
+ on scaling computation by search and learning. The eventual success is
105
+ tinged with bitterness, and often incompletely digested, because it is
106
+ success over a favored, human-centric approach. <br>
107
+ <br>
108
+ One thing that should be learned from the bitter lesson is the great
109
+ power of general purpose methods, of methods that continue to scale
110
+ with increased computation even as the available computation becomes
111
+ very great. The two methods that seem to scale arbitrarily in this way
112
+ are <span style="font-style: italic;">search</span> and <span style="font-style: italic;">learning</span>. <br>
113
+ <br>
114
+ The second general point to be learned from the bitter lesson is that
115
+ the actual contents of minds are tremendously, irredeemably complex; we
116
+ should stop trying to find simple ways to think about the contents of
117
+ minds, such as simple ways to think about space, objects, multiple
118
+ agents, or symmetries. All these are part of the arbitrary,
119
+ intrinsically-complex, outside world. They are not what should be built
120
+ in, as their complexity is endless; instead we should build in only the
121
+ meta-methods that can find and capture this arbitrary complexity.
122
+ Essential to these methods is that they can find good approximations,
123
+ but the search for them should be by our methods, not by us. We want AI
124
+ agents that can discover like we can, not which contain what we have
125
+ discovered. Building in our discoveries only makes it harder to see how
126
+ the discovering process can be done.<br>
127
+ <br>
128
+ </span>
129
+
130
+
131
+ </body></html>
frontend/src/components/BenchmarkCreateForm.jsx CHANGED
@@ -8,6 +8,8 @@ import {
8
  Snackbar,
9
  Alert,
10
  Grid,
 
 
11
  } from "@mui/material";
12
  import { alpha } from "@mui/material/styles";
13
  import CloudUploadIcon from "@mui/icons-material/CloudUpload";
@@ -16,6 +18,7 @@ import InsertDriveFileIcon from "@mui/icons-material/InsertDriveFile";
16
  import DescriptionIcon from "@mui/icons-material/Description";
17
  import ArticleIcon from "@mui/icons-material/Article";
18
  import MenuBookIcon from "@mui/icons-material/MenuBook";
 
19
  import { useThemeMode } from "../hooks/useThemeMode";
20
  import getTheme from "../config/theme";
21
  import API_CONFIG from "../config/api";
@@ -37,6 +40,7 @@ function BenchmarkCreateForm({ onStartGeneration }) {
37
  const [openSnackbar, setOpenSnackbar] = useState(false);
38
  const [selectedDocument, setSelectedDocument] = useState(null);
39
  const [isDefaultDocument, setIsDefaultDocument] = useState(false);
 
40
  const fileInputRef = useRef(null);
41
 
42
  const defaultDocuments = [
@@ -180,6 +184,42 @@ function BenchmarkCreateForm({ onStartGeneration }) {
180
  }
181
  };
182
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
183
  return (
184
  <Box sx={{ mt: -2 }}>
185
  <Typography
@@ -205,7 +245,7 @@ function BenchmarkCreateForm({ onStartGeneration }) {
205
  cursor: "pointer",
206
  transition: "all 0.2s ease",
207
  height: "100%",
208
- // border: "2px solid rgba(0, 0, 0, 0.1)",
209
  border:
210
  selectedDocument?.id === doc.id
211
  ? `2px solid ${theme.palette.primary.main}`
@@ -217,6 +257,36 @@ function BenchmarkCreateForm({ onStartGeneration }) {
217
  }}
218
  onClick={() => handleDefaultDocClick(doc)}
219
  >
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
220
  <Box sx={{ color: "primary.main", mb: 1 }}>{doc.icon}</Box>
221
  <Typography variant="subtitle1" component="div" gutterBottom>
222
  {doc.name}
 
8
  Snackbar,
9
  Alert,
10
  Grid,
11
+ IconButton,
12
+ Tooltip,
13
  } from "@mui/material";
14
  import { alpha } from "@mui/material/styles";
15
  import CloudUploadIcon from "@mui/icons-material/CloudUpload";
 
18
  import DescriptionIcon from "@mui/icons-material/Description";
19
  import ArticleIcon from "@mui/icons-material/Article";
20
  import MenuBookIcon from "@mui/icons-material/MenuBook";
21
+ import DownloadIcon from "@mui/icons-material/Download";
22
  import { useThemeMode } from "../hooks/useThemeMode";
23
  import getTheme from "../config/theme";
24
  import API_CONFIG from "../config/api";
 
40
  const [openSnackbar, setOpenSnackbar] = useState(false);
41
  const [selectedDocument, setSelectedDocument] = useState(null);
42
  const [isDefaultDocument, setIsDefaultDocument] = useState(false);
43
+ const [isDownloading, setIsDownloading] = useState(false);
44
  const fileInputRef = useRef(null);
45
 
46
  const defaultDocuments = [
 
184
  }
185
  };
186
 
187
+ const handleDownloadDocument = async (doc) => {
188
+ setIsDownloading(true);
189
+ try {
190
+ const link = document.createElement("a");
191
+ link.href = `/${doc.id}.${
192
+ doc.id === "the-bitter-lesson"
193
+ ? "html"
194
+ : doc.id === "hurricane-faq"
195
+ ? "md"
196
+ : "txt"
197
+ }`;
198
+ link.setAttribute(
199
+ "download",
200
+ `${doc.name}.${
201
+ doc.id === "the-bitter-lesson"
202
+ ? "html"
203
+ : doc.id === "hurricane-faq"
204
+ ? "md"
205
+ : "txt"
206
+ }`
207
+ );
208
+ document.body.appendChild(link);
209
+ link.click();
210
+ document.body.removeChild(link);
211
+ } catch (error) {
212
+ console.error("Error downloading document:", error);
213
+ setUploadStatus({
214
+ success: false,
215
+ message: "Error downloading document",
216
+ });
217
+ setOpenSnackbar(true);
218
+ } finally {
219
+ setIsDownloading(false);
220
+ }
221
+ };
222
+
223
  return (
224
  <Box sx={{ mt: -2 }}>
225
  <Typography
 
245
  cursor: "pointer",
246
  transition: "all 0.2s ease",
247
  height: "100%",
248
+ position: "relative",
249
  border:
250
  selectedDocument?.id === doc.id
251
  ? `2px solid ${theme.palette.primary.main}`
 
257
  }}
258
  onClick={() => handleDefaultDocClick(doc)}
259
  >
260
+ <Tooltip title="Download document">
261
+ <IconButton
262
+ onClick={(e) => {
263
+ e.stopPropagation();
264
+ handleDownloadDocument(doc);
265
+ }}
266
+ sx={{
267
+ position: "absolute",
268
+ top: 4,
269
+ right: 4,
270
+ color: "text.secondary",
271
+ opacity: 0.6,
272
+ "&:hover": {
273
+ opacity: 1,
274
+ backgroundColor: alpha(theme.palette.primary.main, 0.05),
275
+ },
276
+ padding: 0.5,
277
+ "& .MuiSvgIcon-root": {
278
+ fontSize: 18,
279
+ },
280
+ }}
281
+ disabled={isDownloading}
282
+ >
283
+ {isDownloading ? (
284
+ <CircularProgress size={16} />
285
+ ) : (
286
+ <DownloadIcon />
287
+ )}
288
+ </IconButton>
289
+ </Tooltip>
290
  <Box sx={{ color: "primary.main", mb: 1 }}>{doc.icon}</Box>
291
  <Typography variant="subtitle1" component="div" gutterBottom>
292
  {doc.name}
frontend/src/components/ExternalLinks.jsx CHANGED
@@ -76,6 +76,18 @@ const ExternalLinks = () => {
76
  Documentation
77
  <OpenInNewIcon sx={{ fontSize: "0.75rem", ml: 0.5, opacity: 0.6 }} />
78
  </a>
 
 
 
 
 
 
 
 
 
 
 
 
79
  </Typography>
80
  <Box sx={{ display: "flex", alignItems: "center" }}>
81
  <Tooltip title="Share">
 
76
  Documentation
77
  <OpenInNewIcon sx={{ fontSize: "0.75rem", ml: 0.5, opacity: 0.6 }} />
78
  </a>
79
+ <Typography component="span" sx={{ opacity: 0.5 }}>
80
+
81
+ </Typography>
82
+ <a
83
+ href="https://huggingface.co/spaces/yourbench/yourbench-demo"
84
+ target="_blank"
85
+ rel="noopener noreferrer"
86
+ style={{ textDecoration: "none", color: "inherit" }}
87
+ >
88
+ Full demo
89
+ <OpenInNewIcon sx={{ fontSize: "0.75rem", ml: 0.5, opacity: 0.6 }} />
90
+ </a>
91
  </Typography>
92
  <Box sx={{ display: "flex", alignItems: "center" }}>
93
  <Tooltip title="Share">