赞
踩
2023腾讯犀牛鸟开源人才培养计划
开源项目介绍
扫码填写问卷报名,提交ncnn项目申请书
加入开发实践
与导师一起成长这一夏
ncnn 项目介绍
ncnn是一个为手机端极致优化的高性能神经网络前向计算框架。基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖。
ncnn 项目导师寄语
倪辉,ncnn作者
ncnn是业界知名的AI推理框架,社区支持很好,参与研发是能学到知识和技术的,导师会很耐心帮助你的,对吧对吧!
ncnn 相关资料
ncnn 优秀开源 AI 应用大典:
https://github.com/zchrissirhcz/awesome-ncnn
https://github.com/Baiyuetribe/ncnn-models
ncnn 架构技术视频:
https://b23.tv/mv7rea1
ncnn 任务实战项目
编程任务
1(easy) rewrite logsoftmax and logsigmoid to ncnn ops in pnnx
在pnnx中将 logsoftmax和logsigmoid重写为ncnn的op
ncnn有log和softmax sigmoid算子实现,但没有 logsoftmax和logsigmoid
pnnx具备graph rewriter基础设施,可以实施M个op到N个op的改写
goals:
在pnnx中实现logsoftmax和logsigmoid的转换到ncnn
添加pnnx ncnn相关的单元测试
撰写有关pnnx graphrewriter技术文章
1(easy) infrastructure for NCNN_LOGE in vulkan glsl shader
vulkan glsl shader 支持 NCNN_LOGE 的基础设施
利用 GL_EXT_debug_printf 相关基础设施,实现在 ncnn shader 的调试打印功能
需要运行时相关vulkan扩展检查和启用
goals:
在需要时有 cmake 编译开关启用 NCNN_LOGE
保持兼容各种vulkan设备
1(easy) in-house math routines
无依赖的数学函数
Some embedded platforms may not provide math library by default.
For maximum portability, it is beneficial to add in-house math routines, like simpleomp simpleocv simplestl did the similar jobs
某些嵌入式默认不提供math库,添加无依赖的数学函数增加可移植性,就像simpleomp simpleocv simplestl那样
goals:
implement all math functions used in ncnn without math.h, eg exp log sin abs etc
add cmake option NCNN_SIMPLEM for enabling
add continuation integration
2(easy) pnnx python wrapper
pnnx python 封装
Though we have prebuild pnnx binary package, it is still not convenient enough to convert pytorch module into pnnx directly in python programming.
Passing input tensor shapes as command line arguments are error-prone.
虽然我们有预编译二进制包,但是在python编程中直接转换pytorch模块到pnnx依然不够方便
将输入tensor shape作为命令行参数也容易出错
goals:
create python wrapper for invoking command line pnnx executable with arguments
allow exporting torch module in python with pnnx(net, (a, b), "out.pnnx")
add continuation integration for releasing pypi package
pip install pnnx on windows/linux/macos
3(medium) optimize loongarch gemm
优化 loongarch gemm
write gemm_loongarch.cpp with lsx extension
test with qemu
利用lsx扩展优化实现gemm_loongarch.cpp,使用qemu测试
goals:
support any packed layout
good benchmark result
4(medium-hard) optimize risc-v gemm
优化 risc-v gemm
write gemm_riscv.cpp with risc-v vector extension and zfh(fp16)
test with qemu
利用risc-v vector和zfh(fp16)扩展优化实现gemm_riscv.cpp,使用qemu测试
goals:
support any packed layout and fp32/fp16
good benchmark result
5(medium-hard) optimize vulkan softmax with shared memory and subgroup operation
使用 shared memory 和 subgroup 操作优化 vulkan softmax
The reduction part in softmax vulkan implementation is quite naive, no use of any shared memory or subgroup operation.
A decent speedup could be expected if we apply these technologies.
As softmax is a major time consuming guy inside attention op, we could get much faster stable-diffusion vulkan.
softmax vulkan中的reduce部分实现相当简单,没有用到任何shared memory和subgroup操作
如果我们用上这两个技术,可以获得相当不错的加速
由于softmax是attention op中的耗时大户,这样也能加速stable-diffusion vulkan
goals:
implement reduction in softmax vulkan with shared memory and subgroup operation, for all axis and data types
test speed on desktop gpu and mobile phone gpu
6(insanely hard) large language model with ncnn
ncnn 部署大语言模型
It seems to be a paper task, but if you want to be the conqueror, we could help ;)
make LLM trace-able and export to torchscript, convert with pnnx, optimize attention fusing ....
experienced cpp programming skill is essential
一眼看是纸上谈兵,但如果你想,我们能帮 ;)
将LLM可trace,导出torchscript,用pnnx转换,优化attention合并....
需要经验丰富的cpp编程经验
ncnn 开源项目交流群
Pocky QQ群(MLIR YES!)677104663(超多大佬)
答案: multilevel intermediate representation
Telegram Group https://t.me/ncnnyes
Discord Channel https://discord.gg/YRsxgmF
Apache InLong 开源项目交流群
(该二维码至7月17日前有效)
Cherry Markdown 开源项目交流群
OpenCloudOS 开源项目交流群
OMI 开源项目交流群
(该二维码至7月17日前有效)
TencentOS Tiny 开源项目交流群
TDesign 开源项目交流群
(该二维码至7月17日前过期)
Tencent KonaJDK 开源项目交流群
(该二维码至7月17日前有效)
3TS 开源项目交流群
(该二维码至7月17日前有效)
更多开源项目信息,
尽在“腾讯开源人才社区”
扫码加入,解锁所有学习资料
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。