#pytorch #conda #torchtext
Вопрос:
Я установил pytorch
версию 1.10.0 вместе torchtext
torchvision
с ней и torchaudio
использую conda. Мой PyTorch предназначен только для процессора, и я экспериментировал с обоими conda install pytorch-mutex -c pytorch
и conda install pytorch cpuonly -c pytorch
устанавливал версию только для процессора, что привело к той же ошибке, которую я опишу в следующих строках.
Я также установил pytorch-lightning
в conda, наряду jsonargparse[summaries
с via pip в окружающей среде.
Я написал этот код, чтобы посмотреть, LightningCLI
работает он или нет.
# script.py import torch import pytorch_lightning as pl class BoringModel(LightningModule): def __init__(self): super().__init__() self.layer = torch.nn.Linear(32, 2) def forward(self, x): return self.layer(x) def training_step(self, batch, batch_idx): loss = self(batch).sum() self.log("train_loss", loss) return {"loss": loss} def validation_step(self, batch, batch_idx): loss = self(batch).sum() self.log("valid_loss", loss) def test_step(self, batch, batch_idx): loss = self(batch).sum() self.log("test_loss", loss) def configure_optimizers(self): return torch.optim.SGD(self.layer.parameters(), lr=0.1) cli = LightningCLI(BoringModel)
Но когда я запускаю его с помощью python -m script fit --print_config
, я получаю следующую ошибку:
ImportError: /home/farhood/miniconda3/envs/pytorch_dummy_environment/lib/python3.9/site-packages/torchtext/_torchtext.so: undefined symbol: _ZNK5torch3jit6MethodclESt6vectorIN3c106IValueESaIS4_EERKSt13unordered_mapISsS4_St4hashISsESt8equal_toISsESaISt4pairIKSsS4_EEE
Что указывает на то, что с моей установкой Conda что-то не так, и, вероятно torchtext
, это как-то связано.
Это версии установленных пакетов, связанных с torch:
pytorch 1.10.0 cpu_py39hc5866cc_0 conda-forge pytorch-lightning 1.5.2 pyhd8ed1ab_0 conda-forge pytorch-mutex 1.0 cuda pytorch torchaudio 0.10.0 py39_cpu pytorch torchmetrics 0.6.0 pyhd8ed1ab_0 conda-forge torchtext 0.11.0 py39 pytorch torchvision 0.11.1 py39_cpu pytorch
Комментарии:
1. Вы можете использовать
c filt
с идентификатором вашей ошибки:$c filt _ZNK5torch3jit6MethodclESt6vectorIN3c106IValueESaIS4_EERKSt13unordered_mapISsS4_St4hashISsESt8equal_toISsESaISt4pairIKSsS4_EEE
2. Похоже, что есть проблема с
torch::jit::Method::operator()
. Совместима ли версия torchtext с версией Pytorch?3. Попытка установки PyTorch с канала pytorch вместо Conda Forge, т. Е.
conda install pytorch::pytorch
. Часто бывает так, что различные стеки сборки, используемые разными каналами, не приводят к одинаковым символам в динамических библиотеках.4. @merv да, окружающая среда. файл yaml устанавливал pytorch из conda-forge вместо канала pytorch. Заставил его,
pytorch::pytorch
и теперь он работает!
Ответ №1:
Поэтому, чтобы устранить проблему, мне пришлось изменить свой environment.yaml
, чтобы принудительно pytorch
установить с pytorch
канала.
Так что это мое environment.yaml
настоящее:
channels: - defaults - pytorch - conda-forge dependencies: # ML section - pytorch::pytorch - pytorch::torchtext - pytorch::torchvision - pytorch::torchaudio - pytorch::cpuonly - mlflow=1.21.0 - pytorch-lightninggt;=1.5.2 - pip: - jsonargparse[signatures]
Используя это, я больше не получаю ошибку. Материал, связанный с pytorch, установленный сейчас, является:
cpuonly 2.0 0 pytorch pytorch 1.10.0 py3.9_cpu_0 pytorch pytorch-lightning 1.5.2 pyhd8ed1ab_0 conda-forge pytorch-mutex 1.0 cpu pytorch torchaudio 0.10.0 py39_cpu [cpuonly] pytorch torchtext 0.11.0 py39 pytorch torchvision 0.11.1 py39_cpu [cpuonly] pytorch