Spaces:
Runtime error
Runtime error
Commit
β’
a7f6bfc
0
Parent(s):
Duplicate from huggingface/Model_Cards_Writing_Tool
Browse filesCo-authored-by: Ezi Ozoani <Ezi@users.noreply.huggingface.co>
- .gitattributes +31 -0
- 1_π_form.py +302 -0
- README.md +14 -0
- __pycache__/extract_code.cpython-39.pyc +0 -0
- __pycache__/markdownTagExtract.cpython-39.pyc +0 -0
- __pycache__/middleMan.cpython-39.pyc +0 -0
- __pycache__/persist.cpython-37.pyc +0 -0
- __pycache__/persist.cpython-39.pyc +0 -0
- __pycache__/specific_extraction.cpython-39.pyc +0 -0
- about.md +4 -0
- combined.md +141 -0
- current_card.md +222 -0
- current_editable.md +141 -0
- extract_code.py +532 -0
- language_model_template1.md +329 -0
- lets_combine.md +1 -0
- markdownTagExtract.cpython-39.pyc +0 -0
- markdownTagExtract.py +99 -0
- middleMan.cpython-39.pyc +0 -0
- middleMan.py +136 -0
- modelcard_template_new_spec.md +225 -0
- out_markd.md +1042 -0
- output.md +5 -0
- pages/10_ π_Technical Specifications.py +61 -0
- pages/11_ π¬_Model_Card_Contact.py +26 -0
- pages/12_π©βπ»_How_To_Get_Started.py +30 -0
- pages/13_π_Model_Card_Authors.py +26 -0
- pages/14_π_Glossary.py +24 -0
- pages/15_More_Information.py +24 -0
- pages/1_π_CardProgress.py +15 -0
- pages/2_π_Model_Details.py +87 -0
- pages/3_ π_Uses.py +47 -0
- pages/4_β οΈ_Limits_and_Risks.py +36 -0
- pages/5_ποΈββοΈ_Model_training.py +87 -0
- pages/6_π¬_Model_Evaluation.py +66 -0
- pages/7_π_Model_Examination.py +35 -0
- pages/8_π_Environmental_Impact.py +56 -0
- pages/9_π_Citation.py +48 -0
- pages/__pycache__/HowToGetStarted.cpython-39.pyc +0 -0
- pages/__pycache__/firstPage.cpython-39.pyc +0 -0
- pages/__pycache__/viewCardProgress.cpython-39.pyc +0 -0
- persist.cpython-39.pyc +0 -0
- persist.py +26 -0
- requirements.txt +4 -0
- specific_extraction.py +528 -0
- style.css +0 -0
- test_markdown_out.py +30 -0
- testing_layout.py +71 -0
- viewCardProgress(old).py +101 -0
.gitattributes
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
5 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
6 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
7 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
8 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
9 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
10 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
11 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
12 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
13 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
14 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
15 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
16 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
17 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
18 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
20 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
21 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
22 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
23 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
24 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
25 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
26 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
27 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
28 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
29 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
30 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
31 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
1_π_form.py
ADDED
@@ -0,0 +1,302 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from yaml import load
|
2 |
+
from persist import persist, load_widget_state
|
3 |
+
import streamlit as st
|
4 |
+
from io import StringIO
|
5 |
+
import tempfile
|
6 |
+
from pathlib import Path
|
7 |
+
import requests
|
8 |
+
from huggingface_hub import hf_hub_download, upload_file
|
9 |
+
import pandas as pd
|
10 |
+
from huggingface_hub import create_repo
|
11 |
+
import os
|
12 |
+
from middleMan import parse_into_jinja_markdown as pj
|
13 |
+
|
14 |
+
|
15 |
+
|
16 |
+
@st.cache
|
17 |
+
def get_cached_data():
|
18 |
+
languages_df = pd.read_html("https://hf.co/languages")[0]
|
19 |
+
languages_map = pd.Series(languages_df["Language"].values, index=languages_df["ISO code"]).to_dict()
|
20 |
+
|
21 |
+
license_df = pd.read_html("https://huggingface.co/docs/hub/repositories-licenses")[0]
|
22 |
+
license_map = pd.Series(
|
23 |
+
license_df["License identifier (to use in model card)"].values, index=license_df.Fullname
|
24 |
+
).to_dict()
|
25 |
+
|
26 |
+
available_metrics = [x['id'] for x in requests.get('https://huggingface.co/api/metrics').json()]
|
27 |
+
|
28 |
+
r = requests.get('https://huggingface.co/api/models-tags-by-type')
|
29 |
+
tags_data = r.json()
|
30 |
+
libraries = [x['id'] for x in tags_data['library']]
|
31 |
+
tasks = [x['id'] for x in tags_data['pipeline_tag']]
|
32 |
+
return languages_map, license_map, available_metrics, libraries, tasks
|
33 |
+
|
34 |
+
|
35 |
+
def card_upload(card_info,repo_id,token):
|
36 |
+
#commit_message=None,
|
37 |
+
repo_type = "space"
|
38 |
+
commit_description=None,
|
39 |
+
revision=None,
|
40 |
+
create_pr=None
|
41 |
+
with tempfile.TemporaryDirectory() as tmpdir:
|
42 |
+
tmp_path = Path(tmpdir) / "README.md"
|
43 |
+
tmp_path.write_text(str(card_info))
|
44 |
+
url = upload_file(
|
45 |
+
path_or_fileobj=str(tmp_path),
|
46 |
+
path_in_repo="README.md",
|
47 |
+
repo_id=repo_id,
|
48 |
+
token=token,
|
49 |
+
repo_type=repo_type,
|
50 |
+
identical_ok=True,
|
51 |
+
revision=revision,
|
52 |
+
)
|
53 |
+
return url
|
54 |
+
|
55 |
+
def validate(self, repo_type="model"):
|
56 |
+
"""Validates card against Hugging Face Hub's model card validation logic.
|
57 |
+
Using this function requires access to the internet, so it is only called
|
58 |
+
internally by `modelcards.ModelCard.push_to_hub`.
|
59 |
+
Args:
|
60 |
+
repo_type (`str`, *optional*):
|
61 |
+
The type of Hugging Face repo to push to. Defaults to None, which will use
|
62 |
+
use "model". Other options are "dataset" and "space".
|
63 |
+
"""
|
64 |
+
if repo_type is None:
|
65 |
+
repo_type = "model"
|
66 |
+
|
67 |
+
# TODO - compare against repo types constant in huggingface_hub if we move this object there.
|
68 |
+
if repo_type not in ["model", "space", "dataset"]:
|
69 |
+
raise RuntimeError(
|
70 |
+
"Provided repo_type '{repo_type}' should be one of ['model', 'space',"
|
71 |
+
" 'dataset']."
|
72 |
+
)
|
73 |
+
|
74 |
+
body = {
|
75 |
+
"repoType": repo_type,
|
76 |
+
"content": str(self),
|
77 |
+
}
|
78 |
+
headers = {"Accept": "text/plain"}
|
79 |
+
|
80 |
+
try:
|
81 |
+
r = requests.post(
|
82 |
+
"https://huggingface.co/api/validate-yaml", body, headers=headers
|
83 |
+
)
|
84 |
+
r.raise_for_status()
|
85 |
+
except requests.exceptions.HTTPError as exc:
|
86 |
+
if r.status_code == 400:
|
87 |
+
raise RuntimeError(r.text)
|
88 |
+
else:
|
89 |
+
raise exc
|
90 |
+
|
91 |
+
|
92 |
+
## Save uploaded [markdown] file to directory to be used by jinja parser function
|
93 |
+
def save_uploadedfile(uploadedfile):
|
94 |
+
with open(os.path.join("temp_uploaded_filed_Dir",uploadedfile.name),"wb") as f:
|
95 |
+
f.write(uploadedfile.getbuffer())
|
96 |
+
st.success("Saved File:{} to temp_uploaded_filed_Dir".format(uploadedfile.name))
|
97 |
+
return uploadedfile.name
|
98 |
+
|
99 |
+
|
100 |
+
def main_page():
|
101 |
+
|
102 |
+
|
103 |
+
if "model_name" not in st.session_state:
|
104 |
+
# Initialize session state.
|
105 |
+
st.session_state.update({
|
106 |
+
"input_model_name": "",
|
107 |
+
"languages": [],
|
108 |
+
"license": "",
|
109 |
+
"library_name": "",
|
110 |
+
"datasets": "",
|
111 |
+
"metrics": [],
|
112 |
+
"task": "",
|
113 |
+
"tags": "",
|
114 |
+
"model_description": "Some cool model...",
|
115 |
+
"the_authors":"",
|
116 |
+
"Shared_by":"",
|
117 |
+
"Model_details_text": "",
|
118 |
+
"Model_developers": "",
|
119 |
+
"blog_url":"",
|
120 |
+
"Parent_Model_url":"",
|
121 |
+
"Parent_Model_name":"",
|
122 |
+
|
123 |
+
"Model_how_to": "",
|
124 |
+
|
125 |
+
"Model_uses": "",
|
126 |
+
"Direct_Use": "",
|
127 |
+
"Downstream_Use":"",
|
128 |
+
"Out-of-Scope_Use":"",
|
129 |
+
|
130 |
+
"Model_Limits_n_Risks": "",
|
131 |
+
"Recommendations":"",
|
132 |
+
|
133 |
+
"training_Data": "",
|
134 |
+
"model_preprocessing":"",
|
135 |
+
"Speeds_Sizes_Times":"",
|
136 |
+
|
137 |
+
|
138 |
+
|
139 |
+
"Model_Eval": "",
|
140 |
+
"Testing_Data":"",
|
141 |
+
"Factors":"",
|
142 |
+
"Metrics":"",
|
143 |
+
"Model_Results":"",
|
144 |
+
|
145 |
+
"Model_c02_emitted": "",
|
146 |
+
"Model_hardware":"",
|
147 |
+
"hours_used":"",
|
148 |
+
"Model_cloud_provider":"",
|
149 |
+
"Model_cloud_region":"",
|
150 |
+
|
151 |
+
"Model_cite": "",
|
152 |
+
"paper_url": "",
|
153 |
+
"github_url": "",
|
154 |
+
"bibtex_citation": "",
|
155 |
+
"APA_citation":"",
|
156 |
+
|
157 |
+
"Model_examin":"",
|
158 |
+
"Model_card_contact":"",
|
159 |
+
"Model_card_authors":"",
|
160 |
+
"Glossary":"",
|
161 |
+
"More_info":"",
|
162 |
+
|
163 |
+
"Model_specs":"",
|
164 |
+
"compute_infrastructure":"",
|
165 |
+
"technical_specs_software":"",
|
166 |
+
|
167 |
+
"check_box": bool,
|
168 |
+
"markdown_upload":" ",
|
169 |
+
"legal_view":bool,
|
170 |
+
"researcher_view":bool,
|
171 |
+
"beginner_technical_view":bool,
|
172 |
+
"markdown_state":"",
|
173 |
+
})
|
174 |
+
## getting cache for each warnings
|
175 |
+
languages_map, license_map, available_metrics, libraries, tasks = get_cached_data()
|
176 |
+
|
177 |
+
## form UI setting
|
178 |
+
st.header("Model Card Form")
|
179 |
+
|
180 |
+
warning_placeholder = st.empty()
|
181 |
+
|
182 |
+
st.text_input("Model Name", key=persist("model_name"))
|
183 |
+
st.text_area("Model Description", help="The model description provides basic details about the model. This includes the architecture, version, if it was introduced in a paper, if an original implementation is available, the author, and general information about the model. Any copyright should be attributed here. General information about training procedures, parameters, and important disclaimers can also be mentioned in this section.", key=persist('model_description'))
|
184 |
+
st.multiselect("Language(s)", list(languages_map), format_func=lambda x: languages_map[x], help="The language(s) associated with this model. If this is not a text-based model, you should specify whatever language that is used in the dataset. For instance, if the dataset's labels are in english, you should select English here.", key=persist("languages"))
|
185 |
+
st.selectbox("License", [""] + list(license_map.values()), help="The license associated with this model.", key=persist("license"))
|
186 |
+
st.selectbox("Library Name", [""] + libraries, help="The name of the library this model came from (Ex. pytorch, timm, spacy, keras, etc.). This is usually automatically detected in model repos, so it is not required.", key=persist('library_name'))
|
187 |
+
st.text_input("Parent Model (URL)", help="If this model has another model as its base, please provide the URL link to the parent model", key=persist("Parent_Model_name"))
|
188 |
+
st.text_input("Datasets (comma separated)", help="The dataset(s) used to train this model. Use dataset id from https://hf.co/datasets.", key=persist("datasets"))
|
189 |
+
st.multiselect("Metrics", available_metrics, help="Metrics used in the training/evaluation of this model. Use metric id from https://hf.co/metrics.", key=persist("metrics"))
|
190 |
+
st.selectbox("Task", [""] + tasks, help="What task does this model aim to solve?", key=persist('task'))
|
191 |
+
st.text_input("Tags (comma separated)", help="Additional tags to add which will be filterable on https://hf.co/models. (Ex. image-classification, vision, resnet)", key=persist("tags"))
|
192 |
+
st.text_input("Author(s) (comma separated)", help="The authors who developed this model. If you trained this model, the author is you.", key=persist("the_authors"))
|
193 |
+
st.text_input("Related Research Paper", help="Research paper related to this model.", key=persist("paper_url"))
|
194 |
+
st.text_input("Related GitHub Repository", help="Link to a GitHub repository used in the development of this model", key=persist("github_url"))
|
195 |
+
st.text_area("Bibtex Citation", help="Bibtex citations for related work", key=persist("bibtex_citations"))
|
196 |
+
st.text_input("Carbon Emitted:", help="You can estimate carbon emissions using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700)", key=persist("Model_c02_emitted"))
|
197 |
+
|
198 |
+
|
199 |
+
|
200 |
+
# warnings setting
|
201 |
+
languages=st.session_state.languages or None
|
202 |
+
license=st.session_state.license or None
|
203 |
+
task = st.session_state.task or None
|
204 |
+
markdown_upload = st.session_state.markdown_upload
|
205 |
+
#uploaded_model_card = st.session_state.uploaded_model
|
206 |
+
# Handle any warnings...
|
207 |
+
do_warn = False
|
208 |
+
warning_msg = "Warning: The following fields are required but have not been filled in: "
|
209 |
+
if not languages:
|
210 |
+
warning_msg += "\n- Languages"
|
211 |
+
do_warn = True
|
212 |
+
if not license:
|
213 |
+
warning_msg += "\n- License"
|
214 |
+
do_warn = True
|
215 |
+
if not task or not markdown_upload:
|
216 |
+
warning_msg += "\n- Please choose a task or upload a model card"
|
217 |
+
do_warn = True
|
218 |
+
if do_warn:
|
219 |
+
warning_placeholder.error(warning_msg)
|
220 |
+
|
221 |
+
with st.sidebar:
|
222 |
+
|
223 |
+
######################################################
|
224 |
+
### Uploading a model card from local drive
|
225 |
+
######################################################
|
226 |
+
st.markdown("## Upload Model Card")
|
227 |
+
|
228 |
+
st.markdown("#### Model Card must be in markdown (.md) format.")
|
229 |
+
|
230 |
+
# Read a single file
|
231 |
+
uploaded_file = st.file_uploader("Choose a file", type = ['md'], help = 'Please choose a markdown (.md) file type to upload')
|
232 |
+
if uploaded_file is not None:
|
233 |
+
|
234 |
+
file_details = {"FileName":uploaded_file.name,"FileType":uploaded_file.type}
|
235 |
+
name_of_uploaded_file = save_uploadedfile(uploaded_file)
|
236 |
+
|
237 |
+
st.session_state.markdown_upload = name_of_uploaded_file ## uploaded model card
|
238 |
+
|
239 |
+
elif st.session_state.task =='fill-mask' or 'translation' or 'token-classification' or ' sentence-similarity' or 'summarization' or 'question-answering' or 'text2text-generation' or 'text-classification' or 'text-generation' or 'conversational':
|
240 |
+
#st.session_state.markdown_upload = open(
|
241 |
+
# "language_model_template1.md", "r+"
|
242 |
+
#).read()
|
243 |
+
st.session_state.markdown_upload = "language_model_template1.md" ## language model template
|
244 |
+
|
245 |
+
elif st.session_state.task:
|
246 |
+
|
247 |
+
st.session_state.markdown_upload = "current_card.md" ## default non language model template
|
248 |
+
|
249 |
+
#########################################
|
250 |
+
### Uploading model card to HUB
|
251 |
+
#########################################
|
252 |
+
out_markdown =open( st.session_state.markdown_upload, "r+"
|
253 |
+
).read()
|
254 |
+
print_out_final = f"{out_markdown}"
|
255 |
+
st.markdown("## Export Loaded Model Card to Hub")
|
256 |
+
with st.form("Upload to π€ Hub"):
|
257 |
+
st.markdown("Use a token with write access from [here](https://hf.co/settings/tokens)")
|
258 |
+
token = st.text_input("Token", type='password')
|
259 |
+
repo_id = st.text_input("Repo ID")
|
260 |
+
submit = st.form_submit_button('Upload to π€ Hub', help='The current model card will be uploaded to a branch in the supplied repo ')
|
261 |
+
|
262 |
+
if submit:
|
263 |
+
if len(repo_id.split('/')) == 2:
|
264 |
+
repo_url = create_repo(repo_id, exist_ok=True, token=token)
|
265 |
+
new_url = card_upload(pj(),repo_id, token=token)
|
266 |
+
st.success(f"Pushed the card to the repo [here]({new_url})!") # note: was repo_url
|
267 |
+
else:
|
268 |
+
st.error("Repo ID invalid. It should be username/repo-name. For example: nateraw/food")
|
269 |
+
|
270 |
+
|
271 |
+
#########################################
|
272 |
+
### Download model card
|
273 |
+
#########################################
|
274 |
+
|
275 |
+
|
276 |
+
st.markdown("## Download current Model Card")
|
277 |
+
|
278 |
+
if st.session_state.model_name is None or st.session_state.model_name== ' ':
|
279 |
+
downloaded_file_name = 'current_model_card.md'
|
280 |
+
else:
|
281 |
+
downloaded_file_name = st.session_state.model_name+'_'+'model_card.md'
|
282 |
+
download_status = st.download_button(label = 'Download Model Card', data = pj(), file_name = downloaded_file_name, help = "The current model card will be downloaded as a markdown (.md) file")
|
283 |
+
if download_status == True:
|
284 |
+
st.success("Your current model card, successfully downloaded π€")
|
285 |
+
|
286 |
+
|
287 |
+
def page_switcher(page):
|
288 |
+
st.session_state.runpage = page
|
289 |
+
|
290 |
+
def main():
|
291 |
+
|
292 |
+
st.header("About Model Cards")
|
293 |
+
st.markdown(Path('about.md').read_text(), unsafe_allow_html=True)
|
294 |
+
btn = st.button('Create a Model Card π',on_click=page_switcher,args=(main_page,))
|
295 |
+
if btn:
|
296 |
+
st.experimental_rerun() # rerun is needed to clear the page
|
297 |
+
|
298 |
+
if __name__ == '__main__':
|
299 |
+
load_widget_state()
|
300 |
+
if 'runpage' not in st.session_state :
|
301 |
+
st.session_state.runpage = main
|
302 |
+
st.session_state.runpage()
|
README.md
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
title: Modelcard Creator
|
3 |
+
emoji: β‘
|
4 |
+
colorFrom: red
|
5 |
+
colorTo: yellow
|
6 |
+
sdk: streamlit
|
7 |
+
sdk_version: 1.10.0
|
8 |
+
app_file: 1_π_form.py
|
9 |
+
pinned: false
|
10 |
+
license: mit
|
11 |
+
duplicated_from: huggingface/Model_Cards_Writing_Tool
|
12 |
+
---
|
13 |
+
|
14 |
+
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
__pycache__/extract_code.cpython-39.pyc
ADDED
Binary file (14.4 kB). View file
|
|
__pycache__/markdownTagExtract.cpython-39.pyc
ADDED
Binary file (1.74 kB). View file
|
|
__pycache__/middleMan.cpython-39.pyc
ADDED
Binary file (3.86 kB). View file
|
|
__pycache__/persist.cpython-37.pyc
ADDED
Binary file (853 Bytes). View file
|
|
__pycache__/persist.cpython-39.pyc
ADDED
Binary file (873 Bytes). View file
|
|
__pycache__/specific_extraction.cpython-39.pyc
ADDED
Binary file (10.8 kB). View file
|
|
about.md
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
This is a tool to generate Model Cards. It aims to provide a simple interface to build from scratch a new model card or to edit an existing one. The generated model card can be downloaded or directly pushed to your model hosted on the Hub. Please use [the Community tab](https://huggingface.co/spaces/huggingface/Model_Cards_Writing_Tool/discussions) to give us some feedback π€
|
3 |
+
|
4 |
+
|
combined.md
ADDED
@@ -0,0 +1,141 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
language:
|
3 |
+
- es
|
4 |
+
license: apache-2.0
|
5 |
+
library_name: keras
|
6 |
+
tags:
|
7 |
+
- autogenerated-modelcard
|
8 |
+
---
|
9 |
+
|
10 |
+
# MyModelName
|
11 |
+
|
12 |
+
## Table of Contents
|
13 |
+
- [MyModelName](#-model_id--defaultmymodelname-true)
|
14 |
+
- [Table of Contents](#table-of-contents)
|
15 |
+
- [Model Details](#model-details)
|
16 |
+
- [How to Get Started with the Model](#how-to-get-started-with-the-model)
|
17 |
+
- [Uses](#uses)
|
18 |
+
- [Direct Use](#direct-use)
|
19 |
+
- [Downstream Use](#downstream-use)
|
20 |
+
- [Misuse and Out-of-scope Use](#misuse-and-out-of-scope-use)
|
21 |
+
- [Limitations and Biases](#limitations-and-biases)
|
22 |
+
- [Training](#training)
|
23 |
+
- [Training Data](#training-data)
|
24 |
+
- [Training Procedure](#training-procedure)
|
25 |
+
- [Evaluation Results](#evaluation-results)
|
26 |
+
- [Environmental Impact](#environmental-impact)
|
27 |
+
- [Citation Information](#citation-information)
|
28 |
+
|
29 |
+
|
30 |
+
<model_details>
|
31 |
+
## Model Details
|
32 |
+
|
33 |
+
<!-- Give an overview of your model, the relevant research paper, who trained it, etc. -->
|
34 |
+
|
35 |
+
Some cool model...
|
36 |
+
|
37 |
+
- Developed by:
|
38 |
+
- Language(s):
|
39 |
+
- License: This model is licensed under the apache-2.0 license
|
40 |
+
- Resources for more information:
|
41 |
+
|
42 |
+
|
43 |
+
|
44 |
+
</model_details>
|
45 |
+
|
46 |
+
<how_to_start>
|
47 |
+
## How to Get Started with the Model
|
48 |
+
|
49 |
+
Use the code below to get started with the model.
|
50 |
+
|
51 |
+
```python
|
52 |
+
# A nice code snippet here that describes how to use the model...
|
53 |
+
```
|
54 |
+
</how_to_start>
|
55 |
+
|
56 |
+
<uses>
|
57 |
+
|
58 |
+
## Uses
|
59 |
+
|
60 |
+
#### Direct Use
|
61 |
+
|
62 |
+
<!-- Describe what kind of tasks this model can be used for directly or problems it can solve. -->
|
63 |
+
|
64 |
+
[More Information Needed]
|
65 |
+
|
66 |
+
#### Downstream Use
|
67 |
+
|
68 |
+
<!-- Describe how this model could be leveraged by a downstream model (if applicable) -->
|
69 |
+
|
70 |
+
[More Information Needed]
|
71 |
+
|
72 |
+
#### Misuse and Out-of-scope Use
|
73 |
+
|
74 |
+
<!-- Describe ways in which this model ***should not*** be used. -->
|
75 |
+
|
76 |
+
[More Information Needed]
|
77 |
+
</uses>
|
78 |
+
|
79 |
+
<Limitations_and_Biases>
|
80 |
+
|
81 |
+
## Limitations and Biases
|
82 |
+
|
83 |
+
<!-- Describe limitations and biases of this model or models of it's type. -->
|
84 |
+
|
85 |
+
**CONTENT WARNING: Readers should be aware this section contains content that is disturbing, offensive, and can propogate historical and current stereotypes.**
|
86 |
+
|
87 |
+
[More Information Needed]
|
88 |
+
|
89 |
+
</Limitations_and_Biases>
|
90 |
+
|
91 |
+
<Training>
|
92 |
+
|
93 |
+
## Training
|
94 |
+
|
95 |
+
#### Training Data
|
96 |
+
|
97 |
+
<!-- Describe the dataset used to train this model. -->
|
98 |
+
<!-- Refer to data card if dataset is provided and exists on the hub -->
|
99 |
+
|
100 |
+
See the data card for additional information.
|
101 |
+
|
102 |
+
#### Training Procedure
|
103 |
+
|
104 |
+
<!-- Describe the preprocessing, hardware used, training hyperparameters, etc. -->
|
105 |
+
|
106 |
+
[More Information Needed]
|
107 |
+
|
108 |
+
</Training>
|
109 |
+
|
110 |
+
<Eval_Results>
|
111 |
+
## Evaluation Results
|
112 |
+
|
113 |
+
<!-- Describe evaluation results of this model across any datasets it was evaluated on. -->
|
114 |
+
|
115 |
+
[More Information Needed]
|
116 |
+
|
117 |
+
</Eval_Results>
|
118 |
+
|
119 |
+
<E_Impact>
|
120 |
+
## Environmental Impact
|
121 |
+
|
122 |
+
<!-- Provide information to document the environmental impact of this model -->
|
123 |
+
|
124 |
+
You can estimate carbon emissions using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700)
|
125 |
+
|
126 |
+
- **Hardware Type:**
|
127 |
+
- **Hours used:**
|
128 |
+
- **Cloud Provider:**
|
129 |
+
- **Compute Region:**
|
130 |
+
- **Carbon Emitted:**
|
131 |
+
|
132 |
+
</E_Impact>
|
133 |
+
|
134 |
+
<Cite>
|
135 |
+
|
136 |
+
## Citation Information
|
137 |
+
|
138 |
+
```bibtex
|
139 |
+
|
140 |
+
```
|
141 |
+
</Cite>
|
current_card.md
ADDED
@@ -0,0 +1,222 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
{{card_data}}
|
3 |
+
---
|
4 |
+
|
5 |
+
# {{ model_id }}
|
6 |
+
|
7 |
+
<!--> Provide a quick summary of what the model is/does. <!-->
|
8 |
+
|
9 |
+
# Table of Contents
|
10 |
+
|
11 |
+
- [{{ model_id }}](#-model_id-)
|
12 |
+
- [Table of Contents](#table-of-contents)
|
13 |
+
- [Model Details](#model-details)
|
14 |
+
- [Model Description](#model-description)
|
15 |
+
- [Uses](#uses)
|
16 |
+
- [Direct Use](#direct-use)
|
17 |
+
- [Downstream Use [Optional]](#downstream-use-optional)
|
18 |
+
- [Out-of-Scope Use](#out-of-scope-use)
|
19 |
+
- [Bias, Risks, and Limitations](#bias-risks-and-limitations)
|
20 |
+
- [Recommendations](#recommendations)
|
21 |
+
- [Training Details](#training-details)
|
22 |
+
- [Training Data](#training-data)
|
23 |
+
- [Training Procedure](#training-procedure)
|
24 |
+
- [Preprocessing](#preprocessing)
|
25 |
+
- [Speeds, Sizes, Times](#speeds-sizes-times)
|
26 |
+
- [Evaluation](#evaluation)
|
27 |
+
- [Testing Data, Factors & Metrics](#testing-data-factors--metrics)
|
28 |
+
- [Testing Data](#testing-data)
|
29 |
+
- [Factors](#factors)
|
30 |
+
- [Metrics](#metrics)
|
31 |
+
- [Results](#results)
|
32 |
+
- [Model Examination](#model-examination)
|
33 |
+
- [Environmental Impact](#environmental-impact)
|
34 |
+
- [Technical Specifications [optional]](#technical-specifications-optional)
|
35 |
+
- [Model Architecture and Objective](#model-architecture-and-objective)
|
36 |
+
- [Compute Infrastructure](#compute-infrastructure)
|
37 |
+
- [Hardware](#hardware)
|
38 |
+
- [Software](#software)
|
39 |
+
- [Citation](#citation)
|
40 |
+
- [Glossary [optional]](#glossary-optional)
|
41 |
+
- [More Information [optional]](#more-information-optional)
|
42 |
+
- [Model Card Authors [optional]](#model-card-authors-optional)
|
43 |
+
- [Model Card Contact](#model-card-contact)
|
44 |
+
- [How to Get Started with the Model](#how-to-get-started-with-the-model)
|
45 |
+
|
46 |
+
|
47 |
+
# Model Details
|
48 |
+
|
49 |
+
## Model Description
|
50 |
+
|
51 |
+
<!--> This section provides basic information about what the model is, its current status, and where it came from.. <!-->
|
52 |
+
{{ the_model_description | default("More information needed", true)}}
|
53 |
+
|
54 |
+
- **Developed by:** {{ developers | default("More information needed", true)}}
|
55 |
+
- **Shared by [Optional]:** {{ shared_by | default("More information needed", true)}}
|
56 |
+
- **Model type:** Language model
|
57 |
+
- **Language(s) (NLP):** {{ language | default("More information needed", true)}}
|
58 |
+
- **License:** {{ license | default("More information needed", true)}}
|
59 |
+
- **Related Models:** {{ related_models | default("More information needed", true)}}
|
60 |
+
- **Parent Model:** {{ parent_model | default("More information needed", true)}}
|
61 |
+
- **Resources for more information:** {{ more_resources | default("More information needed", true)}}
|
62 |
+
|
63 |
+
# Uses
|
64 |
+
|
65 |
+
<!--> Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. <!-->
|
66 |
+
|
67 |
+
## Direct Use
|
68 |
+
|
69 |
+
<!--> This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. <!-->
|
70 |
+
|
71 |
+
{{ direct_use | default("More information needed", true)}}
|
72 |
+
|
73 |
+
## Downstream Use [Optional]
|
74 |
+
|
75 |
+
<!--> This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app <!-->
|
76 |
+
|
77 |
+
{{ downstream_use | default("More information needed", true)}}
|
78 |
+
|
79 |
+
## Out-of-Scope Use
|
80 |
+
|
81 |
+
<!--> This section addresses misuse, malicious use, and uses that the model will not work well for. <!-->
|
82 |
+
|
83 |
+
{{ out_of_scope_use | default("More information needed", true)}}
|
84 |
+
|
85 |
+
# Bias, Risks, and Limitations
|
86 |
+
|
87 |
+
<!--> This section is meant to convey both technical and sociotechnical limitations. <!-->
|
88 |
+
|
89 |
+
{{ bias_risks_limitations | default("More information needed", true)}}
|
90 |
+
|
91 |
+
## Recommendations
|
92 |
+
|
93 |
+
<!--> This section is meant to convey recommendations with respect to the bias, risk, and technical limitations. <!-->
|
94 |
+
|
95 |
+
{{ bias_recommendations | default("Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recomendations.", true)}}
|
96 |
+
|
97 |
+
# Training Details
|
98 |
+
|
99 |
+
## Training Data
|
100 |
+
|
101 |
+
<!--> This should link to a Data Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. <!-->
|
102 |
+
|
103 |
+
{{ training_data | default("More information needed", true)}}
|
104 |
+
|
105 |
+
## Training Procedure
|
106 |
+
|
107 |
+
<!--> This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. <!-->
|
108 |
+
|
109 |
+
### Preprocessing
|
110 |
+
|
111 |
+
{{ preprocessing | default("More information needed", true)}}
|
112 |
+
|
113 |
+
### Speeds, Sizes, Times
|
114 |
+
|
115 |
+
<!--> This section provides information about throughput, start/end time, checkpoint size if relevant, etc. <!-->
|
116 |
+
|
117 |
+
{{ speeds_sizes_times | default("More information needed", true)}}
|
118 |
+
|
119 |
+
# Evaluation
|
120 |
+
|
121 |
+
<!--> This section describes the evaluation protocols and provides the results. <!-->
|
122 |
+
|
123 |
+
## Testing Data, Factors & Metrics
|
124 |
+
|
125 |
+
### Testing Data
|
126 |
+
|
127 |
+
<!--> This should link to a Data Card if possible. <!-->
|
128 |
+
|
129 |
+
{{ testing_data | default("More information needed", true)}}
|
130 |
+
|
131 |
+
### Factors
|
132 |
+
|
133 |
+
<!--> These are the things the evaluation is disaggregating by, e.g., subpopulations or domains. <!-->
|
134 |
+
|
135 |
+
{{ testing_factors | default("More information needed", true)}}
|
136 |
+
|
137 |
+
### Metrics
|
138 |
+
|
139 |
+
<!--> These are the evaluation metrics being used, ideally with a description of why. <!-->
|
140 |
+
|
141 |
+
{{ testing_metrics | default("More information needed", true)}}
|
142 |
+
|
143 |
+
## Results
|
144 |
+
|
145 |
+
{{ results | default("More information needed", true)}}
|
146 |
+
|
147 |
+
# Model Examination
|
148 |
+
|
149 |
+
{{ model_examination | default("More information needed", true)}}
|
150 |
+
|
151 |
+
# Environmental Impact
|
152 |
+
|
153 |
+
<!--> Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here. Edit the suggested text below accordingly <!-->
|
154 |
+
|
155 |
+
Carbon emissions can be estimated using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700).
|
156 |
+
|
157 |
+
- **Hardware Type:** {{ hardware | default("More information needed", true)}}
|
158 |
+
- **Hours used:** {{ hours_used | default("More information needed", true)}}
|
159 |
+
- **Cloud Provider:** {{ cloud_provider | default("More information needed", true)}}
|
160 |
+
- **Compute Region:** {{ cloud_region | default("More information needed", true)}}
|
161 |
+
- **Carbon Emitted:** {{ co2_emitted | default("More information needed", true)}}
|
162 |
+
|
163 |
+
# Technical Specifications [optional]
|
164 |
+
|
165 |
+
## Model Architecture and Objective
|
166 |
+
|
167 |
+
{{ model_specs | default("More information needed", true)}}
|
168 |
+
|
169 |
+
## Compute Infrastructure
|
170 |
+
|
171 |
+
{{ compute_infrastructure | default("More information needed", true)}}
|
172 |
+
|
173 |
+
### Hardware
|
174 |
+
|
175 |
+
{{ hardware | default("More information needed", true)}}
|
176 |
+
|
177 |
+
### Software
|
178 |
+
|
179 |
+
{{ software | default("More information needed", true)}}
|
180 |
+
|
181 |
+
# Citation
|
182 |
+
|
183 |
+
<!--> If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section. <!-->
|
184 |
+
|
185 |
+
**BibTeX:**
|
186 |
+
|
187 |
+
{{ citation_bibtex | default("More information needed", true)}}
|
188 |
+
|
189 |
+
**APA:**
|
190 |
+
|
191 |
+
{{ citation_apa | default("More information needed", true)}}
|
192 |
+
|
193 |
+
# Glossary [optional]
|
194 |
+
|
195 |
+
<!--> If relevant, include terms and calculations in this section that can help readers understand the model or model card. <!-->
|
196 |
+
|
197 |
+
{{ glossary | default("More information needed", true)}}
|
198 |
+
|
199 |
+
# More Information [optional]
|
200 |
+
|
201 |
+
{{ more_information | default("More information needed", true)}}
|
202 |
+
|
203 |
+
# Model Card Authors [optional]
|
204 |
+
|
205 |
+
{{ model_card_authors | default("More information needed", true)}}
|
206 |
+
|
207 |
+
# Model Card Contact
|
208 |
+
|
209 |
+
{{ model_card_contact | default("More information needed", true)}}
|
210 |
+
|
211 |
+
# How to Get Started with the Model
|
212 |
+
|
213 |
+
Use the code below to get started with the model.
|
214 |
+
|
215 |
+
<details>
|
216 |
+
<summary> Click to expand </summary>
|
217 |
+
|
218 |
+
{{ get_started_code | default("More information needed", true)}}
|
219 |
+
|
220 |
+
</details>
|
221 |
+
|
222 |
+
|
current_editable.md
ADDED
@@ -0,0 +1,141 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
language:
|
3 |
+
- de
|
4 |
+
license: bigscience-bloom-rail-1.0
|
5 |
+
library_name: keras
|
6 |
+
tags:
|
7 |
+
- autogenerated-modelcard
|
8 |
+
---
|
9 |
+
|
10 |
+
# tethre
|
11 |
+
|
12 |
+
## Table of Contents
|
13 |
+
- [tethre](#-model_id--defaultmymodelname-true)
|
14 |
+
- [Table of Contents](#table-of-contents)
|
15 |
+
- [Model Details](#model-details)
|
16 |
+
- [How to Get Started with the Model](#how-to-get-started-with-the-model)
|
17 |
+
- [Uses](#uses)
|
18 |
+
- [Direct Use](#direct-use)
|
19 |
+
- [Downstream Use](#downstream-use)
|
20 |
+
- [Misuse and Out-of-scope Use](#misuse-and-out-of-scope-use)
|
21 |
+
- [Limitations and Biases](#limitations-and-biases)
|
22 |
+
- [Training](#training)
|
23 |
+
- [Training Data](#training-data)
|
24 |
+
- [Training Procedure](#training-procedure)
|
25 |
+
- [Evaluation Results](#evaluation-results)
|
26 |
+
- [Environmental Impact](#environmental-impact)
|
27 |
+
- [Citation Information](#citation-information)
|
28 |
+
|
29 |
+
|
30 |
+
<model_details>
|
31 |
+
## Model Details
|
32 |
+
|
33 |
+
<!-- Give an overview of your model, the relevant research paper, who trained it, etc. -->
|
34 |
+
|
35 |
+
hhrirergenjfngdg
|
36 |
+
|
37 |
+
- Developed by:
|
38 |
+
- Language(s):
|
39 |
+
- License: This model is licensed under the bigscience-bloom-rail-1.0 license
|
40 |
+
- Resources for more information:
|
41 |
+
|
42 |
+
|
43 |
+
|
44 |
+
</model_details>
|
45 |
+
|
46 |
+
<how_to_start>
|
47 |
+
## How to Get Started with the Model
|
48 |
+
|
49 |
+
Use the code below to get started with the model.
|
50 |
+
|
51 |
+
```python
|
52 |
+
# A nice code snippet here that describes how to use the model...
|
53 |
+
```
|
54 |
+
</how_to_start>
|
55 |
+
|
56 |
+
<uses>
|
57 |
+
|
58 |
+
## Uses
|
59 |
+
|
60 |
+
#### Direct Use
|
61 |
+
|
62 |
+
<!-- Describe what kind of tasks this model can be used for directly or problems it can solve. -->
|
63 |
+
|
64 |
+
[More Information Needed]
|
65 |
+
|
66 |
+
#### Downstream Use
|
67 |
+
|
68 |
+
<!-- Describe how this model could be leveraged by a downstream model (if applicable) -->
|
69 |
+
|
70 |
+
[More Information Needed]
|
71 |
+
|
72 |
+
#### Misuse and Out-of-scope Use
|
73 |
+
|
74 |
+
<!-- Describe ways in which this model ***should not*** be used. -->
|
75 |
+
|
76 |
+
[More Information Needed]
|
77 |
+
</uses>
|
78 |
+
|
79 |
+
<Limitations_and_Biases>
|
80 |
+
|
81 |
+
## Limitations and Biases
|
82 |
+
|
83 |
+
<!-- Describe limitations and biases of this model or models of it's type. -->
|
84 |
+
|
85 |
+
**CONTENT WARNING: Readers should be aware this section contains content that is disturbing, offensive, and can propogate historical and current stereotypes.**
|
86 |
+
|
87 |
+
[More Information Needed]
|
88 |
+
|
89 |
+
</Limitations_and_Biases>
|
90 |
+
|
91 |
+
<Training>
|
92 |
+
|
93 |
+
## Training
|
94 |
+
|
95 |
+
#### Training Data
|
96 |
+
|
97 |
+
<!-- Describe the dataset used to train this model. -->
|
98 |
+
<!-- Refer to data card if dataset is provided and exists on the hub -->
|
99 |
+
|
100 |
+
See the data card for additional information.
|
101 |
+
|
102 |
+
#### Training Procedure
|
103 |
+
|
104 |
+
<!-- Describe the preprocessing, hardware used, training hyperparameters, etc. -->
|
105 |
+
|
106 |
+
[More Information Needed]
|
107 |
+
|
108 |
+
</Training>
|
109 |
+
|
110 |
+
<Eval_Results>
|
111 |
+
## Evaluation Results
|
112 |
+
|
113 |
+
<!-- Describe evaluation results of this model across any datasets it was evaluated on. -->
|
114 |
+
|
115 |
+
[More Information Needed]
|
116 |
+
|
117 |
+
</Eval_Results>
|
118 |
+
|
119 |
+
<E_Impact>
|
120 |
+
## Environmental Impact
|
121 |
+
|
122 |
+
<!-- Provide information to document the environmental impact of this model -->
|
123 |
+
|
124 |
+
You can estimate carbon emissions using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700)
|
125 |
+
|
126 |
+
- **Hardware Type:**
|
127 |
+
- **Hours used:**
|
128 |
+
- **Cloud Provider:**
|
129 |
+
- **Compute Region:**
|
130 |
+
- **Carbon Emitted:**
|
131 |
+
|
132 |
+
</E_Impact>
|
133 |
+
|
134 |
+
<Cite>
|
135 |
+
|
136 |
+
## Citation Information
|
137 |
+
|
138 |
+
```bibtex
|
139 |
+
|
140 |
+
```
|
141 |
+
</Cite>
|
extract_code.py
ADDED
@@ -0,0 +1,532 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/usr/bin/env python3
|
2 |
+
|
3 |
+
import re
|
4 |
+
|
5 |
+
"""
|
6 |
+
Extracts code from the file "./Libraries.ts".
|
7 |
+
(Note that "Libraries.ts", must be in the same directory as
|
8 |
+
this script).
|
9 |
+
"""
|
10 |
+
|
11 |
+
file = None
|
12 |
+
|
13 |
+
def read_file(library: str, model_name: str) -> str:
|
14 |
+
text = file
|
15 |
+
|
16 |
+
match = re.search('const ' + library + '.*', text, re.DOTALL).group()
|
17 |
+
if match:
|
18 |
+
text = match[match.index('`') + 1:match.index('`;')].replace('${model.id}', model_name)
|
19 |
+
|
20 |
+
return text
|
21 |
+
|
22 |
+
file = """
|
23 |
+
import type { ModelData } from "./Types";
|
24 |
+
/**
|
25 |
+
* Add your new library here.
|
26 |
+
*/
|
27 |
+
export enum ModelLibrary {
|
28 |
+
"adapter-transformers" = "Adapter Transformers",
|
29 |
+
"allennlp" = "allenNLP",
|
30 |
+
"asteroid" = "Asteroid",
|
31 |
+
"diffusers" = "Diffusers",
|
32 |
+
"espnet" = "ESPnet",
|
33 |
+
"fairseq" = "Fairseq",
|
34 |
+
"flair" = "Flair",
|
35 |
+
"keras" = "Keras",
|
36 |
+
"nemo" = "NeMo",
|
37 |
+
"pyannote-audio" = "pyannote.audio",
|
38 |
+
"sentence-transformers" = "Sentence Transformers",
|
39 |
+
"sklearn" = "Scikit-learn",
|
40 |
+
"spacy" = "spaCy",
|
41 |
+
"speechbrain" = "speechbrain",
|
42 |
+
"tensorflowtts" = "TensorFlowTTS",
|
43 |
+
"timm" = "Timm",
|
44 |
+
"fastai" = "fastai",
|
45 |
+
"transformers" = "Transformers",
|
46 |
+
"stanza" = "Stanza",
|
47 |
+
"fasttext" = "fastText",
|
48 |
+
"stable-baselines3" = "Stable-Baselines3",
|
49 |
+
"ml-agents" = "ML-Agents",
|
50 |
+
}
|
51 |
+
|
52 |
+
export const ALL_MODEL_LIBRARY_KEYS = Object.keys(ModelLibrary) as (keyof typeof ModelLibrary)[];
|
53 |
+
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Elements configurable by a model library.
|
57 |
+
*/
|
58 |
+
export interface LibraryUiElement {
|
59 |
+
/**
|
60 |
+
* Name displayed on the main
|
61 |
+
* call-to-action button on the model page.
|
62 |
+
*/
|
63 |
+
btnLabel: string;
|
64 |
+
/**
|
65 |
+
* Repo name
|
66 |
+
*/
|
67 |
+
repoName: string;
|
68 |
+
/**
|
69 |
+
* URL to library's repo
|
70 |
+
*/
|
71 |
+
repoUrl: string;
|
72 |
+
/**
|
73 |
+
* Code snippet displayed on model page
|
74 |
+
*/
|
75 |
+
snippet: (model: ModelData) => string;
|
76 |
+
}
|
77 |
+
|
78 |
+
function nameWithoutNamespace(modelId: string): string {
|
79 |
+
const splitted = modelId.split("/");
|
80 |
+
return splitted.length === 1 ? splitted[0] : splitted[1];
|
81 |
+
}
|
82 |
+
|
83 |
+
//#region snippets
|
84 |
+
|
85 |
+
const adapter_transformers = (model: ModelData) =>
|
86 |
+
`from transformers import ${model.config?.adapter_transformers?.model_class}
|
87 |
+
|
88 |
+
model = ${model.config?.adapter_transformers?.model_class}.from_pretrained("${model.config?.adapter_transformers?.{model.id}}")
|
89 |
+
model.load_adapter("${model.id}", source="hf")`;
|
90 |
+
|
91 |
+
const allennlpUnknown = (model: ModelData) =>
|
92 |
+
`import allennlp_models
|
93 |
+
from allennlp.predictors.predictor import Predictor
|
94 |
+
|
95 |
+
predictor = Predictor.from_path("hf://${model.id}")`;
|
96 |
+
|
97 |
+
const allennlpQuestionAnswering = (model: ModelData) =>
|
98 |
+
`import allennlp_models
|
99 |
+
from allennlp.predictors.predictor import Predictor
|
100 |
+
|
101 |
+
predictor = Predictor.from_path("hf://${model.id}")
|
102 |
+
predictor_input = {"passage": "My name is Wolfgang and I live in Berlin", "question": "Where do I live?"}
|
103 |
+
predictions = predictor.predict_json(predictor_input)`;
|
104 |
+
|
105 |
+
const allennlp = (model: ModelData) => {
|
106 |
+
if (model.tags?.includes("question-answering")) {
|
107 |
+
return allennlpQuestionAnswering(model);
|
108 |
+
}
|
109 |
+
return allennlpUnknown(model);
|
110 |
+
};
|
111 |
+
|
112 |
+
const asteroid = (model: ModelData) =>
|
113 |
+
`from asteroid.models import BaseModel
|
114 |
+
|
115 |
+
model = BaseModel.from_pretrained("${model.id}")`;
|
116 |
+
|
117 |
+
const diffusers = (model: ModelData) =>
|
118 |
+
`from diffusers import DiffusionPipeline
|
119 |
+
|
120 |
+
pipeline = DiffusionPipeline.from_pretrained("${model.id}"${model.private ? ", use_auth_token=True" : ""})`;
|
121 |
+
|
122 |
+
const espnetTTS = (model: ModelData) =>
|
123 |
+
`from espnet2.bin.tts_inference import Text2Speech
|
124 |
+
|
125 |
+
model = Text2Speech.from_pretrained("${model.id}")
|
126 |
+
|
127 |
+
speech, *_ = model("text to generate speech from")`;
|
128 |
+
|
129 |
+
const espnetASR = (model: ModelData) =>
|
130 |
+
`from espnet2.bin.asr_inference import Speech2Text
|
131 |
+
|
132 |
+
model = Speech2Text.from_pretrained(
|
133 |
+
"${model.id}"
|
134 |
+
)
|
135 |
+
|
136 |
+
speech, rate = soundfile.read("speech.wav")
|
137 |
+
text, *_ = model(speech)`;
|
138 |
+
|
139 |
+
const espnetUnknown = () =>
|
140 |
+
`unknown model type (must be text-to-speech or automatic-speech-recognition)`;
|
141 |
+
|
142 |
+
const espnet = (model: ModelData) => {
|
143 |
+
if (model.tags?.includes("text-to-speech")) {
|
144 |
+
return espnetTTS(model);
|
145 |
+
} else if (model.tags?.includes("automatic-speech-recognition")) {
|
146 |
+
return espnetASR(model);
|
147 |
+
}
|
148 |
+
return espnetUnknown();
|
149 |
+
};
|
150 |
+
|
151 |
+
const fairseq = (model: ModelData) =>
|
152 |
+
`from fairseq.checkpoint_utils import load_model_ensemble_and_task_from_hf_hub
|
153 |
+
|
154 |
+
models, cfg, task = load_model_ensemble_and_task_from_hf_hub(
|
155 |
+
"${model.id}"
|
156 |
+
)`;
|
157 |
+
|
158 |
+
|
159 |
+
const flair = (model: ModelData) =>
|
160 |
+
`from flair.models import SequenceTagger
|
161 |
+
|
162 |
+
tagger = SequenceTagger.load("${model.id}")`;
|
163 |
+
|
164 |
+
const keras = (model: ModelData) =>
|
165 |
+
`from huggingface_hub import from_pretrained_keras
|
166 |
+
|
167 |
+
model = from_pretrained_keras("${model.id}")
|
168 |
+
`;
|
169 |
+
|
170 |
+
const pyannote_audio_pipeline = (model: ModelData) =>
|
171 |
+
`from pyannote.audio import Pipeline
|
172 |
+
|
173 |
+
pipeline = Pipeline.from_pretrained("${model.id}")
|
174 |
+
|
175 |
+
# inference on the whole file
|
176 |
+
pipeline("file.wav")
|
177 |
+
|
178 |
+
# inference on an excerpt
|
179 |
+
from pyannote.core import Segment
|
180 |
+
excerpt = Segment(start=2.0, end=5.0)
|
181 |
+
|
182 |
+
from pyannote.audio import Audio
|
183 |
+
waveform, sample_rate = Audio().crop("file.wav", excerpt)
|
184 |
+
pipeline({"waveform": waveform, "sample_rate": sample_rate})`;
|
185 |
+
|
186 |
+
const pyannote_audio_model = (model: ModelData) =>
|
187 |
+
`from pyannote.audio import Model, Inference
|
188 |
+
|
189 |
+
model = Model.from_pretrained("${model.id}")
|
190 |
+
inference = Inference(model)
|
191 |
+
|
192 |
+
# inference on the whole file
|
193 |
+
inference("file.wav")
|
194 |
+
|
195 |
+
# inference on an excerpt
|
196 |
+
from pyannote.core import Segment
|
197 |
+
excerpt = Segment(start=2.0, end=5.0)
|
198 |
+
inference.crop("file.wav", excerpt)`;
|
199 |
+
|
200 |
+
const pyannote_audio = (model: ModelData) => {
|
201 |
+
if (model.tags?.includes("pyannote-audio-pipeline")) {
|
202 |
+
return pyannote_audio_pipeline(model);
|
203 |
+
}
|
204 |
+
return pyannote_audio_model(model);
|
205 |
+
};
|
206 |
+
|
207 |
+
const tensorflowttsTextToMel = (model: ModelData) =>
|
208 |
+
`from tensorflow_tts.inference import AutoProcessor, TFAutoModel
|
209 |
+
|
210 |
+
processor = AutoProcessor.from_pretrained("${model.id}")
|
211 |
+
model = TFAutoModel.from_pretrained("${model.id}")
|
212 |
+
`;
|
213 |
+
|
214 |
+
const tensorflowttsMelToWav = (model: ModelData) =>
|
215 |
+
`from tensorflow_tts.inference import TFAutoModel
|
216 |
+
|
217 |
+
model = TFAutoModel.from_pretrained("${model.id}")
|
218 |
+
audios = model.inference(mels)
|
219 |
+
`;
|
220 |
+
|
221 |
+
const tensorflowttsUnknown = (model: ModelData) =>
|
222 |
+
`from tensorflow_tts.inference import TFAutoModel
|
223 |
+
|
224 |
+
model = TFAutoModel.from_pretrained("${model.id}")
|
225 |
+
`;
|
226 |
+
|
227 |
+
const tensorflowtts = (model: ModelData) => {
|
228 |
+
if (model.tags?.includes("text-to-mel")) {
|
229 |
+
return tensorflowttsTextToMel(model);
|
230 |
+
} else if (model.tags?.includes("mel-to-wav")) {
|
231 |
+
return tensorflowttsMelToWav(model);
|
232 |
+
}
|
233 |
+
return tensorflowttsUnknown(model);
|
234 |
+
};
|
235 |
+
|
236 |
+
const timm = (model: ModelData) =>
|
237 |
+
`import timm
|
238 |
+
|
239 |
+
model = timm.create_model("hf_hub:${model.id}", pretrained=True)`;
|
240 |
+
|
241 |
+
const sklearn = (model: ModelData) =>
|
242 |
+
`from huggingface_hub import hf_hub_download
|
243 |
+
import joblib
|
244 |
+
|
245 |
+
model = joblib.load(
|
246 |
+
hf_hub_download("${model.id}", "sklearn_model.joblib")
|
247 |
+
)`;
|
248 |
+
|
249 |
+
const fastai = (model: ModelData) =>
|
250 |
+
`from huggingface_hub import from_pretrained_fastai
|
251 |
+
|
252 |
+
learn = from_pretrained_fastai("${model.id}")`;
|
253 |
+
|
254 |
+
const sentenceTransformers = (model: ModelData) =>
|
255 |
+
`from sentence_transformers import SentenceTransformer
|
256 |
+
|
257 |
+
model = SentenceTransformer("${model.id}")`;
|
258 |
+
|
259 |
+
const spacy = (model: ModelData) =>
|
260 |
+
`!pip install https://huggingface.co/${model.id}/resolve/main/${nameWithoutNamespace(model.id)}-any-py3-none-any.whl
|
261 |
+
|
262 |
+
# Using spacy.load().
|
263 |
+
import spacy
|
264 |
+
nlp = spacy.load("${nameWithoutNamespace(model.id)}")
|
265 |
+
|
266 |
+
# Importing as module.
|
267 |
+
import ${nameWithoutNamespace(model.id)}
|
268 |
+
nlp = ${nameWithoutNamespace(model.id)}.load()`;
|
269 |
+
|
270 |
+
const stanza = (model: ModelData) =>
|
271 |
+
`import stanza
|
272 |
+
|
273 |
+
stanza.download("${nameWithoutNamespace(model.id).replace("stanza-", "")}")
|
274 |
+
nlp = stanza.Pipeline("${nameWithoutNamespace(model.id).replace("stanza-", "")}")`;
|
275 |
+
|
276 |
+
|
277 |
+
const speechBrainMethod = (speechbrainInterface: string) => {
|
278 |
+
switch (speechbrainInterface) {
|
279 |
+
case "EncoderClassifier":
|
280 |
+
return "classify_file";
|
281 |
+
case "EncoderDecoderASR":
|
282 |
+
case "EncoderASR":
|
283 |
+
return "transcribe_file";
|
284 |
+
case "SpectralMaskEnhancement":
|
285 |
+
return "enhance_file";
|
286 |
+
case "SepformerSeparation":
|
287 |
+
return "separate_file";
|
288 |
+
default:
|
289 |
+
return undefined;
|
290 |
+
}
|
291 |
+
};
|
292 |
+
|
293 |
+
const speechbrain = (model: ModelData) => {
|
294 |
+
const speechbrainInterface = model.config?.speechbrain?.interface;
|
295 |
+
if (speechbrainInterface === undefined) {
|
296 |
+
return `# interface not specified in config.json`;
|
297 |
+
}
|
298 |
+
|
299 |
+
const speechbrainMethod = speechBrainMethod(speechbrainInterface);
|
300 |
+
if (speechbrainMethod === undefined) {
|
301 |
+
return `# interface in config.json invalid`;
|
302 |
+
}
|
303 |
+
|
304 |
+
return `from speechbrain.pretrained import ${speechbrainInterface}
|
305 |
+
model = ${speechbrainInterface}.from_hparams(
|
306 |
+
"${model.id}"
|
307 |
+
)
|
308 |
+
model.${speechbrainMethod}("file.wav")`;
|
309 |
+
};
|
310 |
+
|
311 |
+
const transformers = (model: ModelData) => {
|
312 |
+
const info = model.transformersInfo;
|
313 |
+
if (!info) {
|
314 |
+
return `# β οΈ Type of model unknown`;
|
315 |
+
}
|
316 |
+
if (info.processor) {
|
317 |
+
const varName = info.processor === "AutoTokenizer" ? "tokenizer"
|
318 |
+
: info.processor === "AutoFeatureExtractor" ? "extractor"
|
319 |
+
: "processor"
|
320 |
+
;
|
321 |
+
return [
|
322 |
+
`from transformers import ${info.processor}, ${info.auto_model}`,
|
323 |
+
"",
|
324 |
+
`${varName} = ${info.processor}.from_pretrained("${model.id}"${model.private ? ", use_auth_token=True" : ""})`,
|
325 |
+
"",
|
326 |
+
`model = ${info.auto_model}.from_pretrained("${model.id}"${model.private ? ", use_auth_token=True" : ""})`,
|
327 |
+
].join("\n");
|
328 |
+
} else {
|
329 |
+
return [
|
330 |
+
`from transformers import ${info.auto_model}`,
|
331 |
+
"",
|
332 |
+
`model = ${info.auto_model}.from_pretrained("${model.id}"${model.private ? ", use_auth_token=True" : ""})`,
|
333 |
+
].join("\n");
|
334 |
+
}
|
335 |
+
};
|
336 |
+
|
337 |
+
const fasttext = (model: ModelData) =>
|
338 |
+
`from huggingface_hub import hf_hub_download
|
339 |
+
import fasttext
|
340 |
+
|
341 |
+
model = fasttext.load_model(hf_hub_download("${model.id}", "model.bin"))`;
|
342 |
+
|
343 |
+
const stableBaselines3 = (model: ModelData) =>
|
344 |
+
`from huggingface_sb3 import load_from_hub
|
345 |
+
checkpoint = load_from_hub(
|
346 |
+
repo_id="${model.id}",
|
347 |
+
filename="{MODEL FILENAME}.zip",
|
348 |
+
)`;
|
349 |
+
|
350 |
+
const nemoDomainResolver = (domain: string, model: ModelData): string | undefined => {
|
351 |
+
const modelName = `${nameWithoutNamespace(model.id)}.nemo`;
|
352 |
+
|
353 |
+
switch (domain) {
|
354 |
+
case "ASR":
|
355 |
+
return `import nemo.collections.asr as nemo_asr
|
356 |
+
asr_model = nemo_asr.models.ASRModel.from_pretrained("${model.id}")
|
357 |
+
|
358 |
+
transcriptions = asr_model.transcribe(["file.wav"])`;
|
359 |
+
default:
|
360 |
+
return undefined;
|
361 |
+
}
|
362 |
+
};
|
363 |
+
|
364 |
+
const mlAgents = (model: ModelData) =>
|
365 |
+
`mlagents-load-from-hf --repo-id="${model.id}" --local-dir="./downloads"`;
|
366 |
+
|
367 |
+
const nemo = (model: ModelData) => {
|
368 |
+
let command: string | undefined = undefined;
|
369 |
+
// Resolve the tag to a nemo domain/sub-domain
|
370 |
+
if (model.tags?.includes("automatic-speech-recognition")) {
|
371 |
+
command = nemoDomainResolver("ASR", model);
|
372 |
+
}
|
373 |
+
|
374 |
+
return command ?? `# tag did not correspond to a valid NeMo domain.`;
|
375 |
+
};
|
376 |
+
|
377 |
+
//#endregion
|
378 |
+
|
379 |
+
|
380 |
+
|
381 |
+
export const MODEL_LIBRARIES_UI_ELEMENTS: { [key in keyof typeof ModelLibrary]?: LibraryUiElement } = {
|
382 |
+
// ^^ TODO(remove the optional ? marker when Stanza snippet is available)
|
383 |
+
"adapter-transformers": {
|
384 |
+
btnLabel: "Adapter Transformers",
|
385 |
+
repoName: "adapter-transformers",
|
386 |
+
repoUrl: "https://github.com/Adapter-Hub/adapter-transformers",
|
387 |
+
snippet: adapter_transformers,
|
388 |
+
},
|
389 |
+
"allennlp": {
|
390 |
+
btnLabel: "AllenNLP",
|
391 |
+
repoName: "AllenNLP",
|
392 |
+
repoUrl: "https://github.com/allenai/allennlp",
|
393 |
+
snippet: allennlp,
|
394 |
+
},
|
395 |
+
"asteroid": {
|
396 |
+
btnLabel: "Asteroid",
|
397 |
+
repoName: "Asteroid",
|
398 |
+
repoUrl: "https://github.com/asteroid-team/asteroid",
|
399 |
+
snippet: asteroid,
|
400 |
+
},
|
401 |
+
"diffusers": {
|
402 |
+
btnLabel: "Diffusers",
|
403 |
+
repoName: "π€/diffusers",
|
404 |
+
repoUrl: "https://github.com/huggingface/diffusers",
|
405 |
+
snippet: diffusers,
|
406 |
+
},
|
407 |
+
"espnet": {
|
408 |
+
btnLabel: "ESPnet",
|
409 |
+
repoName: "ESPnet",
|
410 |
+
repoUrl: "https://github.com/espnet/espnet",
|
411 |
+
snippet: espnet,
|
412 |
+
},
|
413 |
+
"fairseq": {
|
414 |
+
btnLabel: "Fairseq",
|
415 |
+
repoName: "fairseq",
|
416 |
+
repoUrl: "https://github.com/pytorch/fairseq",
|
417 |
+
snippet: fairseq,
|
418 |
+
},
|
419 |
+
"flair": {
|
420 |
+
btnLabel: "Flair",
|
421 |
+
repoName: "Flair",
|
422 |
+
repoUrl: "https://github.com/flairNLP/flair",
|
423 |
+
snippet: flair,
|
424 |
+
},
|
425 |
+
"keras": {
|
426 |
+
btnLabel: "Keras",
|
427 |
+
repoName: "Keras",
|
428 |
+
repoUrl: "https://github.com/keras-team/keras",
|
429 |
+
snippet: keras,
|
430 |
+
},
|
431 |
+
"nemo": {
|
432 |
+
btnLabel: "NeMo",
|
433 |
+
repoName: "NeMo",
|
434 |
+
repoUrl: "https://github.com/NVIDIA/NeMo",
|
435 |
+
snippet: nemo,
|
436 |
+
},
|
437 |
+
"pyannote-audio": {
|
438 |
+
btnLabel: "pyannote.audio",
|
439 |
+
repoName: "pyannote-audio",
|
440 |
+
repoUrl: "https://github.com/pyannote/pyannote-audio",
|
441 |
+
snippet: pyannote_audio,
|
442 |
+
},
|
443 |
+
"sentence-transformers": {
|
444 |
+
btnLabel: "sentence-transformers",
|
445 |
+
repoName: "sentence-transformers",
|
446 |
+
repoUrl: "https://github.com/UKPLab/sentence-transformers",
|
447 |
+
snippet: sentenceTransformers,
|
448 |
+
},
|
449 |
+
"sklearn": {
|
450 |
+
btnLabel: "Scikit-learn",
|
451 |
+
repoName: "Scikit-learn",
|
452 |
+
repoUrl: "https://github.com/scikit-learn/scikit-learn",
|
453 |
+
snippet: sklearn,
|
454 |
+
},
|
455 |
+
"fastai": {
|
456 |
+
btnLabel: "fastai",
|
457 |
+
repoName: "fastai",
|
458 |
+
repoUrl: "https://github.com/fastai/fastai",
|
459 |
+
snippet: fastai,
|
460 |
+
},
|
461 |
+
"spacy": {
|
462 |
+
btnLabel: "spaCy",
|
463 |
+
repoName: "spaCy",
|
464 |
+
repoUrl: "https://github.com/explosion/spaCy",
|
465 |
+
snippet: spacy,
|
466 |
+
},
|
467 |
+
"speechbrain": {
|
468 |
+
btnLabel: "speechbrain",
|
469 |
+
repoName: "speechbrain",
|
470 |
+
repoUrl: "https://github.com/speechbrain/speechbrain",
|
471 |
+
snippet: speechbrain,
|
472 |
+
},
|
473 |
+
"stanza": {
|
474 |
+
btnLabel: "Stanza",
|
475 |
+
repoName: "stanza",
|
476 |
+
repoUrl: "https://github.com/stanfordnlp/stanza",
|
477 |
+
snippet: stanza,
|
478 |
+
},
|
479 |
+
"tensorflowtts": {
|
480 |
+
btnLabel: "TensorFlowTTS",
|
481 |
+
repoName: "TensorFlowTTS",
|
482 |
+
repoUrl: "https://github.com/TensorSpeech/TensorFlowTTS",
|
483 |
+
snippet: tensorflowtts,
|
484 |
+
},
|
485 |
+
"timm": {
|
486 |
+
btnLabel: "timm",
|
487 |
+
repoName: "pytorch-image-models",
|
488 |
+
repoUrl: "https://github.com/rwightman/pytorch-image-models",
|
489 |
+
snippet: timm,
|
490 |
+
},
|
491 |
+
"transformers": {
|
492 |
+
btnLabel: "Transformers",
|
493 |
+
repoName: "π€/transformers",
|
494 |
+
repoUrl: "https://github.com/huggingface/transformers",
|
495 |
+
snippet: transformers,
|
496 |
+
},
|
497 |
+
"fasttext": {
|
498 |
+
btnLabel: "fastText",
|
499 |
+
repoName: "fastText",
|
500 |
+
repoUrl: "https://fasttext.cc/",
|
501 |
+
snippet: fasttext,
|
502 |
+
},
|
503 |
+
"stable-baselines3": {
|
504 |
+
btnLabel: "stable-baselines3",
|
505 |
+
repoName: "stable-baselines3",
|
506 |
+
repoUrl: "https://github.com/huggingface/huggingface_sb3",
|
507 |
+
snippet: stableBaselines3,
|
508 |
+
},
|
509 |
+
"ml-agents": {
|
510 |
+
btnLabel: "ml-agents",
|
511 |
+
repoName: "ml-agents",
|
512 |
+
repoUrl: "https://github.com/huggingface/ml-agents",
|
513 |
+
snippet: mlAgents,
|
514 |
+
},
|
515 |
+
} as const;
|
516 |
+
"""
|
517 |
+
|
518 |
+
|
519 |
+
if __name__ == '__main__':
|
520 |
+
import sys
|
521 |
+
library_name = "keras"
|
522 |
+
model_name = "Distillgpt2"
|
523 |
+
print(read_file(library_name, model_name))
|
524 |
+
|
525 |
+
""""
|
526 |
+
try:
|
527 |
+
args = sys.argv[1:]
|
528 |
+
if args:
|
529 |
+
print(read_file(args[0], args[1]))
|
530 |
+
except IndexError:
|
531 |
+
pass
|
532 |
+
"""
|
language_model_template1.md
ADDED
@@ -0,0 +1,329 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
{{card_data}}
|
3 |
+
---
|
4 |
+
|
5 |
+
{% set lm_task_entries = {
|
6 |
+
'text-generation': {
|
7 |
+
'direct_use': "The model can be used for text generation.",
|
8 |
+
'downstream_use': "To learn more about this task and potential downstream uses, see the Hugging Face [text generation docs](https://huggingface.co/tasks/text-generation)",
|
9 |
+
'misuse': "The model was not trained to be factual or true representations of people or events, and therefore using the models to generate such content is out-of-scope for the abilities of this model."
|
10 |
+
},
|
11 |
+
'question-answering': {
|
12 |
+
'direct_use': "The model can be used for question answering.",
|
13 |
+
'downstream_use': "Potential types of question answering include extractive QA, open generative QA, and closed generative QA. To learn more about this task and potential downstream uses, see the Hugging Face [question answering docs](https://huggingface.co/tasks/question-answering)",
|
14 |
+
'misuse': "The model was not trained to be factual or true representations of people or events, and therefore using the models to generate such content is out-of-scope for the abilities of this model."
|
15 |
+
},
|
16 |
+
'fill-mask': {
|
17 |
+
'direct_use': "The model can be used for masked language modeling.",
|
18 |
+
'downstream_use': "Masked language modeling are sometimes used to train large models for domain-specific problems. To learn more about this task and potential downstream uses, see the Hugging Face [fill mask docs](https://huggingface.co/tasks/fill-mask)",
|
19 |
+
'misuse': "The model was not trained to be factual or true representations of people or events, and therefore using the models to generate such content is out-of-scope for the abilities of this model."
|
20 |
+
},
|
21 |
+
'sentence_similarity': {
|
22 |
+
'direct_use': "The model can be used for sentence similarity, the task of determining how similar two texts are.",
|
23 |
+
'downstream_use': "Potential downstream use cases may include information retreival and clustering or grouping. To learn more about sentence similarity and potential downstream uses, see the Hugging Face [sentence similarity docs](https://huggingface.co/tasks/sentence-similarity)",
|
24 |
+
'misuse': ""
|
25 |
+
},
|
26 |
+
'summarization': {
|
27 |
+
'direct_use': "The model can be used for summarization.",
|
28 |
+
'downstream_use': "To learn more about summarization and potential downstream uses, see the Hugging Face [summarization docs](https://huggingface.co/tasks/summarization).",
|
29 |
+
'misuse': "The model was not trained to be factual or true representations of people or events, and therefore using the models to generate such content is out-of-scope for the abilities of this model."
|
30 |
+
},
|
31 |
+
'text_classification': {
|
32 |
+
'direct_use': "The model can be used for text classification, the task of assigning a label or class to a given text.",
|
33 |
+
'downstream_use': "Potential downstream use cases include sentiment analysis, natural language inference, and assessing grammatical correctness. To learn more about text classification and other potential downstream uses, see the Hugging Face [text classification docs](https://huggingface.co/tasks/text-classification).",
|
34 |
+
'misuse': ""
|
35 |
+
},
|
36 |
+
'token_classification': {
|
37 |
+
'direct_use': "The model can be used for token classification, a natural language understanding task in which a label is assigned to some tokens in a text.",
|
38 |
+
'downstream_use': "Potential downstream use cases include Named Entity Recognition (NER) and Part-of-Speech (PoS) tagging. To learn more about token classification and other potential downstream use cases, see the Hugging Face [token classification docs](https://huggingface.co/tasks/token-classification).",
|
39 |
+
'misuse': ""
|
40 |
+
},
|
41 |
+
'translation': {
|
42 |
+
'direct_use': "The model can be used for translation, the task of converting text from one language to another.",
|
43 |
+
'downstream_use': "Potential downstream use cases include use cases that leverage conversational agents across different languages. To learn more about translation and other potential downstream use cases, see the Hugging Face [translation docs](https://huggingface.co/tasks/translation).",
|
44 |
+
'misuse': ""
|
45 |
+
},
|
46 |
+
} %}
|
47 |
+
|
48 |
+
{% set task_list = [
|
49 |
+
'text_generation',
|
50 |
+
'question_answering',
|
51 |
+
'fill_mask',
|
52 |
+
'sentence_similarity',
|
53 |
+
'summarization',
|
54 |
+
'text_classification',
|
55 |
+
'token_classification',
|
56 |
+
'translation'
|
57 |
+
] %}
|
58 |
+
|
59 |
+
|
60 |
+
# Model Card for {{ model_id }}
|
61 |
+
|
62 |
+
<!-- Provide a quick summary of what the model is/does. [Optional] -->
|
63 |
+
{{ the_model_description }}
|
64 |
+
|
65 |
+
{% if model_card_user == "policymaker" %}
|
66 |
+
<details>
|
67 |
+
<summary> Click to expand policymaker version of model card </summary>
|
68 |
+
|
69 |
+
# Table of Contents
|
70 |
+
|
71 |
+
1. [Model Details](#model-details)
|
72 |
+
2. [Uses](#uses)
|
73 |
+
3. [Bias, Risks, and Limitations](#bias-risks-and-limitations)
|
74 |
+
4. [Model Examination](#model-examination)
|
75 |
+
5. [Environmental Impact](#environmental-impact)
|
76 |
+
6. [Citation](#citation)
|
77 |
+
7. [Glossary](#glossary-optional)
|
78 |
+
8. [More Information](#more-information-optional)
|
79 |
+
9. [Model Card Authors](#model-card-authors-optional)
|
80 |
+
10. [Model Card Contact](#model-card-contact)
|
81 |
+
|
82 |
+
</details>
|
83 |
+
|
84 |
+
{% endif %}
|
85 |
+
|
86 |
+
|
87 |
+
# Table of Contents
|
88 |
+
|
89 |
+
- [Model Card for {{ model_id }}](#model-card-for--model_id-)
|
90 |
+
- [Table of Contents](#table-of-contents)
|
91 |
+
- [Table of Contents](#table-of-contents-1)
|
92 |
+
- [Model Details](#model-details)
|
93 |
+
- [Model Description](#model-description)
|
94 |
+
- [Uses](#uses)
|
95 |
+
- [Direct Use](#direct-use)
|
96 |
+
- [Downstream Use [Optional]](#downstream-use-optional)
|
97 |
+
- [Out-of-Scope Use](#out-of-scope-use)
|
98 |
+
- [Bias, Risks, and Limitations](#bias-risks-and-limitations)
|
99 |
+
- [Recommendations](#recommendations)
|
100 |
+
- [Training Details](#training-details)
|
101 |
+
- [Training Data](#training-data)
|
102 |
+
- [Training Procedure](#training-procedure)
|
103 |
+
- [Preprocessing](#preprocessing)
|
104 |
+
- [Speeds, Sizes, Times](#speeds-sizes-times)
|
105 |
+
- [Evaluation](#evaluation)
|
106 |
+
- [Testing Data, Factors & Metrics](#testing-data-factors--metrics)
|
107 |
+
- [Testing Data](#testing-data)
|
108 |
+
- [Factors](#factors)
|
109 |
+
- [Metrics](#metrics)
|
110 |
+
- [Results](#results)
|
111 |
+
- [Model Examination](#model-examination)
|
112 |
+
- [Environmental Impact](#environmental-impact)
|
113 |
+
- [Technical Specifications [optional]](#technical-specifications-optional)
|
114 |
+
- [Model Architecture and Objective](#model-architecture-and-objective)
|
115 |
+
- [Compute Infrastructure](#compute-infrastructure)
|
116 |
+
- [Hardware](#hardware)
|
117 |
+
- [Software](#software)
|
118 |
+
- [Citation](#citation)
|
119 |
+
- [Glossary [optional]](#glossary-optional)
|
120 |
+
- [More Information [optional]](#more-information-optional)
|
121 |
+
- [Model Card Authors [optional]](#model-card-authors-optional)
|
122 |
+
- [Model Card Contact](#model-card-contact)
|
123 |
+
- [How to Get Started with the Model](#how-to-get-started-with-the-model)
|
124 |
+
|
125 |
+
|
126 |
+
# Model Details
|
127 |
+
|
128 |
+
## Model Description
|
129 |
+
|
130 |
+
<!-- Provide a longer summary of what this model is/does. -->
|
131 |
+
{{ the_model_description }}
|
132 |
+
|
133 |
+
- **Developed by:** {{ developers | join(', ') | default("More information needed", true)}}
|
134 |
+
- **Shared by [Optional]:** {{ shared_by | join(', ') | default("More information needed", true)}}
|
135 |
+
- **Model type:** {{ model_type | default("Language model", true)}}
|
136 |
+
- **Language(s) (NLP):** {{ language | join(', ') | default("More information needed", true)}}
|
137 |
+
- **License:** {{ model_license | default("More information needed", true)}}
|
138 |
+
- **Parent Model:** {{ " [Parent Model]({0})".format(repo_link) if parent_model_link else "More information needed"}}
|
139 |
+
- **Resources for more information:** {{ more_resources | default("More information needed", true)}}
|
140 |
+
{{ " - [GitHub Repo]({0})".format(repo_link) if repo_link}}
|
141 |
+
{{ " - [Associated Paper]({0})".format(paper_link) if paper_link }}
|
142 |
+
|
143 |
+
# Uses
|
144 |
+
|
145 |
+
<!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->
|
146 |
+
|
147 |
+
## Direct Use
|
148 |
+
|
149 |
+
<!-- This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. -->
|
150 |
+
<!-- If the user enters content, print that. If not, but they enter a task in the list, use that. If neither, say "more info needed." -->
|
151 |
+
{% if direct_use is defined %}
|
152 |
+
{{ direct_use }}
|
153 |
+
{% elif model_task in task_list %}
|
154 |
+
{{ lm_task_entries[model_task]['direct_use'] }}
|
155 |
+
{% else %}
|
156 |
+
More information needed.
|
157 |
+
{% endif %}
|
158 |
+
|
159 |
+
## Downstream Use [Optional]
|
160 |
+
|
161 |
+
<!-- This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app -->
|
162 |
+
<!-- If the user enters content, print that. If not, but they enter a task in the list, use that. If neither, say "more info needed." -->
|
163 |
+
{% if downstream_use is defined %}
|
164 |
+
{{ downstream_use }}
|
165 |
+
{% elif model_task in task_list %}
|
166 |
+
{{ lm_task_entries[model_task]['downstream_use'] }}
|
167 |
+
{% else %}
|
168 |
+
More information needed.
|
169 |
+
{% endif %}
|
170 |
+
|
171 |
+
## Out-of-Scope Use
|
172 |
+
|
173 |
+
<!-- This section addresses misuse, malicious use, and uses that the model will not work well for. -->
|
174 |
+
<!-- If the user enters content, print that. If not, but they enter a task in the list, use that. If neither, say "more info needed." -->
|
175 |
+
{% if out_of_scope_use is defined %}
|
176 |
+
{{ out_of_scope_use }}
|
177 |
+
{% elif model_task in task_list %}
|
178 |
+
The model should not be used to intentionally create hostile or alienating environments for people. {{ lm_task_entries[model_task]['misuse'] }}
|
179 |
+
{% else %}
|
180 |
+
More information needed.
|
181 |
+
{% endif %}
|
182 |
+
|
183 |
+
# Bias, Risks, and Limitations
|
184 |
+
|
185 |
+
<!-- This section is meant to convey both technical and sociotechnical limitations. -->
|
186 |
+
{% if bias_risks_limiations is defined %}
|
187 |
+
{{ bias_risks_limitations }}
|
188 |
+
{% else %}
|
189 |
+
Significant research has explored bias and fairness issues with language models (see, e.g., [Sheng et al. (2021)](https://aclanthology.org/2021.acl-long.330.pdf) and [Bender et al. (2021)](https://dl.acm.org/doi/pdf/10.1145/3442188.3445922)). Predictions generated by the model may include disturbing and harmful stereotypes across protected classes; identity characteristics; and sensitive, social, and occupational groups.
|
190 |
+
{% endif %}
|
191 |
+
|
192 |
+
## Recommendations
|
193 |
+
|
194 |
+
<!-- This section is meant to convey recommendations with respect to the bias, risk, and technical limitations. -->
|
195 |
+
|
196 |
+
{% if bias_recommendations is defined %}
|
197 |
+
{{ bias_recommendations }}
|
198 |
+
{% else %}
|
199 |
+
Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recomendations.
|
200 |
+
{% endif %}
|
201 |
+
|
202 |
+
# Training Details
|
203 |
+
|
204 |
+
## Training Data
|
205 |
+
|
206 |
+
<!-- This should link to a Data Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. -->
|
207 |
+
|
208 |
+
{{ training_data | default("More information on training data needed", true)}}
|
209 |
+
{{ "See the associated [dataset card]({0}) for further details.".format(training_datacard_link) if training_data_card_link }}
|
210 |
+
|
211 |
+
## Training Procedure
|
212 |
+
|
213 |
+
<!-- This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. -->
|
214 |
+
|
215 |
+
### Preprocessing
|
216 |
+
|
217 |
+
{{ preprocessing | default("More information needed", true)}}
|
218 |
+
|
219 |
+
### Speeds, Sizes, Times
|
220 |
+
|
221 |
+
<!-- This section provides information about throughput, start/end time, checkpoint size if relevant, etc. -->
|
222 |
+
|
223 |
+
{{ speeds_sizes_times | default("More information needed", true)}}
|
224 |
+
|
225 |
+
# Evaluation
|
226 |
+
|
227 |
+
<!-- This section describes the evaluation protocols and provides the results. -->
|
228 |
+
|
229 |
+
## Testing Data, Factors & Metrics
|
230 |
+
|
231 |
+
### Testing Data
|
232 |
+
|
233 |
+
<!-- This should link to a Data Card if possible. -->
|
234 |
+
|
235 |
+
{{ testing_data | default("More information needed", true)}}
|
236 |
+
{{ "See the associated [dataset card]({0}) for further details.".format(testing_datacard_link) if testing_data_card_link }}
|
237 |
+
|
238 |
+
### Factors
|
239 |
+
|
240 |
+
<!-- These are the things the evaluation is disaggregating by, e.g., subpopulations or domains. -->
|
241 |
+
|
242 |
+
{{ testing_factors | default("More information needed", true)}}
|
243 |
+
|
244 |
+
### Metrics
|
245 |
+
|
246 |
+
<!-- These are the evaluation metrics being used, ideally with a description of why. -->
|
247 |
+
|
248 |
+
{{ testing_metrics | default("More information needed", true)}}
|
249 |
+
|
250 |
+
## Results
|
251 |
+
|
252 |
+
{{ results | default("More information needed", true)}}
|
253 |
+
|
254 |
+
# Model Examination
|
255 |
+
|
256 |
+
{{ model_examination | default("More information needed", true)}}
|
257 |
+
|
258 |
+
# Environmental Impact
|
259 |
+
|
260 |
+
<!-- Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here. Edit the suggested text below accordingly -->
|
261 |
+
|
262 |
+
Carbon emissions can be estimated using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700).
|
263 |
+
|
264 |
+
- **Hardware Type:** {{ hardware | default("More information needed", true)}}
|
265 |
+
- **Hours used:** {{ hours_used | default("More information needed", true)}}
|
266 |
+
- **Cloud Provider:** {{ cloud_provider | default("More information needed", true)}}
|
267 |
+
- **Compute Region:** {{ cloud_region | default("More information needed", true)}}
|
268 |
+
- **Carbon Emitted:** {{ co2_emitted | default("More information needed", true)}}
|
269 |
+
|
270 |
+
# Technical Specifications [optional]
|
271 |
+
|
272 |
+
## Model Architecture and Objective
|
273 |
+
|
274 |
+
{{ model_specs | default("More information needed", true)}}
|
275 |
+
|
276 |
+
## Compute Infrastructure
|
277 |
+
|
278 |
+
{{ compute_infrastructure | default("More information needed", true)}}
|
279 |
+
|
280 |
+
### Hardware
|
281 |
+
|
282 |
+
{{ hardware | default("More information needed", true)}}
|
283 |
+
|
284 |
+
### Software
|
285 |
+
|
286 |
+
{{ software | default("More information needed", true)}}
|
287 |
+
|
288 |
+
# Citation
|
289 |
+
|
290 |
+
<!-- If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section. -->
|
291 |
+
|
292 |
+
**BibTeX:**
|
293 |
+
|
294 |
+
{{ citation_bibtex | default("More information needed", true)}}
|
295 |
+
|
296 |
+
**APA:**
|
297 |
+
|
298 |
+
{{ citation_apa | default("More information needed", true)}}
|
299 |
+
|
300 |
+
# Glossary [optional]
|
301 |
+
|
302 |
+
<!-- If relevant, include terms and calculations in this section that can help readers understand the model or model card. -->
|
303 |
+
|
304 |
+
{{ glossary | default("More information needed", true)}}
|
305 |
+
|
306 |
+
# More Information [optional]
|
307 |
+
|
308 |
+
{{ more_information | default("More information needed", true)}}
|
309 |
+
|
310 |
+
# Model Card Authors [optional]
|
311 |
+
|
312 |
+
<!-- This section provides another layer of transparency and accountability. Whose views is this model card representing? How many voices were included in its construction? Etc. -->
|
313 |
+
|
314 |
+
{{ model_card_authors | join(', ') | default("More information needed", true)}}
|
315 |
+
|
316 |
+
# Model Card Contact
|
317 |
+
|
318 |
+
{{ model_card_contact | join(', ') | default("More information needed", true)}}
|
319 |
+
|
320 |
+
# How to Get Started with the Model
|
321 |
+
|
322 |
+
Use the code below to get started with the model.
|
323 |
+
|
324 |
+
<details>
|
325 |
+
<summary> Click to expand </summary>
|
326 |
+
|
327 |
+
{{ get_started_code | default("More information needed", true)}}
|
328 |
+
|
329 |
+
</details>
|
lets_combine.md
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
'<details> <summary> Click to expand </summary>\n\n# Model Details\n## Model Description\n<!--> Provide a longer summary of what this model is. <!-->\n- **Developed by:** {{ developers | default("More information needed", true)}}- **Shared by [Optional]:** {{ shared_by | default("More information needed", true)}}- **Model type:** Language model- **Language(s) (NLP):** {{ language | default("More information needed", true)}}- **License:** {{ license | default("More information needed", true)}}- **Related Models:** {{ related_models | default("More information needed", true)}} - **Parent Model:** {{ parent_model | default("More information needed", true)}}- **Resources for more information:** {{ more_resources | default("More information needed", true)}} </details>\n# Uses\n<!--> Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. <!-->\n## Direct Use\n<!--> This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. <!-->\n## Downstream Use [Optional]\n<!--> This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app <!-->\n## Out-of-Scope Use\n<!--> This section addresses misuse, malicious use, and uses that the model will not work well for. <!--> '
|
markdownTagExtract.cpython-39.pyc
ADDED
Binary file (1.75 kB). View file
|
|
markdownTagExtract.py
ADDED
@@ -0,0 +1,99 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#from lib import tag_checker
|
2 |
+
import glob
|
3 |
+
import fileinput
|
4 |
+
import os
|
5 |
+
|
6 |
+
def tag_checker(file,start_header,end_header):
|
7 |
+
markdown_fp = open(file, "r")
|
8 |
+
|
9 |
+
# Needed for later
|
10 |
+
idea_list = []
|
11 |
+
idea_counter = 0
|
12 |
+
|
13 |
+
start_t = start_header
|
14 |
+
end_t = end_header
|
15 |
+
|
16 |
+
inside_tag = False
|
17 |
+
for line in markdown_fp:
|
18 |
+
start_tag = start_t in line
|
19 |
+
end_tag = end_t in line
|
20 |
+
outside_tag = not inside_tag
|
21 |
+
|
22 |
+
if start_tag and outside_tag:
|
23 |
+
# Start tag
|
24 |
+
tag_start_index = line.index(start_t) + len(end_t)
|
25 |
+
line = line[tag_start_index:]
|
26 |
+
|
27 |
+
# This is where we'll store the idea
|
28 |
+
idea_list.append("")
|
29 |
+
|
30 |
+
inside_tag = True
|
31 |
+
|
32 |
+
if end_tag and inside_tag:
|
33 |
+
# End tag
|
34 |
+
end_tag_index = line.index(end_t)
|
35 |
+
|
36 |
+
line = line[:end_tag_index]
|
37 |
+
|
38 |
+
idea_list[idea_counter] += line
|
39 |
+
idea_counter += 1
|
40 |
+
inside_tag = False
|
41 |
+
|
42 |
+
if inside_tag:
|
43 |
+
# Extract
|
44 |
+
idea_list[idea_counter] += line
|
45 |
+
markdown_fp.close()
|
46 |
+
return idea_list
|
47 |
+
|
48 |
+
def listToString(s):
|
49 |
+
|
50 |
+
# initialize an empty string
|
51 |
+
str1 = ""
|
52 |
+
|
53 |
+
# traverse in the string
|
54 |
+
for ele in s:
|
55 |
+
str1 += ele
|
56 |
+
|
57 |
+
# return string
|
58 |
+
return str1
|
59 |
+
|
60 |
+
|
61 |
+
def to_markdown(new_file, text_list):
|
62 |
+
new_file_name = open(new_file, "w")
|
63 |
+
|
64 |
+
#new_file_name.write("# Collection of ideas\n")
|
65 |
+
|
66 |
+
for i, idea in enumerate(text_list):
|
67 |
+
new_file_name.write(idea + "\n")
|
68 |
+
|
69 |
+
new_file_name.close()
|
70 |
+
|
71 |
+
def combine_markdowns(document1, original_document):
|
72 |
+
pat = document1
|
73 |
+
with open(original_document, 'w') as fout:
|
74 |
+
for line in sorted(fileinput.input(glob.glob(pat))):
|
75 |
+
fout.write(line)
|
76 |
+
return original_document
|
77 |
+
|
78 |
+
if __name__ == "__main__":
|
79 |
+
file = "template.md"
|
80 |
+
header_1_start = '<how_to_start>'
|
81 |
+
header_1_end = '</how_to_start>'
|
82 |
+
|
83 |
+
header_2_start = '<how_to_start>'
|
84 |
+
header_2_end = '</how_to_start>'
|
85 |
+
|
86 |
+
|
87 |
+
how_to_start = (tag_checker(file,header_2_start,header_2_end))
|
88 |
+
|
89 |
+
intended_use_limits = (tag_checker(file,header_2_start,header_2_end))
|
90 |
+
string_s = listToString(how_to_start)
|
91 |
+
print(string_s)
|
92 |
+
combine_markdowns = how_to_start + intended_use_limits
|
93 |
+
|
94 |
+
|
95 |
+
#to_markdown ('combined.md',combine_markdowns)
|
96 |
+
|
97 |
+
|
98 |
+
|
99 |
+
|
middleMan.cpython-39.pyc
ADDED
Binary file (2.37 kB). View file
|
|
middleMan.py
ADDED
@@ -0,0 +1,136 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from persist import persist, load_widget_state
|
3 |
+
#from pages.viewCardProgress import get_card
|
4 |
+
from modelcards import CardData, ModelCard
|
5 |
+
from markdownTagExtract import tag_checker,listToString,to_markdown
|
6 |
+
#from specific_extraction import extract_it
|
7 |
+
from modelcards import CardData, ModelCard
|
8 |
+
from jinja2 import Environment, FileSystemLoader
|
9 |
+
|
10 |
+
|
11 |
+
def is_float(value):
|
12 |
+
try:
|
13 |
+
float(value)
|
14 |
+
return True
|
15 |
+
except:
|
16 |
+
return False
|
17 |
+
|
18 |
+
## Handles parsing jinja variable templates
|
19 |
+
def parse_into_jinja_markdown():
|
20 |
+
env = Environment(loader=FileSystemLoader('.'), autoescape=True)
|
21 |
+
temp = env.get_template(st.session_state.markdown_upload)
|
22 |
+
# to add:
|
23 |
+
# - parent model
|
24 |
+
# to fix:
|
25 |
+
# citation on form: check box for bibtex or apa: then parse
|
26 |
+
return (temp.render(model_id = st.session_state["model_name"],
|
27 |
+
language = st.session_state["languages"],
|
28 |
+
the_model_description = st.session_state["model_description"],developers=st.session_state["Model_developers"],shared_by = st.session_state["Shared_by"],model_license = st.session_state['license'],
|
29 |
+
parent_model_link = st.session_state['Parent_Model_url'],
|
30 |
+
direct_use = st.session_state["Direct_Use"], downstream_use = st.session_state["Downstream_Use"],out_of_scope_use = st.session_state["Out-of-Scope_Use"],
|
31 |
+
bias_risks_limitations = st.session_state["Model_Limits_n_Risks"], bias_recommendations = st.session_state['Recommendations'],
|
32 |
+
model_examination = st.session_state['Model_examin'],
|
33 |
+
speeds_sizes_times = st.session_state['Speeds_Sizes_Times'],
|
34 |
+
hardware= st.session_state['Model_hardware'], hours_used = st.session_state['hours_used'], cloud_provider = st.session_state['Model_cloud_provider'], cloud_region = st.session_state['Model_cloud_region'], co2_emitted = st.session_state['Model_c02_emitted'],
|
35 |
+
citation_bibtex= st.session_state["APA_citation"], citation_apa = st.session_state['bibtex_citation'],
|
36 |
+
training_data = st.session_state['training_Data'], preprocessing =st.session_state['model_preprocessing'],
|
37 |
+
model_specs = st.session_state['Model_specs'], compute_infrastructure = st.session_state['compute_infrastructure'],software = st.session_state['technical_specs_software'],
|
38 |
+
glossary = st.session_state['Glossary'],
|
39 |
+
more_information = st.session_state['More_info'],
|
40 |
+
model_card_authors = st.session_state['the_authors'],
|
41 |
+
model_card_contact = st.session_state['Model_card_contact'],
|
42 |
+
get_started_code =st.session_state["Model_how_to"],
|
43 |
+
repo_link = st.session_state["github_url"],
|
44 |
+
paper_link = st.session_state["paper_url"],
|
45 |
+
blog_link = st.session_state["blog_url"],
|
46 |
+
testing_data = st.session_state["Testing_Data"],
|
47 |
+
testing_factors = st.session_state["Factors"],
|
48 |
+
results = st.session_state['Model_Results'],
|
49 |
+
testing_metrics = st.session_state["Metrics"]
|
50 |
+
))
|
51 |
+
|
52 |
+
|
53 |
+
|
54 |
+
################################################################
|
55 |
+
################################################################
|
56 |
+
################################################################
|
57 |
+
################## Below CURRENTLY Deprecated ##################
|
58 |
+
################################################################
|
59 |
+
################################################################
|
60 |
+
################################################################
|
61 |
+
|
62 |
+
|
63 |
+
|
64 |
+
def apply_view(page_state, not_code_pull,text_passed):
|
65 |
+
not_important_section = True
|
66 |
+
if st.session_state.legal_view == True:
|
67 |
+
#user_view = 'legal_view'
|
68 |
+
user_view_collapse={'Model_details_text','Model_uses','Model_Eval','Model_carbon','Model_cite', 'Glossary','Model_card_authors'}
|
69 |
+
|
70 |
+
elif st.session_state.researcher_view == True:
|
71 |
+
#user_view = 'researcher_view'
|
72 |
+
user_view_collapse={'Model_details_text','Model_how_to','Model_training','Model_Limits_n_Risks', 'Glossary', 'Model_card_contact', 'Citation'}
|
73 |
+
|
74 |
+
else:
|
75 |
+
#user_view = 'beginner_technical_view'
|
76 |
+
user_view_collapse={'Model_details_text','Model_how_to','Model_Eval','Model_uses', 'Glossary'} # Add Techical Spec
|
77 |
+
|
78 |
+
|
79 |
+
for value in user_view_collapse:
|
80 |
+
if value == page_state:
|
81 |
+
not_important_section = False
|
82 |
+
|
83 |
+
if not_important_section == True: #and st.session_state[user_view]:
|
84 |
+
#st.markdown("here")
|
85 |
+
text_return = out_text_out(not_code_pull,page_state,text_passed)
|
86 |
+
out_text = "<details> <summary> Click to expand </summary>" +text_return + "</details>"
|
87 |
+
return (out_text)
|
88 |
+
|
89 |
+
#out_text = "<details>" + out_text + "</details>"
|
90 |
+
else:
|
91 |
+
text_return = out_text_out(not_code_pull,page_state,text_passed)
|
92 |
+
out_text = text_return
|
93 |
+
return (out_text)
|
94 |
+
|
95 |
+
def out_text_out(not_code_pull,page_state,out_text):
|
96 |
+
if not_code_pull == True:
|
97 |
+
out_text = extract_it(page_state)
|
98 |
+
return(out_text)
|
99 |
+
else:
|
100 |
+
out_text = out_text
|
101 |
+
return(out_text)
|
102 |
+
|
103 |
+
def writingPrompt(page_state, help_text, out_text):
|
104 |
+
#st.session_state.check_box = False
|
105 |
+
#extracted_how_to= tag_checker(markdown,start_tag,end_tag)
|
106 |
+
|
107 |
+
|
108 |
+
|
109 |
+
#see_suggestion = column.checkbox("See Writing Prompt")
|
110 |
+
|
111 |
+
st.session_state.check_box = True
|
112 |
+
variable_output_prompt = st.text_area("Enter some text",height = 500, value =out_text, key=persist(out_text),
|
113 |
+
help=help_text)
|
114 |
+
st.session_state.page_state = persist(variable_output_prompt)
|
115 |
+
#out_text = extract_it(page_state)
|
116 |
+
|
117 |
+
|
118 |
+
#else:
|
119 |
+
#st.session_state.check_box = True
|
120 |
+
##st.session_state.check_box = False
|
121 |
+
#variable_output_prompt = st.text_area("Enter Text",value = ' ',key=persist(page_state),height = 500,help =help_text)
|
122 |
+
|
123 |
+
return variable_output_prompt
|
124 |
+
|
125 |
+
|
126 |
+
|
127 |
+
def extract_section(current_template, start_tag, end_tag):
|
128 |
+
current_Card_markdown= current_template
|
129 |
+
|
130 |
+
extracted_how_to= tag_checker(current_Card_markdown,start_tag,end_tag)
|
131 |
+
out_text = ' '.join(extracted_how_to)
|
132 |
+
return out_text
|
133 |
+
|
134 |
+
def main():
|
135 |
+
#card.save('current_card.md')
|
136 |
+
return
|
modelcard_template_new_spec.md
ADDED
@@ -0,0 +1,225 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
{{card_data}}
|
3 |
+
---
|
4 |
+
|
5 |
+
# {{ model_id }}
|
6 |
+
|
7 |
+
<!--> Provide a quick summary of what the model is/does. <!-->
|
8 |
+
|
9 |
+
# Table of Contents
|
10 |
+
|
11 |
+
- [{{ model_id }}](#-model_id-)
|
12 |
+
- [Table of Contents](#table-of-contents)
|
13 |
+
- [Model Details](#model-details)
|
14 |
+
- [Model Description](#model-description)
|
15 |
+
- [Uses](#uses)
|
16 |
+
- [Direct Use](#direct-use)
|
17 |
+
- [Downstream Use [Optional]](#downstream-use-optional)
|
18 |
+
- [Out-of-Scope Use](#out-of-scope-use)
|
19 |
+
- [Bias, Risks, and Limitations](#bias-risks-and-limitations)
|
20 |
+
- [Recommendations](#recommendations)
|
21 |
+
- [Training Details](#training-details)
|
22 |
+
- [Training Data](#training-data)
|
23 |
+
- [Training Procedure](#training-procedure)
|
24 |
+
- [Preprocessing](#preprocessing)
|
25 |
+
- [Speeds, Sizes, Times](#speeds-sizes-times)
|
26 |
+
- [Evaluation](#evaluation)
|
27 |
+
- [Testing Data, Factors & Metrics](#testing-data-factors--metrics)
|
28 |
+
- [Testing Data](#testing-data)
|
29 |
+
- [Factors](#factors)
|
30 |
+
- [Metrics](#metrics)
|
31 |
+
- [Results](#results)
|
32 |
+
- [Model Examination](#model-examination)
|
33 |
+
- [Environmental Impact](#environmental-impact)
|
34 |
+
- [Technical Specifications [optional]](#technical-specifications-optional)
|
35 |
+
- [Model Architecture and Objective](#model-architecture-and-objective)
|
36 |
+
- [Compute Infrastructure](#compute-infrastructure)
|
37 |
+
- [Hardware](#hardware)
|
38 |
+
- [Software](#software)
|
39 |
+
- [Citation](#citation)
|
40 |
+
- [Glossary [optional]](#glossary-optional)
|
41 |
+
- [More Information [optional]](#more-information-optional)
|
42 |
+
- [Model Card Authors [optional]](#model-card-authors-optional)
|
43 |
+
- [Model Card Contact](#model-card-contact)
|
44 |
+
- [How to Get Started with the Model](#how-to-get-started-with-the-model)
|
45 |
+
|
46 |
+
|
47 |
+
# Model Details
|
48 |
+
|
49 |
+
## Model Description
|
50 |
+
|
51 |
+
<!--> Provide a longer summary of what this model is. <!-->
|
52 |
+
{{ the_model_description | default("More information needed", true)}}
|
53 |
+
|
54 |
+
- **Developed by:** {{ developers | default("More information needed", true)}}
|
55 |
+
- **Shared by [Optional]:** {{ shared_by | default("More information needed", true)}}
|
56 |
+
- **Model type:** Language model
|
57 |
+
- **Language(s) (NLP):** {{ language | default("More information needed", true)}}
|
58 |
+
- **License:** {{ license | default("More information needed", true)}}
|
59 |
+
- **Related Models:** {{ related_models | join(', ') | default("More information needed", true)}}
|
60 |
+
{{ " - [Parent Model]({0})".format(repo_link) if parent_model_link }}
|
61 |
+
- **Resources for more information:** {{ more_resources | default("More information needed", true)}}
|
62 |
+
{{ " - [GitHub Repo]({0})".format(repo_link) if repo_link }}
|
63 |
+
{{ " - [Associated Paper]({0})".format(paper_link) if paper_link }}
|
64 |
+
{{ " - [Blog Post]({0})".format(blog_link) if blog_link }}
|
65 |
+
|
66 |
+
# Uses
|
67 |
+
|
68 |
+
<!--> Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. <!-->
|
69 |
+
|
70 |
+
## Direct Use
|
71 |
+
|
72 |
+
<!--> This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. <!-->
|
73 |
+
|
74 |
+
{{ direct_use | default("More information needed", true)}}
|
75 |
+
|
76 |
+
## Downstream Use [Optional]
|
77 |
+
|
78 |
+
<!--> This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app <!-->
|
79 |
+
|
80 |
+
{{ downstream_use | default("More information needed", true)}}
|
81 |
+
|
82 |
+
## Out-of-Scope Use
|
83 |
+
|
84 |
+
<!--> This section addresses misuse, malicious use, and uses that the model will not work well for. <!-->
|
85 |
+
|
86 |
+
{{ out_of_scope_use | default("More information needed", true)}}
|
87 |
+
|
88 |
+
# Bias, Risks, and Limitations
|
89 |
+
|
90 |
+
<!--> This section is meant to convey both technical and sociotechnical limitations. <!-->
|
91 |
+
|
92 |
+
{{ bias_risks_limitations | default("More information needed", true)}}
|
93 |
+
|
94 |
+
## Recommendations
|
95 |
+
|
96 |
+
<!--> This section is meant to convey recommendations with respect to the bias, risk, and technical limitations. <!-->
|
97 |
+
|
98 |
+
{{ bias_recommendations | default("Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recomendations.", true)}}
|
99 |
+
|
100 |
+
# Training Details
|
101 |
+
|
102 |
+
## Training Data
|
103 |
+
|
104 |
+
<!--> This should link to a Data Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. <!-->
|
105 |
+
|
106 |
+
{{ training_data | default("More information needed", true)}}
|
107 |
+
|
108 |
+
## Training Procedure
|
109 |
+
|
110 |
+
<!--> This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. <!-->
|
111 |
+
|
112 |
+
### Preprocessing
|
113 |
+
|
114 |
+
{{ preprocessing | default("More information needed", true)}}
|
115 |
+
|
116 |
+
### Speeds, Sizes, Times
|
117 |
+
|
118 |
+
<!--> This section provides information about throughput, start/end time, checkpoint size if relevant, etc. <!-->
|
119 |
+
|
120 |
+
{{ speeds_sizes_times | default("More information needed", true)}}
|
121 |
+
|
122 |
+
# Evaluation
|
123 |
+
|
124 |
+
<!--> This section describes the evaluation protocols and provides the results. <!-->
|
125 |
+
|
126 |
+
## Testing Data, Factors & Metrics
|
127 |
+
|
128 |
+
### Testing Data
|
129 |
+
|
130 |
+
<!--> This should link to a Data Card if possible. <!-->
|
131 |
+
|
132 |
+
{{ testing_data | default("More information needed", true)}}
|
133 |
+
|
134 |
+
### Factors
|
135 |
+
|
136 |
+
<!--> These are the things the evaluation is disaggregating by, e.g., subpopulations or domains. <!-->
|
137 |
+
|
138 |
+
{{ testing_factors | default("More information needed", true)}}
|
139 |
+
|
140 |
+
### Metrics
|
141 |
+
|
142 |
+
<!--> These are the evaluation metrics being used, ideally with a description of why. <!-->
|
143 |
+
|
144 |
+
{{ testing_metrics | default("More information needed", true)}}
|
145 |
+
|
146 |
+
## Results
|
147 |
+
|
148 |
+
{{ results | default("More information needed", true)}}
|
149 |
+
|
150 |
+
# Model Examination
|
151 |
+
|
152 |
+
{{ model_examination | default("More information needed", true)}}
|
153 |
+
|
154 |
+
# Environmental Impact
|
155 |
+
|
156 |
+
<!--> Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here. Edit the suggested text below accordingly <!-->
|
157 |
+
|
158 |
+
Carbon emissions can be estimated using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700).
|
159 |
+
|
160 |
+
- **Hardware Type:** {{ hardware | default("More information needed", true)}}
|
161 |
+
- **Hours used:** {{ hours_used | default("More information needed", true)}}
|
162 |
+
- **Cloud Provider:** {{ cloud_provider | default("More information needed", true)}}
|
163 |
+
- **Compute Region:** {{ cloud_region | default("More information needed", true)}}
|
164 |
+
- **Carbon Emitted:** {{ co2_emitted | default("More information needed", true)}}
|
165 |
+
|
166 |
+
# Technical Specifications [optional]
|
167 |
+
|
168 |
+
## Model Architecture and Objective
|
169 |
+
|
170 |
+
{{ model_specs | default("More information needed", true)}}
|
171 |
+
|
172 |
+
## Compute Infrastructure
|
173 |
+
|
174 |
+
{{ compute_infrastructure | default("More information needed", true)}}
|
175 |
+
|
176 |
+
### Hardware
|
177 |
+
|
178 |
+
{{ hardware | default("More information needed", true)}}
|
179 |
+
|
180 |
+
### Software
|
181 |
+
|
182 |
+
{{ software | default("More information needed", true)}}
|
183 |
+
|
184 |
+
# Citation
|
185 |
+
|
186 |
+
<!--> If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section. <!-->
|
187 |
+
|
188 |
+
**BibTeX:**
|
189 |
+
|
190 |
+
{{ citation_bibtex | default("More information needed", true)}}
|
191 |
+
|
192 |
+
**APA:**
|
193 |
+
|
194 |
+
{{ citation_apa | default("More information needed", true)}}
|
195 |
+
|
196 |
+
# Glossary [optional]
|
197 |
+
|
198 |
+
<!--> If relevant, include terms and calculations in this section that can help readers understand the model or model card. <!-->
|
199 |
+
|
200 |
+
{{ glossary | default("More information needed", true)}}
|
201 |
+
|
202 |
+
# More Information [optional]
|
203 |
+
|
204 |
+
{{ more_information | default("More information needed", true)}}
|
205 |
+
|
206 |
+
# Model Card Authors [optional]
|
207 |
+
|
208 |
+
{{ model_card_authors | default("More information needed", true)}}
|
209 |
+
|
210 |
+
# Model Card Contact
|
211 |
+
|
212 |
+
{{ model_card_contact | default("More information needed", true)}}
|
213 |
+
|
214 |
+
# How to Get Started with the Model
|
215 |
+
|
216 |
+
Use the code below to get started with the model.
|
217 |
+
|
218 |
+
<details>
|
219 |
+
<summary> Click to expand </summary>
|
220 |
+
|
221 |
+
{{ get_started_code | default("More information needed", true)}}
|
222 |
+
|
223 |
+
</details>
|
224 |
+
|
225 |
+
|
out_markd.md
ADDED
@@ -0,0 +1,1042 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#
|
2 |
+
|
3 |
+
|
4 |
+
|
5 |
+
|
6 |
+
|
7 |
+
#
|
8 |
+
|
9 |
+
M
|
10 |
+
o
|
11 |
+
d
|
12 |
+
e
|
13 |
+
l
|
14 |
+
|
15 |
+
D
|
16 |
+
e
|
17 |
+
t
|
18 |
+
a
|
19 |
+
i
|
20 |
+
l
|
21 |
+
s
|
22 |
+
|
23 |
+
|
24 |
+
#
|
25 |
+
#
|
26 |
+
|
27 |
+
M
|
28 |
+
o
|
29 |
+
d
|
30 |
+
e
|
31 |
+
l
|
32 |
+
|
33 |
+
D
|
34 |
+
e
|
35 |
+
s
|
36 |
+
c
|
37 |
+
r
|
38 |
+
i
|
39 |
+
p
|
40 |
+
t
|
41 |
+
i
|
42 |
+
o
|
43 |
+
n
|
44 |
+
|
45 |
+
|
46 |
+
<
|
47 |
+
!
|
48 |
+
-
|
49 |
+
-
|
50 |
+
>
|
51 |
+
|
52 |
+
P
|
53 |
+
r
|
54 |
+
o
|
55 |
+
v
|
56 |
+
i
|
57 |
+
d
|
58 |
+
e
|
59 |
+
|
60 |
+
a
|
61 |
+
|
62 |
+
l
|
63 |
+
o
|
64 |
+
n
|
65 |
+
g
|
66 |
+
e
|
67 |
+
r
|
68 |
+
|
69 |
+
s
|
70 |
+
u
|
71 |
+
m
|
72 |
+
m
|
73 |
+
a
|
74 |
+
r
|
75 |
+
y
|
76 |
+
|
77 |
+
o
|
78 |
+
f
|
79 |
+
|
80 |
+
w
|
81 |
+
h
|
82 |
+
a
|
83 |
+
t
|
84 |
+
|
85 |
+
t
|
86 |
+
h
|
87 |
+
i
|
88 |
+
s
|
89 |
+
|
90 |
+
m
|
91 |
+
o
|
92 |
+
d
|
93 |
+
e
|
94 |
+
l
|
95 |
+
|
96 |
+
i
|
97 |
+
s
|
98 |
+
.
|
99 |
+
|
100 |
+
<
|
101 |
+
!
|
102 |
+
-
|
103 |
+
-
|
104 |
+
>
|
105 |
+
|
106 |
+
|
107 |
+
-
|
108 |
+
|
109 |
+
*
|
110 |
+
*
|
111 |
+
D
|
112 |
+
e
|
113 |
+
v
|
114 |
+
e
|
115 |
+
l
|
116 |
+
o
|
117 |
+
p
|
118 |
+
e
|
119 |
+
d
|
120 |
+
|
121 |
+
b
|
122 |
+
y
|
123 |
+
:
|
124 |
+
*
|
125 |
+
*
|
126 |
+
|
127 |
+
{
|
128 |
+
{
|
129 |
+
|
130 |
+
d
|
131 |
+
e
|
132 |
+
v
|
133 |
+
e
|
134 |
+
l
|
135 |
+
o
|
136 |
+
p
|
137 |
+
e
|
138 |
+
r
|
139 |
+
s
|
140 |
+
|
141 |
+
|
|
142 |
+
|
143 |
+
d
|
144 |
+
e
|
145 |
+
f
|
146 |
+
a
|
147 |
+
u
|
148 |
+
l
|
149 |
+
t
|
150 |
+
(
|
151 |
+
"
|
152 |
+
M
|
153 |
+
o
|
154 |
+
r
|
155 |
+
e
|
156 |
+
|
157 |
+
i
|
158 |
+
n
|
159 |
+
f
|
160 |
+
o
|
161 |
+
r
|
162 |
+
m
|
163 |
+
a
|
164 |
+
t
|
165 |
+
i
|
166 |
+
o
|
167 |
+
n
|
168 |
+
|
169 |
+
n
|
170 |
+
e
|
171 |
+
e
|
172 |
+
d
|
173 |
+
e
|
174 |
+
d
|
175 |
+
"
|
176 |
+
,
|
177 |
+
|
178 |
+
t
|
179 |
+
r
|
180 |
+
u
|
181 |
+
e
|
182 |
+
)
|
183 |
+
}
|
184 |
+
}
|
185 |
+
-
|
186 |
+
|
187 |
+
*
|
188 |
+
*
|
189 |
+
S
|
190 |
+
h
|
191 |
+
a
|
192 |
+
r
|
193 |
+
e
|
194 |
+
d
|
195 |
+
|
196 |
+
b
|
197 |
+
y
|
198 |
+
|
199 |
+
[
|
200 |
+
O
|
201 |
+
p
|
202 |
+
t
|
203 |
+
i
|
204 |
+
o
|
205 |
+
n
|
206 |
+
a
|
207 |
+
l
|
208 |
+
]
|
209 |
+
:
|
210 |
+
*
|
211 |
+
*
|
212 |
+
|
213 |
+
{
|
214 |
+
{
|
215 |
+
|
216 |
+
s
|
217 |
+
h
|
218 |
+
a
|
219 |
+
r
|
220 |
+
e
|
221 |
+
d
|
222 |
+
_
|
223 |
+
b
|
224 |
+
y
|
225 |
+
|
226 |
+
|
|
227 |
+
|
228 |
+
d
|
229 |
+
e
|
230 |
+
f
|
231 |
+
a
|
232 |
+
u
|
233 |
+
l
|
234 |
+
t
|
235 |
+
(
|
236 |
+
"
|
237 |
+
M
|
238 |
+
o
|
239 |
+
r
|
240 |
+
e
|
241 |
+
|
242 |
+
i
|
243 |
+
n
|
244 |
+
f
|
245 |
+
o
|
246 |
+
r
|
247 |
+
m
|
248 |
+
a
|
249 |
+
t
|
250 |
+
i
|
251 |
+
o
|
252 |
+
n
|
253 |
+
|
254 |
+
n
|
255 |
+
e
|
256 |
+
e
|
257 |
+
d
|
258 |
+
e
|
259 |
+
d
|
260 |
+
"
|
261 |
+
,
|
262 |
+
|
263 |
+
t
|
264 |
+
r
|
265 |
+
u
|
266 |
+
e
|
267 |
+
)
|
268 |
+
}
|
269 |
+
}
|
270 |
+
-
|
271 |
+
|
272 |
+
*
|
273 |
+
*
|
274 |
+
M
|
275 |
+
o
|
276 |
+
d
|
277 |
+
e
|
278 |
+
l
|
279 |
+
|
280 |
+
t
|
281 |
+
y
|
282 |
+
p
|
283 |
+
e
|
284 |
+
:
|
285 |
+
*
|
286 |
+
*
|
287 |
+
|
288 |
+
L
|
289 |
+
a
|
290 |
+
n
|
291 |
+
g
|
292 |
+
u
|
293 |
+
a
|
294 |
+
g
|
295 |
+
e
|
296 |
+
|
297 |
+
m
|
298 |
+
o
|
299 |
+
d
|
300 |
+
e
|
301 |
+
l
|
302 |
+
-
|
303 |
+
|
304 |
+
*
|
305 |
+
*
|
306 |
+
L
|
307 |
+
a
|
308 |
+
n
|
309 |
+
g
|
310 |
+
u
|
311 |
+
a
|
312 |
+
g
|
313 |
+
e
|
314 |
+
(
|
315 |
+
s
|
316 |
+
)
|
317 |
+
|
318 |
+
(
|
319 |
+
N
|
320 |
+
L
|
321 |
+
P
|
322 |
+
)
|
323 |
+
:
|
324 |
+
*
|
325 |
+
*
|
326 |
+
|
327 |
+
{
|
328 |
+
{
|
329 |
+
|
330 |
+
l
|
331 |
+
a
|
332 |
+
n
|
333 |
+
g
|
334 |
+
u
|
335 |
+
a
|
336 |
+
g
|
337 |
+
e
|
338 |
+
|
339 |
+
|
|
340 |
+
|
341 |
+
d
|
342 |
+
e
|
343 |
+
f
|
344 |
+
a
|
345 |
+
u
|
346 |
+
l
|
347 |
+
t
|
348 |
+
(
|
349 |
+
"
|
350 |
+
M
|
351 |
+
o
|
352 |
+
r
|
353 |
+
e
|
354 |
+
|
355 |
+
i
|
356 |
+
n
|
357 |
+
f
|
358 |
+
o
|
359 |
+
r
|
360 |
+
m
|
361 |
+
a
|
362 |
+
t
|
363 |
+
i
|
364 |
+
o
|
365 |
+
n
|
366 |
+
|
367 |
+
n
|
368 |
+
e
|
369 |
+
e
|
370 |
+
d
|
371 |
+
e
|
372 |
+
d
|
373 |
+
"
|
374 |
+
,
|
375 |
+
|
376 |
+
t
|
377 |
+
r
|
378 |
+
u
|
379 |
+
e
|
380 |
+
)
|
381 |
+
}
|
382 |
+
}
|
383 |
+
-
|
384 |
+
|
385 |
+
*
|
386 |
+
*
|
387 |
+
L
|
388 |
+
i
|
389 |
+
c
|
390 |
+
e
|
391 |
+
n
|
392 |
+
s
|
393 |
+
e
|
394 |
+
:
|
395 |
+
*
|
396 |
+
*
|
397 |
+
|
398 |
+
{
|
399 |
+
{
|
400 |
+
|
401 |
+
l
|
402 |
+
i
|
403 |
+
c
|
404 |
+
e
|
405 |
+
n
|
406 |
+
s
|
407 |
+
e
|
408 |
+
|
409 |
+
|
|
410 |
+
|
411 |
+
d
|
412 |
+
e
|
413 |
+
f
|
414 |
+
a
|
415 |
+
u
|
416 |
+
l
|
417 |
+
t
|
418 |
+
(
|
419 |
+
"
|
420 |
+
M
|
421 |
+
o
|
422 |
+
r
|
423 |
+
e
|
424 |
+
|
425 |
+
i
|
426 |
+
n
|
427 |
+
f
|
428 |
+
o
|
429 |
+
r
|
430 |
+
m
|
431 |
+
a
|
432 |
+
t
|
433 |
+
i
|
434 |
+
o
|
435 |
+
n
|
436 |
+
|
437 |
+
n
|
438 |
+
e
|
439 |
+
e
|
440 |
+
d
|
441 |
+
e
|
442 |
+
d
|
443 |
+
"
|
444 |
+
,
|
445 |
+
|
446 |
+
t
|
447 |
+
r
|
448 |
+
u
|
449 |
+
e
|
450 |
+
)
|
451 |
+
}
|
452 |
+
}
|
453 |
+
-
|
454 |
+
|
455 |
+
*
|
456 |
+
*
|
457 |
+
R
|
458 |
+
e
|
459 |
+
l
|
460 |
+
a
|
461 |
+
t
|
462 |
+
e
|
463 |
+
d
|
464 |
+
|
465 |
+
M
|
466 |
+
o
|
467 |
+
d
|
468 |
+
e
|
469 |
+
l
|
470 |
+
s
|
471 |
+
:
|
472 |
+
*
|
473 |
+
*
|
474 |
+
|
475 |
+
{
|
476 |
+
{
|
477 |
+
|
478 |
+
r
|
479 |
+
e
|
480 |
+
l
|
481 |
+
a
|
482 |
+
t
|
483 |
+
e
|
484 |
+
d
|
485 |
+
_
|
486 |
+
m
|
487 |
+
o
|
488 |
+
d
|
489 |
+
e
|
490 |
+
l
|
491 |
+
s
|
492 |
+
|
493 |
+
|
|
494 |
+
|
495 |
+
d
|
496 |
+
e
|
497 |
+
f
|
498 |
+
a
|
499 |
+
u
|
500 |
+
l
|
501 |
+
t
|
502 |
+
(
|
503 |
+
"
|
504 |
+
M
|
505 |
+
o
|
506 |
+
r
|
507 |
+
e
|
508 |
+
|
509 |
+
i
|
510 |
+
n
|
511 |
+
f
|
512 |
+
o
|
513 |
+
r
|
514 |
+
m
|
515 |
+
a
|
516 |
+
t
|
517 |
+
i
|
518 |
+
o
|
519 |
+
n
|
520 |
+
|
521 |
+
n
|
522 |
+
e
|
523 |
+
e
|
524 |
+
d
|
525 |
+
e
|
526 |
+
d
|
527 |
+
"
|
528 |
+
,
|
529 |
+
|
530 |
+
t
|
531 |
+
r
|
532 |
+
u
|
533 |
+
e
|
534 |
+
)
|
535 |
+
}
|
536 |
+
}
|
537 |
+
|
538 |
+
|
539 |
+
|
540 |
+
|
541 |
+
-
|
542 |
+
|
543 |
+
*
|
544 |
+
*
|
545 |
+
P
|
546 |
+
a
|
547 |
+
r
|
548 |
+
e
|
549 |
+
n
|
550 |
+
t
|
551 |
+
|
552 |
+
M
|
553 |
+
o
|
554 |
+
d
|
555 |
+
e
|
556 |
+
l
|
557 |
+
:
|
558 |
+
*
|
559 |
+
*
|
560 |
+
|
561 |
+
{
|
562 |
+
{
|
563 |
+
|
564 |
+
p
|
565 |
+
a
|
566 |
+
r
|
567 |
+
e
|
568 |
+
n
|
569 |
+
t
|
570 |
+
_
|
571 |
+
m
|
572 |
+
o
|
573 |
+
d
|
574 |
+
e
|
575 |
+
l
|
576 |
+
|
577 |
+
|
|
578 |
+
|
579 |
+
d
|
580 |
+
e
|
581 |
+
f
|
582 |
+
a
|
583 |
+
u
|
584 |
+
l
|
585 |
+
t
|
586 |
+
(
|
587 |
+
"
|
588 |
+
M
|
589 |
+
o
|
590 |
+
r
|
591 |
+
e
|
592 |
+
|
593 |
+
i
|
594 |
+
n
|
595 |
+
f
|
596 |
+
o
|
597 |
+
r
|
598 |
+
m
|
599 |
+
a
|
600 |
+
t
|
601 |
+
i
|
602 |
+
o
|
603 |
+
n
|
604 |
+
|
605 |
+
n
|
606 |
+
e
|
607 |
+
e
|
608 |
+
d
|
609 |
+
e
|
610 |
+
d
|
611 |
+
"
|
612 |
+
,
|
613 |
+
|
614 |
+
t
|
615 |
+
r
|
616 |
+
u
|
617 |
+
e
|
618 |
+
)
|
619 |
+
}
|
620 |
+
}
|
621 |
+
-
|
622 |
+
|
623 |
+
*
|
624 |
+
*
|
625 |
+
R
|
626 |
+
e
|
627 |
+
s
|
628 |
+
o
|
629 |
+
u
|
630 |
+
r
|
631 |
+
c
|
632 |
+
e
|
633 |
+
s
|
634 |
+
|
635 |
+
f
|
636 |
+
o
|
637 |
+
r
|
638 |
+
|
639 |
+
m
|
640 |
+
o
|
641 |
+
r
|
642 |
+
e
|
643 |
+
|
644 |
+
i
|
645 |
+
n
|
646 |
+
f
|
647 |
+
o
|
648 |
+
r
|
649 |
+
m
|
650 |
+
a
|
651 |
+
t
|
652 |
+
i
|
653 |
+
o
|
654 |
+
n
|
655 |
+
:
|
656 |
+
*
|
657 |
+
*
|
658 |
+
|
659 |
+
{
|
660 |
+
{
|
661 |
+
|
662 |
+
m
|
663 |
+
o
|
664 |
+
r
|
665 |
+
e
|
666 |
+
_
|
667 |
+
r
|
668 |
+
e
|
669 |
+
s
|
670 |
+
o
|
671 |
+
u
|
672 |
+
r
|
673 |
+
c
|
674 |
+
e
|
675 |
+
s
|
676 |
+
|
677 |
+
|
|
678 |
+
|
679 |
+
d
|
680 |
+
e
|
681 |
+
f
|
682 |
+
a
|
683 |
+
u
|
684 |
+
l
|
685 |
+
t
|
686 |
+
(
|
687 |
+
"
|
688 |
+
M
|
689 |
+
o
|
690 |
+
r
|
691 |
+
e
|
692 |
+
|
693 |
+
i
|
694 |
+
n
|
695 |
+
f
|
696 |
+
o
|
697 |
+
r
|
698 |
+
m
|
699 |
+
a
|
700 |
+
t
|
701 |
+
i
|
702 |
+
o
|
703 |
+
n
|
704 |
+
|
705 |
+
n
|
706 |
+
e
|
707 |
+
e
|
708 |
+
d
|
709 |
+
e
|
710 |
+
d
|
711 |
+
"
|
712 |
+
,
|
713 |
+
|
714 |
+
t
|
715 |
+
r
|
716 |
+
u
|
717 |
+
e
|
718 |
+
)
|
719 |
+
}
|
720 |
+
}
|
721 |
+
|
722 |
+
<
|
723 |
+
d
|
724 |
+
e
|
725 |
+
t
|
726 |
+
a
|
727 |
+
i
|
728 |
+
l
|
729 |
+
s
|
730 |
+
>
|
731 |
+
|
732 |
+
<
|
733 |
+
s
|
734 |
+
u
|
735 |
+
m
|
736 |
+
m
|
737 |
+
a
|
738 |
+
r
|
739 |
+
y
|
740 |
+
>
|
741 |
+
|
742 |
+
C
|
743 |
+
l
|
744 |
+
i
|
745 |
+
c
|
746 |
+
k
|
747 |
+
|
748 |
+
t
|
749 |
+
o
|
750 |
+
|
751 |
+
e
|
752 |
+
x
|
753 |
+
p
|
754 |
+
a
|
755 |
+
n
|
756 |
+
d
|
757 |
+
|
758 |
+
<
|
759 |
+
/
|
760 |
+
s
|
761 |
+
u
|
762 |
+
m
|
763 |
+
m
|
764 |
+
a
|
765 |
+
r
|
766 |
+
y
|
767 |
+
>
|
768 |
+
|
769 |
+
|
770 |
+
#
|
771 |
+
|
772 |
+
B
|
773 |
+
i
|
774 |
+
a
|
775 |
+
s
|
776 |
+
,
|
777 |
+
|
778 |
+
R
|
779 |
+
i
|
780 |
+
s
|
781 |
+
k
|
782 |
+
s
|
783 |
+
,
|
784 |
+
|
785 |
+
a
|
786 |
+
n
|
787 |
+
d
|
788 |
+
|
789 |
+
L
|
790 |
+
i
|
791 |
+
m
|
792 |
+
i
|
793 |
+
t
|
794 |
+
a
|
795 |
+
t
|
796 |
+
i
|
797 |
+
o
|
798 |
+
n
|
799 |
+
s
|
800 |
+
|
801 |
+
|
802 |
+
<
|
803 |
+
!
|
804 |
+
-
|
805 |
+
-
|
806 |
+
>
|
807 |
+
|
808 |
+
T
|
809 |
+
h
|
810 |
+
i
|
811 |
+
s
|
812 |
+
|
813 |
+
s
|
814 |
+
e
|
815 |
+
c
|
816 |
+
t
|
817 |
+
i
|
818 |
+
o
|
819 |
+
n
|
820 |
+
|
821 |
+
i
|
822 |
+
s
|
823 |
+
|
824 |
+
m
|
825 |
+
e
|
826 |
+
a
|
827 |
+
n
|
828 |
+
t
|
829 |
+
|
830 |
+
t
|
831 |
+
o
|
832 |
+
|
833 |
+
c
|
834 |
+
o
|
835 |
+
n
|
836 |
+
v
|
837 |
+
e
|
838 |
+
y
|
839 |
+
|
840 |
+
b
|
841 |
+
o
|
842 |
+
t
|
843 |
+
h
|
844 |
+
|
845 |
+
t
|
846 |
+
e
|
847 |
+
c
|
848 |
+
h
|
849 |
+
n
|
850 |
+
i
|
851 |
+
c
|
852 |
+
a
|
853 |
+
l
|
854 |
+
|
855 |
+
a
|
856 |
+
n
|
857 |
+
d
|
858 |
+
|
859 |
+
s
|
860 |
+
o
|
861 |
+
c
|
862 |
+
i
|
863 |
+
o
|
864 |
+
t
|
865 |
+
e
|
866 |
+
c
|
867 |
+
h
|
868 |
+
n
|
869 |
+
i
|
870 |
+
c
|
871 |
+
a
|
872 |
+
l
|
873 |
+
|
874 |
+
l
|
875 |
+
i
|
876 |
+
m
|
877 |
+
i
|
878 |
+
t
|
879 |
+
a
|
880 |
+
t
|
881 |
+
i
|
882 |
+
o
|
883 |
+
n
|
884 |
+
s
|
885 |
+
.
|
886 |
+
|
887 |
+
<
|
888 |
+
!
|
889 |
+
-
|
890 |
+
-
|
891 |
+
>
|
892 |
+
|
893 |
+
|
894 |
+
#
|
895 |
+
#
|
896 |
+
|
897 |
+
R
|
898 |
+
e
|
899 |
+
c
|
900 |
+
o
|
901 |
+
m
|
902 |
+
m
|
903 |
+
e
|
904 |
+
n
|
905 |
+
d
|
906 |
+
a
|
907 |
+
t
|
908 |
+
i
|
909 |
+
o
|
910 |
+
n
|
911 |
+
s
|
912 |
+
|
913 |
+
|
914 |
+
<
|
915 |
+
!
|
916 |
+
-
|
917 |
+
-
|
918 |
+
>
|
919 |
+
|
920 |
+
T
|
921 |
+
h
|
922 |
+
i
|
923 |
+
s
|
924 |
+
|
925 |
+
s
|
926 |
+
e
|
927 |
+
c
|
928 |
+
t
|
929 |
+
i
|
930 |
+
o
|
931 |
+
n
|
932 |
+
|
933 |
+
i
|
934 |
+
s
|
935 |
+
|
936 |
+
m
|
937 |
+
e
|
938 |
+
a
|
939 |
+
n
|
940 |
+
t
|
941 |
+
|
942 |
+
t
|
943 |
+
o
|
944 |
+
|
945 |
+
c
|
946 |
+
o
|
947 |
+
n
|
948 |
+
v
|
949 |
+
e
|
950 |
+
y
|
951 |
+
|
952 |
+
r
|
953 |
+
e
|
954 |
+
c
|
955 |
+
o
|
956 |
+
m
|
957 |
+
m
|
958 |
+
e
|
959 |
+
n
|
960 |
+
d
|
961 |
+
a
|
962 |
+
t
|
963 |
+
i
|
964 |
+
o
|
965 |
+
n
|
966 |
+
s
|
967 |
+
|
968 |
+
w
|
969 |
+
i
|
970 |
+
t
|
971 |
+
h
|
972 |
+
|
973 |
+
r
|
974 |
+
e
|
975 |
+
s
|
976 |
+
p
|
977 |
+
e
|
978 |
+
c
|
979 |
+
t
|
980 |
+
|
981 |
+
t
|
982 |
+
o
|
983 |
+
|
984 |
+
t
|
985 |
+
h
|
986 |
+
e
|
987 |
+
|
988 |
+
b
|
989 |
+
i
|
990 |
+
a
|
991 |
+
s
|
992 |
+
,
|
993 |
+
|
994 |
+
r
|
995 |
+
i
|
996 |
+
s
|
997 |
+
k
|
998 |
+
,
|
999 |
+
|
1000 |
+
a
|
1001 |
+
n
|
1002 |
+
d
|
1003 |
+
|
1004 |
+
t
|
1005 |
+
e
|
1006 |
+
c
|
1007 |
+
h
|
1008 |
+
n
|
1009 |
+
i
|
1010 |
+
c
|
1011 |
+
a
|
1012 |
+
l
|
1013 |
+
|
1014 |
+
l
|
1015 |
+
i
|
1016 |
+
m
|
1017 |
+
i
|
1018 |
+
t
|
1019 |
+
a
|
1020 |
+
t
|
1021 |
+
i
|
1022 |
+
o
|
1023 |
+
n
|
1024 |
+
s
|
1025 |
+
.
|
1026 |
+
|
1027 |
+
<
|
1028 |
+
!
|
1029 |
+
-
|
1030 |
+
-
|
1031 |
+
>
|
1032 |
+
|
1033 |
+
<
|
1034 |
+
/
|
1035 |
+
d
|
1036 |
+
e
|
1037 |
+
t
|
1038 |
+
a
|
1039 |
+
i
|
1040 |
+
l
|
1041 |
+
s
|
1042 |
+
>
|
output.md
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Collection of ideas
|
2 |
+
## Idea 0
|
3 |
+
|
4 |
+
[1]normal text under header 1
|
5 |
+
|
pages/10_ π_Technical Specifications.py
ADDED
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from persist import persist, load_widget_state
|
3 |
+
|
4 |
+
#from specific_extraction import extract_it
|
5 |
+
|
6 |
+
|
7 |
+
global variable_output
|
8 |
+
|
9 |
+
def main():
|
10 |
+
cs_body()
|
11 |
+
|
12 |
+
|
13 |
+
|
14 |
+
def cs_body():
|
15 |
+
|
16 |
+
|
17 |
+
st.markdown('# Technical Specifications [optional]')
|
18 |
+
st.write("Provide an overview of any additional technical specifications for this model")
|
19 |
+
left, right = st.columns([2,4])
|
20 |
+
|
21 |
+
|
22 |
+
|
23 |
+
with left:
|
24 |
+
st.write("\n")
|
25 |
+
st.write("\n")
|
26 |
+
st.markdown('### Model Architecture and Objective:')
|
27 |
+
st.write("\n")
|
28 |
+
st.write("\n")
|
29 |
+
st.write("\n")
|
30 |
+
st.write("\n")
|
31 |
+
st.markdown('### Compute Infrastructure:')
|
32 |
+
st.write("\n")
|
33 |
+
st.write("\n")
|
34 |
+
st.write("\n")
|
35 |
+
st.write("\n")
|
36 |
+
|
37 |
+
st.markdown('##### Hardware:')
|
38 |
+
st.write("\n")
|
39 |
+
st.write("\n")
|
40 |
+
st.write("\n")
|
41 |
+
st.write("\n")
|
42 |
+
st.write("\n")
|
43 |
+
st.write("\n")
|
44 |
+
st.write("\n")
|
45 |
+
st.markdown('##### Software:')
|
46 |
+
|
47 |
+
with right:
|
48 |
+
#soutput_jinja = parse_into_jinja_markdown()
|
49 |
+
st.text_area("", key=persist("Model_specs"))
|
50 |
+
#st.write("\n")
|
51 |
+
st.text_area("",key=persist("compute_infrastructure"))
|
52 |
+
st.text_area("", key=persist("Model_hardware"))
|
53 |
+
st.text_area("", key=persist("technical_specs_software"))
|
54 |
+
|
55 |
+
|
56 |
+
|
57 |
+
|
58 |
+
|
59 |
+
if __name__ == '__main__':
|
60 |
+
load_widget_state()
|
61 |
+
main()
|
pages/11_ π¬_Model_Card_Contact.py
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from persist import persist, load_widget_state
|
3 |
+
|
4 |
+
#from specific_extraction import extract_it
|
5 |
+
|
6 |
+
|
7 |
+
global variable_output
|
8 |
+
|
9 |
+
def main():
|
10 |
+
cs_body()
|
11 |
+
|
12 |
+
|
13 |
+
|
14 |
+
def cs_body():
|
15 |
+
|
16 |
+
st.markdown('# Model Card Contact')
|
17 |
+
st.text_area("How can people who have updates to the Model Card contact the authors?", key=persist("Model_card_contact"), )
|
18 |
+
|
19 |
+
|
20 |
+
|
21 |
+
|
22 |
+
|
23 |
+
|
24 |
+
if __name__ == '__main__':
|
25 |
+
load_widget_state()
|
26 |
+
main()
|
pages/12_π©βπ»_How_To_Get_Started.py
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from persist import persist, load_widget_state
|
3 |
+
|
4 |
+
from extract_code import read_file
|
5 |
+
|
6 |
+
|
7 |
+
|
8 |
+
global variable_output
|
9 |
+
|
10 |
+
def main():
|
11 |
+
|
12 |
+
cs_body()
|
13 |
+
|
14 |
+
def cs_body():
|
15 |
+
|
16 |
+
library_name = st.session_state.library_name
|
17 |
+
model_name = st.session_state.model_name
|
18 |
+
model_name_to_str = f"{model_name}"
|
19 |
+
library_name_to_str = f"{library_name}"
|
20 |
+
text_pass = read_file(library_name_to_str, model_name_to_str) ## get the how to get started code
|
21 |
+
|
22 |
+
st.markdown('# How to Get Started with the Model')
|
23 |
+
st.session_state['Model_how_to'] = text_pass
|
24 |
+
st.text_area("Code snippet to show how to use the model.",height = 300, key=persist("Model_how_to"))
|
25 |
+
|
26 |
+
|
27 |
+
|
28 |
+
if __name__ == '__main__':
|
29 |
+
load_widget_state()
|
30 |
+
main()
|
pages/13_π_Model_Card_Authors.py
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from persist import persist, load_widget_state
|
3 |
+
|
4 |
+
|
5 |
+
|
6 |
+
global variable_output
|
7 |
+
|
8 |
+
def main():
|
9 |
+
cs_body()
|
10 |
+
|
11 |
+
|
12 |
+
|
13 |
+
def cs_body():
|
14 |
+
# Model Cards
|
15 |
+
#card = get_card()
|
16 |
+
#card.save('current_editable.md')
|
17 |
+
|
18 |
+
st.markdown('# Model Card Authors [optional]')
|
19 |
+
st.text_area("This section also provides another layer of transparency and accountability. Whose views is this model card representing? How many voices were included in its construction? Etc.",height = 180, help = "The people who actually constructed the Model Card go here.",key=persist("the_authors"))
|
20 |
+
|
21 |
+
|
22 |
+
|
23 |
+
|
24 |
+
if __name__ == '__main__':
|
25 |
+
load_widget_state()
|
26 |
+
main()
|
pages/14_π_Glossary.py
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from persist import persist, load_widget_state
|
3 |
+
|
4 |
+
|
5 |
+
global variable_output
|
6 |
+
|
7 |
+
def main():
|
8 |
+
cs_body()
|
9 |
+
|
10 |
+
|
11 |
+
|
12 |
+
def cs_body():
|
13 |
+
|
14 |
+
st.markdown('# Glossary [optional]')
|
15 |
+
st.text_area("Terms used in the model card that need to be clearly defined in order to be accessible across audiences go here.",height = 200, key=persist("Glossary"))
|
16 |
+
|
17 |
+
|
18 |
+
|
19 |
+
|
20 |
+
|
21 |
+
|
22 |
+
if __name__ == '__main__':
|
23 |
+
load_widget_state()
|
24 |
+
main()
|
pages/15_More_Information.py
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from persist import persist, load_widget_state
|
3 |
+
|
4 |
+
|
5 |
+
global variable_output
|
6 |
+
|
7 |
+
def main():
|
8 |
+
cs_body()
|
9 |
+
|
10 |
+
|
11 |
+
|
12 |
+
def cs_body():
|
13 |
+
|
14 |
+
|
15 |
+
st.markdown('# More Information [optional]')
|
16 |
+
st.text_area("Any additional information",height = 200, key=persist("More_info"))
|
17 |
+
|
18 |
+
|
19 |
+
|
20 |
+
|
21 |
+
|
22 |
+
if __name__ == '__main__':
|
23 |
+
load_widget_state()
|
24 |
+
main()
|
pages/1_π_CardProgress.py
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from ast import parse
|
2 |
+
import streamlit as st
|
3 |
+
from persist import load_widget_state
|
4 |
+
from middleMan import parse_into_jinja_markdown as pj
|
5 |
+
import os
|
6 |
+
|
7 |
+
def main():
|
8 |
+
## call the jinja_parser
|
9 |
+
st.write( pj())
|
10 |
+
|
11 |
+
|
12 |
+
|
13 |
+
if __name__ == '__main__':
|
14 |
+
load_widget_state()
|
15 |
+
main()
|
pages/2_π_Model_Details.py
ADDED
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from persist import persist, load_widget_state
|
3 |
+
#from middleMan import get_card,writingPrompt,apply_view
|
4 |
+
import pandas as pd
|
5 |
+
import requests
|
6 |
+
|
7 |
+
#from specific_extraction import extract_it
|
8 |
+
|
9 |
+
|
10 |
+
global variable_output
|
11 |
+
|
12 |
+
@st.cache
|
13 |
+
def get_cached_data():
|
14 |
+
languages_df = pd.read_html("https://hf.co/languages")[0]
|
15 |
+
languages_map = pd.Series(languages_df["Language"].values, index=languages_df["ISO code"]).to_dict()
|
16 |
+
|
17 |
+
license_df = pd.read_html("https://huggingface.co/docs/hub/repositories-licenses")[0]
|
18 |
+
license_map = pd.Series(
|
19 |
+
license_df["License identifier (to use in model card)"].values, index=license_df.Fullname
|
20 |
+
).to_dict()
|
21 |
+
|
22 |
+
available_metrics = [x['id'] for x in requests.get('https://huggingface.co/api/metrics').json()]
|
23 |
+
|
24 |
+
r = requests.get('https://huggingface.co/api/models-tags-by-type')
|
25 |
+
tags_data = r.json()
|
26 |
+
libraries = [x['id'] for x in tags_data['library']]
|
27 |
+
tasks = [x['id'] for x in tags_data['pipeline_tag']]
|
28 |
+
#return languages_map, license_map, available_metrics, libraries, tasks
|
29 |
+
return license_map
|
30 |
+
|
31 |
+
|
32 |
+
def cs_body():
|
33 |
+
license_map= get_cached_data()
|
34 |
+
Supervision_learning_method_list = ["Unsupervised","Semi-supervised","Self-supervised","Supervised","Reinforcement Learning"]
|
35 |
+
Machine_Learning_Type_list = ["Neural Network","SVM","Decision Trees"]
|
36 |
+
Modality_List = ["Computer Vision","Natural Language Processing","Audio","Speech","Multimodal","Tabular"]
|
37 |
+
|
38 |
+
#st.set_page_config(layout="wide") ## not yet supported on the hub
|
39 |
+
st.markdown('## Model Details')
|
40 |
+
st.markdown('### Model Description')
|
41 |
+
st.text_area("Provide a 1-2 sentence summary of what this model is.", help="The model description provides basic details about the model. This includes the architecture, version, if it was introduced in a paper, if an original implementation is available, the author, and general information about the model. Any copyright should be attributed here. General information about training procedures, parameters, and important disclaimers can also be mentioned in this section.", key=persist('model_description'))
|
42 |
+
|
43 |
+
left, right = st.columns([4,6])
|
44 |
+
sub_col1, sub_col2, sub_col3 = st.columns(3)
|
45 |
+
with st.container():
|
46 |
+
with left:
|
47 |
+
st.write("\n")
|
48 |
+
st.write("\n")
|
49 |
+
st.markdown('### Developed By:')
|
50 |
+
st.write("\n")
|
51 |
+
st.write("\n")
|
52 |
+
st.write("\n")
|
53 |
+
st.markdown('### Shared By [optional]:')
|
54 |
+
st.write("\n")
|
55 |
+
st.write("\n")
|
56 |
+
st.write("\n")
|
57 |
+
st.markdown('### License:')
|
58 |
+
st.write("\n")
|
59 |
+
|
60 |
+
st.markdown('### Model Type:')
|
61 |
+
|
62 |
+
with right:
|
63 |
+
st.text_input("",help="List the people who built the model.", key=persist("Model_developers"))
|
64 |
+
st.write("\n")
|
65 |
+
st.text_input("",help="List the people/organization making the model available online.",key=persist("Shared_by"))
|
66 |
+
st.write("\n")
|
67 |
+
st.selectbox("",[""] + list(license_map.values()), help="The license associated with this model.", key=persist("license"))
|
68 |
+
|
69 |
+
with st.container():
|
70 |
+
|
71 |
+
with sub_col1:
|
72 |
+
st.multiselect(" Supervision/Learning Method", [""]+ Supervision_learning_method_list, key=persist("Supervision_learning_method"))
|
73 |
+
with sub_col2:
|
74 |
+
st.multiselect("Machine Learning Type",[""]+Machine_Learning_Type_list, key=persist("Machine_Learning_Type"))
|
75 |
+
with sub_col3:
|
76 |
+
st.multiselect("Modality",[""]+Modality_List, key=persist("Modality"))
|
77 |
+
|
78 |
+
|
79 |
+
def main():
|
80 |
+
cs_body()
|
81 |
+
|
82 |
+
|
83 |
+
|
84 |
+
|
85 |
+
if __name__ == '__main__':
|
86 |
+
load_widget_state()
|
87 |
+
main()
|
pages/3_ π_Uses.py
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from persist import persist, load_widget_state
|
3 |
+
|
4 |
+
global variable_output
|
5 |
+
|
6 |
+
def main():
|
7 |
+
|
8 |
+
cs_body()
|
9 |
+
|
10 |
+
def cs_body():
|
11 |
+
|
12 |
+
st.markdown('# Uses')
|
13 |
+
st.text_area("This section addresses questions around how the model is intended to be used, discusses the foreseeable users of the model (including those affected by the model), and describes uses that are considered out of scope or misuse of the model.")
|
14 |
+
left, right = st.columns([2,4])
|
15 |
+
|
16 |
+
#st.markdown('### Model Description')
|
17 |
+
|
18 |
+
|
19 |
+
with left:
|
20 |
+
st.write("\n")
|
21 |
+
st.write("\n")
|
22 |
+
st.markdown('### Direct Use:')
|
23 |
+
st.write("\n")
|
24 |
+
st.write("\n")
|
25 |
+
st.write("\n")
|
26 |
+
st.write("\n")
|
27 |
+
st.write("\n")
|
28 |
+
st.write("\n")
|
29 |
+
#st.write("\n")
|
30 |
+
st.markdown('### Downstream Use [Optional]:')
|
31 |
+
st.write("\n")
|
32 |
+
st.write("\n")
|
33 |
+
st.write("\n")
|
34 |
+
st.write("\n")
|
35 |
+
st.markdown('### Out-of-Scope Use:')
|
36 |
+
|
37 |
+
with right:
|
38 |
+
st.text_area("",help="How can this model be used, without additional post-processing or further pipeline work?", key=persist("Direct_Use"))
|
39 |
+
st.text_area("",help="How can this model be used, when incorporated into another system?",key=persist("Downstream_Use"))
|
40 |
+
st.text_area("", help="What tasks will the model not work for?", key=persist("Out-of-Scope_Use"))
|
41 |
+
|
42 |
+
|
43 |
+
|
44 |
+
|
45 |
+
if __name__ == '__main__':
|
46 |
+
load_widget_state()
|
47 |
+
main()
|
pages/4_β οΈ_Limits_and_Risks.py
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from persist import persist, load_widget_state
|
3 |
+
|
4 |
+
|
5 |
+
|
6 |
+
global variable_output
|
7 |
+
|
8 |
+
def main():
|
9 |
+
cs_body()
|
10 |
+
|
11 |
+
def cs_body():
|
12 |
+
|
13 |
+
st.markdown('# Bias, Risks, and Limitations')
|
14 |
+
st.text_area("What are the known or foreseeable issues stemming from this model? Use this section to convey both technical and sociotechnical limitations",help="Provide an overview of the possible Limitations and Risks that may be associated with this model", key=persist("Model_Limits_n_Risks"), )
|
15 |
+
left, right = st.columns([2,4])
|
16 |
+
|
17 |
+
#st.markdown('### Model Description')
|
18 |
+
|
19 |
+
|
20 |
+
with left:
|
21 |
+
st.write("\n")
|
22 |
+
st.write("\n")
|
23 |
+
st.markdown('### Recommendations:')
|
24 |
+
|
25 |
+
|
26 |
+
with right:
|
27 |
+
#soutput_jinja = parse_into_jinja_markdown()
|
28 |
+
st.text_area("",help="How can the known or foreseeable issues be addressed?", key=persist("Recommendations"))
|
29 |
+
#st.write("\n")
|
30 |
+
|
31 |
+
|
32 |
+
|
33 |
+
|
34 |
+
if __name__ == '__main__':
|
35 |
+
load_widget_state()
|
36 |
+
main()
|
pages/5_ποΈββοΈ_Model_training.py
ADDED
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from persist import persist, load_widget_state
|
3 |
+
|
4 |
+
global variable_output
|
5 |
+
|
6 |
+
def main():
|
7 |
+
|
8 |
+
cs_body()
|
9 |
+
|
10 |
+
|
11 |
+
def cs_body():
|
12 |
+
|
13 |
+
st.markdown('# Training Details')
|
14 |
+
st.write("Provide an overview of the Training Data and Training Procedure for this model")
|
15 |
+
left, middle, right = st.columns([2,1,7])
|
16 |
+
|
17 |
+
with left:
|
18 |
+
st.write("\n")
|
19 |
+
st.write("\n")
|
20 |
+
st.markdown('## Training Data:')
|
21 |
+
st.write("\n")
|
22 |
+
st.write("\n")
|
23 |
+
st.write("\n")
|
24 |
+
st.write("\n")
|
25 |
+
with middle:
|
26 |
+
st.write("\n")
|
27 |
+
st.write("\n")
|
28 |
+
st.write("\n")
|
29 |
+
st.write("\n")
|
30 |
+
st.write("\n")
|
31 |
+
st.write("\n")
|
32 |
+
st.write("\n")
|
33 |
+
st.write("\n")
|
34 |
+
st.write("\n")
|
35 |
+
st.write("\n")
|
36 |
+
st.write("\n")
|
37 |
+
st.write("\n")
|
38 |
+
st.markdown(' \n ## Training Procedure')
|
39 |
+
with left:
|
40 |
+
st.write("\n")
|
41 |
+
st.write("\n")
|
42 |
+
st.write("\n")
|
43 |
+
st.write("\n")
|
44 |
+
st.write("\n")
|
45 |
+
st.write("\n")
|
46 |
+
st.write("\n")
|
47 |
+
st.write("\n")
|
48 |
+
st.write("\n")
|
49 |
+
|
50 |
+
st.markdown('#### Preprocessing:')
|
51 |
+
st.write("\n")
|
52 |
+
st.write("\n")
|
53 |
+
st.write("\n")
|
54 |
+
st.write("\n")
|
55 |
+
st.write("\n")
|
56 |
+
st.write("\n")
|
57 |
+
st.write("\n")
|
58 |
+
st.markdown('#### Speeds, Sizes, Time:')
|
59 |
+
|
60 |
+
with right:
|
61 |
+
#soutput_jinja = parse_into_jinja_markdown()
|
62 |
+
|
63 |
+
st.text_area("", help ="Ideally this links to a Dataset Card.", key=persist("training_Data"))
|
64 |
+
#st.write("\n")
|
65 |
+
st.write("\n")
|
66 |
+
st.write("\n")
|
67 |
+
st.write("\n")
|
68 |
+
st.write("\n")
|
69 |
+
st.write("\n")
|
70 |
+
st.write("\n")
|
71 |
+
st.write("\n")
|
72 |
+
st.write("\n")
|
73 |
+
st.write("\n")
|
74 |
+
st.write("\n")
|
75 |
+
st.write("\n")
|
76 |
+
|
77 |
+
st.text_area("",key=persist("model_preprocessing"))
|
78 |
+
st.text_area("", help = "This section provides information about throughput, start/end time, checkpoint size if relevant, etc.", key=persist("Speeds_Sizes_Times"))
|
79 |
+
|
80 |
+
|
81 |
+
|
82 |
+
|
83 |
+
|
84 |
+
|
85 |
+
if __name__ == '__main__':
|
86 |
+
load_widget_state()
|
87 |
+
main()
|
pages/6_π¬_Model_Evaluation.py
ADDED
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from persist import persist, load_widget_state
|
3 |
+
from pathlib import Path
|
4 |
+
|
5 |
+
from middleMan import apply_view,writingPrompt
|
6 |
+
|
7 |
+
global variable_output
|
8 |
+
|
9 |
+
def main():
|
10 |
+
cs_body()
|
11 |
+
|
12 |
+
|
13 |
+
def cs_body():
|
14 |
+
|
15 |
+
#stateVariable = 'Model_Eval'
|
16 |
+
#help_text ='Detail the Evaluation Results for this model'
|
17 |
+
#col1.header('Model Evaluation')
|
18 |
+
st.markdown('# Evaluation')
|
19 |
+
st.text_area(" This section describes the evaluation protocols and provides the results. ",help="Detail the Evaluation Results for this model")
|
20 |
+
st.markdown('## Testing Data, Factors & Metrics:')
|
21 |
+
left, right = st.columns([2,4])
|
22 |
+
|
23 |
+
#st.markdown('### Model Description')
|
24 |
+
|
25 |
+
|
26 |
+
with left:
|
27 |
+
st.write("\n")
|
28 |
+
st.write("\n")
|
29 |
+
st.markdown('#### Testing Data:')
|
30 |
+
st.write("\n")
|
31 |
+
st.write("\n")
|
32 |
+
st.write("\n")
|
33 |
+
st.write("\n")
|
34 |
+
st.write("\n")
|
35 |
+
st.write("\n")
|
36 |
+
#st.write("\n")
|
37 |
+
st.markdown('#### Factors:')
|
38 |
+
st.write("\n")
|
39 |
+
st.write("\n")
|
40 |
+
st.write("\n")
|
41 |
+
st.write("\n")
|
42 |
+
st.write("\n")
|
43 |
+
st.write("\n")
|
44 |
+
st.markdown('#### Metrics:')
|
45 |
+
st.write("\n")
|
46 |
+
st.write("\n")
|
47 |
+
st.write("\n")
|
48 |
+
st.write("\n")
|
49 |
+
st.write("\n")
|
50 |
+
st.markdown('#### Results:')
|
51 |
+
|
52 |
+
with right:
|
53 |
+
#soutput_jinja = parse_into_jinja_markdown()
|
54 |
+
st.text_area("", help="Ideally this links to a Dataset Card.",key=persist("Testing_Data"))
|
55 |
+
#st.write("\n")
|
56 |
+
st.text_area("",help="What are the foreseeable characteristics that will influence how the model behaves? This includes domain and context, as well as population subgroups.",key=persist("Factors"))
|
57 |
+
st.text_area("", help="What metrics will be used for evaluation in light of tradeoffs between different errors?", key=persist("Metrics"))
|
58 |
+
st.text_area("", key=persist("Model_Results"))
|
59 |
+
|
60 |
+
|
61 |
+
|
62 |
+
|
63 |
+
|
64 |
+
if __name__ == '__main__':
|
65 |
+
load_widget_state()
|
66 |
+
main()
|
pages/7_π_Model_Examination.py
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from persist import persist, load_widget_state
|
3 |
+
|
4 |
+
#from specific_extraction import extract_it
|
5 |
+
|
6 |
+
|
7 |
+
global variable_output
|
8 |
+
|
9 |
+
def main():
|
10 |
+
cs_body()
|
11 |
+
|
12 |
+
|
13 |
+
|
14 |
+
def cs_body():
|
15 |
+
|
16 |
+
#col1.header('Model Examination')
|
17 |
+
#stateVariable = "Model_examin"
|
18 |
+
#help_text = 'Give an overview of your model, the relevant research paper, who trained it, etc.'
|
19 |
+
|
20 |
+
st.markdown('# Model Examination')
|
21 |
+
st.text_area("Experimental: Where explainability/interpretability work can go.",height = 200, key=persist("Model_examin"), )
|
22 |
+
#left, right = st.columns([2,4], gap="small")
|
23 |
+
|
24 |
+
#st.markdown('### Model Description')
|
25 |
+
|
26 |
+
|
27 |
+
|
28 |
+
|
29 |
+
|
30 |
+
|
31 |
+
|
32 |
+
|
33 |
+
if __name__ == '__main__':
|
34 |
+
load_widget_state()
|
35 |
+
main()
|
pages/8_π_Environmental_Impact.py
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from persist import persist, load_widget_state
|
3 |
+
from pathlib import Path
|
4 |
+
|
5 |
+
|
6 |
+
|
7 |
+
global variable_output
|
8 |
+
|
9 |
+
def main():
|
10 |
+
|
11 |
+
cs_body()
|
12 |
+
|
13 |
+
|
14 |
+
def cs_body():
|
15 |
+
|
16 |
+
stateVariable = 'Model_carbon'
|
17 |
+
help_text ='Provide an estimate for the carbon emissions: e.g hardware used, horus spent training, cloud provider '
|
18 |
+
|
19 |
+
st.markdown('# Environmental Impact')
|
20 |
+
st.markdown('###### Carbon emissions can be estimated using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700).')
|
21 |
+
st.text_area("", help="Provide an estimate for the carbon emissions: e.g hardware used, horus spent training, cloud provider")
|
22 |
+
|
23 |
+
left, right = st.columns([2,4])
|
24 |
+
with left:
|
25 |
+
st.write("\n")
|
26 |
+
st.write("\n")
|
27 |
+
st.markdown('### Hardware Type:')
|
28 |
+
st.write("\n")
|
29 |
+
st.write("\n")
|
30 |
+
#st.write("\n")
|
31 |
+
st.markdown('### Hours used:')
|
32 |
+
st.write("\n")
|
33 |
+
st.write("\n")
|
34 |
+
st.markdown('### Cloud Provider:')
|
35 |
+
st.write("\n")
|
36 |
+
st.write("\n")
|
37 |
+
st.markdown('### Compute Region:')
|
38 |
+
st.write("\n")
|
39 |
+
st.write("\n")
|
40 |
+
st.markdown('### Carbon Emitted:')
|
41 |
+
with right:
|
42 |
+
#soutput_jinja = parse_into_jinja_markdown()
|
43 |
+
st.text_input("",key=persist("Model_hardware"))
|
44 |
+
#st.write("\n")
|
45 |
+
st.text_input("",help="sw",key=persist("hours_used"))
|
46 |
+
st.text_input("",key=persist("Model_cloud_provider"))
|
47 |
+
st.text_input("",key=persist("Model_cloud_region"))
|
48 |
+
st.text_input("",help= 'in grams of CO2eq', key=persist("Model_c02_emitted")) ##to-do: auto calculate
|
49 |
+
|
50 |
+
|
51 |
+
|
52 |
+
|
53 |
+
|
54 |
+
if __name__ == '__main__':
|
55 |
+
load_widget_state()
|
56 |
+
main()
|
pages/9_π_Citation.py
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from persist import persist, load_widget_state
|
3 |
+
from pathlib import Path
|
4 |
+
|
5 |
+
|
6 |
+
|
7 |
+
global variable_output
|
8 |
+
|
9 |
+
def main():
|
10 |
+
cs_body()
|
11 |
+
|
12 |
+
def cs_body():
|
13 |
+
|
14 |
+
st.markdown('# Citation')
|
15 |
+
st.write("If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section")
|
16 |
+
left, right = st.columns([2,4])
|
17 |
+
|
18 |
+
#st.markdown('### Model Description')
|
19 |
+
|
20 |
+
|
21 |
+
with left:
|
22 |
+
st.write("\n")
|
23 |
+
st.write("\n")
|
24 |
+
st.markdown('### BibTeX:')
|
25 |
+
st.write("\n")
|
26 |
+
st.write("\n")
|
27 |
+
st.write("\n")
|
28 |
+
st.write("\n")
|
29 |
+
st.write("\n")
|
30 |
+
st.write("\n")
|
31 |
+
st.markdown('### APA:')
|
32 |
+
|
33 |
+
|
34 |
+
with right:
|
35 |
+
|
36 |
+
st.text_area("", key=persist("bibtex_citation"))
|
37 |
+
st.text_area("", key=persist("APA_citation"))
|
38 |
+
#st.write("\n")
|
39 |
+
|
40 |
+
|
41 |
+
|
42 |
+
|
43 |
+
|
44 |
+
|
45 |
+
|
46 |
+
if __name__ == '__main__':
|
47 |
+
load_widget_state()
|
48 |
+
main()
|
pages/__pycache__/HowToGetStarted.cpython-39.pyc
ADDED
Binary file (1.52 kB). View file
|
|
pages/__pycache__/firstPage.cpython-39.pyc
ADDED
Binary file (1.78 kB). View file
|
|
pages/__pycache__/viewCardProgress.cpython-39.pyc
ADDED
Binary file (2.86 kB). View file
|
|
persist.cpython-39.pyc
ADDED
Binary file (877 Bytes). View file
|
|
persist.py
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Thank god this existed.
|
2 |
+
# https://gist.github.com/okld/0aba4869ba6fdc8d49132e6974e2e662
|
3 |
+
|
4 |
+
from streamlit import session_state as _state
|
5 |
+
|
6 |
+
_PERSIST_STATE_KEY = f"{__name__}_PERSIST"
|
7 |
+
|
8 |
+
|
9 |
+
def persist(key: str) -> str:
|
10 |
+
"""Mark widget state as persistent."""
|
11 |
+
if _PERSIST_STATE_KEY not in _state:
|
12 |
+
_state[_PERSIST_STATE_KEY] = set()
|
13 |
+
|
14 |
+
_state[_PERSIST_STATE_KEY].add(key)
|
15 |
+
|
16 |
+
return key
|
17 |
+
|
18 |
+
|
19 |
+
def load_widget_state():
|
20 |
+
"""Load persistent widget state."""
|
21 |
+
if _PERSIST_STATE_KEY in _state:
|
22 |
+
_state.update({
|
23 |
+
key: value
|
24 |
+
for key, value in _state.items()
|
25 |
+
if key in _state[_PERSIST_STATE_KEY]
|
26 |
+
})
|
requirements.txt
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
streamlit
|
2 |
+
modelcards==0.1.2
|
3 |
+
pandas
|
4 |
+
lxml
|
specific_extraction.py
ADDED
@@ -0,0 +1,528 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import re
|
2 |
+
import streamlit as st
|
3 |
+
from modelcards import CardData, ModelCard
|
4 |
+
from markdownTagExtract import tag_checker,listToString,to_markdown
|
5 |
+
#from specific_extraction import extract_it
|
6 |
+
|
7 |
+
|
8 |
+
# from persist import persist
|
9 |
+
#global bytes_data
|
10 |
+
|
11 |
+
|
12 |
+
################################################################
|
13 |
+
#### Markdown parser logic #################################
|
14 |
+
################################################################
|
15 |
+
|
16 |
+
def file_upload():
|
17 |
+
bytes_data = st.session_state.markdown_upload
|
18 |
+
return bytes_data
|
19 |
+
|
20 |
+
|
21 |
+
# Sets up the basics
|
22 |
+
model_card_md = file_upload() # this is where the new model card will be read in from
|
23 |
+
model_card_md = model_card_md#.decode("utf-8")
|
24 |
+
# Does metadata appear in any other format than this?
|
25 |
+
metadata_re = re.compile("^---(.*?)---", re.DOTALL)
|
26 |
+
header_re = re.compile("^\s*# (.*)", re.MULTILINE)
|
27 |
+
subheader_re = re.compile("^\s*## (.*)", re.MULTILINE)
|
28 |
+
subsubheader_re = re.compile("^\s*### (.*)", re.MULTILINE)
|
29 |
+
subsubsubheader_re = re.compile("^\s*#### (.*)", re.MULTILINE)
|
30 |
+
# We could be a lot more flexible on this re.
|
31 |
+
# We require keys to be bold-faced here.
|
32 |
+
# We don't have to require bold, as long as it's key:value
|
33 |
+
# **License:**
|
34 |
+
# Bold terms use ** or __
|
35 |
+
# Allows the mixing of ** and __ for bold but eh whatev
|
36 |
+
key_value_re = re.compile("^\s*([*_]{2}[^*_]+[*_]{2})([^\n]*)", re.MULTILINE)
|
37 |
+
# Hyphens or stars mark list items.
|
38 |
+
# Unordered list
|
39 |
+
list_item_re = re.compile("^\s*[-*+]\s+.*", re.MULTILINE)
|
40 |
+
# This is the ordered list
|
41 |
+
enum_re = re.compile("^\s*[0-9].*", re.MULTILINE)
|
42 |
+
table_re = re.compile("^\s*\|.*", re.MULTILINE)
|
43 |
+
text_item_re = re.compile("^\s*[A-Za-z(](.*)", re.MULTILINE)
|
44 |
+
# text_item_re = re.compile("^\s*#\s*.*", re.MULTILINE)
|
45 |
+
# Allows the mixing of -* and *- for italics but eh whatev
|
46 |
+
italicized_text_item_re = re.compile(
|
47 |
+
"^[_*][^_*\s].*\n?.*[^_*][_*]$", flags=re.MULTILINE
|
48 |
+
)
|
49 |
+
tag_re = re.compile("^\s*<.*", re.MULTILINE)
|
50 |
+
image_re = re.compile("!\[.*\]\(.*\)", re.MULTILINE)
|
51 |
+
|
52 |
+
|
53 |
+
subheader_re_dict = {}
|
54 |
+
subheader_re_dict[header_re] = subheader_re
|
55 |
+
subheader_re_dict[subheader_re] = subsubheader_re
|
56 |
+
subheader_re_dict[subsubheader_re] = subsubsubheader_re
|
57 |
+
|
58 |
+
|
59 |
+
def get_metadata(section_text):
|
60 |
+
return list(metadata_re.finditer(section_text))
|
61 |
+
|
62 |
+
|
63 |
+
def find_images(section_text):
|
64 |
+
return list(image_re.finditer(section_text))
|
65 |
+
|
66 |
+
|
67 |
+
def find_tags(section_text):
|
68 |
+
return list(tag_re.finditer(section_text))
|
69 |
+
|
70 |
+
|
71 |
+
def find_tables(section_text):
|
72 |
+
return list(table_re.finditer(section_text))
|
73 |
+
|
74 |
+
|
75 |
+
def find_enums(section_text):
|
76 |
+
return list(enum_re.finditer(section_text))
|
77 |
+
|
78 |
+
|
79 |
+
# Extracts the stuff from the .md file
|
80 |
+
def find_key_values(section_text):
|
81 |
+
return list(key_value_re.finditer(section_text))
|
82 |
+
|
83 |
+
|
84 |
+
def find_lists(section_text):
|
85 |
+
# Find lists: Those lines starting with either '-' or '*'
|
86 |
+
return list(list_item_re.finditer(section_text))
|
87 |
+
|
88 |
+
|
89 |
+
def find_texts(section_text):
|
90 |
+
# Find texts: Free writing within a section
|
91 |
+
basic_text = list(text_item_re.finditer(section_text))
|
92 |
+
ital_text = list(italicized_text_item_re.finditer(section_text))
|
93 |
+
free_text = basic_text + ital_text
|
94 |
+
return free_text
|
95 |
+
|
96 |
+
|
97 |
+
def find_headers(full_text):
|
98 |
+
headers = list(header_re.finditer(full_text))
|
99 |
+
subheaders = list(subheader_re.finditer(full_text))
|
100 |
+
subsubheaders = list(subsubheader_re.finditer(full_text))
|
101 |
+
subsubsubheaders = list(subsubsubheader_re.finditer(full_text))
|
102 |
+
return (headers, subheaders, subsubheaders, subsubsubheaders)
|
103 |
+
|
104 |
+
|
105 |
+
metadata_list = get_metadata(model_card_md)
|
106 |
+
if metadata_list != []:
|
107 |
+
metadata_end = metadata_list[-1].span()[-1]
|
108 |
+
print("Metadata extracted")
|
109 |
+
# Metadata processing can happen here.
|
110 |
+
# For now I'm just ignoring it.
|
111 |
+
model_card_md = model_card_md[metadata_end:]
|
112 |
+
else:
|
113 |
+
print("No metadata found")
|
114 |
+
|
115 |
+
# Matches of all header types
|
116 |
+
headers_list = find_headers(model_card_md)
|
117 |
+
print("Headers extracted")
|
118 |
+
# This type of header (one #)
|
119 |
+
headers = headers_list[0]
|
120 |
+
## This type of header (two ##)
|
121 |
+
subheaders = headers_list[1]
|
122 |
+
### This type of header
|
123 |
+
subsubheaders = headers_list[2]
|
124 |
+
#### This type of header
|
125 |
+
subsubsubheaders = headers_list[3]
|
126 |
+
|
127 |
+
# Matches of bulleted lists
|
128 |
+
lists_list = find_lists(model_card_md)
|
129 |
+
print("Bulleted lists extracted")
|
130 |
+
|
131 |
+
enums_list = find_enums(model_card_md)
|
132 |
+
print("Enumerated lists extracted")
|
133 |
+
|
134 |
+
key_value_list = find_key_values(model_card_md)
|
135 |
+
print("Key values extracted")
|
136 |
+
|
137 |
+
tables_list = find_tables(model_card_md)
|
138 |
+
print("Tables extracted")
|
139 |
+
|
140 |
+
tags_list = find_tags(model_card_md)
|
141 |
+
print("Markup tags extracted")
|
142 |
+
|
143 |
+
images_list = find_images(model_card_md)
|
144 |
+
print("Images extracted")
|
145 |
+
|
146 |
+
# Matches of free text within a section
|
147 |
+
texts_list = find_texts(model_card_md)
|
148 |
+
print("Free text extracted")
|
149 |
+
|
150 |
+
|
151 |
+
# List items have the attribute: value;
|
152 |
+
# This provides for special handling of those strings,
|
153 |
+
# allowing us to check if it's a list item in order to split/print ok.
|
154 |
+
LIST_ITEM = "List item"
|
155 |
+
KEY_VALUE = "Key: Value"
|
156 |
+
FREE_TEXT = "Free text"
|
157 |
+
ENUM_LIST_ITEM = "Enum item"
|
158 |
+
TABLE_ITEM = "Table item"
|
159 |
+
TAG_ITEM = "Markup tag"
|
160 |
+
IMAGE_ITEM = "Image"
|
161 |
+
|
162 |
+
|
163 |
+
def create_span_dict(match_list, match_type):
|
164 |
+
"""
|
165 |
+
Creates a dictionary made out of all the spans.
|
166 |
+
This is useful for knowing which types to fill out with what in the app.
|
167 |
+
Also useful for checking if there are spans in the .md file that we've missed.
|
168 |
+
"""
|
169 |
+
span_dict = {}
|
170 |
+
for match in match_list:
|
171 |
+
if len(match.group().strip()) > 0:
|
172 |
+
span_dict[(match.span())] = (match.group(), match_type)
|
173 |
+
return span_dict
|
174 |
+
|
175 |
+
|
176 |
+
metadata_span_dict = create_span_dict(metadata_list, "Metadata")
|
177 |
+
# Makes a little dict for each span type
|
178 |
+
header_span_dict = create_span_dict(headers, "# Header")
|
179 |
+
subheader_span_dict = create_span_dict(subheaders, "## Subheader")
|
180 |
+
subsubheader_span_dict = create_span_dict(subsubheaders, "### Subsubheader")
|
181 |
+
subsubsubheader_span_dict = create_span_dict(subsubsubheaders, "#### Subsubsubheader")
|
182 |
+
key_value_span_dict = create_span_dict(key_value_list, KEY_VALUE)
|
183 |
+
lists_span_dict = create_span_dict(lists_list, LIST_ITEM)
|
184 |
+
enums_span_dict = create_span_dict(enums_list, ENUM_LIST_ITEM)
|
185 |
+
tables_span_dict = create_span_dict(tables_list, TABLE_ITEM)
|
186 |
+
tags_span_dict = create_span_dict(tags_list, TAG_ITEM)
|
187 |
+
images_span_dict = create_span_dict(images_list, IMAGE_ITEM)
|
188 |
+
texts_span_dict = create_span_dict(texts_list, FREE_TEXT)
|
189 |
+
|
190 |
+
# We don't have to have these organized by type necessarily.
|
191 |
+
# Doing it here for clarity.
|
192 |
+
all_spans_dict = {}
|
193 |
+
all_spans_dict["headers"] = header_span_dict
|
194 |
+
all_spans_dict["subheaders"] = subheader_span_dict
|
195 |
+
all_spans_dict["subsubheaders"] = subsubheader_span_dict
|
196 |
+
all_spans_dict["subsubsubheaders"] = subsubsubheader_span_dict
|
197 |
+
all_spans_dict[LIST_ITEM] = lists_span_dict
|
198 |
+
all_spans_dict[KEY_VALUE] = key_value_span_dict
|
199 |
+
all_spans_dict[TABLE_ITEM] = tables_span_dict
|
200 |
+
all_spans_dict[ENUM_LIST_ITEM] = enums_span_dict
|
201 |
+
all_spans_dict[TAG_ITEM] = tags_span_dict
|
202 |
+
all_spans_dict[IMAGE_ITEM] = images_span_dict
|
203 |
+
all_spans_dict[FREE_TEXT] = texts_span_dict
|
204 |
+
|
205 |
+
|
206 |
+
def get_sorted_spans(spans_dict):
|
207 |
+
merged_spans = {}
|
208 |
+
for span_dict in spans_dict.values():
|
209 |
+
merged_spans.update(span_dict)
|
210 |
+
sorted_spans = sorted(merged_spans)
|
211 |
+
return sorted_spans, merged_spans
|
212 |
+
|
213 |
+
|
214 |
+
sorted_spans, merged_spans = get_sorted_spans(all_spans_dict)
|
215 |
+
|
216 |
+
# Sanity/Parse check. Have we captured all spans in the .md file?
|
217 |
+
if sorted_spans[0][0] != 0:
|
218 |
+
print("FYI, our spans don't start at the start of the file.")
|
219 |
+
print("We did not catch this start:")
|
220 |
+
print(model_card_md[: sorted_spans[0][0]])
|
221 |
+
|
222 |
+
for idx in range(len(sorted_spans) - 1):
|
223 |
+
last_span_end = sorted_spans[idx][1]
|
224 |
+
new_span_start = sorted_spans[idx + 1][0]
|
225 |
+
if new_span_start > last_span_end + 1:
|
226 |
+
start_nonparse = sorted_spans[idx]
|
227 |
+
end_nonparse = sorted_spans[idx + 1]
|
228 |
+
text = model_card_md[start_nonparse[1] : end_nonparse[0]]
|
229 |
+
if text.strip():
|
230 |
+
print("Found an unparsed span in the file:")
|
231 |
+
print(start_nonparse)
|
232 |
+
print(" ---> ")
|
233 |
+
print(end_nonparse)
|
234 |
+
print(text)
|
235 |
+
|
236 |
+
# print(header_span_dict)
|
237 |
+
def section_map_to_help_text(text_retrieved):
|
238 |
+
|
239 |
+
presit_states = {
|
240 |
+
"## Model Details": "Give an overview of your model, the relevant research paper, who trained it, etc.",
|
241 |
+
"## How to Get Started with the Model": "Give an overview of how to get started with the model",
|
242 |
+
"## Limitations and Biases": "Provide an overview of the possible Limitations and Risks that may be associated with this model",
|
243 |
+
"## Uses": "Detail the potential uses, intended use and out-of-scope uses for this model",
|
244 |
+
"## Training": "Provide an overview of the Training Data and Training Procedure for this model",
|
245 |
+
"## Evaluation Results": "Detail the Evaluation Results for this model",
|
246 |
+
"## Environmental Impact": "Provide an estimate for the carbon emissions: Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here.",
|
247 |
+
"## Citation Information": "How to best cite the model authors",
|
248 |
+
"## Glossary": "If relevant, include terms and calculations in this section that can help readers understand the model or model card.",
|
249 |
+
"## More Information": "Any additional information",
|
250 |
+
"## Model Card Authors": "This section provides another layer of transparency and accountability. Whose views is this model card representing? How many voices were included in its construction? Etc.",
|
251 |
+
"Model Card Contact": "Mediums to use, in order to contact the model creators",
|
252 |
+
"## Technical Specifications": " Additional technical information",
|
253 |
+
'## Model Examination': " Examining the model",
|
254 |
+
}
|
255 |
+
|
256 |
+
for key in presit_states:
|
257 |
+
if key == text_retrieved:
|
258 |
+
return presit_states(key)
|
259 |
+
|
260 |
+
|
261 |
+
def section_map_to_persist(text_retrieved):
|
262 |
+
|
263 |
+
presit_states = {
|
264 |
+
"Model_details_text": "## Model Details",
|
265 |
+
"Model_how_to": "## How to Get Started with the Model",
|
266 |
+
"Model_Limits_n_Risks": "## Limitations and Biases",
|
267 |
+
"Model_uses": "## Uses",
|
268 |
+
"Model_training": "## Training",
|
269 |
+
"Model_Eval": "## Evaluation Results",
|
270 |
+
"Model_carbon": "## Environmental Impact",
|
271 |
+
"Model_cite": "## Citation Information",
|
272 |
+
"Glossary": "## Glossary",
|
273 |
+
"More_info": "## More Information",
|
274 |
+
"Model_card_authors": "## Model Card Authors",
|
275 |
+
"Model_card_contact": "## Model Card Contact",
|
276 |
+
"Technical_specs": "## Technical specifications",
|
277 |
+
"Model_examin": "## Model Examination",
|
278 |
+
}
|
279 |
+
|
280 |
+
for key in presit_states:
|
281 |
+
if presit_states[key] == text_retrieved:
|
282 |
+
return key
|
283 |
+
|
284 |
+
|
285 |
+
def main():
|
286 |
+
# st.write('here')
|
287 |
+
print(extract_it("Model_details_text"))
|
288 |
+
|
289 |
+
|
290 |
+
def extract_headers():
|
291 |
+
headers = {}
|
292 |
+
subheaders = {}
|
293 |
+
subsubheaders = {}
|
294 |
+
subsubsubheaders = {}
|
295 |
+
previous = (None, None, None, None)
|
296 |
+
|
297 |
+
for s in sorted_spans:
|
298 |
+
if merged_spans[s][1] == "# Header":
|
299 |
+
headers[s] = (sorted_spans.index(s), previous[0])
|
300 |
+
previous = (sorted_spans.index(s), previous[1], previous[2], previous[3])
|
301 |
+
if merged_spans[s][1] == "## Subheader":
|
302 |
+
subheaders[s] = (sorted_spans.index(s), previous[1])
|
303 |
+
previous = (previous[0], sorted_spans.index(s), previous[2], previous[3])
|
304 |
+
if merged_spans[s][1] == "### Subsubheader":
|
305 |
+
subsubheaders[s] = (sorted_spans.index(s), previous[2])
|
306 |
+
previous = (previous[0], previous[1], sorted_spans.index(s), previous[3])
|
307 |
+
if merged_spans[s][1] == "#### Subsubsubheader":
|
308 |
+
subsubsubheaders[s] = (sorted_spans.index(s), previous[3])
|
309 |
+
previous = (previous[0], previous[1], previous[2], sorted_spans.index(s))
|
310 |
+
|
311 |
+
return headers, subheaders, subsubheaders, subsubsubheaders
|
312 |
+
|
313 |
+
|
314 |
+
def stringify():
|
315 |
+
headers, subheaders, subsubheaders, subsubsubheaders = extract_headers()
|
316 |
+
headers_strings = {}
|
317 |
+
subheaders_strings = {}
|
318 |
+
subsubheaders_strings = {}
|
319 |
+
subsubsubheaders_strings = {}
|
320 |
+
|
321 |
+
first = None
|
322 |
+
for i in headers:
|
323 |
+
if headers[i][1] == None:
|
324 |
+
continue
|
325 |
+
sub_spans = sorted_spans[headers[i][1] : headers[i][0]]
|
326 |
+
lines = []
|
327 |
+
for x in sub_spans:
|
328 |
+
lines.append(merged_spans[x][0])
|
329 |
+
try:
|
330 |
+
name = lines[0]
|
331 |
+
except:
|
332 |
+
name = "Model Details"
|
333 |
+
lines = "".join(lines)
|
334 |
+
# print(merged_spans[i][0] + "-------------------")
|
335 |
+
# print(lines)
|
336 |
+
headers_strings[
|
337 |
+
name.replace("\n# ", "")
|
338 |
+
.replace(" ", "")
|
339 |
+
.replace(" ", "")
|
340 |
+
.replace("\n", "")
|
341 |
+
.replace("{{", "")
|
342 |
+
.replace("}}", "")
|
343 |
+
] = lines
|
344 |
+
first = i
|
345 |
+
|
346 |
+
first = None
|
347 |
+
for i in subheaders:
|
348 |
+
if subheaders[i][1] == None:
|
349 |
+
continue
|
350 |
+
sub_spans = sorted_spans[subheaders[i][1] : subheaders[i][0]]
|
351 |
+
lines = []
|
352 |
+
for x in sub_spans:
|
353 |
+
if merged_spans[x][1] == "## Subheader" and first == None:
|
354 |
+
break
|
355 |
+
elif merged_spans[x][1] == "# Header":
|
356 |
+
break
|
357 |
+
else:
|
358 |
+
lines.append(merged_spans[x][0])
|
359 |
+
try:
|
360 |
+
name = lines[0]
|
361 |
+
except:
|
362 |
+
name = "Model Details"
|
363 |
+
lines = "".join(lines)
|
364 |
+
# print(merged_spans[i][0] + "-------------------")
|
365 |
+
# print(lines)
|
366 |
+
subheaders_strings[
|
367 |
+
name.replace("\n# ", "").replace(" ", "").replace(" ", "")
|
368 |
+
] = lines
|
369 |
+
first = i
|
370 |
+
|
371 |
+
first = None
|
372 |
+
for i in subsubheaders:
|
373 |
+
if subsubheaders[i][1] == None:
|
374 |
+
continue
|
375 |
+
sub_spans = sorted_spans[subsubheaders[i][1] : subsubheaders[i][0]]
|
376 |
+
lines = []
|
377 |
+
for x in sub_spans:
|
378 |
+
if merged_spans[x][1] == "## Subheader" or (
|
379 |
+
merged_spans[x][1] == "### Subsubheader" and first == None
|
380 |
+
):
|
381 |
+
break
|
382 |
+
else:
|
383 |
+
lines.append(merged_spans[x][0])
|
384 |
+
lines = "".join(lines)
|
385 |
+
|
386 |
+
subsubheaders_strings[
|
387 |
+
merged_spans[i][0].replace("\n", "").replace("### ", "").replace(" ", "")
|
388 |
+
] = lines
|
389 |
+
first = i
|
390 |
+
|
391 |
+
for i in subsubsubheaders:
|
392 |
+
if subsubsubheaders[i][1] == None:
|
393 |
+
continue
|
394 |
+
sub_spans = sorted_spans[subsubsubheaders[i][1] : subsubsubheaders[i][0]]
|
395 |
+
lines = []
|
396 |
+
for x in sub_spans:
|
397 |
+
if (
|
398 |
+
merged_spans[x][1] == "## Subheader"
|
399 |
+
or merged_spans[x][1] == "### Subsubheader"
|
400 |
+
):
|
401 |
+
break
|
402 |
+
else:
|
403 |
+
lines.append(merged_spans[x][0])
|
404 |
+
lines = "".join(lines)
|
405 |
+
|
406 |
+
subsubsubheaders_strings[
|
407 |
+
merged_spans[i][0].replace("#### ", "").replace("**", "").replace("\n", "")
|
408 |
+
] = lines
|
409 |
+
|
410 |
+
return (
|
411 |
+
headers_strings,
|
412 |
+
subheaders_strings,
|
413 |
+
subsubheaders_strings,
|
414 |
+
subsubsubheaders_strings,
|
415 |
+
)
|
416 |
+
|
417 |
+
|
418 |
+
def extract_it(text_to_retrieve):
|
419 |
+
print("Span\t\tType\t\tText")
|
420 |
+
print("-------------------------------------")
|
421 |
+
found_subheader = False
|
422 |
+
current_subheader = " "
|
423 |
+
page_state = " "
|
424 |
+
help_text = " "
|
425 |
+
#st.write("in cs- body here")
|
426 |
+
|
427 |
+
(
|
428 |
+
headers_strings,
|
429 |
+
subheaders_strings,
|
430 |
+
subsubheaders_strings,
|
431 |
+
subsubsubheaders_strings,
|
432 |
+
) = stringify()
|
433 |
+
|
434 |
+
h_keys = list(headers_strings.keys())
|
435 |
+
sh_keys = list(subheaders_strings.keys())
|
436 |
+
ssh_keys = list(subsubheaders_strings.keys())
|
437 |
+
sssh_keys = list(subsubsubheaders_strings.keys())
|
438 |
+
|
439 |
+
needed = [
|
440 |
+
"model details",
|
441 |
+
"howto",
|
442 |
+
"limitations",
|
443 |
+
"uses",
|
444 |
+
"training",
|
445 |
+
"evaluation",
|
446 |
+
"environmental",
|
447 |
+
"citation",
|
448 |
+
"glossary",
|
449 |
+
"more information",
|
450 |
+
"authors",
|
451 |
+
"contact",
|
452 |
+
] # not sure what keyword should be used for citation, howto, and contact
|
453 |
+
# info_strings = {
|
454 |
+
# "details": "## Model Details",
|
455 |
+
# "howto": "## How to Get Started with the Model",
|
456 |
+
# "limitations": "## Limitations and Biases",
|
457 |
+
# "uses": "## Uses",
|
458 |
+
# "training": "## Training",
|
459 |
+
# "evaluation": "## Evaluation Results",
|
460 |
+
# "environmental": "## Environmental Impact",
|
461 |
+
# "citation": "## Citation Information",
|
462 |
+
# "glossary": "## Glossary",
|
463 |
+
# "more information": "## More Information",
|
464 |
+
# "authors": "## Model Card Authors",
|
465 |
+
# "contact": "## Model Card Contact",
|
466 |
+
# }
|
467 |
+
info_strings = {
|
468 |
+
"model details": "",
|
469 |
+
"howto": "",
|
470 |
+
"limitations": "",
|
471 |
+
"uses": "",
|
472 |
+
"training": "",
|
473 |
+
"evaluation": "",
|
474 |
+
"environmental": "",
|
475 |
+
"citation": "",
|
476 |
+
"glossary": "",
|
477 |
+
"more information": "",
|
478 |
+
"authors": "",
|
479 |
+
"contact": "",
|
480 |
+
}
|
481 |
+
|
482 |
+
for x in needed:
|
483 |
+
for l in h_keys:
|
484 |
+
if x in l.lower():
|
485 |
+
info_strings[x] = info_strings[x] + headers_strings[l]
|
486 |
+
for i in sh_keys:
|
487 |
+
if x in i.lower():
|
488 |
+
info_strings[x] = info_strings[x] + subheaders_strings[i]
|
489 |
+
for z in ssh_keys:
|
490 |
+
try:
|
491 |
+
if x in z.lower():
|
492 |
+
info_strings[x] = info_strings[x] + subsubheaders_strings[z]
|
493 |
+
except:
|
494 |
+
continue
|
495 |
+
for y in sssh_keys:
|
496 |
+
try:
|
497 |
+
if x in y.lower():
|
498 |
+
info_strings[x] = info_strings[x] + subsubsubheaders_strings[y]
|
499 |
+
except:
|
500 |
+
continue
|
501 |
+
|
502 |
+
extracted_info = {
|
503 |
+
"Model_details_text": info_strings["model details"],
|
504 |
+
"Model_how_to": info_strings["howto"],
|
505 |
+
"Model_Limits_n_Risks": info_strings["limitations"],
|
506 |
+
"Model_uses": info_strings["uses"],
|
507 |
+
"Model_training": info_strings["training"],
|
508 |
+
"Model_Eval": info_strings["evaluation"],
|
509 |
+
"Model_carbon": info_strings["environmental"],
|
510 |
+
"Model_cite": info_strings["citation"],
|
511 |
+
"Glossary": info_strings["glossary"],
|
512 |
+
"More_info": info_strings["more information"],
|
513 |
+
"Model_card_authors": info_strings["authors"],
|
514 |
+
"Model_card_contact": info_strings["contact"],
|
515 |
+
"Technical_specs": "## Technical specifications",
|
516 |
+
"Model_examin": "## Model Examination",
|
517 |
+
}
|
518 |
+
|
519 |
+
#text_to_retrieve = "Model_details_text"
|
520 |
+
|
521 |
+
new_t = extracted_info[text_to_retrieve] + " "
|
522 |
+
|
523 |
+
return(new_t)
|
524 |
+
|
525 |
+
|
526 |
+
if __name__ == "__main__":
|
527 |
+
|
528 |
+
main()
|
style.css
ADDED
File without changes
|
test_markdown_out.py
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from persist import persist, load_widget_state
|
3 |
+
from jinja2 import Environment, FileSystemLoader
|
4 |
+
|
5 |
+
def parse_into_jinja_markdown():
|
6 |
+
env = Environment(loader=FileSystemLoader('.'), autoescape=True)
|
7 |
+
temp = env.get_template(st.session_state.markdown_upload)
|
8 |
+
|
9 |
+
return (temp.render(model_id = st.session_state["model_name"],
|
10 |
+
the_model_description = st.session_state["model_description"],developers=st.session_state["Model_developers"],shared_by = st.session_state["shared_by"],model_license = st.session_state['license'],
|
11 |
+
direct_use = st.session_state["Direct_Use"], downstream_use = st.session_state["Downstream_Use"],out_of_scope_use = st.session_state["Out-of-Scope_Use"],
|
12 |
+
bias_risks_limitations = st.session_state["Model_Limits_n_Risks"], bias_recommendations = st.session_state['Recommendations'],
|
13 |
+
model_examination = st.session_state['Model_examin'],
|
14 |
+
hardware= st.session_state['Model_hardware'], hours_used = st.session_state['hours_used'], cloud_provider = st.session_state['Model_cloud_provider'], cloud_region = st.session_state['Model_cloud_region'], co2_emitted = st.session_state['Model_c02_emitted'],
|
15 |
+
citation_bibtex= st.session_state["APA_citation"], citation_apa = st.session_state['bibtex_citation'],
|
16 |
+
training_data = st.session_state['training_data'], preprocessing =st.session_state['preprocessing'], speeds_sizes_times = st.session_state['Speeds_Sizes_Times'],
|
17 |
+
model_specs = st.session_state['Model_specs'], compute_infrastructure = st.session_state['compute_infrastructure'],software = st.session_state['technical_specs_software'],
|
18 |
+
glossary = st.session_state['Glossary'],
|
19 |
+
more_information = st.session_state['More_info'],
|
20 |
+
model_card_authors = st.session_state['the_authors'],
|
21 |
+
model_card_contact = st.session_state['Model_card_contact'],
|
22 |
+
get_started_code =st.session_state["Model_how_to"]
|
23 |
+
))
|
24 |
+
|
25 |
+
def main():
|
26 |
+
st.write( parse_into_jinja_markdown())
|
27 |
+
|
28 |
+
if __name__ == '__main__':
|
29 |
+
load_widget_state()
|
30 |
+
main()
|
testing_layout.py
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from persist import persist, load_widget_state
|
3 |
+
import pandas as pd
|
4 |
+
import requests
|
5 |
+
|
6 |
+
|
7 |
+
|
8 |
+
|
9 |
+
@st.cache
|
10 |
+
def get_cached_data():
|
11 |
+
languages_df = pd.read_html("https://hf.co/languages")[0]
|
12 |
+
languages_map = pd.Series(languages_df["Language"].values, index=languages_df["ISO code"]).to_dict()
|
13 |
+
|
14 |
+
license_df = pd.read_html("https://huggingface.co/docs/hub/repositories-licenses")[0]
|
15 |
+
license_map = pd.Series(
|
16 |
+
license_df["License identifier (to use in model card)"].values, index=license_df.Fullname
|
17 |
+
).to_dict()
|
18 |
+
|
19 |
+
available_metrics = [x['id'] for x in requests.get('https://huggingface.co/api/metrics').json()]
|
20 |
+
|
21 |
+
r = requests.get('https://huggingface.co/api/models-tags-by-type')
|
22 |
+
tags_data = r.json()
|
23 |
+
libraries = [x['id'] for x in tags_data['library']]
|
24 |
+
tasks = [x['id'] for x in tags_data['pipeline_tag']]
|
25 |
+
#return languages_map, license_map, available_metrics, libraries, tasks
|
26 |
+
return license_map
|
27 |
+
|
28 |
+
|
29 |
+
|
30 |
+
|
31 |
+
|
32 |
+
def main():
|
33 |
+
license_map= get_cached_data()
|
34 |
+
#st.set_page_config(layout="wide")
|
35 |
+
st.markdown('## Model Details')
|
36 |
+
st.markdown('### Model Description')
|
37 |
+
st.text_area("Provide a 1-2 sentence summary of what this model is.", help="The model description provides basic details about the model. This includes the architecture, version, if it was introduced in a paper, if an original implementation is available, the author, and general information about the model. Any copyright should be attributed here. General information about training procedures, parameters, and important disclaimers can also be mentioned in this section.", key=persist('model_description'))
|
38 |
+
|
39 |
+
left, right = st.columns([2,6], gap="small")
|
40 |
+
with left:
|
41 |
+
st.write("\n")
|
42 |
+
st.write("\n")
|
43 |
+
st.markdown('### Developed By:')
|
44 |
+
st.write("\n")
|
45 |
+
st.write("\n")
|
46 |
+
#st.write("\n")
|
47 |
+
st.markdown('### Shared By [optional]:')
|
48 |
+
st.write("\n")
|
49 |
+
st.write("\n")
|
50 |
+
st.markdown('### Model Type:')
|
51 |
+
st.write("\n")
|
52 |
+
st.write("\n")
|
53 |
+
st.markdown('### License:')
|
54 |
+
with right:
|
55 |
+
st.write("\n")
|
56 |
+
st.write("\n")
|
57 |
+
st.text_input("",help="Developed By work", key=persist("Model_developers"))
|
58 |
+
st.write("\n")
|
59 |
+
st.write("\n")
|
60 |
+
|
61 |
+
st.text_input("",help="Shared By work",key=persist("shared_by"))
|
62 |
+
st.text_input("",help="Model Type work")
|
63 |
+
#st.write("\n")
|
64 |
+
st.selectbox("",[""] + list(license_map.values()), help="Licenses work", key=persist("license"))
|
65 |
+
|
66 |
+
|
67 |
+
|
68 |
+
|
69 |
+
if __name__ == '__main__':
|
70 |
+
load_widget_state()
|
71 |
+
main()
|
viewCardProgress(old).py
ADDED
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from persist import persist, load_widget_state
|
3 |
+
from modelcards import CardData, ModelCard
|
4 |
+
from huggingface_hub import create_repo
|
5 |
+
|
6 |
+
|
7 |
+
def is_float(value):
|
8 |
+
try:
|
9 |
+
float(value)
|
10 |
+
return True
|
11 |
+
except:
|
12 |
+
return False
|
13 |
+
|
14 |
+
def get_card():
|
15 |
+
languages=st.session_state.languages or None
|
16 |
+
license=st.session_state.license or None
|
17 |
+
library_name = st.session_state.library_name or None
|
18 |
+
tags= [x.strip() for x in st.session_state.tags.split(',') if x.strip()]
|
19 |
+
tags.append("autogenerated-modelcard")
|
20 |
+
datasets= [x.strip() for x in st.session_state.datasets.split(',') if x.strip()] or None
|
21 |
+
metrics=st.session_state.metrics or None
|
22 |
+
model_name = st.session_state.model_name or None
|
23 |
+
model_description = st.session_state.model_description or None
|
24 |
+
#Model_details_text = st.session_state.Model_details_text or None
|
25 |
+
#Model_how_to = st.session_state.Model_how_to or None
|
26 |
+
authors = st.session_state.authors or None
|
27 |
+
paper_url = st.session_state.paper_url or None
|
28 |
+
github_url = st.session_state.github_url or None
|
29 |
+
bibtex_citations = st.session_state.bibtex_citations or None
|
30 |
+
emissions = float(st.session_state.emissions) if is_float(st.session_state.emissions) else None # BUG
|
31 |
+
|
32 |
+
# Handle any warnings...
|
33 |
+
do_warn = False
|
34 |
+
warning_msg = "Warning: The following fields are required but have not been filled in: "
|
35 |
+
if not languages:
|
36 |
+
warning_msg += "\n- Languages"
|
37 |
+
do_warn = True
|
38 |
+
if not license:
|
39 |
+
warning_msg += "\n- License"
|
40 |
+
do_warn = True
|
41 |
+
if do_warn:
|
42 |
+
st.error(warning_msg)
|
43 |
+
st.stop()
|
44 |
+
|
45 |
+
# Generate and display card
|
46 |
+
card_data = CardData(
|
47 |
+
language=languages,
|
48 |
+
license=license,
|
49 |
+
library_name=library_name,
|
50 |
+
tags=tags,
|
51 |
+
datasets=datasets,
|
52 |
+
metrics=metrics,
|
53 |
+
)
|
54 |
+
if emissions:
|
55 |
+
card_data.co2_eq_emissions = {'emissions': emissions}
|
56 |
+
|
57 |
+
card = ModelCard.from_template(
|
58 |
+
card_data,
|
59 |
+
template_path='template.md',
|
60 |
+
model_id=model_name,
|
61 |
+
# Template kwargs:
|
62 |
+
model_description=model_description,
|
63 |
+
license=license,
|
64 |
+
authors=authors,
|
65 |
+
paper_url=paper_url,
|
66 |
+
github_url=github_url,
|
67 |
+
bibtex_citations=bibtex_citations,
|
68 |
+
emissions=emissions
|
69 |
+
)
|
70 |
+
return card
|
71 |
+
|
72 |
+
|
73 |
+
def main():
|
74 |
+
|
75 |
+
card = get_card()
|
76 |
+
card.save('current_card.md')
|
77 |
+
view_raw = st.sidebar.checkbox("View Raw")
|
78 |
+
if view_raw:
|
79 |
+
st.text(card)
|
80 |
+
else:
|
81 |
+
st.markdown(card.text, unsafe_allow_html=True)
|
82 |
+
|
83 |
+
with st.sidebar:
|
84 |
+
with st.form("Upload to π€ Hub"):
|
85 |
+
st.markdown("Use a token with write access from [here](https://hf.co/settings/tokens)")
|
86 |
+
token = st.text_input("Token", type='password')
|
87 |
+
repo_id = st.text_input("Repo ID")
|
88 |
+
submit = st.form_submit_button('Upload to π€ Hub')
|
89 |
+
|
90 |
+
if submit:
|
91 |
+
if len(repo_id.split('/')) == 2:
|
92 |
+
repo_url = create_repo(repo_id, exist_ok=True, token=token)
|
93 |
+
card.push_to_hub(repo_id, token=token)
|
94 |
+
st.success(f"Pushed the card to the repo [here]({repo_url}!")
|
95 |
+
else:
|
96 |
+
st.error("Repo ID invalid. It should be username/repo-name. For example: nateraw/food")
|
97 |
+
|
98 |
+
|
99 |
+
if __name__ == "__main__":
|
100 |
+
load_widget_state()
|
101 |
+
main()
|