Add some models
Browse files- app.py +45 -8
- generator.py +16 -17
- requirements.txt +2 -1
app.py
CHANGED
|
@@ -12,23 +12,59 @@ TRANSLATION_NL_TO_EN = "translation_en_to_nl"
|
|
| 12 |
|
| 13 |
GENERATOR_LIST = [
|
| 14 |
{
|
| 15 |
-
"model_name": "
|
| 16 |
-
"desc": "
|
| 17 |
"task": TRANSLATION_NL_TO_EN,
|
| 18 |
-
"split_sentences":
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
},
|
| 20 |
{
|
| 21 |
-
"model_name": "yhavinga/longt5-local-eff-large-nl8-voc8k-ddwn-512beta-
|
| 22 |
-
"desc": "longT5 large nl8 512beta/512l en->nl",
|
| 23 |
"task": TRANSLATION_NL_TO_EN,
|
| 24 |
"split_sentences": False,
|
| 25 |
},
|
| 26 |
{
|
| 27 |
-
"model_name": "yhavinga/
|
| 28 |
-
"desc": "
|
| 29 |
"task": TRANSLATION_NL_TO_EN,
|
| 30 |
"split_sentences": True,
|
| 31 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
]
|
| 33 |
|
| 34 |
|
|
@@ -64,7 +100,7 @@ It was a quite young girl, unknown to me, with a hood over her head, and with la
|
|
| 64 |
|
| 65 |
βMy father is very ill,β she said without a word of introduction. βThe nurse is frightened. Could you come in and help?β"""
|
| 66 |
st.session_state["text"] = st.text_area(
|
| 67 |
-
"Enter text", st.session_state.prompt_box, height=
|
| 68 |
)
|
| 69 |
num_beams = st.sidebar.number_input("Num beams", min_value=1, max_value=10, value=1)
|
| 70 |
num_beam_groups = st.sidebar.number_input(
|
|
@@ -83,6 +119,7 @@ and the [Huggingface text generation interface doc](https://huggingface.co/trans
|
|
| 83 |
"num_beams": num_beams,
|
| 84 |
"num_beam_groups": num_beam_groups,
|
| 85 |
"length_penalty": length_penalty,
|
|
|
|
| 86 |
}
|
| 87 |
|
| 88 |
if st.button("Run"):
|
|
|
|
| 12 |
|
| 13 |
GENERATOR_LIST = [
|
| 14 |
{
|
| 15 |
+
"model_name": "Helsinki-NLP/opus-mt-en-nl",
|
| 16 |
+
"desc": "Opus MT en->nl",
|
| 17 |
"task": TRANSLATION_NL_TO_EN,
|
| 18 |
+
"split_sentences": True,
|
| 19 |
+
},
|
| 20 |
+
{
|
| 21 |
+
"model_name": "yhavinga/t5-small-24L-ccmatrix-multi",
|
| 22 |
+
"desc": "T5 small nl24 ccmatrix en->nl",
|
| 23 |
+
"task": TRANSLATION_NL_TO_EN,
|
| 24 |
+
"split_sentences": True,
|
| 25 |
},
|
| 26 |
{
|
| 27 |
+
"model_name": "yhavinga/longt5-local-eff-large-nl8-voc8k-ddwn-512beta-512l-nedd-256ccmatrix-en-nl",
|
| 28 |
+
"desc": "longT5 large nl8 256cc/512beta/512l en->nl",
|
| 29 |
"task": TRANSLATION_NL_TO_EN,
|
| 30 |
"split_sentences": False,
|
| 31 |
},
|
| 32 |
{
|
| 33 |
+
"model_name": "yhavinga/byt5-small-ccmatrix-en-nl",
|
| 34 |
+
"desc": "ByT5 small ccmatrix en->nl",
|
| 35 |
"task": TRANSLATION_NL_TO_EN,
|
| 36 |
"split_sentences": True,
|
| 37 |
},
|
| 38 |
+
# {
|
| 39 |
+
# "model_name": "yhavinga/t5-eff-large-8l-nedd-en-nl",
|
| 40 |
+
# "desc": "T5 eff large nl8 en->nl",
|
| 41 |
+
# "task": TRANSLATION_NL_TO_EN,
|
| 42 |
+
# "split_sentences": True,
|
| 43 |
+
# },
|
| 44 |
+
# {
|
| 45 |
+
# "model_name": "yhavinga/t5-base-36L-ccmatrix-multi",
|
| 46 |
+
# "desc": "T5 base nl36 ccmatrix en->nl",
|
| 47 |
+
# "task": TRANSLATION_NL_TO_EN,
|
| 48 |
+
# "split_sentences": True,
|
| 49 |
+
# },
|
| 50 |
+
# {
|
| 51 |
+
# "model_name": "yhavinga/longt5-local-eff-large-nl8-voc8k-ddwn-512beta-512-nedd-en-nl",
|
| 52 |
+
# "desc": "longT5 large nl8 512beta/512l en->nl",
|
| 53 |
+
# "task": TRANSLATION_NL_TO_EN,
|
| 54 |
+
# "split_sentences": False,
|
| 55 |
+
# },
|
| 56 |
+
# {
|
| 57 |
+
# "model_name": "yhavinga/t5-base-36L-nedd-x-en-nl-300",
|
| 58 |
+
# "desc": "T5 base 36L nedd en->nl 300",
|
| 59 |
+
# "task": TRANSLATION_NL_TO_EN,
|
| 60 |
+
# "split_sentences": True,
|
| 61 |
+
# },
|
| 62 |
+
# {
|
| 63 |
+
# "model_name": "yhavinga/long-t5-local-small-ccmatrix-en-nl",
|
| 64 |
+
# "desc": "longT5 small ccmatrix en->nl",
|
| 65 |
+
# "task": TRANSLATION_NL_TO_EN,
|
| 66 |
+
# "split_sentences": True,
|
| 67 |
+
# },
|
| 68 |
]
|
| 69 |
|
| 70 |
|
|
|
|
| 100 |
|
| 101 |
βMy father is very ill,β she said without a word of introduction. βThe nurse is frightened. Could you come in and help?β"""
|
| 102 |
st.session_state["text"] = st.text_area(
|
| 103 |
+
"Enter text", st.session_state.prompt_box, height=250
|
| 104 |
)
|
| 105 |
num_beams = st.sidebar.number_input("Num beams", min_value=1, max_value=10, value=1)
|
| 106 |
num_beam_groups = st.sidebar.number_input(
|
|
|
|
| 119 |
"num_beams": num_beams,
|
| 120 |
"num_beam_groups": num_beam_groups,
|
| 121 |
"length_penalty": length_penalty,
|
| 122 |
+
"early_stopping": True,
|
| 123 |
}
|
| 124 |
|
| 125 |
if st.button("Run"):
|
generator.py
CHANGED
|
@@ -30,9 +30,19 @@ def load_model(model_name):
|
|
| 30 |
if tokenizer.pad_token is None:
|
| 31 |
print("Adding pad_token to the tokenizer")
|
| 32 |
tokenizer.pad_token = tokenizer.eos_token
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
if device != -1:
|
| 37 |
model.to(f"cuda:{device}")
|
| 38 |
return tokenizer, model
|
|
@@ -66,24 +76,13 @@ class Generator:
|
|
| 66 |
for key in self.gen_kwargs:
|
| 67 |
if key in self.model.config.__dict__:
|
| 68 |
self.gen_kwargs[key] = self.model.config.__dict__[key]
|
| 69 |
-
print(
|
| 70 |
-
"Setting",
|
| 71 |
-
key,
|
| 72 |
-
"to",
|
| 73 |
-
self.gen_kwargs[key],
|
| 74 |
-
"for model",
|
| 75 |
-
self.model_name,
|
| 76 |
-
)
|
| 77 |
try:
|
| 78 |
if self.task in self.model.config.task_specific_params:
|
| 79 |
task_specific_params = self.model.config.task_specific_params[
|
| 80 |
self.task
|
| 81 |
]
|
| 82 |
-
|
| 83 |
-
task_specific_params["prefix"]
|
| 84 |
-
if "prefix" in task_specific_params
|
| 85 |
-
else ""
|
| 86 |
-
)
|
| 87 |
for key in self.gen_kwargs:
|
| 88 |
if key in task_specific_params:
|
| 89 |
self.gen_kwargs[key] = task_specific_params[key]
|
|
@@ -95,7 +94,7 @@ class Generator:
|
|
| 95 |
text = re.sub(r"\n{2,}", "\n", text)
|
| 96 |
generate_kwargs = {**self.gen_kwargs, **generate_kwargs}
|
| 97 |
|
| 98 |
-
# if there are newlines in the text, and the model needs line-splitting, split the text
|
| 99 |
if re.search(r"\n", text) and self.split_sentences:
|
| 100 |
lines = text.splitlines()
|
| 101 |
translated = [self.generate(line, **generate_kwargs)[0] for line in lines]
|
|
|
|
| 30 |
if tokenizer.pad_token is None:
|
| 31 |
print("Adding pad_token to the tokenizer")
|
| 32 |
tokenizer.pad_token = tokenizer.eos_token
|
| 33 |
+
try:
|
| 34 |
+
model = AutoModelForSeq2SeqLM.from_pretrained(
|
| 35 |
+
model_name, use_auth_token=get_access_token()
|
| 36 |
+
)
|
| 37 |
+
except EnvironmentError:
|
| 38 |
+
try:
|
| 39 |
+
model = AutoModelForSeq2SeqLM.from_pretrained(
|
| 40 |
+
model_name, from_flax=True, use_auth_token=get_access_token()
|
| 41 |
+
)
|
| 42 |
+
except EnvironmentError:
|
| 43 |
+
model = AutoModelForSeq2SeqLM.from_pretrained(
|
| 44 |
+
model_name, from_tf=True, use_auth_token=get_access_token()
|
| 45 |
+
)
|
| 46 |
if device != -1:
|
| 47 |
model.to(f"cuda:{device}")
|
| 48 |
return tokenizer, model
|
|
|
|
| 76 |
for key in self.gen_kwargs:
|
| 77 |
if key in self.model.config.__dict__:
|
| 78 |
self.gen_kwargs[key] = self.model.config.__dict__[key]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 79 |
try:
|
| 80 |
if self.task in self.model.config.task_specific_params:
|
| 81 |
task_specific_params = self.model.config.task_specific_params[
|
| 82 |
self.task
|
| 83 |
]
|
| 84 |
+
if "prefix" in task_specific_params:
|
| 85 |
+
self.prefix = task_specific_params["prefix"]
|
|
|
|
|
|
|
|
|
|
| 86 |
for key in self.gen_kwargs:
|
| 87 |
if key in task_specific_params:
|
| 88 |
self.gen_kwargs[key] = task_specific_params[key]
|
|
|
|
| 94 |
text = re.sub(r"\n{2,}", "\n", text)
|
| 95 |
generate_kwargs = {**self.gen_kwargs, **generate_kwargs}
|
| 96 |
|
| 97 |
+
# if there are newlines in the text, and the model needs line-splitting, split the text and recurse
|
| 98 |
if re.search(r"\n", text) and self.split_sentences:
|
| 99 |
lines = text.splitlines()
|
| 100 |
translated = [self.generate(line, **generate_kwargs)[0] for line in lines]
|
requirements.txt
CHANGED
|
@@ -5,9 +5,10 @@ protobuf<3.20
|
|
| 5 |
streamlit>=1.4.0,<=1.10.0
|
| 6 |
torch
|
| 7 |
transformers>=4.13.0
|
| 8 |
-
|
| 9 |
psutil
|
| 10 |
jax[cuda]==0.3.16
|
| 11 |
chex>=0.1.4
|
| 12 |
##jaxlib==0.1.67
|
| 13 |
flax>=0.5.3
|
|
|
|
|
|
| 5 |
streamlit>=1.4.0,<=1.10.0
|
| 6 |
torch
|
| 7 |
transformers>=4.13.0
|
| 8 |
+
langdetect
|
| 9 |
psutil
|
| 10 |
jax[cuda]==0.3.16
|
| 11 |
chex>=0.1.4
|
| 12 |
##jaxlib==0.1.67
|
| 13 |
flax>=0.5.3
|
| 14 |
+
sentencepiece
|