Logotipo de Zephyrnet

Tutorial de Docker para científicos de datos – KDnuggets

Fecha:

Tutorial de Docker para científicos de datos
Imagen del autor
 

Python y el conjunto de bibliotecas de análisis de datos y aprendizaje automático de Python, como pandas y scikit-learn, lo ayudan a desarrollar aplicaciones de ciencia de datos con facilidad. Sin embargo, la gestión de dependencias en Python es un desafío. Cuando trabaje en un proyecto de ciencia de datos, tendrá que dedicar mucho tiempo a instalar las distintas bibliotecas y realizar un seguimiento de la versión de las bibliotecas que está utilizando, entre otras.

¿Qué sucede si otros desarrolladores quieren ejecutar su código y contribuir al proyecto? Bueno, otros desarrolladores que quieran replicar su aplicación de ciencia de datos primero deberían establecer el entorno del proyecto en su máquina, antes de que puedan continuar y ejecutar el código. Incluso las pequeñas diferencias, como las diferentes versiones de la biblioteca, pueden introducir cambios importantes en el código. Docker al rescate. Docker simplifica el proceso de desarrollo y facilita una colaboración fluida.

Esta guía le presentará los conceptos básicos de Docker y le enseñará cómo organizar aplicaciones de ciencia de datos en contenedores con Docker.

Tutorial de Docker para científicos de datos
Imagen del autor
 

Docker es una herramienta de creación de contenedores que le permite crear y compartir aplicaciones como artefactos portátiles llamados imágenes

Además del código fuente, su aplicación tendrá un conjunto de dependencias, configuración requerida, herramientas del sistema y más. Por ejemplo, en un proyecto de ciencia de datos, instalará todas las bibliotecas necesarias en su entorno de desarrollo (preferiblemente dentro de un entorno virtual). También se asegurará de estar usando una versión actualizada de Python compatible con las bibliotecas. 

Sin embargo, aún puede tener problemas al intentar ejecutar su aplicación en otra máquina. Estos problemas a menudo surgen de versiones de biblioteca y configuración no coincidentes, en el entorno de desarrollo, entre las dos máquinas.

Con Docker, puede empaquetar su aplicación, junto con las dependencias y la configuración. De modo que puede definir un entorno aislado, reproducible y uniforme para sus aplicaciones en toda la gama de máquinas host.

Repasemos algunos conceptos/terminologías:

Imagen de Docker

Una imagen de Docker es el artefacto portátil de su aplicación. 

Contenedor Docker

Cuando ejecuta una imagen, básicamente hace que la aplicación se ejecute dentro del entorno del contenedor. Entonces, una instancia en ejecución de una imagen es un contenedor.

Registro de Docker

El registro de Docker es un sistema para almacenamiento y distribuido Imágenes acoplables. Después de contener una aplicación en una imagen de Docker, puede ponerla a disposición de la comunidad de desarrolladores al enviarlos a un registro de imágenes. DockerHub es el registro público más grande y todas las imágenes se extraen de DockerHub de forma predeterminada.

Debido a que los contenedores brindan un entorno aislado para sus aplicaciones, otros desarrolladores ahora solo necesitan tener Docker configurado en su máquina. Y pueden iniciar contenedores, pueden extraer la imagen de Docker e iniciar contenedores con un solo comando, sin tener que preocuparse por instalaciones complejas, en forma remota. 

Al desarrollar una aplicación, también es común crear y probar varias versiones de la misma aplicación. Si usa Docker, puede tener varias versiones de la misma aplicación ejecutándose dentro de diferentes contenedores:sin cualquier conflicto, en el mismo entorno.

Además de simplificar el desarrollo, Docker también simplifica la implementación y ayuda a los equipos de desarrollo y operaciones a colaborar de manera efectiva. En el lado del servidor, el equipo de operaciones no tiene que dedicar tiempo a resolver conflictos complejos de versiones y dependencias. Solo necesitan tener un tiempo de ejecución docker configurado

Repasemos rápidamente algunos comandos básicos de Docker, la mayoría de los cuales usaremos en este tutorial. Para una descripción más detallada, lea: 12 comandos de Docker que todo científico de datos debe conocer.

Comando Función
docker ps Enumera todos los contenedores en ejecución
docker pull image-name Extrae el nombre de la imagen de DockerHub de forma predeterminada
docker images Enumera todas las imágenes disponibles.
docker run image-name Inicia un contenedor a partir de una imagen.
docker start container-id Reinicia un contenedor detenido
docker stop container-id Detiene un contenedor en ejecución
docker build path Construye una imagen en la ruta usando instrucciones en el Dockerfile

Note: Ejecuta todos los comandos anteponiendo sudo si no has creado el estibador grupo con el usuario.

Hemos aprendido los conceptos básicos de Docker y es hora de aplicar lo que hemos aprendido. En esta sección, incluiremos en un contenedor una aplicación de ciencia de datos simple mediante Docker.

Modelo de predicción del precio de la vivienda

Tomemos el siguiente modelo de regresión lineal que predice el valor objetivo: el precio medio de la vivienda según las características de entrada. El modelo se construye usando el Conjunto de datos de vivienda de California:

# house_price_prediction.py
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score # Load the California Housing dataset
data = fetch_california_housing(as_frame=True)
X = data.data
y = data.target # Split the dataset into training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Standardize features
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test) # Train the model
model = LinearRegression()
model.fit(X_train, y_train) # Make predictions on the test set
y_pred = model.predict(X_test) # Evaluate the model
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred) print(f"Mean Squared Error: {mse:.2f}")
print(f"R-squared Score: {r2:.2f}")

 

Sabemos que scikit-learn es una dependencia obligatoria. Si revisa el código, establecemos as_frame igual a True al cargar el conjunto de datos. Así que también necesitamos pandas. Y el requirements.txt el archivo se ve así:

pandas==2.0
scikit-learn==1.2.2

 

Tutorial de Docker para científicos de datos
Imagen del autor

Crear el Dockerfile

Hasta ahora, tenemos el archivo de código fuente. house_price_prediction.py y del requirements.txt archivo. Ahora debemos definir cómo para construir una imagen desde nuestra aplicación. El Dockerfile se utiliza para crear esta definición de creación de una imagen a partir de los archivos de código fuente de la aplicación.

Entonces, ¿qué es un Dockerfile? Es un documento de texto que contiene instrucciones paso a paso para construir la imagen de Docker.

 

Tutorial de Docker para científicos de datos
Imagen del autor
 

Aquí está el Dockerfile para nuestro ejemplo:

# Use the official Python image as the base image
FROM python:3.9-slim # Set the working directory in the container
WORKDIR /app # Copy the requirements.txt file to the container
COPY requirements.txt . # Install the dependencies
RUN pip install --no-cache-dir -r requirements.txt # Copy the script file to the container
COPY house_price_prediction.py . # Set the command to run your Python script
CMD ["python", "house_price_prediction.py"]

 

Desglosemos el contenido del Dockerfile:

  • Todos los Dockerfiles comienzan con un FROM instrucción que especifica la imagen base. La imagen base es aquella imagen en la que se basa su imagen. Aquí usamos una imagen disponible para Python 3.9. El FROM La instrucción le dice a Docker que cree la imagen actual a partir de la imagen base especificada.
  • La SET El comando se usa para establecer el directorio de trabajo para todos los siguientes comandos (applicación en este ejemplo).
  • Luego copiamos el requirements.txt file al sistema de archivos del contenedor. 
  • La RUN La instrucción ejecuta el comando especificado, en un shell, dentro del contenedor. Aquí instalamos todas las dependencias requeridas usando pip
  • Luego copiamos el archivo de código fuente: el script de Python house_price_prediction.py— al sistema de archivos del contenedor.
  • Finalmente CMD se refiere a la instrucción que se va a ejecutar, cuando se inicia el contenedor. Aquí tenemos que ejecutar el house_price_prediction.py guion. El Dockerfile debe contener solo uno CMD instrucción.

Construye la imagen

Ahora que hemos definido el Dockerfile, podemos construir la imagen de la ventana acoplable ejecutando el docker build:

docker build -t ml-app .

 

La opción -t nos permite especificar un nombre y una etiqueta para la imagen en el nombre: etiqueta formato. La etiqueta predeterminada es más reciente

El proceso de compilación toma un par de minutos:

Sending build context to Docker daemon 4.608kB
Step 1/6 : FROM python:3.9-slim
3.9-slim: Pulling from library/python
5b5fe70539cd: Pull complete f4b0e4004dc0: Pull complete ec1650096fae: Pull complete 2ee3c5a347ae: Pull complete d854e82593a7: Pull complete Digest: sha256:0074c6241f2ff175532c72fb0fb37264e8a1ac68f9790f9ee6da7e9fdfb67a0e
Status: Downloaded newer image for python:3.9-slim ---> 326a3a036ed2
Step 2/6 : WORKDIR /app
...
...
...
Step 6/6 : CMD ["python", "house_price_prediction.py"] ---> Running in 7fcef6a2ab2c
Removing intermediate container 7fcef6a2ab2c ---> 2607aa43c61a
Successfully built 2607aa43c61a
Successfully tagged ml-app:latest

 

Una vez creada la imagen de Docker, ejecute el docker images dominio. Deberías ver elml-app imagen enumerada, también.

docker images

 

Tutorial de Docker para científicos de datos
 
Puede ejecutar la imagen de Docker ml-app usando el docker run mando:

docker run ml-app

 

Tutorial de Docker para científicos de datos
 

¡Felicidades! Acaba de dockerizar su primera aplicación de ciencia de datos. Al crear una cuenta de DockerHub, puede insertar la imagen en ella (o en un repositorio privado dentro de la organización).

Espero que haya encontrado útil este tutorial introductorio de Docker. Puede encontrar el código utilizado en este tutorial en este repositorio de GitHub. Como siguiente paso, configure Docker en su máquina y pruebe este ejemplo. O dockerize una aplicación de su elección. 

La forma más fácil de instalar Docker en su máquina es usando Escritorio Docker: obtiene tanto el cliente CLI de Docker como una GUI para administrar sus contenedores fácilmente. ¡Configure Docker y empiece a programar de inmediato!
 
 
Bala Priya C. es un desarrollador y escritor técnico de la India. Le gusta trabajar en la intersección de matemáticas, programación, ciencia de datos y creación de contenido. Sus áreas de interés y experiencia incluyen DevOps, ciencia de datos y procesamiento de lenguaje natural. ¡Le gusta leer, escribir, codificar y tomar café! Actualmente, está trabajando para aprender y compartir su conocimiento con la comunidad de desarrolladores mediante la creación de tutoriales, guías prácticas, artículos de opinión y más.
 

punto_img

Información más reciente

punto_img