Repository Public
1import type { en } from "./en";23export const fr: typeof en = {4 langName: "Français",5 otherLang: "English",6 skip: "Aller au contenu",7 nav: {8 infrastructure: "Infrastructure",9 live: "En direct",10 nodes: "Nœuds",11 architecture: "Architecture",12 research: "Recherche",13 benchmarks: "Bancs d'essai",14 gallery: "Galerie",15 access: "Accès",16 menu: "Menu",17 close: "Fermer",18 home: "MacLustr — accueil",19 },20 meta: {21 siteName: "MacLustr — infrastructure de recherche",22 home: {23 title: "MacLustr — un cluster de recherche Apple Silicon personnel",24 description:25 "MacLustr est un cluster de calcul Apple Silicon, propriété personnelle, utilisé pour la recherche en modèles de langue locaux, en apprentissage automatique et en calcul scientifique. Documenté machine par machine, avec de vraies photographies.",26 },27 live: {28 title: "Télémétrie en direct",29 description: "Utilisation en direct du cluster MacLustr, machine par machine : charge du processeur, de la mémoire et du processeur graphique relevée environ toutes les 20 secondes par l'agent de surveillance du cluster, avec une journée d'historique.",30 },31 nodes: {32 title: "Inventaire des nœuds",33 description: "Chaque machine du cluster MacLustr, une fiche par machine : puce, cœurs, mémoire unifiée, stockage, rôle et date de vérification de la fiche.",34 },35 architecture: {36 title: "Architecture technique",37 description: "Comment le cluster MacLustr est câblé et exploité : mémoire unifiée, réseau, stockage, orchestration, service de modèles, et ce qui est distribué ou non.",38 },39 research: {40 title: "Journal de recherche",41 description: "Les recherches menées sur le cluster MacLustr : working papers terminés, expériences en cours et protocoles proposés, avec leurs références.",42 },43 benchmarks: {44 title: "Bancs d'essai et méthodologie",45 description: "Le protocole de mesure des bancs d'essai MacLustr et les champs que chaque observation publiée doit porter. Les résultats ne sont publiés qu'une fois mesurés.",46 },47 gallery: {48 title: "Photographies de l'infrastructure",49 description: "Photographies non retouchées des étagères, des machines, du câblage et du refroidissement de MacLustr.",50 },51 access: {52 title: "Collaboration de recherche et accès",53 description: "Comment proposer une collaboration de recherche ou demander un accès discrétionnaire au cluster MacLustr. Les demandes sont étudiées une à une ; l'accès n'est pas garanti.",54 },55 },56 common: {57 notDocumented: "Non encore documenté",58 verified: "Vérifié",59 source: "Source",60 cores: "cœurs",61 gb: "Go",62 tb: "To",63 viewAll: "Tout voir",64 back: "Retour à l'inventaire",65 lifecycle: {66 active: "Actif",67 offline: "Hors ligne",68 maintenance: "Maintenance",69 planned: "Prévu",70 retired: "Retiré",71 unverified: "Non vérifié",72 },73 roles: {74 gateway: "Passerelle et orchestration",75 services: "Hébergement de services",76 "research-compute": "Calcul de recherche",77 data: "Données de recherche",78 monitoring: "Agent de supervision",79 worker: "Nœud de calcul",80 portable: "Nœud portable",81 },82 families: { "Mac Studio": "Mac Studio", "Mac mini": "Mac mini", "MacBook Pro": "MacBook Pro", "MacBook Air": "MacBook Air", Other: "Autre" },83 status: { completed: "Terminé", ongoing: "En cours", proposed: "Proposé" },84 kinds: { "working-paper": "Working paper", experiment: "Expérience", protocol: "Protocole" },85 themes: {86 "local-llm": "Modèles de langue locaux",87 "apple-silicon": "Apple Silicon et MLX",88 "distributed-computing": "Charges distribuées",89 "scientific-computing": "Calcul scientifique",90 "machine-learning": "Apprentissage automatique",91 benchmarking: "Bancs d'essai reproductibles",92 agentic: "Recherche agentique",93 },94 photoOf: "Photographie",95 takenOn: "Prise le",96 },97 home: {98 eyebrow: "Infrastructure de recherche indépendante",99 title: "La recherche aux limites d'Apple Silicon.",100 lede: "Un cluster de recherche Apple Silicon personnel, construit pour explorer ce que le calcul distribué rend possible.",101 support:102 "MacLustr est une infrastructure de calcul distribué en évolution, au service d'expériences sur les modèles de langue locaux, l'apprentissage automatique et la recherche computationnelle.",103 ctaExplore: "Explorer l'infrastructure",104 ctaAccess: "Collaboration de recherche",105 heroCaption: "Étagère A, photographiée le 7 novembre 2026",106 metrics: {107 heading: "Mesuré, pas estimé",108 note: "Les totaux sont calculés à partir des fiches de nœuds ci-dessous. Les nombres de cœurs et la mémoire sont des caractéristiques matérielles lues sur chaque machine ; ce ne sont pas des résultats de performance.",109 nodes: "machines documentées",110 nodesSub: (active: number) => `${active} ont répondu au dernier relevé`,111 memory: "de mémoire unifiée",112 memorySub: "somme sur des machines distinctes, pas un espace partagé",113 cpu: "cœurs CPU",114 gpu: "cœurs GPU",115 gpuPartial: "Total des cœurs GPU non affiché : une fiche est incomplète",116 network: "lien filaire par machine",117 networkSub: "débit négocié lu sur chaque nœud",118 asOf: "Inventaire vérifié le",119 },120 real: {121 eyebrow: "Fait de vraies machines",122 title: "Trois étagères d'acier, une machine à la fois.",123 body: [124 "J'ai construit MacLustr progressivement, à partir de quelques Mac Studio, en ajoutant des Mac mini et des portables à mesure que les besoins de recherche grandissaient. Il tient sur des étagères industrielles ordinaires, pas dans un centre de données.",125 "Rien sur ce site n'est un rendu ni une mise en scène. Les photographies montrent le cluster tel qu'il fonctionne : des machines étiquetées, des câbles attachés, des ventilateurs qui poussent l'air à travers les tablettes, et des portables qui travaillent écran ouvert.",126 ],127 link: "Voir toutes les photographies",128 },129 topology: {130 eyebrow: "Topologie",131 title: "Comment les machines sont reliées",132 intro: "Une carte simplifiée. Elle regroupe les machines par type et montre des rôles, pas des adresses ; la disposition interne est volontairement omise.",133 hint: "Sélectionnez un bloc pour lire ce qu'il fait.",134 link: "Lire l'architecture technique",135 },136 families: {137 eyebrow: "Matériel",138 title: "Quatre types de machines",139 intro: "Chaque famille mène à ses fiches de nœuds individuelles.",140 memory: "mémoire unifiée",141 link: "Parcourir l'inventaire",142 units: (n: number) => (n === 1 ? "1 machine" : `${n} machines`),143 },144 themes: {145 eyebrow: "Thèmes de recherche",146 title: "À quoi sert le cluster",147 items: [148 { key: "local-llm", state: "active", title: "Modèles de langue locaux", body: "Exécuter et étudier des modèles ouverts sur des machines que je contrôle : expériences d'architecture sur de petits modèles, et inférence sur de plus grands dans la limite de la mémoire d'un seul nœud." },149 { key: "apple-silicon", state: "active", title: "Apple Silicon et MLX", body: "Mesurer ce que la mémoire unifiée et le GPU Apple apportent au calcul numérique, avec MLX pour les modèles et Metal pour des noyaux sur mesure." },150 { key: "distributed-computing", state: "active", title: "Charges distribuées", body: "Des méthodes statistiques conçues pour de nombreuses machines et peu de tours de communication, testées sur de vrais hôtes plutôt que simulées." },151 { key: "scientific-computing", state: "active", title: "Calcul scientifique", body: "De grands calculs par lots en économétrie et en analyse de données, découpés en tâches indépendantes et répartis au prorata des cœurs de chaque nœud." },152 { key: "agentic", state: "active", title: "Recherche agentique", body: "Des agents de programmation autonomes exploitent le cluster par une passerelle unique, et sont eux-mêmes un objet d'étude." },153 { key: "benchmarking", state: "planned", title: "Bancs d'essai reproductibles", body: "Un protocole fixe pour comparer les générations de puces sur des modèles et des invites identiques. Le protocole est publié ; les mesures ne le sont pas encore." },154 ],155 active: "Actif",156 planned: "Prévu",157 },158 experiments: {159 eyebrow: "Travaux choisis",160 title: "Des expériences menées ici",161 intro: "Chaque entrée précise comment le cluster a réellement servi, y compris lorsqu'il s'agissait d'une seule machine.",162 link: "Ouvrir le journal de recherche",163 benchLink: "Méthodologie des bancs d'essai",164 clusterUse: "Usage du cluster",165 },166 gallery: { eyebrow: "En coulisses", title: "Journal photographique", link: "Ouvrir la galerie" },167 access: {168 eyebrow: "Collaboration",169 title: "Vous souhaitez utiliser MacLustr pour la recherche ?",170 body: "MacLustr sert d'abord mes propres recherches. Je suis ouvert à discuter de collaborations et, lorsque la capacité et l'adéquation du projet le permettent, d'un accès pour des chercheurs externes. Les demandes sont étudiées une à une ; l'accès n'est pas garanti.",171 link: "Comment proposer un projet",172 },173 },174 topology: {175 blocks: {176 studio: { title: "Nœuds Mac Studio", body: "Les plus grosses machines. Elles portent les calculs de recherche gourmands en mémoire, les données de recherche et la plupart des services permanents." },177 mini: { title: "Nœuds Mac mini", body: "Des machines plus petites, utilisées comme nœuds de calcul pour les tâches par lots et comme hôtes de services légers." },178 laptop: { title: "Nœuds portables", body: "Des MacBook Pro et des MacBook Air fonctionnent écran ouvert, en Ethernet filaire. Ils participent aux calculs par lots comme n'importe quel nœud." },179 switch: { title: "Ethernet filaire", body: "Chaque machine déclare un lien négocié à 1 GbE. C'est le débit mesuré ; aucune interconnexion plus rapide n'est revendiquée." },180 gateway: { title: "Nœud passerelle", body: "Un Mac Studio est le point d'entrée unique. Il porte le service git privé et l'orchestrateur qui place et répare les charges. Il n'exécute lui-même aucun calcul de recherche." },181 storage: { title: "Stockage en réseau", body: "Deux unités de stockage en réseau conservent les sauvegardes et les fichiers partagés. Les données de travail restent sur le SSD interne de chaque nœud." },182 external: { title: "Passerelle publique (externe)", body: "Un serveur bare-metal hébergé, hors du cluster, termine le TLS des sites publics et relaie les requêtes par un tunnel chiffré. Ce n'est pas un nœud de calcul." },183 internet: { title: "Internet", body: "Les visiteurs atteignent les sites publiés uniquement par la passerelle publique. Aucun nœud n'est exposé directement." },184 },185 legend: { lan: "Réseau filaire local", tunnel: "Tunnel chiffré", boundary: "Périmètre du cluster" },186 count: (n: number) => `${n} machines`,187 alt: "Schéma : les nœuds Mac Studio, Mac mini et portables sont reliés à l'Ethernet filaire, avec un nœud passerelle et le stockage en réseau ; un tunnel chiffré relie le cluster à une passerelle publique externe, tournée vers Internet.",188 },189 nodes: {190 eyebrow: "Inventaire",191 title: "Chaque machine, une fiche",192 intro:193 "Chaque fiche ci-dessous décrit un ordinateur physique. Les caractéristiques ont été lues sur la machine elle-même ; ce qui n'est pas encore relevé est indiqué comme tel plutôt que complété.",194 stats: { machines: "machines", memory: "mémoire unifiée", cpu: "cœurs CPU", verified: "dernière vérification" },195 filters: {196 heading: "Filtrer l'inventaire",197 search: "Chercher par nom ou par puce",198 family: "Famille",199 chip: "Puce",200 memory: "Mémoire minimale",201 role: "Rôle",202 lifecycle: "État",203 rack: "Étagère",204 any: "Tous",205 rackNone: "Non encore documenté",206 rackLabel: (r: string) => `Étagère ${r}`,207 reset: "Réinitialiser les filtres",208 atLeast: (n: number) => `${n} Go ou plus`,209 },210 view: { label: "Affichage", grid: "Grille", table: "Tableau" },211 sort: { label: "Trier par", number: "Numéro de nœud", name: "Nom", family: "Famille", chip: "Puce", cpu: "Cœurs CPU", gpu: "Cœurs GPU", memory: "Mémoire", storage: "Stockage", asc: "croissant", desc: "décroissant" },212 results: (n: number, total: number) => `${n} machines sur ${total}`,213 empty: "Aucune machine ne correspond à ces filtres.",214 cols: { node: "Nœud", family: "Famille", chip: "Puce", cpu: "CPU", gpu: "GPU", memory: "Mémoire", storage: "Stockage", role: "Rôle", status: "État", verified: "Vérifié" },215 statusNote: "« Actif » signifie que la machine a répondu au relevé à la date de vérification. Le point à côté de chaque nom est distinct : c'est le relevé en direct de l'agent de surveillance.",216 timeline: { eyebrow: "Historique", title: "Comment le cluster a évolué", intro: "Des événements datés, tirés de mes propres registres d'exploitation." },217 planned: {218 eyebrow: "Matériel prévu",219 title: "Compté dans aucun total",220 empty: "Aucun matériel prévu ou commandé n'est documenté pour l'instant. Le cas échéant, il sera listé ici, séparément de l'inventaire.",221 },222 detail: {223 eyebrow: "Fiche de nœud",224 specs: "Matériel",225 family: "Famille",226 model: "Identifiant de modèle",227 chip: "Puce",228 cpu: "Cœurs CPU",229 layout: "Répartition des cœurs",230 gpu: "Cœurs GPU",231 memory: "Mémoire unifiée",232 storage: "Stockage interne",233 network: "Lien réseau",234 function: "Fonction de recherche",235 placement: "Emplacement",236 rack: "Étagère",237 shelf: "Tablette",238 added: "Ajouté au cluster",239 provenance: "Provenance",240 status: "État à la date de vérification",241 caveats: "Réserves",242 caveatItems: [243 "Les nombres de cœurs et la mémoire sont des caractéristiques, pas des mesures de performance.",244 "Le stockage est la taille du volume interne déclarée par la machine, en gigaoctets décimaux.",245 "L'état de cette fiche reflète un seul relevé. Les relevés en direct ci-dessus sont distincts et courants.",246 ],247 layoutLegend: "S = cœurs « super », P = cœurs performance, E = cœurs efficience, selon les noms donnés par le système.",248 photo: "Photographie",249 photoNone: "Cette machine n'a pas encore été associée à une position sur les photographies.",250 photoNote: "La machine se trouve sur cette étagère ; la photographie montre l'étagère entière.",251 history: "Historique des charges",252 historyNone: "Aucun historique public des charges n'est consigné pour ce nœud.",253 benchmarks: "Bancs d'essai",254 benchmarksNone: "Aucun banc d'essai n'a été publié pour ce nœud.",255 prev: "Nœud précédent",256 next: "Nœud suivant",257 },258 },259 architecture: {260 eyebrow: "Architecture",261 title: "Un cluster d'ordinateurs distincts",262 intro:263 "MacLustr est un ensemble de machines Apple Silicon indépendantes sur un même réseau filaire, coordonnées par logiciel. Cette page décrit ce que cela permet, et ce que cela ne permet pas.",264 diagramTitle: "Disposition logique",265 diagramNote: "Le schéma est volontairement abstrait : il montre des rôles et des périmètres, pas des adresses ni le câblage physique.",266 sections: [267 {268 id: "unified-memory",269 title: "La mémoire unifiée, une machine à la fois",270 body: [271 "Sur Apple Silicon, le CPU et le GPU partagent un même espace mémoire. Un modèle qui tient dans la mémoire unifiée d'un nœud est chargé une seule fois et utilisé par le GPU sans copie vers une carte graphique séparée. C'est pourquoi un Mac Studio de 96 Go peut accueillir des modèles qui ne tiendraient pas sur la plupart des GPU grand public.",272 "Cet espace s'arrête aux limites de la machine. Relier des ordinateurs par Ethernet ne fusionne pas leur mémoire unifiée en un espace d'adressage GPU partagé, quel que soit le débit du lien. Le total de mémoire affiché sur ce site est une somme sur des machines distinctes : le plus grand modèle que le cluster peut charger est borné par son plus gros nœud, pas par le total.",273 ],274 },275 {276 id: "workloads",277 title: "Trois types de charges",278 body: [279 "Indépendantes : l'essentiel du travail s'exécute sur un seul nœud du début à la fin, qu'il s'agisse d'entraîner un petit modèle, d'estimer un modèle statistique ou de servir une application. Le cluster agit alors comme de nombreux ordinateurs utilisables en même temps.",280 "Réparties entre les nœuds : un grand lot est découpé en tâches indépendantes, distribuées au prorata du nombre de cœurs de chaque nœud. Les nœuds ne se parlent pas pendant l'exécution ; les résultats sont rassemblés à la fin. La plupart des calculs multi-nœuds sont de ce type.",281 "Réellement distribuées : dans quelques expériences, les nœuds échangent des messages pendant le calcul, par exemple pour une estimation du maximum de vraisemblance distribuée en un petit nombre de tours de communication par TCP. Ce sont des protocoles de recherche précis, pas une capacité générale.",282 "Aucun modèle n'a été réparti entre plusieurs machines ici. Je ne revendique ni découpage de modèle ni inférence distribuée, et l'entraînement au sens usuel s'est limité à des modèles qui tiennent sur un seul nœud.",283 ],284 },285 {286 id: "network",287 title: "Réseau",288 body: [289 "Chaque machine ayant déclaré un lien filaire négocie à 1 GbE (1000BASE-T). J'indique le débit mesuré plutôt que la capacité nominale d'un commutateur ou d'un adaptateur. Aucune interconnexion plus rapide n'est en service sur les nœuds, et aucune n'est revendiquée.",290 "À 1 GbE, le réseau est le goulot d'étranglement de tout ce qui déplace des tenseurs entre machines : un jeton généré coûte peu à transmettre, mais pas des activations ni les poids d'un modèle. C'est la raison principale pour laquelle le cluster privilégie les tâches indépendantes et réparties.",291 ],292 },293 {294 id: "storage",295 title: "Stockage",296 body: [297 "Les données de travail résident sur le SSD interne de chaque nœud, de 245 Go à 995 Go par machine d'après les machines elles-mêmes. Les grands jeux de données sont conservés sur le nœud qui les traite, pour éviter de les lire par le réseau.",298 "Deux unités de stockage en réseau assurent les sauvegardes et les fichiers partagés. Elles ne servent pas de système de fichiers parallèle.",299 ],300 },301 {302 id: "orchestration",303 title: "Orchestration et plan de contrôle",304 body: [305 "Un Mac Studio sert de passerelle. Il héberge un service git privé et un orchestrateur que j'ai écrit : celui-ci relève la mémoire libre, la charge, le disque et les environnements installés de chaque nœud, note les candidats, place la charge sur le meilleur, vérifie sa santé et consigne où elle tourne.",306 "Une boucle de réparation s'exécute toutes les quelques minutes et relance ce qui manque après une interruption. Les machines sont configurées pour ouvrir leur session et reprendre seules après une coupure de courant ; cela a été testé involontairement en septembre 2026, lorsque seize machines ont redémarré ensemble et sont revenues sans intervention.",307 "Ceci décrit la construction du système. Ce n'est pas un engagement de disponibilité : le cluster est une installation de recherche qui peut être arrêtée, recâblée ou réaffectée à tout moment.",308 ],309 },310 {311 id: "serving",312 title: "Service de modèles",313 body: [314 "Les modèles ouverts sont servis avec MLX sur un seul nœud, lancés pour la durée d'une expérience. Un point d'accès permanent, compatible OpenAI, qui servait plusieurs modèles a existé auparavant et a été démantelé en juin 2026 ; il figure dans l'historique, pas parmi les services actuels.",315 "Aucun point d'accès d'inférence public n'est offert, et aucune adresse de nœud n'est joignable depuis Internet.",316 ],317 },318 {319 id: "external",320 title: "Périmètre externe",321 body: [322 "Un serveur bare-metal hébergé se trouve hors du cluster. Il termine le TLS des sites publics et relaie les requêtes vers le bon nœud par un tunnel chiffré. Il n'effectue aucun calcul de recherche et n'est pas compté dans l'inventaire.",323 "Le site que vous lisez est servi ainsi : par un nœud du cluster, derrière cette passerelle.",324 ],325 },326 {327 id: "power-cooling",328 title: "Alimentation et refroidissement",329 body: [330 "Les machines reposent sur des étagères d'acier ouvertes, à température ambiante, avec des ventilateurs qui font monter l'air à travers les tablettes, comme le montrent les photographies. Il n'y a pas d'installation de refroidissement dédiée.",331 "La puissance consommée, les températures et l'énergie par tâche n'ont pas encore été mesurées de façon systématique. D'ici là, ce site ne publie aucun chiffre de puissance ni d'efficacité.",332 ],333 },334 ],335 diagram: {336 nodes: "Nœuds de calcul",337 nodesSub: "machines indépendantes, chacune avec sa mémoire unifiée",338 gateway: "Nœud passerelle",339 gatewaySub: "service git · orchestrateur · boucle de réparation",340 monitor: "Agent de supervision",341 monitorSub: "sondes en lecture seule",342 storage: "Stockage en réseau",343 storageSub: "sauvegardes · fichiers partagés",344 switch: "Ethernet filaire · 1 GbE mesuré",345 serving: "Service de modèles",346 servingSub: "MLX, par expérience, sur un nœud",347 external: "Passerelle publique",348 externalSub: "TLS · proxy inverse · hors du cluster",349 internet: "Internet",350 tunnel: "tunnel chiffré",351 boundary: "Périmètre du cluster",352 alt: "Schéma en couches. À l'intérieur du périmètre du cluster : les nœuds de calcul, un nœud passerelle avec l'orchestrateur, un agent de supervision et le stockage en réseau sont tous reliés à l'Ethernet filaire mesuré à 1 GbE ; le service de modèles s'exécute sur un seul nœud. À l'extérieur, une passerelle publique est reliée au cluster par un tunnel chiffré et tournée vers Internet.",353 },354 },355 research: {356 eyebrow: "Journal de recherche",357 title: "Ce qui est fait, ce qui est en cours, ce qui est proposé",358 intro:359 "Les entrées sont listées avec leur état. Les travaux terminés renvoient à leur manuscrit ; les travaux en cours ou proposés n'avancent aucun résultat. Pour chaque entrée, j'indique comment le cluster a servi.",360 filterAll: "Tous",361 clusterUse: "Usage du cluster",362 reference: "Référence",363 noReference: "Pas encore de manuscrit public.",364 read: "Lire l'article",365 stack: {366 title: "Pile logicielle",367 intro: "Ce avec quoi les expériences ci-dessus sont construites.",368 items: [369 { k: "Modèles", v: "MLX et mlx-lm pour les modèles de langue sur GPU Apple ; PyTorch pour l'entraînement classique" },370 { k: "Calcul numérique", v: "C++20 avec Metal pour des noyaux GPU sur mesure ; pile scientifique Python pour l'analyse" },371 { k: "Données", v: "Fichiers en colonnes sur SSD local, PostgreSQL sur le nœud qui en a besoin" },372 { k: "Exploitation", v: "Un orchestrateur maison, un gestionnaire de processus par nœud, git comme source de vérité" },373 ],374 },375 ownership: {376 title: "Propriété et affiliation",377 body: "MacLustr est une propriété personnelle, financée et exploitée à titre personnel. Il n'appartient à aucune université ni autre institution, et n'est ni financé ni cautionné par l'une d'elles. Les articles listés ici portent leurs propres mentions d'auteur et de collection.",378 },379 },380 benchmarks: {381 eyebrow: "Bancs d'essai",382 title: "Des preuves reproductibles",383 intro: "Un banc d'essai n'est utile que si quelqu'un d'autre peut le refaire. Cette page expose le protocole ; les résultats n'y sont ajoutés qu'une fois mesurés selon celui-ci.",384 forthcoming: {385 label: "Résultats à venir",386 title: "Aucune observation de banc d'essai n'est encore publiée.",387 body: "Je préfère un tableau vide à un tableau approximatif. Les graphiques de cette page sont construits et testés sur des données d'exemple en développement, et restent masqués tant qu'il n'existe pas de mesures réelles.",388 },389 resultsTitle: "Observations publiées",390 plannedTitle: "Mesures prévues",391 plannedItems: [392 "Vitesse de génération en jetons par seconde",393 "Délai avant le premier jeton",394 "Débit sous requêtes concurrentes",395 "Mémoire maximale et pression mémoire",396 "Puissance consommée et énergie par tâche, une fois un wattmètre en place",397 "Débit réseau entre nœuds",398 "Temps d'exécution des charges par lots",399 ],400 protocolTitle: "Ce que chaque observation doit porter",401 protocolIntro: "Le modèle de données rejette toute observation à laquelle il manque l'un de ces champs.",402 fields: [403 { k: "Matériel", v: "Identifiant de la fiche de nœud dans l'inventaire, donc puce, mémoire et répartition des cœurs" },404 { k: "Modèle", v: "Identifiant du modèle et version ou révision exacte" },405 { k: "Quantification", v: "Nombre de bits et schéma" },406 { k: "Environnement", v: "Environnement d'exécution et version, par exemple la version de MLX" },407 { k: "Longueurs", v: "Longueur de l'invite et de la sortie, en jetons" },408 { k: "Concurrence", v: "Nombre de requêtes simultanées" },409 { k: "Méthode", v: "Comment la valeur a été mesurée, y compris l'échauffement et ce qui tournait par ailleurs" },410 { k: "Date", v: "Jour de la mesure" },411 { k: "Répétitions", v: "Nombre d'exécutions" },412 { k: "Incertitude", v: "Dispersion entre les exécutions" },413 { k: "Données brutes", v: "Référence aux enregistrements bruts" },414 ],415 limitsTitle: "Limites de la comparaison",416 limits: [417 "Deux quantifications d'un même modèle sont deux modèles différents. Elles ne sont jamais placées sur un même axe sans le dire.",418 "Un nœud qui héberge aussi des services n'est pas un banc de test propre. Les mesures sont prises machine au repos, ou la charge est indiquée.",419 "Portables et ordinateurs de bureau ne brident pas de la même façon sous charge soutenue ; des essais courts avantagent donc les portables.",420 "Des résultats obtenus avec des versions différentes de l'environnement d'exécution ne sont pas comparables, sauf si la version est la variable étudiée.",421 "Des caractéristiques comme le nombre de cœurs ne sont pas des résultats. L'inventaire liste les premières ; seule cette page listera les seconds.",422 ],423 elsewhere: {424 title: "Des mesures déjà présentes dans des articles",425 body: "Certains working papers du journal de recherche contiennent leurs propres résultats mesurés, avec leurs propres méthodes, par exemple des seuils de rentabilité du GPU face au CPU pour des noyaux numériques. Ils sont cités là-bas plutôt que repris ici, car ils n'ont pas été produits selon ce protocole.",426 link: "Ouvrir le journal de recherche",427 },428 chartAlt: (metric: string) => `Diagramme à barres : ${metric} par nœud. Les mêmes valeurs figurent dans le tableau qui suit.`,429 table: { node: "Nœud", model: "Modèle", quant: "Quantification", runtime: "Environnement", value: "Valeur", runs: "Exécutions", date: "Date" },430 },431 gallery: {432 eyebrow: "Galerie",433 title: "L'infrastructure telle qu'elle est",434 intro:435 "Quatre photographies du cluster, que j'ai prises moi-même. Elles sont recadrées pour la mise en page seulement : aucune retouche, aucune image générée. Elles montrent trois étagères un même jour et ne constituent pas un recensement ; c'est l'inventaire, non les images, qui fait foi pour le nombre de machines.",436 open: "Agrandir la photographie",437 close: "Fermer",438 prev: "Photographie précédente",439 next: "Photographie suivante",440 counter: (i: number, n: number) => `${i} sur ${n}`,441 note: "Les données de localisation et les autres métadonnées intégrées ont été retirées des fichiers publiés.",442 },443 access: {444 eyebrow: "Accès",445 title: "Vous souhaitez utiliser MacLustr pour la recherche ?",446 lede: "MacLustr sert d'abord mes propres recherches. Je suis ouvert à discuter de collaborations et, lorsque la capacité et l'adéquation du projet le permettent, d'un accès pour des chercheurs externes. Les demandes sont étudiées une à une ; l'accès n'est pas garanti.",447 kindsTitle: "Sur quoi une demande peut porter",448 kinds: [449 { t: "Expériences de reproductibilité", d: "Refaire un résultat publié sur un matériel différent." },450 { t: "Inférence de modèles de langue", d: "Des modèles ouverts qui tiennent dans la mémoire d'un seul nœud." },451 { t: "Comparaison de matériel", d: "La même charge à travers les générations de puces, du M1 Max au M6." },452 { t: "Calcul distribué", d: "Des méthodes qui exigent de nombreux hôtes réels plutôt qu'une simulation." },453 { t: "Collaboration universitaire", d: "Un projet commun où le cluster est un ingrédient parmi d'autres." },454 ],455 termsTitle: "Avant tout accès",456 terms: [457 "La gouvernance des données, la sécurité, les licences et le calendrier sont discutés et convenus au préalable.",458 "Il n'y a ni compte, ni libre-service, ni paiement. Ce n'est pas un service commercial.",459 "La capacité est limitée et partagée avec mes propres travaux ; un projet peut être refusé ou reporté.",460 "La disponibilité n'est jamais garantie : le cluster peut être arrêté ou reconfiguré à tout moment.",461 ],462 contactTitle: "Contact",463 contactBody: "Le plus simple est de m'écrire directement.",464 form: {465 title: "Formulaire de demande",466 modeMail: "Ce formulaire n'envoie rien depuis ce site. Il prépare un courriel dans votre propre application de messagerie, adressé à moi, que vous pouvez relire et envoyer vous-même.",467 modeServer: "Ce formulaire m'envoie votre demande par courriel. Rien n'est conservé sur ce site.",468 name: "Nom",469 affiliation: "Affiliation institutionnelle",470 email: "Courriel",471 projectTitle: "Titre du projet",472 researchQuestion: "Question de recherche",473 researchQuestionHint: "Ce que vous cherchez à établir, en quelques phrases.",474 compute: "Besoins de calcul",475 computeHint: "Modèle, mémoire, environnement d'exécution, durée prévue.",476 dates: "Dates proposées",477 dataConstraints: "Contraintes de confidentialité et de données",478 dataConstraintsHint: "N'incluez pas de données confidentielles ou personnelles dans cette demande.",479 expectedOutputs: "Résultats attendus",480 optional: "facultatif",481 website: "Laissez ce champ vide",482 submitMail: "Préparer le courriel",483 submitServer: "Envoyer la demande",484 sending: "Envoi…",485 errors: {486 summary: "Veuillez corriger les champs signalés.",487 name: "Indiquez votre nom.",488 email: "Indiquez une adresse de courriel valide.",489 projectTitle: "Indiquez un titre de projet.",490 researchQuestion: "Décrivez la question de recherche en 20 caractères au moins.",491 compute: "Décrivez le calcul dont vous avez besoin.",492 server: "La demande n'a pas pu être envoyée. Écrivez-moi plutôt par courriel.",493 rate: "Trop de demandes. Réessayez plus tard ou écrivez-moi par courriel.",494 },495 mailReady: "Votre application de messagerie devrait afficher un message préparé. Il n'a pas été envoyé : relisez-le et envoyez-le depuis celle-ci.",496 mailFallback: "Si rien ne s'est ouvert, copiez le texte ci-dessous dans un courriel adressé à",497 sent: "Votre demande a été envoyée par courriel. Je réponds à chaque demande, mais pas toujours rapidement.",498 subject: (title: string) => `Demande de recherche MacLustr — ${title}`,499 },500 privacy: {501 title: "Confidentialité",502 body: "Ce site ne dépose aucun témoin de suivi et n'exécute aucun outil d'analyse d'audience. Les demandes me parviennent par courriel uniquement et ne sont conservées que le temps de l'échange.",503 },504 },505 live: {506 eyebrow: "Télémétrie en direct",507 title: "Le cluster, en ce moment",508 intro: "Utilisation de chaque machine, relevée environ toutes les 20 secondes par l'agent de surveillance du cluster. Ce sont des relevés d'exploitation, pas des résultats de bancs d'essai.",509 badge: "En direct",510 updated: (s: number) => (s < 3 ? "mis à jour à l'instant" : `mis à jour il y a ${s} s`),511 loading: "Lecture du cluster…",512 pill: (online: number, total: number, cpu: string) => `${online}/${total} en ligne · CPU ${cpu}`,513 unavailable: {514 short: "Télémétrie indisponible",515 title: "La télémétrie en direct est indisponible pour le moment",516 body: "L'agent de surveillance n'a pas répondu. L'inventaire reste valide, et les relevés en direct reviennent d'eux-mêmes dès que l'agent répond de nouveau.",517 },518 kpi: {519 online: "Machines en ligne",520 onlineSub: (off: number) => (off === 0 ? "toutes les machines ont répondu" : off === 1 ? "1 machine ne répond pas" : `${off} machines ne répondent pas`),521 cpu: "CPU utilisé",522 cpuSub: (cores: number) => `pondéré sur ${cores} cœurs`,523 memory: "Mémoire utilisée",524 memorySub: (used: string, total: string) => `${used} Go sur ${total}`,525 gpu: "GPU utilisé",526 gpuSub: "pondéré par les cœurs GPU",527 network: "Réseau, entrant",528 networkSub: (out: string) => `${out} sortant, toutes machines`,529 },530 chart: {531 title: "Utilisation du cluster",532 unit: "Pourcentage utilisé, pondéré par la capacité de chaque machine",533 window: "Période",534 w1h: "1 heure",535 w6h: "6 heures",536 w24h: "24 heures",537 cpu: "CPU",538 memory: "Mémoire",539 gpu: "GPU",540 empty: "Aucun historique n'est enregistré pour cette période.",541 loading: "Chargement de l'historique…",542 table: "Afficher les données en tableau",543 time: "Heure",544 alt: (range: string) => `Graphique linéaire de l'utilisation du CPU, de la mémoire et du GPU, en pourcentage, sur la période : ${range}. Les mêmes données sont offertes en tableau sous le graphique.`,545 },546 nodes: {547 title: "Machine par machine",548 sort: "Trier par",549 sortNumber: "Numéro",550 filter: "Afficher",551 all: "Toutes",552 laptops: "Portables",553 online: "En ligne",554 offline: "Hors ligne",555 noReading: "Aucun relevé",556 offlineBody: "Ne répond pas à l'agent de surveillance.",557 load: "Charge",558 uptime: "En marche",559 thermal: "État thermique",560 spark: "CPU sur la dernière heure",561 battery: "Batterie",562 },563 node: {564 title: "Relevés en direct",565 history: "Historique d'utilisation",566 netIn: "Réseau entrant",567 netOut: "Réseau sortant",568 offlineBody: "Cette machine ne répond pas à l'agent de surveillance pour le moment. Sa fiche matérielle ci-dessous n'est pas touchée.",569 },570 home: {571 eyebrow: "En direct",572 title: "Ce que font les machines maintenant",573 intro: "Lu auprès de l'agent de surveillance du cluster et rafraîchi tant que cette page est ouverte.",574 link: "Ouvrir le tableau de bord en direct",575 wall: "Charge CPU, une case par machine",576 wallNote: "Chaque case est une machine, numérotée comme dans l'inventaire. Choisissez une case pour ouvrir sa fiche.",577 },578 note: "Les relevés viennent de l'agent de surveillance du cluster et passent par le serveur de ce site, qui ne publie que des chiffres d'utilisation : aucune adresse ni information sur les processus ou les utilisateurs ne sort du cluster.",579 thermal: { nominal: "Nominal", fair: "Modéré", serious: "Élevé", critical: "Critique" },580 units: { kbs: "Ko/s", mbs: "Mo/s", d: "j", h: "h", min: "min" },581 },582 footer: {583 purpose: "MacLustr est une installation de calcul de recherche détenue et exploitée à titre personnel. Ce site la documente ; il n'en vend ni n'en garantit l'accès.",584 disclaimer:585 "Ce n'est pas un service commercial. L'installation n'appartient à aucune institution et n'est ni financée ni cautionnée par l'une d'elles. Apple, Mac, Mac Studio, Mac mini, MacBook Pro et MacBook Air sont des marques d'Apple Inc. ; ce site n'est ni affilié à Apple ni commandité par Apple.",586 contact: "Contact",587 updated: "Dernière mise à jour",588 sections: "Sections",589 },590 notFound: { title: "Page introuvable", body: "Cette page n'existe pas.", link: "Retour à l'aperçu" },591};592