lundi 8 avril 2013

Parallélisation et business model

Vous n'êtes peut-être pas des experts du calcul scientifique, mais si vous vous intéressez à l'informatique, vous avez certainement entendu parler, sous une forme ou sous une autre, de parallélisation. Ne serait-ce que parce que les processeurs (ces "cerveaux" d'ordinateur) de dernière génération sont souvent multi-cœur.
Je vais dans cet article vous expliquer comment on peut s'inspirer du calcul parallèle pour concevoir de nouveaux business models.

La parallélisation, késako ?

Commençons par le plus courant, le processeur multi-cœur.
Pour augmenter les performances d'un ordinateur, on peut soit augmenter la puissance d'un processeur élémentaire (un "cœur"), ce qui est difficile, soit mettre deux ou plusieurs cœurs dans un même processeur, et répartir la charge de calcul sur ces cœurs. En gros, c'est plus facile de demander à une équipe de rugby amateur de pousser une voiture en panne que d'entraîner un surhomme pour faire la même chose. Il est courant de trouver deux, voire quatre tels cœurs dans le processeur des ordinateurs actuels.
Génial, me direz-vous, qu'attend-on pour en mettre des dizaines, voire des centaines ?
Eh bien, on n'a pas attendu.
Les scientifiques et autres ingénieurs ont depuis longtemps perçu le potentiel d'utiliser pleins de processeurs pour faire rapidement des calculs qui seraient tout bonnement infaisables en une vie humaine avec un seul processeur. Ils ont donc développé des architectures informatiques qui permettent à un grand nombre de processeurs de travailler ensemble. C'est ce qu'on appelle des clusters.
La difficulté n'est pas tant dans le matériel informatique (les ordinateurs d'aujourd'hui sont assez bon marché, et internet relie des milliards d'ordinateurs dans le monde) que dans la répartition du calcul.
En effet, si vous avez cent processeurs et mille calculs différents à faire, pas de souci. Il suffit d'affecter dix calculs à chaque processeur, et vous avez les résultats cent fois plus vite. Mais si vous avez qu'un seul calcul à faire (une addition), vous ne pouvez pas décomposer cette opération en cent opérations indépendantes : vous serez obligé de la confier à un seul processeur parmi les cent, et vous n'aurez strictement rien gagné.
Cet exemple est un cas particulier d'une loi relativement générale dans le calcul parallèle : il y a des tâches parallélisables et des tâches qu'on ne peut pas répartir, et ce sont ces dernières qui limitent la performance. Plus il y a de tâches parallélisables, plus vous pouvez espérer gagner en vitesse, mais il y a une limite à l'accélération. C'est la loi d'Amdahl.
Prenons un exemple simple. Supposons qu'un processeur seul mette 100 minutes à réaliser un très long calcul, avec 50% de tâches parallélisables. Il y a donc 50 minutes de tâches qu'on ne peut pas accélérer, et 50 minutes que l'on peut fortement réduire. Si j'ai deux processeurs, il me faudra seulement 50+(50/2)=75 minutes ; si j'en ai dix, 50+(50/10) = 55 minutes ; si j'en ai mille, 50+(50/1000)=50,05 minutes.
On le voit, cela ne sert quasiment à rien d'avoir beaucoup de processeurs dans un tel cas. Et comme cette situation est plutôt courante, les processeurs vendus dans le commerce n'embarquent pas beaucoup de cœurs. Il n'y a qu'en travaillant intelligemment sur l'algorithme qu'on arrive à réduire fortement les tâches non parallélisables, et un tel travail ne peut se faire que sur des problèmes très spécifiques, très gourmands en ressources, et qui méritent qu'on y passe beaucoup de temps.

Un business model inspiré du calcul parallèle

Vous allez me dire, quel rapport avec un business model ? J'y viens.
Lorsqu'on pense à un produit à commercialiser, on imagine un objet physique qui va être acheté par un seul utilisateur.
Mais il existe pleins de produits moins matériels, comme une œuvre littéraire, qui peuvent être consommés par un grand nombre de personnes. Et l'air du temps étant à la dématérialisation, les exemples fleurissent : livres électroniques, réseaux sociaux, logiciels divers et variés...
Je connais en gros un seul système de tarification pour de tels produits immatériels : la vente de l'usage du produit à un prix fixe pour chaque utilisateur. Il y a évidemment des variantes (promotions, parrainages...) mais on part du principe que le prix de vente est indépendant du nombre d'utilisateurs.
Cela fait l'affaire des vendeurs de logiciels : ne vous étonnez pas si Apple et Google sont des multinationales très profitables. Mais cela a pour conséquence un piratage massif de ces produits.
Je vous propose maintenant l'idée suivante : considérons un business model qui couvrirait exactement les frais de production.
On peut décomposer ces frais en frais fixes F (le salaire des employés, les frais d'expert-comptable...) et en frais variables V (la matière première, l'énergie, les emballages...) plus ou moins proportionnels au nombre de ventes N : on peut traduire ça par l'égalité V = Nv.
Plus il y a de ventes, plus les frais variables augmentent proportionnellement à N, mais les frais fixes restent inchangés. Le chiffre d'affaires doit donc atteindre leur somme F+Nv, et pour en déduire le prix de vente p, il faut diviser par N. On obtient donc p = v+F/N. C'est la formule d'Amdahl. L'analogie est claire : les frais fixes sont l'équivalent des tâches parallélisables, et les frais variables sont le pendant des tâches qu'on ne peut pas répartir.
Poursuivons l'analyse. Le plus intéressant, c'est que le prix diminue avec le nombre de ventes. En pratique, cela signifie que vous remboursez de l'argent à vos précédents acheteurs à chaque nouvelle vente réalisée.
Voilà un levier intéressant : l'acheteur devient impliqué dans les ventes. Plus le produit se vend, moins il lui coûte : il aura donc intérêt à en parler autour de lui, à encourager ses amis à l'imiter. Il fera "gratuitement" la promotion du produit, sans que cela ne coûte à l'entreprise qui commercialise.
Sans être aussi radical que cela, l'idée d'un prix qui décroît avec le volume des ventes, et d'un remboursement partiel des premiers acheteurs avec l'augmentation des ventes, me paraît être très innovant. Qui l'adoptera ?

2 commentaires:

  1. Bonjour,
    Votre analogie avec le parallélisme est attrayante mais un peu hasardeuse. Vous mélangez deux notions et obtenez une simplification qui n'est pas exacte. La loi d'Ahmdal est une loi qui se place dans un modèle idéal où l'on omet volontairement certains surcoûts liés à l'augmentation des tâches et l'augmentation du nombre de processeurs. Cette loi permet de montrer très vite la limite du parallélisme. En effet, elle indique que pour obtenir une accélération de 20, il faudrait que le programme soit parallélisable à 95% ! Ce qui est très, très difficile.
    Dans votre analogie, vous arrivez par une simplification abusive, à indiquer qu'on peut assimiler les frais fixes aux parties parallélisables d'un code. Cette analogie est abusive. Les frais fixes sont par définition indépendants du nombre de ventes donc ce sont les parties séquentielles d'un programme et non les parties parallèles.
    De plus, tout le monde sait que les frais fixes sont dits fixes mais qu'ils le resteront jusqu'à un certain point où l'on devra ajouter de nouveaux frais fixes. Comme exemple, le cas d'un entrepôt ; C'est un frais fixe pour stocker les produits à vendre, jusqu'au moment où il faut avoir un entrepôt plus grand car il y a besoin de stocker plus de produit. Là, on ajoute subitement un nouveau frais fixe qui va pénaliser le coût et qui "pèsera" de moins en moins lourd au fur et à mesure que le nombre de produits à vendre va encore augmenter jusqu'à un nouveau palier et ainsi de suite.

    Non, vraiment, je pense qu'il est certes, intéressant de s'intéresser au parallélisme, mais l'analogie est ici à revoir.

    Par contre, je trouve votre idée de rembourser de l'argent à nos premiers clients au fur et à mesure que le nombre de ventes augmente est une idée séduisante. Est-elle réellement applicable ? A voir. Mais il est intéressant d'y réfléchir.

    Cdlt,
    Serge NICOLLE
    E.RE.C.A - www.ereca-france.com

    RépondreSupprimer
    Réponses
    1. Bonjour M. Nicolle,

      Si je comprends bien votre commentaire, vos critiques sont doubles :
      1. L'analogie n'est pas correcte.
      2. Le raisonnement se fait sur des choses trop simplifiées pour être vraies (aussi bien du point de vue algorithmique qu'économique).

      Pour le second point, je plaide coupable. Il s'agit d'une simplification extrême du fonctionnement d'un code de calcul parallèle ou d'un business model d'entreprise. Mais ce n'est pas parce que le modèle est simpliste qu'il n'a aucune pertinence.

      Au contraire, c'est en simplifiant au maximum, en omettant les détails qui complexifient sans intérêt la description (mais sans toutefois être simpliste et omettre les "détails" fondamentaux) qu'on comprend l'essence des choses et que l'on peut raisonner efficacement. Mais on ne peut se passer, dans un second temps, de ces détails. Mon article n'en est pas à ce stade de réflexion avancée, mais bien à l'idée initiale.

      Pour le premier point, en revanche, je ne suis pas d'accord avec vous, mais c'est probablement dû au manque d'explicitation de l'analogie dont je parle, ainsi qu'à une simplification du discours sur la loi d'Amdahl qui se veut agréable à lire plutôt que précis.

      D'abord, l'analogie. Voici les analogues que j'identifie :
      * le temps de calcul et le coût de production
      * le nombre de processeurs et le nombre de ventes
      * le nombre de calculs réalisés et le chiffre d'affaires généré
      * la part de calculs parallélisables et la part des frais fixes (les deux sont respectivement indépendants du nombre de processeurs et du nombre de ventes)

      Vous pouvez trouver aberrant d'assimiler un processeur à une vente, et trouver plus naturel d'assimiler un processeur à un employé. Ceci explique sans doute votre remarque sur l'analogie abusive, car l'analogie à laquelle vous pensez n'est peut-être pas la mienne. Mais maintenant que l'analogie que je suggère est plus explicite, j'espère que vous conviendrez qu'elle est peut-être audacieuse, mais certainement pas abusive.

      Enfin, la loi d'Amdahl peut être interprétée de deux points de vues. Soit on raisonne sur un calcul donné à réaliser le plus rapidement précis, et la loi d'Amdahl limite l'accélération possible. C'est la notion de scalabilité forte. Soit on raisonne sur un temps disponible, et on raisonne sur le calcul le plus complexe réalisable par un grand nombre de processeurs. La taille du calcul n'est alors plus limité, mais l'accélération atteignable est simplement réduite. C'est la notion de scalabilité faible. On parle parfois de loi de Gustafson plutôt que de loi d'Amdahl, mais c'est fondamentalement la même loi.

      Au passage, j'ai moi-même développé un code de calcul parallélisé (simulation de gaz raréfié par une méthode de Monte Carlo) qui atteignait un speed-up de 20 avec 80 processeurs. Je sais donc de quoi je parle.

      Mon article expose effectivement la loi d'Amdahl mais raisonne plutôt en loi de Gustafson. L'explication est simplifiée à outrance, je vous l'accorde, mais j'ai préféré cet excès de simplification à une explication plus propres mais également plus indigeste.

      Je crois que c'est Henri Poincaré qui disait en substance que peu importe qu'une théorie soit juste ou fausse, pourvu qu'elle soit utile. D'après votre commentaire favorable sur l'idée de rembourser de l'argent aux premiers clients, cet objectif est atteint.

      Bien à vous,

      SG

      Supprimer

Bonjour,

je vous remercie de laisser un commentaire. Je vous invite à le signer de votre nom, ou éventuellement d'un pseudo, pour faciliter l'échange.

Bien à vous,

SG