|
import gradio as gr |
|
import yaml |
|
from gradio_huggingfacehub_search import HuggingfaceHubSearch |
|
|
|
MARKDOWN_DESCRIPTION = """ |
|
# mergekit config.yaml generator |
|
|
|
GUI to template a YAML configuration file for mergekit, which you can then copy/paste into [mergekit-gui](https://huggingface.co/spaces/arcee-ai/mergekit-gui) 🔥 |
|
""" |
|
|
|
DEFAULT_PARAMETERS = """ |
|
t: |
|
- filter: self_attn |
|
value: [0, 0.5, 0.3, 0.7, 1] |
|
- filter: mlp |
|
value: [1, 0.5, 0.7, 0.3, 0] |
|
- value: 0.5 |
|
""" |
|
|
|
|
|
def create_config_yaml( |
|
model1, |
|
model1_layers, |
|
model2, |
|
model2_layers, |
|
merge_method, |
|
base_model, |
|
parameters, |
|
dtype, |
|
) -> str: |
|
dict_config = { |
|
"slices": [ |
|
{ |
|
"sources": [ |
|
{"model": model1, "layer_range": yaml.safe_load(model1_layers)}, |
|
{"model": model2, "layer_range": yaml.safe_load(model2_layers)}, |
|
] |
|
} |
|
], |
|
"merge_method": merge_method, |
|
"base_model": base_model, |
|
} |
|
|
|
if parameters: |
|
dict_config["parameters"] = yaml.safe_load(parameters) |
|
if dtype: |
|
dict_config["dtype"] = dtype |
|
|
|
return yaml.dump(dict_config, sort_keys=False) |
|
|
|
|
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown(MARKDOWN_DESCRIPTION) |
|
with gr.Row(): |
|
|
|
model1_input = HuggingfaceHubSearch( |
|
label="Model 1", |
|
placeholder="Search for model 1 on Huggingface", |
|
search_type="model", |
|
value="BioMistral/BioMistral-7B" |
|
) |
|
model1_layers_input = gr.Textbox( |
|
label="Model 1 Layer Range", placeholder="[start, end]", value="[0, 32]" |
|
) |
|
model2_input = HuggingfaceHubSearch( |
|
label="Model 2", |
|
placeholder="Search for model 2 on Huggingface", |
|
search_type="model", |
|
value="CorticalStack/pastiche-crown-clown-7b-dare-dpo" |
|
) |
|
model2_layers_input = gr.Textbox( |
|
label="Model 2 Layer Range", placeholder="[start, end]", value="[0, 32]" |
|
) |
|
merge_method_input = gr.Dropdown( |
|
label="Merge Method", choices=["slerp", "linear"], value="slerp" |
|
) |
|
base_model_input = gr.Textbox(label="Base Model", value="BioMistral/BioMistral-7B") |
|
parameters_input = gr.Code( |
|
language="yaml", |
|
label="Merge Parameters", |
|
value=DEFAULT_PARAMETERS, |
|
) |
|
dtype_input = gr.Textbox(label="Dtype", value="bfloat16") |
|
|
|
create_button = gr.Button("Create config.yaml", variant="primary") |
|
|
|
output_zone = gr.Code(language="yaml", lines=10) |
|
|
|
create_button.click( |
|
fn=create_config_yaml, |
|
inputs=[ |
|
model1_input, |
|
model1_layers_input, |
|
model2_input, |
|
model2_layers_input, |
|
merge_method_input, |
|
base_model_input, |
|
parameters_input, |
|
dtype_input, |
|
], |
|
outputs=[output_zone], |
|
) |
|
|
|
gr.Markdown("A Space by [1littlecoder](https://huggingface.co/1littlecoder)") |
|
|
|
demo.launch() |
|
|