Dans le billet précédent, on avait discuté de l’intérêt du « cloud computing » pour les sciences sociales. La conclusion était qu’il peut parfois être utile d’avoir recours à la location de serveurs pour disposer d’une puissance de calcul décuplée. Si je l’ai utilisé dans le cas d’une vaste opération de nettoyage de données bibliométriques, c’est en fait utile dans bien d’autres cas. L’analyse de réseau, surtout si elle s’appuie sur des simulations, peut par exemple être très chronophage. Et quand chaque essai prend 20 minutes, l’exploration est ralentie d’autant.
Dès lors, il peut être utile de passer par le cloud. Le tutoriel ci-dessous propose de vous installer une image de R dans les nuages en moins de 10 minutes, montre en main. On va passer par le service d’Amazon, Amazon Web Service. La raison principale est qu’il existe une « image » de RStudio pré-programmée qui en rend l’installation très simple. Mais comme on l’a déjà dit, ce n’est pas forcément le moins cher, ni le plus performant. Caveat emptor!
1. Ouvrir un compte chez AWS.
C’est tout aussi simple que de créer un compte chez Amazon Web Service. Crééz le, et gardez-le ouvert.
2. Aller sur la page de Louis Aslett
Un statisticien d’Oxford, Louis Aslett, a créé une série d’images qui permettent de placer une console RStudio directement dans les nuages. Allez sur sa page, et sélectionnez l’image qui vous correspond en fonction de votre région, dans la boite en haut à droite.
3. Sélectionner une instance
Si tout va bien, vous êtes ramené directement sur le site d’AWS. Sélectionnez une instance. Vous avez le choix entre plusieurs formules, regroupées (barre de gauche) en quatre grandes familles :
– Micro instance (équivalent à un ordinateur de faible puissance)
– General purpose : diverses combinaisons relativement équilibrées, de puissance variable
– Memory optimized : Des instances avec des niveaux de RAM très élevé
– Storage optimized : Des niveaux de stockages très importants
– Computer optimized : Là, l’accent est mis sur le nombre de processeurs.
Comme je le disais dans le billet précédent, tout dépend alors du type d’opération et du temps que vous voulez y consacrer. Parfois, attendre un peu plus longtemps permet de faire des économies.
4. Détails
Viennent ensuite une série de pages, que vous pouvez passer rapidement :
– Configure instance details : cliquez sur Next sans rien toucher d’autre
– Add Storage : cliquez sur Next sans rien toucher d’autre
– Tag instance : Donner des noms (Ex. Etienne – RStudio)
5. Configure Security Group
Ici, il faut configurer la liaison à internet. Sous l’onglet protocol, cliquer sur « Custom TCP Rule » dans le menu déroulant (au lieu de SSH). Le champ « Port Range » devient inscriptible. Mettre 80. Laisser *Source* tel quel (ie. “Anywhere” et “0.0.0.0/0”).
Une fois cela fait, on vous demande de vérifier (Review) et de lancer. Il est possible qu’une fenêtre s’ouvre en vous demandant quelle « Security pair » choisir. Choisissez « no security pair ». Et c’est parti, maintenant, vous payez.
Il faut attendre une minute ou deux le temps que tout se mette en place. Vous pouvez observer le processus depuis votre console (cf. ci-dessus). Dans le menu principal, vous avez la liste des instances que vous avez créées (là, j’en ai deux). Une micro (gratuite pendant un an avec l’inscription à AWS, mais plutôt du genre vieux coucou cacochyme), et une autre mise en place pour faire un gros calcul. La colonne « instance state » dit qu’une fonctionne, et que l’autre est à l’arrêt (ce que vous faites via l’onglet Actions).
En face de Public DNS, vous avez maintenant une adresse URL (en surbrillance bleue sur la copie d’écran). Copiez-là, et collez-là dans votre navigateur. On va vous demander vos codes (qui sont: rstudio/rstudio). Une fois cela fait, les utilisateurs de R retrouvent un environnement assez familier.
Quelques petits conseils avant de démarrer
- Pour travailler des données, il faut les importer via l’onglet upload. Selon leur taille et votre connexion, cela sera plus ou moins long.
- Aucune extension n’est pré-installée, donc il faut le faire. Choisir un miroir (chooseCRANmirror()) puis refaire une procédure d’installation manuelle (ex: >install.packages(‘questionr’)).
- Une fois les données traitées, on les exporte via l’onglet « More » dans le panel en bas à droite. Attention, si vous n’avez pas assez de RAM (par ex. si vous utilisez la micro instance sur une tâche un peu costaud), vous pouvez rester bloqués à ce stade, ce qui est contrariant puisqu’il faut tout refaire …. avec une instance plus puissante. Contrairement au nom du sous-service (Elastic Cloud), Amazon ne permet pas d’augmenter la taille de ses instances une fois qu’elles sont créées.
- IMPORTANT : Une fois que vous avez terminé : déconnectez-vous (sign out). Vous avez quitté R dans les nuages, mais pas AWS, qui lui continue de tourner. Donc n’oubliez pas d’aller sur votre console pour arrêter l’instance. Car sinon, vous continuez de payer. Allez dans le menu ACTION, et choisissez. Soit vous choisissez Stop, auquel cas vous conservez l’instance en mode pause, et vous ne payez que pour les données que vous avez stockées sur l’image (à un taux très faible). Vous pouvez alors la réactivez quand vous le souhaitez. Soit, maintenant que vous savez créer des instances à tout va, vous faites « terminate ». Et là, tout disparaît pour de bon : instance, données, etc.
Voilà pour les informations de base. Commentaires et questions bienvenus. Et je suis aussi preneur de tout tutoriel pour installer une instance sur un opérateur concurrent.
OpenEdition vous propose de citer ce billet de la manière suivante :
étienne (13 janvier 2014). Les calculs dans les nuages (2) – Tutoriel. Data Sciences Sociales. Consulté le 19 janvier 2025 à l’adresse https://doi.org/10.58079/ngxz
Bonjour,
Merci pour vos 2 articles sur le cloud d’amazon qui m’ont permis d’utiliser ce service très facilement. Cependant, après quelques heures d’utilisation (en version payante), je trouve que le rapport prix/vitesse d’exécution n’est pas très favorable. Sur mon ordi perso, j’ai un script R qui nécessite 12 heures de traitement par rapport à mes données d’entrée. Sur le cloud, avec l’instance r3.x4 large, cela a pris 8h20 (j’ai aussi essayé en c3.x4large). Gain de temps faible le tout pour une vingtaine d’euros. Vous dites avoir fait tourner l’équivalent d’une trentaine de machines sur 48 heures pour 20 euros. Pourriez-vous détailler svp? C’était avec quelle instance? Avez-vous utilisé plusieurs instances simultanément? Merci.
Bonjour Lionel,
En fait, tout dépend de la manière dont vous avez écrit votre code. Si vous avez entré des commandes qui requièrent un temps incompressible (les plus fréquent, et les plus chronophages sont les loops for), alors l’ordinateur le plus puissant ne pourra rien pour vous. Dans ce cas, un peu d’optimisation de code serait surement utile (voir P Burns, R Inferno).
Plus généralement, il faut voir si vos calculs sont intensifs en mémoire (auquel cas il faut privilégier de la RAM) ou s’ils s’agit de tâches répétitives et peu compliquées (auquel cas il faut privilégier le nombre de CPU).
Finalement, une possibilité pourrait être de paralléliser les calculs s’ils sont indépendants les uns des autres. Je comptais en parler à l’occasion justement.
Etienne