- Trtion
https://github.com/openai/triton
https://www.nvidia.cn/gpu-cloud/ngc-nvidia-triton/
https://github.com/openai/openai-cookbook
https://github.com/openai/openai-python
Triton 是一个由 NVIDIA 开发的开源推理服务平台,旨在简化和优化生产环境中的 AI 模型部署。Triton 支持多种深度学习框架,并提供了一个优化的推理接口,可以提高模型的执行效率和扩展性。以下是 Triton 框架的代码结构和功能的概述:
代码结构
Triton 的代码结构大致如下:
core - 包含 Triton 的核心逻辑,如推理请求和响应的处理。
agent - 负责与客户端通信,接收推理请求并将其转发到核心系统。
backend - 包含 Triton 支持的各种深度学习框架的后端接口,如 TensorFlow, PyTorch 等。
config - 包含 Triton 配置相关的代码,用于定义模型配置和系统配置。
common - 包含 Triton 通用的代码,如日志记录、状态码等。
docs - Triton 的官方文档。
examples - 提供了一些 Triton 使用的示例。
grpc - 包含 Triton gRPC 服务的代码,用于支持远程推理。
http - 包含 Triton HTTP 服务的代码,用于提供 RESTful API。
health - 包含健康检查相关的代码,用于监测 Triton 服务的状态。
功能介绍
模型管理 - Triton 允许用户上传和管理 AI 模型,提供了模型版本控制和A/B测试功能。
多种框架支持 - Triton 支持多种深度学习框架,如 TensorFlow, PyTorch, ONNX 等。
优化的推理 - Triton 对模型进行了优化,以减少延迟并提高吞吐量。
扩展性 - Triton 可以水平扩展以处理大量的推理请求。
API 接口 - Triton 提供了 gRPC 和 HTTP 两种 API 接口,方便客户端进行远程推理。
安全性 - Triton 支持 SSL/TLS,可以加密客户端和 Triton 之间的通信。
灵活的部署 - Triton 支持在多种环境中部署,包括本地服务器、云环境和Kubernetes。
监控和日志 - Triton 提供了监控和日志记录功能,帮助用户跟踪推理请求的状态和性能。
模型分析 - Triton 可以分析模型的性能,如推理时间和利用率。
健康检查 - Triton 提供了健康检查和就绪检查,确保服务的可用性。
-
TensorRT-LLM
-
VLLM
https://vllm.ai
https://docs.vllm.ai/en/latest/
VLLM的优点:
高吞吐量:vLLM提供了最先进的服务吞吐量,适合高负载的推理需求。
内存管理:通过使用PagedAttention技术,高效管理注意力机制中的键(key)和值(value)内存。
连续批处理:对传入的请求进行连续批处理,提高处理效率。
快速模型执行:利用CUDA/HIP图快速执行模型,加速推理过程。
量化技术:支持GPTQ、AWQ、SqueezeLLM、FP8 KV Cache等量化技术,减少模型大小,加快推理速度。
优化的CUDA内核:使用优化的CUDA内核进一步提升性能。
vLLM的功能模块:
与HuggingFace模型集成:无缝集成流行的HuggingFace模型,方便用户使用。
多种解码算法:支持包括并行采样、束搜索(beam search)在内的多种高吞吐量服务解码算法。
张量并行性:支持张量并行性,适用于分布式推理。
流式输出:支持流式输出,可以处理长序列生成任务。
OpenAI兼容API服务器:提供与OpenAI兼容的API服务器,方便开发者集成和使用。
支持NVIDIA和AMD GPU:支持主流的NVIDIA和AMD GPU,提供广泛的硬件支持。
实验性功能:
前缀缓存支持:提供实验性的前缀缓存支持,可能提高特定任务的性能。
多LoRA支持:实验性支持多LoRA适配器,增强模型的灵活性。
文档和资源:
宣布博客文章:介绍了PagedAttention的入门知识。
vLLM论文:在SOSP 2023上发表的论文。
连续批处理:Cade Daniel等人的研究,展示了连续批处理如何在减少延迟的同时提高LLM推理的吞吐量。 -
FlashInfer
https://github.com/tqchen/flashinfer
FlashInfer是一个语言语言模型库,提供了诸如FlashAttention、PageAttention和LoRA等LLM GPU内核的高性能实现。FlashInfer专注于LLM服务和推理,并在各种场景中提供最先进的性能。FlashInfer的独特功能包括:
全面的注意力内核:注意力内核涵盖了LLM服务的所有常见用例,包括不同格式的KV Cache(Padded Tensor、Ragged Tensor和Page Table)上的Prefill、Decode和Append内核的单请求和批处理版本。
优化的共享前缀批量解码:FlashInfer通过级联增强了共享前缀批量译码性能,与基线vLLM PageAttention实现相比,速度提高了31倍(用于32768个令牌的长提示和256个大批量)。加速对压缩/量化KV缓存的关注:现代LLM通常与量化/压缩KV缓存一起部署,以减少内存流量。FlashInfer通过优化分组查询注意力、融合RoPE注意力和量化注意力的性能来加速这些场景。FlashInfer支持PyTorch、TVM和C++(仅限标头)API,可以轻松集成到现有项目中。 -
DeepSpeed-MII
1.1 目前主流的大模型分布式训练主要包括两种:
数据并行训练
模型并行训练
2.1DeepSpeed是由Microsoft提供的分布式训练工具,旨在支持更大规模的模型和提供更多的优化策略和工具。对于更大模型的训练来说,DeepSpeed提供了更多策略,例如:Zero、Offload等。
.1 基础组件
分布式训练需要掌握分布式环境中的基础配置,包括节点变化、全局进程编号、局部进程编号、全局总进程数、主节点等。这些组件都跟分布式训练紧密相关,同时组件之间也有非常大的联系,例如通信联系等。
2.2 通信策略
既然是分布式训练,那机器之间必须要保持通信,这样才可以传输模型参数,梯度参数等信息。DeepSpeed提供了mpi、gioo、nccl等通信策略.
2.3 存储效率:DeepSpeed提供了一种Zero的新型解决方案来减少训练显存的占用,它与传统的数据并行不同,它将模型状态和梯度进行分区来节省大量的显存;可扩展性:DeepSpeed支持高效的数据并行、模型并行、pipeline并行以及它们的组合,这里也称3D并行;易用性: 在训练阶段,只需要修改几行代码就可以使pytorch模型使用DeepSpeed和Zero。