VISITAS:

domingo, 18 de octubre de 2020

CONDA: entorno para trabajar con Python y machine learning

Python es el lenguaje más usado para machine learning y también para deep learning. Hay algunas iniciativas para promocionar el lenguaje Go (golang) para machine learning. Mi opinión es que a día de hoy, las librerías más avanzadas para “x learning” están en python, y aunque creo que el futuro puede derivar a Go, actualmente es python el lenguaje dominante.

Sin embargo, la instalación típica de Python tiene un problema cuando se quiere trabajar con librerías para machine learning, ya que el comando pip para instalar librerías no maneja correctamente algunas dependencias que están escritas en C o en Fortran. Librerías como numpy, scikit-learn, Tensorflow o Keras pueden dar problemas.

La solución está en CONDA, una distribución de Python preparada específicamente para trabajar con data science y machine learning. CONDA se puede instalar de dos formas:

- Anaconda: es una distribución que incluye un gran número de librerías preinstaladas y que permite trabajar directamente sin necesidad de instalar nada más. Ocupa unos cuantos gigas.

- Miniconda: es una distribución básica que permite instalar fácilmente cualquier librería python (incluidas las que están en C o Fortran). Ocupa mucho menos que Anaconda y es igual de funcional, aunque tendremos que instalar manualmente las librerías que necesitemos.

Instalación de miniconda

Mi elección es miniconda, que incluye el intérprete python, unas cuantas librerías básicas y un gestor de paquetes. Miniconda se descarga de:

http://conda.pydata.org/miniconda.html

Dispone de instaladores para Windows, OSX y Linux.

Después de la instalación, tendremos un directorio miniconda3 en nuestro directorio HOME. Es conveniente añadir a la variable PATH el directorio bin de miniconda, para utilizar más fácilmente los comandos.

Para comprobar que conda se ha instalado correctamente:

$ conda  --version

Para actualizar a la última versión de conda:

$ conda update conda

Entornos conda

En entorno en conda es muy similar a los virtual environments de python. En pocas palabras se trata de crear una instalación con una versión concreta de python y con unas librerías instaladas. De esta forma, ejecutando nuestro programa python en ese entorno, podemos asegurar que la versión de python es la adecuada y que disponemos de las librerías necesarias.
Crear un entorno:

$ conda create -n <env_name> python=3.7

Este entorno se crea en el directorio:

$HOME/miniconda3/envs/env_name

Activar y desactivar un entorno:

$ conda activate <env_name>
$ conda deactivate <env_name>

Mostrar todos los entornos disponibles:

$ conda info --envs

Mostrar todos los packages (librerías) instalados en un entorno:

$ conda list -n <env_name>

Instalar packages en un entorno (junto con sus dependencias):

$ conda install [-n <env_name>] numpy

Actualizar packages:

$ conda update [-n <env_name>] numpy

Eliminar packages de un entorno:

$ conda remove [-n <env_name>] numpy

Eliminar completamente un entorno:

$ conda remove -n <env_name> --all

Replicar entornos

Una utilidad de los entornos es poder replicarlos, por ejemplo cuando se incorpora un nuevo desarrollador a un equipo, queremos que utilice la misma versión de python y las mismas versiones de las librerías que se utilizan en un proyecto. Y por supuesto, también es muy importante al desplegar en los distintos entornos: integración, certificación y producción. Siempre nos va a interesar mantener las mismas versiones con las que se ha desarrollado un programa python.

Para exportar un entorno:

$ conda activate <source_env>
$ conda list -e > requirements.txt

Para crear un entorno a partir de otro:

$ conda create -n <target_env> --file requirements.txt

También se puede hacer utilizando yaml:

$ conda env export -n <source_env> > environment.yml
$ conda env create --file environment.yml