Contenedorizar una aplicación de IA generativa
Requisitos previos
NoteLas aplicaciones de GenAI a menudo pueden beneficiarse de la aceleración por GPU. Docker Desktop admite la aceleración por GPU en Windows con el backend WSL2. Los usuarios de Linux también pueden acceder a la aceleración por GPU utilizando una instalación nativa de Docker Engine.
- Tienes instalada la versión más reciente de Docker Desktop o, si eres un usuario de Linux y planeas usar la aceleración por GPU, Docker Engine. Docker agrega nuevas características regularmente y algunas partes de esta guía pueden funcionar solo con la versión más reciente de Docker Desktop.
- Tienes un cliente de git. Los ejemplos de esta sección utilizan un cliente de git basado en la línea de comandos, pero puedes usar cualquier cliente.
Descripción general
Esta sección te guía a través de la contenedorización de una aplicación de inteligencia artificial generativa (GenAI) utilizando Docker Desktop.
NotePuedes ver más ejemplos de aplicaciones de GenAI contenedorizadas en las aplicaciones de demostración de GenAI Stack.
Obtener la aplicación de muestra
La aplicación de muestra utilizada en esta guía es una versión modificada de la aplicación PDF Reader de las aplicaciones de demostración de GenAI Stack. Se trata de una aplicación de Python completa que te permite hacer preguntas sobre un archivo PDF.
La aplicación utiliza LangChain para la orquestación, Streamlit para la interfaz de usuario, Ollama para ejecutar el LLM y Neo4j para almacenar vectores.
Clona la aplicación de muestra. Abre una terminal, cambia al directorio en el que quieras trabajar y ejecuta el siguiente comando para clonar el repositorio:
$ git clone https://github.com/craig-osterhout/docker-genai-sample
Ahora deberías tener los siguientes archivos en tu directorio docker-genai-sample.
├── docker-genai-sample/
│ ├── .gitignore
│ ├── app.py
│ ├── chains.py
│ ├── env.example
│ ├── requirements.txt
│ ├── util.py
│ ├── LICENSE
│ └── README.mdInicializar los recursos de Docker
Ahora que tienes una aplicación, puedes usar docker init para crear los recursos de Docker necesarios para contenedorizar tu aplicación. Dentro del directorio docker-genai-sample, ejecuta el comando docker init. docker init proporciona algunas configuraciones por defecto, pero deberás responder algunas preguntas sobre tu aplicación. Por ejemplo, esta aplicación utiliza Streamlit para ejecutarse. Consulta el siguiente ejemplo de docker init y utiliza las mismas respuestas para tus indicaciones.
$ docker init
Welcome to the Docker Init CLI!
This utility will walk you through creating the following files with sensible defaults for your project:
- .dockerignore
- Dockerfile
- compose.yaml
- README.Docker.md
Let's get started!
? What application platform does your project use? Python
? What version of Python do you want to use? 3.11.4
? What port do you want your app to listen on? 8000
? What is the command to run your app? streamlit run app.py --server.address=0.0.0.0 --server.port=8000
Ahora deberías tener el siguiente contenido en tu directorio docker-genai-sample.
├── docker-genai-sample/
│ ├── .dockerignore
│ ├── .gitignore
│ ├── app.py
│ ├── chains.py
│ ├── compose.yaml
│ ├── env.example
│ ├── requirements.txt
│ ├── util.py
│ ├── Dockerfile
│ ├── LICENSE
│ ├── README.Docker.md
│ └── README.mdPara obtener más información sobre los archivos que agregó docker init, consulta lo siguiente:
Ejecutar la aplicación
Dentro del directorio docker-genai-sample, ejecuta el siguiente comando en una terminal.
$ docker compose up --build
Docker compilará y ejecutará tu aplicación. Dependiendo de tu conexión de red, puede tardar varios minutos en descargar todas las dependencias. Verás un mensaje como el siguiente en la terminal cuando la aplicación se esté ejecutando.
server-1 | You can now view your Streamlit app in your browser.
server-1 |
server-1 | URL: http://0.0.0.0:8000
server-1 |
Abre un navegador y visualiza la aplicación en http://localhost:8000. Deberías ver una aplicación básica de Streamlit. La aplicación puede tardar unos minutos en descargar el modelo de incrustación (embedding). Mientras la descarga está en curso, aparecerá Running en la esquina superior derecha.
La aplicación requiere un servicio de base de datos Neo4j y un servicio de LLM para funcionar. Si tienes acceso a servicios que se ejecutan fuera de Docker, especifica la información de conexión y pruébala. Si no tienes los servicios en ejecución, continúa con esta guía para aprender cómo puedes ejecutar algunos o todos estos servicios con Docker.
En la terminal, presiona ctrl+c para detener la aplicación.
Resumen
En esta sección, aprendiste cómo contenedorizar y ejecutar tu aplicación de GenAI utilizando Docker.
Información relacionada:
Siguientes pasos
En la siguiente sección, aprenderás cómo ejecutar tu aplicación, la base de datos y el servicio de LLM localmente utilizando Docker.