项目介绍:llm-analysis
概述
llm-analysis
是一个专为大语言模型(LLM)或 Transformer 模型的训练和推理进行延迟与内存分析的工具。这些模型在论文和博客中经常被提到,但手算或者在电子表格中操作这些复杂的公式非常繁琐且容易出错。llm-analysis
旨在通过自动化完成这些复杂的计算,使研究者和工程师能够简单快速地估算模型在特定配置下的延迟与内存使用情况。
这个工具可以帮助用户解答以下问题:
- 如何选择合适的批处理大小、数据类型和并行方案,以避免内存溢出(OOM)并在满足延迟约束的情况下最大化吞吐量。
- 在给定的设置下进行训练或推理所需的时间和成本(以 GPU-小时衡量)。
- 如果使用不同的模型、GPU 类型、数据类型或者不同的并行设置,延迟和内存变化如何(从而提示
模型变更
、硬件改进
、量化
、并行
等对性能的影响)。
使用示例
比如,有了 llm-analysis,用户可以在短时间内分析不同情况下的使用场景:
- (示例) Llama 2 模型
- (示例) LLaMA 模型
- (示例) Megatron-LM 模型
- (示例) Megatron Turing NLG 530B
- (示例) FasterTransformer
快速入门
安装
-
从 PyPI 安装:
pip install llm-analysis
-
安装最新的开发版本:
pip install --upgrade git+https://github.com/cli99/llm-analysis.git@main
-
从源码安装:克隆仓库并运行
pip install .
或poetry install
。
使用 LLMAnalysis
类
想在代码中使用 llm-analysis,可以通过 LLMAnalysis
类来集成。该类允许根据模型配置、GPU 信息、数据类型以及并行配置等设置,估算模型在不同场景下的性能表现。
限制与未来计划
llm-analysis 旨在提供对模型内存使用和延迟的“下限”估计。目前,它支持多种并行处理方案(如 Tensor 并行、流水线并行等)和若干数据类型的支持。
未来计划包括:
- 增加对更多并行通信分析的支持
- 支持更为高效的微调方法,如 LoRA 或 Adapters
- 增加对 FP8 数据类型的支持
- 支持训练和推理中的 CPU 离线分析等
引用
如果您在工作中使用了 llm-analysis,请使用以下引用格式:
Cheng Li. (2023). LLM-Analysis: Latency and Memory Analysis of Transformer Models for Training and Inference. GitHub repository.
贡献
欢迎对这款工具提供任何意见或建议。相关贡献需要确保代码格式一致,请在提交之前安装必要的工具并格式化代码。
通过 llm-analysis,用户可以更好地了解大型语言模型在不同配置下的表现,从而优化训练和推理的效率。