Today, we will show how to install Anaconda and how to use YAML files for versioning environments.
Anaconda is a distribution of the Python for machine learning and data science that simplifies package management and deployment. It is an invaluable tool for controlling the versioning of packages in your code environments.
This post will help avoid a common problem faced by new users: "Why can't I see the GPUs from Anaconda?". The issue is due to how Anaconda sets up its own paths and environment. The steps below will avoid this problem altogether.
Anaconda can be found at: https://www.anaconda.com/products/individual
Example of the download and install:
$ wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh
$ sh Anaconda3-2021.11-Linux-x86_64.sh
This is optional, but is recommended to allow more control and ensure current drivers for NVIDIA builds.
Example YAML file called: tf-gpu-2.5.yaml
name: tf-gpu-2.5
channels: - conda-forge - nvidia - defaults dependencies: - cudatoolkit==11.1.1 - cudnn - nccl - pip - pandas - matplotlib - python==3.8.5 - scikit-learn - pip: - networkx - tqdm - matplotlib - pydot - graphviz - tensorflow>=2.5 - tensorflow-gpu
# Use the YAML file to install the environment
$ conda env create -f ~/Downloads/tf-gpu-2.5.yaml
# List your environments
$ conda env list
base /home/user/anaconda3
tf-gpu-2.5 /home/user/anaconda3/envs/tf-gpu-2.5
# Activate this
$ conda activate tf-gpu-2.5
(tf-gpu-2.5) :~$
# Sample python script:
# Get the Tensorflow version:
import tensorflow as tf
print("\nTensorflow version: ",tf.__version__, \
"\nTensorflow file: ",tf.__file__)' # Check that you can see the GPUs: print('Num GPUs Available: ', \ len(tf.config.experimental.list_physical_devices('GPU')))"
(tf-gpu-2.5) :~$ jupyter notebook
.. prints info .. and pulls up a browser ..
To access the server, open this file in a browser:
file:///home/user/.local/share/jupyter/runtime/jpserver-3133340-open.html
Or copy and paste one of these URLs:
http://localhost:8888/lab?token=4a0cdcb1cb6bae14848e26b5bab7712b79206b134d40b30e
or http://127.0.0.1:8888/lab?token=4a0cdcb1cb6bae14848e26b5bab7712b79206b134d40b30e
If you are on a remote server, you can either use openssl to make a key and a valid IP address, or use a ssh tunnel to securely connect.
1. Note, the port (like 8888) that was used when jupyter notebook started up.
2. Make a ssh tunnel to the server for the port:
# From local desktop:
$ ssh -N -L 8888:localhost:8888 <gpuserver>
# example from local desktop with port 8888:
$ ssh -N -L 8888:localhost:8888 192.168.0.188
3. To open the notebook up in the local host browser:
# Then on you desktop/notebook:
Paste the following URL (Found above from jupyter lab):
http://localhost:8888/lab?token=.....................
Where the '....' is the token provided by jupyter lab
a. Why are the GPUs not seen?
- Commonly this is if cudatoolkit was not installed in the
Anaconda environment.
b. Many various issues with versions, check the following:
- See what is installed with conda, conda list
example: (tf-gpu-2.5) :~$ conda list
- See what is installed with pip:
example: (tf-gpu-2.5) :~$ pip -v list
- Commonly requirements list unneeded dependencies.
- protobuf version change (upgrade or downgrade).
a. Search for versions:
conda search -c nvidia cudatoolkit
conda search -c nvidia tensorflow
conda search -c nvidia tensorflow-gpu
b. Create a environment:
conda env create -f ~/conda-yaml/tf-gpu.yaml
c. List environments:
conda env list
conda info --envs
d. Using the environment:
conda activate tf-gpu
e. Stop using/deactivate the env:
conda deactivate
f. Removing a environment
conda env remove -n <name>