Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如何设置运行时浮点精度为fp16 #108

Open
likefxz2009 opened this issue May 18, 2022 · 4 comments
Open

如何设置运行时浮点精度为fp16 #108

likefxz2009 opened this issue May 18, 2022 · 4 comments

Comments

@likefxz2009
Copy link

bolt的开发人员你们好,我在使用的过程中遇到如下问题,希望你们可以抽空帮忙看一下
问题1:在使用C API时,我发现并没有多少示例代码,而且我根据API也没有发现设置运行时浮点精度的方式(即模型为fp32的,但是按照fp16的精度计算),难道只有将模型转换为fp16的才能跑fp16代码吗?
问题2:如果只有fp16的模型才能跑fp16代码,那么请问如何设置输入,因为fp16的tensor也是fp16的,难道需要外部给进去fp16的数据吗?

@jianfeifeng
Copy link
Collaborator

你好,

  1. 要用fp16精度跑模型,就需要在转换模型(使用X2bolt)时设置-i参数为FP16;
  2. x86目前不支持fp16精度;arm支持fp16,可以直接传fp16数据

@yuxianzhi
Copy link
Contributor

yuxianzhi commented May 19, 2022

@likefxz2009
Copy link
Author

@jianfeifeng @yuxianzhi 感谢两位的回复,也就是说假设我需要把模型下发到应用里,就必须根据不同的设备下发不同的模型对吧,比如在支持armv8.2的机器上下发fp16的模型,其他机器上下发fp32的模型。
请问一下有没有考虑过开放配置接口,即提供同一个Fp32的模型,如果设置跑fp16的精度,在运行时自行检测设备支持情况,如果支持fp16,则将权重等数据转换到fp16并且使用fp16推理呢?之前使用mnn/tnn等框架时都有这个功能。
再次感谢回复

@yuxianzhi
Copy link
Contributor

Bolt的模型精度转换模块可以提取出来单独调用,只需要保证模型数据结构的精度参数和权重类型是目标类型即可。可以参考X2bolt.cpp部分调用的ms_datatype_converter函数https://github.com/huawei-noah/bolt/blob/c3eb7a22e4f7acc2cc450606d1875666d4b11574/model_tools/src/online_conversion.cpp#L99。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants