范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

以AnimatedDrawingsAPP为例,用TorchServe进行模型调优

  内容导读
  上节介绍了 TorchServe 模型部署调优的 5 个步骤,本节以 Animated Drawings APP 为例,实际演示 TorchServe 的模型优化效果。
  本文首发自微信公众号:PyTorch 开发者社区
  去年,Meta 凭借 Animated Drawings 应用程序,用 AI 让儿童手工画「动」了起来,静态简笔画秒变动画~
  Animated Drawings 制作流程
  Animated Drawings 动态效果
  Demo 传送门:
  https://sketch.metademolab.com/
  这对于 AI 来说并不简单。AI 的设计初衷是为了处理真实世界中的图像,儿童绘画与真实图像相比,形态和风格迥异,更具有复杂性及不可预测性,因此先前的 AI 系统可能并不适用于处理 Animated Drawings 类似的任务。
  本文将以 Animated Drawings 为例,详细讲解如何借助 TorchServe,对即将部署到生产环境中的模型进行调优。
  4 大因素影响生产环境中的模型调优
  下面的工作流程展示用 TorchServe 在生产环境中进行模型部署的总体思路。
  用 TorchServe 为生产环境中的模型调优的基本流程
  大多数情况下,部署模型到生产环境中是基于吞吐量 (throughput) 或延迟 (latency) 服务级别协议 (SLA) 进行优化的。
  通常实时应用程序 (real-time application) 更关心延迟,而离线应用程序 (off-line application) 则更关心吞吐量。
  对于部署到生产环境中的模型,影响性能的因素众多,本文重点介绍 4 个:
  1. Model optimizations
  这是将模型部署到生产环境的前置步骤,包括量化、剪枝、使用 IR graphs(PyTorch 中的 TorchScript)、融合内核及其他众多技术。目前,TorchPrep 中提供很多类似技术作为 CLI 工具。
  更多关于 Torchprep 的相关简介,请访问:
  https://github.com/msaroufim/torchprep
  2. Batch inference
  它是指将多个 input 输入到一个模型中,在训练过程中会频繁用到,对于在推理阶段控制成本也很有帮助。
  硬件加速器对并行进行了优化,batching 有助于充分利用计算能力,这经常导致更高的吞吐量。推理的主要区别在于无需等待太久,就能从客户端获得一个 batch,也就是我们常说的动态批处理 (dynamic batching)。
  3. Numbers of Workers
  TorchServe 通过 worker 部署模型。TorchServe 中的 worker 属于 Python 进程,拥有用于推理的模型权重副本。worker 数量太少,无法从足够的并行性中受益;worker 数量太多,又会导致 worker contention 及端到端性能降低。
  4. Hardware
  根据模型、应用程序及延迟、吞吐量预算,从 TorchServe、CPU、GPU、AWS Inferentia 中选择一个合适的硬件。
  有些硬件配置是为了获取最好的 class 性能,有些是为了更符合预期的成本管控。实验表明,batch size 较大时更适合选用 GPU;batch size 较小或要求低延迟时,选用 CPU 和 AWS Inferentia 则更具备成本优势。
  Tips 分享:TorchServe 性能调优的注意事项
  开始之前, 我们先分享一些用 TorchServe 部署模型、获得最佳性能的 Tips。
  * 学习 PyTorch 官方教程:
  https://pytorch.org/tutorials/
  硬件选择与模型优化选择也是紧密联系的。
  * 模型部署的硬件选择,与延迟、吞吐量预期以及每次推理的成本密切相关。
  由于模型大小和应用的不同, CPU 的生产环境通常无法负担类似计算机视觉模型的部署, 大家可以注册使用 OpenBayes.com,注册即送 3 小时 RTX3090,每周还赠送 10 小时 RTX3090,满足一般的 GPU 需求。
  此外,最近添加到 TorchServe 中的 IPEX 等优化,使得这类模型的部署成本更低、更能被 CPU 负担。
  IPEX 优化模型部署详见:
  https://pytorch.org/tutorials/intermediate/torchserve_with_ipex.html
  *  TorchServe 中的 worker 属于 Python 进程, 可以提供并行, 应谨慎设定 worker 数量。 默认情况下 TorchServe 启动的 worker 数量等于主机上的 VCPU 或可用 GPU 数量,这可能会给 TorchServe 启动增加相当长的时间。
  TorchServe 公开了一个 config property 来设置 worker 的数量。为了让多个 worker 提供高效并行并避免它们竞争资源,建议在 CPU 和 GPU 上设置以下 baseline:
  CPU: 在 handler 中设置  torch.set _ num _ thread (1)  。然后将 workers 的数量设置成  num physical cores / 2 。但最好的线程配置可以通过利用 Intel CPU launcher script 来实现。
  GPU: 可用 GPU 的数量可以通过 config.properties 中的  number_gpus  进行设置。TorchServe 使用循环分配 worker 到 GPU。建议: Number of worker = (Number of available GPUs) / (Number of Unique Models) 。注意, pre-Ampere 的 GPU 不提供任何与 Multi Instance GPU 的资源隔离。
  *  Batch size 直接影响延迟和吞吐量。 为了更好地利用计算资源,需要增加 batch size。在延迟和吞吐量之间存在 tradeoff;较大的 batch size 可以提高吞吐量,但也会导致较高的延迟。
  TorchServe 中有两种设置 batch size 的方式, 一种是通过 config.properties 中 model config 进行,另一种使用 Management API 来 registering model。
  下节展示如何用 TorchServe 的 benchmark suite 来决定模型优化中硬件、worker 和 batch size 的最佳组合。
  认识 TorchServe Benchmark Suite
  要使用 TorchServe benchmark suite,首先需要一个 archived file,即上文提过的  .mar  文件。该文件包含模型、handler 和其他所有用来加载和运行推理的其他 artifacts。Animated Drawing APP 使用 Detectron2 的 Mask-rCNN 目标检测模型
  运行 benchmark suite
  TorchServe 中的 Automated benchmark suite 可以在不同 batch size 和 worker 设置下,对多个模型进行基准测试,并输出报告。
  了解 Automated benchmark suite:
  https://github.com/pytorch/serve/tree/master/benchmarks#auto-benchmarking-with-apache-bench
  开始运行: git clone https://github.com/pytorch/serve.git cd serve/benchmarks pip install -r requirements-ab.txt apt-get install apache2-utils
  在 yaml 文件中配置模型 level 设置: Model_name:     eager_mode:         benchmark_engine: "ab"         url: "Path to .mar file"         workers:             - 1             - 4         batch_delay: 100         batch_size:             - 1             - 2             - 4             - 8         requests: 10000         concurrency: 10         input: "Path to model input"         backend_profiling: False         exec_env: "local"         processors:             - "cpu"             - "gpus": "all"
  这个 yaml 文件将被  benchmark_config_template.yaml  引用。Yaml 文件中包括用于生成报告的其他设置,也可以用 AWS Cloud 查看 logs。 python benchmarks/auto_benchmark.py --input benchmark_config_template.yaml
  运行 benchmark,结果被保存在一个 csv 文件中,可以在  _/tmp/benchmark/ab_report.csv_  或完整报告  /tmp/ts_benchmark/report.md  中找到。
  结果包括 TorchServe 平均延迟、模型 P99 延迟 (model P99 latency)、吞吐量、并发 (concurrency)、请求数、handler time 及其他 metrics。
  重点跟踪以下影响模型调优的因素:并发、模型 P99 延迟、吞吐量 。
  这些数字要与 batch size、使用的设备、worker 数量以及是否做了模型优化结合起来看。
  这个模型的 latency SLA 已经设置为 100 ms,这是个实时应用程序,延迟是很重要的问题,在不违反 latency SLA 的情况下,吞吐量最好尽可能高。
  通过搜索空间,在不同的 batch size (1-32)、worker 数量 (1-16) 和设备 (CPU, GPU) 上运行一系列实验,总结出最好的实验结果,见下表:
  这个模型在 CPU 上的延迟、batch size、并发和 worker 数量等方面进行的所尝试,都没有到 SLA,实际上延迟降低了 13 倍。
  将模型部署移动到 GPU 上,可以立即将延迟从 305ms 降到 23.6ms。
  可以为模型做的最简单的优化之一,就是把它的精度降低到 fp16,一行代码  (model. half ())  ,可以减少 32% 的模型 P99 延迟 ,并增加几乎相同数量的吞吐量。
  模型优化方法还有将模型转化为 TorchScript 并使用  optimation_for_inference  或其他技巧(包括 onnx 或 tensort runtime optimizations)进行优化,这些优化利用了 aggressive fusions 。
  在 CPU 和 GPU 上,设置  number of workers=1  对于本文的 case 效果最好。
  * 将模型部署到 GPU,设置  number of workers = 1 ,  batch size = 1 ,吞吐量增加 12 倍相比于 CPU 上 降低 13 倍延迟。
  * 将模型部署到 GPU,设置  model.half() 、 number of workers = 1  、  batch size = 8 ,可以获得吞吐量和可承受的延迟方面的最佳结果。与 CPU 相比,吞吐量增加 25 倍,延迟仍然满足 SLA (94.4 ms)。
  注意: 如果正在运行 benchmark suite,请确保设置了适当的  batch_delay ,将并发性的请求设置为与 batch size 成比例的数字。这里的并发性是指发送到服务器的并发请求的数量。
  总结
  本文介绍了 TorchServe 在生产环境中调优模型的注意事项及性能优化方法 TorchServe benchmark suite,使用户对模型优化、硬件选择和总体成本的可能选择有了更深入的了解。
  推荐用户:
  获取 13 小时 RTX3090 算力资源:
  https://openbayes.com/
  查看「用 PyTorch 进行深度学习」在线教程:
  https://openbayes.com/docs/tutorial-jupyterlab-deep-learning-with-pytorch
  关注  PyTorch 开发者社区 公众号,获取更多 PyTorch 技术更新、最佳实践及相关资讯!

reactor的实现备注以下代码只是架构,具体编译不能通过,仍需修改defineBUFFERLEN1024defineMAXEPOLLEVENT1024typedefint(NCALLBACK)(in资讯负债近1。9亿元,严重资不抵债,力帆科技子公司申请破产清算文懂车帝原创常思玥懂车帝原创行业日前,力帆科技(集团)股份有限公司(以下简称力帆科技)发布官方公告,称其全资子公司河南力帆新能源电动车有限公司(以下简称河南力帆)将向法院申请破产清香港意难忘绝对不输北美意难忘,爱恨情仇的拉扯,一步登天的事业王菲和谢霆锋自复合以来首次正大光明的牵手走机场,或许他们一直是正大光明,不能正确看待的可能是吃瓜群众。经过长达24年的爱恨情仇的极限拉扯,这对相差11岁的情侣再次像20年前一样不惧中国古人有多聪明?从历代科技史里一窥科学家精神中国是历史悠久的文明古国,勤劳智慧的各族儿女在创造性生产劳动和社会生活中,谱写了中国古代科技发展光辉篇章。从远古制作工具夏商周时期的科技探索,乃至历朝历代在农业工业建筑医学水利天文上海首个音乐人工智能创新基地成立,探索艺术技术结合新路径幕后配乐虚拟偶像ChatGBT创新跨界开放,正在成为人工智能时代下新的人才标准。上海音乐学院音乐工程系主任于阳教授在音创微课上讲述幕后配乐虚拟偶像ChatGBT等前沿知识。这是首个代表委员热议教育发展科技创新人才培养一体推进三链贯通融合点燃高质量发展智慧引擎左图创晶科技中心项目是临港新片区科技城园区的首发项目。本报记者邢千里摄右图上海交通大学李政道研究所实验室一角。本报记者袁婧摄制图冯晓瑜教育科技人才是全面建设社会主义现代化国家的基础编程世界里筑梦智能车小马智行副总裁广深研发中心负责人莫璐怡实现无人驾驶是莫璐怡的梦想。扫码看女企业家精彩人生莫璐怡莫璐怡,一位在广州海珠区长大的靓女,正挥舞着由代码编织而成的双翼,翱翔在人类向无人驾驶奇瑞控股集团董事长尹同跃希望捷途汽车2025年实现年销百万辆的目标本报记者夏治斌石英婧上海报道奇瑞集团将全力支持捷途汽车实现2026年年销百万辆的目标,我们希望争取提前1年实现。日前,在以旅行见世界为主题的捷途汽车第二届旅行大会上,奇瑞控股集团董让人不省心的父亲网图,侵删自从母亲病情加重以来,我觉得父亲变懂事了很多,常常在母亲面前说他的好话,谁知好景不长,父亲又打回了原形,不但让人不省心,还让人特别担心。第一个担心是喝酒,自从两年多前因肿莞城用好历史文化街区,推进文旅文创融合发展莞城拥有1260多年的建城史,是东莞的根和魂,历史文化底蕴深厚,汇聚众多岭南历史文化资源,是推进高质量发展不可多得的宝贵财富。近日,莞城街道党工委书记陈钊带队到莞城各历史文化街区调散文丨公交开进家门文宋世兵佬佬,身体好得差不多了,我和你娘商量,准备回乡下去了。80岁的老爹眼巴巴地望着我,似乎期待我的准许,然而一旁的母亲早已收拾好行李,又不容我置疑。还是在我这里多休息两天,再回
战争军团经常高pin延迟高的解决办法BattleLegion战争军团玩家组队和另一队玩家对抗,玩家在游戏中要部署士兵防守自己的阵地,保护国王不被怪物攻击。玩法技巧玩家战斗面对战场上的其他玩家并从他们的策略中学习。玩家早上起床怎么喝水才对!有许多养生方面的专家在各种媒体上讲了关于如何喝水的问题,答案各不相同甚至互相矛盾。有人说早上起床先喝一杯热开水,有人说早上起床先喝一杯凉开水,还有人说早上起床先喝一杯温开水,甚至有视力恢复到5。0不戴眼镜真能治愈近视眼睛的降低度数方法分为两类,一类是必要条件也就是只要不做就没效果的另一类是充分条件也就是做了就像催化剂一样更快实现效果。眼睛恢复的必要条件1。早睡,不要再伤害肝了。我现在都是11点哪里有职工,哪里就有娘家人的加油站四川工会户外劳动者服务站点建设综述劳动者港湾职工驿站暖心小屋森林职工之家环卫工人之家无论叫法是哪种,它们都有个共同的名字工会户外劳动者服务站点。近年来,在四川省总工会统一部署下,大力推动全省户外劳动者服务站点建设,千年之争秦始皇焚书坑儒的功与过秦始皇,这位建立了中国第一个真正统一国家的千古一帝,在他死后的两千多年里,各方对他的评价褒贬参半各有毁誉。秦始皇开创了垂二千年而弗能改的封建郡县制度,对后世产生了深远的影响。人们在历史上唯一被老婆气死的皇帝是北魏孝文帝拓跋宏孝文帝的妻子究竟犯下什么严重的错误,竟然把他气死?要知道,孝文帝也并非等闲之辈,他文武兼备,雄才伟略,建立了丰功伟绩,是中国历史上杰出的少数民族政治家改革家。魏文帝孝文帝一生中有二诸葛亮首次北伐时,失去了11位大将,仅看名单就知道他败得有多惨说起三国就绕不开诸葛亮,说起诸葛亮就不得不提诸葛武侯的五次北伐,克复中原。诸葛亮一生为蜀汉肝脑涂地,以克服中原为己任,事无巨细最终也是病死在第五次北伐的路上,让蜀汉损失了擎天之柱,虎步关右曹魏征西将军夏侯渊(五)马超凉州再起兵,秒才征伐遭溃败话说,梁兴为何敢在长安周遭闹事,他难道不知道自己这样会招来夏侯渊的剿除吗?他当然很清楚,甚至是故意而为之。因为他跟凉州一个更大的反曹势力遥相呼应,而这历史区划张明福阮桂林恩县名称由来及建制沿革平原县的恩城镇,是老恩县的县城所在地。处于职业的敏感,每当路过此地,我都会产生一种将恩县的名称来由和建置沿革写出来变成铅字的冲动。因为上世纪八十年代,德州地区当时所辖的13个县市区历史上的今天2023。03。13历史上的今天今天是2023年的第72天。1084年宋代女词人李清照出生。1639年为纪念约翰哈佛,哈佛大学正式得名。1921年蒙古宣布与中国脱离关系。1947年延安保卫战开始。19我国5000多个姓氏中,有6个姓氏从未衰落过,是你的姓氏吗?姓氏是中国血脉延续的象征,从上古时期到至今,至少延续了几千多年的历史了,在我国炎黄两帝的部落时期,姓氏就已经开始出现,不过是由部落图腾演化而来。刚开始的姓氏非常少,直到宋朝时,才发