#
# par Emeric CHAIZE

Dans le contexte actuel de partage des données à vos clients et au sein de l'entreprise pourquoi ne pas passer à la vitesse supérieure et partager des algorithmes ?

Une architecture AWS à votre service

Dans une architecture AWS, il est finalement assez simple de mettre en place une intermédiation des services en SDK et ainsi piloter et centraliser l'exécution de traitements complexes.

Dans notre cas nous avons fait le choix de tout centraliser dans Sagemaker pour bénéficier de ses fonctionnalités suivantes sans complexité :

  • SPOT Instance
  • Arrêt automatique à la fin des entrainements
  • Supervision détaillée et adaptée à l'algorithme.

Un pattern d'architecture

Voici un exemple de modélisation permettant de partager et mettre à disposition vos algorithmes en utilisant les solutions natives AWS tout en maîtrisant vos coûts et à moindre coût de développement :

Première partie, l'interface de gestion permettant de version et exposer l'ensemble de vos algorithmes, cette partie est à développer mais peut l'être rapidement et je n'ai pas de toute que des solutions natives seront bientôt disponibles (exemple partie Algorithme d'AWS est assez proche) :

  1. Interface permettant de déployer les algorithmes, pour chaque algorithme :
    • Le nom de l'algorithme
    • La description de l'algorithme
    • La version de l'algorithme
    • Statut (disponible / désactivé)
    • La version des outils nécessaires (Python, R, ...)
    • Upload de son code- Gabarit
  2. Déploiement de l'application Bring Your Own Algorithm (BYOA) comprenant un front et un back :
    • Front : Interface de gestion de l'application
    • Back :
      • Back du front
      • API fournissant 3 WebServices permettant de piloter l’entrainement Sagemaker en s'appuyant sur les algorithmes fournis (Lancement, Statut, Résultat)
  3. Dépôt de l'algorithme versionné sur le S3 et le Json de configuration de l'algorithme

Seconde partie pour l'appel au WebService utilisant l'algorithme mis à disposition en interface Humain/Machine (ex. : Postman, Swagger) ou en interface Machine/Machine (Wget, Curl, ...) :

A. Appel d'un WebService (version spécifique) en transmettant les paramètres au format JSON

B. Construction d'un entrainement Sagemaker et lancement de celui-ci à l'aide de la configuration du service (ECR + S3) en prenant en compte le paramétrage utilisateur

C. Le client final requête à intervalle régulier l'API pour connaître le statut d'avancement.
Le client final requête et récupère les résultats via l'API

Une utilisation contextuelle

Ainsi à l'aide de ce type d'interface, vous êtes en capacité de maîtriser vos coûts ainsi que l'infrastructure déployée.

Cette architecture est modulable à l'infini au regard de vos contraintes et de votre existant. En effet, il est possible par exemple de remplacer l'EKS par un ECS ou encore Fargate (l'utilisation du Spot Instance reste un besoin).