KohyaSS/library/verify_lora_gui.py
JSTayco 7b5639cff5 Huge WIP
This is a massive WIP and should not be trusted or used right now. However, major milestones have been crossed. Both message boxes and file dialogs are now properly subprocessed and work on macOS. I think by extension, it may work on runpod environments as well, but that remains to be tested.
2023-03-30 01:40:00 -07:00

102 lines
2.6 KiB
Python

import os
import subprocess
import gradio as gr
from .common_gui import (
get_file_path,
)
PYTHON = 'python3' if os.name == 'posix' else './venv/Scripts/python.exe'
folder_symbol = '\U0001f4c2' # 📂
refresh_symbol = '\U0001f504' # 🔄
save_style_symbol = '\U0001f4be' # 💾
document_symbol = '\U0001F4C4' # 📄
def verify_lora(
lora_model,
):
# verify for caption_text_input
if lora_model == '':
show_message_box('Invalid model A file')
return
# verify if source model exist
if not os.path.isfile(lora_model):
show_message_box('The provided model A is not a file')
return
run_cmd = [
PYTHON,
os.path.join('networks', 'check_lora_weights.py'),
f'{lora_model}',
]
print(' '.join(run_cmd))
# Run the command
process = subprocess.Popen(
run_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE
)
output, error = process.communicate()
return (output.decode(), error.decode())
###
# Gradio UI
###
def gradio_verify_lora_tab():
with gr.Tab('Verify LoRA'):
gr.Markdown(
'This utility can verify a LoRA network to make sure it is properly trained.'
)
lora_ext = gr.Textbox(value='*.pt *.safetensors', visible=False)
lora_ext_name = gr.Textbox(value='LoRA model types', visible=False)
with gr.Row():
lora_model = gr.Textbox(
label='LoRA model',
placeholder='Path to the LoRA model to verify',
interactive=True,
)
button_lora_model_file = gr.Button(
folder_symbol, elem_id='open_folder_small'
)
button_lora_model_file.click(
get_file_path,
inputs=[lora_model, lora_ext, lora_ext_name],
outputs=lora_model,
show_progress=False,
)
verify_button = gr.Button('Verify', variant='primary')
lora_model_verif_output = gr.Textbox(
label='Output',
placeholder='Verification output',
interactive=False,
lines=1,
max_lines=10,
)
lora_model_verif_error = gr.Textbox(
label='Error',
placeholder='Verification error',
interactive=False,
lines=1,
max_lines=10,
)
verify_button.click(
verify_lora,
inputs=[
lora_model,
],
outputs=[lora_model_verif_output, lora_model_verif_error],
show_progress=False,
)