Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Héberger un modèle ou le louer ?

Après cette leçon: Je peux décider si je fais tourner un modèle moi-même.

Leçon de 70 min6 commandesLab agent de code IA : utiliser opencode pour expliquer et corriger du code, et vérifier son travail

Posséder la machine ou payer à l’appel

Héberger un modèle, c’est le faire tourner sur des machines dont vous vous occupez. Le louer, c’est payer quelqu’un d’autre pour chaque appel. Chaque choix a un coût qui monte à sa façon.

C’est important, car le choix le moins cher change avec le nombre d’appels. Un calcul dit où passe la ligne, et une liste dit ce que le calcul a oublié.

À la fin de cette leçon

Remarque

Je peux décider si je fais tourner un modèle moi-même.

Mots clés

MotCe que ça veut dire
Hébergerfaire tourner le modèle sur ses propres machines
Louerpayer quelqu’un d’autre pour chaque appel
Seuil de rentabilitéle volume où deux coûts sont égaux
Capacitéles appels qu’une machine fait en un mois
Panneun moment où le service est arrêté

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Deux coûts qui montent différemment

La location coûte pareil à chaque appel : elle monte en ligne droite. L’hébergement est un coût par palier : chaque machine tient un nombre fixe d’appels, et vous payez une machine entière à la fois. Vous payez aussi les personnes qui s’en occupent.

Le seuil de rentabilité est le volume où les deux sont égaux. Au-dessus, héberger coûte moins.

Prix inventés, en euros par mois

Appels par moisLocationHébergement
300 0009001 700
1 000 0003 0003 100
1 100 0003 3003 100
2 000 0006 0004 500

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Ce que le calcul oublie

Un calcul de prix n’est pas une décision. Il oublie la panne quand la machine tombe la nuit. Il oublie le temps pour mettre le logiciel à jour et la machine qui reste sans rien faire. Il oublie aussi le coût d’une erreur sur des données privées.

Il oublie enfin l’autre côté : certaines données ne doivent pas quitter votre bâtiment, et alors louer est interdit à tout prix.

Une erreur courante

Attention

Beaucoup pensent qu’une fois la machine achetée, chaque appel est gratuit. La machine, les personnes et les pannes se paient encore chaque mois. Calculez le seuil avec les paliers et l’équipe, puis listez ce qui reste oublié.

Écrire l’assistant du modèle, partie 1

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const base = process.env.AI_URL || \"http://ai:4000\";' '// Les jetons d’une réponse, ou null si elle n’en donne pas.' 'function compter(donnees, nom) {' '  return donnees.usage && typeof donnees.usage[nom] === \"number\" ? donnees.usage[nom] : null;' '}' > model.js"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Écrire l’assistant du modèle, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function demander(messages, echantillon, max) {' '  try {' '    const res = await fetch(base + \"/v1/chat/completions\", {' '      method: \"POST\",' '      headers: { \"content-type\": \"application/json\", authorization: \"Bearer lab\" },' '      body: JSON.stringify({ model: \"lab\", messages: messages, max_tokens: max || 100 }),' '      signal: AbortSignal.timeout(30000),' '    });' '    if (res.ok === false) throw new Error(\"statut \" + res.status);' '    const d = await res.json();' '    return { texte: d.choices[0].message.content, entree: compter(d, \"prompt_tokens\"), sortie: compter(d, \"completion_tokens\"), enregistre: false };' '  } catch (erreur) {' '    console.log(\"Échantillon enregistré : aucun modèle n’a répondu (\" + erreur.message + \").\");' '    return { texte: echantillon, entree: null, sortie: null, enregistre: true };' '  }' '}' 'module.exports = { demander };' >> model.js"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Écrire le calcul de coût, partie 1

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { demander } = require(\"./model\");' 'const prix = 3;' 'const machine = 700;' 'const capacite = 400000;' 'const equipe = 1000;' 'function louer(appels) {' '  return Math.floor(appels * prix / 1000);' '}' 'function heberger(appels) {' '  return Math.ceil(appels / capacite) * machine + equipe;' '}' > heberger.js"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Écrire le calcul de coût, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  console.log(\"appels par mois | location | hébergement | moins cher\");' '  for (const appels of [300000, 600000, 1000000, 1100000, 2000000]) {' '    const choix = heberger(appels) < louer(appels) ? \"héberger\" : \"louer\";' '    console.log(appels + \" | \" + louer(appels) + \" | \" + heberger(appels) + \" | \" + choix);' '  }' '  console.log(\"seuil simple : \" + Math.ceil((machine + equipe) * 1000 / prix) + \" appels\");' >> heberger.js"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Écrire le calcul de coût, partie 3

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  const q = \"En une phrase courte, cite un coût de l’hébergement d’un modèle que le prix par appel laisse de côté.\";' '  const echantillon = \"Quelqu’un doit être de garde quand la machine tombe en panne, et son temps n’est pas dans le prix par appel.\";' '  const reponse = await demander([{ role: \"user\", content: q }], echantillon, 60);' '  console.log(\"le modèle dit : \" + reponse.texte);' '}' 'main();' >> heberger.js"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Lancer le calcul de coût

Commande
docker exec -w /home/node/project agent node heberger.js

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Ce que le Run affiche

LigneCe qu’elle montre
300000 | 900 | 1700 | louerPetit volume : louer gagne
1000000 | 3000 | 3100 | louerLa troisième machine pèse : l’hébergement monte par palier
1100000 | 3300 | 3100 | hébergerMaintenant héberger gagne
seuil simple : 566667 appelsTrop tôt : il ignore les paliers
le modèle dit : ...Une phrase. Les mots changent à chaque Run

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

À propos de ce labo et de sa source: Lab agent de code IA : utiliser opencode pour expliquer et corriger du code, et vérifier son travail

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.