()
| 474 | } |
| 475 | |
| 476 | function initMergeUI() { |
| 477 | const tabSettingsSingle = document.querySelector("#tab-merge-opts-single") |
| 478 | const tabSettingsBatch = document.querySelector("#tab-merge-opts-batch") |
| 479 | linkTabContents(tabSettingsSingle) |
| 480 | linkTabContents(tabSettingsBatch) |
| 481 | |
| 482 | let mergeModelAField = new ModelDropdown(document.querySelector("#mergeModelA"), "stable-diffusion") |
| 483 | let mergeModelBField = new ModelDropdown(document.querySelector("#mergeModelB"), "stable-diffusion") |
| 484 | updateChart() |
| 485 | |
| 486 | // slider |
| 487 | const singleMergeRatioField = document.querySelector("#single-merge-ratio") |
| 488 | const singleMergeRatioSlider = document.querySelector("#single-merge-ratio-slider") |
| 489 | |
| 490 | function updateSingleMergeRatio() { |
| 491 | singleMergeRatioField.value = singleMergeRatioSlider.value / 10 |
| 492 | singleMergeRatioField.dispatchEvent(new Event("change")) |
| 493 | } |
| 494 | |
| 495 | function updateSingleMergeRatioSlider() { |
| 496 | if (singleMergeRatioField.value < 0) { |
| 497 | singleMergeRatioField.value = 0 |
| 498 | } else if (singleMergeRatioField.value > 100) { |
| 499 | singleMergeRatioField.value = 100 |
| 500 | } |
| 501 | |
| 502 | singleMergeRatioSlider.value = singleMergeRatioField.value * 10 |
| 503 | singleMergeRatioSlider.dispatchEvent(new Event("change")) |
| 504 | } |
| 505 | |
| 506 | singleMergeRatioSlider.addEventListener("input", updateSingleMergeRatio) |
| 507 | singleMergeRatioField.addEventListener("input", updateSingleMergeRatioSlider) |
| 508 | updateSingleMergeRatio() |
| 509 | |
| 510 | document.querySelector(".merge-config").addEventListener("change", updateChart) |
| 511 | |
| 512 | document.querySelector("#merge-button").addEventListener("click", async function (e) { |
| 513 | // Build request template |
| 514 | let model0 = mergeModelAField.value |
| 515 | let model1 = mergeModelBField.value |
| 516 | let request = { model0: model0, model1: model1 } |
| 517 | request["use_fp16"] = document.querySelector("#merge-fp").value == "fp16" |
| 518 | let iterations = document.querySelector("#merge-count").value >> 0 |
| 519 | let start = parseFloat(document.querySelector("#merge-start").value) |
| 520 | let step = parseFloat(document.querySelector("#merge-step").value) |
| 521 | |
| 522 | if (isTabActive(tabSettingsSingle)) { |
| 523 | start = parseFloat(singleMergeRatioField.value) |
| 524 | step = 0 |
| 525 | iterations = 1 |
| 526 | addLogMessage(`merge ratio = ${start}%`) |
| 527 | } else { |
| 528 | addLogMessage(`start = ${start}%`) |
| 529 | addLogMessage(`step = ${step}%`) |
| 530 | } |
| 531 | |
| 532 | if (start + (iterations - 1) * step >= 100) { |
| 533 | addLogMessage("<i>Aborting: maximum ratio is ≥ 100%</i>") |
no test coverage detected