Импортер после установки torchtext 0.11.0 с помощью conda

#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