此版本带来了一项备受期待的功能,感谢 @crmne 的贡献:现在不再需要为每个 worker 使用线程池来运行多线程任务,而是可以在单个 fiber reactor 线程上使用 fibers。 要使用此功能,只需在 worker 配置中指定 fibers 的数量而不是线程数,如下所示: ```yaml workers: - queues: "api*" fibers: 100 polling_interval: 0.05 ``` 该功能底层使用 Async,因此需要将其作为依赖项才能正常工作。此外,你需要在 Rails 中使用 fiber 隔离(`config.active_support.isolation_level = :fiber`)。这对于涉及 LLM 调用等 I/O 密集型工作负载非常有用。 **更新内容** * 添加 fiber worker 执行模式,由 @crmne 贡献于 #728 * 回滚测试中因任务线程被终止而泄露的事务,由 @rosa 贡献于 #773 * 记录如何更新动态循环任务,由 @wintan1418 贡献于 #777 **新贡献者** 完整更新日志:v1.5.1...v1.6.0
以长上下文推理为特征的 Agentic AI 工作负载,已将性能瓶颈从计算能力转移至内存带宽。为解决这一问题,AMD Instinct MI450 GPU 引入了先进的硬件特性,包括高带宽 HBM3e、用于异步数据传输的专用张量数据移动(TDM)单元,以及用于高效工作组(WGP)间协调的簇屏障(Workgroup Cluster Barriers)。
本博客探讨了如何使用 Gluon 在 MI450 上设计高性能注意力解码内核。Gluon 是一种基于 Triton 的底层领域特定语言(DSL),能够对张量布局进行显式控制。关键优化策略包括:
* **张量布局优化:** 对齐 WMMA 操作数,以最小化转换成本并最大化指令吞吐量。
* **数据加载:** 利用 TDM 绕过缓存层级,将数据直接移动至本地数据共享区(LDS)。
* **流水线延迟隐藏:** 实现三级缓冲(Triple-buffering),将内存请求与计算阶段交错执行,从而有效重叠 TDM 加载与矩阵乘法及 Softmax 操作。
* **Split-k 并行化:** 利用工作组簇将 KV 序列分配到多个处理器上,即使在小批量规模下也能确保 GPU 的高饱和度。
通过应用这些技术,优化后的 Gluon 内核可达到 MI450 峰值 HBM 带宽的 85%,证明了其在内存密集型 LLM 解码操作中具有显著的效率提升。