Downloading a binary file

Hi,

I’m trying to let a user download a Fasttext model after it’s been trained. As far as I’m aware, I have to save it as a .bin file first (using model.save_model() as per Fasttext’s documentation). I can’t figure out how to get it to download from here, using the documentation for the download button.

Hi @richlaw1986 :wave:

Happy to help! As you’ve mentioned, a trained Fasttext model must be saved to a .bin file.

Once saved, it can be downloaded in a similar fashion to the last example in the st.download_button docs:

import streamlit as st
import fasttext

# Cache trained model
@st.experimental_singleton
def get_model():
    model = fasttext.train_supervised(input="cooking.train")
    return model

# Save trained model to file
def save_model(model, path="saved_model.bin"):
    model.save_model(path)

model = get_model()
save_model(model, path="saved_model.bin")

# Download saved trained model
with open("saved_model.bin", "rb") as fp:
    btn = st.download_button(
        label="Download trained fasttext model",
        data=fp,
        file_name="fasttext_model.bin" # Any file name
    )

fasttext-download

Example app + repo

Happy Streamlit-ing! :balloon:
Snehan

Thanks so much!

1 Like