{"id":7818,"date":"2026-10-28T12:46:13","date_gmt":"2026-10-28T12:46:13","guid":{"rendered":"https:\/\/www.wiven.ai\/?page_id=7818"},"modified":"2026-10-28T15:26:19","modified_gmt":"2026-10-28T15:26:19","slug":"calculateur-ia-locale","status":"publish","type":"page","link":"https:\/\/www.wiven.ai\/en\/calculateur-ia-locale\/","title":{"rendered":"Local AI Calculator"},"content":{"rendered":"<style>\n.wcalc{--bg:#050806;--card:#0c110d;--soft:#111a12;--ink:#f0f4f0;--ink-2:rgba(240,244,240,.66);--line:rgba(45,190,78,.16);--line2:rgba(45,190,78,.32);\n  --go:#2DBE4E;--go-ink:#2DBE4E;--wash:rgba(45,190,78,.09);--sky:#5b9cf5;--flag:#f59a5b;--flag-wash:rgba(245,154,91,.12);--warn:#f2bb55;--warn-wash:rgba(242,187,85,.12);\n  --font:'DM Sans','Segoe UI',Arial,sans-serif;--mono:'Space Mono',Consolas,monospace;--r:11.2px;\n  background:var(--bg);color:var(--ink);font-family:var(--font);font-size:16px;line-height:1.55;overflow-x:hidden}\n.wcalc *,.wcalc *::before,.wcalc *::after{box-sizing:border-box}\n.wcalc h1,.wcalc h2,.wcalc h3{margin:0;letter-spacing:-.03em;line-height:1.08;color:var(--ink);font-family:var(--font)}\n.wcalc p{margin:0}\n.wcalc a{color:inherit}\n.wcalc button{font:inherit;color:inherit;text-transform:none;letter-spacing:normal;box-shadow:none;min-height:0;line-height:1.3}\n.wcalc .num{font-variant-numeric:tabular-nums}\n.wcalc .wrap{max-width:1248px;margin-inline:auto;padding-left:24px;padding-right:24px}\n.wcalc :focus-visible{outline:2px solid var(--go);outline-offset:3px;border-radius:4px}<\/p>\n<p>.wcalc .band{background:radial-gradient(ellipse 60% 70% at 85% 0%,rgba(45,190,78,.16),transparent 70%),var(--bg);border-bottom:1px solid rgba(45,190,78,.10)}\n.wcalc .band .wrap{padding-top:clamp(120px,12vw,152px);padding-bottom:clamp(32px,4vw,48px);display:grid;gap:16px}\n.wcalc .eyebrow{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;font-family:var(--mono);font-size:12.48px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}\n.wcalc .eyebrow b{color:var(--go);font-weight:400}\n.wcalc .stamp{font-family:var(--mono);font-size:11.52px;letter-spacing:.04em;text-transform:none;border:1px solid var(--line2);background:rgba(45,190,78,.08);border-radius:100px;padding:3.2px 11.2px;color:var(--go)}\n.wcalc .band h1{font-size:clamp(35.2px,5.4vw,62.4px);font-weight:500;letter-spacing:-.035em;max-width:17ch}\n.wcalc .band h1 span{color:var(--go)}\n.wcalc .band p.lede{max-width:704px;font-size:clamp(16.32px,1.5vw,18.4px);color:var(--ink-2)}\n.wcalc .steps-line{display:flex;flex-wrap:wrap;gap:8px 25.6px;margin-top:6.4px;font-size:14.72px;color:rgba(240,244,240,.86)}\n.wcalc .steps-line span{display:inline-flex;gap:8px;align-items:center}\n.wcalc .steps-line b{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--go);color:#06140a;font-size:12.8px}<\/p>\n<p>.wcalc .bench{display:grid;grid-template-columns:minmax(0,336px) minmax(0,1fr);gap:24px;align-items:start;padding-top:32px;padding-bottom:80px}\n.wcalc .panel{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:22.4px;display:grid;gap:24px;position:sticky;top:110px}\n.wcalc .step-h{display:flex;gap:9.6px;align-items:center;font-size:17.28px;font-weight:600}\n.wcalc .step-h b{display:inline-grid;place-items:center;width:25.6px;height:25.6px;border-radius:50%;background:var(--go);color:#06140a;font-size:13.12px;flex:none}\n.wcalc .group{display:grid;gap:17.6px}\n.wcalc .field{display:grid;gap:6.4px}\n.wcalc .field label,.wcalc .field .lab{font-weight:500;font-size:15.36px;display:flex;justify-content:space-between;gap:8px;align-items:baseline;color:var(--ink);margin:0}\n.wcalc .field label output{font-family:var(--mono);color:var(--go);font-size:16px}\n.wcalc .hint{font-size:13.6px;color:var(--ink-2)}\n.wcalc input[type=range]{width:100%;accent-color:var(--go);margin:0;background:transparent;border:0;padding:0;box-shadow:none}\n.wcalc .tiers{display:grid;gap:8px}\n.wcalc .tier{display:grid;grid-template-columns:auto minmax(0,1fr);gap:1.6px 10.4px;border:1px solid var(--line);border-radius:var(--r);padding:10.4px 12.8px;cursor:pointer;background:var(--soft);margin:0}\n.wcalc .tier input{margin:4.8px 0 0;accent-color:var(--go);grid-column:1;grid-row:1 \/ 3}\n.wcalc .tier b{font-size:15.36px;grid-column:2;grid-row:1;font-weight:600;color:var(--ink)}\n.wcalc .tier span{grid-column:2;grid-row:2;font-size:13.28px;color:var(--ink-2);line-height:1.35}\n.wcalc .tier:has(input:checked){border-color:var(--go);background:var(--wash)}\n.wcalc details.adv{border-top:1px solid var(--line);padding-top:16px}\n.wcalc details summary{cursor:pointer;list-style:none}\n.wcalc details summary::-webkit-details-marker{display:none}\n.wcalc details.adv summary{font-weight:500;font-size:15.2px;display:flex;justify-content:space-between}\n.wcalc details.adv summary::after{content:\"+\";color:var(--go);font-size:20.8px;line-height:1}\n.wcalc details.adv[open] summary::after{content:\"\u2013\"}\n.wcalc .adv-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12.8px;margin-top:16px}\n.wcalc .adv-grid .field{gap:4px}\n.wcalc .adv-grid label{font-size:13.12px;font-weight:400;color:var(--ink-2)}\n.wcalc .adv-grid input[type=number]{font:inherit;font-family:var(--mono);font-size:14.4px;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:7.2px;padding:8px 9.6px;width:100%;min-width:0;margin:0;box-shadow:none;height:auto}\n.wcalc .check{display:flex;gap:9.6px;align-items:flex-start;font-size:14.08px;grid-column:1\/-1;color:var(--ink-2)}\n.wcalc .check input{margin-top:4px;accent-color:var(--go)}\n.wcalc .linkbtn{background:none;border:0;color:var(--go);text-decoration:underline;text-underline-offset:3px;cursor:pointer;padding:0;font-size:14.08px;justify-self:start}\n.wcalc .linkbtn:hover{background:none;color:var(--go)}\n.wcalc .panel-cta{border-top:1px solid var(--line);padding-top:16px;display:grid;gap:9.6px;font-size:14.4px;color:var(--ink-2)}<\/p>\n<p>.wcalc .results{display:grid;gap:20px;min-width:0}\n.wcalc .box{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:20.8px 24px}\n.wcalc .verdict{border-left:4px solid var(--go);display:grid;gap:8.8px;background:linear-gradient(90deg,rgba(45,190,78,.08),transparent 60%),var(--card)}\n.wcalc .verdict h2{font-size:clamp(20.8px,2.4vw,28px);font-weight:500;letter-spacing:-.03em}\n.wcalc .verdict p{color:var(--ink-2);max-width:928px}\n.wcalc .verdict p b{color:var(--ink);font-weight:600}<\/p>\n<p>.wcalc .machine{display:grid;gap:17.6px}\n.wcalc .machine-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:6.4px 16px}\n.wcalc .gpus{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9.6px}\n.wcalc .gcard{position:relative;display:grid;gap:5.6px;align-content:start;text-align:left;background:var(--soft);border:1px solid var(--line);border-radius:12px;padding:13.6px 12.8px 12.8px;cursor:pointer;min-width:0;color:var(--ink);width:auto;height:auto}\n.wcalc .gcard:hover{border-color:var(--line2);background:var(--soft);color:var(--ink)}\n.wcalc .gcard[aria-checked=\"true\"]{background:var(--wash);border-color:var(--go);box-shadow:inset 0 0 0 1px var(--go)}\n.wcalc .gcard .kind{font-family:var(--mono);font-size:10.56px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2)}\n.wcalc .gcard .nm{font-weight:600;font-size:15.36px;line-height:1.15}\n.wcalc .gcard .mem{font-family:var(--mono);font-size:19.2px;line-height:1;color:var(--go)}\n.wcalc .gcard .mem small{font-family:var(--font);font-size:12.48px;color:var(--ink-2)}\n.wcalc .gcard .pr{font-family:var(--mono);font-size:12.16px;color:var(--ink-2)}\n.wcalc .gcard .flags{display:flex;flex-wrap:wrap;gap:4px;margin-top:2.4px}\n.wcalc .pill{font-size:11.2px;font-weight:600;border-radius:4.8px;padding:1.6px 6.4px;white-space:nowrap}\n.wcalc .pill.go{background:var(--go);color:#06140a}\n.wcalc .pill.warn{background:var(--warn-wash);color:var(--warn)}\n.wcalc .pill.no{background:var(--flag-wash);color:var(--flag)}\n.wcalc .mrow{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:16px 25.6px;align-items:start}\n.wcalc .count{display:grid;gap:8px}\n.wcalc .count .lab{font-weight:500;font-size:15.2px}\n.wcalc .stepper{display:flex;align-items:center;gap:8px;flex-wrap:wrap}\n.wcalc .stepper button{width:38.4px;height:38.4px;border-radius:8px;border:1px solid var(--line2);background:var(--soft);color:var(--ink);cursor:pointer;font-size:19.2px;line-height:1;padding:0}\n.wcalc .stepper button:hover{background:var(--wash);color:var(--ink)}\n.wcalc .stepper button:disabled{opacity:.35;cursor:not-allowed}\n.wcalc .stepper output{font-family:var(--mono);font-size:21.6px;min-width:35.2px;text-align:center}\n.wcalc .stepper .auto{width:auto;padding:0 12.8px;font-size:13.76px;font-weight:600}\n.wcalc .stepper .auto[aria-pressed=\"true\"]{background:var(--go);color:#06140a;border-color:var(--go)}\n.wcalc .rack{display:flex;gap:4.8px;flex-wrap:wrap;margin-top:3.2px}\n.wcalc .rack i{width:20px;height:28.8px;border-radius:4px;background:var(--go);position:relative;box-shadow:0 0 12px rgba(45,190,78,.35)}\n.wcalc .rack i::after{content:\"\";position:absolute;left:3.52px;right:3.52px;top:4.8px;height:2.88px;background:rgba(5,8,6,.55);border-radius:1.6px;box-shadow:0 5.6px 0 rgba(5,8,6,.4),0 11.2px 0 rgba(5,8,6,.25)}\n.wcalc .rack i.sep{width:8px;background:transparent;box-shadow:none}\n.wcalc .rack i.sep::after{display:none}\n.wcalc .mstat{display:grid;gap:9.6px}\n.wcalc .status{border-radius:9.6px;padding:11.2px 13.6px;font-size:14.72px;display:flex;gap:9.6px;align-items:flex-start}\n.wcalc .status::before{content:\"\";width:9.6px;height:9.6px;border-radius:50%;margin-top:6.72px;flex:none;background:currentColor;box-shadow:0 0 8px currentColor}\n.wcalc .status.ok{background:var(--wash);color:var(--go)}\n.wcalc .status.warn{background:var(--warn-wash);color:var(--warn)}\n.wcalc .status.no{background:var(--flag-wash);color:var(--flag)}\n.wcalc .status span{color:var(--ink)}\n.wcalc .spec{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11.2px 16px;margin:0}\n.wcalc .spec div{display:grid;gap:0.8px;min-width:0}\n.wcalc .spec dt{font-family:var(--mono);font-size:10.56px;color:var(--ink-2);text-transform:uppercase;letter-spacing:.08em}\n.wcalc .spec dd{margin:0;font-family:var(--mono);font-size:14.4px}\n.wcalc .cardnote{font-size:14.08px;color:var(--ink-2)}<\/p>\n<p>.wcalc .opts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}\n.wcalc .opt{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:19.2px;display:grid;gap:12px;align-content:start;position:relative;min-width:0}\n.wcalc .opt.best{border-color:var(--go);box-shadow:inset 0 0 0 1px var(--go),0 20px 60px -30px rgba(45,190,78,.45)}\n.wcalc .opt .who{display:flex;align-items:center;gap:8.8px;font-weight:600;font-size:16px}\n.wcalc .opt .who i{width:12px;height:12px;border-radius:3.2px;flex:none}\n.wcalc .opt .sub{font-size:13.44px;color:var(--ink-2);margin-top:-5.6px}\n.wcalc .tag{position:absolute;top:-11.2px;right:16px;background:var(--go);color:#06140a;font-size:11.52px;font-weight:600;border-radius:100px;padding:2.88px 10.4px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em}\n.wcalc .big{font-size:clamp(27.2px,3vw,35.2px);font-weight:500;letter-spacing:-.04em;line-height:1}\n.wcalc .big small{display:block;font-size:13.44px;font-weight:400;letter-spacing:0;color:var(--ink-2);margin-top:5.6px}\n.wcalc .permo{font-size:14.08px;color:var(--ink-2)}\n.wcalc .permo b{color:var(--ink);font-family:var(--mono);font-weight:400}\n.wcalc details.lines{border-top:1px solid var(--line);padding-top:9.6px;font-size:13.92px}\n.wcalc details.lines summary{color:var(--go);font-weight:500}\n.wcalc details.lines summary::after{content:\" +\"}\n.wcalc details.lines[open] summary::after{content:\" \u2013\"}\n.wcalc .lrows{display:grid;gap:4.8px;margin-top:8.8px}\n.wcalc .lrows div{display:flex;justify-content:space-between;gap:12.8px}\n.wcalc .lrows span:first-child{color:var(--ink-2)}\n.wcalc .lrows span:last-child{font-family:var(--mono);font-size:12.8px;white-space:nowrap}\n.wcalc .na{font-size:14.72px;color:var(--ink-2)}<\/p>\n<p>.wcalc .chart{display:grid;gap:12.8px}\n.wcalc .chart-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:9.6px 24px;align-items:baseline}\n.wcalc .chart h3,.wcalc .machine h3{font-size:18.4px;font-weight:600}\n.wcalc .legend{display:flex;flex-wrap:wrap;gap:6.4px 19.2px;font-size:13.6px;color:var(--ink-2)}\n.wcalc .legend span{display:inline-flex;gap:6.4px;align-items:center}\n.wcalc .legend i{width:16px;height:3.2px;border-radius:1px;display:inline-block}\n.wcalc .svgbox{overflow-x:auto}\n.wcalc svg text{font-family:var(--mono);font-size:11px;fill:rgba(240,244,240,.55)}<\/p>\n<p>.wcalc .why{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}\n.wcalc .why > div{display:grid;gap:9.6px;align-content:start}\n.wcalc .why h3{font-size:17.28px;font-weight:600}\n.wcalc .why ul{margin:0;padding-left:17.6px;display:grid;gap:5.6px;color:var(--ink-2);font-size:14.88px}\n.wcalc .hyp summary{font-weight:600;font-size:17.28px;display:flex;justify-content:space-between}\n.wcalc .hyp summary::after{content:\"+\";color:var(--go);font-size:22.4px;line-height:1}\n.wcalc .hyp[open] summary::after{content:\"\u2013\"}\n.wcalc .hyp-body{display:grid;gap:16px;margin-top:16px;font-size:14.4px;color:var(--ink-2)}\n.wcalc .tbl{overflow-x:auto}\n.wcalc .hyp table{border-collapse:collapse;width:100%;min-width:576px;font-size:13.76px;margin:0;border:0}\n.wcalc .hyp th,.wcalc .hyp td{text-align:left;padding:7.2px 9.6px;border:0;border-bottom:1px solid var(--line);vertical-align:top;background:transparent}\n.wcalc .hyp th{color:var(--ink);font-weight:600}\n.wcalc .hyp td.n{font-family:var(--mono);white-space:nowrap;font-size:12.8px}\n.wcalc .src{display:grid;gap:4.8px;margin:0;padding-left:17.6px}\n.wcalc .src a{color:var(--go)}\n.wcalc .cta{background:radial-gradient(ellipse 60% 120% at 100% 0%,rgba(45,190,78,.18),transparent 70%),var(--soft);border:1px solid var(--line2);border-radius:18px;padding:25.6px;display:flex;flex-wrap:wrap;gap:16px 32px;align-items:center;justify-content:space-between}\n.wcalc .cta h3{font-size:clamp(20.8px,2.4vw,27.2px);font-weight:500;max-width:30ch}\n.wcalc .cta p{color:var(--ink-2);margin-top:6.4px;max-width:672px}\n.wcalc .cta ul{margin:9.6px 0 0;padding-left:17.6px;color:var(--ink-2);font-size:14.72px;display:grid;gap:3.2px}\n.wcalc .btn{display:inline-flex;align-items:center;justify-content:center;font-weight:600;text-decoration:none;border-radius:100px;padding:13.6px 22.4px;background:var(--go);color:#06140a;border:0;white-space:nowrap}\n.wcalc .btn:hover{filter:brightness(1.08);color:#06140a}\n.wcalc .btn.small{padding:9.6px 16.8px;font-size:14.4px;justify-self:start}<\/p>\n<p>@media (max-width:1180px){.wcalc .gpus{grid-template-columns:repeat(3,minmax(0,1fr))}}\n@media (max-width:1040px){.wcalc .bench{grid-template-columns:minmax(0,1fr)}.wcalc .panel{position:static}.wcalc .mrow,.wcalc .why{grid-template-columns:minmax(0,1fr)}}\n@media (max-width:760px){.wcalc .wrap{padding-left:16px;padding-right:16px}.wcalc .opts{grid-template-columns:minmax(0,1fr)}.wcalc .gpus{grid-template-columns:repeat(2,minmax(0,1fr))}.wcalc .spec{grid-template-columns:repeat(2,minmax(0,1fr))}.wcalc .box{padding:17.6px}}\n.wcalc input[type=range]{-webkit-appearance:none;appearance:none;height:22px;cursor:pointer;background:transparent}.wcalc input[type=range]::-webkit-slider-runnable-track{height:6px;border-radius:3px;background:linear-gradient(var(--go),var(--go)) 0 0\/var(--p,50%) 100% no-repeat,rgba(255,255,255,.14)}.wcalc input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:var(--go);border:3px solid #050806;box-shadow:0 0 0 1px var(--go);margin-top:-6px}.wcalc input[type=range]::-moz-range-track{height:6px;border-radius:3px;background:rgba(255,255,255,.14)}.wcalc input[type=range]::-moz-range-progress{height:6px;border-radius:3px;background:var(--go)}.wcalc input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--go);border:3px solid #050806;box-shadow:0 0 0 1px var(--go)}.wcalc input[type=range]:focus-visible{outline:2px solid var(--go);outline-offset:4px}<\/style>\n<style>\n.wcalc .stampline{padding-top:24px}\n.wcalc .bench{padding-top:16px}\n.wcalc .panel h2.ttl{font-size:19px;font-weight:600}\n.wcalc .tier .stag{grid-column:2;grid-row:1;justify-self:end;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--warn);background:var(--warn-wash);border-radius:5px;padding:1px 7px;align-self:center}\n.wcalc .reslbl{display:block;font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--go);margin-bottom:4px}\n.wcalc .verdict .sub{font-size:16px}\n.wcalc .opt .mo{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}\n.wcalc .opt .mo small{font-size:14px;color:var(--ink-2);font-weight:400;letter-spacing:0}\n.wcalc .opt .licshare{font-size:13px;color:var(--go);font-weight:500}\n.wcalc .opt .tot{font-size:13px;color:var(--ink-2);border-top:1px solid var(--line);padding-top:10px}\n.wcalc .opt .tot b{font-family:var(--mono);font-weight:400;color:var(--ink)}\n.wcalc .opt .na{font-size:14px;line-height:1.5;color:var(--ink-2);border:1px dashed var(--line2);border-radius:10px;padding:12px}\n.wcalc details.tech{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:0}\n.wcalc details.tech > summary{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:20px 24px}\n.wcalc details.tech > summary b{display:block;font-size:18px;font-weight:600}\n.wcalc details.tech > summary span.h{display:block;font-size:14px;color:var(--ink-2);margin-top:2px}\n.wcalc details.tech > summary::after{content:\"+\";color:var(--go);font-size:26px;line-height:1;flex:none}\n.wcalc details.tech[open] > summary::after{content:\"\u2013\"}\n.wcalc .tech-body{display:grid;gap:20px;padding:0 24px 24px}\n.wcalc .tech-body .box{background:var(--soft)}\n.wcalc .why-res{border-left:4px solid var(--go)}\n.wcalc .why-res h3,.wcalc .set h3,.wcalc .costs h3,.wcalc .models h3{font-size:17px;font-weight:600;margin-bottom:10px}\n.wcalc .why-res p{color:var(--ink-2)}\n.wcalc .why-res p b{color:var(--ink);font-weight:600}\n.wcalc .set-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:20px 32px;align-items:start}\n.wcalc .set .adv-grid{margin-top:0}\n.wcalc .costs-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}\n.wcalc .costs-grid .who{display:flex;align-items:center;gap:8px;font-weight:600;margin-bottom:4px}\n.wcalc .costs-grid .who i{width:11px;height:11px;border-radius:3px;flex:none}\n.wcalc .costs-grid .permo{margin-bottom:10px}\n.wcalc .models table{border-collapse:collapse;width:100%;min-width:520px;font-size:14px;margin:0;border:0}\n.wcalc .models th,.wcalc .models td{text-align:left;padding:8px 10px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink-2)}\n.wcalc .models th{color:var(--ink);font-weight:600}\n.wcalc .models td.n{font-family:var(--mono);font-size:13px;color:var(--ink)}\n.wcalc .models tr.cur td{color:var(--ink);background:var(--wash)}\n.wcalc .models p{color:var(--ink-2);font-size:14px;margin-bottom:10px}\n@media (max-width:1040px){.wcalc .set-grid,.wcalc .costs-grid{grid-template-columns:minmax(0,1fr)}}\n@media (max-width:760px){.wcalc details.tech > summary{padding:16px}.wcalc .tech-body{padding:0 12px 16px}}\n<\/style>\n<div class=\"wcalc\" data-no-dynamic-translation>\n<header class=\"band\">\n<div class=\"wrap\">\n<div class=\"eyebrow\"><span>WivenLLM \u00b7 <b>Calculateur IA locale<\/b><\/span><\/div>\n<h1>Combien co\u00fbte une IA <span>dans vos murs ?<\/span><\/h1>\n<p class=\"lede\">Une premi\u00e8re estimation en trois questions. Le calculateur compare une machine chez vous, une IA suisse factur\u00e9e \u00e0 l&rsquo;usage et une instance d\u00e9di\u00e9e Infomaniak, avec un co\u00fbt par mois. Pour un chiffrage pr\u00e9cis, on en parle en s\u00e9ance.<\/p>\n<\/p><\/div>\n<\/header>\n<div class=\"wrap stampline\"><span class=\"stamp\" id=\"wc-stamp\">Prix relev\u00e9s le 28.10.2026<\/span><\/div>\n<div class=\"wrap bench\">\n<form class=\"panel\" id=\"wc-f\" aria-label=\"R\u00e9glages du calcul\">\n<h2 class=\"ttl\">Votre situation<\/h2>\n<div class=\"group\">\n<div class=\"field\">\n        <label for=\"daily\">Utilisateurs au quotidien <output id=\"dailyOut\" for=\"daily\">25<\/output><\/label><br \/>\n        <input type=\"range\" id=\"daily\" min=\"1\" max=\"500\" step=\"1\" value=\"25\"><\/p>\n<p class=\"hint\">Questions, r\u00e9daction, recherche dans vos documents.<\/p>\n<\/p><\/div>\n<div class=\"field\">\n        <label for=\"heavy\">Usages intensifs <output id=\"heavyOut\" for=\"heavy\">3<\/output><\/label><br \/>\n        <input type=\"range\" id=\"heavy\" min=\"0\" max=\"100\" step=\"1\" value=\"3\"><\/p>\n<p class=\"hint\">Agents qui lisent des lots de documents, assistants de code.<\/p>\n<\/p><\/div>\n<div class=\"tiers\" role=\"radiogroup\" aria-label=\"Niveau de mod\u00e8le\">\n        <label class=\"tier\"><input type=\"radio\" name=\"tier\" value=\"compact\" checked><b>Compact<\/b><span>Gemma 4 31B. R\u00e9daction, r\u00e9sum\u00e9s, questions sur vos documents.<\/span><\/label><br \/>\n        <label class=\"tier\"><input type=\"radio\" name=\"tier\" value=\"standard\"><b>Polyvalent<\/b><span>Mistral Small 4 (119B). Documents complexes, agents, plusieurs langues.<\/span><\/label><br \/>\n        <label class=\"tier\"><input type=\"radio\" name=\"tier\" value=\"large\"><b>Avanc\u00e9<\/b><i class=\"stag\">Local sur \u00e9tude<\/i><span>Qwen 3.5 (397B). Raisonnement long, code, analyses pouss\u00e9es.<\/span><\/label>\n      <\/div>\n<\/p><\/div>\n<div class=\"panel-cta\">\n<p>Votre cas sort de ces cases ? Plusieurs sites, contraintes r\u00e9glementaires, mod\u00e8le sp\u00e9cifique ?<\/p>\n<p>      <a class=\"btn small\" href=\"https:\/\/www.wiven.ai\/contact\/#rdv\">R\u00e9server une s\u00e9ance<\/a>\n    <\/div>\n<\/p><\/form>\n<p>  <main class=\"results\" aria-live=\"polite\"><\/p>\n<section class=\"box verdict\"><span class=\"reslbl\">Ce que \u00e7a vous co\u00fbterait<\/span><\/p>\n<h2 id=\"vTitle\"><\/h2>\n<p class=\"sub\" id=\"vSub\">\n<\/section>\n<section class=\"opts\" aria-label=\"Les trois options\">\n<article class=\"opt\" id=\"o-prem\">\n<div class=\"who\"><i style=\"background:var(--go)\"><\/i>Machine dans vos locaux<\/div>\n<p class=\"sub\">Achat du mat\u00e9riel, vos donn\u00e9es ne sortent pas<\/p>\n<div class=\"body\"><\/div>\n<\/article>\n<article class=\"opt\" id=\"o-api\">\n<div class=\"who\"><i style=\"background:var(--sky)\"><\/i>IA suisse \u00e0 l&rsquo;usage<\/div>\n<p class=\"sub\">Mod\u00e8les h\u00e9berg\u00e9s en Suisse, pay\u00e9s \u00e0 l&rsquo;usage, au co\u00fbt r\u00e9el<\/p>\n<div class=\"body\"><\/div>\n<\/article>\n<article class=\"opt\" id=\"o-inst\">\n<div class=\"who\"><i style=\"background:var(--flag)\"><\/i>Instance d\u00e9di\u00e9e Infomaniak<\/div>\n<p class=\"sub\">Une carte r\u00e9serv\u00e9e pour vous, h\u00e9berg\u00e9e en Suisse, lou\u00e9e \u00e0 l&rsquo;heure<\/p>\n<div class=\"body\"><\/div>\n<\/article>\n<\/section>\n<section class=\"box why\">\n<div>\n<h3>Quand le local se justifie<\/h3>\n<ul>\n<li>Vos donn\u00e9es ne doivent pas quitter vos murs : secret professionnel ou bancaire, sant\u00e9, exigences FINMA ou contractuelles.<\/li>\n<li>Vous voulez un co\u00fbt fixe, sans facture qui grandit avec l&rsquo;usage.<\/li>\n<li>Vous traitez de gros volumes en continu.<\/li>\n<li>Vous devez pouvoir travailler sans service externe.<\/li>\n<\/ul><\/div>\n<div>\n<h3>Ce que le calcul ne compte pas<\/h3>\n<ul>\n<li>La TVA, le temps de vos \u00e9quipes et la mise en place de vos cas d&rsquo;usage.<\/li>\n<li>Un local technique, la climatisation ou un onduleur, si vous n&rsquo;en avez pas.<\/li>\n<li>La qualit\u00e9 : un mod\u00e8le local reste en dessous des plus grands services en ligne pour un usage g\u00e9n\u00e9raliste.<\/li>\n<li>Les prix bougent : les cartes graphiques ont fortement augment\u00e9 en 2026 avec la p\u00e9nurie de m\u00e9moire.<\/li>\n<\/ul><\/div>\n<\/section>\n<details class=\"tech\">\n<summary><span><b>D\u00e9tails techniques<\/b><span class=\"h\">Choix de la machine, r\u00e9glages, d\u00e9tail des co\u00fbts, courbe, prix des mod\u00e8les et sources<\/span><\/span><\/summary>\n<div class=\"tech-body\">\n<section class=\"box why-res\">\n<h3>Pourquoi ce r\u00e9sultat<\/h3>\n<p id=\"vText\">\n<\/section>\n<section class=\"box machine\" aria-labelledby=\"mTitle\">\n<div class=\"machine-head\">\n<h3 id=\"mTitle\">La machine<\/h3>\n<p class=\"hint\" id=\"mHint\">Nous avons choisi la carte la plus \u00e9conomique qui convient. Essayez les autres.<\/p>\n<\/p><\/div>\n<div class=\"gpus\" id=\"gpus\" role=\"radiogroup\" aria-label=\"Carte graphique\"><\/div>\n<div class=\"mrow\">\n<div class=\"count\">\n              <span class=\"lab\" id=\"countLab\">Nombre de cartes<\/span><\/p>\n<div class=\"stepper\" role=\"group\" aria-labelledby=\"countLab\">\n                <button type=\"button\" id=\"minus\" aria-label=\"Retirer une carte\">\u2212<\/button><br \/>\n                <output id=\"countOut\">1<\/output><br \/>\n                <button type=\"button\" id=\"plus\" aria-label=\"Ajouter une carte\">+<\/button><br \/>\n                <button type=\"button\" class=\"auto\" id=\"auto\" aria-pressed=\"true\">Automatique<\/button>\n              <\/div>\n<div class=\"rack\" id=\"rack\" aria-hidden=\"true\"><\/div>\n<p class=\"cardnote\" id=\"formTxt\">\n<\/p><\/div>\n<div class=\"mstat\">\n<div id=\"status\"><\/div>\n<dl class=\"spec\" id=\"spec\"><\/dl>\n<p class=\"cardnote\" id=\"cardNote\">\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<section class=\"box set\">\n<h3>R\u00e9glages<\/h3>\n<div class=\"set-grid\">\n<div class=\"field\">\n              <label for=\"years\">Comparer sur <output id=\"yearsOut\" for=\"years\">3 ans<\/output><\/label><br \/>\n              <input type=\"range\" id=\"years\" min=\"1\" max=\"5\" step=\"1\" value=\"3\" form=\"wc-f\">\n            <\/div>\n<div>\n<div class=\"adv-grid\">\n<div class=\"field\"><label for=\"kwh\">\u00c9lectricit\u00e9 (CHF\/kWh)<\/label><input type=\"number\" id=\"kwh\" min=\"0\" step=\"0.01\" value=\"0.27\"><\/div>\n<div class=\"field\"><label for=\"opsPct\">Exploitation (% du mat\u00e9riel par an)<\/label><input type=\"number\" id=\"opsPct\" min=\"0\" step=\"1\" value=\"10\"><\/div>\n<div class=\"field\"><label for=\"tokDaily\">Tokens par jour, utilisateur<\/label><input type=\"number\" id=\"tokDaily\" min=\"0\" step=\"1000\" value=\"68000\"><\/div>\n<div class=\"field\"><label for=\"tokHeavy\">Tokens par jour, usage intensif<\/label><input type=\"number\" id=\"tokHeavy\" min=\"0\" step=\"10000\" value=\"1650000\"><\/div>\n<p>                <label class=\"check\"><input type=\"checkbox\" id=\"lic\" checked><span>Inclure la licence WivenLLM (CHF 70 par utilisateur et par an), identique dans les trois options<\/span><\/label>\n              <\/div>\n<p>              <button type=\"button\" class=\"linkbtn\" id=\"reset\" style=\"margin-top:14px\">Revenir aux valeurs par d\u00e9faut<\/button>\n            <\/div>\n<\/p><\/div>\n<\/section>\n<section class=\"box costs\">\n<h3>D\u00e9tail des co\u00fbts<\/h3>\n<div class=\"costs-grid\">\n<div>\n<div class=\"who\"><i style=\"background:var(--go)\"><\/i>Machine dans vos locaux<\/div>\n<p class=\"permo\" id=\"prem-mo\">\n<div class=\"lrows\" id=\"prem-lines\"><\/div>\n<\/div>\n<div>\n<div class=\"who\"><i style=\"background:var(--sky)\"><\/i>IA suisse \u00e0 l&rsquo;usage<\/div>\n<p class=\"permo\" id=\"api-mo\">\n<div class=\"lrows\" id=\"api-lines\"><\/div>\n<\/div>\n<div>\n<div class=\"who\"><i style=\"background:var(--flag)\"><\/i>Instance d\u00e9di\u00e9e Infomaniak<\/div>\n<p class=\"permo\" id=\"inst-mo\">\n<div class=\"lrows\" id=\"inst-lines\"><\/div>\n<\/div><\/div>\n<\/section>\n<section class=\"box chart\" aria-labelledby=\"cTitle\">\n<div class=\"chart-head\">\n<h3 id=\"cTitle\">Co\u00fbt cumul\u00e9, mois par mois<\/h3>\n<div class=\"legend\"><span id=\"legPrem\"><i style=\"background:var(--go)\"><\/i>Dans vos locaux<\/span><span><i style=\"background:var(--sky)\"><\/i>IA suisse \u00e0 l&rsquo;usage<\/span><span id=\"legInst\"><i style=\"background:var(--flag)\"><\/i>Instance Infomaniak<\/span><\/div>\n<\/p><\/div>\n<div class=\"svgbox\"><svg id=\"svg\" viewBox=\"0 0 720 280\" width=\"100%\" role=\"img\" aria-label=\"Courbes du co\u00fbt cumul\u00e9 des options\"><\/svg><\/div>\n<p class=\"hint\" id=\"cNote\">\n<\/section>\n<section class=\"box models\">\n<h3>Prix des mod\u00e8les h\u00e9berg\u00e9s en Suisse<\/h3>\n<p>Les mod\u00e8les disponibles chez Infomaniak, factur\u00e9s au co\u00fbt r\u00e9el. Des mod\u00e8les chinois ouverts y tournent aussi : vos donn\u00e9es restent en Suisse.<\/p>\n<div class=\"tbl\">\n<table>\n<thead>\n<tr>\n<th>Mod\u00e8le<\/th>\n<th>Origine<\/th>\n<th>Entr\u00e9e, CHF par million<\/th>\n<th>Sortie, CHF par million<\/th>\n<\/tr>\n<\/thead>\n<tbody id=\"modelRows\"><\/tbody>\n<\/table>\n<\/div>\n<\/section>\n<details class=\"box hyp\">\n<summary>Hypoth\u00e8ses et sources<\/summary>\n<div class=\"hyp-body\">\n<p>Montants en francs suisses, hors TVA. Les prix du mat\u00e9riel sont indicatifs et se confirment par devis.<\/p>\n<div class=\"tbl\">\n<table>\n<thead>\n<tr>\n<th>Carte<\/th>\n<th>M\u00e9moire<\/th>\n<th>Prix d&rsquo;achat<\/th>\n<th>Format<\/th>\n<\/tr>\n<\/thead>\n<tbody id=\"cardRows\"><\/tbody>\n<\/table>\n<\/div>\n<div class=\"tbl\">\n<table>\n<thead>\n<tr>\n<th>\u00c9l\u00e9ment<\/th>\n<th>Valeur retenue<\/th>\n<th>D&rsquo;o\u00f9 elle vient<\/th>\n<\/tr>\n<\/thead>\n<tbody id=\"hypRows\"><\/tbody>\n<\/table>\n<\/div>\n<ol class=\"src\">\n<li><a href=\"https:\/\/www.infomaniak.com\/en\/hosting\/ai-services\/prices\" target=\"_blank\" rel=\"noopener\">Infomaniak, AI Services<\/a> : prix des services IA, en CHF par million de tokens<\/li>\n<li><a href=\"https:\/\/www.infomaniak.com\/en\/hosting\/gpu\" target=\"_blank\" rel=\"noopener\">Infomaniak, GPU Cloud<\/a> : prix des instances GPU d\u00e9di\u00e9es, en CHF par heure<\/li>\n<li><a href=\"https:\/\/www.thundercompute.com\/blog\/nvidia-rtx-pro-6000-pricing\" target=\"_blank\" rel=\"noopener\">Thunder Compute, RTX PRO 6000<\/a> : prix d&rsquo;achat, octobre 2026<\/li>\n<li><a href=\"https:\/\/gpuperhour.com\/blog\/nvidia-gpu-prices\" target=\"_blank\" rel=\"noopener\">GPU per Hour, H200 NVL<\/a> : prix d&rsquo;achat, septembre et octobre 2026<\/li>\n<li><a href=\"https:\/\/www.guru3d.com\/story\/geforce-rtx-5090-street-prices-in-eu-now-exceed\/\" target=\"_blank\" rel=\"noopener\">Guru3D, RTX 5090<\/a> : prix en Europe, 2026<\/li>\n<li><a href=\"https:\/\/gpupoet.com\/gpu\/learn\/price\/june-2026\/nvidia-l40s\" target=\"_blank\" rel=\"noopener\">GPU Poet, L40S<\/a> : prix du march\u00e9, 2026<\/li>\n<li><a href=\"https:\/\/www.tomshardware.com\/desktops\/mini-pcs\/nvidia-dgx-spark-gets-18-percent-price-increase-as-memory-shortages-bite-founders-edition-now-usd4-699-up-from-usd3-999\" target=\"_blank\" rel=\"noopener\">Tom&rsquo;s Hardware, DGX Spark<\/a> : prix du bo\u00eetier, 2026<\/li>\n<li><a href=\"https:\/\/www.elcom.admin.ch\/\" target=\"_blank\" rel=\"noopener\">ElCom<\/a> : tarifs de l&rsquo;\u00e9lectricit\u00e9 en Suisse<\/li>\n<\/ol><\/div>\n<\/details><\/div>\n<\/details>\n<section class=\"cta\">\n<div>\n<h3>Pour aller plus loin, prenons 30 minutes<\/h3>\n<p>En s\u00e9ance, nous partons de vos volumes r\u00e9els et de vos contraintes :<\/p>\n<ul>\n<li>le mod\u00e8le qui convient \u00e0 vos documents et vos langues ;<\/li>\n<li>local, cloud suisse, ou les deux ;<\/li>\n<li>un devis du mat\u00e9riel et de la mise en service.<\/li>\n<\/ul><\/div>\n<p>      <a class=\"btn\" href=\"https:\/\/www.wiven.ai\/contact\/#rdv\">R\u00e9server une s\u00e9ance<\/a><br \/>\n    <\/section>\n<p>  <\/main>\n<\/div>\n<\/div>\n<p><script>\n(function(){\nvar ROOT = document.querySelector('.wcalc');\nif (!ROOT) { return; }\n\/* ===== Prix et hypoth\u00e8ses : tout se met \u00e0 jour ici ===== *\/\nconst UPDATED = '28.10.2026';\nconst CARDS = [\n  {id:'spark',   name:'NVIDIA DGX Spark',       kind:'Poste compact',    mem:128, price:6000,  watt:120, form:'compact', counts:[1,2], cap:4,\n   note:\"Un petit bo\u00eetier complet \u00e0 poser sur un bureau. Id\u00e9al pour tester ou pour une petite \u00e9quipe ; plus lent qu'un serveur.\",\n   srcTxt:\"USD 6'950 (version 128 Go), converti\"},\n  {id:'rtx5090', name:'GeForce RTX 5090',       kind:'Grand public',     mem:32,  price:5000,  watt:250, form:'station', counts:[1,2], cap:14, consumer:true,\n   note:\"Rapide et abordable, mais con\u00e7ue pour le jeu : pas de garantie serveur, pas faite pour tourner 24 h sur 24.\",\n   srcTxt:\"Plus de EUR 5'000 en Europe en 2026\"},\n  {id:'l40s',    name:'NVIDIA L40S',            kind:'Carte serveur',    mem:48,  price:8000,  watt:180, form:'rack', cap:12,\n   note:\"La g\u00e9n\u00e9ration pr\u00e9c\u00e9dente, solide et disponible. Bon rapport prix pour les mod\u00e8les compacts.\",\n   srcTxt:\"Environ USD 7'500 \u00e0 9'000 sur le march\u00e9\"},\n  {id:'pro6000', name:'RTX PRO 6000 Blackwell', kind:'Carte serveur',    mem:96,  price:13500, watt:250, form:'rack', cap:24,\n   note:\"La r\u00e9f\u00e9rence actuelle pour faire tourner des mod\u00e8les ouverts en entreprise.\",\n   srcTxt:\"USD 16'000 chez NVIDIA depuis ao\u00fbt 2026\"},\n  {id:'h200',    name:'NVIDIA H200 NVL',        kind:'Centre de donn\u00e9es',mem:141, price:28000, watt:300, form:'rack', cap:40,\n   note:\"Tr\u00e8s haute performance, pour les gros volumes et les grands mod\u00e8les.\",\n   srcTxt:\"USD 33'700 (CDW, septembre 2026)\"}\n];\n\/* Instances GPU d\u00e9di\u00e9es Infomaniak : une carte par instance, prix publics \u00ab \u00e0 partir de \u00bb *\/\nconst INST = [\n  {id:'l4',   name:'NVIDIA L4',   mem:24, rate:0.2924, cap:5},\n  {id:'l40s', name:'NVIDIA L40S', mem:48, rate:0.7616, cap:12},\n  {id:'a100', name:'NVIDIA A100', mem:40, rate:1.5666, cap:16}\n];\nconst MODELS = [\n  {name:'Gemma 4 31B',            origin:'Google, \u00c9tats-Unis',  pin:0.20, pout:0.40},\n  {name:'Mistral Small 4 (119B)', origin:'Mistral AI, France',  pin:0.20, pout:0.75},\n  {name:'Ministral 3 14B',        origin:'Mistral AI, France',  pin:0.30, pout:0.40},\n  {name:'Qwen 3.8 27B',           origin:'Alibaba, Chine',      pin:0.40, pout:3.00},\n  {name:'Kimi K2.6',              origin:'Moonshot AI, Chine',  pin:0.60, pout:3.00},\n  {name:'Apertus 70B',            origin:'Swiss AI, Suisse',    pin:0.70, pout:2.50},\n  {name:'Qwen 3.5 397B',          origin:'Alibaba, Chine',      pin:0.80, pout:3.60}\n];\nconst TIERS = {\n  compact:  {label:'compact',    example:'Gemma 4 31B',            w8:33,  w4:18,  kv:0.6, f:1.6, api:{model:'Gemma 4 31B',     table:'Gemma 4 31B',            pin:0.20, pout:0.40}},\n  standard: {label:'polyvalent', example:'Mistral Small 4 (119B)', w8:120, w4:62,  kv:0.8, f:1.0, api:{model:'Mistral Small 4', table:'Mistral Small 4 (119B)', pin:0.20, pout:0.75}},\n  large:    {label:'avanc\u00e9',     example:'Qwen 3.5 (397B)',        w8:400, w4:215, kv:1.2, f:0.5, api:{model:'Qwen 3.5 397B',   table:'Qwen 3.5 397B',          pin:0.80, pout:3.60}, study:true}\n};\nconst FORMS = {\n  compact:{base:0,   chassis:()=>0,     label:(n,s)=>s>1?`${s} bo\u00eetiers compacts reli\u00e9s entre eux`:'Un bo\u00eetier compact \u00e0 poser sur un bureau'},\n  station:{base:150, chassis:()=>6000,  label:n=>`Station de travail avec ${n} carte${n>1?'s':''}`},\n  rack:   {base:350, chassis:n=>({1:11000,2:12500,4:19000,8:34000})[n], label:(n,s)=>s>1?`${s} serveurs en rack de 8 cartes`:`Serveur en rack ${n>4?'4U':'2U'} avec ${n} carte${n>1?'s':''}`}\n};\nconst SETUP = 1400, DAYS = 220, IN_SHARE = 0.89, COOL = 1.3, DEPREC = 5, PEAK = 0.05, LICENCE = 70;\nconst DEF = {kwh:0.27, opsPct:10, tokDaily:68000, tokHeavy:1650000};<\/p>\n<p>const $ = s => ROOT.querySelector(s);\nconst fmt = n => Math.round(n).toString().replace(\/\\B(?=(\\d{3})+(?!\\d))\/g, \"'\");\nconst chf = n => 'CHF ' + fmt(n >= 10000 ? Math.round(n\/100)*100 : n);\nconst dec = n => n.toFixed(2).replace('.', ',');\nconst tok = n => n >= 1e9 ? (n\/1e9).toLocaleString('fr-CH',{maximumFractionDigits:1}) + ' milliards' : (n\/1e6).toLocaleString('fr-CH',{maximumFractionDigits:0}) + ' millions';\nconst val = id => Math.max(0, parseFloat($('#'+id).value) || 0);\nconst card = id => CARDS.find(c => c.id === id);\nconst state = {card:null, count:null};<\/p>\n<p>function allowedCounts(c){ return c.form === 'rack' ? [1,2,4,8,16,24,32] : c.counts; }\nfunction layout(c, n){\n  if (c.form === 'rack') return n <= 8 ? {per:n, units:1} : {per:8, units:n\/8};\n  if (c.form === 'compact') return {per:1, units:n};\n  return {per:n, units:1};\n}\nfunction fit(c, n, tier, need){\n  const mem = c.mem*n;\n  let quant = null, w = 0;\n  if (mem >= tier.w8*1.3) { quant = '8'; w = tier.w8; }\n  else if (mem >= tier.w4*1.15) { quant = '4'; w = tier.w4; }\n  const capMem = quant ? Math.floor((mem - w)\/tier.kv) : 0;\n  const capCpu = Math.floor(c.cap*n*tier.f);\n  const capacity = quant ? Math.max(1, Math.min(capMem, capCpu)) : 0;\n  return {mem, quant, capacity, ok: quant ? capacity >= need : false, fits: !!quant};\n}\nfunction autoCount(c, tier, need){\n  for (const n of allowedCounts(c)) if (fit(c, n, tier, need).ok) return n;\n  return null;\n}\nfunction hardwareCost(c, n){\n  const L = layout(c, n);\n  return L.units*(FORMS[c.form].chassis(L.per) + L.per*c.price);\n}\nfunction recommend(tier, need, users){\n  let best = null;\n  for (const c of CARDS){\n    if (c.consumer) continue;\n    if (c.form === 'compact') { if (users > 8) continue; }\n    const n = autoCount(c, tier, need); if (!n) continue;\n    const cost = hardwareCost(c, n);\n    if (!best || cost < best.cost) best = {c, n, cost};\n  }\n  return best;\n}\nfunction instance(tier, need){\n  let best = null;\n  for (const g of INST){\n    const a = fit(g, 1, tier, 1);\n    if (!a.fits) continue;\n    const k = Math.max(1, Math.ceil(need\/a.capacity)), cost = k*g.rate*8760;\n    if (!best || cost < best.cost) best = {g, k, cost, quant:a.quant};\n  }\n  return best;\n}\n\nfunction compute(){\n  const daily = +$('#daily').value, heavy = +$('#heavy').value, years = +$('#years').value;\n  const tierId = ROOT.querySelector('input[name=tier]:checked').value, tier = TIERS[tierId];\n  const kwh = val('kwh'), ops = val('opsPct')\/100, tokD = val('tokDaily'), tokH = val('tokHeavy');\n  const users = daily + heavy, lic = $('#lic').checked ? users*LICENCE : 0;\n  const need = Math.max(1, Math.ceil(daily*PEAK + heavy));\n  const rec = recommend(tier, need, users);\n  const c = card(state.card || (rec ? rec.c.id : 'pro6000'));\n  const counts = allowedCounts(c);\n  let n = state.count ?? autoCount(c, tier, need) ?? counts[counts.length-1];\n  if (!counts.includes(n)) n = counts.find(x => x >= n) ?? counts[counts.length-1];\n  const F = fit(c, n, tier, need), L = layout(c, n);<\/p>\n<p>  const tokYear = (daily*tokD + heavy*tokH)*DAYS, inY = tokYear*IN_SHARE, outY = tokYear*(1-IN_SHARE);\n  const hardware = hardwareCost(c, n), setup = L.units*SETUP;\n  const kwhYear = L.units*(FORMS[c.form].base + L.per*c.watt)\/1000*8760*COOL;\n  const power = kwhYear*kwh, opsYear = hardware*ops;\n  const premYear = power + opsYear + lic;\n  const premTotal = hardware + setup + premYear*years;\n  const residual = hardware*Math.max(0, 1 - years\/DEPREC);<\/p>\n<p>  const apiTok = inY\/1e6*tier.api.pin + outY\/1e6*tier.api.pout;\n  const apiYear = apiTok + lic, apiTotal = apiYear*years;<\/p>\n<p>  const study = !!tier.study;\n  const inst = instance(tier, need), canInst = !!inst;\n  const instGpu = canInst ? inst.cost : 0, instYear = instGpu + lic, instTotal = canInst ? SETUP + instYear*years : null;<\/p>\n<p>  const blended = IN_SHARE*tier.api.pin + (1-IN_SHARE)*tier.api.pout;\n  const breakTok = ((hardware+setup)\/DEPREC + power + opsYear)\/blended*1e6;\n  const heavyEq = tokH > 0 ? breakTok\/(tokH*DAYS) : Infinity;<\/p>\n<p>  let payback = null;\n  if (canInst) { if (!study) { for (let m=1; m<=120; m++){ if (hardware + setup + premYear*m\/12 <= SETUP + instYear*m\/12){ payback = m; break; } } } }\n\n  const totals = {api:apiTotal};\n  if (F.ok) { if (!study) { totals.prem = premTotal; } }\n  if (canInst) totals.inst = instTotal;\n  const best = Object.keys(totals).reduce((a,b) => totals[a] <= totals[b] ? a : b);\n\n  return {daily, heavy, users, years, tier, tierId, need, rec, c, n, F, L, kwh, ops, tokD, tokH, lic, tokYear, hardware, setup, kwhYear, power, opsYear,\n    premYear, premTotal, residual, apiTok, apiYear, apiTotal, study, inst, canInst, instGpu, instYear, instTotal, breakTok, heavyEq, payback, best};\n}\n\nfunction rows(el, list){ el.innerHTML = list.map(([k,v]) => `<\/p>\n<div><span>${k}<\/span><span>${v}<\/span><\/div>\n<p>`).join(''); }\nconst per = (t, r) => `Soit <b>${chf(t\/(r.years*12))}<\/b> par mois, <b>${chf(t\/(r.years*12)\/Math.max(1,r.daily))}<\/b> par utilisateur`;\nconst ansTxt = y => `${y} ${y>1 ? 'ans' : 'an'}`;\nfunction optBody(total, r){\n  const mo = total\/(r.years*12);\n  return `<\/p>\n<p class=\"mo\"><span class=\"big num\">${chf(mo)}<\/span><small>par mois<\/small><\/p>\n<p>` +\n    (r.lic ? `<\/p>\n<p class=\"licshare\">dont ${chf(r.lic\/12)} de licence WivenLLM<\/p>\n<p>` : '') +\n    `<\/p>\n<p class=\"tot\"><b>${chf(total)}<\/b> sur ${ansTxt(r.years)} \u00b7 <b>${chf(mo\/Math.max(1,r.daily))}<\/b> par utilisateur et par mois<\/p>\n<p>`;\n}<\/p>\n<p>function render(){\n  const r = compute(), y = r.years, ans = ansTxt(y);\n  $('#dailyOut').textContent = r.daily; $('#heavyOut').textContent = r.heavy; $('#yearsOut').textContent = ans;<\/p>\n<p>  \/* Les trois options *\/\n  $('#o-prem .body').innerHTML = r.study ? `<\/p>\n<p class=\"na\">Ce mod\u00e8le demande plusieurs cartes serveur. Nous le chiffrons sur \u00e9tude, en s\u00e9ance.<\/p>\n<p>` : optBody(r.premTotal, r);\n  $('#o-api .body').innerHTML = optBody(r.apiTotal, r);\n  $('#o-inst .body').innerHTML = r.canInst ? optBody(r.instTotal, r) : `<\/p>\n<p class=\"na\">Ce mod\u00e8le demande plus d'une carte : instance sur devis avec Infomaniak.<\/p>\n<p>`;\n  ['prem','api','inst'].forEach(k => {\n    const el = $('#o-'+k); el.classList.toggle('best', k===r.best); const old = el.querySelector('.tag'); if (old) old.remove();\n    if (k===r.best){ const t = document.createElement('span'); t.className = 'tag'; t.textContent = 'Le moins cher'; el.prepend(t); }\n  });<\/p>\n<p>  \/* Verdict *\/\n  const ratio = r.premTotal \/ Math.max(1, r.apiTotal);\n  const subs = {api:\"Le moins cher \u00e0 vos volumes : pas de mat\u00e9riel, et vos donn\u00e9es sont trait\u00e9es en Suisse.\",\n    prem:\"Vos donn\u00e9es ne quittent pas vos murs, et le co\u00fbt reste fixe quel que soit l'usage.\",\n    inst:\"Une carte r\u00e9serv\u00e9e pour vous en Suisse, sans mat\u00e9riel \u00e0 acheter.\"};\n  let title, sub, why;\n  if (r.study){\n    title = \"Pour le mod\u00e8le avanc\u00e9, l'IA suisse \u00e0 l'usage est la voie r\u00e9aliste.\";\n    sub = `\u00c0 vos volumes, elle co\u00fbte environ <b>${chf(r.apiTok)}<\/b> par an. En local, ce mod\u00e8le demande plusieurs cartes serveur : nous le chiffrons sur \u00e9tude, en s\u00e9ance.`;\n    why = sub;\n  } else if (!r.F.ok){\n    title = \"Cette machine ne suffit pas pour votre usage.\";\n    sub = r.rec ? `Pour ${r.users} utilisateurs avec le mod\u00e8le ${r.tier.label}, il faut plut\u00f4t : <b>${r.rec.n} \u00d7 ${r.rec.c.name}<\/b>, environ <b>${chf(r.rec.cost)}<\/b> de mat\u00e9riel. Ouvrez les d\u00e9tails techniques et cliquez sur la carte \u00ab Recommand\u00e9e \u00bb pour revenir \u00e0 cette configuration.` : \"Choisissez un mod\u00e8le plus l\u00e9ger ou une carte plus grande.\";\n    why = sub;\n  } else {\n    sub = subs[r.best];\n    if (r.best === 'api'){\n      title = ratio >= 3 ? `Sur ${ans}, l'IA suisse \u00e0 l'usage co\u00fbte environ ${fmt(ratio)} fois moins qu'une machine \u00e0 vous.` : `Sur ${ans}, l'IA suisse \u00e0 l'usage reste la moins ch\u00e8re.`;\n      const eq = isFinite(r.heavyEq) ? `, soit environ ${fmt(Math.ceil(r.heavyEq))} usages intensifs` : '';\n      why = `\u00c0 vos volumes, la consommation co\u00fbte <b>${chf(r.apiTok)}<\/b> par an, contre <b>${chf(r.hardware)}<\/b> de mat\u00e9riel. Le local se choisit d'abord pour garder les donn\u00e9es chez soi. Sur le co\u00fbt seul, il devient int\u00e9ressant au-del\u00e0 d'environ <b>${tok(r.breakTok)} de tokens par an<\/b>${eq}.`;\n    } else if (r.best === 'prem'){\n      title = \"\u00c0 ce volume, une machine \u00e0 vous devient l'option la moins ch\u00e8re.\";\n      why = `Vous traitez environ <b>${tok(r.tokYear)} de tokens par an<\/b>. Au-del\u00e0 d'environ ${tok(r.breakTok)}, poss\u00e9der la machine co\u00fbte moins cher que payer au token, et vos donn\u00e9es restent chez vous.`;\n    } else {\n      title = \"\u00c0 ce volume, une instance d\u00e9di\u00e9e Infomaniak est l'option la moins ch\u00e8re.\";\n      const g = r.inst.g.name.replace('NVIDIA ', '');\n      why = `Le mod\u00e8le tourne sur <b>${r.inst.k > 1 ? `${r.inst.k} cartes ${g} r\u00e9serv\u00e9es` : `une carte ${g} r\u00e9serv\u00e9e`}<\/b> pour vous en Suisse, pour <b>${chf(r.instGpu)}<\/b> par an, sans achat de mat\u00e9riel.`;\n    }\n    if (r.payback) { if (r.best !== 'inst') { why += ` Face \u00e0 une instance d\u00e9di\u00e9e Infomaniak, l'achat est rentabilis\u00e9 en <b>${r.payback} mois<\/b>.`; } }\n  }\n  $('#vTitle').textContent = title; $('#vSub').innerHTML = sub; $('#vText').innerHTML = why;<\/p>\n<p>  \/* Machine *\/\n  $('#gpus').innerHTML = CARDS.map(c => {\n    const an = autoCount(c, r.tier, r.need), sel = c.id === r.c.id, isRec = r.rec ? r.rec.c.id === c.id : false;\n    let flags = '';\n    if (isRec) flags += '<span class=\"pill go\">Recommand\u00e9e<\/span>';\n    if (!an) flags += '<span class=\"pill no\">Ne suffit pas<\/span>';\n    else if (c.consumer) flags += '<span class=\"pill warn\">Pour tester<\/span>';\n    const from = an ? `${chf(hardwareCost(c, an))}<\/span><span class=\"pr num\">${an} ${c.form==='compact' ? (an>1?'bo\u00eetiers':'bo\u00eetier') : (an>1?'cartes':'carte')} pour vous` : `CHF ${fmt(c.price)}<\/span><span class=\"pr num\">l'unit\u00e9`;\n    return `<button type=\"button\" class=\"gcard\" role=\"radio\" aria-checked=\"${sel}\" data-id=\"${c.id}\">\n      <span class=\"kind\">${c.kind}<\/span><span class=\"nm\">${c.name}<\/span>\n      <span class=\"mem num\">${c.mem} <small>Go<\/small><\/span>\n      <span class=\"pr num\">${from}<\/span><span class=\"flags\">${flags}<\/span><\/button>`;\n  }).join('');\n  const counts = allowedCounts(r.c), idx = counts.indexOf(r.n);\n  $('#countOut').textContent = r.n;\n  $('#minus').disabled = idx <= 0; $('#plus').disabled = idx >= counts.length-1;\n  $('#auto').setAttribute('aria-pressed', state.count == null);\n  let rack = '';\n  for (let u=0; u<r.L.units; u++){ if (u) rack += '<i class=\"sep\"><\/i>'; rack += '<i><\/i>'.repeat(r.L.per); }\n  $('#rack').innerHTML = rack;\n  $('#formTxt').textContent = FORMS[r.c.form].label(r.L.per, r.L.units) + '.';\n  $('#mHint').textContent = state.card ? 'Vous comparez avec une autre carte. Cliquez sur \u00ab Recommand\u00e9e \u00bb pour revenir.' : 'Nous avons choisi la carte la plus \u00e9conomique qui convient. Essayez les autres.';\n  let st;\n  if (!r.F.fits) st = `<\/p>\n<div class=\"status no\"><span><b>Le mod\u00e8le ne tient pas en m\u00e9moire<\/b> (${r.F.mem} Go). Ajoutez des cartes, choisissez une carte plus grande ou un mod\u00e8le plus l\u00e9ger.<\/span><\/div>\n<p>`;\n  else if (!r.F.ok) st = `<\/p>\n<div class=\"status warn\"><span><b>Le mod\u00e8le tient, mais la machine sera satur\u00e9e aux heures de pointe<\/b> : environ ${r.F.capacity} requ\u00eates simultan\u00e9es pour un pic estim\u00e9 \u00e0 ${r.need}.<\/span><\/div>\n<p>`;\n  else st = `<\/p>\n<div class=\"status ok\"><span><b>\u00c7a convient.<\/b> Le mod\u00e8le ${r.tier.label} tient en version ${r.F.quant} bits, avec environ ${r.F.capacity} requ\u00eates simultan\u00e9es pour un pic estim\u00e9 \u00e0 ${r.need}.<\/span><\/div>\n<p>`;\n  $('#status').innerHTML = st;\n  $('#spec').innerHTML = [\n    ['M\u00e9moire IA', `${r.F.mem} Go`], ['Mod\u00e8le type', r.tier.example], ['Prix indicatif', chf(r.hardware)],\n    ['Consommation', `${fmt(r.kwhYear)} kWh\/an`], ['\u00c9lectricit\u00e9', `${chf(r.power)}\/an`], ['Installation', chf(r.setup)]\n  ].map(([k,v]) => `<\/p>\n<div>\n<dt>${k}<\/dt>\n<dd>${v}<\/dd>\n<\/div>\n<p>`).join('');\n  $('#cardNote').textContent = r.c.note;<\/p>\n<p>  \/* D\u00e9tail des co\u00fbts *\/\n  const licRow = r.lic ? [['Licences WivenLLM, par an', chf(r.lic)]] : [];\n  $('#prem-mo').innerHTML = per(r.premTotal, r);\n  rows($('#prem-lines'), [['Mat\u00e9riel, pay\u00e9 une fois', chf(r.hardware)], ['Installation', chf(r.setup)], ['\u00c9lectricit\u00e9, par an', chf(r.power)], ['Exploitation, par an', chf(r.opsYear)], ...licRow, [`Valeur restante apr\u00e8s ${ans}`, chf(r.residual)]]);\n  $('#api-mo').innerHTML = per(r.apiTotal, r);\n  rows($('#api-lines'), [['Tokens par an', tok(r.tokYear)], [`Tarif ${r.tier.api.model} (CHF\/M)`, `${dec(r.tier.api.pin)} \/ ${dec(r.tier.api.pout)}`], ['Consommation, par an', chf(r.apiTok)], ...licRow, ['Mat\u00e9riel', 'CHF 0']]);\n  if (r.canInst){\n    $('#inst-mo').innerHTML = per(r.instTotal, r);\n    rows($('#inst-lines'), [[`${r.inst.k} \u00d7 instance ${r.inst.g.name}`, `${dec(r.inst.g.rate)} CHF\/h`], ['Instances, par an', chf(r.instGpu)], ['Installation', chf(SETUP)], ...licRow, ['Mat\u00e9riel', 'CHF 0']]);\n  } else {\n    $('#inst-mo').innerHTML = \"Instance sur devis avec Infomaniak.\"; $('#inst-lines').innerHTML = '';\n  }<\/p>\n<p>  \/* Prix des mod\u00e8les *\/\n  $('#modelRows').innerHTML = MODELS.map(m => `<tr${m.name === r.tier.api.table ? ' class=\"cur\"' : ''}>\n<td>${m.name}<\/td>\n<td>${m.origin}<\/td>\n<td class=\"n\">${dec(m.pin)}<\/td>\n<td class=\"n\">${dec(m.pout)}<\/td>\n<\/tr>\n<p>`).join('');<\/p>\n<p>  \/* Hypoth\u00e8ses *\/\n  $('#cardRows').innerHTML = CARDS.map(c => `<\/p>\n<tr>\n<td>${c.name}<\/td>\n<td class=\"n\">${c.mem} Go<\/td>\n<td class=\"n\">${chf(c.price)}<\/td>\n<td>${c.form==='rack'?'Serveur en rack, 1 \u00e0 8 cartes':c.form==='station'?'Station de travail, 1 \u00e0 2 cartes':'Bo\u00eetier complet'}<br \/><span class=\"hint\">${c.srcTxt}<\/span><\/td>\n<\/tr>\n<p>`).join('');\n  $('#hypRows').innerHTML = [\n    ['Serveur sans cartes', \"CHF 11'000 \u00e0 34'000\", \"Processeurs, m\u00e9moire, stockage en miroir, alimentation, garantie 3 ans ; station de travail CHF 6'000\"],\n    ['Installation', chf(SETUP)+' par machine', 'Une journ\u00e9e de mise en service'],\n    ['\u00c9lectricit\u00e9', `${dec(r.kwh)} CHF\/kWh`, `Tarif PME moyen ; consommation moyenne de la machine, refroidissement \u00d7${COOL}`],\n    ['Exploitation', `${Math.round(r.ops*100)} % du mat\u00e9riel par an`, 'Supervision, mises \u00e0 jour, support, remplacement de pi\u00e8ces'],\n    ['Usage quotidien', `${fmt(r.tokD)} tokens par jour`, `Environ 20 requ\u00eates avec extraits de documents ; ${DAYS} jours ouvr\u00e9s`],\n    ['Usage intensif', `${fmt(r.tokH)} tokens par jour`, 'Agent qui traite des lots de documents ou assistant de code'],\n    ['Pic de charge', `${Math.round(PEAK*100)} % des utilisateurs + chaque usage intensif`, 'Requ\u00eates trait\u00e9es au m\u00eame moment'],\n    ['Instance d\u00e9di\u00e9e Infomaniak', INST.map(g => `${g.name.replace('NVIDIA ','')} ${dec(g.rate)}`).join(' \u00b7 ') + ' CHF\/h', 'Prix publics \u00ab \u00e0 partir de \u00bb, une carte par instance, 24 h sur 24 ; plusieurs cartes par instance sur devis'],\n    [\"IA suisse \u00e0 l'usage\", `${dec(r.tier.api.pin)} \/ ${dec(r.tier.api.pout)} CHF par million`, `Tarif Infomaniak ${r.tier.api.model}, entr\u00e9e \/ sortie ; ${Math.round(IN_SHARE*100)} % des tokens en entr\u00e9e`],\n    ['Valeur restante', `Amortissement sur ${DEPREC} ans`, 'Indiqu\u00e9e \u00e0 part, non d\u00e9duite du total']\n  ].map(([a,b,c]) => `<\/p>\n<tr>\n<td>${a}<\/td>\n<td class=\"n\">${b}<\/td>\n<td>${c}<\/td>\n<\/tr>\n<p>`).join('');<\/p>\n<p>  drawChart(r);\n}<\/p>\n<p>function drawChart(r){\n  const svg = $('#svg'), W = 720, H = 280, L = 64, R = 16, T = 14, B = 34, months = r.years*12;\n  const S = {api:m => r.apiYear*m\/12};\n  if (!r.study) S.prem = m => r.hardware + r.setup + r.premYear*m\/12;\n  if (r.canInst) S.inst = m => SETUP + r.instYear*m\/12;\n  $('#legPrem').hidden = r.study; $('#legInst').hidden = !r.canInst;\n  const max = Math.max(...Object.values(S).map(f => f(months)));\n  const step = nice(max\/4), top = Math.ceil(max\/step)*step || 1;\n  const x = m => L + (W-L-R)*m\/months, yv = v => T + (H-T-B)*(1 - v\/top);\n  let g = '';\n  for (let v=0; v<=top+1e-6; v+=step){\n    g += `<line x1=\"${L}\" x2=\"${W-R}\" y1=\"${yv(v)}\" y2=\"${yv(v)}\" stroke=\"rgba(45,190,78,.14)\" stroke-width=\"1\"\/>`;\n    g += `<text x=\"${L-8}\" y=\"${yv(v)+4}\" text-anchor=\"end\">${v>=1000 ? fmt(v\/1000)+'k' : fmt(v)}<\/text>`;\n  }\n  for (let yr=0; yr<=r.years; yr++) g += `<text x=\"${x(yr*12)}\" y=\"${H-10}\" text-anchor=\"middle\">${yr===0?'D\u00e9part':'An '+yr}<\/text>`;\n  const col = {prem:'#2DBE4E', api:'#5b9cf5', inst:'#f59a5b'};\n  Object.keys(S).forEach(k => {\n    let d = ''; for (let m=0; m<=months; m++) d += (m?'L':'M') + x(m).toFixed(1) + ' ' + yv(S[k](m)).toFixed(1);\n    g += `<path d=\"${d}\" fill=\"none\" stroke=\"${col[k]}\" stroke-width=\"2.5\" stroke-linejoin=\"round\"\/><circle cx=\"${x(months)}\" cy=\"${yv(S[k](months))}\" r=\"4\" fill=\"${col[k]}\"\/>`;\n  });\n  svg.innerHTML = g;\n  $('#cNote').textContent = `\u00c9chelle en francs. La machine d\u00e9marre avec l'achat du mat\u00e9riel${r.payback ? ` ; elle passe sous l'instance Infomaniak apr\u00e8s ${r.payback} mois` : ''}.`;\n}\nfunction nice(v){ const p = Math.pow(10, Math.floor(Math.log10(v||1))), n = v\/p; return (n<=1?1:n<=2?2:n<=5?5:10)*p; }\n\nROOT.addEventListener('input', render);\nROOT.addEventListener('change', render);\n$('#wc-f').addEventListener('submit', e => e.preventDefault());\n$('#gpus').addEventListener('click', e => {\n  const b = e.target.closest('.gcard'); if (!b) return;\n  const r = compute();\n  state.card = (r.rec ? r.rec.c.id === b.dataset.id : false) ? null : b.dataset.id;\n  state.count = null; render();\n  const f = ROOT.querySelector(`.gcard[data-id=\"${b.dataset.id}\"]`); if (f) f.focus();\n});\n$('#gpus').addEventListener('keydown', e => {\n  if (!['ArrowRight','ArrowLeft'].includes(e.key)) return;\n  const list = [...ROOT.querySelectorAll('.gcard')], i = list.indexOf(document.activeElement); if (i < 0) return;\n  list[(i + (e.key==='ArrowRight'?1:-1) + list.length) % list.length].click(); e.preventDefault();\n});\nfunction stepCount(dir){\n  const r = compute(), counts = allowedCounts(r.c), i = counts.indexOf(r.n);\n  const j = Math.min(counts.length-1, Math.max(0, i+dir)); state.count = counts[j]; render();\n}\n$('#minus').addEventListener('click', () => stepCount(-1));\n$('#plus').addEventListener('click', () => stepCount(1));\n$('#auto').addEventListener('click', () => { state.count = null; render(); });\n$('#reset').addEventListener('click', () => { Object.entries(DEF).forEach(([k,v]) => $('#'+k).value = v); $('#lic').checked = true; render(); });\n$('#wc-stamp').textContent = 'Prix relev\u00e9s le ' + UPDATED;\nrender();\n})();\n<\/script><\/p>\n<p><script>(function(){function f(){var l=document.querySelectorAll(\".wcalc input[type=range]\");for(var i=0;i<l.length;i++){var r=l[i],a=+r.min||0,b=+r.max||100;r.style.setProperty(\"--p\",((r.value-a)\/(b-a)*100)+\"%\")}}function g(){setTimeout(f,0)}document.addEventListener(\"input\",g);document.addEventListener(\"change\",g);document.addEventListener(\"click\",g);if(document.readyState===\"loading\"){document.addEventListener(\"DOMContentLoaded\",f)}else{f()}})();<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>WivenLLM \u00b7 Calculateur IA locale Combien co\u00fbte une IA dans vos murs ? Une premi\u00e8re estimation en trois questions. Le calculateur compare une machine chez vous, une IA suisse factur\u00e9e \u00e0 l&rsquo;usage et une instance d\u00e9di\u00e9e Infomaniak, avec un co\u00fbt par mois. Pour un chiffrage pr\u00e9cis, on en parle en s\u00e9ance. Prix relev\u00e9s le 28.10.2026 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-7818","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Calculateur IA locale &#8212; Wiven AI<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wiven.ai\/en\/calculateur-ia-locale\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Calculateur IA locale &#8212; Wiven AI\" \/>\n<meta property=\"og:description\" content=\"WivenLLM \u00b7 Calculateur IA locale Combien co\u00fbte une IA dans vos murs ? Une premi\u00e8re estimation en trois questions. Le calculateur compare une machine chez vous, une IA suisse factur\u00e9e \u00e0 l&rsquo;usage et une instance d\u00e9di\u00e9e Infomaniak, avec un co\u00fbt par mois. Pour un chiffrage pr\u00e9cis, on en parle en s\u00e9ance. Prix relev\u00e9s le 28.10.2026 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wiven.ai\/en\/calculateur-ia-locale\/\" \/>\n<meta property=\"og:site_name\" content=\"Wiven AI\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-28T15:26:19+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.wiven.ai\\\/calculateur-ia-locale\\\/\",\"url\":\"https:\\\/\\\/www.wiven.ai\\\/calculateur-ia-locale\\\/\",\"name\":\"Calculateur IA locale &#8212; Wiven AI\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.wiven.ai\\\/#website\"},\"datePublished\":\"2026-10-28T12:46:13+00:00\",\"dateModified\":\"2026-10-28T15:26:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.wiven.ai\\\/calculateur-ia-locale\\\/#breadcrumb\"},\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.wiven.ai\\\/calculateur-ia-locale\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.wiven.ai\\\/calculateur-ia-locale\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.wiven.ai\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calculateur IA locale\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.wiven.ai\\\/#website\",\"url\":\"https:\\\/\\\/www.wiven.ai\\\/\",\"name\":\"Wiven AI\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.wiven.ai\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Calculateur IA locale &#8212; Wiven AI","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wiven.ai\/en\/calculateur-ia-locale\/","og_locale":"en_US","og_type":"article","og_title":"Calculateur IA locale &#8212; Wiven AI","og_description":"WivenLLM \u00b7 Calculateur IA locale Combien co\u00fbte une IA dans vos murs ? Une premi\u00e8re estimation en trois questions. Le calculateur compare une machine chez vous, une IA suisse factur\u00e9e \u00e0 l&rsquo;usage et une instance d\u00e9di\u00e9e Infomaniak, avec un co\u00fbt par mois. Pour un chiffrage pr\u00e9cis, on en parle en s\u00e9ance. Prix relev\u00e9s le 28.10.2026 [&hellip;]","og_url":"https:\/\/www.wiven.ai\/en\/calculateur-ia-locale\/","og_site_name":"Wiven AI","article_modified_time":"2026-10-28T15:26:19+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wiven.ai\/calculateur-ia-locale\/","url":"https:\/\/www.wiven.ai\/calculateur-ia-locale\/","name":"Calculateur IA locale &#8212; Wiven AI","isPartOf":{"@id":"https:\/\/www.wiven.ai\/#website"},"datePublished":"2026-10-28T12:46:13+00:00","dateModified":"2026-10-28T15:26:19+00:00","breadcrumb":{"@id":"https:\/\/www.wiven.ai\/calculateur-ia-locale\/#breadcrumb"},"inLanguage":"en","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wiven.ai\/calculateur-ia-locale\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wiven.ai\/calculateur-ia-locale\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.wiven.ai\/"},{"@type":"ListItem","position":2,"name":"Calculateur IA locale"}]},{"@type":"WebSite","@id":"https:\/\/www.wiven.ai\/#website","url":"https:\/\/www.wiven.ai\/","name":"Wiven AI","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wiven.ai\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en"}]}},"_links":{"self":[{"href":"https:\/\/www.wiven.ai\/en\/wp-json\/wp\/v2\/pages\/7818","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wiven.ai\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.wiven.ai\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.wiven.ai\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wiven.ai\/en\/wp-json\/wp\/v2\/comments?post=7818"}],"version-history":[{"count":3,"href":"https:\/\/www.wiven.ai\/en\/wp-json\/wp\/v2\/pages\/7818\/revisions"}],"predecessor-version":[{"id":7828,"href":"https:\/\/www.wiven.ai\/en\/wp-json\/wp\/v2\/pages\/7818\/revisions\/7828"}],"wp:attachment":[{"href":"https:\/\/www.wiven.ai\/en\/wp-json\/wp\/v2\/media?parent=7818"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}