You are on page 1of 10

Python et la Modlisation Analytique

Pourquoi Choisir Python pour la Modlisation Analytique

Une Prsentation Technique par Visual Numerics, Inc.

www.vni.com

Python et la Modlisation Analytique


Pourquoi Choisir Python pour la Modlisation Analytique

by Visual Numerics, a Rogue Wave Software Company by Visual Numerics, Inc. All Rights Reserved Printed in the United States of America

Trademark Information

Visual Numerics, IMSL and PV-WAVE are registered trademarks. JMSL TS-WAVE, JWAVE, and PyIMSL are trademarks of Visual Numerics, Inc., in the U.S. and other countries. All other product and company names are trademarks or registered trademarks of their respective owners. The information contained in this document is subject to change without notice. Visual Numerics, Inc. makes no warranty of any kind with regard to this material, included, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. Visual Numerics, Inc, shall not be liable for errors contained herein or for incidental, consequential, or other indirect damages in connection with the furnishing, performance, or use of this material.

TABLE DES MATIRES

Rsum........................................................................................................ 4 Prototyper / Mettre en Production ............................................................ 4 Prototyper le Modle Analytique ............................................................ 4 Dploiement en Production de la partie Analytique ............................... 5 Les Concepteurs de Prototypes et Leurs Besoins ....................................... 6 Pourquoi Python ? ................................................................................... 7 Les Dfis du Dploiement en Environnement de Production .................... 8 La Solution : PyIMSL Studio......................................................................... 8 Conclusion................................................................................................. 10

Rsum
Cet article explore en dtail la modlisation analytique et le dploiement en environnement de production dapplications danalyse et explique dans quelles mesures ces tapes sont fondamentalement diffrentes en termes de pr-requis, dobjectifs et de choix doutils. Les prrequis concernant llaboration du prototype sont calqus sur les fonctionnalits du langage dynamique Python. Il sera discut comment raliser le passage entre la modlisation du prototype et le dveloppement du code de production et il sera montr comment PyIMSL Studio en adresse plusieurs points-cl. PyIMSL Studio est le premier et unique environnement de dveloppement commercial pour le dveloppement dapplications danalyse numrique conu pour le dploiement de prototypes mathmatiques et statistiques en application de productions. Cet article concerne principalement les personnes qui sont intresses par Python comme langage de prototypage mais qui ne sont pas familires quant son utilisation et la manire dont il peut parfaitement rpondre aux exigences de prototypage/mise en production dapplication numriques.

Prototyper / Mettre en Production


De nombreuses socits dveloppant des applications analytiques suivent un processus consistant dabord la cration dun prototype de modlisation avant de dvelopper lapplication de production. Pour mieux apprhender ces deux aspects, il convient de bien comprendre les objectifs de chacune de ces activits.

Prototyper le Modle Analytique


La modlisation est une activit dans laquelle les donnes et les algorithmes sont slectionns afin dobtenir les rsultats numriques dsirs. Cela peut prendre de nombreuses formes diffrentes en fonction du secteur dactivit, mais voici quelques objectifs communs tous : 1. Identifier les besoins en matire danalyse pour lapplication de production. Les investigations commencent souvent par quelques ides simples propos des techniques disponibles, mais les besoins concrets pour le dploiement dune application de production resteront flous jusqu ce que des donnes effectives soient collectes et examines, et quune tude exhaustive des techniques danalyse adquates soit ralise. 2. Apporter la preuve quune approche analytique spcifique adresse les objectifs identifis du projet. Par exemple, le calcul de prvisions de ventes nest pas un objectif en soi, pas plus que loptimisation dune chane logistique. Le but est plutt de dmontrer que les prvisions calcules et lefficacit de loptimisation apportent une relle valeur commerciale mesurable. Bien sr, des objectifs similaires sappliquent pour dautres industries et dautres ensembles de problmatiques. 3. Identifier chacun des problmes de performance et de scalabilit qui sont des aspects particulirement cruciaux dans le cadre dun dploiement dapplications de production. Page 4

4. Obtenir laccord des responsables pour passer la phase de dploiement et de mise en production traditionnellement au moyen de dmonstrations et documentations des prototypes.

Dploiement en Production de la partie Analytique


Le but du dploiement en production est de migrer le modle analytique vers un environnement o les parties calculatoires peuvent tre efficacement utilises pour produire des rsultats exploitables. Ceci prend galement diffrentes formes en termes de paramtrage, parmi lesquelles : 1. Intgrer des algorithmes, des calculs statistiques ou une logique une application existante utilise par un groupe, un dpartement ou lintgralit dune socit. Lapplication intgre peut proposer une interface-utilisateur, ventuellement base sur le web, et est bien souvent conue pour tre utilise par des personnes dont le domaine dexpertise ne relve pas de lanalytique, mais plutt de la rptition de diffrentes tches ou de la prise de dcision sur des donnes diffrentes. 2. Utiliser le code pour oprer sur des problmes de calculs intensifs, mettant bien souvent en jeu de consquents volumes de donnes, ou lancer des simulations intensives utilisant les modles dvelopps, ventuellement dans un environnement de calcul haute performance (HPC). 3. Traiter les donnes en diffr (batch) pour effectuer des analyses frquentes ou pour effectuer lanalyse sur plusieurs jeux de donnes diffrents. Par exemple, les prvisions de ventes concernant de nombreux produits bases sur un modle commun de technique prdictive, ou la classification de nouvelles donnes au fur et mesures quelles apparaissent. 4. Intgrer la partie analytique dans un produit commercial destin la revente. Notons quil existe dimportants dfis relever lorsquon souhaite porter un code danalyse en production, ce qui distingue les activits et problmatiques du dploiement en production de celles lies la phase de prototypage. Il est gnralement risqu de dployer directement et simplement le code du prototype en environnement de production. Parmi ces dfis, on peut citer : 1. lamlioration des performances, en crivant gnralement la partie calculatoire intensive dans un langage de plus bas niveau, comme le C. 2. la collecte planifies ou la demande des donnes, leur mise en forme (filtrage, nettoyage). Ces oprations sont gnralement faites la main lors de la cration du prototype. Cette collecte et ce prtraitement de donnes peuvent se retrouver diffrents niveaux de lapplication de production : collecte depuis une base de donnes, durant la phase dETL (Extraction Translation and Loading) ou dans le code de calcul luimme. 3. Gestion et remonte sans faille des erreurs. Il est particulirement important dintercepter et de faire remonter les anomalies ou erreurs analytiques plutt que de renvoyer des rsultats potentiellement corrompus.

Page 5

4. Test et contrle de la qualit sur la prcision des rsultats analytiques obtenus, afin de sassurer quils sont identiques ceux dtermins par le prototype. Disposer des bons outils numriques pour atteindre cet objectif est primordial, et la parit de ces outils numriques utiliss la fois pour le prototypage et la production est une considration prpondrante.

Les Concepteurs de Prototypes et Leurs Besoins


Qui fait le prototypage ? Les concepteurs de prototypes sont des analystes qui explorent les donnes et les algorithmes pour parvenir un rsultat numrique dsir. Bien souvent, ils ne sont pas forms au dveloppement logiciel mais sont plutt des experts dans leur domaine : statisticiens, mathmaticiens, experts en business intelligence, analystes quantitatifs, scientifiques ou ingnieurs. Gnralement, comment mnent-ils ces investigations ? Ils utilisent souvent des outils sur tagre pour leur flexibilit et leurs capacits en matire de prototypage rapide. . Les problmatiques du dploiement en production sont bien diffrentes de la facilit manipuler, filtrer et transformer les donnes; appliquer ou paramtrer des algorithmes numriques et crer des rapports ou des graphiques intermdiaires. Lorsque les rsultats produits par les prototypes sont jugs satisfaisants, son code est souvent transmis une quipe de dveloppement logiciel qui doit trouver un moyen de rpliquer les mthodes numriques dans un environnement de production en utilisant des outils diffrents, car loutil de prototypage est trs gnralement inadapt cet environnement. Quels outils sont requis pour le prototypage ? Loutil le plus important consiste en un langage facile utiliser o les dtails des algorithmes sont clairement exposs et faciles comprendre. Des langages de plus bas niveau comme C/C++, Java et C# peuvent noyer cette lisibilit du fait de leur constitution syntaxique et ils pchent par le manque de fonctionnalits en matire doprations de haut-niveau pour la manipulation de tableaux. Idalement, le code du prototype devrait ressembler aux formules algbriques quil implmente. Des librairies ou des outils analytiques sont requis pour dvelopper le modle. Tandis que certains composants sont dvelopps par lanalyste, ces composants sappuient souvent sur une couche de fonctionnalits danalyse ou sur une librairie numrique sous-jacente. La visualisation graphique est largement utilise afin dafficher des rsultats intermdiaires et/ou finaux lors de la mise au point dun modle, mme si cet aspect graphique nest pas ncessairement requis par lapplication de production. Certains concepteurs de prototypes prfrent travailler partir dune ligne de commande interactive. Dautres vont favoriser un environnement de dveloppement intgr, plus formel, disposant de puissantes fonctionnalits comme la coloration syntaxique, la compltion de commandes, la mise en forme du code source. Les outils

Page 6

de dbogage permettant de suivre lvolution de la valeur dune variable sont galement une ressource de grande valeur. Quel(lle)s plateformes/environnements sont utilis(e)s pour le pour le prototypage ? Les plateformes de prototypage sont traditionnellement des PC de bureaux fonctionnant sous Microsoft Windows, Linux ou MacOS. Elles sont gnralement diffrentes des plateformes de production qui exigent parfois un plus grand spectre denvironnements matriels et/ou de systmes dexploitation, bien souvent des serveurs et non des PC de bureau standard. Quel est le format typique des donnes utilises pour le prototypage ? Laccs aux donnes pour le prototypage peut impliquer un accs formel une base de donnes mais dans de nombreux cas, il est question dchantillons de donnes ou de sous-ensembles de jeux de donnes sous la forme dun simple fichier ASCII tabul ou dune feuille Excel. Ceci est trs rarement le cas pour une application de production. Le filtrage et le prtraitement des donnes dans une application de production peuvent tre effectus lors de laccs la base de donnes ou par dautres modules composant larchitecture de lapplication, mais pour le concepteur du prototype, il est ncessaire quil ait sa disposition un large ventail doutils faciles utiliser de manire ce quil accomplisse rapidement et efficacement ces tches.

Pourquoi Python ?
Python est un langage dynamique open source de tout premier ordre, parfaitement adapt au prototypage dapplications danalyse pour un certain nombre de raisons :

Cest un langage permettant la fois une approche procdurale et une approche oriente objet. Dautres langages dynamiques sont souvent plus spcialiss, avec des fonctionnalits adressant des besoins spcifiques, mais ils noffrent pas autant de compromis que Python sagissant de la programmation gnraliste. Python nest pas un langage propritaire, ce qui permet un trs large partage des outils et des codes danalyse parmi une trs vaste communaut dutilisateurs. Il y a de trs nombreux toolkits open-source pour la modlisation analytique avec Python et ceci est le rsultat de plus de 10 ans dune forte adoption et de larges contributions de la part de la communaut scientifique. Cest un langage faiblement typ, avec une syntaxe trs simple et trs intuitive, ce qui le rend facile lire et comprendre. Le package NumPy un standard pour Python le transforme en un langage ddi aux oprations sur les tableaux, adquat pour un stockage efficace et pour la manipulation de grands tableaux multidimensionnels. NumPy propose une syntaxe simple pour indexer, sous-chantillonner et manipuler les tableaux. De plus, NumPy est efficace en matire de gestion de la mmoire et de performances.

Page 7

Alors quil existe de nombreux outils et librairies numriques open-source disponibles pour Python, les wrappers PyIMSL (inclus dans lenvironnement PyIMSL Studio) offrent lensemble le plus cohrent, le plus riche de techniques mathmatiques et statistiques avances pour, la fois, la conception de prototypes et le dploiement en applications de production, indpendamment de lenvironnement matriel et du systme dexploitation finaux.

Les Dfis du Dploiement en Environnement de Production


Certains bnfices du prototypage en langage dynamique deviennent un obstacle pour le dploiement en application de production. Par exemple, les performances peuvent parfois constituer une barrire. Ce point peut devenir critique pour le prtraitement rptitif de larges volumes de donnes, pour de nombreux jeux de donnes. Larchitecture de dploiement peut rendre lintgration dun moteur de calcul en langage dynamique difficile. Les applications existantes dans lesquelles des composants danalyse vont tre ajoutes dfinissent le langage utiliser. Le dploiement web et la scalabilit peuvent requrir quant eux des solutions diffrentes de celles proposes par un langage dynamique. Python peut tre utilis pour le dploiement dapplications de production car il existe de nombreux composants permettant de crer des interfaces-utilisateurs de grande qualit, pour le dveloppement dapplications monopostes comme orientes web. Pourtant, pour de nombreuses applications de production, les performances et la flexibilit optimales sont atteintes en dployant du code crit en langage C. En effet, du code crit en C peut tre optimis pour diffrentes combinaisons de dploiement spcifiques de matriels / systmes dexploitation / compilateurs.

La Solution : PyIMSL Studio


PyIMSL Studio 1 combine le langage Python ainsi quune slection doutils Python robustes avec les fonctionnalits danalyse avance de la librairie numrique IMSL C, le tout dans un ensemble facile installer et avec un support technique de tout premier ordre. Les manques en termes dentres/sorties et de nettoyage des donnes sont combls par des fonctionnalits supplmentaires implmentes par Visual Numerics. Les composants de PyIMSL Studio fournissent aussi bien les fonctionnalits requises par les concepteurs de prototypes que les fonctionnalits analytiques des librairies en C ncessaires au dploiement en environnements de production. Au cur de PyIMSL Studio se trouve la libraire IMSL C, un ensemble cohrent et complet dalgorithmes mathmatiques et statistiques que les dveloppeurs peuvent intgrer leurs applications logicielles.

http://www.vni.com/products/imsl/pyimslstudio.php

Page 8

Le nombre dalgorithmes disponibles les librairies IMSL avoisine le millier, proposant aux dveloppeurs de nombreuses combinaisons afin de crer des applications danalyse uniques, comptitives et de qualit industrielle. Au sein de PyIMSL Studio, ces fonctions mathmatiques et statistiques sont accessibles au programmeur Python pour le prototypage rapide et au dveloppeur C pour la ralisation dapplications de production. Le plus important est que les algorithmes sous-jacents sont les mmes pour les deux environnements. Les professionnels interrogs estiment quen utilisant les mmes algorithmes durant la phase de prototypage et durant la phase de mise en production, cela peut rduire de manire significative le temps de dveloppement par la suppression de recherches additionnelles, de rcriture et de tests. Avec PyIMSL Studio, Visual Numerics a intgr et packag une collection pratique et complte doutils Python fiables pour la modlisation analytique. Ces outils sont tests, documents et supports par Visual Numerics et ils sinstallent trs facilement par lintermdiaire dune seule procdure standard. Ce jeu de composants comprend :

Python NumPyun ensemble de modules pour la manipulation puissante et efficace de tableaux de donnes. Il sagit dun standard de facto pour lalgbre matricielle et les tableaux en Python. Des composants dI/O et de transformations de donnesdes utilitaires pour filtrer et transformer les donnes, parmi lesquels : o Un utilitaire pour lire des fichiers de donnes ASCII, disponible en Python et en code de production C. o Un utilitaire didentification et de substitution de valeurs manquantes, disponible en Python et en code de production C. o PyODBCUn module Python daccs aux bases de donnes pour Windows et Linux. o xlrdUn module Python pour importer des donnes depuis une feuille Excel. matplotlib/pylabDes composants graphiques Python. IPythonUne interface de type ligne de commandes pour le dveloppement interactif et lexploration de donnes en Python. Eclipse/PydevUn Environnement complet de Dveloppement Intgr (EDI) pour Python.

Les Wrappers PyIMSL


Lorsquon effectue une modlisation analytique, le plus important pour les concepteurs est de disposer des fonctionnalits mathmatiques et statistiques ncessaires cette analyse. Dans PyIMSL Studio, cette fonctionnalit est fournie par les wrappers PyIMSL, un ensemble de wrappers Python aux algorithmes de la librairie IMSL C.

Page 9

Les wrappers PyIMSL permettent dexposer lintgralit des fonctionnalits de la libriairie IMSL C dans un style qui reflte parfaitement la philosophie du langage Python. Les fonctions qui requirent des tableaux peuvent tre utilises avec tout ce qui se comporte comme un tableau en Python. La gestion des erreurs utilise la gestion standard des exceptions en Python. Utiliser PyIMSL permet de produire un code minimaliste et lisible, pythonique est le terme utilis cet effet par la communaut des utilisateurs Python. Pour le concepteur de la modlisation, les wrappers PyIMSL sont un moyen daccder aux fonctions fiables, robustes et performantes de la librairie IMSL C sans avoir programmer en C. La documentation des wrappers PyIMSL 2 dcrit comment utiliser lintgralit des fonctions mathmatiques et statistiques de la librairie et est tlchargeable depuis le site web de Visual Numerics. Parce que les wrappers PyIMSL offrent une interface directe chacune des fonctions de la librairie IMSL C, les personnes qui souhaitent passer dun prototype Python un code de dploiement en C nauront aucun problme pour dterminer la routine et les paramtres de lalgorithme en C de lapplication de production.

Conclusion
Ce document a soulign quil existe des diffrences significatives entre la conception dun prototype et la mise en production du modle rsultant. Python est dsign comme tant un excellent langage de prototypage. Mais dans bien des cas pourtant, le dploiement en application de production implique une r-implmentation de la partie analytique en un autre langage. PyIMSL Studio fournit non seulement lenvironnement de prototypage complet mais aussi la partie analytique pour les deux parties : la conception du prototype et sa mise en production.

http://www.vni.com/products/imsl/documentation/index.php#pyimsl

Page 10

You might also like