import gradio as gr with gr.Blocks() as app: gr.Markdown("# Some calculs about LLMs") def calculate_flops(n_params, n_tokens, n_epochs): n_params *= 1e9 n_tokens *= 1e12 flops = 6 * n_params * n_tokens * n_epochs return "%e"%flops, "%e"%flops def calculate_time(num_flops, num_flops_gpu): num_flops_gpu *= 1e12 num_flops = float(num_flops) time_h = num_flops / num_flops_gpu / 3600 time_days = time_h / 24 return f"{round(time_h, 2)} hours or {round(time_days, 2)} days" gr.Markdown("## FLOPs calculation") with gr.Row(): num_params = gr.Number(label="Number of Parameters (in Billion)", value=1) num_tokens = gr.Number(label="Number of Tokens (in Terra)", value=1) num_epochs = gr.Number(label="Number of Epochs", value=1) button_flops = gr.Button(value="calculate") flops = gr.Textbox(label="flops") gr.Markdown("## training time calculation") with gr.Row(): num_flops = gr.Number(label="nbr Model FLOPs") num_flops_gpu = gr.Number(label="nbr GPU TFLOPs", value=1) button_time = gr.Button(value="calculate") time = gr.Textbox(label="time") button_flops.click(calculate_flops, inputs=[num_params, num_tokens, num_epochs], outputs=[flops, num_flops]) button_time.click(calculate_time, inputs=[num_flops, num_flops_gpu], outputs=time) app.launch()