File size: 4,402 Bytes
b7bb8e1
42ebf2f
b7bb8e1
 
 
 
 
 
 
 
 
 
 
 
 
023be5d
b7bb8e1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
023be5d
b7bb8e1
 
 
 
 
 
 
6f46ea5
 
 
 
b7bb8e1
 
 
 
 
 
 
 
42ebf2f
 
52670a6
42ebf2f
 
 
 
 
 
 
 
 
 
 
 
 
1ace7ef
9c05a4a
 
 
42ebf2f
 
 
5eb9e5d
da8e06f
 
 
 
 
5eb9e5d
 
da8e06f
 
 
5eb9e5d
da8e06f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5eb9e5d
b7bb8e1
 
 
 
 
5eb9e5d
b7bb8e1
 
 
 
42ebf2f
 
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
from huggingface_hub import *
import os
import json
import gradio as gr

fs = HfFileSystem()
api = HfApi()


def remove_from(text, from_model, to_model):
  text = text.replace(from_model, to_model)
  return text


def return_operation_requests(from_model, to_model):
  ls = [i['name'] for i in fs.ls(path=f'datasets/open-llm-leaderboard/requests/{from_model.split("/")[0]}') if from_model in i['name']]
  liste=[]

  for i in range(len(ls)):
    path_for = ls[i]
    will_write = json.loads(fs.read_text(path_for))
    will_write['model'] = to_model
    will_write = json.dumps(will_write)

    liste.extend([CommitOperationAdd(path_in_repo="/".join(remove_from(path_for, from_model, to_model).split("/")[3:]), path_or_fileobj=will_write.encode()),
                  CommitOperationDelete(path_in_repo="/".join(path_for.split("/")[3:]))])

  return liste


def return_operation_results(from_model, to_model):
  ls = [i['name'] for i in fs.ls(path=f'datasets/open-llm-leaderboard/results/{from_model}') if from_model in i['name']]
  liste=[]

  for i in range(len(ls)):
    path_for = ls[i]


    will_write = json.loads(fs.read_text(path_for))
    will_write['model_name'] = to_model
    will_write['config']['model_args'] = will_write['config']['model_args'].replace(from_model, to_model)
    will_write['model_name_sanitized'] = to_model.replace("/", "__", 1)
      
    will_write = json.dumps(will_write, indent=2)

    liste.extend([CommitOperationAdd(path_in_repo="/".join(remove_from(path_for, from_model, to_model).split("/")[3:]), path_or_fileobj=will_write.encode()),
                  CommitOperationDelete(path_in_repo="/".join(path_for.split("/")[3:]))])

  return liste



def model_name_to_details(model_name):
  return f"datasets/open-llm-leaderboard/{model_name.split('/')[0]}__{model_name.split('/')[1]}-details"


def return_operation_details(from_model, to_model):
  ls = [i['name'] for i in fs.ls(path=model_name_to_details(from_model)) if ("results" in i['name'] and ".json" in i['name'])]
  liste=[]

  for i in range(len(ls)):
    path_for = ls[i]

    will_write = json.loads(fs.read_text(path_for))
    will_write['config_general']['model_name'] = to_model
    will_write = json.dumps(will_write, indent=2)

    readme_file = fs.read_text("/".join(path_for.split("/")[:3])+"/README.md").replace(from_model, to_model).replace(model_name_to_details(from_model).split('/')[2], model_name_to_details(to_model).split('/')[2])

    liste.extend([CommitOperationAdd(path_in_repo="/".join(path_for.split("/")[3:]), path_or_fileobj=will_write.encode()), 
                  CommitOperationAdd(path_in_repo="README.md", path_or_fileobj=readme_file.encode())])

  return liste

def commit(liste_requests, liste_results, from_model, to_model):
  common_for_commits = {"commit_message": f"Renaming Model {from_model} to {to_model}", "repo_type": "dataset", "create_pr": True}

  request_commit = (create_commit(repo_id="open-llm-leaderboard/requests", operations=liste_requests, **common_for_commits))
  result_commit = (create_commit(repo_id="open-llm-leaderboard/results", operations=liste_results, **common_for_commits))
  
  all_commits = [request_commit, result_commit]
  all_repo_ids = ["open-llm-leaderboard/requests", "open-llm-leaderboard/results"]

  # Edit comment descriptions
    
  content = f"{request_commit.pr_url}\n{result_commit.pr_url}"

  content = f"""This is a pull request aiming to rename the model {from_model} to {to_model}. All related pull requests to rename this model can be found below.
# Requests

{request_commit.pr_url}

# Results

{result_commit.pr_url}
"""
  
  for i, common_repo_id in enumerate(all_repo_ids):
    commit = all_commits[i]
    common_for_edits = {"repo_id": common_repo_id, "discussion_num": commit.pr_num, "repo_type": "dataset"}

    comment_id = get_discussion_details(**common_for_edits).events[0].id
    edit_discussion_comment(**common_for_edits, comment_id=comment_id, new_content=content)


  return f"{request_commit.pr_url}\n{result_commit.pr_url}"


def commit_gradio(from_model, to_model, hf_token):
    try:
      login(hf_token)
      return commit(return_operation_requests(from_model, to_model), return_operation_results(from_model, to_model), from_model, to_model)
    except Exception as e:
      return e

demo = gr.Interface(fn=commit_gradio, inputs=["text", "text", "text"], outputs="text")

demo.launch(debug=True)