WinSCP 基于 SSH 的开源图形化 SFTP 客户端
WinSCP 是一个 Windows 环境下使用的SSH的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能是在本地……...
TNN是一个移动端高性能、轻量级推理框架,同时拥有跨平台、高性能、模型压缩、代码裁剪等众多突出优势。TNN框架在原有Rapidnet、ncnn框架的基础上进一步加强了移动端设备的支持以及性能优化,同时也借鉴了业界主流开源框架高性能和良好拓展性的优点。目前TNN已经在手Q、微视、P图等应用中落地,欢迎大家参与协同共建,促进TNN推理框架进一步完善。
快速开始
使用 TNN 非常简单,如果你有一个已经训练好的模型, 那么一般而言通过以下三个步骤就能完成模型在目标平台上的部署。
第一步是把训练好的模型转换成TNN的模型,为此我们提供了丰富的工具来帮助你完成这一步,无论你使用的是 TensorFlow、PyTorch、或者 Caffe,都可以轻松完成转换。
当你完成了模型的转换,第二步就是编译目标平台的 TNN 引擎了,你可以根据自己的目标平台的硬件支持情况,选择 CPU/ARM/OpenCL/Metal 等加速方案。 对于这些平台,TNN 都提供了一键编译的脚本,使用非常方便。
最后一步就是使用编译好的 TNN 引擎进行推理,你可以在自己的应用程序中嵌入对 TNN 的调用,这方面我们提供了丰富而详实的 demo 来帮助你完成。
从0开始跑通一个iOS Demo
从0开始跑通一个Android Demo
技术方案
目前TNN已经在手Q、微视、P图等应用中落地:
计算优化
针对不同架构在硬件指令发射、吞吐、延迟、缓存带宽、缓存延迟、寄存器数量等特点,深度优化底层算子,极致利用硬件算力
主流硬件平台(CPU: ARMv7, ARMv8, GPU: Mali, Adreno, Apple) 深度调优
CNN 核心卷积运算通过 Winograd,Tile-GEMM, Direct Conv 等多种算法实现,保证不同参数、计算尺度下高效计算
Op 融合:离线分析网络计算图,多个小 Op(计算量小、功能较简单)融合运算,减少反复内存读取、kernel 启动等开销
低精度优化
支持 INT8, FP16 低精度计算,减少模型大小、内存消耗,同时利用硬件低精度计算指令加速计算
支持 INT8 Winograd 算法,(输入6bit), 在精度满足要求的情况下,进一步降低模型计算复杂度
支持单模型多种精度混合计算,加速计算同时保证模型精度
内存优化
高效”内存池”实现:通过 DAG 网络计算图分析,实现无计算依赖的节点间复用内存,降低 90% 内存资源消耗
跨模型内存复用:支持外部实时指定用于网络内存,实现“多个模型,单份内存”。
主流模型实测性能:v0.1 2020.05.29
麒麟970:
Mobilenet_v18812Mobilenet_v1_int855Mobilenet_v25811Mobilenet_v2_int841squeezenet_v1.012720squeezenet_v1.0_int882
骁龙835:
Mobilenet_v19416Mobilenet_v1_int862Mobilenet_v26114Mobilenet_v2_int847squeezenet_v1.012228squeezenet_v1.0_int893
骁龙845:
Mobilenet_v16010Mobilenet_v1_int837Mobilenet_v2398Mobilenet_v2_int828squeezenet_v1.07414squeezenet_v1.0_int856
TNN架构图:
通过 ONNX 支持 TensorFlow, PyTorch, MXNet, Caffe 等多种训练框架,充分利用和融入不断完善的 ONNX 开源生态。当前支持 ONNX 算子55个,近期会完善到约80个,覆盖主流CNN网络
支持主流安卓、iOS、Embedded Linux 操作系统,支持 ARM CPU, GPU 硬件平台(近期还会加入达芬奇 NPU 支持)
模块化设计,将模型解析、计算图构建、优化、底层硬件适配、高性能 kernel 实现各部分抽象隔离,通过 Factory Mode 注册、构建设备,方便接入更多的底层硬件、加速方案。
Runtime 无任何第三方库依赖,CPU 动态库尺寸仅约 400KB,并提供基础图像变换操作,调用简单便捷。跨平台模型统一、调用接口统一,通过单个配置参数快速切换。
WinSCP 是一个 Windows 环境下使用的SSH的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能是在本地……...
Apache Pivot 是一个开放源代码平台,用于构建可安装的Internet应用程序(IIA)。它结合了现代用户界面工……...
Prudence 是一个开源的容器和框架,主要用于可伸缩的web前端和网络服务。Prudence 使用动态脚本语言和基……...
Neo是一个网络——面向网络的数据库——也就是说,它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java……...
微软发布一个初始版的NuPack,这是一个开源的包管理器,可用于微软的.NET软件开发平台。 微软的NuPack技……...
一个类似 WordPress 的产品,使用Java开发。 特点模板 模板安装 模板卸载 在线编辑 完善的开发文档 极致……...
Dubbo是一个被国内很多互联网公司广泛使用的开源分布式服务框架,即使从国际视野来看应该也是一个非常全面的SOA基础框架。作为一个重要的技术研究课题,在当当网我们根据自身的需求,为Dubbo实现了一些新的功能,……
Facebook两年前推出了一个名为“开放计算项目”的计划,旨在打造“开源”数据中心硬件。这意味着,惠普,戴尔和思科等硬件厂商将不能再控制产品设计,转而由Facebook和高盛等客户来控制。它被……
Colly 是一个采用 Go 语言编写的 Web 爬虫框架,旨在提供一个能够写任何爬虫/采集器/蜘蛛的简洁模板。通过 Colly ,你可以轻松从网站中提取结构化的数据,然后进行数据挖掘、处理或归档。 项目特性 清晰明了的 API……