使用Transformers构建聊天机器人时遇training_args导入RuntimeError问题
问题描述
我在构建聊天机器人时使用Transformers库,执行以下依赖安装命令:
%pip install --upgrade pip %pip install --disable-pip-version-check \ torch==1.13.1 \ torchdata==0.5.1 --quiet %pip install \ transformers==4.27.2 \ datasets==2.11.0 \ evaluate==0.4.0 \ rouge_score==0.1.2 \ loralib==0.1.1 \ peft==0.3.0 --quiet
随后导入相关模块:
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer, GenerationConfig, TrainingArguments, trainer import torch import time import pandas as pd import random import numpy as np import os import string from nltk.corpus import stopwords from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer, TfidfVectorizer from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import RandomForestClassifier from sklearn.pipeline import Pipeline from sklearn.decomposition import LatentDirichletAllocation
但会随机出现以下错误,重启内核重新安装后有时正常,有时仍触发:
RuntimeError: Failed to import transformers.training_args because of the following error (look up to see its traceback): /usr/local/lib/python3.10/site-packages/_XLAC.cpython-310-x86_64-linux-gnu.so: undefined symbol: _ZNK5torch4lazy17LazyGraphExecutor16ShouldSyncTensorERKN3c1013intrusive_ptrINS0_10LazyTensorENS2_6detail34intrusive_target_default_null_typeIS4_EEEE
解决方案
这类随机出现的XLAC相关未定义符号错误,多由PyTorch与XLA依赖版本不兼容、安装缓存冲突或环境加载顺序问题导致,可按以下步骤修复:
清理PyTorch残留与缓存
完全卸载现有PyTorch组件并清理pip缓存,避免旧版本干扰:pip uninstall -y torch torchdata torch_xla pip cache purge安装兼容的PyTorch与XLA版本
错误涉及XLAC库,需安装与torch==1.13.1匹配的torch_xla版本,以Linux x86_64、Python3.10为例:pip install torch==1.13.1 torchdata==0.5.1 torch_xla==2.0 -f https://storage.googleapis.com/torch-xla-releases/wheels/cp310/torch_stable.html强制重装Transformers相关依赖
确保依赖版本严格匹配,避免残留文件引发冲突:pip install --force-reinstall transformers==4.27.2 datasets==2.11.0 evaluate==0.4.0 rouge_score==0.1.2 loralib==0.1.1 peft==0.3.0 --quiet调整模块导入顺序
先导入torch再导入Transformers组件,同时修正trainer为大写Trainer(原代码小写会引发导入异常):import torch from transformers import AutoModelForSeq2SeqLM, AutoTokenizer, GenerationConfig, TrainingArguments, Trainer # 其余模块导入保持不变 import time import pandas as pd # ...临时禁用XLA(无需加速时)
通过环境变量禁用XLA加载,规避XLAC库冲突:export XLA_FLAGS=--xla_force_host_platform_device_count=1或在Python代码开头添加:
import os os.environ['XLA_FLAGS'] = '--xla_force_host_platform_device_count=1'
内容的提问来源于stack exchange,提问作者Chawki-Hjaiji
相关产品推荐
相关产品推荐

