{"word_count": 984, "character_count": 5981}
La légende veut qu’une année, au moment des fêtes de fin d’année, Amazon ait connu un problème technique. Proche de leurs limites depuis plusieurs heures, les serveurs auraient rendu l’âme de manière inopportune, faisant perdre des sommes considérables à l’entreprise de Seattle. Pour éviter que cette déconvenue ne se reproduise, cette dernière aurait décidé d’investir massivement dans des infrastructures. Mais tout cela ne va pas sans coûts : le matériel est onéreux, il devient rapidement obsolète, il faut l’entretenir, payer des factures astronomiques en climatisation (ou s’installer en Islande)… Pour rentabiliser le tout, Amazon aurait donc proposé de louer ses serveurs, d’abord à des entreprises, puis à des particuliers.L’offre est désormais bien rodée, et Amazon Web Services est l’un des nombreux prestataires de services dans le « cloud ». On peut louer de l’espace de stockage, mais aussi de la bande passante, ou de la puissance de travail… ce qui est non négligeable quand on travaille avec des quantités de données assez vastes. Ça l’est d’autant plus, comme de nombreux chercheurs, on travaille avec R – connu pour ses problèmes de mémoire.J’ai récemment été confronté à cette situation lors du traitement d'une base de données un peu lourde. Pour le projet sur la réception des sociologues français aux États-Unis (déjà évoqué ici) déjà évoqué, je cherchais à repérer une série d'informations dans des bibliographies. Mais 40 années multipliées par 35 journaux correspondent à 40 000 articles, et à 1,6 millions de citations. Et je devais faire 200 requêtes modérément complexes (une par auteur) sur chacun de ces items. Ce n’est pas énorme pour certains logiciels, mais du fait de la manière dont R gère sa mémoire et du fait de la manière dont j’abordais le problème, mon ordinateur n’y suffisait pas.Comment faire pour traiter des données lorsque la puissance de sa machine est insuffisante ? La question ne se pose pas que dans le cas d'opérations de data-mining, on y est aussi confronté quand on fait des calculs un peu gros (comme en analyse de réseau). On a alors plusieurs possibilités. La première chose consiste à voir s'il n'est pas possible d'améliorer son programme, pour l'adapter au mieux à la manière dont R gère la mémoire (on lira à profit R Inferno, que m’avait utilement conseillé Y. Savina). Ensuite, on peut utiliser des outils plus adaptés par exemple les modules (ff ou bigmemory). Enfin, on peut passer par un autre langage de programmation qui ne s’étouffe pas devant ces nombres, soit en l'appelant depuis R, soit directement.La solution que j’ai retenue est autre. Outre l’optimisation du calcul, j’ai décidé de louer une grande puissance de calcul contrôlable à distance. C’est ce qu’on appelle le cloud computing.Louer un supercalculateur depuis votre bureauLe principe est le suivant : vous louez de l’espace de travail (puissance de calcul + RAM + stockage), vous installez une « image » d’un logiciel que vous voulez faire tourner, vous chargez vos données, et c’est parti. Le résultat est surprenant. En moins de vingt minutes, j’avais loué l’équivalent de 28 processeurs. Et quelques heures plus tard mon problème était résolu alors que mon tout nouvel ordinateur plantait au bout de 14h des mêmes calculs avec R sans avoir fini.Quelle offre choisir?De très nombreuses offres commerciales existent, censées s’adapter à vos besoins. Certaines ne vous concernent pas du tout, qui visent à satisfaire des besoins industriels. Mais même parmi celles qui peuvent s’adresser à nous, il faut choisir : faut-il plus de RAM (mémoire vive) ? plus de cœurs ? plus de processeurs (CPU) ? C’est cette question (qui est l’objet de l’algorithmique, versant « théorie de la complexité ») à laquelle on se retrouve confronté quand on compare les offres de cloud computing. Sans rentrer dans les détails, voilà les grandes lignes :- Si vous avez à répéter de très nombreuses fois un calcul très simple, il vaut mieux privilégier un nombre élevé de CPU (processeur). Plus vous en avez, plus vous enchainez les calculs rapidement.- Mais si vos objets sont gros ou que vos calculs sont complexes et prennent une place importante, vous voulez avoir de la RAM. C’est particulièrement vrai avec R, qui en consomme plus que de raison.Ces règles ne sont pas intangibles, ni linéaires, car d’autres facteurs rentrent en ligne de compte. On peut aussi chercher à optimiser le temps en les combinant, par exemple en faisant faire toute une série de pré-calculs en amont et en les stockant dans la RAM avant de lancer le calcul principal.À quel prix ?La question centrale est évidemment celle du prix. Combien coûte cette location, et est-elle rentable ? Du point de vue de nos disciplines, la réponse aux deux questions est : « ça dépend ». Sur le papier, louer une série d’ordinateurs dans les nuages ne coûte pas grand chose. En général, bien moins de $0.5 de l’heure. Mais tout dépend du mode de paiement. Certains louent à l’heure, mais plus cher. D’autres vous louent un espace mais pour le mois. Vous pouvez comparer en regardant ici les prix pour Amazon, Rackspace, internap, et l’entreprise française OVH qui lance son service en ce moment.&#160;Bien sûr, avant de commencer une location, il vaut mieux tester bien son code et ses données pour éviter de devoir faire les calculs plusieurs fois, sachant que le compteur tourne. Et attention ne pas oublier de se déconnecter quand on a terminé ! Cet été, j’ai fait tourner l’équivalent d’une trentaine de machines pendant 48h et cela m'a coûté 20 euros – mais j’avais un peu surestimé mes besoins. L’autre danger, c’est qu’une fois qu’on a utilisé ces moteurs sur des analyses de réseau dont les utilisateurs de R savent qu’elles sont un peu gourmandes, on trouve que son ordinateur est horriblement long. Mais s’habituer à ce confort risque de coûter cher, en tout cas aux tarifs actuels.Le prochain post proposera un tutoriel pour utiliser l'un de ces services de calculs dans les nuages.&#160;