3D大场景模型如何进行轻量化处理,让它能在网站上流畅打开并展示?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3D大场景模型如何进行轻量化处理,让它能在网站上流畅打开并展示?相关的知识,希望对你有一定的参考价值。
3D大场景模型面数多,这时你可以手动在3d软件里进行删面。嫌麻烦的话,可以使用老子云平台进行轻量化处理,操作简单,不用安装软件,也支持多种模型格式。处理完之后,就能在网站上流畅打开模型了! 参考技术A 可以采用实时云渲染技术。像数字孪生、智慧城市这类大型的3D应用,通畅难以在低端的设备、浏览器运行,实时云渲染技术可以解决这个问题,将3D的应用部署在云端,通过云端渲染,再串流传输到本地来显示,用户通过网页打开链接就能访问,同时也不会压缩牺牲模型的品质。 参考技术B (一)
BIM模型处理全流程
从设计模型转换到BIM模型,再到我们最终在电脑或者移动终端看到的模型,中间经历了两个处理过程,一个是几何转换,一个是渲染处理,
这两个处理过程的好坏直接影响到最终轻量化的效果,因此我们也称其为BIM模型轻量化的关键环节,这两个环节是真正考验各个BIM软件厂商技术实力的关键点。
(二)
BIM模型轻量化的关键环节:
1. 几何转换
1.1 微观层面的优化
1) 参数化几何描述:单个构件的轻量化,比如一个圆柱体:通过参数化的方法做圆柱的轻量化。
2) 三角化几何描述:双刃剑
3) 两种描述的对比
1.2 宏观层面的优化
相似性算法减少图元数量:做图元合并,比如保留一个圆柱的数据,其他圆柱我们记录一个引用 + 空间坐标即可。通过这种方式我们可以有效减少图元数量,达到轻量化的目的。
2. 渲染处理
2.1 微观层面的优化
多重LOD(Levels of Detail),加速单图元渲染速度:多重LOD用不同级别的几何体来表示物体,距离越远加载的模型越粗糙,距离越近加载的模型越精细,从而在不影响视觉效果的前提下提高显示效率并降低存储。
单次渲染体量 = 图元数量 * 图元精度。
视点距离远的情况下,图元数量虽然多,但是图元精度比较低,所以体量可控。
视点距离近的情况下,图元精度虽然高,但是图元数量比较少,体量依然可控。
2.2 宏观层面的优化
1) 遮挡剔除,减少渲染图元数量:对图元做八叉树空间索引,然后根据视点计算场景中要剔除掉的图元,只绘制可见的图元。
2) 批量绘制,提升渲染流畅度:绘制调用非常耗费CPU、并且通常会造成GPU时间闲置。为了优化性能、平衡CPU和GPU负载,可以将具有相同状态(例如相同材质)的物体合并到一次绘制调用中,这叫做批次绘制调用。
(三)
理想的轻量化技术方案:轻量化主要从几何转换、渲染处理两个环节着手进行优化,权衡技术利弊及应用需求,理想的技术方案如下:
轻量化模型数据 = 参数化几何描述(必须) + 相似性图元合并;
提升渲染效果 = 遮挡剔除 + 批量绘制 + LOD(可选);
另外多线程调度、动态磁盘交换、首帧渲染优化可大大加速渲染效率
开源了!文心大模型ERNIE-Tiny轻量化技术,又准又快,效果全开
1
大模型落地之路维艰
近年来,随着深度学习技术的迅速发展,大模型预训练范式通过一次次刷新各种评测基线,证明了其卓越的学习与迁移能力。在这个过程中,研究者们发现通过不断扩大模型参数能持续提升深度学习模型的威力。然而,参数的指数级增长意味着模型体积增大、所需计算资源增多、耗时更长,这在业务方对线上响应效率的要求及机器资源预算等层面,都为大模型落地带来了极大的挑战。
如何在保证效果的前提下压缩模型?如何适配CPU、GPU等多硬件的加速?如何让加速工具触手可及?这是行业内亟待解决的课题。现在,PaddleNLP解答了这些难题。
PaddleNLP是基于深度学习框架飞桨的自然语言处理开发库。本次PaddleNLP 最新开源的预训练模型提供“训-压-推”全流程加速方案,不断拓展大模型性能的边界,且大幅降低了各类模型加速技术的使用门槛:
文心ERNIE-Tiny轻量化技术加持的多个文心ERNIE 3.0轻量级模型刷新了中文小模型的SOTA成绩,均已开源;
在下游任务上对模型进行动态裁剪和量化推理,性能加速3倍;
结合高性能文本处理算子库FasterTokenizer,性能加速7倍;
提供CPU和GPU、服务器、端侧等多种部署方案。
图1 PaddleNLP“训-压-推”全流程加速方案
2
整套模型轻量化技术亮相
文心ERNIE-Tiny在线蒸馏方案
蒸馏,通俗来说是通过将大模型(可以理解为“教师模型”)的知识传递给小模型(可以理解为“学生模型”),使得大模型的能力能够迁移到小模型上。蒸馏技术大家可能并不陌生,但是如今动辄百亿、千亿的大模型,如何有效蒸馏到小模型,是一个棘手的问题。由于教师模型与学生模型尺寸差距千倍以上,模型蒸馏难度极大,甚至有失效的风险。为此,文心ERNIE-Tiny[1]在线蒸馏方案引入了助教模型进行蒸馏,利用助教作为知识传递的桥梁以解决学生模型和大模型表达空间相距过大的问题,从而促进蒸馏效率的提升。
图2 模型蒸馏示意
文心ERNIE-Tiny在线蒸馏技术将教师模型的知识信号传递给若干个学生模型同时训练,从而在蒸馏阶段一次性产出4个不同尺寸的学生模型。此外,本次还开源了12L768H的文心ERNIE 3.0-Base,方便不同性能需求的应用场景使用。
文心ERNIE 3.0-Base (12-layer, 768-hidden, 12-heads)
文心ERNIE 3.0-Medium (6-layer, 768-hidden, 12-heads)
文心ERNIE 3.0-Mini (6-layer, 384-hidden, 12-heads)
文心ERNIE 3.0-Micro (4-layer, 384-hidden, 12-heads)
文心ERNIE 3.0-Nano (4-layer, 312-hidden, 12-heads)
文心ERNIE-Tiny在线蒸馏方案效果显著,模型参数压缩率可达99.98%,压缩版模型仅保留0.02%参数规模就能与原有模型效果相当,刷新了中文小模型的SOTA成绩。具体对比数据见如下模型“精度-时延”图,横坐标表示性能(Latency,单位毫秒,在长文本分类数据集IFLYTEK上测试,单个样本的推理时长),纵坐标表示模型在CLUE10个任务上的平均精度。图中模型名称下方标注了模型的参数量。
图3 CPU下文心ERNIE 3.0轻量级模型时延与效果图
图4 GPU下文心ERNIE 3.0轻量级模型时延与效果图
图中,越偏左上方的模型越优秀,可以看到文心ERNIE 3.0轻量级模型在同等规模的开源模型中,综合实力领先其他同类型轻量级模型,这波开源厉害了!与RoBERTa-Base相比,12L768H的文心ERNIE 3.0-Base平均精度绝对提升了1.9个点,比同等规模的BERT-Base-Chinese提升3.5个点;6L768H的文心ERNIE 3.0-Medium相比12L768H的UER/Chinese-RoBERTa,在节省一倍运算时间基础上,获得比两倍大的RoBERTa更好的效果;另外值得一提的是,这些小模型能够直接部署在CPU上,可以称得上是CPU开发者的“希望之光”。
在PaddleNLP中,可一键加载以上模型。
图5 代码展示
此外,PaddleNLP还提供了CLUE Benchmark的一键评测脚本,并提供了大量中文预训练模型在CLUE上的效果。PaddleNLP接入了Grid Search策略,支持在超参列表范围内自动搜索超参,保留最佳结果和对应的超参数,方便一键复现模型效果,且打通了CLUE各个任务“数据处理-训练-预测-结果提交”的流程,方便用户快速提交CLUE榜单[2]。
以上模型均已开源,欢迎star支持
⭐ 点击阅读原文获得链接 ⭐
https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/ernie-3.0
动态裁剪和量化推理
上一节介绍了任务无关的模型蒸馏技术,如果想要进一步提升模型性能,还可以在下游任务上对模型Fine-tune后,通过裁剪、量化等手段,获得更小、更快的模型。
结合飞桨模型压缩工具PaddleSlim,PaddleNLP发布了裁剪、量化级联压缩方案。基于PaddleNLP Trainer API的模型压缩API,可大幅降低开发成本。压缩API支持对文心ERNIE、BERT等Transformers类下游任务微调模型进行裁剪和量化。只需要简单地调用compress()即可一键启动裁剪量化流程,并自动保存压缩后的模型。
图6 PaddleNLP模型裁剪、量化使用示例
速度领先的文本处理库
FasterTokenizer
文心ERNIE-Tiny在线蒸馏技术加持的文心ERNIE 3.0轻量级模型本身已经“又快又准”,再加上裁剪、量化策略以及飞桨高性能文本处理算子库FasterTokenizer就能实现更强大的加速效果,如下图所示:
图7 GPU下多种性能优化策略的加速比展示
如图,FasterTokenizer在文心ERNIE 3.0轻量级模型裁剪、量化基础上性能加速达到7倍。仔细研读一番代码,我们会发现,PaddleNLP已将Google于去年底发布的LinMaxMatch[3]算法,集成至FasterTokenizer。该算法通过结合Aho-Corasick字符串匹配算法,保证字符串在失配时可以将遍历过的字符保存为若干个tokens,并快速跳至失配节点,避免从头匹配,计算复杂度MaxMatch的O(N2) 优化至O(N)。与Hugging Face的中文切词效率进行对比,PaddleNLP FasterTokenizer速度显著领先。例如在iflytek数据集(平均长度289)上,FasterTokenizer比Hugging Face Tokenizers加速3倍以上。
图8 同类产品中文切词效率对比
为了降低开发门槛,把“酷炫”的底层技术大范围普及,PaddleNLP做出了出色的设计。在调用AutoTokenizer时,只需进行参数配置,即可开启 FasterTokenizer,方便大家使用。
图9 FasterTokenizer调用方法
多种部署方案
飞桨提供了服务端、移动端、网页前端等丰富的部署工具。PaddleNLP本次围绕文心ERNIE 3.0发布了一系列高性能部署方案,且通过Paddle2ONNX转换工具进一步拓宽了飞桨模型的部署通路,适用于多场景的部署需求。用户可参照官方提供的完整示例,快速部署上线,包括Python服务端部署、Triton Inference Server服务化部署、Paddle Serving服务化部署、ONNXRuntime部署等多个示例。
图10 飞桨部署方案说明
3
文心ERNIE-Tiny技术实际应用落地介绍
实际案例 1
某医疗行业用户使用通用信息抽取技术UIE,结合文心ERNIE 3.0-Medium提升了效果和性能:
A同学使用UIE对医疗领域的病历文本进行实体抽取和关系抽取,在其特定数据集上,使用6L768H的文心ERNIE 3.0-Medium获得与12L768H模型相当的效果,速度提升一倍。
实际案例 2
某金融行业用户使用文心ERNIE 3.0-Mini实现业务技术升级:
B同学部门没有GPU资源,一直都在使用RNN模型进行文档自动归档工作。替换成文心ERNIE 3.0-Mini模型后,顺利部署到CPU机器上。使用PaddleNLP,仅用一天时间就完成了模型的部署上线。
实际案例 3
某互联网行业用户使用文心ERNIE 3.0-Base实现效果、性能双提升:
C同学在公司文本分类和阅读理解任务上,分别使用了文心ERNIE 1.0和文心ERNIE-Gram模型,之后替换成文心ERNIE 3.0-Base模型,再配套PaddleNLP中的裁剪、量化策略,效果和性能双双提升。
4
干货福利
Notebook教程
PaddleNLP还提供了一系列围绕文心ERNIE 3.0的Notebook交互式教程,方便大家快速上手实践,可进入官方地址自取。
图11 ERNIE 3.0应用示例
官网地址
更多干货,可进入官网来获取。小编送上传送门:
https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/ernie-3.0
入群有礼
欢迎加入技术交流群
共享落地经验
入群福利:
与众多社区开发者以及官方团队深度交流;
及时获取PaddleNLP最新技能;
获取10G重磅NLP学习大礼包。
图12 PaddleNLP学习大礼包
5
PaddleNLP:不忘初心
感谢广大开发者的支持
PaddleNLP一路陪伴着广大开发者的成长。今年5月,PaddleNLP开源的通用信息抽取技术UIE颇受好评,被应用上线到金融、医疗、法律、互联网、泛工业等各行各业。PaddleNLP团队针对模型轻量化、部署便捷化等社区高频需求不断迭代产品功能,希望能够持续给大家带来惊喜。社区开发者们也始终伴随PaddleNLP的成长,给予我们真诚的反馈,并积极投入到PaddleNLP的项目建设中,感谢大家,我们一起在路上!
PaddleNLP频频登上GitHub Trending榜单,广受国内外开发者欢迎;
社群氛围活跃,信息抽取UIE技术发布一个月后热度不减,频获好评;
版本持续更新,100多位开发者贡献,入选《2021中国开源年度报告》最活跃产品榜单。
图13 PaddleNLP影响力动图
了解更多
官网地址:
https://www.paddlepaddle.org.cn
PaddleNLP 项目地址:
GitHub:https://github.com/PaddlePaddle/PaddleNLP
Gitee: https://gitee.com/paddlepaddle/PaddleNLP
参考来源
[1] ERNIE-Tiny: A Progressive Distillation Framework for Pretrained Transformer Compression.
见 https://arxiv.org/abs/2106.02241
[2] https://www.cluebenchmarks.com/
[3] Fast WordPiece Tokenization.
见 https://arxiv.org/abs/2012.15524
关注【飞桨PaddlePaddle】公众号
获取更多技术内容~
以上是关于3D大场景模型如何进行轻量化处理,让它能在网站上流畅打开并展示?的主要内容,如果未能解决你的问题,请参考以下文章