V100显卡无法支持dolly系列模型BP16运算及BP16与FP16模型转换解决方式

本文主要是介绍V100显卡无法支持dolly系列模型BP16运算及BP16与FP16模型转换解决方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目场景:

在模型训练过程中,可能会出现由BP16类型的模型需要转换到FP16类型的模型的需求,我研究了半天才试验出来,分享一个在实际过程中方便更改并能跑通的处理过程如下。


问题描述

V100无法支持BP16运算。 BP16类型的模型转换到FP16l类型的模型解决办法


原因分析:

在使用V100显卡进行模型训练:模型数据在加载及实际运算过程中会由自身配置的参数设定进行加载和运算,使用huggingface的transfomer库中的AutoModel.from_pretrained(“model_name_or_path”)虽然能正常加载,但在运算时会进行报错,需要我们使用FP类型的数据在V100显卡上进行运算。


解决方案:

修改模型加载方式及训练过程中数据类型为FP类型

例如:以dolly-v**系列模型举例,模型的本身数据类型为bfloat16,运算过程中也是这种格式,导致此模型无法再V100这种不支持BF类型的显卡上运行。
我们需要先将模型默认的数据类型修改为FP类型,直接在模型的config.json文件中修改,处理方式如下:
在这里插入图片描述
然后在训练的参数配置中设置bp=False,不转换为BP类型,设置fp16=True,这样会将我们原先加载的float32数据类型的模型转换为fp16数据类型进行模型的运算(会有一定的精度损失)。
在这里插入图片描述
小提示:congfig.json文件中定义的 "torch_dtype": "bfloat16",我们改为"torch_dtype": “float32”,如果直接改为“float16”会出现比较大的精度损失(BP16和FP32的数值表示范围一致,而FP16的表示范围要小得多)

这篇关于V100显卡无法支持dolly系列模型BP16运算及BP16与FP16模型转换解决方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/332575

相关文章

linux打包解压命令方式

《linux打包解压命令方式》文章介绍了Linux系统中常用的打包和解压命令,包括tar和zip,使用tar命令可以创建和解压tar格式的归档文件,使用zip命令可以创建和解压zip格式的压缩文件,每... 目录Lijavascriptnux 打包和解压命令打包命令解压命令总结linux 打包和解压命令打

解决java.lang.NullPointerException问题(空指针异常)

《解决java.lang.NullPointerException问题(空指针异常)》本文详细介绍了Java中的NullPointerException异常及其常见原因,包括对象引用为null、数组元... 目录Java.lang.NullPointerException(空指针异常)NullPointer

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

Python3脚本实现Excel与TXT的智能转换

《Python3脚本实现Excel与TXT的智能转换》在数据处理的日常工作中,我们经常需要将Excel中的结构化数据转换为其他格式,本文将使用Python3实现Excel与TXT的智能转换,需要的可以... 目录场景应用:为什么需要这种转换技术解析:代码实现详解核心代码展示改进点说明实战演练:从Excel到

Python中常用的四种取整方式分享

《Python中常用的四种取整方式分享》在数据处理和数值计算中,取整操作是非常常见的需求,Python提供了多种取整方式,本文为大家整理了四种常用的方法,希望对大家有所帮助... 目录引言向零取整(Truncate)向下取整(Floor)向上取整(Ceil)四舍五入(Round)四种取整方式的对比综合示例应

python安装whl包并解决依赖关系的实现

《python安装whl包并解决依赖关系的实现》本文主要介绍了python安装whl包并解决依赖关系的实现,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录一、什么是whl文件?二、我们为什么需要使用whl文件来安装python库?三、我们应该去哪儿下

MySQL安装时initializing database失败的问题解决

《MySQL安装时initializingdatabase失败的问题解决》本文主要介绍了MySQL安装时initializingdatabase失败的问题解决,文中通过图文介绍的非常详细,对大家的学... 目录问题页面:解决方法:问题页面:解决方法:1.勾选红框中的选项:2.将下图红框中全部改为英

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

将java程序打包成可执行文件的实现方式

《将java程序打包成可执行文件的实现方式》本文介绍了将Java程序打包成可执行文件的三种方法:手动打包(将编译后的代码及JRE运行环境一起打包),使用第三方打包工具(如Launch4j)和JDK自带... 目录1.问题提出2.如何将Java程序打包成可执行文件2.1将编译后的代码及jre运行环境一起打包2

C++一个数组赋值给另一个数组方式

《C++一个数组赋值给另一个数组方式》文章介绍了三种在C++中将一个数组赋值给另一个数组的方法:使用循环逐个元素赋值、使用标准库函数std::copy或std::memcpy以及使用标准库容器,每种方... 目录C++一个数组赋值给另一个数组循环遍历赋值使用标准库中的函数 std::copy 或 std::