• Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
S4PCADEMY_Logo
  • Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
Twitter Linkedin Instagram

S4PCADEMY_Logo
  • Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
Twitter Linkedin Instagram
ai  ·  deployment  ·  Kyma  ·  SAP BTP  ·  SAPAI  ·  Streamlit  ·  Technical Articles

Cree aplicaciones de aprendizaje automático de forma rápida y sencilla con SAP BTP, Kyma y streamlit

By s4pcademy 


¿Cómo podemos crear aplicaciones de aprendizaje automático de manera fácil y rápida?
¿Y cómo podemos compartir la aplicación con otras personas?

Esta es la aplicación prototipo para el objetivo de hoy. El video de ejemplo es una aplicación web de clasificación de imágenes simple que utiliza el aprendizaje automático para detectar la madurez del banano.

¡Encontremos la solución con SAP BTP Kyma y streamlit!

Descripción general

Podemos crear rápidamente una aplicación de aprendizaje automático basada en SAP BTP, el tiempo de ejecución de Kyma e integrarla con streamline, que es una biblioteca Python de código abierto para crear aplicaciones web personalizadas para el aprendizaje automático y la ciencia de datos.

Pasos para resolver el problema de ML

En general, se siguen los siguientes pasos para resolver un problema de aprendizaje automático.

En esta publicación, nos centraremos en la fase de implementación y monitoreo utilizando la arquitectura conceptual y los requisitos utilizando SAP BTP Kyma y el marco de aplicación de código abierto: simplificado.

Pasos%20para%20resolver%20ML%20problema

Pasos para resolver el problema de aprendizaje automático

Implementar y monitorear

Al implementar y monitorear proyectos de aprendizaje automático, podemos elegir herramientas de creación de prototipos de las opciones que se enumeran a continuación. Hoy, usaremos streamlit con SAP BTP kyma runtime.

  • Cuaderno Jupyter
  • iluminado; Edición y prueba simples
  • Frasco: Backend + Frontend
  • Dash: biblioteca de panel de control de Python
  • Voila: Visualización para Jupyter Notebook
  • …

En lugar de usar Flask, Streamlit hace que crear y compartir aplicaciones de aprendizaje automático sea rápido y fácil sin necesidad de desarrollo de back-end ni solicitud http (enlace a página iluminada)

Solicitud

Usaremos las siguientes aplicaciones para implementar nuestra aplicación:

Arquitectura

Esta es una arquitectura técnica para crear aplicaciones de aprendizaje automático. Usaremos SAP BTP, el tiempo de ejecución de Kyma, que es un tiempo de ejecución de Kubernetes completamente administrado basado en el proyecto de origen oepn «Kyma». Para el contenedor del modelo, se supone que ya completó el entrenamiento del modelo de aprendizaje automático. Para los contenedores de aplicaciones, el aprendizaje automático preentrenado genera predicciones.

Arquitectura Técnica

requisitos previos

  • Instalar Motor acoplable
  • SAP BTP Kyma
  • modelo pre-entrenado
  • Compruebe la accesibilidad del puerto de red: puerto 8501
  • requisitos.txt
tensorflow==2.9.1
streamlit
numpy==1.22.3         
pillow==9.2.0
Flask==2.1.1
keras==2.9.0
scipy==1.7.3
matplot

Pasos

Hay cuatro partes a seguir en estos pasos para crear una aplicación de aprendizaje automático en este tutorial.

  1. Crear aplicación usando python
  2. Construir ventana acoplable
  3. Tiempo de ejecución de SAP BTP Kyma
  4. Subir archivo yaml

1. Crear aplicación usando python

Crearemos una aplicación de python para obtener predicciones utilizando el modelo de aprendizaje automático cuando el usuario cargue una imagen.

1.1 Importar biblioteca

import tensorflow as tf
from PIL import Image, ImageOps
import numpy as np
import streamlit as st

st.write('''
# Banana Ripeness Detection 🍌
''')
st.write("A Image Classification Web App That Detects the Ripeness Stage of Banana")

file = st.file_uploader("", type=['jpg','png','jpeg'])

1.2 Código de predicción usando aprendizaje automático

Dependiendo del modelo preentrenado, necesitamos cargar el modelo y preprocesar los datos de la imagen.

def predict_stage(image_data,model):
    size = (224, 224)
    image = ImageOps.fit(image_data,size, Image.ANTIALIAS)
    image_array = np.array(image)
    normalized_image_array = (image_array.astype(np.float32) / 127.0) - 1
    data = np.ndarray(shape=(1, 224, 224, 3), dtype=np.float32)
    data[0] = normalized_image_array
    preds = ""
    prediction = model.predict(data)
    if np.argmax(prediction)==0:
        preds = f"Overripe😫"
    elif np.argmax(prediction)==1:
        preds = f"ripe😄"
    else :
        preds = f"Unripe😑"
    return preds

2. Construir ventana acoplable

2.1 Crear un contenedor Docker

De acuerdo con la Dockerfile, docker crea imágenes leyendo las instrucciones. Vamos a crear Dockerfile como los siguientes pasos:

# STEP 1: Install Python base image
FROM python:3.9-slim

# Step 2: Add requirements.txt file 
COPY requirements.txt /requirements.txt
#
# Step 3:  Install required pyhton dependencies from requirements file
RUN pip install -r requirements.txt

# Step 4: Copy source code in the current directory to the container
ADD . /app

COPY app.py ./app.py
COPY ripeness.h5 ./ripeness.h5

# Step 5: Install git 
RUN apt-get update && apt-get install -y \
    build-essential \
    software-properties-common \
    git \
    && rm -rf /var/lib/apt/lists/*

# If you have git repo, you can clone your code that lives in a remote repo to WORKDIR
# RUN git clone https://github.com/streamlit/streamlit-example.git .

# Step 6: Set working directory to previously added app directory
WORKDIR /app

# # Step 7: Expose the port is running on
EXPOSE 8501

# Step 8: Run the application
ENTRYPOINT ["streamlit", "run", "app.py", "--server.port=8501", "--server.address=0.0.0.0"]

2.2 Crear una imagen de Docker

Cuando ejecutas el siguiente comando, Dockerfile crear imagen acoplable. Puede cambiar el nombre en lugar de banana-ml/streamlit:último

docker build -t banana-ml/streamlit:latest .

2.3 Ejecutar el contenedor Docker

Podemos ejecutar el contenedor ejecutando:

docker run -p 8501:8501 banana-ml/streamlit:latest

2.4 Empuje de la ventana acoplable

Podemos insertar nuestra imagen de Docker en nuestro repositorio de Docker Hub ejecutando:

docker push banana-ml/streamlist:latest

3. Tiempo de ejecución de SAP BTP Kyma

3.1 Crear espacio de nombres desde SAP BTP Kyma

En este tutorial, creamos un espacio de nombres con plátano-ml de SAP BTP kyma.

Crear% 20 espacio de nombres

Crear espacio de nombresCrear%20y%20guardar%20espacio de nombresGuardar espacio de nombres

3.2 Crear archivo yaml

Implementaremos el archivo yaml que incluye Tipo: Implementación, Servicio y APIRule en el mismo archivo: k8s/streamlit.yaml.

3.2.1 Despliegue

apiVersion: apps/v1
kind: Deployment
metadata:
  name: streamlit-deployment
  labels:
    app: streamlit
spec:
  replicas: 1
  selector:
    matchLabels:
      app: streamlit
  template:
    metadata:
      labels:
        app: streamlit
    spec:
      containers:
        - name: streamlit
          image: banana-ml/streamlit:latest
          imagePullPolicy: Always
          ports:
            - containerPort: 8501
          livenessProbe:
            httpGet:
              path: /healthz
              port: 8501
              scheme: HTTP
            timeoutSeconds: 1
          readinessProbe:
            httpGet:
              path: /healthz
              port: 8501
              scheme: HTTP
            timeoutSeconds: 1
          resources:
            limits:
              cpu: 1
              memory: 2Gi
            requests:
              cpu: 100m
              memory: 745Mi

3.2.2 Servicio

---
apiVersion: v1
kind: Service
metadata:
  name: streamlit-service
spec:
  type: LoadBalancer
  selector:
    app: streamlit
  ports:
    - name: streamlit-port
      protocol: TCP
      port: 8501
      targetPort: 8501

3.2.3 Regla API

La regla API nos permite exponer un servicio externamente. Obtendremos una URL como https://bananastreamlit-api.c xxxxxxx.kyma.shoot.live.k8s-hana.ondemand.com .

---
apiVersion: gateway.kyma-project.io/v1alpha1
kind: APIRule
metadata:
  name: bananastreamlit-api-rule
  namespace: banana-ml
  labels:
    app.kubernetes.io/name: bananastreamlit
spec:
  gateway: kyma-gateway.kyma-system.svc.cluster.local
  service:
    name: streamlit-service
    port: 8501
    host: bananastreamlit-api
  rules:
    - accessStrategies:
      - config: {}
        handler: allow 
      methods:
      - GET
      - POST
      path: /.*

4. Sube el archivo yaml

4.1 Exportar configuración de kube

Podemos descargar desde la descripción general del clúster usando Descargar Kubeconfig

export KUBECONFIG=/Users/.kube/kubeconfig.yaml

Descargar%20Kubeconfig

Descargar Kubeconfig

4.2 Subir archivo yaml

kubectl apply -f k8s/streamlit.yaml

4.3 Comprobar el despliegue

Espere hasta que la implementación sea exitosa desde Healthy Resources.

Saludable%20Recursos

Recursos saludables

4.4 Comprobación y prueba con reglas API

Puede obtener la URL para acceder a la aplicación de aprendizaje automático.

API%20Reglas

Reglas de la API

Felicidades 👏👏👏

Ahora podemos crear nuestra genial aplicación de aprendizaje automático y también podemos compartirla con otras personas✨ ¡Espero que esta publicación te sea útil!

Referencia



Source link


AplicacionesaprendizajeautomáticoBTPconCreeformaKymarápidaSAPsencillastreamlit

Artículos relacionados


Event Information
Versión 2302 para SAP Procurement y SAP Business Network Early Release Series
Product Information
SAP BTP Innobytes – Enero 2023
"Spaces and Pages"  ·  #Corporate Learning  ·  #SAP Business Technology Platform  ·  #SAPUI5  ·  on-premise  ·  Product Information  ·  SAP Fiori apps reference library  ·  sap gateway
Curso de cliente UX100 (SAP Fiori – Foundation) disponible para SAP S/4HANA 2021

Deja tu comentario Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

Mostrar documento PDF en una ventana emergente en la pantalla CRM WebUI
Previo
Estructurando la Fuerza Laboral con Ingentis y SAP
Siguiente

Madrid

Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010

México

Paseo de la Reforma 26
Colonia Juárez,  Cuauhtémoc
Ciudad de México 06600

Costa Rica

Real Cariari
Autopista General Cañas, 
San José, SJ 40104

Perú

Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073

Twitter Linkedin Instagram
Copyright 2022 | All Right Reserved.
Cookies Para que este sitio funcione adecuadamente, a veces instalamos en los dispositivos de los usuarios pequeños ficheros de datos, conocidos como cookies. La mayoría de los grandes sitios web también lo hacen.
Aceptar
Cambiar ajustes
Configuración de Cookie Box
Configuración de Cookie Box

Ajustes de privacidad

Decida qué cookies quiere permitir. Puede cambiar estos ajustes en cualquier momento. Sin embargo, esto puede hacer que algunas funciones dejen de estar disponibles. Para obtener información sobre eliminar las cookies, por favor consulte la función de ayuda de su navegador. Aprenda más sobre las cookies que usamos.

Con el deslizador, puede habilitar o deshabilitar los diferentes tipos de cookies:

  • Bloquear todas
  • Essentials
  • Funcionalidad
  • Análisis
  • Publicidad

Este sitio web hará:

Este sitio web no:

  • Esencial: recuerde su configuración de permiso de cookie
  • Esencial: Permitir cookies de sesión
  • Esencial: Reúna la información que ingresa en un formulario de contacto, boletín informativo y otros formularios en todas las páginas
  • Esencial: haga un seguimiento de lo que ingresa en un carrito de compras
  • Esencial: autentica que has iniciado sesión en tu cuenta de usuario
  • Esencial: recuerda la versión de idioma que seleccionaste
  • Functionality: Remember social media settings
  • Functionality: Remember selected region and country
  • Analytics: Keep track of your visited pages and interaction taken
  • Analytics: Keep track about your location and region based on your IP number
  • Analytics: Keep track of the time spent on each page
  • Analytics: Increase the data quality of the statistics functions
  • Advertising: Tailor information and advertising to your interests based on e.g. the content you have visited before. (Currently we do not use targeting or targeting cookies.
  • Advertising: Gather personally identifiable information such as name and location
  • Recuerde sus detalles de inicio de sesión
  • Esencial: recuerde su configuración de permiso de cookie
  • Esencial: Permitir cookies de sesión
  • Esencial: Reúna la información que ingresa en un formulario de contacto, boletín informativo y otros formularios en todas las páginas
  • Esencial: haga un seguimiento de lo que ingresa en un carrito de compras
  • Esencial: autentica que has iniciado sesión en tu cuenta de usuario
  • Esencial: recuerda la versión de idioma que seleccionaste
  • Functionality: Remember social media settings
  • Functionality: Remember selected region and country
  • Analytics: Keep track of your visited pages and interaction taken
  • Analytics: Keep track about your location and region based on your IP number
  • Analytics: Keep track of the time spent on each page
  • Analytics: Increase the data quality of the statistics functions
  • Advertising: Tailor information and advertising to your interests based on e.g. the content you have visited before. (Currently we do not use targeting or targeting cookies.
  • Advertising: Gather personally identifiable information such as name and location
Guardar y cerrar