File size: 3,145 Bytes
ed0dca2
a40632d
bdf3e70
 
30da7cc
 
9e53c43
b1cf10f
30da7cc
b1cf10f
a40632d
 
42cd34a
30da7cc
42cd34a
30da7cc
 
 
 
 
 
 
 
 
 
 
42cd34a
30da7cc
42cd34a
bdf3e70
ed0dca2
52589e7
17dfda2
 
c59143e
17dfda2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8c9400b
17dfda2
 
 
 
 
8c9400b
 
17dfda2
 
 
 
 
 
52589e7
 
 
 
17dfda2
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
75
76
77
78
79
80
81
82
83
84
85
86
##################################### Imports ######################################
# Generic imports
import gradio as gr

# Module imports
from utilities.setup import get_json_cfg
from utilities.templates import prompt_template

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

conf = get_json_cfg()

def textbox_visibility(radio):
    value = radio
    if value == "Hugging Face Hub Dataset":
        return gr.Dropdown(visible=bool(1))
    else:
        return gr.Dropdown(visible=bool(0))

def upload_visibility(radio):
    value = radio
    if value == "Upload Your Own":
        return gr.UploadButton(visible=bool(1)) #make it visible
    else:
        return gr.UploadButton(visible=bool(0))

def greet(model_name, inject_prompt, dataset):
    """The model call"""
    return f"Hello!! Using model: {model_name} with template: {inject_prompt}"

##################################### App UI #######################################

def main():
    with gr.Blocks() as demo:
    
        ##### Title Block #####
        gr.Markdown("# Instruction Tuning with Unsloth")
    
        ##### Model Inputs #####
    
        # Select Model
        modelnames = conf['model']['choices']
        model_name = gr.Dropdown(label="Supported Models", 
                                 choices=modelnames, 
                                 value=modelnames[0])
        # Prompt template
        inject_prompt = gr.Textbox(label="Prompt Template", 
                                     value=prompt_template())
        # Dataset choice
        dataset_choice = gr.Radio(label="Choose Dataset", 
                                  choices=["Hugging Face Hub Dataset", "Upload Your Own"], 
                                  value="Hugging Face Hub Dataset")
        dataset_predefined = gr.Textbox(label="Hugging Face Hub Dataset", 
                                        value='yahma/alpaca-cleaned', 
                                        visible=True)
        dataset_upload = gr.UploadButton(label="Upload Dataset (csv, jsonl, or txt)", 
                                         file_types=[".csv",".jsonl", ".txt"], 
                                         visible=False)
        dataset_choice.change(textbox_visibility, 
                              dataset_choice, 
                              dataset_predefined)
        dataset_choice.change(upload_visibility, 
                              dataset_choice, 
                              dataset_upload)
        # Hyperparameters (allow selection, but hide in accordion.)
        # gr.Accordion('label')
    

        
        ##### Execution #####
    
        # Setup button
        tune_btn = gr.Button("Start Fine Tuning")
        # Text output (for now)
        output = gr.Textbox(label="Output") 
        # Execute button
        tune_btn.click(fn=greet, 
                       inputs=[model_name, inject_prompt, dataset_predefined],
                       outputs=output)
        # Launch baby
        demo.launch()

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

if __name__ == "__main__":
    main()