Spaces:
Running
Running
File size: 8,185 Bytes
aaef8e0 5f1dcbd aaef8e0 cc1bfb0 aaef8e0 cc1bfb0 aaef8e0 cc1bfb0 aaef8e0 5f1dcbd aaef8e0 e422f61 aaef8e0 e422f61 aaef8e0 e422f61 aaef8e0 e422f61 aaef8e0 e422f61 aaef8e0 e422f61 aaef8e0 e422f61 |
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 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
import os
import logging
from typing import Optional
import pandas as pd
import requests
LEADERBOARDS = {
'notsofar_sc': pd.DataFrame({'#': {0: 1, 1: 2, 2: 3, 3: 4}, 'Team': {0: 'ToTaTo', 1: 'ts', 2: '--', 3: 'NOTSOFAR baseline'}, 'TCP WER (%)': {0: 37.58, 1: 41.905, 2: 45.198, 3: 45.844}, 'tcORC WER (%)': {0: 25.833, 1: 36.107, 2: 37.536, 3: 38.604}, 'Entries': {0: 17, 1: 3, 2: 3, 3: 1}, 'Last': {0: '16d', 1: '29d', 2: '42d', 3: '74d'}}),
'notsofar_mc': pd.DataFrame({'#': {0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10, 10: 11}, 'Team': {0: 'STS (DASR-LM)', 1: 'ts', 2: 'short', 3: 'long', 4: 'BUT', 5: 'IE', 6: 'NOTSOFAR baseline', 7: '--', 8: 'DASR Organizers (DASR-LM)', 9: 'DASR Organizers (NeMo) (DASR-LM)', 10: '---new'}, 'TCP WER (%)': {0: 22.447, 1: 23.857, 2: 26.887, 3: 30.738, 4: 31.35, 5: 31.392, 6: 31.551, 7: 35.276, 8: 48.136, 9: 61.342, 10: 63.598}, 'tcORC WER (%)': {0: 10000.0, 1: 19.864, 2: 15.721, 3: 20.311, 4: 26.417, 5: 26.376, 6: 26.597, 7: 26.426, 8: 36.303, 9: 47.87, 10: 26.438}, 'Entries': {0: 1, 1: 15, 2: 1, 3: 2, 4: 3, 5: 5, 6: 1, 7: 9, 8: 1, 9: 2, 10: 1}, 'Last': {0: '8d', 1: '22d', 2: '64d', 3: '69d', 4: '71d', 5: '30d', 6: '74d', 7: '8d', 8: '60d', 9: '59d', 10: '7d'}}),
'dasr_constrained_lm': pd.DataFrame({'#': {0: 1, 1: 2, 2: 3}, 'Team': {0: 'STS', 1: 'DASR Organizers (NeMo)', 2: 'DASR Organizers'}, 'TCP WER (%)': {0: 49.692, 1: 54.56, 2: 65.656}, 'chime6': {0: 82.367, 1: 56.532, 2: 88.708}, 'mixer6': {0: 28.169, 1: 24.888, 2: 29.235}, 'dipco': {0: 66.307, 1: 75.787, 2: 98.44}, 'notsofar1': {0: 21.925, 1: 61.031, 2: 46.24}, 'Entries': {0: 1, 1: 2, 2: 1}, 'Last': {0: '8d', 1: '59d', 2: '60d'}}),
'dasr_unconstrained_lm': pd.DataFrame()
}
class LeaderboardServer:
def __init__(self):
self._LOG = logging.getLogger('leaderboard_server')
self._server_address = os.environ['LEADERBOARD_SERVER_ADDRESS']
def get_leaderboard(self, submission_type: str, dataset_version: str) -> pd.DataFrame:
"""
Gets the leaderboard of the given submission type
Args:
submission_type: the type of the submission to get the leaderboard of:
'SC' / 'MC-specific' / 'MC-agnostic' / 'MC-agnostic-all'
dataset_version: the version of the dataset to get the leaderboard of ('Devset1' / 'Devset2' / ...)
"""
self._LOG.info(f'Getting leaderboard for submission type: {submission_type}')
endpoint = f'{self._server_address}/leaderboard'
submission_type = submission_type.lower().replace('-', '_')
response = requests.get(endpoint, params={'submission_type': submission_type,
'dataset_version': dataset_version})
if response.status_code != 200:
return LEADERBOARDS[submission_type]
# self._LOG.error(f'Error while fetching leaderboard, status code: {response.status_code}, '
# f'response: {response.text}, endpoint: {endpoint}')
# return pd.DataFrame()
return pd.DataFrame(response.json())
def get_submissions_by_hf_token(self, hf_token: str) -> pd.DataFrame:
"""
Gets the submissions of the given hf token
Args:
hf_token: the hf token to get the submissions of
"""
self._LOG.info(f'Fetching submissions')
endpoint = f'{self._server_address}/submissions'
response = requests.get(endpoint, params={'token': hf_token})
if response.status_code != 200:
self._LOG.error(f'Error while fetching submissions, status code: {response.status_code}, '
f'response: {response.text}, endpoint: {endpoint}')
return pd.DataFrame()
return pd.DataFrame(response.json())
def is_hf_token_valid(self, hf_token: str) -> Optional[bool]:
"""
Validates the given hf token
Args:
hf_token: the hf token to validate
"""
self._LOG.info(f'Validating hf token')
endpoint = f'{self._server_address}/validate_hf_token'
response = requests.get(endpoint, params={'token': hf_token})
if response.status_code != 200:
self._LOG.error(f'Error while validating hf token, status code: {response.status_code}, '
f'response: {response.text}, endpoint: {endpoint}')
return None
return response.json()['valid']
def get_submission_count_last_24_hours(self, hf_token: str) -> Optional[int]:
"""
Gets the number of submissions of the given hf token in the last 24 hours
Args:
hf_token: the hf token to get the submissions count of
"""
self._LOG.info(f'fetching submissions count for the last 24 hours')
endpoint = f'{self._server_address}/submission_count_last_24_hours'
response = requests.get(endpoint, params={'token': hf_token})
if response.status_code != 200:
self._LOG.error(f'Error while fetching submissions count, status code: {response.status_code}, '
f'response: {response.text}, endpoint: {endpoint}')
return None
return int(response.json()['count'])
def add_submission(self, token: str, file_path: str, metadata: dict) -> dict:
"""
Adds a submission to the leaderboard based on the given file and metadata
Args:
token: the token of the team
file_path: the path of the file to submit
metadata: the metadata of the submission
"""
self._LOG.info(f'Adding submission for team: {metadata["team_name"]}, '
f'submission type: {metadata["submission_type"]}')
endpoint = f'{self._server_address}/add_submission'
metadata['token'] = token
metadata['submission_type'] = metadata['submission_type'].lower().replace('-', '_')
with open(file_path, 'rb') as payload_file:
files = {'zip_file': payload_file}
response = requests.post(endpoint, files=files, params=metadata, timeout=600)
if response.status_code != 200:
self._LOG.error(f'Error while adding submission, status code: {int(response.status_code)}, '
f'response: {response.text}, endpoint: {endpoint}')
return dict(error=response.json()['message'])
return response.json()
def main():
"""
Usage of the LeaderboardServer class
"""
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
server = LeaderboardServer()
hf_token = str(os.environ['HF_TOKEN'])
print('leaderboard:\n', server.get_leaderboard('notsofar_mc'))
print('submissions by hf token:\n', server.get_submissions_by_hf_token(hf_token))
print('is hf token valid:\n', server.is_hf_token_valid(hf_token))
print('is hf token valid:\n', server.is_hf_token_valid(hf_token + '1'))
print('add_submission:\n', server.add_submission(
token=hf_token,
file_path=fr"C:\Users\shaipeer\Downloads\submissions\notsofar_submission.zip",
metadata={
'challenge_name': 'NOTSOFAR1',
'team_name': 'NOTSOFAR Test Team',
'submission_type': 'notsofar_mc',
'description': 'Test NOTSOFAR submission',
'token': hf_token,
'file_name': 'notsofar_submission.zip',
'file_size_mb': 10,
'ip': '127.0.0.1'
}))
print('add_submission:\n', server.add_submission(
token=hf_token,
file_path=fr"C:\Users\shaipeer\Downloads\submissions\chime_submission.zip",
metadata={
'challenge_name': 'NOTSOFAR1',
'team_name': 'Chime Test Team',
'submission_type': 'dasr_unconstrained_lm',
'description': 'Test chime submission',
'token': hf_token,
'file_name': 'chime_submission.zip',
'file_size_mb': 10,
'ip': '127.0.0.1'
}))
if __name__ == '__main__':
main()
|