通用大模型研究重点之五:model services

  • 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。

相关推荐

  1. 国内模型

    2024-04-21 00:54:04       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-21 00:54:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-21 00:54:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-21 00:54:04       82 阅读
  4. Python语言-面向对象

    2024-04-21 00:54:04       91 阅读

热门阅读

  1. Spark面试整理-Spark集成Hive

    2024-04-21 00:54:04       31 阅读
  2. 4月20日,每日信息差

    2024-04-21 00:54:04       33 阅读
  3. Python框架django项目

    2024-04-21 00:54:04       34 阅读
  4. oepncv android 使用笔记

    2024-04-21 00:54:04       35 阅读
  5. 使用leaflet给地图添加蒙版(超级详细免费看)

    2024-04-21 00:54:04       39 阅读
  6. 个人开发者,Spring Boot 项目如何部署

    2024-04-21 00:54:04       34 阅读
  7. HttpServletResponse HttpServletRequest

    2024-04-21 00:54:04       32 阅读
  8. WPF: XAML语法规范详解

    2024-04-21 00:54:04       37 阅读