ImportError after installing torchtext 0.11.0 with conda - pytorch

I have installed pytorch version 1.10.0 alongside torchtext, torchvision and torchaudio using conda. My PyTorch is cpu-only, and I have experimented with both conda install pytorch-mutex -c pytorch and conda install pytorch cpuonly -c pytorch to install the cpuonly version, both yielding the same eror that I will describe in the following lines.
I have also installed pytorch-lightning in conda, alongside jsonargparse[summaries via pip in the environment.
I have written this code to see whether LightningCLI works or not.
# 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)
But when I run it using python -m script fit --print_config, I get the following error:
ImportError: /home/farhood/miniconda3/envs/pytorch_dummy_environment/lib/python3.9/site-packages/torchtext/_torchtext.so: undefined symbol: _ZNK5torch3jit6MethodclESt6vectorIN3c106IValueESaIS4_EERKSt13unordered_mapISsS4_St4hashISsESt8equal_toISsESaISt4pairIKSsS4_EEE
Which indicates that there is something broken with my Conda installation, and it's probably related to torchtext somehow.
This is the versions of the installed torch related packages:
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

So in order to fix the problem, I had to change my environment.yaml in order to force pytorch to install from the pytorch channel.
So this is my environment.yaml now:
channels:
- defaults
- pytorch
- conda-forge
dependencies:
# ML section
- pytorch::pytorch
- pytorch::torchtext
- pytorch::torchvision
- pytorch::torchaudio
- pytorch::cpuonly
- mlflow=1.21.0
- pytorch-lightning>=1.5.2
- pip:
- jsonargparse[signatures]
Using this I don't get the error anymore. The pytorch related stuff installed now is:
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

Related

Is TensorFlow supported on M1 max?

In my attempt to start using TensorFlow on my mac [Monterey 12.6.1] [chip Apple M1 MAX] I start to get errors that I did not observe on my mac mini [Monterey 12.6 - Chip M1 2020]
It is either an environment issue or a chipset issue.
[Works on my windows machine Win-11 and Mac-Mini]
Code:
from tensorflow.keras.models import Sequential
from tensorflow.keras.optimizers import Adam
from tensorflow.keras import layers
model = Sequential([layers.Input((3, 1)),
layers.LSTM(64),
layers.Dense(32, activation='relu'),
layers.Dense(32, activation='relu'),
layers.Dense(1)])
model.compile(loss='mse',
optimizer=Adam(learning_rate=0.001),
metrics=['mean_absolute_error'])
model.fit(X_train, y_train, validation_data=(X_val, y_val), epochs=100)
Error observed in DataSpell:
--------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
RuntimeError: module compiled against API version 0x10 but this version of numpy is 0xe
Traceback
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Input In [14], in <cell line: 1>()
----> 1 from tensorflow.keras.models import Sequential
2 from tensorflow.keras.optimizers import Adam
3 from tensorflow.keras import layers
Following Greg Hogg tutorial: https://www.youtube.com/watch?v=CbTU92pbDKw
Note this code work on my mac mini machine but not on the MacBook Pro.
Anaconda env -> Python 3.9
python --version
Python 3.9.12
conda list | grep tensorflow
tensorflow-deps 2.8.0 0 apple
tensorflow-estimator 2.10.0 pypi_0 pypi
tensorflow-macos 2.10.0 pypi_0 pypi
tensorflow-metal 0.6.0 pypi_0 pypi
What I am expecting is similar outcome like the windows environment and the Mac-mini where the model is constructed and fitted with the training data. (model object creation without an exception)
Example:
Epoch 99/100
7/7 [==============================] - 0s 5ms/step - loss: 6.1541 - mean_absolute_error: 1.8648 - val_loss: 9.5456 - val_mean_absolute_error: 2.6235
Epoch 100/100
7/7 [==============================] - 0s 5ms/step - loss: 6.7555 - mean_absolute_error: 2.0134 - val_loss: 9.4403 - val_mean_absolute_error: 2.6016
<keras.callbacks.History at 0x27a6590c6a0>
Attempting the numpy upgrade posted answer, I did the "numpy upgrade" yet had the output below on the terminal and the same exception still observed.
pip install numpy --upgrade
Requirement already satisfied: numpy in ./opt/anaconda3/lib/python3.9/site-packages (1.21.5)
Collecting numpy
Using cached numpy-1.23.4-cp39-cp39-macosx_11_0_arm64.whl (13.4 MB)
Installing collected packages: numpy
Attempting uninstall: numpy
Found existing installation: numpy 1.21.5
Uninstalling numpy-1.21.5:
Successfully uninstalled numpy-1.21.5
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
scipy 1.7.3 requires numpy<1.23.0,>=1.16.5, but you have numpy 1.23.4 which is incompatible.
numba 0.55.1 requires numpy<1.22,>=1.18, but you have numpy 1.23.4 which is incompatible.
Successfully installed numpy-1.23.4
==================================
So combination of multiple approaches fixed the issue:
pip uninstall keras
pip uninstall keras-preprocessing
pip uninstall tensorboard
pip install --upgrade numpy
If step 4 does not work [error or concerning warning], then pip uninstall numpy ; followed by pip install numpy
python -m pip install tensorflow-macos
That fix my environment problem.
From Apple documentation to install tensorflow-metal with tensorflow
Requirements
Mac computers with Apple silicon or AMD GPUs
macOS 12.0 or later (Get the latest beta)
Python 3.8 or later
Xcode command-line tools: xcode-select --install
Set up
// Download Conda environment
bash ~/miniconda.sh -b -p $HOME/miniconda
source ~/miniconda/bin/activate
conda install -c apple tensorflow-deps
// Install base TensorFlow
python -m pip install tensorflow-macos
// Install tensorflow-metal plug-in
python -m pip install tensorflow-metal
Verify the set up
import tensorflow as tf
cifar = tf.keras.datasets.cifar100
(x_train, y_train), (x_test, y_test) = cifar.load_data()
model = tf.keras.applications.ResNet50(
include_top=True,
weights=None,
input_shape=(32, 32, 3),
classes=100,)
loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
model.compile(optimizer="adam", loss=loss_fn, metrics=["accuracy"])
model.fit(x_train, y_train, epochs=5, batch_size=64)
The real answer to your problem though is that you have many version of numpy installed.
Please run pip3 install --upgrade numpy in your terminal and it should fix your problem.
So combination of multiple approaches fixed the issue:
pip uninstall keras
pip uninstall keras-preprocessing
pip uninstall tensorboard
pip install --upgrade numpy
If step 4 does not work [error or concerning warning], then pip uninstall numpy; followed by pip install numpy
python -m pip install tensorflow-macos
That fix my environment problem.

How to install torch when I have pytorch 1.10.1

I am working on Compute Canada.
I am trying to install torch >= 1.7.1 because when my code has import torch but it fails even though I installed pytorch already in my conda environment and it is version 1.10.1.
I tried pip install torch >= 1.7.1, and this response
ERROR: Could not find a version that satisfies the requirement torch (from versions: none)
ERROR: No matching distribution found for torch
Answering to:
I am trying to install torch >= 1.17
There is no pytorch version >= 1.17. The latest version is 1.10.2.
my code has import torch but it fails even though I installed pytorch already in my conda environment
This is the issue that you should address instead. There is similar issues like this here on SO, but they usually are caused by the fact that you are running your code with a python interpreter that is different from the conda env that you have installed torch to.

cuda version not installed on pytorch

I have a cuda-capable gpu in my computer, and the version is NVIDIA GeForce GTX 1660 Ti. The operating system is Windows10. According to the official website
https://pytorch.org/get-started/locally/
I opened anaconda prompt(anaconda 3) and entered the following line for installing pytorch
conda install pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch -c conda-forge
but when I enter this code in pycharm:
import torch
print(torch.cuda.is_available())
It returns False and this error appears:
UserWarning: CUDA initialization: CUDA driver initialization failed, you might not have a CUDA gpu. (Triggered internally at ..\c10\cuda\CUDAFunctions.cpp:115.)
return torch._C._cuda_getDeviceCount() > 0
Why is it like this? Doesn't this command
conda install pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch -c conda-forge
by default try to install cuda version if i have a cuda-capable gpu?
This is the output of nvidia-smi

ImportError: TensorBoard logging requires TensorBoard version 1.15 or above

I follow the tutorials in pytorch.org
It occurs error:TensorBoard logging requires TensorBoard version 1.15 or above,but I have install TensorBoard already.
Here is the code:
#from torch.utils.tensorboard import SummaryWriter
from tensorboardX import SummaryWriter
writer = SummaryWriter('runs/fashion_mnist_experiment_1')
#get some random training images
dataiter = iter(trainloader)
images , labels = dataiter.next()
#create grid of images
img_grid = torchvision.utils.make_grid(images)
matplotlib_imshow(img_grid,one_channel=True)
writer.add_image('four_fashion_images',img_grid)
writer.add_graph(net, images)
writer.close()
Error:
ImportError Traceback (most recent call last)
<ipython-input-12-d38808675cb4> in <module>
----> 1 writer.add_graph(net, images)
2 writer.close()
~\anaconda3\envs\torch2\lib\site-packages\tensorboardX\writer.py in add_graph(self, model, input_to_model, verbose)
791
792 """
--> 793 from torch.utils.tensorboard._pytorch_graph import graph
794 self._get_file_writer().add_graph(graph(model, input_to_model, verbose))
795
~\anaconda3\envs\torch2\lib\site-packages\torch\utils\tensorboard\__init__.py in <module>
2 from distutils.version import LooseVersion
3 if not hasattr(tensorboard, '__version__') or LooseVersion(tensorboard.__version__) < LooseVersion('1.15'):
----> 4 raise ImportError('TensorBoard logging requires TensorBoard version 1.15 or above')
5 del LooseVersion
6 del tensorboard
ImportError: TensorBoard logging requires TensorBoard version 1.15 or above
Environment:
tensorboard 2.3.0 pypi_0 pypi
tensorboard-plugin-wit 1.7.0 pypi_0 pypi
tensorboardx 2.1 pypi_0 pypi
tensorflow 1.2.1 py36_0 defaults
pytorch 1.6.0 py3.6_cuda102_cudnn7_0 pytorch
torchvision 0.7.0 py36_cu102 pytorch
future 0.18.2 py36_1 defaults
protobuf 3.12.3 py36h33f27b4_0 defaults
I use from torch.utils.tensorboard import SummaryWriter at the beginning,but it occurs the error as same as above.Then I use from tensorboardX import SummaryWriter
Uninstall tensorflow, tensorboard, tensorboardx and tensorboard-plugin-wit.
Install only tensorboard with conda after that.
If this doesn't work, recreate your conda environment only with tensorboard. If you need tensorflow as well install it beforehand.
EDIT:
tensorboard-plugin-wit is a dependency of tensorboard and should be installed automatically as per their pypi description when installing tensorboard itself.
My problem was that my directory I was working in was named tensorboard, so it tried to import from the current directory instead of from the installed package.
So I suggest trying to rename the directory to see if it helps.
Do
conda uninstall tensorflow
conda uninstall tensorboard
conda uninstall tensorboardx
conda uninstall tensorboard-plugin-wit
conda uninstall cloud-tpu-client
pip uninstall tensorflow
pip uninstall tensorboard
pip uninstall tensorboardx
pip uninstall tensorboard-plugin-wit
pip uninstall cloud-tpu-client
then
conda install tensorboard
I both tried conda install and pip install, but this error still occurred when I used from torch.utils.tensorboard import SummaryWriter in an ipynb file. And I checked not hasattr(tensorboard, '__version__') or LooseVersion(tensorboard.__version__) < LooseVersion('1.15'), which both are False, meaning that it won't raise an error.
At last, I closed this ipynb file and restarted it, it worked. You should try this and no need to be struggling in reinstalling your conda env.
For my case, I had only Tensorboard without Tensorflow when I faced the error, so I had to:
  conda uninstall tensorboard - this removed PyTorch Lightning as well
  conda install tensorboard
  conda install -c conda-forge pytorch-lightning

Does torch.utils.tensorboard need installation of Tensorflow?

I'm new to pytorch and I wonder if using tensorboard on pytorch needs tensorflow as a dependency. Moreover, except for tensorboard, what are other options for training curve visualization?
Indeed tensorboard is part of tensorflow, but it does not depend on it.
You can safely install only tensorboard (e.g, pip install tensorboard) or conda install -c conda-forge tensorboard) and use torch.utils.tensorboard.

Resources