Triton Server Python 后端优化

接上文 不使用 Docker 构建 Triton 服务器并在 Google Colab 平台上部署 HuggingFace 模型

MultiGPU && Multi Instance

Config

追加

·
·
·
instance_group [{count: 4kind: KIND_GPUgpus: [ 0, 1 ]}
]

Python Backend

Triton 会根据配置信息启动四个实例,model_instance_device_id 可以获取到 Triton 给每个实例自动分配的 GPU,模型加载到GPU时使用 .to(f"cuda:{gpu}"时指定 GPU 的 id 即可。

import numpy as np
import triton_python_backend_utils as pb_utils
from transformers import ViTImageProcessor, ViTModel
from diffusers import DiffusionPipeline
import torch
import time
import os
import shutil
import json
import numpy as npclass TritonPythonModel:def initialize(self, args):gpu = json.loads(args["model_instance_device_id"])self.model = DiffusionPipeline.from_pretrained("playgroundai/playground-v2.5-1024px-aesthetic",torch_dtype=torch.float16,variant="fp16").to(f"cuda:{gpu}")
·
·
·

Dynamic Batch

开启此配置 Triton 会将一段时间间隔内的请求组成一个batch交给模型批处理

Config

·
·
·
dynamic_batching {max_queue_delay_microseconds: 100
}

Python Backend

此时需要对后端代码进行改造,之前的代码每次只能处理一个请求,GPU仅仅占用30G,对于80G的 GPU 来说实在是浪费资源。SDXL 依次是可以处理多个 Prompt 生成多个图片的,只要不把现存撑爆就行。现在我们要在最大 Batch 的限制内处理多个请求,假设客户端每个请求只包含一个 Prompt。

我们获取到一个请求后不直接输入到模型,而是都添加到 Prompts 列表里,然后统一生成图片,然后把生成的图片和请求一一对应上,最后响应给客户端就OK了。

·
·
·def execute(self, requests):responses = []prompts = []for request in requests:inp = pb_utils.get_input_tensor_by_name(request, "prompt")for i in inp.as_numpy():prompts.append(i[0].decode())images = self.model(prompt=prompts, num_inference_steps=50, guidance_scale=3).imagespixel_values = []for image in images:pixel_values.append(np.asarray(image))inference_response = pb_utils.InferenceResponse(output_tensors=[pb_utils.Tensor("generated_image",np.array(pixel_values),)])responses.append(inference_response)return responses

ONNX_RUNTIME(失败)

转换 playgroundai/playground-v2.5-1024px-aesthetic pipeline 为 onnx 格式

pip3 install diffusers>=0.27.0 transformers accelerate safetensors optimum["onnxruntime"]
optimum-cli export onnx --model playgroundai/playground-v2.5-1024px-aesthetic --task stable-diffusion-xl playground-v2.5_onnx/

在这里插入图片描述

分享已经转换好的文件:

  • 谷歌硬盘

测试一下

from optimum.onnxruntime import ORTStableDiffusionXLPipelinemodel_id = "playground-v2.5_onnx"
pipeline = ORTStableDiffusionXLPipeline.from_pretrained(model_id)
prompt = "sailing ship in storm by Leonardo da Vinci"
image = pipeline(prompt).images[0]
# pipeline.save_pretrained("playground-v2.5-onnx/")

成功加载,发现使用的是 CPU 推理,参考Accelerated inference on NVIDIA GPUs发现默认是用CPU,需要卸载 optimum[“onnxruntime”] 安装 optimum[onnxruntime-gpu]。

pipeline = ORTStableDiffusionXLPipeline.from_pretrained(model_id, provider="CUDAExecutionProvider", device=f"cuda:{gpu}")

FAQ

CPU 推理正常,GPU推理报错,类似这种错误:

  1. [E:onnxruntime:Default, provider_bridge_ort.cc:1480 TryGetProviderInfo_CUDA] /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:1193 onnxruntime::Provider& onnxruntime::ProviderLibrary::Get() [ONNXRuntimeError] : 1 : FAIL : Failed to load library libonnxruntime_providers_cuda.so with error: libcublasLt.so.12: cannot open shared object file: No such file or directory
    解决方法: 安装CUDNN,官方手册
apt install libcudnn8=8.9.2.26-1+cuda12.1 -y
apt install libcudnn8-dev=8.9.2.26-1+cuda12.1 -y
apt install libcudnn8-samples=8.9.2.26-1+cuda12.1 -y
  1. 2024-04-08 15:21:39.497586288 [E:onnxruntime:, sequential_executor.cc:514 ExecuteKernel] Non-zero status code returned while running Add node. Name:‘/down_blocks.1/attentions.0/Add’ Status Message: /down_blocks.1/attentions.0/Add: left operand cannot broadcast on dim 3 LeftShape: {2,64,4096,10}, RightShape: {2,640,64,64}
    在这里插入图片描述
    解决方法:
    未解决,参考 Issue

TENSORRT_RUNTIME

Doing…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/810688.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物联网数据服务平台

随着物联网技术的迅猛发展,海量数据的产生和应用成为推动工业数字化转型的核心动力。在这个数据为王的时代,如何高效地收集、处理、分析并应用这些数据,成为了企业关注的焦点。物联网数据服务平台应运而生,为企业提供了全面、高效…

CLR学习

视频链接:《CLR十分钟》系列之CLR运行模型_哔哩哔哩_bilibili 什么是 CLR 公共语言运行时(Common Language Runtime CLR) 是一个可有多种编程语言使用的 运行时,CLR 的核心功能(比如 内存管理,程序集加载…

耐受强酸碱PFA试剂瓶高纯实验级进口聚四氟乙烯材质取样瓶

PFA取样瓶作为实验室中常备器皿耗材之一,主要用来盛放、储存和运输样品,根据使用条件不同,也可叫特氟龙试剂瓶、样品瓶、储样瓶、广口瓶、进样瓶等。广泛应用于半导体、新材料、多晶硅、硅材、微电子等行业。近年来随着新兴行业的快速发展&am…

【ARM 裸机】开发环境搭建

1、Ubuntu 和 Windows 文件互传 使用过程中,要频繁进行 Ubuntu 和 Windows 的文件互传,需要使用 FTP 服务; 1.1、开启 Ubuntu 下的 FTP 服务 //安装 FTP 服务 sudo apt-get install vsftpd //修改配置文件 sudo vi /etc/vsftpd.conf//重启…

某想主站的短信轰炸漏洞

很难想象主站居然还有这漏洞 某天的一个晚上,默默的打开了电脑,娴熟的打开了Burp suite, 看到一个很熟悉的注册登录页面,开始测试。 很难想象,还有验证码时效性,于是怼了半刻钟,终于让我逮到了他的数据包…

TechTool Pro for Mac v19.0.3中文激活版 硬件监测和系统维护工具

TechTool Pro for Mac是一款专为Mac用户设计的强大系统维护和故障排除工具。它凭借全面的功能、高效的性能以及友好的操作界面,赢得了广大用户的信赖和好评。 软件下载:TechTool Pro for Mac v19.0.3中文激活版 作为一款专业的磁盘和系统维护工具&#x…

IDEA 设置类注释模板作者、日期、描述等信息(推荐标准!)

idea注释模版配置 idea作为越来越多程序员使用的开发工具,平时的代码注释也非常的关键,类上注释和方法上注释每次换电脑或者新同事入职都要统一修改,找了网上好多教程都写的乱七八糟的啥都有,为方便统一就自己写一个操作方法&…

制氧机生产厂家如何确保氧气管道安全高效

制氧机作为生产氧气的关键设备,其安全性与高效性受到了广泛关注。作为制氧机生产厂家,确保氧气管道的安全高效运行,不仅是责任所在,更是对用户生命财产安全的有力保障。那么,制氧机生产厂家如何确保氧气管道安全高效生…

期货量化交易软件:MQL5 中的范畴论 (第 15 部分)函子与图论

概述 在上一篇文章中,我们目睹了前期文章中涵盖的概念(如线性序)如何视作范畴,以及为什么它们的“态射”在与其它范畴相关时即构成函子。在本文中,我们赫兹量化软件将阐述来自前期文章中的概括,即通过查看…

浙大恩特客户资源管理系统 i0004_openFileByStream.jsp 任意文件读取漏洞复现

0x01 产品简介 浙大恩特客户资源管理系统是一款针对企业客户资源管理的软件产品。该系统旨在帮助企业高效地管理和利用客户资源,提升销售和市场营销的效果。 0x02 漏洞概述 浙大恩特客户资源管理系统 i0004_openFileByStream.jsp接口处存在任意文件读取漏洞,未经身份验证攻…

数字证书在网络安全中的关键作用与日常应用

在当今数字化的时代,网络安全问题日益凸显,保护数据安全和用户隐私成为了人们关注的焦点。数字证书作为一种重要的网络安全技术,其在网络安全中扮演着关键的角色,并且在我们的日常生活中有着广泛的应用。现在给大家介绍简单介绍下…

在抖音做“奸商”!虽说不光彩,但能“发大财”!

打工人都知道的一句话:“做老板的都是周扒皮!公司最赚钱的就是老板” 虽然手底下的员工都在骂老板压榨员工,但如果有一个让员工当老板的机会,我相信没有人会选择继续当牛做马 今天我就来给大家介绍一个:我正在做的“…

Flask快速搭建文件上传服务与接口

说明:仅供学习使用,请勿用于非法用途,若有侵权,请联系博主删除 作者:zhu6201976 一、需求背景 前端通过浏览器,访问后端服务器地址,将目标文件进行上传。 访问地址:http://127.0.0…

ChromeOS 中自启动 Fcitx5 和托盘 stalonetray

ChromeOS 更新的飞快,旧文章的方法也老是不好用,找遍了也没找到很好的可以开机自启动 Linux VM 和输入法、托盘的方法。 研究了一下(不,是很久),终于找到个丑陋的实现。 方法基于 ChromeOS 123.0.6312.94…

淄博、哈尔滨、天水…社交媒体助推下的网红城市能“长红”吗?

烧烤卷饼带火山东传统工业小镇淄博; 冰雪狂欢让东北的哈尔滨在寒冬爆火; 一碗麻辣烫让西北天水小城变“网红”…… 在刚刚过去的清明假期,甘肃天水可谓是“热辣滚烫”,在春暖花开时节,迎来了属于它的春天。而被人们逐…

在Spring Boot中使用POI完成一个excel报表导入数据到MySQL的功能

最近看了自己玩过的很多项目,忽然发现有一个在实际开发中我们经常用到的功能,但是我没有正儿八经的玩过这个功能,那就是在Spring Boot中实现一个excel报表的导入导出功能,这篇博客,主要是围绕excel报表数据导入进行&am…

《由浅入深学习SAP财务》:第2章 总账模块 - 2.6 定期处理 - 2.6.1 月末操作:自动清账

2.6.1 月末操作:自动清账 清账是指会计科目的借贷挂账后的核销,包括客户、供应商和实行未清项管理的总账科目等。 总账模块实行未清项管理的科目有GR/IR(Goods Receipt/Invoice Receipt)、银行存款-清账(较少使…

中国历年GDP统计-探数API统计

数据介绍 时间维度:1978年-2021年 单位:亿元 该数据来源于国家统计局发布的中国统计年鉴2021,为按当年价格计算的中国历年GDP以及人均GDP。 数据说明: 数据来源于国家统计局。

【教程】7代核显直通HDMI成功输出 PVE下玩AIO最有性价比的机器

大家好,我是村雨Mura,好久没写教程了,本期是7代核显直通,重点在于HDMI输出画面 本教程理论上适用于4代以后intel带核显CPU,如果你有直通成功经验欢迎评论区分享 前面有点啰嗦,想直接看教程,直…

首个AI营销大模型行业应用标准即将发布,助推行业标准化!

当前生成式人工智能、大模型技术在各行业加快落地。为推动先进技术在产业领域的创新实践,近日,中国信息通信研究院(以下简称「信通院」 )AI研究中心成功组织召开了AIGC产品系列及营销行业应用标准研讨会。东信作为推动营销行业大模…