LoraReduceRank
Этот узел основан на resize_lora из sd-scripts от kohya-ss
Lora Reduce Rank
Узел LoraReduceRank, основанный на resize_lora из sd-scripts от kohya-ss
Узел LoraReduceRank — это инструмент для уменьшения ранга (Rank) модели LoRA. Его основная функция — чтение существующей модели LoRA, уменьшение размера файла модели и вычислительных требований за счёт изменения размерности её внутренних матриц параметров, а также сохранение обработанной новой модели в выходной каталог.
Функциональность узла
Этот узел реализован на основе скрипта resize_lora.py из sd-scripts от kohya-ss. Он поддерживает несколько методов динамического уменьшения ранга, включая методы, основанные на соотношении сингулярных значений, их кумулятивной сумме, норме Фробениуса или обнаружении точки изгиба (elbow point) в кривой сингулярных значений, позволяя пользователю указать фиксированный новый ранг или задать динамический порог для автоматического определения подходящего ранга. Узел может обрабатывать данные в различных форматах точности и сохранять метаданные, совместимые с исходной моделью.
Описание параметров узла - LoraReduceRank
Входные соединения (Inputs)
| Название параметра | Тип данных | Обязательный | Значение по умолчанию | Допустимые значения/опции | Описание |
|---|---|---|---|---|---|
lora_name | FOLDER_PATHS | Да | - | - | Выберите целевой файл модели LoRA из списка загруженных моделей, для которого требуется выполнить уменьшение ранга. |
Параметры управления (Parameters)
| Название параметра | Тип данных | Обязательный | Значение по умолчанию | Допустимые значения/опции | Описание |
|---|---|---|---|---|---|
dynamic_method | COMBO | Да | disabled | "disabled", "sv_ratio", "sv_cumulative", "sv_fro", "sv_knee" | Метод для динамического определения новых alpha и размерностей (dims). sv_knee находит точку изгиба (elbow) в кривой сингулярных значений. |
output_dtype | COMBO | Да | match_original | "match_original", "fp16", "bf16", "fp32" | Тип данных для сохранения LoRA: match_original, fp16, bf16 или fp32. |
new_rank | INT | Да | 8 | 1 - 4096 (шаг: 1) | Новый ранг для изменения размера LoRA. Выступает в качестве максимального ранга при использовании dynamic_method. |
dynamic_param | FLOAT | Да | 0.2 | 0.0 - 2.0 (шаг: 0.01) | Параметр для динамических методов. Для sv_knee: чувствительность (1.0 = стандартная точка изгиба, <1.0 = более агрессивное снижение/низкий ранг, >1.0 = более консервативное). |
verbose | BOOLEAN | Да | True | - | Управляет выводом подробных логов процесса обработки в консоль. Включение (True) полезно для отладки и понимания деталей уменьшения ранга. |
Сценарии использования
В реальном рабочем процессе этот узел можно использовать, когда файл модели LoRA слишком велик или скорость вывода (inference) слишком низкая. Например, после загрузки LoRA с высоким рангом для стилизации вы можете подключить её к этому узлу, установить более низкое значение new_rank, и после выполнения в выходной папке получите новый файл LoRA меньшего размера и более эффективный, который можно использовать в последующих этапах.
Важные замечания
Обратите внимание, что это экспериментальный узел. Операция уменьшения ранга — это сжатие с потерями, и чрезмерное уменьшение ранга может значительно ухудшить качество модели LoRA. Сам узел не выводит тензоры, а только выполняет операцию сохранения файла.
Ссылка на исходный код узла LoraReduceRank
Узел LoraReduceRank взят из пакета узлов ComfyUI-KJNodes.
Комментарии
Войдите через GitHub, чтобы участвовать в обсуждении.