File size: 2,684 Bytes
ed0dca2
a40632d
bdf3e70
b1cf10f
 
bdf3e70
ed0dca2
b1cf10f
 
 
 
a40632d
b1cf10f
 
 
a40632d
 
6f701e2
a40632d
bdf3e70
ed0dca2
1e282db
a40632d
 
1e282db
a40632d
 
 
 
 
6f701e2
bd3b81a
a40632d
bd3b81a
6f701e2
 
6543b60
 
6f701e2
cc1e604
 
5fbd6e0
 
 
 
 
 
cc1e604
6f701e2
cc1e604
 
 
 
 
6f701e2
a40632d
 
 
bd3b81a
 
a40632d
 
 
 
 
 
6f701e2
a40632d
0bb2563
ed0dca2
 
1a77461
6f701e2
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
##################################### Imports ######################################
# Generic imports
import gradio as gr
import json
import os

########################### Global objects and functions ###########################

def get_json_cfg():
    """Retrieve configuration file"""
    config_path = os.getenv('CONFIG_PATH')
    with open(config_path, 'r') as file:
        config = json.load(file)
    return config

conf = get_json_cfg()

def greet(model_name, prompt_template, name, dataset):
    return f"Hello {name}!! Using model: {model_name} with template: {prompt_template}"

##################################### App UI #######################################
with gr.Blocks() as demo:

    ##### Title Block #####
    gr.Markdown("# Instruction Tuning with Unsloth")

    ##### Model Inputs #####

    # Select Model
    model_name = gr.Dropdown(label="Model", choices=conf['model']['choices'], value="gpt2")
    # Prompt template
    prompt_template = gr.Textbox(label="Prompt Template", value="Instruction: {0}\nOutput: {1}")
    # Prompt Input
    name_input = gr.Textbox(label="Your Name")
    # Dataset choice
    dataset_choice = gr.Radio(label="Choose Dataset", choices=["Predefined Dataset", "Upload Your Own"], value="Predefined Dataset")
    dataset_predefined = gr.Dropdown(label="Predefined Dataset", choices=['1', '2', '3'], value='1', visible=True)
    dataset_upload = gr.File(label="Upload Dataset", visible=False)
    
    # Function to update visibility based on user choice
    def update_dataset_visibility(choice):
        if choice == "Predefined Dataset":
            dataset_predefined.visible = True
            dataset_upload.visible = False
        elif choice == "Upload Your Own":
            dataset_predefined.visible = False
            dataset_upload.visible = True
        return dataset_predefined, dataset_upload  # Return both components
    
    # Initial call to set visibility based on default choice
    update_dataset_visibility(dataset_choice.value)
    
    # Update visibility based on user choice
    dataset_choice.change(update_dataset_visibility, inputs=[dataset_choice], outputs=[dataset_predefined, dataset_upload])
    
    ##### Model Outputs #####

    # Text output
    output = gr.Textbox(label="Output")
    
    ##### Execution #####

    # Setup button
    tune_btn = gr.Button("Start Fine Tuning")
    # Execute button
    tune_btn.click(fn=greet, 
                   inputs=[model_name, prompt_template, name_input, dataset_predefined],
                   outputs=output)

##################################### Launch #######################################

if __name__ == "__main__":
    demo.launch()