samuelrince commited on
Commit
d4dcccb
·
1 Parent(s): 8410b32

feat: update model listing

Browse files
Files changed (2) hide show
  1. src/constants.py +39 -63
  2. src/models.py +70 -7
src/constants.py CHANGED
@@ -11,7 +11,6 @@ PROMPTS = [(s + f" ({v} output tokens)", v) for (s, v) in PROMPTS]
11
  MODEL_REPOSITORY_URL = "https://raw.githubusercontent.com/genai-impact/ecologits/refs/heads/main/ecologits/data/models.json"
12
 
13
  main_models_openai = [
14
- "chatgpt-4o-latest",
15
  "gpt-3.5-turbo",
16
  "gpt-4",
17
  "gpt-4-turbo",
@@ -19,93 +18,70 @@ main_models_openai = [
19
  "gpt-4o-mini",
20
  "o1",
21
  "o1-mini",
22
- ]
23
-
24
- main_models_meta = [
25
- "meta-llama/Meta-Llama-3.1-8B",
26
- "meta-llama/Meta-Llama-3.1-70B",
27
- "meta-llama/Meta-Llama-3.1-405B",
28
- "meta-llama/Meta-Llama-3-8B",
29
- "meta-llama/Meta-Llama-3-70B",
30
- "meta-llama/Meta-Llama-3-70B",
31
- "meta-llama/Llama-2-7b",
32
- "meta-llama/Llama-2-13b",
33
- "meta-llama/Llama-2-70b",
34
- "meta-llama/CodeLlama-7b-hf",
35
- "meta-llama/CodeLlama-13b-hf",
36
- "meta-llama/CodeLlama-34b-hf",
37
- "meta-llama/CodeLlama-70b-hf",
38
- ]
39
-
40
- main_models_msft = [
41
- "microsoft/phi-1",
42
- "microsoft/phi-1_5",
43
- "microsoft/Phi-3-mini-128k-instruct",
44
- "microsoft/Phi-3-small-128k-instruct",
45
- "microsoft/Phi-3-medium-128k-instruct",
46
  ]
47
 
48
  main_models_anthropic = [
49
- "claude-2.0",
50
- "claude-2.1",
51
  "claude-3-5-haiku-latest",
52
  "claude-3-5-sonnet-latest",
53
  "claude-3-7-sonnet-latest",
54
- "claude-3-haiku-20240307",
55
- "claude-3-opus-latest",
56
- "claude-3-sonnet-20240229",
 
57
  ]
58
 
59
  main_models_cohere = [
60
- "c4ai-aya-expanse-8b",
61
- "c4ai-aya-expanse-32b",
62
- "command",
63
- "command-light",
64
  "command-r",
65
- "command-r-plus",
 
 
66
  ]
67
 
68
  main_models_google = [
69
- "google/gemma-2-2b",
70
- "google/gemma-2-9b",
71
- "google/gemma-2-27b",
72
- "google/codegemma-2b",
73
- "google/codegemma-7b",
74
- "gemini-1.0-pro",
75
- "gemini-1.5-pro",
76
- "gemini-1.5-flash",
77
  "gemini-2.0-flash",
78
- ]
79
-
80
- main_models_databricks = [
81
- "databricks/dolly-v1-6b",
82
- "databricks/dolly-v2-12b",
83
- "databricks/dolly-v2-7b",
84
- "databricks/dolly-v2-3b",
85
- "databricks/dbrx-base",
 
86
  ]
87
 
88
  main_models_mistral = [
89
- "mistralai/Mistral-7B-v0.3",
90
- "mistralai/Mixtral-8x7B-v0.1",
91
- "mistralai/Mixtral-8x22B-v0.1",
92
- "mistralai/Codestral-22B-v0.1",
93
- "mistralai/Mathstral-7B-v0.1",
94
  "ministral-3b-latest",
95
  "ministral-8b-latest",
96
- "mistral-tiny",
97
- "mistral-small",
98
- "mistral-medium",
99
  "mistral-large-latest",
 
 
 
 
 
 
 
100
  ]
101
 
102
  MAIN_MODELS = (
103
- main_models_meta
104
- + main_models_openai
105
  + main_models_anthropic
106
  + main_models_cohere
107
- + main_models_msft
108
  + main_models_mistral
109
- + main_models_databricks
110
  + main_models_google
111
  )
 
11
  MODEL_REPOSITORY_URL = "https://raw.githubusercontent.com/genai-impact/ecologits/refs/heads/main/ecologits/data/models.json"
12
 
13
  main_models_openai = [
 
14
  "gpt-3.5-turbo",
15
  "gpt-4",
16
  "gpt-4-turbo",
 
18
  "gpt-4o-mini",
19
  "o1",
20
  "o1-mini",
21
+ "o3-mini",
22
+ "gpt-4.1-nano",
23
+ "gpt-4.1-mini",
24
+ "gpt-4.1",
25
+ "o4-mini",
26
+ "gpt-5-nano",
27
+ "gpt-5-mini",
28
+ "gpt-5",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  ]
30
 
31
  main_models_anthropic = [
 
 
32
  "claude-3-5-haiku-latest",
33
  "claude-3-5-sonnet-latest",
34
  "claude-3-7-sonnet-latest",
35
+ "claude-opus-4-0",
36
+ "claude-opus-4-1",
37
+ "claude-sonnet-4-0",
38
+ "claude-sonnet-4-5"
39
  ]
40
 
41
  main_models_cohere = [
42
+ "command-a-03-2025",
 
 
 
43
  "command-r",
44
+ "command-r-08-2024",
45
+ "command-r-plus-08-2024",
46
+ "command-r7b-12-2024"
47
  ]
48
 
49
  main_models_google = [
50
+ "gemini-2.0-flash-lite",
 
 
 
 
 
 
 
51
  "gemini-2.0-flash",
52
+ "gemini-2.5-flash-lite",
53
+ "gemini-2.5-flash",
54
+ "gemini-2.5-pro",
55
+ "gemma-3-1b-it",
56
+ "gemma-3-4b-it",
57
+ "gemma-3-12b-it",
58
+ "gemma-3-27b-it",
59
+ "gemma-3n-e2b-it",
60
+ "gemma-3n-e4b-it"
61
  ]
62
 
63
  main_models_mistral = [
64
+ "codestral-latest",
65
+ "devstral-medium-latest",
66
+ "devstral-small-latest",
67
+ "magistral-medium-latest",
68
+ "magistral-small-latest",
69
  "ministral-3b-latest",
70
  "ministral-8b-latest",
 
 
 
71
  "mistral-large-latest",
72
+ "mistral-medium-latest",
73
+ "mistral-small-latest",
74
+ "mistral-tiny-latest",
75
+ "open-mistral-7b",
76
+ "open-mistral-nemo",
77
+ "open-mixtral-8x22b",
78
+ "open-mixtral-8x7b"
79
  ]
80
 
81
  MAIN_MODELS = (
82
+ main_models_openai
 
83
  + main_models_anthropic
84
  + main_models_cohere
 
85
  + main_models_mistral
 
86
  + main_models_google
87
  )
src/models.py CHANGED
@@ -1,8 +1,13 @@
1
- import requests
2
  import json
 
 
3
  import pandas as pd
4
- from src.constants import MODEL_REPOSITORY_URL, MAIN_MODELS
5
  import streamlit as st
 
 
 
 
 
6
 
7
 
8
  def clean_models_data(df, with_filter=True):
@@ -70,10 +75,68 @@ def clean_models_data(df, with_filter=True):
70
  ]
71
 
72
 
 
 
 
 
 
 
 
 
 
73
  @st.cache_data
74
- def load_models(filter_main=True):
75
- resp = requests.get(MODEL_REPOSITORY_URL)
76
- data = json.loads(resp.text)
77
- df = pd.DataFrame(data["models"])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
 
79
- return clean_models_data(df, filter_main)
 
 
 
 
 
 
1
  import json
2
+
3
+ import requests
4
  import pandas as pd
 
5
  import streamlit as st
6
+ from ecologits.model_repository import models as model_repository, ArchitectureTypes
7
+ from ecologits.status_messages import ModelArchNotReleasedWarning, ModelArchMultimodalWarning
8
+ from ecologits.utils.range_value import RangeValue
9
+
10
+ from src.constants import MODEL_REPOSITORY_URL, MAIN_MODELS
11
 
12
 
13
  def clean_models_data(df, with_filter=True):
 
75
  ]
76
 
77
 
78
+ PROVIDERS_FORMAT = {
79
+ "anthropic": "Anthropic",
80
+ "cohere": "Cohere",
81
+ "google_genai": "Google",
82
+ "mistralai": "Mistral AI",
83
+ "openai": "OpenAI",
84
+ }
85
+
86
+
87
  @st.cache_data
88
+ def load_models(filter_main=True) -> pd.DataFrame:
89
+ data = []
90
+ for m in model_repository.list_models():
91
+ if filter_main and m.name not in MAIN_MODELS:
92
+ continue # Ignore "not main" models when filter is enabled
93
+
94
+ if m.architecture.type == ArchitectureTypes.DENSE:
95
+ if isinstance(m.architecture.parameters, RangeValue):
96
+ total_parameters = dict(m.architecture.parameters)
97
+ else:
98
+ total_parameters = m.architecture.parameters
99
+ active_parameters = total_parameters
100
+
101
+ elif m.architecture.type == ArchitectureTypes.MOE:
102
+ if isinstance(m.architecture.parameters.total, RangeValue):
103
+ total_parameters = dict(m.architecture.parameters.total)
104
+ else:
105
+ total_parameters = m.architecture.parameters.total
106
+
107
+ if isinstance(m.architecture.parameters.active, RangeValue):
108
+ active_parameters = dict(m.architecture.parameters.active)
109
+ else:
110
+ active_parameters = m.architecture.parameters.active
111
+
112
+ else:
113
+ continue # Ignore model
114
+
115
+ warning_arch = False
116
+ warning_multi_modal = False
117
+ for w in m.warnings:
118
+ if isinstance(w, ModelArchNotReleasedWarning):
119
+ warning_arch = True
120
+ if isinstance(w, ModelArchMultimodalWarning):
121
+ warning_multi_modal = True
122
+
123
+ data.append({
124
+ "provider": m.provider.value,
125
+ "provider_clean": PROVIDERS_FORMAT.get(m.provider.value, m.provider.value),
126
+ "name": m.name,
127
+ "name_clean": clean_model_name(m.name),
128
+ "architecture_type": m.architecture.type.value,
129
+ "total_parameters": total_parameters,
130
+ "active_parameters": active_parameters,
131
+ "warning_arch": warning_arch,
132
+ "warning_multi_modal": warning_multi_modal,
133
+ })
134
+
135
+ return pd.DataFrame(data)
136
+
137
 
138
+ def clean_model_name(model_name: str) -> str:
139
+ model_name = model_name.replace("latest", "")
140
+ model_name = model_name.replace("-", " ")
141
+ model_name = model_name.replace("_", " ")
142
+ return model_name