Une introduction et une application de Docker pour les Data Scientists


Mais ça marche sur ma machine ?
Il s’agit d’un mème classique dans la communauté technologique, en particulier pour les scientifiques des données qui souhaitent expédier leur incroyable modèle d’apprentissage automatique, pour apprendre que la machine de production a un système d’exploitation différent. Loin d’être idéal.
Cependant…
Il existe une solution grâce à ces choses merveilleuses appelées conteneurs et des outils pour les contrôler tels que Docker.
Dans cet article, nous allons découvrir ce que sont les conteneurs et comment vous pouvez les créer et les exécuter à l’aide de Docker. L’utilisation de conteneurs et de Docker est devenue une norme industrielle et une pratique courante pour les produits de données. En tant que Data Scientist, l’apprentissage de ces outils est alors un outil précieux dans votre arsenal.
Docker est un service qui aide à créer, exécuter et exécuter du code et des applications dans des conteneurs.
Maintenant, vous vous demandez peut-être ce qu’est un conteneur ?
Apparemment, un conteneur est très similaire à un machine virtuelle (VM). C’est un petit environnement isolé où tout est autonome et peut être exécuté sur n’importe quelle machine. Le principal argument de vente des conteneurs et des machines virtuelles est leur portabilité, permettant à votre application ou à votre modèle de s’exécuter de manière transparente sur n’importe quel serveur sur site, machine locale ou sur des plates-formes cloud telles que AWS.
La principale différence entre les conteneurs et les machines virtuelles réside dans la manière dont ils utilisent les ressources informatiques de leurs hôtes. Les conteneurs sont beaucoup plus légers car ils ne partitionnent pas activement les ressources matérielles de la machine hôte. Je n’entrerai pas dans tous les détails techniques ici, mais si vous voulez en savoir un peu plus, j’ai lié un excellent article expliquant leurs différences ici.
Docker est alors simplement un outil que nous utilisons pour créer, gérer et exécuter facilement ces conteneurs. C’est l’une des principales raisons pour lesquelles les conteneurs sont devenus très populaires, car ils permettent aux développeurs de déployer facilement des applications et des modèles qui s’exécutent n’importe où.
Il y a trois éléments principaux dont nous avons besoin pour exécuter un conteneur à l’aide de Docker :
- Dockerfile : Fichier texte contenant les instructions de création d’un docker. image
- Image Docker: Un plan ou un modèle pour créer un conteneur Docker.
- Conteneur Docker : Un environnement isolé qui fournit tout ce dont une application ou un modèle d’apprentissage automatique a besoin pour s’exécuter. Inclut des éléments tels que les dépendances et les versions du système d’exploitation.
Il y a aussi quelques autres points clés à noter :
- Démon Docker : Un processus d’arrière-plan (démon) qui traite les requêtes entrantes vers docker.
- Client Docker : Une interface shell qui permet à l’utilisateur de parler à Docker via son démon.
- DockerHub: Semblable à GitHun, un endroit où les développeurs peuvent partager leurs images Docker.
Hombrew
La première chose que vous devez installer est Brassage maison (lien ici). Ceci est surnommé le “gestionnaire de paquets manquant pour MacOS” et est très utile pour quiconque code sur son Mac.
Pour installer Homebrew, exécutez simplement la commande donnée sur leur site Web :
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Vérifiez que Homebrew est installé en exécutant brew help
.
Docker
Maintenant, avec Homebrew installé, vous pouvez installer docker en exécutant brew install docker
. Vérifiez que docker est installé en exécutant which docker
la sortie ne doit générer aucune erreur et ressembler à ceci :
/opt/homebrew/bin/docker
Colima
La dernière partie, est-ce l’installation Colima. Courez tout simplement install colima
et vérifiez qu’il est installé avec which colima
. Encore une fois, la sortie devrait ressembler à ceci :
/opt/homebrew/bin/colima
Maintenant, vous vous demandez peut-être ce qu’est Colima ?
Colima est un progiciel qui permet environnements d’exécution de conteneur sur MacOS. En termes plus simples, Colima crée l’environnement pour que les conteneurs fonctionnent sur notre système. Pour ce faire, il exécute une machine virtuelle Linux avec un démon avec lesquels Docker peut communiquer à l’aide du modèle client-serveur.
Alternativement, vous pouvez également installer Bureau Docker au lieu de Colima. Cependant, je préfère Colima pour plusieurs raisons : c’est gratuit, plus léger et j’aime travailler dans le terminal !
Voir ce billet de blog ici pour plus d’arguments pour Colima
Flux de travail
Vous trouverez ci-dessous un exemple de la manière dont les scientifiques des données et les ingénieurs en apprentissage automatique peuvent déployer leur modèle à l’aide de Docker :
La première étape est évidemment de construire leur incroyable modèle. Ensuite, vous devez résumer tout ce que vous utilisez pour exécuter le modèle, comme la version python et les dépendances du package. La dernière étape consiste à utiliser ce fichier d’exigences dans le Dockerfile.
Si cela vous semble complètement arbitraire pour le moment, ne vous inquiétez pas, nous allons passer en revue ce processus étape par étape !
Modèle de base
Commençons par construire un modèle de base. L’extrait de code fourni affiche une implémentation simple du Forêt aléatoire modèle de classification sur le célèbre jeu de données Iris :
Jeu de données de Kaggle avec une licence CC0.
Ce fichier s’appelle basic_rf_model.py
pour référence.
Créer un fichier d’exigences
Maintenant que notre modèle est prêt, nous devons créer un requirement.txt
fichier pour héberger toutes les dépendances qui sous-tendent le fonctionnement de notre modèle. Dans cet exemple simple, heureusement, nous ne nous appuyons que sur scikit-learn
emballer. Par conséquent, notre requirement.txt
ressemblera simplement à ceci :
scikit-learn==1.2.2
Vous pouvez vérifier la version que vous exécutez sur votre ordinateur par le scikit-learn --version
commande.
Créer un fichier Docker
Nous pouvons enfin créer notre Dockerfile !
Ainsi, dans le même sens que le requirement.txt
et basic_rf_model.py
créez un fichier nommé Dockerfile
. À l’intérieur Dockerfile
nous aurons ceci :
Allons-y ligne par ligne pour voir ce que tout cela signifie :
FROM python:3.9
: Ceci est l’image de base pour notre imageMAINTAINER [email protected]
: Cela indique qui maintient cette imageWORKDIR /src
: Définit le répertoire de travail de l’image sur srcCOPY . .
: Copiez les fichiers du répertoire actuel dans le répertoire DockerRUN pip install -r requirements.txt
: Installez les exigences derequirement.txt
fichier dans l’environnement DockerCMD ["python", "basic_rf_model.py"]
: Indique au conteneur d’exécuter la commandepython basic_rf_model.py
et exécuter le modèle
Initier Colima & Docker
L’étape suivante consiste à configurer l’environnement Docker : nous devons d’abord démarrer Colima :
colima start
Après le démarrage de Colima, vérifiez que les commandes Docker fonctionnent en exécutant :
docker ps
Il devrait retourner quelque chose comme ceci :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
C’est bien et cela signifie que Colima et Docker fonctionnent comme prévu !
Note: le
docker ps
La commande répertorie tous les conteneurs en cours d’exécution.
Créer une image
Il est maintenant temps de créer notre première image Docker à partir du Dockerfile
que nous avons créé ci-dessus :
docker build . -t docker_medium_example
Le -t
drapeau indique le nom de l’image et le .
nous dit de construire à partir de ce répertoire courant.
Si nous courons maintenant docker images
nous devrions voir quelque chose comme ceci :
Félicitations, l’image est construite !
Exécuter le conteneur
Une fois l’image créée, nous pouvons l’exécuter en tant que conteneur à l’aide de la commande IMAGE ID
énumérés ci-dessus:
docker run bb59f770eb07
Sortir:
Accuracy: 0.9736842105263158
Parce qu’il n’a fait qu’exécuter le basic_rf_model.py
scénario!
Informations supplémentaires
Ce didacticiel ne fait qu’effleurer la surface de ce que Docker peut faire et pour quoi il peut être utilisé. Il existe de nombreuses autres fonctionnalités et commandes pour apprendre à comprendre Docker. Un excellent tutoriel détaillé est donné sur le site Web de Docker que vous pouvez trouver ici.
Une fonctionnalité intéressante est que vous pouvez exécuter le conteneur en mode interactif et accéder à son shell. Par exemple, si nous exécutons :
docker run -it bb59f770eb07 /bin/bash
Vous entrerez dans le conteneur Docker et il devrait ressembler à ceci :
Nous avons également utilisé le ls
commande pour afficher tous les fichiers du répertoire de travail Docker.
Docker et les conteneurs sont des outils fantastiques pour garantir que les modèles des Data Scientists peuvent s’exécuter n’importe où et n’importe quand sans problème. Pour ce faire, ils créent de petits environnements de calcul isolés qui contiennent tout ce qui permet au modèle de fonctionner efficacement. C’est ce qu’on appelle un conteneur. Il est facile à utiliser et léger, ce qui en fait une pratique industrielle courante de nos jours. Dans cet article, nous avons passé en revue un exemple de base de la façon dont vous pouvez empaqueter votre modèle dans un conteneur à l’aide de Docker. Le processus était simple et transparent, c’est donc quelque chose que les Data Scientists peuvent apprendre et comprendre rapidement.
Le code complet utilisé dans cet article peut être trouvé sur mon GitHub ici :
(Tous les emojis conçus par OpenMoji – le projet open source d’emoji et d’icônes. Licence: CC BY-SA 4.0)
01130
84675
66158
76462
04843
57867
69491
76948
06801
77804
32136
42533
58187
12053
00807
78783
65454
59911
00147
74017
84713
42586
17417
91565
11677
00369
38800
46451
00073
40384