mathglm代码调试记录

论文地址:https://arxiv.org/pdf/2309.03241v2.pdf

项目地址:https://github.com/THUDM/MathGLM#arithmetic-tasks

数据集格式:
在这里插入图片描述
读取数据集代码:

def make_loaders(args, create_dataset_function):"""makes training/val/testArgs:args.train_data, args.valid_data, args.test_data: str. Paths to the dataset.args.split: str. format: "8,1,1". how to split train_data.args.dataset_type: use to create the right datasets. """make_dataset = partial(make_dataset_full, create_dataset_function=create_dataset_function)world_size = torch.distributed.get_world_size(group=mpu.get_data_parallel_group())batch_size = args.batch_size * world_sizeeval_batch_size = batch_sizeif args.eval_batch_size is not None:eval_batch_size = args.eval_batch_size * world_sizesplit = get_split(args)data_set_args = {'path': args.train_data,'split': split,}eval_set_args = copy.copy(data_set_args)eval_set_args['split'] = [1.]# make datasets splits and tokenizertrain = Nonevalid = Nonetest = Noneif args.train_data is not None:train = make_dataset(**data_set_args, args=args, dataset_weights=args.train_data_weights, is_train_data=True)if should_split(split):train, valid, test = train# make training and val dataset if necessaryif valid is None and args.valid_data is not None:eval_set_args['path'] = args.valid_datavalid = make_dataset(**eval_set_args, args=args, random_mapping=not args.strict_eval)if test is None and args.test_data is not None:eval_set_args['path'] = args.test_datatest = make_dataset(**eval_set_args, args=args, random_mapping=not args.strict_eval)# wrap datasets with data loaderif train is not None and args.batch_size > 0:train = make_data_loader(train, batch_size, args, split='train')args.do_train = Trueelse:args.do_train = Falseeval_batch_size = eval_batch_size if eval_batch_size != 0 else batch_sizeif valid is not None:valid = make_data_loader(valid, eval_batch_size, args, split='val')args.do_valid = Trueelse:args.do_valid = Falseif test is not None:test = make_data_loader(test, eval_batch_size, args, split='test')args.do_test = Trueelse:args.do_test = Falsereturn train, valid, test

数据读取后:
在这里插入图片描述

/home/user/zjb/SAT/mathglm/continue_train_mathglm.py

get_batch(data_iterator, args, timers):# 传入参数data_iterator
在这里插入图片描述

continue_train_mathglm.py文件中,get_batch函数从data_iterator获取数据,然后将其转换为词向量。这是通过调用get_batch函数中的mpu.broadcast_data函数实现的。

然后,在forward_step函数中,get_batch函数的返回值被传递给模型。模型接收的输入是词向量,而不是原始的字符串。

这种转换是因为模型不能直接处理原始的文本数据。模型需要的是一种数值表示,通常是词向量,这样才能进行数学运算。因此,原始的字符串数据需要被转换为词向量。

create_dataset_function函数中,你可以看到这个转换过程。process_fn函数接收一个字符串row,然后使用tokenizer._encode(value)将其转换为词向量。这个词向量然后被添加到ids列表中,最后返回一个包含词向量的字典。

所以,data_iterator中的数据是字符串,因为这是原始的输入数据。然后,这些数据被转换为词向量,以便可以被模型处理。

在这里插入图片描述
其中data_iterator是dataloaderlter如图所示
data如图所示
在这里插入图片描述
data_b
在这里插入图片描述

mpu.broadcast_data(keys, data, datatype) 是一个函数调用,它来自于 SwissArmyTransformer 库中的 mpu 模块。这个函数的作用是在分布式环境中广播数据。
在这里插入图片描述

create_dataset_function函数在continue_train_mathglm.py文件中。这个函数用于创建一个数据集,它接收一个路径和参数,然后返回一个MathDataset对象。在这个函数中,它定义了一个process_fn函数,这个函数用于处理每一行数据,将其转换为词向量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/613010.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

检测并批量导出项目文件中所有最近修改文件的实用工具

本篇文章主要讲解工具的使用和操作教程,这是一个能够检测项目内最近修改的文件并保留路径导出文件的实用工具。 日期:2024年1月10日 工具介绍: 这是一款可以帮助你自动检测并导出指定文件修改时间内的文件及文件目录的实用工具,在…

PDO【配置】

PDOr: 6040 控制字 6060 模式 6083 加速度 6084 减速度 =====================【定位1】:// 补间7 607A 定位位置 6081 定位速度 =====================【速度3】: 60FF 目标速度 =====================【力矩4…

Python语言基础

目录 任务驱动式学习 任务一:输出问候语 一、Python程序的两种编程模式 二、Python程序的执行方式——解释执行 三、基本输入输出函数 任务二:计算圆的周长和面积 一、语句块缩进 二、变量与对象 三、数据类型及转换 四、数字类型及运算 五、…

在 WinForms 应用程序中实现 FTP 文件操作及模式介绍

在 WinForms 应用程序中实现 FTP 文件操作及模式介绍 简介 在许多应用程序中,能够从远程服务器获取文件是一个非常有用的功能。本文将详细介绍如何在 Windows Forms (WinForms) 应用程序中使用 FTP 协议进行文件操作,包括连接到 FTP 服务器、列出目录、…

(每日持续更新)jdk api之DataInputStream基础、应用、实战

博主18年的互联网软件开发经验,从一名程序员小白逐步成为了一名架构师,我想通过平台将经验分享给大家,因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验,晚上进行用心精简、整理、总结、定稿&…

高并发下的计数器实现方式:AtomicLong、LongAdder、LongAccumulator

一、前言 计数器是并发编程中非常常见的一个需求,例如统计网站的访问量、计算某个操作的执行次数等等。在高并发场景下,如何实现一个线程安全的计数器是一个比较有挑战性的问题。本文将介绍几种常用的计数器实现方式,包括AtomicLong、LongAd…

超市账单管理系统产品数据新增Servlet实现

超市账单管理系统产品数据新增Servlet实现 package com.test.controller; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import ja…

3.4 在开发中使用设计模式

现在,我们应该对设计模式的本质以及它们的组织方式有了初步的认识,并且能够理解ROPES过程在整体设计中的作用。通过之前章节对“体系结构”及其五个视图的探讨,我们打下了坚实的基础。初步了解了UML的基本构建模块后,我们现在可以…

gem5学习(11):将缓存添加到配置脚本中——Adding cache to the configuration script

目录 一、Creating cache objects 1、Classic caches and Ruby 二、Cache 1、导入SimObject(s) 2、创建L1Cache 3、创建L1Cache子类 4、创建L2Cache 5、L1Cache添加连接函数 6、为L1ICache和L1DCache添加连接函数 7、为L2Cache添加内存侧和CPU侧的连接函数 完整代码…

适用于安防 音响 车载等产品中中的音频接口选型分析

在人工智能兴起之后,安防市场就成为了其全球最大的市场,也是成功落地的最主要场景之一。对于安防应用而言,智慧摄像头、智慧交通、智慧城市等概念的不断涌现,对于芯片产业催生出海量需求。今天,我将为大家梳理GLOBALCH…

自动化测试框架pytest系列之强大的fixture功能,为什么fixture强大?一文拆解它的功能参数。(三)

自动化测试框架pytest系列之基础概念介绍(一)-CSDN博客 自动化测试框架pytest系列之21个命令行参数介绍(二)-CSDN博客 接上两篇文章继续 : 3.3 pytest支持的初始化和清除函数 学过unittest的都知道 ,unittest有四个函数 ,分别是 &#xff…

16.linux计划任务管理

linux计划任务管理 文章目录 linux计划任务管理1. crond计划任务概述2. crond配置文件详解3. crond计划任务管理4. crond配置编写实例5. crond计划任务调试 1. crond计划任务概述 什么是计划任务,计划任务类似于我们平时生活中的闹钟。 在Linux系统的计划任务服务c…

判断是否是json字符串

一、在isJson.js文件里创建一个isJson类并抛出 /*** isJson 类用于判断一个字符串是否为有效的 JSON 字符串。* class isJson* param {string} str - 要判断的字符串。* returns {boolean} 如果字符串是有效的 JSON 字符串,则返回 true;否则返回 false。…

PPT插件-大珩助手-快速构建自己的图形

绘图板-快速构建自己的图形 通过手绘的方式,快速构建自己的想法和创意,通过在PPT中插入绘图,植入背景透明的绘图,点击画笔可切换橡皮擦,可以清空画板重新绘制。 素材库-存储图形 通过素材库存储自己的图形 图形调整…

操作系统期末考复盘

简答题4题*5 20分计算题2题*5 10分综合应用2题*10 20分程序填空1题10 10分 1、简答题(8抽4) 1、在计算机系统上配置OS的目标是什么?作用主要表现在哪个方面? 在计算机系统上配置OS,主要目标是实现:方便性、有…

如何把123转换成字符串的123

在许多编程语言中,将数字123转换为字符串的"123"是非常直接的。以下是几种常见编程语言的示例: Python num 123 str_num str(num) print(str_num) # 输出: 123 JavaScript let num 123; let str_num num.toString(); console…

【WebGIS实例】(12)MapboxGL解决叠加图层的点击事件冒泡

解决方法一: 监听有冲突的图层 map.on(click, layerName, e > {e.preventDefault()console.log(上面的图层)console.log(点击的要素, e.features[0]) })// 下面的那个图层:阻止默认事件,在下面的e可以看到_defaultPrevented: false&#…

three.js 学习笔记(学习中1.10更新) |

文章目录 three.js 学习笔记基础概念透视相机 第一个three.js应用threejs画布尺寸和布局canvas画布宽高度动态变化 坐标辅助器 THREE.AxesHelper实现动画效果requestAnimationFrame时间相关属性和方法 THREE.Clock类 相机控件 轨道控制器OrbitControls 灯光点光源点光源辅助观察…

17.SELinux

SELinux 文章目录 SELinux1、SELinux简介2、SELinux的模式3、管理SELinux上下文4、bool开关 1、SELinux简介 为了保障linux系统的安全,除了firewalld防火墙外,linux系统管理员通常会控制用户和组的权限,这种基于用户和组的安全模型称之为主动…