+13








776c3a794e
Signed-off-by: JaredforReal <w13431838023@gmail.com> Signed-off-by: root <root@hk01dgx039.cm.cluster> Signed-off-by: tzhouam <tzhouam@connect.ust.hk> Signed-off-by: Taichang Zhou <tzhouam@connect.ust.hk> Signed-off-by: TangPeng <85704592@qq.com> Signed-off-by: XU Mingshi <91017482+mxuax@users.noreply.github.com> Signed-off-by: mxuax <mxuax@connect.ust.hk> Signed-off-by: Sihyeon Jang <sihyeon.jang@navercorp.com> Signed-off-by: zjy0516 <riverclouds.zhu@qq.com> Signed-off-by: iwzbi <wzbi@zju.edu.cn> Signed-off-by: ZeldaHuang <hzm414167@alibaba-inc.com> Signed-off-by: Yuhan Liu <30294295+liuyuhanalex@users.noreply.github.com> Signed-off-by: Alicia <115451386+congw729@users.noreply.github.com> Signed-off-by: samithuang <285365963@qq.com> Signed-off-by: linyueqian <linyueqian@outlook.com> Signed-off-by: David Chen <530634352@qq.com> Signed-off-by: yinpeiqi <yinpeiqi809@gmail.com> Signed-off-by: Didan Deng <33117903+wtomin@users.noreply.github.com> Signed-off-by: Hongsheng Liu <liuhongsheng4@huawei.com> Signed-off-by: wangyu31577 <wangyu31577@hundsun.com> Signed-off-by: princepride <wangzhipeng628@gmail.com> Signed-off-by: John Liu BUAA <liukecheng97@gmail.com> Signed-off-by: Dinesh G <G.Dinesh@ibm.com> Signed-off-by: gDINESH13 <dinesh13g@gmail.com> Signed-off-by: root <root@hk01dgx028.cm.cluster> Signed-off-by: Zhou Taichang <tzhouam@connect.ust.hk> Co-authored-by: JaredforReal <w13431838023@gmail.com> Co-authored-by: root <root@hk01dgx039.cm.cluster> Co-authored-by: JustQJ <37905360+JustQJ@users.noreply.github.com> Co-authored-by: XU Mingshi <91017482+mxuax@users.noreply.github.com> Co-authored-by: Sihyeon Jang <uneedsihyeon@gmail.com> Co-authored-by: Jiangyun Zhu <riverclouds.zhu@qq.com> Co-authored-by: catcat <108673086+iwzbi@users.noreply.github.com> Co-authored-by: Ziming Huang <hzm414167@alibaba-inc.com> Co-authored-by: Yuhan Liu <30294295+liuyuhanalex@users.noreply.github.com> Co-authored-by: Alicia <115451386+congw729@users.noreply.github.com> Co-authored-by: Samit <285365963@qq.com> Co-authored-by: Yueqian Lin <70319226+linyueqian@users.noreply.github.com> Co-authored-by: WeiQing Chen <40507679+david6666666@users.noreply.github.com> Co-authored-by: Peiqi Yin <60515999+yinpeiqi@users.noreply.github.com> Co-authored-by: Didan Deng <33117903+wtomin@users.noreply.github.com> Co-authored-by: Hongsheng Liu <liuhongsheng4@huawei.com> Co-authored-by: wangyu <53896905+yenuo26@users.noreply.github.com> Co-authored-by: wangyu31577 <wangyu31577@hundsun.com> Co-authored-by: 汪志鹏 <wangzhipeng628@gmail.com> Co-authored-by: John Liu BUAA <liukecheng97@gmail.com> Co-authored-by: D!NE$H <67671800+gDINESH13@users.noreply.github.com> Co-authored-by: root <root@hk01dgx028.cm.cluster>
100 lines
3.2 KiB
Python
100 lines
3.2 KiB
Python
from contextlib import contextmanager
|
|
from dataclasses import dataclass
|
|
|
|
from vllm.config import VllmConfig
|
|
|
|
from vllm_omni.diffusion.attention.backends.abstract import (
|
|
AttentionMetadata,
|
|
)
|
|
from vllm_omni.diffusion.data import OmniDiffusionConfig
|
|
|
|
|
|
@dataclass
|
|
class ForwardContext:
|
|
"""
|
|
set forward context for diffusion models
|
|
"""
|
|
|
|
vllm_config: VllmConfig | None = None
|
|
omni_diffusion_config: OmniDiffusionConfig | None = None
|
|
attn_metadata: dict[str, AttentionMetadata] | list[dict[str, AttentionMetadata]] | None = None
|
|
split_text_embed_in_sp: bool = False
|
|
# whether to split the text embed in sequence parallel, if True, the text embed will be split in sequence parallel
|
|
|
|
def __post_init__(self):
|
|
pass
|
|
|
|
|
|
_forward_context: ForwardContext | None = None
|
|
|
|
|
|
def get_forward_context() -> ForwardContext:
|
|
"""Get the current forward context."""
|
|
assert _forward_context is not None, (
|
|
"Forward context is not set. Please use `set_forward_context` to set the forward context."
|
|
)
|
|
return _forward_context
|
|
|
|
|
|
def is_forward_context_available() -> bool:
|
|
return _forward_context is not None
|
|
|
|
|
|
def create_forward_context(
|
|
vllm_config: VllmConfig | None = None,
|
|
omni_diffusion_config: OmniDiffusionConfig | None = None,
|
|
attn_metadata: dict[str, AttentionMetadata] | list[dict[str, AttentionMetadata]] | None = None,
|
|
split_text_embed_in_sp: bool = False,
|
|
):
|
|
return ForwardContext(
|
|
vllm_config=vllm_config,
|
|
omni_diffusion_config=omni_diffusion_config,
|
|
attn_metadata=attn_metadata,
|
|
split_text_embed_in_sp=split_text_embed_in_sp,
|
|
)
|
|
|
|
|
|
@contextmanager
|
|
def override_forward_context(forward_context: ForwardContext | None):
|
|
"""A context manager that overrides the current forward context.
|
|
This is used to override the forward context for a specific
|
|
forward pass.
|
|
"""
|
|
global _forward_context
|
|
prev_context = _forward_context
|
|
_forward_context = forward_context
|
|
try:
|
|
yield
|
|
finally:
|
|
_forward_context = prev_context
|
|
|
|
|
|
@contextmanager
|
|
def set_forward_context(
|
|
vllm_config: VllmConfig | None = None,
|
|
omni_diffusion_config: OmniDiffusionConfig | None = None,
|
|
attn_metadata: dict[str, AttentionMetadata] | list[dict[str, AttentionMetadata]] | None = None,
|
|
split_text_embed_in_sp: bool = False,
|
|
):
|
|
"""A context manager that stores the current forward context,
|
|
can be attention metadata, split_text_embed_in_sp, etc.
|
|
Here we can inject common logic for every model forward pass.
|
|
"""
|
|
forward_context = create_forward_context(
|
|
vllm_config=vllm_config,
|
|
omni_diffusion_config=omni_diffusion_config,
|
|
attn_metadata=attn_metadata,
|
|
split_text_embed_in_sp=split_text_embed_in_sp,
|
|
)
|
|
# vLLM CustomOp dispatch (e.g. QKVParallelLinear) requires a global
|
|
# vLLM config set via set_current_vllm_config().
|
|
with override_forward_context(forward_context):
|
|
if vllm_config is None:
|
|
yield
|
|
else:
|
|
# Local import to avoid importing vllm.config.vllm at module import time.
|
|
from vllm.config.vllm import set_current_vllm_config
|
|
|
|
with set_current_vllm_config(vllm_config):
|
|
yield
|