|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import marimo |
|
|
|
__generated_with = "0.11.5" |
|
app = marimo.App(width="medium") |
|
|
|
|
|
@app.cell |
|
def _(): |
|
import marimo as mo |
|
return (mo,) |
|
|
|
|
|
@app.cell(hide_code=True) |
|
def _(mo): |
|
default_model = mo.query_params().get("model") or "" |
|
model_repo = mo.ui.text( |
|
label="Model repo", |
|
full_width=True, |
|
value=default_model, |
|
placeholder="e.g. gpt2, bert-base-uncased", |
|
).form(bordered=False) |
|
model_repo |
|
return default_model, model_repo |
|
|
|
|
|
@app.cell(hide_code=True) |
|
def _(mo): |
|
mo.md( |
|
r""" |
|
Interactively try out AI models hosted on HuggingFace! |
|
|
|
Some popular models to try: |
|
|
|
- **Feature Extraction**: `julien-c/distilbert-feature-extraction` |
|
- **Text to Speech**: `julien-c/ljspeech_tts_train_tacotron2_raw_phn_tacotron_g2p_en_no_space_train` |
|
- **Text to Image**: `runwayml/stable-diffusion-v1-5` |
|
""" |
|
) |
|
return |
|
|
|
|
|
@app.cell(hide_code=True) |
|
def _(mo): |
|
mo.accordion( |
|
{ |
|
"View more": mo.md(""" |
|
_Audio Models_ |
|
|
|
- **Audio Classification**: `ehcalabres/wav2vec2-lg-xlsr-en-speech-emotion-recognition` |
|
- **Audio to Audio**: `facebook/xm_transformer_sm_all-en` |
|
- **Speech Recognition**: `facebook/wav2vec2-base-960h` |
|
|
|
_Image Models_ |
|
|
|
- **Image Classification**: `google/vit-base-patch16-224` |
|
- **Image to Text**: `Salesforce/blip-image-captioning-base` |
|
- **Object Detection**: `microsoft/table-transformer-detection` |
|
|
|
_Text Models_ |
|
|
|
- **Fill Mask**: `distilbert/distilbert-base-uncased` |
|
- **Zero-shot Classification**: `facebook/bart-large-mnli` |
|
- **Sentence Similarity**: `sentence-transformers/all-MiniLM-L6-v2` |
|
""") |
|
} |
|
) |
|
return |
|
|
|
|
|
@app.cell(hide_code=True) |
|
def _(mo): |
|
token = mo.ui.text( |
|
label="HuggingFace token (optional)", |
|
kind="password", |
|
).form(bordered=False) |
|
|
|
mo.accordion({"Enter your HuggingFace token (optional)": token}) |
|
return (token,) |
|
|
|
|
|
@app.cell(hide_code=True) |
|
def _(mo, model_repo, molabs, token): |
|
if not model_repo.value: |
|
mo.stop("Please enter a model name") |
|
|
|
model_path = "models/" + model_repo.value.replace("models/", "") |
|
model = molabs.huggingface.load( |
|
model_path, hf_token=token.value if token.value else None |
|
) |
|
return model, model_path |
|
|
|
|
|
@app.cell(hide_code=True) |
|
def _(mo, model): |
|
mo.stop(not model) |
|
|
|
mo.md( |
|
f""" |
|
### Example inputs |
|
Try these sample inputs with the model: |
|
|
|
{mo.as_html(model.examples)} |
|
""" |
|
) |
|
return |
|
|
|
|
|
@app.cell(hide_code=True) |
|
def _(mo, model): |
|
inputs = model.inputs |
|
mo.vstack( |
|
[ |
|
mo.md("### Model Inputs"), |
|
mo.md("_Submit inputs below to run inference_ 👇"), |
|
inputs, |
|
], |
|
) |
|
return (inputs,) |
|
|
|
|
|
@app.cell(hide_code=True) |
|
def _(inputs, mo, model): |
|
if inputs.value is None: |
|
mo.stop("Please provide input values") |
|
|
|
with mo.status.spinner("Running inference..."): |
|
output = model.inference_function(inputs.value) |
|
mo.output.replace(mo.vstack([mo.md("### Results"), output])) |
|
return (output,) |
|
|
|
|
|
@app.cell |
|
def _(): |
|
import sys |
|
import marimo_labs as molabs |
|
return molabs, sys |
|
|
|
|
|
if __name__ == "__main__": |
|
app.run() |
|
|