Utilisation des API d’apprentissage machine

  • Rversion finale: Yokohama
  • Mis à jour 30 janv. 2025
  • 6 minutes de lecture
  • Utilisez ServiceNow les API d’apprentissage machine (ML) pour former des modèles d’apprentissage machine et exécuter des inférences.

    Les API ML permettent de former des solutions et de gérer les versions de solutions. Vous pouvez obtenir et définir des versions actives, surveiller l’état de formation, etc. L’API ML fournit également des encodeurs, qui permettent d’utiliser la fréquence de terme-fréquence de document inverse (TF-IDF) comme corpus de mots. Les estimations de prédictibilité permettent d’évaluer la valeur prédictive des colonnes de table.

    Remarque :
    Intelligence prédictive Exécution des API avec des privilèges complets avant la Washington DC version du correctif 7. Après cette version, accordez l’accès à l’aide des ACL. Pour en savoir plus, consultez Query ACLs.

    Vue d’ensemble de la classe d’API ML

    Cette section décrit brièvement les classes d’entraînement des solutions ML et l’exécution d’inférences avec des solutions entraînées.

    Jeux de données

    Un ensemble de données est un ensemble d’enregistrements comprenant un nom de table, des colonnes et des critères de sélection de ligne à utiliser comme entrée pour les algorithmes d’entraînement ML. Les jeux de données ne contiennent pas les données réelles.

    Pour plus d’informations, consultez DatasetDefinition.

    Objets ML : solutions, encodeurs et estimations

    Les objets ML définissent une configuration d’entraînement spécifique à appliquer à un ensemble de données. Certaines opérations sont communes aux objets ML. Les objets de solution incluent la classification, la mise en grappe, la régression et la similarité.

    Les encodeurs sont des objets de traitement de texte préformés ou entraînés en fonction des jeux de données linguistiques que vous fournissez. Vous pouvez former des encodeurs qui déterminent comment le système interprète et traite les champs de texte. Pour les solutions ML qui incluent du texte, vous pouvez former un encodeur pour spécifier comment traiter le texte et utiliser l’encodeur formé dans une solution.

    PrévisibilitéLes objets d’estimation estiment quels champs d’un jeu de données sont prévisibles et les caractéristiques sur lesquelles cette prévisibilité est basée.

    Magasins

    Les objets ML sont conservés dans un magasin spécifique pour chaque type d’objet. Chaque classe de magasin comprend des méthodes pour les opérations d’ajout, d’obtention, de mise à jour et de suppression.

    Versions

    Chaque objet formé donne lieu à une nouvelle version sur laquelle vous pouvez exécuter des tâches. Utilisez l’API de version pour obtenir n’importe quelle version de solution et exécuter des tâches dessus.

    Assemblage : flux d’API ML

    Vous pouvez utiliser le flux suivant pour configurer et former des solutions, des encodeurs et des estimations de prévisibilité :
    Figure 1. Flux d’API ML : formation à la solution, à l’encodeur et à l’estimation
    Cette image illustre le flux d’API depuis la définition de l’ensemble de données, la création d’un objet ML, l’ajout de l’objet ML à un magasin et la formation de l’objet ML.
    Remarque :
    Les définitions d’encodeur prennent en charge plusieurs définitions d’ensemble de données, mais ont le même flux d’entraînement.
    Pour former une solution avec un codeur, créez d’abord l’encodeur, puis incluez l’encodeur dans la configuration de la solution.
    Figure 2. Flux d’API ML – Formation de l’API de solution avec encodeur
    Cette image illustre le flux d’API depuis la définition de l’ensemble de données, la création d’un objet de solution, la spécification d’un encodeur existant, l’ajout de la solution à un magasin et la formation de la solution.

    Exigences de l’encodeur d’objet ML :

    • Requis dans les solutions d’API de similarité.
    • Requis dans les solutions d’API de clustering, sauf si vous utilisez l’algorithme de distance de Levenshtein, auquel cas les encodeurs sont facultatifs.
    • Facultatif pour les solutions de classification et de régression.
    • Indisponible pour les estimations de prévisibilité.

    Formation à la mise en route de la solution d’API ML

    Suivez cet exemple de répartition pour savoir comment configurer et former une solution.

    Configurer et former une solution
    Cette image illustre le flux d’API depuis la définition de l’ensemble de données, la création d’un objet de solution de classification, l’ajout de la solution à un magasin et la formation de la solution.
    1. Définissez un jeu de données à l’aide de l’API DatasetDefinition .
      var myData = new sn_ml.DatasetDefinition({
      
        'tableName' : 'incident',
        'fieldNames' : ['assignment_group', 'short_description', 'description'],
        'encodedQuery' : 'activeANYTHING'
      
      });
    2. Utilisez le constructeur pour définir la solution, y compris l’ensemble de données dans la configuration.
      var mySolution = new sn_ml.ClassificationSolution({
      
        'label': "my solution definition",
        'dataset' : myData,
        'predictedFieldName' : 'assignment_group',
        'inputFieldNames':['short_description']
      
      });
    3. Ajoutez la définition de solution au magasin à l’aide de la méthode add( ).
      var my_unique_name = sn_ml.ClassificationSolutionStore.add(mySolution);
    4. Former la solution à l’aide de la méthode submitTrainingJob( ). Une fois la formation terminée, vous pouvez gérer la solution formée à l’aide d’une API de version de solution. Une solution peut être reformulée plusieurs fois. Chaque formation aboutit à une nouvelle « version » de la solution sur laquelle vous pouvez exécuter des inférences.
      var myClassifierVersion = mySolution.submitTrainingJob();
    Afficher toutes les solutions de classification dans un magasin
    Vous pouvez utiliser la méthode getAllNames() du magasin pour afficher une liste de toutes les solutions qui ont été ajoutées au magasin.
    gs.print(JSON.stringify(JSON.parse(sn_ml.ClassificationSolutionStore.getAllNames()), null, 2));

    Dans la sortie, le système a nommé la solution ml_x_snc_global_global_my_solution_definition. Utilisez ce nom dans les exemples suivants pour obtenir des informations sur la version.

    *** Script: [
      "ml_incident_assignment",
      "ml_x_snc_global_global_my_solution_definition",
      "ml_incident_categorization"
    ]

    Mise en route des versions de la solution d’API ML

    Suivez ces exemples de répartition pour apprendre à gérer les versions de solutions formées.

    Vérifier l’état de la formation

    Procurez-vous la solution de classification dans la boutique, choisissez une version et vérifiez son état de formation. Les méthodes utilisées pour vérifier l’état de la formation sont applicables à tous les types d’objets ML.

    Cette image illustre le flux d’API depuis l’accès à une solution de classification dans le magasin, le choix d’une version de solution et la vérification de son état de formation.
    1. Obtenir la solution du magasin de solutions de classification à l’aide de la méthode get( ).
      // Get the solution created in the previous example from the classification solution store
      var mlSolution = sn_ml.ClassificationSolutionStore.get('ml_x_snc_global_global_my_solution_definition');
    2. Accédez à la version de solution la plus récente à l’aide de la méthode de solution getLatestVersion() et obtenez son état de formation à l’aide de la méthode de version getStatus( ).
      // Access the latest version of the solution and print its training status
      gs.print(JSON.stringify(JSON.parse(mlSolution.getLatestVersion().getStatus(), null, 2)));

      Sortie lorsque la formation est terminée :

    Obtenir des prédictions à l’aide d’une version de solution
    Une fois la solution formée, procurez-vous la version formée et exécutez une prédiction dessus. Obtenez la solution que vous avez créée à partir du Store. Ensuite, choisissez la version formée et prédisez la version formée. Cette image illustre le flux d’API depuis l’accès à la solution de classification dans le magasin, le choix d’une version de solution et l’obtention de données d’entrée de prédiction.
    Remarque :
    Impossible de faire des prédictions sur les encodeurs et les estimations de prévisibilité.
    1. Obtenir la solution du magasin de solutions de classification à l’aide de la méthode get( ).
      // Get the solution created in the first example from the classification solution store
      var mlSolution = sn_ml.ClassificationSolutionStore.get('ml_x_snc_global_global_my_solution_definition');
    2. Utilisez la méthode get() de l’API GlideRecord pour fournir un enregistrement à partir de la table Incident [incident].
      // single GlideRecord input
      var input = new GlideRecord("incident");
      input.get("<sys_id>");
    3. Facultatif. Configurez le paramètre de méthode optionsClassificationSolutionVersion – predict() pour renvoyer les trois premiers résultats et renvoyer tous les résultats.
      // configure optional parameters
      var options = {};
      options.top_n = 3;
      options.apply_threshold = false;
    4. Déclarez une variable appelée results et affectez-la à la tâche de prédiction. Pour exécuter la tâche de prédiction, obtenez la version de solution la plus récente à l’aide de la méthode ClassificationSolution – getLatestVersion() et appelez la méthode ClassificationSolutionVersion – predict() dessus.
      var results = mlSolution.getLatestVersion().predict(input, options);
    5. Imprimer la sortie des résultats prévus.
      gs.print(JSON.stringify(JSON.parse(results), null, 2));

      Exemple de sortie des résultats prévus :

      *** Script: {
        "<sys_id>": [
          {
            "confidence": 99,
            "threshold": 24.75,
            "predictedValue": "Email",
            "predictedSysId": ""
          },
          {
            "confidence": 5.88210244009169,
            "threshold": 100,
            "predictedValue": "Email (I/f)",
            "predictedSysId": ""
          },
          {
            "confidence": 2.3461203499840932,
            "threshold": 14.81,
            "predictedValue": "Authentication",
            "predictedSysId": ""
          }
        ]
      }