File size: 1,432 Bytes
ec9433e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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()