flashinfer.comm.MoeAlltoAll¶
- class flashinfer.comm.MoeAlltoAll(mapping: Mapping, max_num_tokens: int, top_k: int, num_experts: int, workspace_size_per_rank: int = None, hidden_size: int = None, mnnvl_config: MnnvlConfig | None = None)¶
管理 MoE 全到全操作,并进行适当的工作区分配和同步。
此类提供吞吐量优化的后端,支持每个集体操作中的多个有效负载、显式调度/合并阶段以及基于工作区的张量。
示例
>>> moe_a2a = MoeAlltoAll(mapping, max_num_tokens=2048, top_k=2, num_experts=8) >>> recv = moe_a2a.dispatch(experts, [hidden, ids, scales], batch_size) >>> output = moe_a2a.combine(processed, batch_size)
- __init__(mapping: Mapping, max_num_tokens: int, top_k: int, num_experts: int, workspace_size_per_rank: int = None, hidden_size: int = None, mnnvl_config: MnnvlConfig | None = None)¶
使用工作区分配初始化 MoeAlltoAll。
- 参数:
mapping – 包含等级信息的映射对象
max_num_tokens – 支持的最大 token 数量
top_k – 每个 token 的专家数量
num_experts – 专家总数
workspace_size_per_rank – 每个等级的工作区大小(字节),如果为 None,则必须提供 hidden_size
hidden_size – 用于计算工作区大小的隐藏维度大小,如果未提供 workspace_size_per_rank
mnnvl_config – 用于配置 MNNVL 内存对象的通信后端
方法
__init__(mapping, max_num_tokens, top_k, ...)使用工作区分配初始化 MoeAlltoAll。
combine(payload, runtime_max_tokens_per_rank)执行 MoE 全到全合并操作。
dispatch(token_selected_experts, ...[, ...])执行 MoE 全到全调度操作。
get_combine_payload_tensor_in_workspace(...)获取由工作区支持的合并有效负载张量(零拷贝)。
get_moe_workspace_size_per_rank(ep_size, ...)方便的包装器,用于计算 MoE 全到全操作的每个等级的工作区大小。
get_workspace(workspace_size_per_rank, ...)