Configuration de projet d'application d'apprentissage automatique

Après avoir créé l'infrastructure de l'exemple d'application d'apprentissage automatique, vous pouvez utiliser l'exemple de projet d'application d'apprentissage automatique comme modèle pour commencer à créer, à déployer et à utiliser vos propres applications d'apprentissage automatique.

Ce projet comprend les meilleures pratiques de développement et fournit l'interface de ligne de commande mlapp, un outil qui simplifie le développement d'applications d'apprentissage automatique. Pour créer une application d'apprentissage automatique, vous devez utiliser l'interface de ligne de commande mlapp, Terraform, la trousse SDK OCI ou l'interface de ligne de commande OCI. Vous ne pouvez pas créer une application d'apprentissage automatique dans la console, mais vous pouvez y consulter les applications d'apprentissage automatique et leurs détails.

En démarrant votre projet avec l'exemple de projet d'application d'apprentissage automatique, vous pouvez faire progresser votre mise en oeuvre d'application d'apprentissage automatique vers la production. Le projet est construit à partir de l'expérience acquise pour aider les organisations à déployer leurs applications avec succès en production.

L'exemple de projet d'application d'apprentissage automatique est disponible ici : sample-project.

Clonez ce projet pour l'utiliser comme base de votre mise en oeuvre d'application d'apprentissage automatique.

Le projet comprend de la documentation dans les fichiers README.md, où vous trouverez des informations détaillées sur le projet et ses composants.

Structure de projet

Le projet se compose de deux parties principales :

  • Le dossier d'infrastructure automatise la création des ressources dont dépend l'exemple d'application d'apprentissage automatique.
  • Le dossier d'application ML contient l'exemple d'application ML, notamment sa configuration, sa mise en oeuvre et l'interface de ligne de commande mlapp.

Configuration des ressources préalables

Avant de commencer à créer et à déployer l'application d'apprentissage automatique, vous devez créer les ressources nécessaires dont dépend l'exemple d'application d'apprentissage automatique (par exemple, journaux, groupes de journaux, projet du service de science des données et sous-réseau). Ce processus peut être automatisé en suivant les étapes suivantes :

  1. Préparez le dossier de l'environnement.
    Vous pouvez utiliser le dossier d'environnement dev par défaut (environments/dev) ou l'utiliser comme modèle pour créer l'environnement personnalisé. Pour créer un environnement personnalisé :
    1. Copiez le dossier de l'environnement de développement (environments/dev).
    2. Renommez le dossier copié pour qu'il corresponde au nom de l'environnement.
  2. Configurer l'environnement.
    1. Naviguez jusqu'au dossier de l'environnement (par exemple, environments/dev).
    2. Modifiez le fichier input_variables.tfvars pour configurer les paramètres d'environnement.
  3. Exécutez Terraform pour créer des ressources.
    1. Initialiser Terraform dans le dossier de l'environnement :
      terraform init
    2. Appliquez la configuration pour créer les ressources :
      terraform apply -var- file input_variables.tfvars
    3. Si nécessaire, détruisez les ressources créées :
      terraform destroy -var- file input_variables.tfvars
    Note

    Ne réutilisez pas les ressources dans différents environnements, car vous risquez de briser l'isolement de l'environnement. Par exemple, le partage d'une ressource entre des environnements de développement et d'assurance qualité peut entraîner des problèmes de développement qui peuvent rendre l'environnement d'assurance qualité inutilisable, retardant ainsi le déploiement en production.

Configuration de l'environnement applicatif d'apprentissage automatique

  1. Préparez le dossier de l'environnement.
    Vous pouvez utiliser le dossier d'environnement dev par défaut (environments/dev) ou l'utiliser comme modèle pour créer l'environnement personnalisé. Pour créer un environnement personnalisé :
    1. Copiez le dossier de l'environnement de développement (environments/dev).
    2. Renommez le dossier copié pour qu'il corresponde au nom de l'environnement.
  2. Configurer l'environnement.
    Dans le dossier de configuration de l'environnement :
    1. Modifiez le fichier env-config.yaml.
    2. Modifiez le fichier testdata-instance.json (l'espace de noms du stockage d'objets, après le signe at ('@') doit être mis à jour pour correspondre à la location).
  3. définition des références de ressources;
    1. Modifiez le fichier arguments.yaml dans le dossier de configuration de l'environnement pour définir des références aux ressources dont dépend l'application.
    2. Dans le dossier infrastructure/environments/<your environment>, exécutez
      terraform output
    3. Copiez la sortie (à l'exclusion de la dernière ligne) et collez-la dans arguments.yaml, en remplaçant = par :.

Configuration et initialisation de l'interface de ligne de commande mlapp

  1. Configurer le projet d'application d'apprentissage automatique.
    1. Naviguez jusqu'au dossier de l'application.
    2. Modifiez le fichier application-def.yaml pour définir le nom et la description de l'application d'apprentissage automatique et de sa mise en oeuvre.
    3. Créez default_env pour définir l'environnement comme environnement par défaut (cela élimine la nécessité de le spécifier sur la ligne de commande lors de l'utilisation de l'interface de ligne de commande mlapp). Vous pouvez copier ml-application/default_env.example dans ml-application/default_env et y stocker le nom de l'environnement.
  2. Initialiser l'environnement.
    Dans le dossier ml-application, exécutez :
    source ./mlapp init

    Cette commande ajoute le script mlapp à la variable PATH, vous permettant d'exécuter l'interface de ligne de commande avec mlapp au lieu de ./mlapp.

Créer et déployer l'application

Avec tous les éléments configurés, vous pouvez maintenant commencer à créer et à déployer l'application.

Note

Pour en savoir plus sur les commandes de l'interface de ligne de commande mlapp, exécutez :
mlapp -h
  1. Créez l'application.
    mlapp build
  2. Déployer l'application.
    mlapp deploy
  3. Instancier l'application.
    mlapp instantiate
  4. déclencher une exécution du pipeline d'entraînement.
    mlapp trigger
  5. Testez le service prédictif.
    mlapp predict
Après avoir exécuté une commande d'interface de ligne de commande mlapp, vérifiez les résultats en naviguant jusqu'aux applications d'apprentissage automatique dans la console OCI, les analyses, l'intelligence artificielle et l'apprentissage automatique.

Utiliser des marqueurs définis et à structure libre

L'exemple d'application illustre l'utilisation de marqueurs définis et à structure libre pour assurer l'isolation des locataires et permettre le suivi des ressources d'exécution, en particulier des modèles.

Les marqueurs définis sont utilisés pour associer les identificateurs propres au locataire à des ressources telles que les déploiements de modèle, les compartiments de stockage et les modèles.
Ajouter un marqueur défini à un seau
resource "oci_objectstorage_bucket" "data_storage_bucket" {
  compartment_id = var.app_impl.compartment_id
  namespace      = data.oci_objectstorage_namespace.this.namespace
  name           = "ml-app-fetal-risk-bucket-${var.app_instance.id}"
  access_type    = "NoPublicAccess"
 
  # To allow Instance (tenant) isolation
  defined_tags   = {"MlApplications.MlApplicationInstanceId" = var.app_instance.id}
}
Pour les ressources d'exécution créées dynamiquement à partir de code (comme les modèles), ajoutez un marqueur défini et un marqueur à structure libre. Le marqueur à structure libre lie la ressource à l'instance, ce qui permet la suppression automatique lorsque l'instance est supprimée.
Ajouter des marqueurs définis et à structure libre à un modèle
model_id = xgb_model.save(display_name='fetal_health_model',
                          # needed for tenant isolation
                          defined_tags={"MlApplications": {"MlApplicationInstanceId": instance_id}},
                          # needed for ML App to be able to track created model
                          freeform_tags={"MlApplicationInstance": instance_id})