Virtual Environment¶
While the Docker images you will be using to run experiments on Polyaxon would contain the conda
environments you would need, you can also create these virtual environments within your development environment, and have it be persisted. The following set of commands allows you to create the conda
environment and store the packages within your own workspace directory:
-
First, have VSCode open the repository that you have cloned previously by heading over to the top left hand corner, selecting
File > Open Folder...
, and entering the path to the repository. In this case, you should be navigating to the folder/polyaxon-v1-data/workspaces/<YOUR_NAME>/{{cookiecutter.repo_name}}
. -
Now, let's initialise
conda
for the bash shell, and create the virtual environment specified in{{cookiecutter.repo_name}}-conda-env.yml
.
$ /miniconda3/bin/conda init bash
$ source ~/.bashrc
(base) $ conda env create -f {{cookiecutter.repo_name}}-conda-env.yml \
-p /polyaxon-v1-data/workspaces/<YOUR_NAME>/conda_envs/{{cookiecutter.repo_name}}-conda-env
- After creating the
conda
environment, let's create a permanent alias for easy activation.
(base) $ echo 'alias {{cookiecutter.repo_name}}-conda-env="conda activate /polyaxon-v1-data/workspaces/<YOUR_NAME>/conda_envs/{{cookiecutter.repo_name}}-conda-env"' >> ~/.bashrc
(base) $ source ~/.bashrc
(base) $ {{cookiecutter.repo_name}}-conda-env
({{cookiecutter.repo_name}}-conda-env) $ # conda environment has been activated
Tip
If you encounter issues in trying to install Python libraries, do ensure that the amount of resources allocated to the VSCode service is sufficient. Installation of libraries from PyPI tends to fail when there's insufficient memory. For starters, dedicate 4GB of memory to the service:
...
resources:
requests:
memory: "4Gi"
cpu: "2.5"
limits:
memory: "4Gi"
cpu: "2.5"
...
Another way is to add the flag --no-cache-dir
for your pip install
executions. However, there's no similar flag for conda
at the moment so the above is a blanket solution.
Reference(s):
conda
Docs - Managing environments- StackOverflow - "Pip install killed - out of memory - how to get around it?"
- phoenixNAP - Linux alias Command: How to Use It With Examples
Jupyter Kernel for VSCode¶
While it is possible for VSCode to make use of different virtual Python environments, some other additional steps are required for Polyaxon VSCode service to detect the conda
environments that you would have created.
-
Ensure that you are in a project folder which you intend to work on. You can open a folder through
File > Open Folder...
. In this case, you should be navigating to the folder/polyaxon-v1-data/workspaces/<YOUR_NAME/{{cookiecutter.repo_name}}
. -
Install the VSCode extensions
ms-python.python
andms-toolsai.jupyter
. After installation of these extensions, restart VSCode by using the shortcutCtrl + Shift + P
, enteringDeveloper: Reload Window
in the prompt and pressingEnter
following that. -
Ensure that you have
ipykernel
installed in theconda
environment that you intend to use. This template by default lists the library as a dependency under{{cookiecutter.repo_name}}-conda-env.yml
. You can check for the library like so:
$ conda activate /polyaxon-v1-data/workspaces/<YOUR_NAME>/conda_envs/{{cookiecutter.repo_name}}-conda-env
$ conda list | grep "ipykernel"
ipykernel 6.9.2 pypi_0 pypi
-
Now enter
Ctrl + Shift + P
again and executePython: Select Interpreter
. Provide the path to the Python executable within theconda
environment that you intend to use, something like so:path/to/conda_env/bin/python
. -
Open up any Jupyter notebook and click on the button that says
Select Kernel
on the top right hand corner. You will be presented with a selection of Python interpreters. Select the one that corresponds to the environment you intend to use. -
Test out the kernel by running the cells in the sample notebook provided under
notebooks/sample-tf-classification.ipynb
.
Jupyter Kernel for JupyterLab¶
The same with the VSCode service, the JupyterLab service would not by default detect conda
environments. You would have to specify to the JupyterLab installation the ipython
kernel existing within your conda
environment.
-
Open up a terminal within JupyterLab.
-
Activate the
conda
environment in question and ensure that you haveipykernel
installed in theconda
environment that you intend to use. This template by default lists the library as a dependency under{{cookiecutter.repo_name}}-conda-env.yml
. You can check for the library like so:
$ conda activate /polyaxon-v1-data/workspaces/<YOUR_NAME>/conda_envs/{{cookiecutter.repo_name}}-conda-env
$ conda list | grep "ipykernel"
ipykernel 6.9.2 pypi_0 pypi
- Within the
conda
environment, execute the following:
$ ipython kernel install --name "{{cookiecutter.repo_name}}-conda-env" --user
- Refresh the JupyterLab instance.
- Within each Jupyter notebook, you can select the kernel of specific
conda
environments that you intend to use by heading to the toolbar underKernel
->Change Kernel...
.
- Test out the kernel by running the cells in the sample notebook provided under
notebooks/sample-tf-classification.ipynb
.
Reference(s):