README / app.py
NodeNester's picture
Super-squash branch 'main' using huggingface_hub
78c28fc
Raw
History Blame Contribute Delete
2.31 kB
import os
import torch
import gradio as gr
import sentencepiece as spm
from huggingface_hub import hf_hub_download
from modeling_flash import NordicFlash
REPO = "NodeNestor/bifrost-flash-430m" # private — pulled with the HF_TOKEN space secret
TOKEN = os.environ.get("HF_TOKEN")
print("Downloading Bifrost Flash assets…", flush=True)
weights = hf_hub_download(REPO, "model.safetensors", token=TOKEN)
spm_path = hf_hub_download(REPO, "nordic_unigram_65k.model", token=TOKEN)
sp = spm.SentencePieceProcessor(); sp.load(spm_path)
model = NordicFlash.from_checkpoint(weights, device="cpu", dtype=torch.float32)
print("Model ready.", flush=True)
TARGETS = {
"Swedish": "sv", "Danish": "da", "Norwegian Bokmål": "nb",
"Norwegian Nynorsk": "nn", "Finnish": "fi", "Icelandic": "is", "English": "en",
}
LID = {"en": 65000, "sv": 65001, "da": 65002, "nb": 65003, "nn": 65004, "fi": 65005, "is": 65006}
def translate(text, target):
text = (text or "").strip()
if not text:
return ""
ids = sp.encode(text, out_type=int)[:1000]
out = model.translate(ids, LID[TARGETS[target]], max_new=128)
return sp.decode(out)
with gr.Blocks(title="Bifrost — Nordic translation") as demo:
gr.Markdown(
"# 🌉 Bifrost Flash 430M\n"
"Open **Nordic ↔ English** translation — Swedish · Danish · Norwegian (Bokmål/Nynorsk) · "
"Finnish · Icelandic ↔ English. Source language is auto-detected; pick a target.\n\n"
"*The 430M distilled model, running on CPU. Part of [NodeNestor](https://nodenestor.com).*"
)
with gr.Row():
inp = gr.Textbox(label="Text", lines=4, placeholder="Hello, how are you today?")
out = gr.Textbox(label="Translation", lines=4)
target = gr.Dropdown(list(TARGETS), value="Swedish", label="Translate into")
btn = gr.Button("Translate", variant="primary")
btn.click(translate, [inp, target], out)
inp.submit(translate, [inp, target], out)
gr.Examples(
[["Hello, how are you today?", "Swedish"],
["The weather is nice and the sun is shining.", "Danish"],
["Vädret är fint idag.", "English"],
["God morgen, min venn.", "Finnish"]],
[inp, target],
)
demo.queue(max_size=16).launch(server_name="0.0.0.0", server_port=7860)