Tensorflow GPU doesn't work in Pycharm - python

When i'm running my tensorflow training module in pycharm IDE in Ubuntu 16.04, it doesn't show any training with GPU and it trains usually with CPU. But When i run the same python script using terminal it runs using GPU training. I want to know how to configure GPU training in Pycharm IDE.

Actually the problem was, the python environment for the pycharm project is not the same as which is in run configurations. This issue was fixed by changing the environment in run configurations.

Related

Screen freeze when training deep learning model from terminal but not Pycharm

I have an extremely weird issue where if I run pytorch model training from Pycharm, it works fine but when I run the same code on the same environment from terminal, it freezes the screen. All windows become non-interactable. The freeze affects only me, not other users and for them >>top shows that the model is no longer training. The issue is consistent and reproducible across machines, users, and GPU slots.
All dependencies are installed to a conda environment dl_segm_auto. In pycharm I have it selected as the interpreter. Parameters are passed through Run->Edit configuration.
From terminal, I run
conda activate dl_segm_auto
python training.py [parameters]
After the first epoch the entire remote session freezes.
Suggestions greatly appreciated!
The issue was caused by the matplotlib's backend taking over the screen on Linux. Any of the following can solve the problem:
Installing PyQt5 (which changes the python's/environment's default backend)
Running from Pycharm (which uses a backend selector on startup).
Having matplotlib.use('Qt5Agg') (and potentially others) at the start of plotting functions or top-level script.

Run python code on specific gpu for lower python versions

I am trying to run a python code on a specific GPU on our server. The server has four GPUs. When I run the code using a virtual environment installed with python 3.8 and tensorflow 2.2, it works correctly on the specific GPU just by adding the below few lines at the first of the script.
import os
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"] = "2" # run the code on a specified GPU
Many threads recommend use the above code to run python scripts on a specific GPU such as here and here.
However, When I tried to use the same way to run another python code on another virtual environment (with lower specifications) that was installed with python version 3.6.9 and tensorflow 1.12, it does not run on the GPU but on the CPU.
How can I run python code on a specific GPU in the case of the second virtual environment?
You can use export CUDA_VISIBLE_DEVICES to define which GPUs are visible to the application. For example, if you want GPUs 0 and 2 visible, use export CUDA_VISIBLE_DEVICES=0,2.

Code run in Jupyter Lab uses very different GPU RAM than run as a script

I am training a 3D siamese network in PyTorch. When I run the code from an iPython (v7.15.0) terminal the GPU RAM usage maxes out at 1739M:
When I copy the same code into a Jupyter notebook (in Jupyter Lab v2.1.5) the GPU RAM usage is 10209M:
Jupyter Lab was run from the terminal in the same Python virtual environment.
First, I don't understand why running the script in Jupyter Lab would increase GPU RAM usage by a factor of almost 6.
Second, and related, is there anyway to have Jupyter Lab run in a mode that uses somewhere in the range of 1739M for the GPU RAM? I love the ability to have all the "documentation" around the code and output.
Python version 3.6.9.
Ok, now I realized what the difference was when I run the two.
I have two GPUs on the machine a Quadro M2000 that drives the video and the Titan XP. When I ran JupyterLab on the command line I ran it as jupyter lab, but when I ran iPython I ran it as CUDA_VISIBLE_DEVICES=0 ipython --pylab. Without the CUDA_VISIBILE_DEVICES it gave me warnings about mis-matched GPUS. When I ran in the iPython terminal I saw the warnings previously, but I didn't see them when I ran JupyterLab.
So, it is still odd that the RAM usage on the Titan XP would jump to 10G+ of RAM.

Confused with setting up ML and DL on GPU

My goal is to set up my PC for machine and deep learning through my GPU. I've read about all the different components however I can not connect the dots for what I need to do.
OS: Ubuntu 20.04
GPU: Nvidia RTX 2070 Super
Anaconda: 4.8.3
I've installed the nvidia-cuda-toolkit (10.1.243), but now what?
How does this integrate with jupyter notebook?
The 3 python modules I want to work with are:
turicreate - I've gotten this to run off CPU but not GPU
scikit-learn
tensorflow
matlab
I know cuDNN and pyCUDA fit in there somewhere.
Any help is appreciated. Thanks
First of all - I have the experience limited to ubuntu 18.04 and 16.xx and python DL frameworks. But I hope some sugestions will be helpfull.
If I were familiar with docker I would rather consider to use docker instead of setting-up everything from scratch. This approach is described in section about tensorflow container
If you decided to setup all components yourself please see this guideline
I used some contents from it for 18.04, succesfully.
be carefull with automatic updates. After the configuration is finished and tested protect it from being overwritten with newest version of CUDAor TensorRT.
Answering one of your sub-questions - How does this integrate with jupyter notebook? - it does not, becuase it is unneccesary. CUDA library cooperates with a framework such as Tensorflow, not with the Jupyter. Jupyter is just an editor and execution controller on the server side.

How to prevent specific GPU to be used in Python code

My this problem is same as 1: How to set specific gpu in tensorflow?
but it didn't solve my problem.
I have 4 GPUs in my PC and I want to run code on GPU 0 but whenever I run my tensorflow code, my code is always running only on GPU 2. As reading these (2, 3, 4) solutions and information I tried to solve my problem by adding:
os.environ['CUDA_VISIBLE_DEVICES']= '0' in python code
orCUDA_VISIBLE_DEVICES as environment variable in PyCharm project configuration settings.
furthermore I also add CUDA_LAUNCH_BLOCKING=2in code or environment variable to block the GPU 2. Is it right way to block any GPU?
Above solutions are not working for me. Code is always running on GPU 2. I checked it by watch nvidia-smi.
My system environment is
Ubuntu 16.04
RTX2080Ti (all 4 GPUs)
Driver version 418.74
CUDA 9.0 and CuDNN 7.5
Tensorflow-gpu 1.9.0
Any suggestions for this problem? It's wired that adding environment variable in project settings in PyCharm or in python code... still only GPU 2 is visible. When I remove CUDA_VISIBLE_DEVICESthen tensorflow detects all 4 GPUs but code run on only GPU 2.
I tried this in tensorflow 2.0.0
physical_devices = tf.config.experimental.list_physical_devices('GPU')
tf.config.experimental.set_visible_devices(physical_devices[0], 'GPU')
logical_devices = tf.config.experimental.list_logical_devices('GPU')
This should make u r code run in GPU index 0

Categories

Resources