Cog es una herramienta de código abierto que le permite empaquetar modelos de aprendizaje automático en un contenedor estándar listo para producción.
Puede implementar su modelo empaquetado en su propia infraestructura o replicarlo.
Contenedores Docker sin complicaciones. Escribir su propio Dockerfile
puede ser un proceso desconcertante. Con Cog, usted define su entorno con un archivo de configuración simple y genera una imagen de Docker con todas las mejores prácticas: imágenes base de Nvidia, almacenamiento en caché eficiente de dependencias, instalación de versiones específicas de Python, valores predeterminados de variables de entorno sensibles, etc.
No más infierno CUDA. Cog sabe qué combinaciones CUDA/cuDNN/PyTorch/Tensorflow/Python son compatibles y lo configurará todo correctamente para usted.
Defina las entradas y salidas para su modelo con Python estándar. Luego, Cog genera un esquema OpenAPI y valida las entradas y salidas con Pydantic.
Servidor de predicción HTTP automático : los tipos de su modelo se utilizan para generar dinámicamente una API HTTP RESTful utilizando FastAPI.
Trabajador de cola automático. Los modelos de aprendizaje profundo de larga duración o el procesamiento por lotes se diseñan mejor con una cola. Los modelos Cog hacen esto de inmediato. Actualmente, Redis es compatible y hay más en proceso.
Almacenamiento en la nube. Los archivos se pueden leer y escribir directamente en Amazon S3 y Google Cloud Storage. (Muy pronto.)
Listo para la producción. Implemente su modelo en cualquier lugar donde se ejecuten imágenes de Docker. Tu propia infraestructura, o Réplica.
Defina el entorno Docker en el que se ejecuta su modelo con cog.yaml
:
compilación: gpu: verdadero paquetes_sistema: - "libgl1-mesa-glx" - "libglib2.0-0" python_version: "3.12" python_packages: - "antorcha==2.3"predict: "predict.py:Predictor"
Defina cómo se ejecutan las predicciones en su modelo con predict.py
:
from cog import BasePredictor, Entrada, Rutaimport torchclass Predictor(BasePredictor): def setup(self): """Cargue el modelo en la memoria para que la ejecución de múltiples predicciones sea eficiente""" self.model = torch.load("./weights. pth") # Los argumentos y tipos que el modelo toma como entrada def predict(self, image: Path = Input(description="Imagen de entrada en escala de grises") ) -> Ruta: """Ejecutar una predicción única en el modelo""" imagen_procesada = preproceso(imagen) salida = self.model(imagen_procesada) return postproceso(salida)
Ahora puedes ejecutar predicciones en este modelo:
$ cog predecir -i [email protected]> Creando imagen de Docker...--> Ejecutando predicción...--> Salida escrita en salida.jpg
O cree una imagen de Docker para su implementación:
$ cog build -t mi-modelo-de-colorización--> Construyendo imagen de Docker...--> Construido mi-modelo-de-colorización:latest$ docker run -d -p 5000:5000 --gpus all my-colorization-model$ curl http://localhost:5000/predictions -X POST -H 'Tipo de contenido: aplicación/json' -d '{"input": {"image": "https://.../entrada.jpg"}}'
Es realmente difícil para los investigadores enviar modelos de aprendizaje automático a producción.
Parte de la solución es Docker, pero es muy complejo lograr que funcione: Dockerfiles, pre/postprocesamiento, servidores Flask, versiones CUDA. La mayoría de las veces, el investigador tiene que sentarse con un ingeniero para implementar la maldita cosa.
Andreas y Ben crearon Cog. Andreas solía trabajar en Spotify, donde creó herramientas para crear e implementar modelos de aprendizaje automático con Docker. Ben trabajó en Docker, donde creó Docker Compose.
Nos dimos cuenta de que, además de Spotify, otras empresas también utilizaban Docker para crear e implementar modelos de aprendizaje automático. Uber y otros han construido sistemas similares. Entonces, estamos creando una versión de código abierto para que otras personas también puedan hacer esto.
Contáctanos si estás interesado en usarlo o quieres colaborar con nosotros. Estamos en Discord o envíanos un correo electrónico a [email protected].
macOS, Linux o Windows 11 . Cog funciona en macOS, Linux y Windows 11 con WSL 2
Docker . Cog usa Docker para crear un contenedor para su modelo. Necesitará instalar Docker antes de poder ejecutar Cog. Si instala Docker Engine en lugar de Docker Desktop, también deberá instalar Buildx.
Si estás usando macOS, puedes instalar Cog usando Homebrew:
diente de instalación de cerveza
También puede descargar e instalar la última versión utilizando nuestro script de instalación:
# pescado shellsh (curl -fsSL https://cog.run/install.sh | psub)# bash, zsh y otros shellssh <(curl -fsSL https://cog.run/install.sh)# descargar con wget y ejecútelo en un comando separadowget -qO- https://cog.run/install.sh sh ./instalar.sh
Puede instalar manualmente la última versión de Cog directamente desde GitHub ejecutando los siguientes comandos en una terminal:
sudo curl -o /usr/local/bin/cog -L "https://github.com/replicate/cog/releases/latest/download/cog_$(uname -s)_$(uname -m)"sudo chmod +x /usr/local/bin/cog
Alternativamente, puedes compilar Cog desde el código fuente e instalarlo con estos comandos:
madesudo hacer instalar
O si estás en Docker:
RUN sh -c "INSTALL_DIR="/usr/local/bin" SUDO="" $(curl -fsSL https://cog.run/install.sh)"
Si estás usando macOS y previamente instalaste Cog con Homebrew, ejecuta lo siguiente:
engranaje de actualización de cerveza
De lo contrario, puede actualizar a la última versión ejecutando los mismos comandos que utilizó para instalarlo.
Comience con un modelo de ejemplo
Comienza con tu propio modelo
Usando Cog con cuadernos
Usando Cog con Windows 11
Eche un vistazo a algunos ejemplos del uso de Cog
Implementar modelos con Cog
Referencia cog.yaml
para aprender a definir el entorno de su modelo.
Referencia de la interfaz de predicción para aprender cómo funciona la interfaz Predictor
Referencia de la interfaz de capacitación para aprender cómo agregar una API de ajuste fino a su modelo
Referencia de la API HTTP para aprender a utilizar la API HTTP que sirven los modelos
Únase a nosotros en #cog en Discord.