Cómo implementar rápidamente el servicio de razonamiento de IA basado en ACK Serverless

Autor: Yuan Yi

Con el advenimiento de la ola de IA, varias aplicaciones de IA surgen en un flujo interminable. Como todos sabemos, las aplicaciones de IA dependen en gran medida de los recursos de la GPU, pero las GPU son muy costosas. Cómo reducir el costo del uso de los recursos de la GPU se ha convertido en la problema principal para los usuarios. La combinación de IA y tecnología sin servidor puede lograr por completo el propósito de usar los recursos bajo demanda y reducir los costos de los recursos.

Entonces, en el escenario nativo de la nube, ¿existe una solución abierta, estándar y lista para usar? La respuesta es sí. Brindamos la solución Knative + KServe en ACK Serverless, que puede ayudar a los usuarios a implementar rápidamente servicios de inferencia de IA, usarlos a pedido y admitir la reducción automática de los recursos de GPU a 0 cuando no hay una solicitud, lo que ahorra en gran medida los costos de uso de recursos en escenarios de aplicaciones de IA. .

Acerca de ACK sin servidor

Container Service Serverless Edition ACK Serverless es un producto de contenedor seguro y confiable basado en la infraestructura informática elástica de Alibaba Cloud y totalmente compatible con el ecosistema de Kubernetes. Con ACK Serverless, puede crear rápidamente aplicaciones de contenedores de Kubernetes sin administrar ni mantener clústeres k8s, admitir múltiples especificaciones de recursos de GPU y pagar según la demanda en función de la cantidad de recursos que realmente utiliza la aplicación.

inserte la descripción de la imagen aquí

Knative y KServe

Knative es una arquitectura de aplicación sin servidor de código abierto basada en Kubernetes, que proporciona funciones como la elasticidad automática basada en solicitudes, la reducción a 0 y la publicación en escala de grises. La implementación de aplicaciones sin servidor a través de Knative puede centrarse en el desarrollo de la lógica de la aplicación y utilizar los recursos a pedido.

Y KServe proporciona un CRD de Kubernetes simple, que puede implementar uno o varios modelos entrenados para modelar tiempos de ejecución de servicios, como servidores de inferencia como TFServing, TorchServe y Triton. Estos tiempos de ejecución de servicios de modelos pueden proporcionar servicios de modelos listos para usar, y KServe proporciona primitivas de API básicas para permitirle crear fácilmente tiempos de ejecución de servicios de modelos personalizados. Después de implementar un modelo de inferencia basado en Knative mediante InferenceService, obtendrá las siguientes capacidades sin servidor:

  • escalar a 0
  • Elasticidad automática basada en RPS, concurrencia, indicadores CPU/GPU
  • Gestión de múltiples versiones
  • la gestión del tráfico
  • certificado de seguridad
  • Observabilidad fuera de la caja

El plano de control del servicio del modelo KServe es principalmente responsable del controlador KServe, que se usa para coordinar los recursos personalizados de InferenceService y crear servicios de Knative Service, que pueden realizar escalado automático de acuerdo con el tráfico de solicitudes y reducirse a cero cuando no se recibe tráfico.

inserte la descripción de la imagen aquí

Implemente rápidamente el primer servicio de inferencia basado en KServe

En este artículo, implementaremos un servicio de inferencia InferenceService con capacidades predictivas que usará un modelo scikit-learn entrenado en el conjunto de datos iris (Iris). El conjunto de datos tiene tres clases de salida: Iris Setosa (Iris variegata, índice: 0), Iris Versicolour (Iris variegado, índice: 1) e Iris Virginica (Iris Virginia, índice: 2). Finalmente, puede enviar una solicitud de inferencia al modelo implementado para predecir la categoría de planta de iris correspondiente.

requisito previo

  • ACK sin servidor habilitado [ 1]
  • Implementar KServe [ 2]

Actualmente, Alibaba Cloud Knative admite la implementación de KServe con un solo clic. Admite capacidades de puerta de enlace como ASM, ALB, MSE y Kourier.

Crear un servicio de inferencia InferenceService

kubectl apply -f - <<EOF
apiVersion: "serving.kserve.io/v1beta1"
kind: "InferenceService"
metadata:
  name: "sklearn-iris"
spec:
  predictor:
    model:
      modelFormat:
        name: sklearn
      storageUri: "gs://kfserving-examples/models/sklearn/1.0/model"
EOF

Consultar estado del servicio:

kubectl get inferenceservices sklearn-iris

Rendimiento esperado:

NAME           URL                                                         READY   PREV   LATEST   PREVROLLEDOUTREVISION   LATESTREADYREVISION                    AGE
sklearn-iris   http://sklearn-iris-predictor-default.default.example.com   True           100                              sklearn-iris-predictor-default-00001   51s

acceso al servicio

  1. Obtener dirección de acceso al servicio
$ kubectl get albconfig knative-internet
NAME               ALBID                    DNSNAME                                              PORT&PROTOCOL   CERTID   AGE
knative-internet   alb-hvd8nngl0lsdra15g0   alb-hvd8nngl0lsdra15g0.cn-beijing.alb.aliyuncs.com                            24m
  1. Prepare sus solicitudes de entrada de inferencia en un archivo

El conjunto de datos del iris es un conjunto de datos compuesto por tres tipos de flores de iris, cada uno con 50 conjuntos de datos. Cada muestra contiene 4 características, a saber, la longitud y el ancho de los sépalos y la longitud y el ancho de los pétalos.

cat <<EOF > "./iris-input.json"
{
  "instances": [
    [6.8,  2.8,  4.8,  1.4],
    [6.0,  3.4,  4.5,  1.6]
  ]
}
EOF
  1. acceso
INGRESS_DOMAIN=$(kubectl get albconfig knative-internet -o jsonpath='{.status.loadBalancer.dnsname}')
SERVICE_HOSTNAME=$(kubectl get inferenceservice sklearn-iris -o jsonpath='{.status.url}' | cut -d "/" -f 3)
curl -v -H "Host: ${SERVICE_HOSTNAME}" "http://${INGRESS_DOMAIN}/v1/models/sklearn-iris:predict" -d @./iris-input.json

Rendimiento esperado:

*   Trying 39.104.203.214:80...
* Connected to 39.104.203.214 (39.104.203.214) port 80 (#0)
> POST /v1/models/sklearn-iris:predict HTTP/1.1
> Host: sklearn-iris-predictor-default.default.example.com
> User-Agent: curl/7.84.0
> Accept: */*
> Content-Length: 76
> Content-Type: application/x-www-form-urlencoded
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< content-length: 21
< content-type: application/json
< date: Wed, 21 Jun 2023 03:17:23 GMT
< server: envoy
< x-envoy-upstream-service-time: 4
<
* Connection #0 to host 39.104.203.214 left intact
{"predictions":[1,1]}

Debería ver dos predicciones devueltas (es decir, {"predicciones": [1, 1]}), lo que da como resultado los dos conjuntos de puntos de datos enviados para inferencia correspondientes a la flor con índice 1, que el modelo predice que es " Iris Versicolour (Iris multicolor)".

resumen

Actualmente, ACK Serverless se ha actualizado para cumplir con los nuevos requisitos que surgen del brote de nuevos escenarios como la IA y para ayudar a las empresas a evolucionar hacia la arquitectura empresarial sin servidor de manera más simple y fluida de una manera estándar, abierta y flexible. Basado en ACK Serverless combinado con KServe puede brindarle la mejor experiencia sin servidor en escenarios de razonamiento de modelos de IA.

Enlaces relacionados:

[1] Activar ACK sin servidor

https://help.aliyun.com/zh/ack/serverless-kubernetes/user-guide/create-an-ask-cluster-2

[2] Implementar KServe

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/knative-support-kserve

Haga clic aquí para completar la tarea del evento "Inicio rápido sin servidor ACK" y obtener un límite personalizado limitado de Alibaba Cloud. ¡ Venga y participe!

Supongo que te gusta

Origin blog.csdn.net/alisystemsoftware/article/details/132274051
Recomendado
Clasificación