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() | |