HuggingFace Tokenizer训练未使用GPU问题求助
问题排查与解决
核心原因:tokenizers库不支持GPU加速分词训练
你使用的Hugging Face tokenizers(Rust后端实现)默认仅在CPU上运行,该库的分词器训练逻辑没有原生GPU支持——无论环境是否检测到CUDA,训练过程都不会调用GPU资源,这就是你的GPU闲置的直接原因。
优化方案
1. 提升CPU训练效率
虽然没法用GPU,但可以通过以下方式加快训练速度:
- 高效读取数据集:当前Excel读取方式效率低下,
iterrows()逐行遍历耗时,改用批量处理:import pandas as pd # 仅读取需要的列,批量处理数据并过滤空值 dataxls = pd.read_excel('data/dataset.xlsx', usecols=['data']) dataset = dataxls['data'].str.strip().dropna().tolist() - 调整训练批次:增大
get_training_corpus()的批次大小(比如从1000改为5000),减少迭代次数,提升CPU利用率:def get_training_corpus(): for i in range(0, len(dataset), 5000): yield dataset[i : i + 5000] - 确保多线程开启:
tokenizers默认支持多线程,通过环境变量强制开启:import os os.environ["TOKENIZERS_PARALLELISM"] = "true"
2. 验证环境资源限制
- 检查JupyterHub分配的CPU核数:执行
!nproc查看可用核心数,若核数过少会直接限制训练速度。 - 转换数据集格式:若Excel文件过大,转成Parquet或CSV格式后再读取,
pd.read_parquet的读取速度远快于read_excel。
3. 强制GPU利用的替代方案
如果必须利用GPU,可考虑使用transformers库的Trainer API在预训练模型时同步训练分词器,但这种方式并非针对纯分词器训练的GPU优化,实际收益有限,仅适合同时进行模型预训练的场景。
内容的提问来源于stack exchange,提问作者Raptor
相关产品推荐
相关产品推荐

