<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tips &amp; Tutos &#8211; tazmenworld</title>
	<atom:link href="https://tazmenworld.com/category/tutoriels-it-et-astuces-techniques/feed/" rel="self" type="application/rss+xml" />
	<link>https://tazmenworld.com</link>
	<description>Mon site WordPress</description>
	<lastBuildDate>Wed, 08 Jul 2026 12:30:30 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>
	<item>
		<title>Construire une golden image Windows 11 avec Packer, Chocolatey et Boxstarter</title>
		<link>https://tazmenworld.com/2026/07/07/construire-une-golden-image-windows-11-avec-packer-chocolatey-et-boxstarter/</link>
					<comments>https://tazmenworld.com/2026/07/07/construire-une-golden-image-windows-11-avec-packer-chocolatey-et-boxstarter/#respond</comments>
		
		<dc:creator><![CDATA[tazmen3]]></dc:creator>
		<pubDate>Tue, 07 Jul 2026 21:32:58 +0000</pubDate>
				<category><![CDATA[Tips & Tutos]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<guid isPermaLink="false">https://tazmenworld.com/?p=406</guid>

					<description><![CDATA[Ouvre n&#8217;importe quel tuto Packer sur Windows et tu tomberas sur la même promesse : « une image parfaite en une commande, sans effort ». Tu copies le template, tu lances packer build, et tu déploies ta machine idéale. Sauf que c&#8217;est faux. Enfin, pas tout à fait. La commande existe, le résultat est réel, mais entre [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img width="1024" height="576"  alt="" class="wp-image-418"/ loading="eager" fetchpriority="high" decoding="async" src="https://tazmenworld.com/wp-content/uploads/2026/07/packer_prez-1024x576.jpg" srcset="https://tazmenworld.com/wp-content/uploads/2026/07/packer_prez-1024x576.jpg 1024w, https://tazmenworld.com/wp-content/uploads/2026/07/packer_prez-300x169.jpg 300w, https://tazmenworld.com/wp-content/uploads/2026/07/packer_prez-768x432.jpg 768w, https://tazmenworld.com/wp-content/uploads/2026/07/packer_prez-1536x864.jpg 1536w, https://tazmenworld.com/wp-content/uploads/2026/07/packer_prez.jpg 1672w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Ouvre n&rsquo;importe quel tuto Packer sur Windows et tu tomberas sur la même promesse : « une image parfaite en une commande, sans effort ». Tu copies le template, tu lances <code>packer build</code>, et tu déploies ta machine idéale.</p>



<p class="wp-block-paragraph">Sauf que c&rsquo;est faux. Enfin, pas tout à fait. La commande existe, le résultat est réel, mais entre les deux il y a une dizaine de pièges que personne ne te montre. Contrôleur disque invisible, balise obsolète qui fait tout planter, VM qui s&rsquo;endort en plein build. J&rsquo;ai tout traversé, en direct, sur ma machine. Cet article, c&rsquo;est le tuto que j&rsquo;aurais aimé lire avant de commencer.</p>



<p class="wp-block-paragraph">L&rsquo;objectif est simple : produire une <strong>golden image Windows 11</strong> automatisée. Windows s&rsquo;installe seul, le système passe en français, les VMware Tools et cinq applis se posent tout seuls, et à la fin tu récupères une image prête à cloner. Le tout sur VMware Workstation, en local, sans toucher la souris une seule fois une fois le build lancé.</p>



<p class="wp-block-paragraph">Je te préviens tout de suite : ce n&rsquo;est pas plug and play. Mais une fois les pièges désamorcés, ça tourne d&rsquo;un bout à l&rsquo;autre en 24 minutes. Et je te donne les vrais chiffres, y compris ceux qui font mal.</p>



<h2 class="wp-block-heading">Packer, Chocolatey, Boxstarter : qui fait quoi</h2>



<p class="wp-block-paragraph">Avant de coder, il faut comprendre les trois briques, parce qu&rsquo;elles n&rsquo;ont rien à voir entre elles. On les empile, chacune a un rôle précis.</p>



<p class="wp-block-paragraph"><strong>Packer</strong>, c&rsquo;est l&rsquo;orchestrateur du build. C&rsquo;est lui qui crée la VM, monte l&rsquo;ISO, la démarre, attend que Windows soit debout, se connecte, pousse les scripts, gère les reboots, puis exporte l&rsquo;image. Il ne fait rien d&rsquo;autre. Il fabrique le moule, une fois, et s&rsquo;arrête.</p>



<p class="wp-block-paragraph"><strong>Chocolatey</strong>, c&rsquo;est le gestionnaire de paquets Windows. L&rsquo;équivalent d&rsquo;<code>apt</code> sur Debian ou de <code>dnf</code> sur Fedora, mais pour Windows. Une ligne, <code>choco install firefox</code>, et le soft est là, sans installeur à cliquer, sans « suivant, suivant, terminer ». C&rsquo;est lui qui remplit le moule.</p>



<p class="wp-block-paragraph"><strong>Boxstarter</strong>, c&rsquo;est une surcouche de Chocolatey. Son intérêt unique : la résilience aux reboots. Il pose un autologon et reprend le script exactement là où il s&rsquo;était arrêté après un redémarrage. Utile quand tu enchaînes des installs qui rebootent. On y reviendra, parce que dans un build Packer, il fait doublon, et c&rsquo;est une nuance importante.</p>



<figure class="wp-block-image size-full is-resized"><img  alt="" class="wp-image-413" style="aspect-ratio:1.4419526442056951;width:750px;height:auto"/ loading="lazy" decoding="async" src="https://tazmenworld.com/wp-content/uploads/2026/07/diagramme-pipeline-packer.svg"></figure>



<h2 class="wp-block-heading">Packer contre Terraform : la confusion classique</h2>



<p class="wp-block-paragraph">Petite mise au point, parce que les deux sont des outils HashiCorp, écrits en HCL, et qu&rsquo;on les confond tout le temps. Ce ne sont pas des concurrents. Ils font deux choses différentes, à deux moments différents.</p>



<p class="wp-block-paragraph"><strong>Packer fabrique des images.</strong> Il produit un artefact figé, immuable : une image de VM, un template, une AMI sur AWS. Il construit, il exporte, il s&rsquo;arrête. Il ne sait pas ce que devient l&rsquo;image après, et il s&rsquo;en moque.</p>



<p class="wp-block-paragraph"><strong>Terraform déploie et gère l&rsquo;infrastructure.</strong> Il est déclaratif, il tient un état (le fameux <code>state</code>), il crée, modifie et détruit des ressources vivantes : des VM, des réseaux, des ressources cloud. Il gère tout le cycle de vie.</p>



<p class="wp-block-paragraph">En clair : Packer fabrique le moule, Terraform coule le béton dedans et gère les bâtiments. Le combo classique en prod, c&rsquo;est Packer qui produit la golden image, puis Terraform qui déploie cinquante instances de cette image. L&rsquo;un ne remplace pas l&rsquo;autre, ils se passent le relais.</p>



<p class="wp-block-paragraph">Pour cette démo, on reste sur Packer seul. On fabrique le moule.</p>



<h2 class="wp-block-heading">I. Installer Packer sur l&rsquo;hôte, pas dans la VM</h2>



<p class="wp-block-paragraph">Première confusion à évacuer : Packer s&rsquo;installe sur <strong>la machine hôte</strong>, celle qui fait tourner VMware Workstation. Pas dans la VM. La VM n&rsquo;existe même pas encore quand tu lances le build, c&rsquo;est Packer qui la crée.</p>



<p class="wp-block-paragraph">Sur mon poste, <code>winget</code> fait le job en trente secondes.</p>



<p class="wp-block-paragraph">[CODE : install-packer.ps1]</p>



<p class="wp-block-paragraph">powershell</p>



<pre class="wp-block-code"><code>winget install HashiCorp.Packer</code></pre>



<p class="wp-block-paragraph">Attention au piège le plus bête du monde : après l&rsquo;install, le PATH n&rsquo;est pas rechargé dans ta session en cours. Soit tu fermes et rouvres ton terminal, soit tu recharges à la volée.</p>



<p class="wp-block-paragraph">[CODE : reload-path.ps1]</p>



<p class="wp-block-paragraph">powershell</p>



<pre class="wp-block-code"><code>$env:Path = &#91;System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + &#91;System.Environment]::GetEnvironmentVariable("Path","User")
packer version</code></pre>



<figure class="wp-block-image size-large"><img width="1024" height="331"  alt="" class="wp-image-408"/ loading="lazy" decoding="async" src="https://tazmenworld.com/wp-content/uploads/2026/07/packer1-1-1024x331.jpg" srcset="https://tazmenworld.com/wp-content/uploads/2026/07/packer1-1-1024x331.jpg 1024w, https://tazmenworld.com/wp-content/uploads/2026/07/packer1-1-300x97.jpg 300w, https://tazmenworld.com/wp-content/uploads/2026/07/packer1-1-768x248.jpg 768w, https://tazmenworld.com/wp-content/uploads/2026/07/packer1-1.jpg 1518w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Chez moi, <code>Packer v1.15.4</code>. Note bien la version, parce que le plugin qui va avec est devenu beaucoup plus strict que les anciens, et ça va nous jouer des tours.</p>



<h2 class="wp-block-heading">II. L&rsquo;ISO Windows 11 : LTSC ou pas, la nuance qui compte</h2>



<p class="wp-block-paragraph">Pour la source, on part d&rsquo;une ISO d&rsquo;évaluation, gratuite et sans clé, depuis l&rsquo;Evaluation Center Microsoft. Attention, le paysage a changé. La Windows 10 Enterprise classique a été retirée depuis la fin de support d&rsquo;octobre 2025. Sur Windows 11, tu as le choix entre la Enterprise LTSC 2024 (build 26100) et la version standard.</p>



<p class="wp-block-paragraph">Petite parenthèse vécue : j&rsquo;ai cru télécharger la LTSC, et une fois la VM montée, j&rsquo;ai vu le Microsoft Store et Outlook dans le menu Démarrer. Or la LTSC n&rsquo;a ni l&rsquo;un ni l&rsquo;autre. J&rsquo;avais en fait la <strong>Enterprise Evaluation standard</strong>, pas la LTSC. Pour le pipeline ça ne change rien, choco et Packer s&rsquo;en fichent, mais c&rsquo;est le genre de détail à vérifier avant de croire qu&rsquo;on a la bonne édition.</p>



<p class="wp-block-paragraph">L&rsquo;eval demande un formulaire, donc pas de téléchargement direct. Packer ne peut pas la récupérer seul, on pointe un fichier local. Et on calcule son empreinte pour la vérification d&rsquo;intégrité.</p>



<p class="wp-block-paragraph">[CODE : hash-iso.ps1]</p>



<p class="wp-block-paragraph">powershell</p>



<pre class="wp-block-code"><code>Get-FileHash "C:\demo\ISO\win11ent.iso" -Algorithm SHA256</code></pre>



<h2 class="wp-block-heading">III. Le template Packer, et le plugin qui ne pardonne rien</h2>



<p class="wp-block-paragraph">Le coeur du build, c&rsquo;est le fichier <code>.pkr.hcl</code>. Il déclare la source (la VM à créer) et le build (les étapes de provisioning). Je te donne la version finale, celle qui marche, après avoir mangé toutes les erreurs.</p>



<p class="wp-block-paragraph">Premier piège, et il est de taille. Le plugin <code>github.com/vmware/vmware</code> en version 2.1.3 est <strong>beaucoup plus strict</strong> que les versions d&rsquo;avant. Il ne devine plus rien. Deux paramètres que les anciens plugins déduisaient tout seuls sont désormais obligatoires : <code>network_adapter_type</code> et <code>disk_adapter_type</code>. Il y en a un troisième, <code>tools_mode</code>, mais celui-là ne devient obligatoire que si tu touches à la config d&rsquo;upload des VMware Tools, ce qu&rsquo;on évite ici en les installant par choco (j&rsquo;y reviens en partie VI). Si tu copies un template d&rsquo;un vieux tuto, il casse à la validation. Tu vas te manger des <code>X is required</code> en série. On met donc les deux paramètres requis d&rsquo;entrée.</p>



<p class="wp-block-paragraph">[CODE : windows11.pkr.hcl (extrait source)]</p>



<p class="wp-block-paragraph">hcl</p>



<pre class="wp-block-code"><code>source "vmware-iso" "win11" {
  vm_name       = "win11-ltsc-demo"
  guest_os_type = "windows11-64"

  iso_url      = var.iso_path
  iso_checksum = var.iso_checksum

  cpus      = 4
  memory    = 8192
  disk_size = 40960

  disk_adapter_type    = "sata"
  cdrom_adapter_type   = "sata"
  network_adapter_type = "e1000e"

  vmx_data = {
    "firmware"                = "efi"
    "uefi.secureBoot.enabled" = "FALSE"
    "vtpm.present"            = "FALSE"
  }

  cd_files = &#91;"./autounattend.xml"]
  cd_label = "PROVISION"

  boot_wait    = "3s"
  boot_command = &#91;"&lt;enter&gt;"]

  communicator   = "winrm"
  winrm_username = "packer"
  winrm_password = "packer"
  winrm_timeout  = "2h"
}</code></pre>



<p class="wp-block-paragraph">Deux choix à expliquer, parce qu&rsquo;ils m&rsquo;ont coûté du temps.</p>



<p class="wp-block-paragraph"><strong><code>disk_adapter_type = "sata"</code>.</strong> C&rsquo;est le piège numéro un. Sans cette ligne, la VM démarre, l&rsquo;install Windows se lance, et tu arrives sur l&rsquo;écran de sélection du disque avec une liste <strong>vide</strong>. Aucun disque. Le disque existe, Packer l&rsquo;a créé, mais il est branché sur le contrôleur par défaut du builder, du <strong>LSI Logic</strong>, dont l&rsquo;ISO Windows 11 n&rsquo;a pas le pilote natif. Windows ne le voit pas. En SATA (AHCI), il est reconnu out of the box, sans charger de driver.</p>



<figure class="wp-block-image size-large"><img width="1024" height="399"  alt="" class="wp-image-410"/ loading="lazy" decoding="async" src="https://tazmenworld.com/wp-content/uploads/2026/07/image-18-1024x399.png" srcset="https://tazmenworld.com/wp-content/uploads/2026/07/image-18-1024x399.png 1024w, https://tazmenworld.com/wp-content/uploads/2026/07/image-18-300x117.png 300w, https://tazmenworld.com/wp-content/uploads/2026/07/image-18-768x299.png 768w, https://tazmenworld.com/wp-content/uploads/2026/07/image-18-1536x599.png 1536w, https://tazmenworld.com/wp-content/uploads/2026/07/image-18.png 1568w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"><strong><code>network_adapter_type = "e1000e"</code>.</strong> Même logique. L&rsquo;ISO Windows 11 n&#8217;embarque pas le driver VMXNET3. Si tu prends vmxnet3, la carte réseau n&rsquo;est pas reconnue pendant l&rsquo;install, et sans réseau, pas de WinRM. Le e1000e est reconnu nativement.</p>



<p class="wp-block-paragraph">Une fois le template en place, on initialise le plugin.</p>



<p class="wp-block-paragraph">[CODE : packer-init.ps1]</p>



<p class="wp-block-paragraph">powershell</p>



<pre class="wp-block-code"><code>packer init windows11.pkr.hcl</code></pre>



<figure class="wp-block-image size-large"><img width="1024" height="383"  alt="" class="wp-image-414"/ loading="lazy" decoding="async" src="https://tazmenworld.com/wp-content/uploads/2026/07/packer3-1024x383.jpg" srcset="https://tazmenworld.com/wp-content/uploads/2026/07/packer3-1024x383.jpg 1024w, https://tazmenworld.com/wp-content/uploads/2026/07/packer3-300x112.jpg 300w, https://tazmenworld.com/wp-content/uploads/2026/07/packer3-768x287.jpg 768w, https://tazmenworld.com/wp-content/uploads/2026/07/packer3.jpg 1502w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">IV. L&rsquo;autounattend, et la balise qui tue tout le fichier</h2>



<p class="wp-block-paragraph">L&rsquo;<code>autounattend.xml</code>, c&rsquo;est le fichier de réponses qui rend l&rsquo;install de Windows silencieuse. Il partitionne le disque, crée le compte, contourne les vérifications matérielles de Windows 11 et active WinRM. Packer le monte dans un petit CD que Windows détecte tout seul.</p>



<p class="wp-block-paragraph">Le contournement TPM et Secure Boot se fait en dur, via des clés de registre LabConfig écrites pendant la phase WinPE. C&rsquo;est ce qui évite d&rsquo;avoir à configurer un vTPM chiffré dans VMware, une vraie galère.</p>



<p class="wp-block-paragraph">[CODE : autounattend.xml (extrait bypass)]</p>



<p class="wp-block-paragraph">xml</p>



<pre class="wp-block-code"><code>&lt;RunSynchronous&gt;
  &lt;RunSynchronousCommand wcm:action="add"&gt;
    &lt;Order&gt;1&lt;/Order&gt;
    &lt;Path&gt;reg add "HKLM\System\Setup\LabConfig" /v BypassTPMCheck /t REG_DWORD /d 1 /f&lt;/Path&gt;
  &lt;/RunSynchronousCommand&gt;
  &lt;!-- idem pour BypassSecureBootCheck, BypassRAMCheck, BypassCPUCheck, BypassStorageCheck --&gt;
&lt;/RunSynchronous&gt;</code></pre>



<p class="wp-block-paragraph">Et voilà le piège numéro deux, un des plus vicieux. Sur mon premier build correct, l&rsquo;install s&rsquo;est déroulée, puis au premier reboot, écran bleu d&rsquo;erreur : « The computer restarted unexpectedly ». Plantage en phase specialize.</p>



<p class="wp-block-paragraph">La cause était planquée dans <code>C:\Windows\Panther\setuperr.log</code>, qu&rsquo;on lit avec un Shift+F10 dans la VM. Une ligne : <code>The provided unattend file is not valid</code> sur le composant <code>CEIPEnabled</code>. Cette balise a été <strong>supprimée</strong> de Windows 11 24H2. Elle n&rsquo;existe plus. Et le setup, au lieu de l&rsquo;ignorer, rejette <strong>tout</strong> le fichier autounattend à cause de cette seule ligne obsolète.</p>



<figure class="wp-block-image size-full"><img width="992" height="722"  alt="" class="wp-image-415"/ loading="lazy" decoding="async" src="https://tazmenworld.com/wp-content/uploads/2026/07/image-21.png" srcset="https://tazmenworld.com/wp-content/uploads/2026/07/image-21.png 992w, https://tazmenworld.com/wp-content/uploads/2026/07/image-21-300x218.png 300w, https://tazmenworld.com/wp-content/uploads/2026/07/image-21-768x559.png 768w" sizes="auto, (max-width: 992px) 100vw, 992px" /></figure>



<p class="wp-block-paragraph">Le truc à retenir : une seule balise obsolète invalide l&rsquo;autounattend entier. Si ton install plante en specialize, lis <code>setuperr.log</code>, il te donne le nom exact du composant fautif. On retire la ligne, et ça repart.</p>



<h3 class="wp-block-heading">V. Valider puis lancer le build</h3>



<p class="wp-block-paragraph">Avant de lancer un build qui va tourner vingt minutes, on valide. <code>packer validate</code> attrape les erreurs de syntaxe et les paramètres manquants en deux secondes, ça évite de découvrir un <code>X is required</code> après dix minutes d&rsquo;install Windows.</p>



<p class="wp-block-paragraph">[CODE : packer-validate.ps1]</p>



<p class="wp-block-paragraph">powershell</p>



<pre class="wp-block-code"><code>packer validate .\windows11.pkr.hcl</code></pre>



<p class="wp-block-paragraph">Tu veux lire <code>The configuration is valid.</code>. Si le plugin râle sur un champ obligatoire, tu corriges et tu revalides jusqu&rsquo;à ce que ce soit propre.</p>



<p class="wp-block-paragraph">Ensuite seulement, le build.</p>



<p class="wp-block-paragraph">[CODE : packer-build.ps1]</p>



<p class="wp-block-paragraph">powershell</p>



<pre class="wp-block-code"><code>packer build .\windows11.pkr.hcl</code></pre>



<p class="wp-block-paragraph">À partir de là, une fenêtre VMware Workstation s&rsquo;ouvre, la VM boote sur l&rsquo;ISO, et tout s&rsquo;enchaîne sans que tu touches à rien. Surveille juste les premières secondes, le prompt « Press any key to boot from CD » où Packer envoie le <code>&lt;enter&gt;</code>. Si la VM le rate et part dans un shell EFI, augmente <code>boot_wait</code> et relance. C&rsquo;est le réglage le plus capricieux du pipeline.</p>



<h2 class="wp-block-heading">VI. Le DHCP absent, le décrochage WinRM et l&rsquo;APIPA</h2>



<p class="wp-block-paragraph">Une fois Windows installé, Packer attend WinRM pour se connecter. Sur un de mes runs, il est resté bloqué sur <code>Waiting for WinRM to become available</code> sans fin, sans message d&rsquo;erreur. Le genre de blocage silencieux qui te fait perdre une heure.</p>



<p class="wp-block-paragraph">WinRM tournait pourtant dans la VM, le port 5985 répondait en local. Mais depuis l&rsquo;hôte, rien. La cause : la VM avait une adresse en <code>169.254.x.x</code>. Du <strong>APIPA</strong>. Autrement dit, elle n&rsquo;avait pas reçu de bail DHCP, parce que le service DHCP de VMware était désactivé sur mon poste. Sans IP routable, Packer ne peut pas la joindre.</p>



<figure class="wp-block-image size-full"><img width="857" height="572"  alt="" class="wp-image-421"/ loading="lazy" decoding="async" src="https://tazmenworld.com/wp-content/uploads/2026/07/image-22.png" srcset="https://tazmenworld.com/wp-content/uploads/2026/07/image-22.png 857w, https://tazmenworld.com/wp-content/uploads/2026/07/image-22-300x200.png 300w, https://tazmenworld.com/wp-content/uploads/2026/07/image-22-768x513.png 768w" sizes="auto, (max-width: 857px) 100vw, 857px" /></figure>



<p class="wp-block-paragraph">La réactivation du service DHCP côté hôte règle le problème.</p>



<p class="wp-block-paragraph">[CODE : fix-dhcp.ps1]</p>



<p class="wp-block-paragraph">powershell</p>



<pre class="wp-block-code"><code>Start-Service VMnetDHCP
Set-Service VMnetDHCP -StartupType Automatic</code></pre>



<p class="wp-block-paragraph">Note bien ce piège : un <code>Waiting for WinRM</code> qui ne finit jamais, ce n&rsquo;est presque jamais WinRM. C&rsquo;est le réseau. Vérifie l&rsquo;IP de la VM en premier. Et méfie-toi du ping : le pare-feu Windows bloque l&rsquo;ICMP par défaut, donc un ping qui échoue ne prouve rien. Le vrai test, c&rsquo;est le port, avec <code>Test-NetConnection -Port 5985</code>.</p>



<h2 class="wp-block-heading">VII. Les provisioners : Tools, langue, applis, et les reboots</h2>



<p class="wp-block-paragraph">On arrive au coeur du build. Le bloc <code>build</code> enchaîne les scripts PowerShell, avec des reboots entre les étapes sensibles. Et non, ces reboots ne sont pas gérés par Boxstarter, mais par le provisioner natif <code>windows-restart</code> de Packer. J&rsquo;y reviens juste après, c&rsquo;est important.</p>



<p class="wp-block-paragraph">[CODE : windows11.pkr.hcl (extrait build)]</p>



<p class="wp-block-paragraph">hcl</p>



<pre class="wp-block-code"><code>build {
  sources = &#91;"source.vmware-iso.win11"]

  provisioner "powershell" {
    scripts          = &#91;"./scripts/install-vmware-tools.ps1"]
    valid_exit_codes = &#91;0, 3010]
  }
  provisioner "windows-restart" {}

  provisioner "powershell" {
    scripts = &#91;"./scripts/setup-language-french.ps1"]
  }
  provisioner "windows-restart" {}

  provisioner "powershell" {
    scripts = &#91;"./scripts/install-choco-packages.ps1"]
  }
}</code></pre>



<h3 class="wp-block-heading">Les VMware Tools : oublie l&rsquo;upload WinRM, passe par choco</h3>



<p class="wp-block-paragraph">Première approche, j&rsquo;ai voulu faire uploader l&rsquo;ISO des Tools par Packer, via l&rsquo;option <code>tools_upload</code>. Mauvaise idée. L&rsquo;upload de fichiers par WinRM est <strong>lent et fragile</strong>. Sur une ISO de 130 Mo, il a bloqué complètement, rien n&rsquo;atterrissait dans la VM, dix minutes pour zéro octet écrit.</p>



<p class="wp-block-paragraph">La parade est plus simple et plus reproductible : installer les Tools par Chocolatey. Le package existe, il télécharge depuis le dépôt Broadcom, pas de gros transfert WinRM, pas de dépendance au chemin de ton install Workstation.</p>



<p class="wp-block-paragraph">[CODE : install-vmware-tools.ps1 (extrait)]</p>



<p class="wp-block-paragraph">powershell</p>



<pre class="wp-block-code"><code>choco install vmware-tools -y --no-progress</code></pre>



<p class="wp-block-paragraph">Le truc à retenir : pour tout artefact un peu lourd, le gestionnaire de paquets bat l&rsquo;upload WinRM. C&rsquo;est plus robuste, point.</p>



<h3 class="wp-block-heading">Le code 3010 : un succès pris pour une erreur</h3>



<p class="wp-block-paragraph">Piège suivant, et c&rsquo;est un classique Windows. Les VMware Tools s&rsquo;installent nickel, mais choco retourne le code de sortie <strong>3010</strong>. Ce code veut dire « succès, reboot nécessaire ». Or Packer considère par défaut que seul le code <code>0</code> est acceptable. Il prend donc ce 3010 pour un échec et coupe le build.</p>



<p class="wp-block-paragraph">D&rsquo;où le <code>valid_exit_codes = [0, 3010]</code> sur ce provisioner. On dit à Packer que 3010 est un succès valide. Ce code sort tout le temps avec les MSI et les features Windows, à connaître par coeur.</p>



<h3 class="wp-block-heading">La bascule en français, et la leçon la plus chère</h3>



<p class="wp-block-paragraph">Mon idée de départ : installer trois packs de langue, allemand, espagnol et français, puis passer le système en français. Bien pour le spectacle. Sauf que le spectacle m&rsquo;a coûté des heures.</p>



<p class="wp-block-paragraph"><code>Install-Language</code> tire chaque pack depuis Windows Update, plusieurs centaines de Mo, plus les Features on Demand (reconnaissance vocale, écriture manuscrite, OCR). Et ces FODs déclenchent en cascade une maintenance des composants Windows via TrustedInstaller qui <strong>ne finit jamais</strong> dans un délai raisonnable. Sur une image eval fraîche, j&rsquo;ai vu TrustedInstaller à plus de 13000 secondes de CPU, bloqué sur le deuxième pack après 30 minutes.</p>



<figure class="wp-block-image size-full"><img width="975" height="507"  alt="" class="wp-image-411"/ loading="lazy" decoding="async" src="https://tazmenworld.com/wp-content/uploads/2026/07/image-19.png" srcset="https://tazmenworld.com/wp-content/uploads/2026/07/image-19.png 975w, https://tazmenworld.com/wp-content/uploads/2026/07/image-19-300x156.png 300w, https://tazmenworld.com/wp-content/uploads/2026/07/image-19-768x399.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<p class="wp-block-paragraph">La correction, et c&rsquo;est aussi la bonne pratique pour une vraie golden image : une seule langue, le français, et sans les FODs lourds.</p>



<p class="wp-block-paragraph">[CODE : setup-language-french.ps1 (extrait)]</p>



<p class="wp-block-paragraph">powershell</p>



<pre class="wp-block-code"><code># -ExcludeFeatures evite les FODs (Speech, OCR, Handwriting)
# qui saturent TrustedInstaller pendant des heures.
Install-Language fr-FR -CopyToSettings -ExcludeFeatures

Set-WinUserLanguageList -LanguageList fr-FR -Force
Set-WinUILanguageOverride -Language fr-FR
Set-WinSystemLocale fr-FR
Set-SystemPreferredUILanguage fr-FR
Copy-UserInternationalSettingsToSystem -WelcomeScreen $true -NewUser $true</code></pre>



<p class="wp-block-paragraph">Le truc à retenir : ajouter des langues avec tous les FODs, c&rsquo;est le meilleur moyen de rendre ton build ininstallable. Une langue, <code>-ExcludeFeatures</code>, sauf besoin explicite d&rsquo;OCR ou de reconnaissance vocale.</p>



<figure class="wp-block-image size-large"><img width="1024" height="397"  alt="" class="wp-image-417"/ loading="lazy" decoding="async" src="https://tazmenworld.com/wp-content/uploads/2026/07/packer15-1024x397.jpg" srcset="https://tazmenworld.com/wp-content/uploads/2026/07/packer15-1024x397.jpg 1024w, https://tazmenworld.com/wp-content/uploads/2026/07/packer15-300x116.jpg 300w, https://tazmenworld.com/wp-content/uploads/2026/07/packer15-768x298.jpg 768w, https://tazmenworld.com/wp-content/uploads/2026/07/packer15-1536x595.jpg 1536w, https://tazmenworld.com/wp-content/uploads/2026/07/packer15-2048x793.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">Le piège dans le piège : la VM qui s&rsquo;endort</h3>



<p class="wp-block-paragraph">Et le plus vicieux pour la fin, celui que personne ne documente. Même avec <code>-ExcludeFeatures</code>, mon build a décroché à 43 minutes, en plein <code>Install-Language</code>, avec une erreur réseau brute : <code>wsarecv: the connected host has failed to respond</code>. WinRM coupé net.</p>



<p class="wp-block-paragraph">J&rsquo;ai cru à un problème de pile réseau. Faux. La vraie cause : <strong>la VM se mettait en veille.</strong> Pendant qu&rsquo;<code>Install-Language</code> mouline en silence, sans activité clavier ni souris, Windows applique son plan d&rsquo;alimentation et met la machine en veille. Le réseau tombe, Packer perd WinRM, le build meurt.</p>



<figure class="wp-block-image size-full"><img width="595" height="585"  alt="" class="wp-image-412"/ loading="lazy" decoding="async" src="https://tazmenworld.com/wp-content/uploads/2026/07/image-20.png" srcset="https://tazmenworld.com/wp-content/uploads/2026/07/image-20.png 595w, https://tazmenworld.com/wp-content/uploads/2026/07/image-20-300x295.png 300w" sizes="auto, (max-width: 595px) 100vw, 595px" /></figure>



<p class="wp-block-paragraph">La parade, à mettre en tout premier dans le pipeline : désactiver la veille via <code>powercfg</code>.</p>



<p class="wp-block-paragraph">[CODE : disable-sleep.ps1]</p>



<p class="wp-block-paragraph">powershell</p>



<pre class="wp-block-code"><code>powercfg /change standby-timeout-ac 0
powercfg /change standby-timeout-dc 0
powercfg /change monitor-timeout-ac 0
powercfg /change hibernate-timeout-ac 0
powercfg /setactive SCHEME_MIN</code></pre>



<p class="wp-block-paragraph">C&rsquo;est une ligne à mettre dans <strong>n&rsquo;importe quel</strong> pipeline de golden image Windows. Un provisioner long sur une VM qui s&rsquo;endort, ça décroche WinRM sans jamais te dire pourquoi. Note-le bien.</p>



<h3 class="wp-block-heading">Les applis, et le checksum qui casse tout seul</h3>



<p class="wp-block-paragraph">Dernier provisioner, les cinq applis via choco. Au départ, ma liste incluait Google Chrome. Erreur. Le package Chrome sur Chocolatey embarque un checksum figé du MSI, mais Google écrase le même fichier à chaque nouvelle version. Résultat, dès que le package est en retard d&rsquo;une release, le checksum ne correspond plus et l&rsquo;install échoue : <code>hashes do not match</code>.</p>



<p class="wp-block-paragraph">Pour un build reproductible, un paquet qui casse au gré des sorties de Google, c&rsquo;est exactement ce qu&rsquo;on ne veut pas. Je l&rsquo;ai remplacé par <strong>Firefox</strong>, qui n&rsquo;a pas ce souci. Et j&rsquo;ai rendu le script tolérant : un paquet qui échoue est loggé, mais ne fait plus planter tout le build.</p>



<p class="wp-block-paragraph">[CODE : install-choco-packages.ps1 (extrait)]</p>



<p class="wp-block-paragraph">powershell</p>



<pre class="wp-block-code"><code>$packages = @("7zip","notepadplusplus","firefox","git","vscode")
$failed = @()
foreach ($pkg in $packages) {
    choco install $pkg -y --no-progress
    if ($LASTEXITCODE -ne 0 -and $LASTEXITCODE -ne 3010) {
        Write-Warning "Echec de $pkg (code $LASTEXITCODE)"
        $failed += $pkg
    }
}</code></pre>



<h2 class="wp-block-heading">VIII. Et Boxstarter dans tout ça ?</h2>



<p class="wp-block-paragraph">J&rsquo;ai gardé Boxstarter pour la fin, parce que c&rsquo;est la nuance la plus honnête de cet article. Mon idée initiale était d&rsquo;utiliser Boxstarter pour gérer les reboots entre les étapes. Bonne intuition sur le papier, mais mauvaise dans un contexte Packer.</p>



<p class="wp-block-paragraph">Boxstarter gère les reboots via un autologon et une reprise du script en session interactive. Packer, lui, pilote la VM en WinRM, session <strong>non interactive</strong>. Quand Boxstarter reboote, la connexion WinRM de Packer tombe, et Packer ne voit pas la reprise Boxstarter qui se joue dans la session autologon. Les deux ne se coordonnent pas.</p>



<p class="wp-block-paragraph">En clair : dans un build Packer, l&rsquo;outil pour les reboots, c&rsquo;est <code>windows-restart</code>. Pas Boxstarter. Boxstarter brille quand tu provisionnes une machine <strong>en direct</strong>, hors Packer, par exemple un poste physique où tu veux enchaîner des installs qui rebootent et reprendre toutes seules.</p>



<p class="wp-block-paragraph">C&rsquo;est ça, la vraie leçon : deux outils qui semblent faire la même chose, mais chacun a son terrain. Je détaillerai le vrai cas d&rsquo;usage de Boxstarter, packs de langue et reboots en cascade sur une machine directe, dans un article séparé. Il mérite sa propre démo.</p>



<h2 class="wp-block-heading">Ce que je retiens</h2>



<p class="wp-block-paragraph">Le build final tourne d&rsquo;un bout à l&rsquo;autre sans intervention. Windows installé, VMware Tools, système en français, cinq applis, arrêt propre, image compactée. Voilà les chiffres, sans enjoliver.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Étape</th><th>Durée constatée</th></tr></thead><tbody><tr><td>Build de base (Windows + Tools + 5 applis)</td><td><strong>~24 min</strong></td></tr><tr><td>Même build avec 3 langues + FODs</td><td>décrochage à 43 min, jamais fini</td></tr><tr><td>Avec 1 langue et <code>-ExcludeFeatures</code></td><td>build qui repasse au vert</td></tr><tr><td>Gain du cache ISO sur les runs suivants</td><td>ISO déjà vérifiée, non retéléchargée</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Et la liste des pièges, parce que c&rsquo;est ça le vrai contenu de ce tuto, pas le template :</p>



<ul class="wp-block-list">
<li>Le contrôleur disque en <strong>SATA</strong>, sinon Windows ne voit aucun disque.</li>



<li>La balise <strong>CEIPEnabled</strong> obsolète en 24H2, qui invalide tout l&rsquo;autounattend.</li>



<li>Le <strong>DHCP VMware</strong> désactivé, qui envoie la VM en APIPA et bloque WinRM sans erreur claire.</li>



<li>Le code <strong>3010</strong> à whitelister, un succès pris pour un échec.</li>



<li>L&rsquo;<strong>upload WinRM</strong> d&rsquo;ISO qui bloque, à remplacer par choco.</li>



<li>Les <strong>FODs de langue</strong> qui saturent TrustedInstaller pendant des heures.</li>



<li>La <strong>veille</strong> de la VM qui décroche WinRM en plein provisioner long.</li>



<li>Le <strong>checksum Chrome</strong> volatil, à remplacer par Firefox.</li>



<li><strong>oscdimg</strong> de l&rsquo;ADK à mettre dans le PATH de façon permanente, sinon chaque console casse le build sur la création du CD.</li>
</ul>



<figure class="wp-block-image size-large"><img width="1024" height="401"  alt="" class="wp-image-416"/ loading="lazy" decoding="async" src="https://tazmenworld.com/wp-content/uploads/2026/07/packer14-1024x401.jpg" srcset="https://tazmenworld.com/wp-content/uploads/2026/07/packer14-1024x401.jpg 1024w, https://tazmenworld.com/wp-content/uploads/2026/07/packer14-300x117.jpg 300w, https://tazmenworld.com/wp-content/uploads/2026/07/packer14-768x301.jpg 768w, https://tazmenworld.com/wp-content/uploads/2026/07/packer14-1536x601.jpg 1536w, https://tazmenworld.com/wp-content/uploads/2026/07/packer14-2048x801.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Alors, est-ce que Packer vaut le coup pour une golden image Windows ? Oui, sans hésiter. Une fois le template stabilisé, tu reconstruis ton image parfaite en une commande, à l&rsquo;identique, autant de fois que tu veux. C&rsquo;est reproductible, c&rsquo;est versionnable, c&rsquo;est du vrai infrastructure as code.</p>



<p class="wp-block-paragraph">Mais le template propre que tu copies en trois minutes, il cache une journée de pièges que personne ne documente. La reproductibilité se paie une fois, à la mise au point. Après, elle est gratuite. Comme souvent, la vraie valeur n&rsquo;est pas dans la commande magique, elle est dans tout ce qu&rsquo;on ne te montre pas.</p>



<p class="wp-block-paragraph">A bientôt Louis 🐇 🤜 🤛 🐰</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://tazmenworld.com/2026/07/07/construire-une-golden-image-windows-11-avec-packer-chocolatey-et-boxstarter/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>VRAM Tuning (Partie 1) : Maximiser votre nouveau GPU pour l&#8217;IA (Headless &#038; Scripting)</title>
		<link>https://tazmenworld.com/2026/01/04/vram-tuning-partie-1-maximiser-votre-nouveau-gpu-pour-lia-headless-scripting/</link>
					<comments>https://tazmenworld.com/2026/01/04/vram-tuning-partie-1-maximiser-votre-nouveau-gpu-pour-lia-headless-scripting/#respond</comments>
		
		<dc:creator><![CDATA[tazmen3]]></dc:creator>
		<pubDate>Sun, 04 Jan 2026 09:44:48 +0000</pubDate>
				<category><![CDATA[Intelligence Artificielle (IA)]]></category>
		<category><![CDATA[Tips & Tutos]]></category>
		<guid isPermaLink="false">https://tazmenworld.com/?p=37</guid>

					<description><![CDATA[Introduction Noël est passé, le papier cadeau est à la poubelle, et pour les plus chanceux d’entre vous, une boîte verte et noire trône désormais dans le PC. Peut-être que le Père Noël a été d&#8217;une générosité indécente avec une&#160;RTX 4090&#160;ou la mythique&#160;RTX 5090&#160;:OOO. D&#8217;autres, plus raisonnables (ou comme moi, avec un budget d&#8217;ingénieur réaliste), [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img width="1024" height="572"  alt="" class="wp-image-45"/ loading="lazy" decoding="async" src="https://tazmenworld.com/wp-content/uploads/2026/01/91b16bb8-1350-43c9-ab0d-85659ba483ed.webp" srcset="https://tazmenworld.com/wp-content/uploads/2026/01/91b16bb8-1350-43c9-ab0d-85659ba483ed.webp 1024w, https://tazmenworld.com/wp-content/uploads/2026/01/91b16bb8-1350-43c9-ab0d-85659ba483ed-300x168.webp 300w, https://tazmenworld.com/wp-content/uploads/2026/01/91b16bb8-1350-43c9-ab0d-85659ba483ed-768x429.webp 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading"><strong>Introduction</strong></h2>



<p class="wp-block-paragraph">Noël est passé, le papier cadeau est à la poubelle, et pour les plus chanceux d’entre vous, une boîte verte et noire trône désormais dans le PC. Peut-être que le Père Noël a été d&rsquo;une générosité indécente avec une&nbsp;<strong>RTX 4090</strong>&nbsp;ou la mythique&nbsp;<strong>RTX 5090</strong>&nbsp;:OOO. D&rsquo;autres, plus raisonnables (ou comme moi, avec un budget d&rsquo;ingénieur réaliste), ont déballé une&nbsp;<strong>5070 Ti 16 Go</strong>.</p>



<p class="wp-block-paragraph"><strong>C&rsquo;est une belle pièce de silicium, mais j&rsquo;ai une mauvaise nouvelle si vous êtes sous Windows : vous l&rsquo;utilisez mal.</strong></p>



<p class="wp-block-paragraph">En plus, soyons honnêtes un instant : Windows 11, c&rsquo;est un peu le&nbsp;<strong>Windows Millennium</strong>&nbsp;des années 2025 (les « vieux cons » comme moi comprendront la douleur de cette référence).</p>



<p class="wp-block-paragraph">Dans le monde de l&rsquo;infrastructure IA locale, avoir du hardware, c&rsquo;est bien. Savoir l&rsquo;optimiser, c&rsquo;est mieux. La majorité des utilisateurs « gâchent » une quantité astronomique de VRAM (Video RAM) simplement pour afficher leur fond d&rsquo;écran. Dans cette série d&rsquo;articles, dont voici la&nbsp;<strong>Partie 1</strong>, nous allons voir comment récupérer cette mémoire précieuse pour ce qui compte vraiment : l&rsquo;entraînement et l&rsquo;inférence de vos modèles, et non l&rsquo;affichage de l&rsquo;interface de cet OS capricieux.</p>



<h2 class="wp-block-heading" id="heading-1-analyse-technique-la-taxe-daffichage-windows">1. Analyse Technique : La « Taxe d&rsquo;Affichage » Windows</h2>



<p class="wp-block-paragraph">Pourquoi cette optimisation est-elle critique ? Parce que la VRAM est une ressource finie et non extensible. Contrairement à la RAM système où l&rsquo;on peut rajouter une barrette (de toute façon vu le prix c’est mort :D), votre RTX 5070 Ti restera bloquée à 16 Go.</p>



<p class="wp-block-paragraph">Dès que vous branchez un câble HDMI sur votre GPU dédié (dGPU), le sous-système graphique de Windows (WDDM &#8211; Windows Display Driver Model) s&rsquo;approprie une partie de la mémoire pour gérer le DWM (Desktop Window Manager).</p>



<p class="wp-block-paragraph"><strong>Le constat est technique et douloureux :</strong>&nbsp;Regardez cette capture d&rsquo;une RTX 5070 Ti au repos, simplement connectée à un écran sous Windows.</p>



<figure class="wp-block-image size-large"><img width="1024" height="252"  alt="" class="wp-image-38"/ loading="lazy" decoding="async" src="https://tazmenworld.com/wp-content/uploads/2026/01/image-1024x252.png" srcset="https://tazmenworld.com/wp-content/uploads/2026/01/image-1024x252.png 1024w, https://tazmenworld.com/wp-content/uploads/2026/01/image-300x74.png 300w, https://tazmenworld.com/wp-content/uploads/2026/01/image-768x189.png 768w, https://tazmenworld.com/wp-content/uploads/2026/01/image.png 1174w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<ul class="wp-block-list">
<li><strong>Idle Consumption :</strong> Comme vous le voyez ci-dessus, Windows vampirise ici <strong>1,6 Go</strong> juste pour exister.</li>



<li><strong>Impact IA :</strong> Sur un LLM, ces 1,6 Go sont la différence entre charger un modèle 13B ou crasher avec une erreur <code>CUDA out of memory</code>.</li>



<li><strong>Spillover :</strong> Quand la VRAM est pleine, le système déborde sur la RAM classique. On passe d&rsquo;une bande passante de ~1000 Go/s à ~60 Go/s. C&rsquo;est la mort des performances.</li>
</ul>



<h2 class="wp-block-heading" id="heading-2-impacts-sur-linfrastructure-physique-layer-1">2. Impacts sur l&rsquo;Infrastructure Physique (Layer 1)</h2>



<p class="wp-block-paragraph">L&rsquo;optimisation commence par le câblage. L&rsquo;objectif est de séparer les rôles : le&nbsp;<strong>Control Plane</strong>&nbsp;(Affichage OS) et le&nbsp;<strong>Data Plane</strong>&nbsp;(Calcul IA).</p>



<h3 class="wp-block-heading" id="heading-la-strategie-du-headless-hybride">La stratégie du « Headless Hybride »</h3>



<p class="wp-block-paragraph">C&rsquo;est quelque chose qui paraît logique, mais que peu de monde fait :&nbsp;<strong>débrancher la carte vidéo du moniteur</strong>. L&rsquo;idée est d&rsquo;utiliser l&rsquo;iGPU (la puce graphique intégrée à votre processeur Intel ou AMD Ryzen) pour gérer l&rsquo;affichage de Windows. Ainsi, votre monstre de puissance (la RTX) reste « Headless » (sans tête), 100% disponible pour PyTorch ou TensorFlow.</p>



<h3 class="wp-block-heading" id="heading-la-gestion-du-flux-video">La gestion du flux vidéo</h3>



<p class="wp-block-paragraph">On ne va pas passer notre vie à quatre pattes sous le bureau pour débrancher le HDMI. La solution infra pragmatique, c&rsquo;est le&nbsp;<strong>Switch HDMI</strong>&nbsp;ou le&nbsp;<strong>KVM</strong>.</p>



<figure class="wp-block-image size-large"><img width="1024" height="555"  alt="" class="wp-image-39"/ loading="lazy" decoding="async" src="https://tazmenworld.com/wp-content/uploads/2026/01/image-1-1024x555.png" srcset="https://tazmenworld.com/wp-content/uploads/2026/01/image-1-1024x555.png 1024w, https://tazmenworld.com/wp-content/uploads/2026/01/image-1-300x163.png 300w, https://tazmenworld.com/wp-content/uploads/2026/01/image-1-768x416.png 768w, https://tazmenworld.com/wp-content/uploads/2026/01/image-1-1536x832.png 1536w, https://tazmenworld.com/wp-content/uploads/2026/01/image-1.png 1711w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">ce type de modèle se trouve souvent dans les 20 euros</p>



<figure class="wp-block-image size-large"><img width="1024" height="379"  alt="" class="wp-image-40"/ loading="lazy" decoding="async" src="https://tazmenworld.com/wp-content/uploads/2026/01/image-2-1024x379.png" srcset="https://tazmenworld.com/wp-content/uploads/2026/01/image-2-1024x379.png 1024w, https://tazmenworld.com/wp-content/uploads/2026/01/image-2-300x111.png 300w, https://tazmenworld.com/wp-content/uploads/2026/01/image-2-768x284.png 768w, https://tazmenworld.com/wp-content/uploads/2026/01/image-2-1536x568.png 1536w, https://tazmenworld.com/wp-content/uploads/2026/01/image-2.png 1630w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading" id="heading-le-piege-du-simple-debranchement">Le piège du simple débranchement</h3>



<p class="wp-block-paragraph">Une fois l&rsquo;écran basculé sur la carte mère (iGPU) et la RTX physiquement « débranchée » (via le switch), on s&rsquo;attend à récupérer 100% de la VRAM.&nbsp;<strong>Erreur.</strong></p>



<p class="wp-block-paragraph">Regardez ce qu&rsquo;il se passe quand on coupe juste l&rsquo;affichage :</p>



<figure class="wp-block-image size-full"><img width="991" height="283"  alt="" class="wp-image-41"/ loading="lazy" decoding="async" src="https://tazmenworld.com/wp-content/uploads/2026/01/image-3.png" srcset="https://tazmenworld.com/wp-content/uploads/2026/01/image-3.png 991w, https://tazmenworld.com/wp-content/uploads/2026/01/image-3-300x86.png 300w, https://tazmenworld.com/wp-content/uploads/2026/01/image-3-768x219.png 768w" sizes="auto, (max-width: 991px) 100vw, 991px" /></figure>



<p class="wp-block-paragraph">On voit bien qu&rsquo;il reste&nbsp;<strong>0,5 Go</strong>&nbsp;de mémoire fantôme utilisée. Windows garde la carte « prête à dégainer » et certains processus d&rsquo;arrière-plan (Nvidia Container, etc.) squattent toujours la mémoire. C&rsquo;est là que l&rsquo;automatisation logicielle devient indispensable pour aller chercher les derniers méga-octets.</p>



<h2 class="wp-block-heading" id="heading-3-recommandations-automatisation-et-scripting">3. Recommandations : Automatisation et Scripting</h2>



<p class="wp-block-paragraph">Une fois le câble géré, il faut nettoyer la couche logicielle. Même sans écran, certains processus continuent d&rsquo;allouer de la mémoire. Pour éviter de modifier le BIOS à chaque fois, j&rsquo;ai développé une solution d&rsquo;automatisation.</p>



<h3 class="wp-block-heading" id="heading-le-script-powershell-de-bascule-switch">Le Script PowerShell de Bascule (Switch)</h3>



<p class="wp-block-paragraph">Voici le code pour votre boîte à outils&nbsp;<code>SysAdmin</code>. Il modifie le registre pour le&nbsp;<em>Hardware Scheduling</em>&nbsp;et désactive/active le périphérique via&nbsp;<code>pnputil</code>.</p>



<p class="wp-block-paragraph">Fichier :&nbsp;<code>GPU_Switch.ps1</code></p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>Clear-Host
Write-Host "=== RTX 30/40/50XX Headless Switch (IA/Gaming) ===" -ForegroundColor Green
Write-Host "1: Headless ON (AI optimized - iGPU)" -ForegroundColor Cyan
Write-Host "2: Headless OFF (Gaming RTX)" -ForegroundColor Yellow
$choice = Read-Host "Choix (1/2)"

if ($choice -eq "1") {
    Write-Host "→ Headless IA ON..." -ForegroundColor Green
    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\GraphicsDrivers" -Name "HwSchMode" -Value 2
    pnputil /disable-device "PCI\VEN_10DE*DEV_*" | Out-Null
    Write-Host "Reboot en 5s... (VRAM 100% IA après)" -ForegroundColor Green
    Start-Sleep 5; Restart-Computer -Force
}
elseif ($choice -eq "2") {
    Write-Host "→ Gaming RTX ON..." -ForegroundColor Yellow
    pnputil /enable-device "PCI\VEN_10DE*DEV_*" | Out-Null
    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\GraphicsDrivers" -Name "HwSchMode" -Value 1
    Write-Host "Reboot en 5s... (RTX display after)" -ForegroundColor Yellow
    Start-Sleep 5; Restart-Computer -Force
} else {
    Write-Host "Invalid choice!" -ForegroundColor Red; Start-Sleep 2; &amp; $MyInvocation.MyCommand.Path
}</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #88C0D0">Clear-Host</span></span>
<span class="line"><span style="color: #88C0D0">Write-Host</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">=== RTX 30/40/50XX Headless Switch (IA/Gaming) ===</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF">ForegroundColor Green</span></span>
<span class="line"><span style="color: #88C0D0">Write-Host</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">1: Headless ON (AI optimized - iGPU)</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF">ForegroundColor Cyan</span></span>
<span class="line"><span style="color: #88C0D0">Write-Host</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">2: Headless OFF (Gaming RTX)</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF">ForegroundColor Yellow</span></span>
<span class="line"><span style="color: #81A1C1">$</span><span style="color: #D8DEE9">choice</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">Read-Host</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Choix (1/2)</span><span style="color: #ECEFF4">&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #81A1C1">if</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">(</span><span style="color: #81A1C1">$</span><span style="color: #D8DEE9">choice</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-eq</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">1</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">)</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #88C0D0">Write-Host</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">→ Headless IA ON...</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF">ForegroundColor Green</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #88C0D0">Set-ItemProperty</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF">Path </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">HKLM:\SYSTEM\CurrentControlSet\Control\GraphicsDrivers</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF">Name </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">HwSchMode</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF">Value </span><span style="color: #B48EAD">2</span></span>
<span class="line"><span style="color: #D8DEE9FF">    pnputil </span><span style="color: #81A1C1">/</span><span style="color: #88C0D0">disable-device</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">PCI\VEN_10DE*DEV_*</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">|</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">Out-Null</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #88C0D0">Write-Host</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Reboot en 5s... (VRAM 100% IA après)</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF">ForegroundColor Green</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #88C0D0">Start-Sleep</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">5</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">Restart-Computer</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF">Force</span></span>
<span class="line"><span style="color: #ECEFF4">}</span></span>
<span class="line"><span style="color: #81A1C1">elseif</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">(</span><span style="color: #81A1C1">$</span><span style="color: #D8DEE9">choice</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-eq</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">2</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">)</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #88C0D0">Write-Host</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">→ Gaming RTX ON...</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF">ForegroundColor Yellow</span></span>
<span class="line"><span style="color: #D8DEE9FF">    pnputil </span><span style="color: #81A1C1">/</span><span style="color: #88C0D0">enable-device</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">PCI\VEN_10DE*DEV_*</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">|</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">Out-Null</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #88C0D0">Set-ItemProperty</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF">Path </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">HKLM:\SYSTEM\CurrentControlSet\Control\GraphicsDrivers</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF">Name </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">HwSchMode</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF">Value </span><span style="color: #B48EAD">1</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #88C0D0">Write-Host</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Reboot en 5s... (RTX display after)</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF">ForegroundColor Yellow</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #88C0D0">Start-Sleep</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">5</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">Restart-Computer</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF">Force</span></span>
<span class="line"><span style="color: #ECEFF4">}</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">else</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #88C0D0">Write-Host</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Invalid choice!</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF">ForegroundColor Red</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">Start-Sleep</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">2</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">&amp;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">$</span><span style="color: #D8DEE9FF">MyInvocation</span><span style="color: #D8DEE9">.MyCommand.Path</span></span>
<span class="line"><span style="color: #ECEFF4">}</span></span></code></pre></div>



<p class="wp-block-paragraph">Et j’exécute le script powershell avec un batch ou j’ai mis le raccourci sur le bureau à exécuter en administrateur :</p>



<p class="wp-block-paragraph">Fichier :&nbsp;<code>GPU_Switch.bat</code></p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>@echo off
powershell -ExecutionPolicy Bypass -WindowStyle Maximized -File "%~dp0GPU_Switch.ps1"
pause</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #88C0D0">@echo</span><span style="color: #D8DEE9FF"> </span><span style="color: #A3BE8C">off</span></span>
<span class="line"><span style="color: #88C0D0">powershell</span><span style="color: #D8DEE9FF"> </span><span style="color: #A3BE8C">-ExecutionPolicy</span><span style="color: #D8DEE9FF"> </span><span style="color: #A3BE8C">Bypass</span><span style="color: #D8DEE9FF"> </span><span style="color: #A3BE8C">-WindowStyle</span><span style="color: #D8DEE9FF"> </span><span style="color: #A3BE8C">Maximized</span><span style="color: #D8DEE9FF"> </span><span style="color: #A3BE8C">-File</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">%~dp0GPU_Switch.ps1</span><span style="color: #ECEFF4">&quot;</span></span>
<span class="line"><span style="color: #88C0D0">pause</span></span></code></pre></div>



<h3 class="wp-block-heading" id="heading-le-resultat-final">Le Résultat Final</h3>



<p class="wp-block-paragraph">Une fois le mode « Headless » activé via le script et le câble basculé sur l&rsquo;iGPU, voici l&rsquo;état de la même carte RTX 5070 Ti :</p>



<figure class="wp-block-image size-large"><img width="1024" height="222"  alt="" class="wp-image-42"/ loading="lazy" decoding="async" src="https://tazmenworld.com/wp-content/uploads/2026/01/image-4-1024x222.png" srcset="https://tazmenworld.com/wp-content/uploads/2026/01/image-4-1024x222.png 1024w, https://tazmenworld.com/wp-content/uploads/2026/01/image-4-300x65.png 300w, https://tazmenworld.com/wp-content/uploads/2026/01/image-4-768x167.png 768w, https://tazmenworld.com/wp-content/uploads/2026/01/image-4.png 1207w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading" id="heading-conclusion">Conclusion</h2>



<p class="wp-block-paragraph">Conclusion et Résultats : L&rsquo;Efficacité au Service de la Performance</p>



<p class="wp-block-paragraph">Après avoir mis en place ces optimisations et configuré l&rsquo;environnement en mode « headless » avec les scripts appropriés, les résultats sont sans appel. Cette approche ne se contente pas de libérer de la ressource brute, elle transforme radicalement le workflow d&rsquo;entraînement.</p>



<h3 class="wp-block-heading">1. Un Gain de Temps Majeur</h3>



<p class="wp-block-paragraph">L&rsquo;optimisation de la gestion des ressources a un impact direct sur la rapidité d&rsquo;exécution. Sur un cycle d&rsquo;entraînement lourd qui nécessitait auparavant <strong>8 heures</strong>, le temps de traitement est descendu à <strong>5 heures</strong>. Cette réduction de près de 40 % permet d&rsquo;accélérer les itérations de recherche et de développement de manière significative.</p>



<h3 class="wp-block-heading">2. Libération Totale de la VRAM</h3>



<p class="wp-block-paragraph">L&rsquo;un des plus grands défis en scripting IA est de s&rsquo;assurer que les ressources sont correctement restituées au système une fois la tâche terminée. Grâce au déchargement dynamique et à la suppression des processus graphiques inutiles, l&rsquo;utilisation de la VRAM retombe pratiquement à <strong>0 %</strong> (seulement 222 Mo utilisés sur 16 Go, soit 1,4 %) dès que l&rsquo;entraînement s&rsquo;arrête. Cela garantit que la carte est immédiatement prête pour une nouvelle tâche sans nécessiter de redémarrage ou de nettoyage manuel des processus « zombies ».</p>



<h3 class="wp-block-heading">3. Sobriété Énergétique</h3>



<p class="wp-block-paragraph">Enfin, la gestion thermique et électrique est optimisée. En mode veille (idle), une fois les scripts terminés, la consommation de la carte tombe sous la barre des <strong>24W</strong>. Pour une carte de cette puissance (capable de monter jusqu&rsquo;à 300W), ce niveau de consommation est extrêmement raisonnable, permettant de laisser le serveur tourner H24 sans impact écologique ou financier démesuré.<br></p>



<figure class="wp-block-image size-full"><img width="330" height="301"  alt="" class="wp-image-43"/ loading="lazy" decoding="async" src="https://tazmenworld.com/wp-content/uploads/2026/01/image-5.png" srcset="https://tazmenworld.com/wp-content/uploads/2026/01/image-5.png 330w, https://tazmenworld.com/wp-content/uploads/2026/01/image-5-300x274.png 300w" sizes="auto, (max-width: 330px) 100vw, 330px" /></figure>



<p class="wp-block-paragraph">En maîtrisant ainsi votre VRAM et vos scripts de déchargement, vous ne maximisez pas seulement la puissance de votre GPU : vous optimisez sa durée de vie et votre propre productivité.</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://tazmenworld.com/2026/01/04/vram-tuning-partie-1-maximiser-votre-nouveau-gpu-pour-lia-headless-scripting/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
