muellerzr's picture
muellerzr HF staff
Adding tabs for different set of Accelerate's features and content for large scale training features (#2)
b91e31d
raw
history blame
5.13 kB
import gradio as gr
from markup import highlight, get_text
from template import get_templates
templates = get_templates()
def change(inp, textbox):
"""Based on an `inp`, render and highlight the appropriate code sample.
Args:
inp (`str`):
The input button from the interface.
textbox (`str`):
The textbox specifying the tab name from the interface.
Returns:
`tuple`: A tuple of the highlighted code diff, and the title for the section.
"""
if textbox == "base":
code, explanation, docs = get_text(inp, textbox)
if inp == "Basic":
return (highlight(code), "## Accelerate Code (Base Integration)", explanation, docs)
elif inp == "Calculating Metrics":
return (highlight(code), f"## Accelerate Code ({inp})", explanation, docs)
else:
return (highlight(code), f"## Accelerate Code ({inp})", explanation, docs)
elif textbox == "large_scale_training":
config, code, explanation, docs = get_text(inp, textbox)
return (highlight(config), highlight(code), f"## Accelerate Code ({inp})", explanation, docs)
default = change("Basic", "base")
def base_features(textbox):
# textbox.value = "base"
inp = gr.Radio(
["Basic", "Calculating Metrics", "Checkpointing", "Experiment Tracking", "Gradient Accumulation"],
label="Select a feature you would like to integrate",
value="Basic",
)
with gr.Row():
with gr.Column():
feature = gr.Markdown("## Accelerate Code")
out = gr.Markdown(default[0])
with gr.Row():
with gr.Column():
gr.Markdown("## Explanation")
explanation = gr.Markdown(default[2])
with gr.Row():
with gr.Column():
gr.Markdown("## Documentation Links")
docs = gr.Markdown(default[3])
inp.change(fn=change, inputs=[inp, textbox], outputs=[out, feature, explanation, docs])
def large_scale_training(textbox):
# textbox.value = "large_scale_training"
inp = gr.Radio(
["Multi GPU", "Multi Node Multi GPU", "AWS SageMaker", "DeepSpeed", "PyTorch FSDP", "Megatron-LM"],
label="Select a feature you would like to integrate",
value="Basic",
)
with gr.Row():
with gr.Column():
feature = gr.Markdown("## Accelerate Config")
config = gr.Markdown("")
with gr.Row():
with gr.Column():
feature = gr.Markdown("## Accelerate Code")
out = gr.Markdown("")
with gr.Row():
with gr.Column():
gr.Markdown("## Explanation")
explanation = gr.Markdown("")
with gr.Row():
with gr.Column():
gr.Markdown("## Documentation Links")
docs = gr.Markdown("")
inp.change(fn=change, inputs=[inp, textbox], outputs=[config, out, feature, explanation, docs])
# def big_model_inference():
# inp = gr.Radio(
# ["Accelerate's Big Model Inference",], # "DeepSpeed ZeRO Stage-3 Offload"
# label="Select a feature you would like to integrate",
# value="Basic",
# )
# with gr.Row():
# with gr.Column():
# feature = gr.Markdown("## Accelerate Code")
# out = gr.Markdown(default[0])
# with gr.Row():
# with gr.Column():
# gr.Markdown(default[1])
# explanation = gr.Markdown(default[2])
# with gr.Row():
# with gr.Column():
# gr.Markdown("## Documentation Links")
# docs = gr.Markdown(default[3])
# inp.change(fn=change, inputs=[inp, "big_model_inference"], outputs=[out, feature, explanation, docs])
# def notebook_launcher():
# inp = gr.Radio(
# ["Colab GPU", "Colab TPU", "Kaggle GPU", "Kaggle Multi GPU", "Kaggle TPU", "Multi GPU VMs"],
# label="Select a feature you would like to integrate",
# value="Basic",
# )
# with gr.Row():
# with gr.Column():
# feature = gr.Markdown("## Accelerate Code")
# out = gr.Markdown(default[0])
# with gr.Row():
# with gr.Column():
# gr.Markdown(default[1])
# explanation = gr.Markdown(default[2])
# with gr.Row():
# with gr.Column():
# gr.Markdown("## Documentation Links")
# docs = gr.Markdown(default[3])
# inp.change(fn=change, inputs=[inp, "notebook_launcher"], outputs=[out, feature, explanation, docs])
with gr.Blocks() as demo:
with gr.Tabs():
with gr.TabItem("Simplify your code and improve efficieny"):
textbox = gr.Textbox(label="tab_name", visible=False, value="base")
base_features(textbox)
with gr.TabItem("Large Scale Training"):
textbox = gr.Textbox(label="tab_name", visible=False, value="large_scale_training")
large_scale_training(textbox)
with gr.TabItem("Big Model Inference"):
# big_model_inference()
pass
with gr.TabItem("Notebook Launcher Intergation"):
# notebook_launcher()
pass
demo.launch()