Diferencia entre revisiones de «Uso de conda»
(No se muestran 17 ediciones intermedias de 2 usuarios) | |||
Línea 8: | Línea 8: | ||
Actualmente en el cluster contamos con distintos módulos que pueden ser utilizados para la creación de entornos virtuales de '''Conda'''. | Actualmente en el cluster contamos con distintos módulos que pueden ser utilizados para la creación de entornos virtuales de '''Conda'''. | ||
== Para particiones '''general''' y '''largemem''' == | |||
Anaconda2/5.3.0 | Anaconda2/5.3.0 | ||
Línea 16: | Línea 18: | ||
Miniconda3/4.5.12 | Miniconda3/4.5.12 | ||
Para nuestro ejemplo utilizaremos <code> | == Para particiones '''debug''' y '''main''' == | ||
miniconda3/24.3.0-zen4-h | |||
Para nuestro ejemplo utilizaremos <code>miniconda3/24.3.0-zen4-h</code>, pero puede utilizar el módulo que se adapte a sus necesidades. | |||
= Carga de módulo y activación inicial de Conda = | = Carga de módulo y activación inicial de Conda = | ||
Línea 24: | Línea 30: | ||
== Carga de módulo == | == Carga de módulo == | ||
Cargaremos el módulo <code> | Cargaremos el módulo <code>miniconda3/24.3.0-zen4-h</code>. | ||
Recuerde que si omite la versión del módulo a cargar, se utilizará el que esté por defecto. | Recuerde que si omite la versión del módulo a cargar, se utilizará el que esté por defecto. | ||
ml purge | ml purge | ||
ml | ml aocc | ||
ml | ml miniconda3/24.3.0-zen4-h | ||
== Activación de Conda == | == Activación de Conda == | ||
Línea 41: | Línea 47: | ||
Este comando editará su archivo <code>~/.bashrc</code> con un contenido similar a: | Este comando editará su archivo <code>~/.bashrc</code> con un contenido similar a: | ||
<pre> | |||
# >>> conda initialize >>> | |||
# !! Contents within this block are managed by 'conda init' !! | |||
__conda_setup="$('/home/modules/spack/opt/spack/linux-rocky9-zen4/aocc-4.2.0/miniconda3-24.3.0-h5ocuzzvejq6feasdmjmtv4iw5gyt5a2/bin/conda' 'shell.bash' 'hook' 2> /dev/null)" | |||
if [ $? -eq 0 ]; then | |||
eval "$__conda_setup" | |||
else | |||
if [ -f "/home/modules/spack/opt/spack/linux-rocky9-zen4/aocc-4.2.0/miniconda3-24.3.0-h5ocuzzvejq6feasdmjmtv4iw5gyt5a2/etc/profile.d/conda.sh" ]; then | |||
. "/home/modules/spack/opt/spack/linux-rocky9-zen4/aocc-4.2.0/miniconda3-24.3.0-h5ocuzzvejq6feasdmjmtv4iw5gyt5a2/etc/profile.d/conda.sh" | |||
else | |||
export PATH="/home/modules/spack/opt/spack/linux-rocky9-zen4/aocc-4.2.0/miniconda3-24.3.0-h5ocuzzvejq6feasdmjmtv4iw5gyt5a2/bin:$PATH" | |||
fi | |||
fi | |||
unset __conda_setup | |||
# <<< conda initialize <<< | |||
</pre> | |||
Línea 96: | Línea 103: | ||
which python | which python | ||
=== Buenas prácticas | = Instalación de software adicional = | ||
Cuando requiera instalar nuevo software, bastará que active su entorno virtual y use el comando <code>conda</code> para la instalación de software. | |||
Por ejemplo, si queremos instalar '''Tensorflow''' en nuestro entorno <code>mi_primer_entorno</code>, podemos ejecutar: | |||
conda activate mi_primer_entorno | |||
conda install Tensorflow | |||
=== Un ejemplo práctico e instalación de <code>numpy</code> === | |||
Veamos un ejemplo real: Muchos de nuestros usuarios que utilizan '''Python''' requieren el uso de '''NumPy'''. | |||
Para la instalación bajo nuestro entorno que ya tiene Python instalado, ejecutaremos | |||
conda activate mi_entorno_con_python | |||
conda install numpy | |||
Veremos un mensaje similar a: | |||
Collecting package metadata (current_repodata.json): done | |||
Solving environment: done | |||
## Package Plan ## | |||
environment location: /home/dbowman/.conda/envs/my_env | |||
added / updated specs: | |||
- numpy | |||
The following packages will be installed: | |||
ca-certificates 2023.5.7-hbcca054_0 --> 2023.7.22-hbcca054_0 | |||
certifi 2023.5.7-pyhd8ed1ab_0 --> 2023.7.22-pyhd8ed1ab_0 | |||
numpy 1.24.3-py311h64a7726_0 --> 1.25.1-py311h64a7726_0 | |||
openssl 3.1.0-hd590300_3 --> 3.1.1-hd590300_1 | |||
... | |||
Proceed ([y]/n)? | |||
Si aceptamos las dependencias se realizará la instalación y veremos un mensaje de finalización exitoso similar a: | |||
Preparing transaction: done | |||
Verifying transaction: done | |||
Executing transaction: done | |||
= Uso de entornos conda con scripts Sbatch = | |||
Ya hemos creado nuestros entornos virtuales, como también hemos instalado el software que vamos a necesitar. | |||
Ahora necesitamos ejecutar nuestras simulaciones en los nodos de cómputo, y para esto debemos indicar en nuestro script SBatch las siguientes instrucciones luego de haber realizado una reserva de recursos: | |||
eval "$(conda shell.bash hook)" | |||
conda activate mi_primer_entorno | |||
De esa manera será posible crear un script que se verá similar a: | |||
#!/bin/bash | |||
#SBATCH -J conda_test | |||
#SBATCH -p main | |||
#SBATCH -n 1 | |||
#SBATCH -c 1 | |||
#SBATCH --mem-per-cpu=2300 | |||
#SBATCH --mail-user=foo@example.com | |||
#SBATCH --mail-type=ALL | |||
#SBATCH -o conda_test_%j.out | |||
#Cargamos módulos de ser necesario | |||
ml ... | |||
#Activamos entorno CONDA | |||
eval "$(conda shell.bash hook)" | |||
conda activate mi_primer_entorno | |||
... mis comandos... | |||
Es importante destacar que la activación del entorno conda '''debe''' realizarse después del uso de cualquier comando <code>ml</code>, ya que la carga de módulos puede afectar a la activación del entorno virtual. | |||
= Eliminación de Conda y entornos virtuales = | |||
== Eliminación de Entornos == | |||
Puede listar sus entornos virtuales con el comando: | |||
conda env list | |||
Y en el caso de querer eliminar un entorno virtual puede ejecutar indicando el nombre de entorno: | |||
conda-env remove -n mi_primer_entorno | |||
También puede eliminar '''todos los entornos''' borrando la carpeta contenedora: | |||
rm -rf ~/.conda | |||
== Eliminación de Conda y del entorno == | |||
Para eliminar el uso de Conda de nuestro archivo debemos editar nuestro archivo <code>~/.bashrc</code> y '''eliminar''' el contenido similar a: | |||
<pre> | |||
# >>> conda initialize >>> | |||
# !! Contents within this block are managed by 'conda init' !! | |||
__conda_setup="$('/home/modules/spack/opt/spack/linux-rocky9-zen4/aocc-4.2.0/miniconda3-24.3.0-h5ocuzzvejq6feasdmjmtv4iw5gyt5a2/bin/conda' 'shell.bash' 'hook' 2> /dev/null)" | |||
if [ $? -eq 0 ]; then | |||
eval "$__conda_setup" | |||
else | |||
if [ -f "/home/modules/spack/opt/spack/linux-rocky9-zen4/aocc-4.2.0/miniconda3-24.3.0-h5ocuzzvejq6feasdmjmtv4iw5gyt5a2/etc/profile.d/conda.sh" ]; then | |||
. "/home/modules/spack/opt/spack/linux-rocky9-zen4/aocc-4.2.0/miniconda3-24.3.0-h5ocuzzvejq6feasdmjmtv4iw5gyt5a2/etc/profile.d/conda.sh" | |||
else | |||
export PATH="/home/modules/spack/opt/spack/linux-rocky9-zen4/aocc-4.2.0/miniconda3-24.3.0-h5ocuzzvejq6feasdmjmtv4iw5gyt5a2/bin:$PATH" | |||
fi | |||
fi | |||
unset __conda_setup | |||
# <<< conda initialize <<< | |||
</pre> | |||
Se debe guardar los cambios y salir de la sesión. | |||
La próxima vez que se acceda a nuestra cuenta, ya no estará disponible para su uso. | |||
Si se requiere volver a utilizar Conda, será necesario inicializar nuevamente nuestro entorno. | |||
= Buenas prácticas = | |||
En los ejemplos vistos, tenemos dos entornos virtuales: <code>mi_primer_entorno</code> y <code>mi_entorno_con_python</code>. | En los ejemplos vistos, tenemos dos entornos virtuales: <code>mi_primer_entorno</code> y <code>mi_entorno_con_python</code>. | ||
Línea 104: | Línea 227: | ||
Debe recordar que cada entorno virtual puede contener distintas colecciones de software, por lo que es una buena práctica que el nombre del entorno virtual sea descriptivo para su uso. | Debe recordar que cada entorno virtual puede contener distintas colecciones de software, por lo que es una buena práctica que el nombre del entorno virtual sea descriptivo para su uso. | ||
De esta manera, se mostrará las dependencias necesarias y deberá aceptar la instalación. | |||
Si desea instalar y aceptar todas las dependencias de manera automática puede ejecutar: | |||
conda install -y Tensorflow | |||
También es necesario mencionar que debe cuidar al cargar otros módulos, ya que pueden generar conflictos con versiones de software disponibles en el cluster en comparación a los que un entorno virtual les pueda ofrecer. | |||
Por ejemplo, si | Por ejemplo, si cargamos un módulo de Python y verificamos la ubicación del interprete de Python veremos lo siguiente: | ||
conda activate | [dbowman@leftraru1 ~]$ ml Python | ||
conda | [dbowman@leftraru1 ~]$ which python | ||
/home/lmod/software/Python/3.9.5-intel-2019b/bin/python | |||
[dbowman@leftraru1 ~]$ conda activate mi_entorno_con_python | |||
[dbowman@leftraru1 ~]$ which python | |||
~/.conda/envs/mi_entorno_con_python/bin/python | |||
[dbowman@leftraru1 ~]$ ml Python | |||
[dbowman@leftraru1 ~]$ which python | |||
/home/lmod/software/Python/3.9.5-intel-2019b/bin/python | |||
En el ejemplo anterior vemos que se carga el módulo de Python <code>Python/3.9.5</code> y el interprete corresponde a <code> /home/lmod/software/Python/3.9.5-intel-2019b/bin/python</code>. | |||
Posterior a eso se activa el entorno virtual <code>mi_entorno_con_python</code> y el interprete corresponde a <code>~/.conda/envs/mi_entorno_con_python/bin/python</code>. | |||
Nuevamente cargamos el módulo de Python <code>Python/3.9.5</code> y el interprete corresponde a <code> /home/lmod/software/Python/3.9.5-intel-2019b/bin/python</code>. Y aunque nuestro entorno sigue activo, al momento de utilizar el comando <code>python</code> puede que estemos utilizando otro. | |||
= Más información = | = Más información = | ||
Le invitamos a visitar https://anaconda.org/ donde encontrará más información como software disponible para instalar. | Le invitamos a visitar https://anaconda.org/ donde encontrará más información como software disponible para instalar. | ||
También lo invitamos a escribirnos a soporte@nlhpc.cl si necesita soporte. | |||
= Enlaces de interés = | |||
* Uso de [https://wiki.nlhpc.cl/Jupyter_bajo_Conda Jupyter] bajo conda | |||
* Como solicitar soporte creando un [https://wiki.nlhpc.cl/Como_abrir_un_ticket ticket] | |||
* Uso del gestor de tareas [https://wiki.nlhpc.cl/SISTEMA_GESTOR_DE_RECURSOS SLURM] |
Revisión actual - 19:51 3 sep 2024
Introducción
Si necesita utilizar entornos virtuales de Conda, el siguiente procedimiento muestra los pasos básicos para crear su primer entorno virtual.
Debe recordar que al ser entornos virtuales, estos estarán almacenados bajo su directorio $HOME
y las instalaciones de software bajo este entorno deben ser administradas por el propio usuario.
Módulos para Conda
Actualmente en el cluster contamos con distintos módulos que pueden ser utilizados para la creación de entornos virtuales de Conda.
Para particiones general y largemem
Anaconda2/5.3.0 Anaconda3/5.1.0 Anaconda3/5.3.0 Anaconda3/2020.02 Miniconda2/4.7.10 Miniconda3/4.5.12
Para particiones debug y main
miniconda3/24.3.0-zen4-h
Para nuestro ejemplo utilizaremos miniconda3/24.3.0-zen4-h
, pero puede utilizar el módulo que se adapte a sus necesidades.
Carga de módulo y activación inicial de Conda
El siguiente paso debe realizarse una única vez, posterior a esto, el usuario deberá crear, activar y administrar sus propios entornos virtuales.
Carga de módulo
Cargaremos el módulo miniconda3/24.3.0-zen4-h
.
Recuerde que si omite la versión del módulo a cargar, se utilizará el que esté por defecto.
ml purge ml aocc ml miniconda3/24.3.0-zen4-h
Activación de Conda
Activaremos el uso de conda con el comando:
conda init bash
Este comando editará su archivo ~/.bashrc
con un contenido similar a:
# >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$('/home/modules/spack/opt/spack/linux-rocky9-zen4/aocc-4.2.0/miniconda3-24.3.0-h5ocuzzvejq6feasdmjmtv4iw5gyt5a2/bin/conda' 'shell.bash' 'hook' 2> /dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "/home/modules/spack/opt/spack/linux-rocky9-zen4/aocc-4.2.0/miniconda3-24.3.0-h5ocuzzvejq6feasdmjmtv4iw5gyt5a2/etc/profile.d/conda.sh" ]; then . "/home/modules/spack/opt/spack/linux-rocky9-zen4/aocc-4.2.0/miniconda3-24.3.0-h5ocuzzvejq6feasdmjmtv4iw5gyt5a2/etc/profile.d/conda.sh" else export PATH="/home/modules/spack/opt/spack/linux-rocky9-zen4/aocc-4.2.0/miniconda3-24.3.0-h5ocuzzvejq6feasdmjmtv4iw5gyt5a2/bin:$PATH" fi fi unset __conda_setup # <<< conda initialize <<<
Si elimina estas líneas, deberá cargar el módulo y activar conda nuevamente.
En este punto, es necesario puede salir de su sesión y volver a acceder, o ejecutar el siguiente comando para activar volver a cargar su archivo ~/.bashrc
:
source ~/.bashrc
Y ya tendrá disponible el comando conda
disponible en su sesión.
Creación de entorno virtual
Los siguientes pasos permitirán crear un entorno virtual bajo su cuenta personal.
Creando nuestro entorno virtual
Crearemos nuestro entorno virtual con el comando:
conda create -n mi_primer_entorno
Una vez que este entorno se haya creado, lo podremos activar con:
conda activate mi_primer_entorno
Fíjese que el prompt de su cuenta indicará el nombre del entorno virtual que esté activo. En una primera instancia verá un cambio de base por mi_primer_entorno
Creando un entorno virtual con Python 3.9.5
En el caso de querer crear un entorno virtual y en el mismo paso instalar Python en una versión específica, puede usar el comando:
conda create -n mi_entorno_con_python python=3.9.5
Este comando creará el entorno mi_entorno_con_python
e instalará la versión 3.9.5 de Python.
Eventualmente, y luego que su entorno haya sido creado, podrá activar este nuevo entorno y verificar la ubicación del comando python
conda activate mi_entorno_con_python which python
Instalación de software adicional
Cuando requiera instalar nuevo software, bastará que active su entorno virtual y use el comando conda
para la instalación de software.
Por ejemplo, si queremos instalar Tensorflow en nuestro entorno mi_primer_entorno
, podemos ejecutar:
conda activate mi_primer_entorno conda install Tensorflow
Un ejemplo práctico e instalación de numpy
Veamos un ejemplo real: Muchos de nuestros usuarios que utilizan Python requieren el uso de NumPy.
Para la instalación bajo nuestro entorno que ya tiene Python instalado, ejecutaremos
conda activate mi_entorno_con_python conda install numpy
Veremos un mensaje similar a:
Collecting package metadata (current_repodata.json): done Solving environment: done ## Package Plan ## environment location: /home/dbowman/.conda/envs/my_env added / updated specs: - numpy The following packages will be installed: ca-certificates 2023.5.7-hbcca054_0 --> 2023.7.22-hbcca054_0 certifi 2023.5.7-pyhd8ed1ab_0 --> 2023.7.22-pyhd8ed1ab_0 numpy 1.24.3-py311h64a7726_0 --> 1.25.1-py311h64a7726_0 openssl 3.1.0-hd590300_3 --> 3.1.1-hd590300_1 ... Proceed ([y]/n)?
Si aceptamos las dependencias se realizará la instalación y veremos un mensaje de finalización exitoso similar a:
Preparing transaction: done Verifying transaction: done Executing transaction: done
Uso de entornos conda con scripts Sbatch
Ya hemos creado nuestros entornos virtuales, como también hemos instalado el software que vamos a necesitar.
Ahora necesitamos ejecutar nuestras simulaciones en los nodos de cómputo, y para esto debemos indicar en nuestro script SBatch las siguientes instrucciones luego de haber realizado una reserva de recursos:
eval "$(conda shell.bash hook)" conda activate mi_primer_entorno
De esa manera será posible crear un script que se verá similar a:
#!/bin/bash #SBATCH -J conda_test #SBATCH -p main #SBATCH -n 1 #SBATCH -c 1 #SBATCH --mem-per-cpu=2300 #SBATCH --mail-user=foo@example.com #SBATCH --mail-type=ALL #SBATCH -o conda_test_%j.out
#Cargamos módulos de ser necesario ml ...
#Activamos entorno CONDA eval "$(conda shell.bash hook)" conda activate mi_primer_entorno
... mis comandos...
Es importante destacar que la activación del entorno conda debe realizarse después del uso de cualquier comando ml
, ya que la carga de módulos puede afectar a la activación del entorno virtual.
Eliminación de Conda y entornos virtuales
Eliminación de Entornos
Puede listar sus entornos virtuales con el comando:
conda env list
Y en el caso de querer eliminar un entorno virtual puede ejecutar indicando el nombre de entorno:
conda-env remove -n mi_primer_entorno
También puede eliminar todos los entornos borrando la carpeta contenedora:
rm -rf ~/.conda
Eliminación de Conda y del entorno
Para eliminar el uso de Conda de nuestro archivo debemos editar nuestro archivo ~/.bashrc
y eliminar el contenido similar a:
# >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$('/home/modules/spack/opt/spack/linux-rocky9-zen4/aocc-4.2.0/miniconda3-24.3.0-h5ocuzzvejq6feasdmjmtv4iw5gyt5a2/bin/conda' 'shell.bash' 'hook' 2> /dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "/home/modules/spack/opt/spack/linux-rocky9-zen4/aocc-4.2.0/miniconda3-24.3.0-h5ocuzzvejq6feasdmjmtv4iw5gyt5a2/etc/profile.d/conda.sh" ]; then . "/home/modules/spack/opt/spack/linux-rocky9-zen4/aocc-4.2.0/miniconda3-24.3.0-h5ocuzzvejq6feasdmjmtv4iw5gyt5a2/etc/profile.d/conda.sh" else export PATH="/home/modules/spack/opt/spack/linux-rocky9-zen4/aocc-4.2.0/miniconda3-24.3.0-h5ocuzzvejq6feasdmjmtv4iw5gyt5a2/bin:$PATH" fi fi unset __conda_setup # <<< conda initialize <<<
Se debe guardar los cambios y salir de la sesión.
La próxima vez que se acceda a nuestra cuenta, ya no estará disponible para su uso.
Si se requiere volver a utilizar Conda, será necesario inicializar nuevamente nuestro entorno.
Buenas prácticas
En los ejemplos vistos, tenemos dos entornos virtuales: mi_primer_entorno
y mi_entorno_con_python
.
Pero estos nombres no nos dicen mucho.
Debe recordar que cada entorno virtual puede contener distintas colecciones de software, por lo que es una buena práctica que el nombre del entorno virtual sea descriptivo para su uso.
De esta manera, se mostrará las dependencias necesarias y deberá aceptar la instalación.
Si desea instalar y aceptar todas las dependencias de manera automática puede ejecutar:
conda install -y Tensorflow
También es necesario mencionar que debe cuidar al cargar otros módulos, ya que pueden generar conflictos con versiones de software disponibles en el cluster en comparación a los que un entorno virtual les pueda ofrecer.
Por ejemplo, si cargamos un módulo de Python y verificamos la ubicación del interprete de Python veremos lo siguiente:
[dbowman@leftraru1 ~]$ ml Python [dbowman@leftraru1 ~]$ which python /home/lmod/software/Python/3.9.5-intel-2019b/bin/python [dbowman@leftraru1 ~]$ conda activate mi_entorno_con_python [dbowman@leftraru1 ~]$ which python ~/.conda/envs/mi_entorno_con_python/bin/python [dbowman@leftraru1 ~]$ ml Python [dbowman@leftraru1 ~]$ which python /home/lmod/software/Python/3.9.5-intel-2019b/bin/python
En el ejemplo anterior vemos que se carga el módulo de Python Python/3.9.5
y el interprete corresponde a /home/lmod/software/Python/3.9.5-intel-2019b/bin/python
.
Posterior a eso se activa el entorno virtual mi_entorno_con_python
y el interprete corresponde a ~/.conda/envs/mi_entorno_con_python/bin/python
.
Nuevamente cargamos el módulo de Python Python/3.9.5
y el interprete corresponde a /home/lmod/software/Python/3.9.5-intel-2019b/bin/python
. Y aunque nuestro entorno sigue activo, al momento de utilizar el comando python
puede que estemos utilizando otro.
Más información
Le invitamos a visitar https://anaconda.org/ donde encontrará más información como software disponible para instalar.
También lo invitamos a escribirnos a soporte@nlhpc.cl si necesita soporte.