stable-diffusion.cpp适配 MiniT2I
背景
MiniT2I 是一个轻量级文生图模型。和 stable-diffusion.cpp 里常见的 SD1.x / SDXL U-Net 模型不同,MiniT2I 的核心不是多尺度卷积 U-Net,而是一个 DiT / MM-DiT 风格的图文联合 Transformer。
MiniT2I 是一个轻量级文生图模型。和 stable-diffusion.cpp 里常见的 SD1.x / SDXL U-Net 模型不同,MiniT2I 的核心不是多尺度卷积 U-Net,而是一个 DiT / MM-DiT 风格的图文联合 Transformer。
大模型推理框架的竞争,已经不只是“谁的 attention kernel 更快”,而是围绕 调度、KV cache、批处理、跨阶段解耦、硬件编译优化 展开的系统工程竞争。
本文从推理框架优化从业者视角,对比 vLLM、SGLang、vLLM-Omni、TensorRT-LLM 的架构、核心调度方法、数据流和特殊设计,并总结它们对推理系统优化的启示。
本文用一个小例子说明 Int4MoePlugin 中 MoE Marlin 路径的完整计算过程,包括:router topK、expert 重排、padding、Marlin Gate/Up GEMM、SwiGLU、Marlin Down GEMM、slot 聚合。
朋友们,阅读优秀的源码可以学到很多,例如代码的结构组织、设计模式、为了解决一些问题特殊处理、写法技巧、优化策略等,同时也扩展了对编程语言的熟悉程度、关于这个项目的解决问题思路。
MPI(Message Passing Interface,消息传递接口)是一种并行计算的通信标准,主要用于在分布式内存系统中实现多进程间的数据交换和协同计算。它是高性能计算(HPC)领域的核心工具之一,尤其适用于超级计算机和集群环境。MPI是独立于硬件和编程语言的规范,主流实现(如OpenMPI、MPICH)支持C/C++、Fortran等语言,可在Linux、Windows等系统运行。
类似linux操作系统管理内存的机制,paged_attention用于管理LLM推理时kv cache的显存分配,通过页表机制,优化显存分配,减少碎片。
(本文主要内容译自build-your-own-llama-3-architecture-from-scratch-using-pytorch)
朋友们,书接上文,上一篇的Llama3还没有分享完,接着分享输出模块(Output Block)和训练、推理。
最终Decode Block的解码器(decoder)输出将输入到Output Block中。首先,它被输入到 RMSNorm 中。然后,它将被输入到线性层中用于生成logits。
接下来,会发生以下两种操作之一。
(本文主要内容译自build-your-own-llama-3-architecture-from-scratch-using-pytorch)
先看一下LLama3模型结构,这个是译文作者根据LLama3论文画的,画得很好。图中包括了训练和推理的流程。
