Spaces:
Sleeping
Sleeping
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) | |
# make sure to add the themes as well | |
with gr.Blocks() as demo: | |
gr.Markdown(MARKDOWN_DESCRIPTION) | |
with gr.Row(): | |
# model_name_input = gr.Textbox(label="Model Name", value="my-merge") | |
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() | |