Ejemplos de DMR
Consulta algunos ejemplos de flujos de trabajo completos utilizando Docker Model Runner.
Proyecto de ejemplo
Ahora puedes empezar a crear tu aplicación de IA generativa impulsada por Docker Model Runner.
Si deseas probar una aplicación de GenAI existente, sigue estos pasos:
Configura la aplicación de ejemplo. Clona y ejecuta el siguiente repositorio:
$ git clone https://github.com/docker/hello-genai.gitEn tu terminal, ve al directorio
hello-genai.Ejecuta
run.shpara descargar el modelo elegido y ejecutar la aplicación.Abre tu aplicación en el navegador en las direcciones especificadas en el archivo README del repositorio.
Verás la interfaz de la aplicación de GenAI donde puedes empezar a escribir tus prompts.
Ahora puedes interactuar con tu propia aplicación de GenAI, impulsada por un modelo local. Prueba algunos prompts y observa lo rápido que son las respuestas; todo ejecutándose en tu máquina con Docker.
Usar Model Runner en GitHub Actions
Aquí tienes un ejemplo de cómo usar Model Runner como parte de un flujo de trabajo de GitHub. El ejemplo instala Model Runner, prueba la instalación, descarga y ejecuta un modelo, interactúa con el modelo a través de la API y elimina el modelo.
name: Docker Model Runner Example Workflow
permissions:
contents: read
on:
workflow_dispatch:
inputs:
test_model:
description: "Modelo para realizar la prueba (predeterminado: ai/smollm2:360M-Q4_K_M)"
required: false
type: string
default: "ai/smollm2:360M-Q4_K_M"
jobs:
dmr-test:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Configurar Docker
uses: docker/setup-docker-action@v5
- name: Instalar docker-model-plugin
run: |
echo "Instalando docker-model-plugin..."
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-model-plugin
echo "Instalación completada con éxito"
- name: Probar la versión de docker model
run: |
echo "Probando el comando docker model version..."
sudo docker model version
# Verify the command returns successfully
if [ $? -eq 0 ]; then
echo "✅ El comando docker model version funciona correctamente"
else
echo "❌ El comando docker model version falló"
exit 1
fi
- name: Descargar el modelo proporcionado y ejecutarlo
run: |
MODEL="${{ github.event.inputs.test_model || 'ai/smollm2:360M-Q4_K_M' }}"
echo "Probando con el modelo: $MODEL"
# Test model pull
echo "Descargando el modelo..."
sudo docker model pull "$MODEL"
if [ $? -eq 0 ]; then
echo "✅ Descarga del modelo exitosa"
else
echo "❌ La descarga del modelo falló"
exit 1
fi
# Test basic model run (with timeout to avoid hanging)
echo "Probando docker model run..."
timeout 60s sudo docker model run "$MODEL" "Give me a fact about whales." || {
exit_code=$?
if [ $exit_code -eq 124 ]; then
echo "✅ Prueba de ejecución del modelo completada (se agotó el tiempo de espera como se esperaba para la prueba no interactiva)"
else
echo "❌ La ejecución del modelo falló con el código de salida: $exit_code"
exit 1
fi
}
- name: Probar descarga y ejecución del modelo
run: |
MODEL="${{ github.event.inputs.test_model || 'ai/smollm2:360M-Q4_K_M' }}"
echo "Probando con el modelo: $MODEL"
# Test model pull
echo "Descargando el modelo..."
sudo docker model pull "$MODEL"
if [ $? -eq 0 ]; then
echo "✅ Descarga del modelo exitosa"
else
echo "❌ La descarga del modelo falló"
exit 1
fi
# Test basic model run (with timeout to avoid hanging)
echo "Probando docker model run..."
timeout 60s sudo docker model run "$MODEL" "Give me a fact about whales." || {
exit_code=$?
if [ $exit_code -eq 124 ]; then
echo "✅ Prueba de ejecución del modelo completada (se agotó el tiempo de espera como se esperaba para la prueba no interactiva)"
else
echo "❌ La ejecución del modelo falló con el código de salida: $exit_code"
exit 1
fi
}
- name: Probar endpoint de la API
run: |
MODEL="${{ github.event.inputs.test_model || 'ai/smollm2:360M-Q4_K_M' }}"
echo "Probando el endpoint de la API con el modelo: $MODEL"
# Test API call with curl
echo "Probando llamada a la API..."
RESPONSE=$(curl -s http://localhost:12434/engines/llama.cpp/v1/chat/completions \
-H "Content-Type: application/json" \
-d "{
\"model\": \"$MODEL\",
\"messages\": [
{
\"role\": \"user\",
\"content\": \"Say hello\"
}
],
\"top_k\": 1,
\"temperature\": 0
}")
if [ $? -eq 0 ]; then
echo "✅ Llamada a la API exitosa"
echo "Respuesta recibida: $RESPONSE"
# Check if response contains "hello" (case-insensitive)
if echo "$RESPONSE" | grep -qi "hello"; then
echo "✅ La respuesta contiene 'hello' (insensible a mayúsculas y minúsculas)"
else
echo "❌ La respuesta no contiene 'hello'"
echo "Respuesta completa: $RESPONSE"
exit 1
fi
else
echo "❌ La llamada a la API falló"
exit 1
fi
- name: Probar limpieza del modelo
run: |
MODEL="${{ github.event.inputs.test_model || 'ai/smollm2:360M-Q4_K_M' }}"
echo "Limpiando el modelo de prueba..."
sudo docker model rm "$MODEL" || echo "El borrado del modelo falló o no se encontró el modelo"
# Verify model was removed
echo "Verificando la limpieza del modelo..."
sudo docker model ls
echo "✅ Limpieza del modelo completada"
- name: Informar éxito
if: success()
run: |
echo "🎉 ¡La comprobación de estado diaria de Docker Model Runner se completó con éxito!"
echo "Todas las pruebas superadas:"
echo " ✅ Instalación de docker-model-plugin exitosa"
echo " ✅ El comando docker model version funciona"
echo " ✅ Operaciones de descarga y ejecución del modelo exitosas"
echo " ✅ Operaciones de endpoint de la API exitosas"
echo " ✅ Operaciones de limpieza exitosas"