Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sd Web Unet Model Quantization and Black Formatting #445

Merged
merged 12 commits into from
Dec 29, 2023
Merged

Conversation

ccssu
Copy link
Contributor

@ccssu ccssu commented Dec 21, 2023

性能测试

下图 画红框处 Checkbox 选中代表使用模型量化,不选中代表不使用模型量化。
image

@ccssu ccssu requested a review from fpzh2011 December 21, 2023 10:53
@fpzh2011 fpzh2011 requested a review from strint December 22, 2023 03:04
@fpzh2011
Copy link
Contributor

我觉得要考虑几个问题

  • 考虑取消量化的场景。如果用户开始打开了量化开关、并做了几次推理,然后关闭了量化开关。这时需要恢复到非量化的模型。目前的实现似乎不能直接做到?在目前的实现方案下,我感觉只能让用户关掉量化开关、切换到另一个模型、然后再切换到原来的模型,才能恢复到非量化的模型。
  • 考虑模型切换的场景。如果用户开始用 sdxl+onediff+quant 做了几次推理,然后切换模型为 sd1.5 并打开 onediff quant 开关,这时需要继续对 sd1.5 的模型进行量化。
    • 所以,_first_quant 这个变量是否有必要?

@ccssu
Copy link
Contributor Author

ccssu commented Dec 25, 2023

我觉得要考虑几个问题

  • 考虑取消量化的场景。如果用户开始打开了量化开关、并做了几次推理,然后关闭了量化开关。这时需要恢复到非量化的模型。目前的实现似乎不能直接做到?在目前的实现方案下,我感觉只能让用户关掉量化开关、切换到另一个模型、然后再切换到原来的模型,才能恢复到非量化的模型。

  • 考虑模型切换的场景。如果用户开始用 sdxl+onediff+quant 做了几次推理,然后切换模型为 sd1.5 并打开 onediff quant 开关,这时需要继续对 sd1.5 的模型进行量化。

    • 所以,_first_quant 这个变量是否有必要?
  • 考虑取消量化的场景。 因为这个 全局的 _compiled ,编译判断条件link 在 sd_webui 中 编译后就无法取消, 量化也不考虑取消。
  • 考虑模型切换的场景。 量化 sd_xl_1.0_base 大概 1~2 s ,这里切换耗时短,主要耗时 和fp16unet 一样 在编译。
  • 有必要 sd_webui 加载会调用 compile(sd_model): 会 让 _compiled 不为 None. 量化控制选项会失效。

@fpzh2011
Copy link
Contributor

如果用户不能使用量化,目前是在后台日志中输出提示信息。
如果在 onediff 插件的 UI 中,让 checkbox 变灰色,同时显示提示购买的文本,用户体验可能会更好,也有利于商业转化。因为技术用户可能不会注意到后台日志信息。非技术用户更不会看到这些信息。

@fpzh2011
Copy link
Contributor

fpzh2011 commented Dec 25, 2023

根据刚才的线下讨论重新整理一下:

  • 如果用户取消量化,需要能恢复量化之前的模型。评估一下显存的增长。
  • 用户切换模型后,仍能支持选择并执行是否量化。
  • 可以考虑将 compile 与量化拆分为两个独立的事情处理。
  • 如果用户没有量化授权,直接在 UI 上提示用户、可以联系我们获得授权。

Comment on lines 73 to 94
ret = gr.HTML(
"""
<div style="padding: 20px; border: 1px solid #e0e0e0; border-radius: 5px; background-color: #f9f9f9;">
<div style="font-size: 18px; font-weight: bold; margin-bottom: 15px; color: #d9534f;">
Error Message
</div>
<div class='error-message' style="padding: 10px; border: 1px solid #d9534f; border-radius: 5px; background-color: #f2dede;">
Error: Enterprise function is not supported on your system.
</div>
<p style="margin-top: 15px;">
If you need Enterprise Level Support for your system or business, please send an email to
<a href="mailto:business@siliconflow.com" style="color: #31708f; text-decoration: none;">business@siliconflow.com</a>.
<br>
Tell us about your use case, deployment scale, and requirements.
</p>
<p>
<strong>GitHub Issue:</strong>
<a href="https://github.com/siliconflow/onediff/issues" style="color: #31708f; text-decoration: none;">https://github.com/siliconflow/onediff/issues</a>
</p>
</div>
"""
)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

Copy link
Contributor

@fpzh2011 fpzh2011 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

可以考虑用下面的语句实现 is_compiled 中的这段判断逻辑

return compiled_unet is not None and compiled_ckpt_name == ckpt_name

"""
<div style="padding: 20px; border: 1px solid #e0e0e0; border-radius: 5px; background-color: #f9f9f9;">
<div style="font-size: 18px; font-weight: bold; margin-bottom: 15px; color: #d9534f;">
Error Message
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

我觉得这里可以不用 Error Message 吧,因为 Error 有点吓人。这里只是一个提示,其实并没有出错。可以换成 Hints 或者其它合适的词。
另外,就用默认的色系就行(包括背景色),红色感觉有点扎眼。我们首先是让用户用得舒服顺滑,其次才是引导用户转化。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

@ccssu ccssu merged commit 4f81ba0 into main Dec 29, 2023
0 of 4 checks passed
@ccssu ccssu deleted the dev_sd_web_quant branch December 29, 2023 09:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants