使用huggingface Trainer 与分布式数据并行

2023-11-25

为了加快性能,我研究了 pytorch分布式数据并行并尝试将其应用于变压器Trainer.

The DDP 的 pytorch 示例指出这应该at least更快:

DataParallel是单进程、多线程,只能在单机上运行,​​而DistributedDataParallel是多进程,可以用于单机和多机训练。即使在单台机器上,DataParallel 通常也比 DistributedDataParallel 慢,因为跨线程的 GIL 争用、每次迭代复制模型以及分散输入和收集输出带来的额外开销。

我的 DataParallel 训练器如下所示:

import os
from datetime import datetime
import sys
import torch
from transformers import Trainer, TrainingArguments, BertConfig

training_args = TrainingArguments(
        output_dir=os.path.join(path_storage, 'results', "mlm"),  # output directory
        num_train_epochs=1,  # total # of training epochs
        gradient_accumulation_steps=2,  # for accumulation over multiple steps
        per_device_train_batch_size=4,  # batch size per device during training
        per_device_eval_batch_size=4,  # batch size for evaluation
        logging_dir=os.path.join(path_storage, 'logs', "mlm"),  # directory for storing logs
        evaluate_during_training=False,
        max_steps=20,
    )

mlm_train_dataset = ProteinBertMaskedLMDataset(
        path_vocab, os.path.join(path_storage, "data", "uniparc", "uniparc_train_sorted.h5"),
)

mlm_config = BertConfig(
        vocab_size=mlm_train_dataset.tokenizer.vocab_size,
        max_position_embeddings=mlm_train_dataset.input_size
)
mlm_model = ProteinBertForMaskedLM(mlm_config)
trainer = Trainer(
   model=mlm_model,  # the instantiated 									
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用huggingface Trainer 与分布式数据并行 的相关文章

  • 如何编写嵌套的 __init__.py 文件

    我正在努力解决嵌套问题 init py在我正在编写的Python包中 该包具有以下架构 module init py submodule1 init py source py submodule2 init py source py sub
  • 稀有对象的 python 类型注释,例如 psycopg2 对象

    我了解内置类型 但是我如何指定稀有对象 例如数据库连接对象 def get connection and cursor gt tuple psycopg2 extensions cursor psycopg2 extensions conn
  • 将 numpy 数组合并为单个 int

    numpy 数组怎么可以这样 10 22 37 45 转换为单个 int32 数字 如下所示 10223745 这可以工作 gt gt gt int join map str 10 22 37 45 10223745 基本上你使用map s
  • 在Python中从大文件中搜索单词列表

    我是新蟒蛇 我有一个单词列表和一个非常大的文件 我想删除文件中包含单词列表中的单词的行 单词列表按排序给出 并且可以在初始化期间输入 我正在努力寻找解决这个问题的最佳方法 我现在正在进行线性搜索 这花费了太多时间 有什么建议么 您可以使用i
  • 使用 Django 将文件异步上传到 Amazon S3

    我使用此文件存储引擎在上传文件时将文件存储到 Amazon S3 http code welldev org django storages wiki Home http code welldev org django storages w
  • 无法在 selenium 和 requests 之间传递 cookie,以便使用后者进行抓取

    我用 python 结合 selenium 编写了一个脚本来登录网站 然后从driver to requests这样我就可以继续使用requests进行进一步的活动 I used item soup select one div class
  • Matplotlib:如何有效地将大量线段着色为独立渐变

    Python 绘图库 如何有效地将大量线段着色为独立渐变 已经 阅读this https stackoverflow com questions 8500700 how to plot a gradient color line in ma
  • Series.sort() 和 Series.order() 有什么区别?

    s pd Series nr randint 0 10 5 index nr randint 0 10 5 s Output 1 3 7 6 2 0 9 7 1 6 order 按值排序并返回一个新系列 s order Output 2 0
  • 使用 Paramiko 进行 DSA 密钥转发?

    我正在使用 Paramiko 在远程服务器上执行 bash 脚本 在其中一些脚本中 存在与其他服务器的 ssh 连接 如果我只使用 bash 不使用 Python 我的 DSA 密钥将被第一个远程服务器上的 bash 脚本转发并使用 以连接
  • 使用python从gst管道抓取帧到opencv

    我在用着OpenCV http opencv org 和GStreamer0 10 我使用此管道通过自定义套接字通过 UDP 接收 MPEG ts 数据包sockfd由 python 提供并显示它xvimagesink 而且效果很好 以下命
  • 根据其他单元格值更改多个单元格值

    我想更改包含的单元格moving to movingToOpenor movingToClose基于下一个单元格中给出的状态 有时循环会被中断并且不会从open to close or close to open 这是我当前的数据框 Dat
  • 给定一个排序数组,就地删除重复项,使每个元素仅出现一次并返回新长度

    完整的问题 我开始在线学习 python 但对这个标记为简单的问题有疑问 给定一个排序数组 就地删除重复项 使得每个 元素只出现一次并返回新的长度 不分配 另一个数组的额外空间 您必须通过修改输入来完成此操作 数组就地 具有 O 1 额外内
  • Airflow 1.9 - 无法将日志写入 s3

    我在 aws 的 kubernetes 中运行气流 1 9 我希望将日志发送到 s3 因为气流容器本身的寿命并不长 我已经阅读了描述该过程的各种线程和文档 但我仍然无法让它工作 首先是一个测试 向我证明 s3 配置和权限是有效的 这是在我们
  • 使用另一个数据帧在数据帧中创建子列

    我对 python 和 pandas 很陌生 在这里 我有一个以下数据框 did features offset word JAPE feature manual feature 0 200 0 aa 200 200 0 200 11 bf
  • 无法通过 Python 子进程进行 SSH

    我需要通过堡垒 ssh 进入机器 因此 该命令相当长 ssh i
  • AWS Lambda 不读取环境变量

    我正在编写一个 python 脚本来查询 Qualys API 中的漏洞元数据 我在 AWS 中将其作为 lambda 函数执行 我已经在控制台中设置了环境变量 但是当我执行函数时 出现以下错误 module initialization
  • 如何将带有参数的Python装饰器实现为类?

    我正在尝试实现一个接受一些参数的装饰器 通常带有参数的装饰器被实现为双重嵌套闭包 如下所示 def mydecorator param1 param2 do something with params def wrapper fn def
  • 如何使用 python 定位和读取 Data Matrix 代码

    我正在尝试读取微管底部的数据矩阵条形码 我试过libdmtx http libdmtx sourceforge net 它有 python 绑定 当矩阵的点是方形时工作得相当好 但当矩阵的点是圆形时工作得更糟 如下所示 另一个复杂问题是在某
  • python从二进制文件中读取16字节长的双精度值

    我找到了蟒蛇struct unpack 读取其他程序生成的二进制数据非常方便 问题 如何阅读16 字节长双精度数出二进制文件 以下 C 代码将 1 01 写入二进制文件三次 分别使用 4 字节浮点型 8 字节双精度型和 16 字节长双精度型
  • 无法安装最新版本的 Numpy (1.22.3)

    我正在尝试安装最新版本的 numpy 即 1 22 3 但看起来 pip 无法找到最后一个版本 我知道我可以从源代码本地安装它 但我想了解为什么我无法使用 pip 安装它 PS 我有最新版本的pip 22 0 4 ERROR Could n

随机推荐

  • .Net core 2.0 中不支持 log4net AdoNetAppender?

    我正在实施 log4netAdoNetAppender in ASP NET核心2 0 但我猜它不支持 我已经实现了log4net滚动文件附加器在 core 2 0 中 它使用 log4 net 配置成功运行 那么 如果log4net Ad
  • 使用 Cygwin 编译 C++

    如何在 Cygwin 中编译我的 C 程序 我已经安装了gcc 我应该使用什么命令 另外 当控制台应用程序位于 cpp 扩展名中时 如何运行它 我正在尝试使用一些小程序来学习 C 但在 Visual C 中 我不想为每个小 cpp 文件创建
  • 会话是否使用cookie?

    这是一个月前的面试题 会话是否使用cookie 如果是这样 他们是如何做到的 Assume Session UserId 1这个会话变量在内部如何使用cookie 如果是这样 cookie 的名称是什么以及该 cookie 的值是什么 虽然
  • 如何在c中创建二维数组并使用指针和函数显示它? [关闭]

    Closed 这个问题是无关 目前不接受答案 我正在尝试编写 2 个函数 一个用于读取矩阵 二维数组 另一个用于将其打印出来 到目前为止我有 Read a matrix allocate space read elements return
  • 异常对象的生命周期

    我想知道异常对象是如何创建的 为什么处理函数参数可以是非常量引用 例如 class E public const char error E const char arg error arg cout lt lt Constructor of
  • 为什么 Gunicorn 使用端口 8000/8001 而不是 80?

    我忙于使用 Gunicorn 作为 Django 服务 和 NGINX 作为反向代理 为 Django 框架设置开发环境 当我看几个教程时像这样一和this one 我看到他们使用端口 8000 和端口 8001 http 127 0 0
  • 如何在 JavaScript 中检查某个值是否存在于某个数组索引处?

    这是否可以用于测试位置值是否有效index存在与否 或者有没有更好的方法 if arrayName index do stuff 从概念上讲 JavaScript 中的数组包含array length元素 从array 0 直到 为止arr
  • 在Android中运行USSD代码并将应用程序保持在第一位置

    我正在 Android 中创建一个应用程序 需要在后台运行 USSD 代码 无需在后台发送我的申请 每当我使用 Intent ACTION CALL 运行 USSD 时 String ussdCode 123 Uri encode star
  • 将值附加到地图 golang 内部的数组

    我正在尝试将值附加到地图内的数组 var MyMap map string Example type Example struct Id int Name string 这是我尝试过的 但我无法指向示例的对象来附加到数组 package m
  • 如何从 UIElementCollection 中选择一个属性 = 某个值的子元素?

    我有一个UniformGrid与一些Button s as Children Each Button has a Tag带有 ID 例如 简化代码 MyUniformGrid Children Add new Button Margin n
  • 预加载图像

    有没有办法只使用 html css 预加载图像 是的你可以 有很多关于这个主题的教程 这是其中之一
  • C# 代码中 where 子句的混淆

    public interface ICrudService
  • Google PlusOne 按钮在 Chrome 上出现错误

    Google PlusOne 在 Chrome 上出现错误 Uncaught ReferenceError iframes is not defined fastbutton 19 Uncaught ReferenceError ifram
  • 如何使用 window.open 设置文件名

    我正在尝试下载由 JavaScript 计算的临时结果 假设我有一个字符串str 我想下载一个文件包含str并将其命名为data csv 我使用以下代码 window open data text csv charset utf 8 str
  • 多线程环境下的文件访问策略(Web App)

    我有一个文件 它是从 Web 服务获取并在 Web 应用程序中本地缓存的一些数据的 XML 表示形式 这个想法是这个数据是very静态的 但只是might改变 因此 我将其设置为缓存到一个文件 并在其上放置一个监视器以检查它是否已被删除 删
  • C# 使用 System.Linq 错误

    为什么 使用 System Linq 可能会导致以下错误 类型或命名空间名称 Linq 确实 命名空间 System 中不存在 参考System Core 然后还有其他人也合并了这个命名空间 但这是主要的在 Net 3 5 及更高版本上 如
  • ADT 插件无法安装:缺少要求:Android 开发工具

    我尝试在 eclipse helios windows 64 位经典上安装 ADT 插件 我收到这个错误 无法完成安装 因为找不到一项或多项所需的项目 正在安装的软件 Android开发工具16 0 1 v201112150204 2385
  • SQL Server 将字符串转换为日期时间

    这并不是询问如何在 MSSQL 中将任意字符串转换为日期时间 例如这个问题 我可以控制字符串格式 但我想知道使用日期字符串更新日期时间字段的 MSSQL 语法是什么 UPDATE MyTable SET MyDate CONVERT dat
  • PDO 更新不替换准备好的语句中的占位符[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下代码更新表格 如果我改变WHERE temp booking id temp booking id 使用实际的当前会话temp id 查询将运行 但将占位符添加到表中 例如 签出 作为值 dat
  • 使用huggingface Trainer 与分布式数据并行

    为了加快性能 我研究了 pytorch分布式数据并行并尝试将其应用于变压器Trainer The DDP 的 pytorch 示例指出这应该at least更快 DataParallel是单进程 多线程 只能在单机上运行 而Distribu
Powered by Hwhale