Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Deploy an inference service with KServe

Dernière mise à jour :Aug 11, 2026

Utilisez KServe sur ACK Knative pour déployer des modèles d'IA sous forme de services d'inférence sans serveur. Cette approche offre des fonctionnalités clés telles que la mise à l'échelle automatique, la gestion des versions et les déploiements canari.

Étape 1 : Installer et configurer le composant KServe

Pour garantir une intégration transparente avec l'ALB Ingress ou la passerelle Kourier de Knative, installez le composant KServe et modifiez ses paramètres afin de désactiver la création des ressources Istio VirtualService intégrées.

  1. Installez le composant KServe.

    1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

    2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Applications > Knative.

    3. Dans l'onglet Add-ons, recherchez et déployez le composant KServe dans la section Add-on Components.

  2. Désactivez la création d'Istio VirtualHost.

    Modifiez le ConfigMap inferenceservice-config pour définir la valeur disableIstioVirtualHost sur true.

    kubectl get configmap inferenceservice-config -n kserve -o yaml \
    | sed 's/"disableIstioVirtualHost": false/"disableIstioVirtualHost": true/g' \
    | kubectl apply -f -

    Sortie attendue :

    configmap/inferenceservice-config configured
  3. Vérifiez la configuration.

    kubectl get configmap inferenceservice-config -n kserve -o yaml \
    | grep '"disableIstioVirtualHost":' \
    | tail -n1 \
    | awk -F':' '{gsub(/[ ,]/,"",$2); print $2}'

    Une sortie indiquant true confirme que la configuration a été mise à jour.

  4. Redémarrez le contrôleur KServe pour appliquer la modification de configuration.

    kubectl rollout restart deployment kserve-controller-manager -n kserve

Étape 2 : Déployer l'InferenceService

Cet exemple déploie un modèle de classification scikit-learn entraîné sur le jeu de données Iris. Le modèle reçoit en entrée quatre mesures florales et prédit l'espèce correspondante.

L'entrée est un tableau de quatre caractéristiques numériques ordonnées :

  1. Longueur du sépale

  2. Largeur du sépale

  3. Longueur du pétale

  4. Largeur du pétale

La sortie correspond à l'index de la classe prédite :

  • 0 : Iris setosa

  • 1 : Iris versicolour

  • 2 : Iris virginica

  1. Créez un fichier inferenceservice.yaml pour déployer le service d'inférence.

    apiVersion: "serving.kserve.io/v1beta1"
    kind: "InferenceService"
    metadata:
      name: "sklearn-iris"
    spec:
      predictor:
        model:
          # The format of the model. In this case, sklearn.
          modelFormat:
            name: sklearn
          image: "kube-ai-registry.cn-shanghai.cr.aliyuncs.com/ai-sample/kserve-sklearn-server:v0.12.0"
          command:
          - sh
          - -c
          - "python -m sklearnserver --model_name=sklearn-iris --model_dir=/models --http_port=8080"
  2. Déployez l'InferenceService.

    kubectl apply -f inferenceservice.yaml
  3. Vérifiez l'état du service.

    kubectl get inferenceservices sklearn-iris

    Un statut READY défini sur True indique que le service fonctionne correctement.

    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

Étape 3 : Accéder au service

Envoyez une requête d'inférence au service via la passerelle d'entrée du cluster.

  1. Sur la page Knative, dans l'onglet Services, récupérez la Gateway de l'ALB Ingress ou de la passerelle Kourier, ainsi que le Default Domain du service.

    Cet exemple utilise un ALB Ingress. L'interface utilisateur de la passerelle Kourier est similaire.

    Dans la liste des services, l'état de sklearn-iris-predictor est Ready et le default domain est sklearn-iris-predictor.default.example.com. L'adresse de la passerelle de l'ALB Ingress s'affiche en haut de la page. Notez l'adresse et le domaine par défaut.

  2. Préparez les données de la requête.

    Dans votre terminal local, créez un fichier nommé ./iris-input.json contenant deux tableaux. Chaque tableau représente un échantillon pour la prédiction.

    cat <<EOF > "./iris-input.json"
    {
      "instances": [
        [6.8,  2.8,  4.8,  1.4],
        [6.0,  3.4,  4.5,  1.6]
      ]
    }
    EOF
  3. Envoyez une requête d'inférence depuis votre terminal local pour accéder au service.

    Remplacez ${INGRESS_DOMAIN} par la Gateway obtenue à l'étape 1 de cette section.

    curl -H "Content-Type: application/json" -H "Host: sklearn-iris-predictor.default.example.com" "http://${INGRESS_DOMAIN}/v1/models/sklearn-iris:predict" -d @./iris-input.json

    La sortie indique que le modèle prédit l'index de classe 1 pour les deux échantillons d'entrée, ce qui correspond à Iris versicolour.

    {"predictions":[1,1]}                        

Facturation

Les composants KServe et Knative sont gratuits. Toutefois, vous êtes facturé pour les ressources de calcul, telles que les instances ECS et ECI, ainsi que pour les ressources réseau, comme les instances ALB et CLB. Pour plus d'informations, consultez la rubrique Tarification des ressources cloud.

FAQ

Pourquoi mon InferenceService reste-t-il bloqué à l'état Not Ready ?

Pour résoudre ce problème, procédez comme suit :

  1. Exécutez la commande kubectl describe inferenceservice <yourServiceName> pour vérifier la présence de messages d'erreur dans les événements.

  2. Exécutez la commande kubectl get pods afin de vérifier si des pods liés au service (commençant généralement par le nom du service) se trouvent dans un état Error ou CrashLoopBackOff.

  3. Si un pod présente un état anormal, exécutez la commande kubectl logs <pod-name> -c kserve-container pour consulter les journaux du conteneur de service de modèle. Recherchez d'éventuels échecs de chargement du modèle, tels qu'une impossibilité de télécharger le modèle en raison de problèmes réseau ou l'utilisation d'un format de fichier de modèle incorrect.

Comment déployer mon propre modèle entraîné ?

Vous pouvez télécharger le fichier de modèle vers un compartiment OSS. Lors de la création d'un InferenceService, définissez le champ spec.predictor.model.storageUri sur l'URI du fichier de modèle. Définissez également correctement le champ modelFormat en fonction du framework du modèle (par exemple, tensorflow, pytorch ou onnx).

Comment configurer les ressources GPU pour le service de modèle ?

Si un modèle nécessite un GPU pour l'inférence, vous pouvez ajouter le champ resources au predictor dans le fichier YAML de l'InferenceService pour demander des ressources GPU. Voici un exemple.

Pour plus d'informations sur l'utilisation des ressources GPU dans Knative, consultez la rubrique Utiliser des ressources GPU .
spec:
  predictor:
    resources:
      requests:
        nvidia.com/gpu: "1"
      limits:
        nvidia.com/gpu: "1"

Rubriques connexes