【架构】流水线结合生产者消费者模型赋能模型推理过程

简介: 【架构】流水线结合生产者消费者模型赋能模型推理过程

前言

  由于神经网络模型通常较大且计算密集,因此需要大量的计算资源和时间来训练和推理。加速程序可以显著减少训练和推理时间,提高效率,同时降低成本。此外,通过优化神经网络模型的训练和推理过程,可以减少不必要的计算量,进一步加速程序。在项目需要落地进行推理时往往会因为设备算力不够或因为利用率不高导致运行效率低下,今天便从优化推理架构角度进行分析。

流水线

  流水线技术是一种将一个任务分解为若干顺序执行子任务的方法,不同的子任务由不同的执行机构负责执行,而这些机构可以同时并行工作,任一任务只占用其中一个执行机构,这样就可以实现多个任务的重叠执行,以提高工作效率。

  如果以传统的方式,完成k个任务所需的时间是kNt,而使用流水线技术执行,花费的时间是Nt + (k - 1)t。也就是说,除了第一个任务需要完整的时间外,其他任务都通过并行执行以节省大量时间。所以流水线的执行时间可以通俗地表达为: 【流水线执行时间 = 第1条指令的执行时间 + (n - 1)* 流水线周期】 。

  这里我们可以化抽象为具体进行分析,如下这三个模块耗时所示:

  1. 生产数据(耗时1秒)
  2. 处理数据(耗时3秒)
  3. 推送数据(耗时可忽略不计)

当我们执行一次上述模块耗时为4秒,生产数据占25%运行时间,有75%的时间属于空闲状态,这明显是可以进行优化的。

  在处理模块这里耗时为3秒,我们可以增加处理数据模块的数量为3个进行优化,我们采用流水线操作可得耗时数据流明细:

时间 生产(1个) 处理(3个) 推送(1个)
1 1
2 2 1.1
3 3 1.2-2.1
4 4 1.3;2.2;3.1 1
5 5 2.3;3.2;4.1 2
6 6 3.3;4.2;5.1 3
7 7 4.3;5.2;6.1 4
8 8 5.3;6.2;7.1 5
9 9 6.3;7.2;8.1 6

python代码

  由于模型推理代码较为繁杂,在这里我将推理模块抽象为上述模块进行模拟实验进行验证:

python

复制代码

import time
from concurrent.futures import ThreadPoolExecutor
# 处理一个数据用时3秒
def myFunc(n):
    time.sleep(3)
    return n
# 生产一个数据时间用时1秒
def num(n):
    time.sleep(1)
    return n
max_works = 3
count = 1
# 使用ThreadPoolExecutor来并行处理数据
with ThreadPoolExecutor(max_workers=max_works) as executor:
    while True:
        n = num(count)
        future = executor.submit(myFunc, n)
        future.add_done_callback(lambda future: print("此时输出的数据为", future.result()))
        print("此时运行的时间t为:", count)
        count += 1

在上述代码中我们分别使用sleep模拟了处理耗时,运行上述代码可以得到只有前三秒时间无法获取数据,在第四秒开始可以陆陆续续得到处理好的数据,这样我们的生产数据环节处于一直工作状态,如果大家需要

复制代码

此时运行的时间t为: 1
此时运行的时间t为: 2
此时运行的时间t为: 3
此时运行的时间t为: 4
此时输出的数据为 1
此时输出的数据为 2
此时运行的时间t为: 5
此时输出的数据为 3
此时运行的时间t为: 6
此时输出的数据为 4
此时运行的时间t为: 7
此时输出的数据为 5
此时运行的时间t为: 8
此时输出的数据为 6
此时运行的时间t为: 9
此时输出的数据为 7


相关文章
|
1天前
|
机器学习/深度学习 数据挖掘 定位技术
多元线性回归:机器学习中的经典模型探讨
多元线性回归是统计学和机器学习中广泛应用的回归分析方法,通过分析多个自变量与因变量之间的关系,帮助理解和预测数据行为。本文深入探讨其理论背景、数学原理、模型构建及实际应用,涵盖房价预测、销售预测和医疗研究等领域。文章还讨论了多重共线性、过拟合等挑战,并展望了未来发展方向,如模型压缩与高效推理、跨模态学习和自监督学习。通过理解这些内容,读者可以更好地运用多元线性回归解决实际问题。
|
9天前
|
机器学习/深度学习 计算机视觉 iOS开发
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
34 0
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
|
9天前
|
机器学习/深度学习 算法 文件存储
RT-DETR改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
RT-DETR改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
20 4
RT-DETR改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
PAI Model Gallery 支持云上一键部署 DeepSeek-V3、DeepSeek-R1 系列模型
DeepSeek 系列模型以其卓越性能在全球范围内备受瞩目,多次评测中表现优异,性能接近甚至超越国际顶尖闭源模型(如OpenAI的GPT-4、Claude-3.5-Sonnet等)。企业用户和开发者可使用 PAI 平台一键部署 DeepSeek 系列模型,实现 DeepSeek 系列模型与现有业务的高效融合。
|
13天前
|
机器学习/深度学习 计算机视觉 iOS开发
YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
54 12
|
13天前
|
机器学习/深度学习 算法 文件存储
YOLOv11改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
YOLOv11改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
47 10
YOLOv11改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
|
24天前
|
自然语言处理 算法 JavaScript
面向长文本的多模型协作摘要架构:多LLM文本摘要方法
多LLM摘要框架通过生成和评估两个步骤处理长文档,支持集中式和分散式两种策略。每个LLM独立生成文本摘要,集中式方法由单一LLM评估并选择最佳摘要,而分散式方法则由多个LLM共同评估,达成共识。论文提出两阶段流程:先分块摘要,再汇总生成最终摘要。实验结果显示,多LLM框架显著优于单LLM基准,性能提升最高达3倍,且仅需少量LLM和一轮生成评估即可获得显著效果。
63 10
面向长文本的多模型协作摘要架构:多LLM文本摘要方法
|
29天前
|
搜索推荐 架构师 数据挖掘
架构实操:画好一张业务模型图
本文以SDK设计的角度分析了如何构建一张属于SDK的各个业务的模型图。
|
1月前
如何看PAI产品下训练(train)模型任务的费用细节
PAI产品下训练(train)模型任务的费用细节
85 6
|
1月前
|
机器学习/深度学习 安全 PyTorch
FastAPI + ONNX 部署机器学习模型最佳实践
本文介绍了如何结合FastAPI和ONNX实现机器学习模型的高效部署。面对模型兼容性、性能瓶颈、服务稳定性和安全性等挑战,FastAPI与ONNX提供了高性能、易于开发维护、跨框架支持和活跃社区的优势。通过将模型转换为ONNX格式、构建FastAPI应用、进行性能优化及考虑安全性,可以简化部署流程,提升推理性能,确保服务的可靠性与安全性。最后,以手写数字识别模型为例,展示了完整的部署过程,帮助读者更好地理解和应用这些技术。
97 20