TheXeos commited on
Commit
d83b83b
1 Parent(s): dd6cd6c

Cleanup and run in headless mode

Browse files
Files changed (2) hide show
  1. app.py +1 -7
  2. background_task.py +19 -3
app.py CHANGED
@@ -1,14 +1,8 @@
1
- import json
2
- import requests
3
- from datasets import load_dataset
4
  import gradio as gr
5
- from huggingface_hub import HfApi, hf_hub_download
6
- from huggingface_hub.repocard import metadata_load
7
- import pandas as pd
8
  from matchmaking import *
9
  from background_task import init_matchmaking, get_elo_data
10
  from apscheduler.schedulers.background import BackgroundScheduler
11
- import asyncio
12
 
13
  matchmaking = Matchmaking()
14
  api = HfApi()
 
 
 
 
1
  import gradio as gr
2
+ from huggingface_hub import HfApi
 
 
3
  from matchmaking import *
4
  from background_task import init_matchmaking, get_elo_data
5
  from apscheduler.schedulers.background import BackgroundScheduler
 
6
 
7
  matchmaking = Matchmaking()
8
  api = HfApi()
background_task.py CHANGED
@@ -1,7 +1,5 @@
1
  import os
2
- import time
3
  import random
4
- import asyncio
5
  import subprocess
6
  import pandas as pd
7
  from datetime import datetime
@@ -155,13 +153,15 @@ class Matchmaking:
155
 
156
  def match(model1, model2):
157
  """
 
 
158
  :param model1: First Model object
159
  :param model2: Second Model object
160
  :return: match result (0: model1 lost, 0.5: draw, 1: model1 won)
161
  """
162
  model1_id = model1.author + "/" + model1.name
163
  model2_id = model2.author + "/" + model2.name
164
- subprocess.run(["./SoccerTows.x86_64", "-model1", model1_id, "-model2", model2_id])
165
  print(f"Match {model1_id} against {model2_id} ended.")
166
  model1.games_played += 1
167
  model2.games_played += 1
@@ -169,6 +169,8 @@ def match(model1, model2):
169
 
170
  def get_models_list() -> list:
171
  """
 
 
172
  :return: list of Model objects
173
  """
174
  models = []
@@ -187,12 +189,26 @@ def get_models_list() -> list:
187
 
188
 
189
  def get_elo_data() -> pd.DataFrame:
 
 
 
 
 
190
  repo.git_pull()
191
  data = pd.read_csv(os.path.join(DATASET_REPO_URL, "resolve", "main", ELO_FILENAME))
192
  return data
193
 
194
 
195
  def init_matchmaking():
 
 
 
 
 
 
 
 
 
196
  models = get_models_list()
197
  matchmaking = Matchmaking(models)
198
  matchmaking.run()
 
1
  import os
 
2
  import random
 
3
  import subprocess
4
  import pandas as pd
5
  from datetime import datetime
 
153
 
154
  def match(model1, model2):
155
  """
156
+ Simulate a match between two models using the Unity environment.
157
+
158
  :param model1: First Model object
159
  :param model2: Second Model object
160
  :return: match result (0: model1 lost, 0.5: draw, 1: model1 won)
161
  """
162
  model1_id = model1.author + "/" + model1.name
163
  model2_id = model2.author + "/" + model2.name
164
+ subprocess.run(["./SoccerTows.x86_64", "-model1", model1_id, "-model2", model2_id, "-nographics", "-batchmode"])
165
  print(f"Match {model1_id} against {model2_id} ended.")
166
  model1.games_played += 1
167
  model2.games_played += 1
 
169
 
170
  def get_models_list() -> list:
171
  """
172
+ Get the list of models from the hub and the ELO file.
173
+
174
  :return: list of Model objects
175
  """
176
  models = []
 
189
 
190
 
191
  def get_elo_data() -> pd.DataFrame:
192
+ """
193
+ Get the ELO data from the hub for all the models that have played at least one game.
194
+
195
+ :return: ELO data as a pandas DataFrame
196
+ """
197
  repo.git_pull()
198
  data = pd.read_csv(os.path.join(DATASET_REPO_URL, "resolve", "main", ELO_FILENAME))
199
  return data
200
 
201
 
202
  def init_matchmaking():
203
+ """
204
+ Run the matchmaking algorithm and save the results to the hub.
205
+
206
+ 1. Get the list of models from the hub and the ELO data
207
+ 2. Match models together based on their ELO rating
208
+ 3. Simulate the matches using Unity to get the match result
209
+ 4. Compute the new ELO rating for each model
210
+ 5. Save the results to the hub
211
+ """
212
  models = get_models_list()
213
  matchmaking = Matchmaking(models)
214
  matchmaking.run()