Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Overbill1683
Stable Diffusion Webui
提交
871b8687
S
Stable Diffusion Webui
项目概览
Overbill1683
/
Stable Diffusion Webui
10 个月 前同步成功
通知
1754
Star
81
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
分析
仓库
DevOps
项目成员
Pages
S
Stable Diffusion Webui
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Pages
分析
分析
仓库分析
DevOps
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
提交
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
871b8687
编写于
7月 18, 2023
作者:
A
AUTOMATIC1111
提交者:
GitHub
7月 18, 2023
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #11846 from brkirch/sd-xl-upcast-sampling-fix
Add support for using `--upcast-sampling` with SD XL
上级
20c41364
f0e2098f
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
8 addition
and
2 deletion
+8
-2
modules/sd_hijack_unet.py
modules/sd_hijack_unet.py
+7
-1
modules/sd_models.py
modules/sd_models.py
+1
-1
未找到文件。
modules/sd_hijack_unet.py
浏览文件 @
871b8687
...
...
@@ -39,7 +39,10 @@ def apply_model(orig_func, self, x_noisy, t, cond, **kwargs):
if
isinstance
(
cond
,
dict
):
for
y
in
cond
.
keys
():
cond
[
y
]
=
[
x
.
to
(
devices
.
dtype_unet
)
if
isinstance
(
x
,
torch
.
Tensor
)
else
x
for
x
in
cond
[
y
]]
if
isinstance
(
cond
[
y
],
list
):
cond
[
y
]
=
[
x
.
to
(
devices
.
dtype_unet
)
if
isinstance
(
x
,
torch
.
Tensor
)
else
x
for
x
in
cond
[
y
]]
else
:
cond
[
y
]
=
cond
[
y
].
to
(
devices
.
dtype_unet
)
if
isinstance
(
cond
[
y
],
torch
.
Tensor
)
else
cond
[
y
]
with
devices
.
autocast
():
return
orig_func
(
self
,
x_noisy
.
to
(
devices
.
dtype_unet
),
t
.
to
(
devices
.
dtype_unet
),
cond
,
**
kwargs
).
float
()
...
...
@@ -77,3 +80,6 @@ first_stage_sub = lambda orig_func, self, x, **kwargs: orig_func(self, x.to(devi
CondFunc
(
'ldm.models.diffusion.ddpm.LatentDiffusion.decode_first_stage'
,
first_stage_sub
,
first_stage_cond
)
CondFunc
(
'ldm.models.diffusion.ddpm.LatentDiffusion.encode_first_stage'
,
first_stage_sub
,
first_stage_cond
)
CondFunc
(
'ldm.models.diffusion.ddpm.LatentDiffusion.get_first_stage_encoding'
,
lambda
orig_func
,
*
args
,
**
kwargs
:
orig_func
(
*
args
,
**
kwargs
).
float
(),
first_stage_cond
)
CondFunc
(
'sgm.modules.diffusionmodules.wrappers.OpenAIWrapper.forward'
,
apply_model
,
unet_needs_upcast
)
CondFunc
(
'sgm.modules.diffusionmodules.openaimodel.timestep_embedding'
,
lambda
orig_func
,
timesteps
,
*
args
,
**
kwargs
:
orig_func
(
timesteps
,
*
args
,
**
kwargs
).
to
(
torch
.
float32
if
timesteps
.
dtype
==
torch
.
int64
else
devices
.
dtype_unet
),
unet_needs_upcast
)
modules/sd_models.py
浏览文件 @
871b8687
...
...
@@ -326,7 +326,7 @@ def load_model_weights(model, checkpoint_info: CheckpointInfo, state_dict, timer
timer
.
record
(
"apply half()"
)
devices
.
dtype_unet
=
model
.
model
.
diffusion_model
.
dtype
devices
.
dtype_unet
=
torch
.
float16
if
model
.
is_sdxl
and
not
shared
.
cmd_opts
.
no_half
else
model
.
model
.
diffusion_model
.
dtype
devices
.
unet_needs_upcast
=
shared
.
cmd_opts
.
upcast_sampling
and
devices
.
dtype
==
torch
.
float16
and
devices
.
dtype_unet
==
torch
.
float16
model
.
first_stage_model
.
to
(
devices
.
dtype_vae
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录