llama factory 大数据量下训练失败

bash 复制代码
06/11/2024 07:09:50 - WARNING - llmtuner.data.utils - Checksum failed: missing SHA-1 hash value in dataset_info.json.
06/11/2024 07:09:50 - WARNING - llmtuner.data.utils - Checksum failed: missing SHA-1 hash value in dataset_info.json.
Traceback (most recent call last):
  File "/home/ca2/anaconda3/envs/llama/lib/python3.10/site-packages/datasets/builder.py", line 1973, in _prepare_split_single
    for _, table in generator:
  File "/home/ca2/anaconda3/envs/llama/lib/python3.10/site-packages/datasets/packaged_modules/json/json.py", line 122, in _generate_tables
    io.BytesIO(batch), read_options=paj.ReadOptions(block_size=block_size)
  File "pyarrow/_json.pyx", line 52, in pyarrow._json.ReadOptions.__init__
  File "pyarrow/_json.pyx", line 77, in pyarrow._json.ReadOptions.block_size.__set__
OverflowError: value too large to convert to int32_t

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/ca2/LLaMA-Factory/src/train_bash.py", line 14, in <module>
    main()
  File "/home/ca2/LLaMA-Factory/src/train_bash.py", line 5, in main
    run_exp()
  File "/home/ca2/LLaMA-Factory/src/llmtuner/train/tuner.py", line 29, in run_exp
    run_pt(model_args, data_args, training_args, finetuning_args, callbacks)
  File "/home/ca2/LLaMA-Factory/src/llmtuner/train/pt/workflow.py", line 28, in run_pt
    dataset = get_dataset(tokenizer, model_args, data_args, training_args, stage="pt")
  File "/home/ca2/LLaMA-Factory/src/llmtuner/data/loader.py", line 162, in get_dataset
    all_datasets.append(load_single_dataset(dataset_attr, model_args, data_args))
  File "/home/ca2/LLaMA-Factory/src/llmtuner/data/loader.py", line 92, in load_single_dataset
    dataset = load_dataset(
  File "/home/ca2/anaconda3/envs/llama/lib/python3.10/site-packages/datasets/load.py", line 2582, in load_dataset
    builder_instance.download_and_prepare(
  File "/home/ca2/anaconda3/envs/llama/lib/python3.10/site-packages/datasets/builder.py", line 1005, in download_and_prepare
    self._download_and_prepare(
  File "/home/ca2/anaconda3/envs/llama/lib/python3.10/site-packages/datasets/builder.py", line 1100, in _download_and_prepare
    self._prepare_split(split_generator, **prepare_split_kwargs)
  File "/home/ca2/anaconda3/envs/llama/lib/python3.10/site-packages/datasets/builder.py", line 1860, in _prepare_split
    for job_id, done, content in self._prepare_split_single(
  File "/home/ca2/anaconda3/envs/llama/lib/python3.10/site-packages/datasets/builder.py", line 2016, in _prepare_split_single
    raise DatasetGenerationError("An error occurred while generating the dataset") from e
datasets.exceptions.DatasetGenerationError: An error occurred while generating the dataset

从你的错误信息来看,问题出在加载和准备数据集时,具体包括以下两个主要错误:

  1. Checksum Failed:

    复制代码
    06/11/2024 07:09:50 - WARNING - llmtuner.data.utils - Checksum failed: missing SHA-1 hash value in dataset_info.json.

    这个警告提示 dataset_info.json 文件中缺少 SHA-1 哈希值。虽然这是一个警告,但它提示数据集的信息文件可能不完整或被篡改。

  2. OverflowError:

    复制代码
    OverflowError: value too large to convert to int32_t

    这个错误表明你试图加载的数据集文件块太大,超过了 int32_t 能表示的最大值。这通常是因为数据集文件块的大小设置不当。

这两个错误最终导致数据集生成失败,并抛出 DatasetGenerationError

解决方法:

  1. 检查数据集文件:

    • 确保数据集文件 dataset_info.json 完整且包含 SHA-1 哈希值。
    • 如果是从某个数据源下载的数据集,尝试重新下载或从可靠来源获取。
  2. 调整数据集加载选项:

    • 修改数据加载时的块大小设置。可能需要在你的代码中找到并调整 pyarrow 库的读取选项 block_size

    • 尝试修改 block_size 为较小的值,以避免溢出错误。例如:

      python 复制代码
      import pyarrow.json as paj
      
      read_options = paj.ReadOptions(block_size=65536)  # 64KB,或根据需要调整

      在加载数据集的代码中使用上述选项。

  3. 更新库版本:

    • 确保 datasetspyarrow 库是最新版本,某些 bug 可能已经在新版本中修复。

代码示例:

如果你使用的是 datasets 库,可以通过如下方式调整 block_size

python 复制代码
from datasets import load_dataset
import pyarrow.json as paj

# 设置较小的 block_size
read_options = paj.ReadOptions(block_size=65536)

dataset = load_dataset('your_dataset', split='train', read_options=read_options)

如果错误继续存在,请确保数据集文件的完整性,或者联系数据集提供者寻求帮助。

相关推荐
蒋星熠1 小时前
区块链技术探索与应用:从密码学奇迹到产业变革引擎
python·语言模型·web3·去中心化·区块链·密码学·智能合约
bdgtd881781 小时前
动态修补C扩展模块的函数指针有哪些风险?安全的修补方案是什么?
c语言·开发语言·安全
luquinn1 小时前
实现统一门户登录跳转免登录
开发语言·前端·javascript
Forward♞1 小时前
Qt——界面美化 QSS
开发语言·c++·qt
DogDaoDao2 小时前
用PyTorch实现多类图像分类:从原理到实际操作
图像处理·人工智能·pytorch·python·深度学习·分类·图像分类
默归2 小时前
分治法——二分答案
python·算法
麻雀无能为力3 小时前
python自学笔记14 NumPy 线性代数
笔记·python·numpy
大学生毕业题目3 小时前
毕业项目推荐:28-基于yolov8/yolov5/yolo11的电塔危险物品检测识别系统(Python+卷积神经网络)
人工智能·python·yolo·cnn·pyqt·电塔·危险物品
##学无止境##4 小时前
解锁Java分布式魔法:CAP与BASE的奇幻冒险
java·开发语言·分布式
做一位快乐的码农4 小时前
基于Spring Boot的旅行足迹分享社区的设计与实现/基于java的在线论坛系统
java·开发语言·spring boot