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线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

C#读写文本文件的多种方式详解

《C#读写文本文件的多种方式详解》这篇文章主要为大家详细介绍了C#中各种常用的文件读写方式,包括文本文件,二进制文件、CSV文件、JSON文件等,有需要的小伙伴可以参考一下... 目录一、文本文件读写1. 使用 File 类的静态方法2. 使用 StreamReader 和 StreamWriter二、二进

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方