Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3993 connectés 

 


Quel titre pour notre topic ?


 
27.0 %
 10 votes
1.  Infra IA : aide au choix et troubleshot de LLM Locaux
 
 
8.1 %
 3 votes
2.  Infra IA : le topic qui reveil vos GPUs
 
 
13.5 %
 5 votes
3.  IA Locale : llama.cpp, VLLM, modèles, tuning! For science. You monster.
 
 
10.8 %
 4 votes
4.  IA Locale : dresseurs de vRAM, LLM, CUDA, RocM, MLX Llama.cpp de père en fils
 
 
10.8 %
 4 votes
5.  IA Locale : votre IA selon vos termes ! (sous condition de ressources en vRAM)
 
 
5.4 %
 2 votes
6.  IA Locale : vous aussi venez mesurer votre pouvoir d'achat en HBM / GDDR / LPDDR / DDR / SDRam / EDO ...
 
 
13.5 %
 5 votes
7.  IA Locale : aucun GPU ni LLM n'a été maltraité pour cette inférence
 
 
8.1 %
 3 votes
8.  IA Locale : joignez l'inférence au chauffage de votre domicile !
 
 
2.7 %
    1 vote
9.  IA Locale : la generation generative au bercail
 

Total : 39 votes (2 votes blancs)
Sondage à 8 choix possibles.
Ce sondage est clos, vous ne pouvez plus voter
 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  36  37  38  39  40  41
Auteur Sujet :

Infra IA : aide au choix et troubleshot de LLM Locaux

n°45634
yohaskan
Posté le 19-08-2026 à 11:37:01  profilanswer
 

Reprise du message précédent :
Tu as combien de VRam déja ? 16GB   ?
Les gemma4 12B devrait passer en Q4,
gemma-4-12B-it-Q4_K_M.gguf
 
et si tu veux un bon MoE (Mixture of Expert ; 3 milliards de paramètre actif (les experts) sur les 35 milliards de paramètres du model "sa connaissance globale" )  
Qwen3.6-35B-A3B-MTP-GGUF mais la c'est du 20Go donc ca va deborder de tes 16 Go de Vram... Faut voir si le débit te va
en attendant un futur Qwen3.8-35B-A3B-MTP-GGUF

Message cité 1 fois
Message édité par yohaskan le 19-08-2026 à 11:44:01
n°45635
bifidusse
(actif)
Posté le 19-08-2026 à 11:46:38  profilanswer
 

yohaskan a écrit :

Tu as combien de VRam déja ? 16GB   ?
Les gemma4 12B devrait passer en Q4,
gemma-4-12B-it-Q4_K_M.gguf
 
et si tu veux un bon MoE
Qwen3.6-35B-A3B-MTP-GGUF
en attendant un futur Qwen3.8-35B-A3B-MTP-GGUF


 
J'utilise 2 machines.  
 
Mon fixe pour la vraie exploration des capacités d'une IA locale. Lui il a 16GB de VRAM et 48GB de ram.
 
J'expérimente aussi sur mon portable. Au départ j'ai commencé avec lui avant de me rendre compte qu'une IA est très gourmande. Mais ça m'intéresse quand même de pouvoir faire tourner "quelque chose". Par ex. ici je viens de lui demander de me résumer un article en anglais en ligne. C'est moyennement rapide (10token/s) mais utilisable. Et pour mon petit portable bureautique pas gamer avec 16GB de ram, j'ai installé un gemma-4-E2B que je teste avec Unsloth.  
 
Là où je galérais à faire comprendre à Anything LLM avec un "gros" modèle qu'il devait aller lire une url et pas seulement broder sur les mots dans l'url, avec Unsloth et un tout petit modèle, ça marche tout de suite ou presque.  
 
Je continue à chercher, comprendre et faire plein d'erreurs  :whistle:

n°45638
lapin
Posté le 19-08-2026 à 12:11:14  profilanswer
 

bifidusse a écrit :


 
 
Tellement de choses à apprendre encore, que j'ai.
 
Je pensais qu'Ollama était la solution open-source favorite pour faire de l'IA locale.
 
J'ai installé Unsloth Desktop (même si visiblement à la base c'était un conteneur Docker, c'est comme Anything LLM, ils ont aussi leur version desktop (?) ) pour tester. Il semblait plus directement utilisable qu'Open web UI ou Anything.  
 
Quoi qu'il en soit, je ne suis pas parvenu à le connecter à Ollama. Et en creusant j'apprends qu'Ollama stocke les modèles de manière chiffrée (? - c'est ce qu'une... IA m'a répondu) et qu'il vaut mieux le GGUF. edit : ah ben non, finalement Unsloth Desktop liste bien les modèles Ollama dans ModelHub/On device mais pas dans la liste déroulante (même si je choisis On device). Il mentionne que les modèles sont des GGUF. Par contre il ne veut pas me les charger. Bon, je chercherai plus tard.
 
Donc, le GGUF est le fichier de base, Ollama en fait une version perso qu'il est le seul à pouvoir gérer. Ce GGUF on peut aussi le télécharger soi-même mais il doit être modifié / compilé / autre participe passé d'un verbe en er pour être utilisable via un modelfile.
 
Je raconte probablement n'importe quoi, c'est juste mon état de compréhension actuel  :lol:  
 
Quoi qu'il en soit, j'ai installé un gemma-4-E2B-it-GGUF en Q4 (je teste sur mon portable sans carte dédiée  :D ) qui était dans les modèles conseillés pour mon matériel (pratique).
 
Il y a un bouton "search" (comme dans Lumo au début). Si je l'active et que je demande simplement "cherche sur Internet", il trouve.
 
Plus précisément :
- il ne sait pas qui a chanté Morgane de toi (mais ne répond pas Mylène Farmer, Pierre Perret, Garou, Céline Dion, sisi, j'ai déjà tout eu)
- il trouve avec une recherche (vous me direz, c'est bien le moins, j'aurais été plus vite en allant directement sur un moteur / bon, je connaissais déjà la réponse, c'est pas la question, si je puis dire)
 
Résultat des courses :
- je progresse : j'ai une IA locale qui peut réfléchir ET aller sur Internet pour trouver la réponse au besoin ;
- Unsloth semble prometteur (recherche facile, je pourrais améliorer mon modèle (?)


 
 
Ton application, a-t-elle accès à Web? parce que des fois c'est nécessaire, par exemple là je suis sur le modèle de langage google/gemma-4-e4b.
 
Quand j'ai réussis à tiré les vers du nez à LM STUDIO chargé avec le modèle de langage google/gemma-4-e4b en local, celui-ci m'a avoué que sa base de connaissance s'arrêtait quelques par entre début 2023 à début 2024.
Faut le savoir que la base est ville de plus de deux ans.
 
 
Chez moi avec l'application LM STDUIO et le LLM google/gemma-4-e4b et un accès web via Web Tools Plugin for LM Studio, il a trouvé ceci:

Citation :


google/gemma-4-e4b
Thought for 10.69 seconds
 
 
 
 
 
 
 
Web Search
 
npacker/web-tools
 
 
 
 
Thought for 4.61 seconds
 
 
 
La chanson "Morgane de toi" a été chantée par Renaud.
 
Elle est sortie en 1983 sur son album du même nom.
 


 
 
Donc, il vaudrait mieux que tu installes soit des plugins WEB ou des plugins MCP et un serveur MCP :
 
DuckDuckGo Reworked v2 for LM Studio https://lmstudio.ai/a1adu6ek/duck-duck-go-reworked-v2
Web Tools Plugin for LM Studio https://lmstudio.ai/npacker/web-tools
 
 En théorie un serveur MCP est plus agile et moins risqué qu'un plugin web pour ne pas se faire griller par Google ou autre moteurs de recherche pour avoir lancé trop de recherches, parce qu'avec un plugin web l'ennui c'est que tu fais les recherches via l'IP de ton FAI et si tu fais trop de requêtes tu es grillé pendant plusieurs heures.
 
Pour ma configuration, j'ai fait plusieurs tests de prompts, or pour le moment j'ai trouvé que Web Tools Plugin for LM Studio était moins lourd et plus rapide que DuckDuckGo Reworked v2 for LM Studio.
 
Aussi pour un accès au web dans LM STUDIO puis dans chat puis le volet tout à droite, puis dans Configuration à Modèle de Paramètres enregistre un pré-réglage, puis à Message Système: écrit le prompte suivant:

Citation :


use internet.
Use [insère ici le modèle de langage que tu as chargé dans LM STUDIO].
investing.com c'est cette structure de lien https://fr.investing.com
 
si un site internet ne fonctionne pas avec la structure https://www alors tente la structure de lien https://  
donc sans www.
 


 
Des fois il faut le forcer à utiliser internet même quand les plugins web ou MCP sont correctement configurés et activés, parfois faut le forcer à utiliser le modèle de langage que tu as chargé et pas un autre genre Llama.cpp qui lui est CPU Only et donc très lent.

Message cité 2 fois
Message édité par lapin le 19-08-2026 à 12:16:40
n°45639
the_fennec
f3nn3cUs z3rd4
Posté le 19-08-2026 à 12:24:40  profilanswer
 

lapin a écrit :

Des fois il faut le forcer à utiliser internet même quand les plugins web ou MCP sont correctement configurés et activés, parfois faut le forcer à utiliser le modèle de langage que tu as chargé et pas un autre genre Llama.cpp qui lui est CPU Only et donc très lent.


 
Ollama, LMStudio, Unsloth, etc. utilisent tous llama.cpp, donc je comprends pas trop ce que tu veux dire.


---------------
Faudra que je teste un jour :o
n°45640
Tronklou
❤❤ Vrp Bambulab à mi-temps ❤❤
Posté le 19-08-2026 à 12:32:39  profilanswer
 

Je viens de capter que les cm a base de c612 sont pas chere, je cumule ma ddr4 ecc et paf j'ai un vrai 2*16 ligne pcie pour deux gpu.
 
A ce compte là au final vaut mieux 2*5070ti qu'une seule r9700.
 
Mais je me coupe la possibilité d'upgrade avec une éventuelle r9700 supplémentaire dans le futur.
 
Mais je suis déjà pauvre rien qu'a compter combien tout cela coûte.
 
Le choix est cornélien [:geert]

Message cité 1 fois
Message édité par Tronklou le 19-08-2026 à 12:33:00

---------------
Victime de girafophobie, mais se soigne.
n°45644
bifidusse
(actif)
Posté le 19-08-2026 à 13:17:02  profilanswer
 

lapin a écrit :


 
 
Ton application, a-t-elle accès à Web? parce que des fois c'est nécessaire, par exemple là je suis sur le modèle de langage google/gemma-4-e4b.
 
(...)
 En théorie un serveur MCP est plus agile et moins risqué qu'un plugin web pour ne pas se faire griller par Google ou autre moteurs de recherche pour avoir lancé trop de recherches, parce qu'avec un plugin web l'ennui c'est que tu fais les recherches via l'IP de ton FAI et si tu fais trop de requêtes tu es grillé pendant plusieurs heures.
 
(...)


 
En résumé j'avais du mal à faire en sorte que le modèle que j'utilisais avec AnythingLLM aille sur le web. ALLM intègre dans ses paramètres la possibilité de donner accès (sont prévus duckduckgo, searx, des trucs dédiés IA si j'ai bien compris comme tavily - je dis ça de mémoire). Même en changeant le prompt de base (celui dans les settings), même en disant explicitement "va sur le web", ça ne marchait qu'une fois sur 10 (et avec je ne sais plus quel modèle).
 
J'aime bien chipoter mais je suis avant tout un humain de base : j'aime la simplicité  :lol: Ici Unsloth va sur le web sans chipoter, donc je prends.  
 
À ce stade du moins, j'imagine que je ferai évoluer la chose, je retiens ta remarque sur les "trop de recherches"  :)
 
Mais pour le moment ça remplit mon "besoin" de pouvoir utiliser un petit modèle et une recherche web.

n°45646
lapin
Posté le 19-08-2026 à 13:21:32  profilanswer
 

the_fennec a écrit :


 
Ollama, LMStudio, Unsloth, etc. utilisent tous llama.cpp, donc je comprends pas trop ce que tu veux dire.


 
 
Llama.CPP est le moteur de l'application. Parfois, il arrive que bien que la configuration indique d'utiliser le GPU en priorité le moteur Llama.CPP cependant pourrait tout rediriger sur le CPU, même si Offload KV-Cache Memory to GPU est bien activé et que le déchargement GPU est supérieur à 0 par exemple à 42 , alors l'information n'est peut être plus d'actualité au vu des nouvelles versions à la fois de LM STUDIO et du moteur Llama.cpp, car Gemini ne scroll pas internet en temps réel y a quelques jours de retard, donc ce que j'ai dit n'est peut-être plus d'actualité.
 
En fait c'est une précaution, même si plus d'actualité.

n°45651
the_fennec
f3nn3cUs z3rd4
Posté le 19-08-2026 à 13:54:31  profilanswer
 

lapin a écrit :


 
 
Llama.CPP est le moteur de l'application. Parfois, il arrive que bien que la configuration indique d'utiliser le GPU en priorité le moteur Llama.CPP cependant pourrait tout rediriger sur le CPU, même si Offload KV-Cache Memory to GPU est bien activé et que le déchargement GPU est supérieur à 0 par exemple à 42 , alors l'information n'est peut être plus d'actualité au vu des nouvelles versions à la fois de LM STUDIO et du moteur Llama.cpp, car Gemini ne scroll pas internet en temps réel y a quelques jours de retard, donc ce que j'ai dit n'est peut-être plus d'actualité.
 
En fait c'est une précaution, même si plus d'actualité.


 
Le problème vient de LMStudio qui fait de la merde dans sa config, rien a voir avec llama.cpp. Gemini dit n'importe quoi aussi, même sur des vieux réglages, il me propose régulièrement des options qui n'existent pas ou ne fonctionnent pas du tout comme il le dit. Au final, je pense avoir perdu plus de temps qu'autre chose avec Gemini et les réglages de llama.cpp.


---------------
Faudra que je teste un jour :o
n°45660
yohaskan
Posté le 19-08-2026 à 14:35:25  profilanswer
 

Je sais pas pour vous, mais ce Qwen3.8 27B est...  
Il change mes habitudes.
D'habitude, je pouvais garder un œil sur Vscode et contrôler ce que le LLM fait.  
Mais là, il réfléchi a fond pendant 15...20mn... tout en testant, lisant, codant...
Je n'ai pas fini de survoler ce qu'il a chercher à faire, qu'il est déjà 3 fois plus loin a tester, coder autre chose...  
- Je pose une question de 2 lignes, et il me sort un pavé pertinent de 100 lignes mais 5mn plus tard (et je n'ai pas a me plaindre en local à 100Token/s...)  
j'ose plus trop l’interrompre
Et pourquoi se plaindre ?
Au vu des résultats,  
Il est bon ! Rien à redire de ce coté là

n°45661
the_fennec
f3nn3cUs z3rd4
Posté le 19-08-2026 à 14:43:07  profilanswer
 

Le seul problème récurent pour moi je pense, c'est le "preserve thinking" activé par défaut. Vu que je le laisse tourner seul, je trouve qu'il part faire d'autres trucs et fini par perdre le fil. Je suis toujours sur mon kernel Linux pour Amiga et la je le trouve en train d'ajouter plein de trucs a l'émulateur :lol:. J'essaye de le recarder et il me dit que je me trompe et que je lui ait demandé de modifier l'émulateur :o
 
Je pense que le "preserve thinking" pollue trop le contexte et qu'après quelques compaction de contexte (256K) la demande initiale doit plus peser grand chose... Mais c'est peut être aussi a cause de little-coder qui lui coupe son thinking en cours de route. Je me demande si je vais pas repasser sur claude-code.


Message édité par the_fennec le 19-08-2026 à 14:43:38

---------------
Faudra que je teste un jour :o
n°45669
totosssfr
Pousse-testa
Posté le 19-08-2026 à 16:01:52  profilanswer
 

Tronklou a écrit :

Je viens de capter que les cm a base de c612 sont pas chere, je cumule ma ddr4 ecc et paf j'ai un vrai 2*16 ligne pcie pour deux gpu.
 
A ce compte là au final vaut mieux 2*5070ti qu'une seule r9700.
 
Mais je me coupe la possibilité d'upgrade avec une éventuelle r9700 supplémentaire dans le futur.
 
Mais je suis déjà pauvre rien qu'a compter combien tout cela coûte.
 
Le choix est cornélien [:geert]


 
Intel C612? Tu veux parler des X99 chinoises ou de grande marque? Attention, les port sont probablement des PCIE Gen 3 (qui sont deux fois plus lents que leurs équivalents PCIE Gen4 qui sont eux mêmes deux fois plus lents que les PCIE Gen 5).
Pour du tensor parallelism, tes 2 gpu vont passer leur temps à s'échanger des données via les ports pcie gen 3 pour chaque token : plus la bande passante sur les ports PCIE sera grande plus ce sera efficace.
C'est moins limitant pour du pipeline parallelism où le premier GPU fait son boulot puis passe le résultat au second. La quantité de données échangée étant bien plus faible, c'est moins pénalisant en PCIE Gen 3.
Cette seconde solution est moins rapide mais si tu arrives à envoyer des batchs de requêtes, c'est pas forcément si pénalisant et tu bénéficie quand même du cumul de la VRAM des deux GPU.

n°45686
the_fennec
f3nn3cUs z3rd4
Posté le 19-08-2026 à 17:32:17  profilanswer
 

totosssfr a écrit :


 
Intel C612? Tu veux parler des X99 chinoises ou de grande marque? Attention, les port sont probablement des PCIE Gen 3 (qui sont deux fois plus lents que leurs équivalents PCIE Gen4 qui sont eux mêmes deux fois plus lents que les PCIE Gen 5).
Pour du tensor parallelism, tes 2 gpu vont passer leur temps à s'échanger des données via les ports pcie gen 3 pour chaque token : plus la bande passante sur les ports PCIE sera grande plus ce sera efficace.
C'est moins limitant pour du pipeline parallelism où le premier GPU fait son boulot puis passe le résultat au second. La quantité de données échangée étant bien plus faible, c'est moins pénalisant en PCIE Gen 3.
Cette seconde solution est moins rapide mais si tu arrives à envoyer des batchs de requêtes, c'est pas forcément si pénalisant et tu bénéficie quand même du cumul de la VRAM des deux GPU.


 
C'est la théorie, mais en pratique est-ce vraiment limitant pour une paire de 5070Ti? On parle de 16GB/s quand même pour du gen 3 en 16x, et ya pas tant de données que ça.


---------------
Faudra que je teste un jour :o
n°45688
Tronklou
❤❤ Vrp Bambulab à mi-temps ❤❤
Posté le 19-08-2026 à 17:35:13  profilanswer
 

Oui j'avais aussi les limites en tête, malheureusement j'ai pas vraiment trouvé de réponses/bench pertinent.
Dans tous les cas l'investissement est le meme presque : 900e la 1ere 5070ti, environ 1000e la deuxième. Une r9700 c'est environ 1800e.
 
Je vais attendre d'avantages de retours pour me décider, vus les montants je ne peut pas tout tester moi-même :(


---------------
Victime de girafophobie, mais se soigne.
n°45691
the_fennec
f3nn3cUs z3rd4
Posté le 19-08-2026 à 17:42:44  profilanswer
 

En restant 100% NVidia t'as quand même l'avantage de pouvoir essayer toutes les solutions sans te prendre la tête, ça marche toujours sur NV d'abord. Après j'irais pas mettre ces sommes pour m'amuser :o donc je suis bien avec mes BC250.
 
Je viens quand même d'investir dans 32GB de DD4 pour 127 euros:
https://www.dealabs.com/bons-plans/ [...] ur-3394279


---------------
Faudra que je teste un jour :o
n°45699
totosssfr
Pousse-testa
Posté le 19-08-2026 à 18:28:03  profilanswer
 

the_fennec a écrit :


 
C'est la théorie, mais en pratique est-ce vraiment limitant pour une paire de 5070Ti? On parle de 16GB/s quand même pour du gen 3 en 16x, et ya pas tant de données que ça.


 

Tronklou a écrit :

Oui j'avais aussi les limites en tête, malheureusement j'ai pas vraiment trouvé de réponses/bench pertinent.
Dans tous les cas l'investissement est le meme presque : 900e la 1ere 5070ti, environ 1000e la deuxième. Une r9700 c'est environ 1800e.
 
Je vais attendre d'avantages de retours pour me décider, vus les montants je ne peut pas tout tester moi-même :(


 
Je ne sais pas si ça vous aidera mais j'ai commandé ma seconde arc B60 pro. Elle va être installée dans une machine disposant de 2 ports PCIE Gen3 x16.
Particularité (vraiment casse bonbon!) sur l'arc B60, elle est cablée en x8  :sweat:  
Donc j'aurais encore moins de BP que Tronklou avec son duo de 5070 ti.
 

the_fennec a écrit :

En restant 100% NVidia t'as quand même l'avantage de pouvoir essayer toutes les solutions sans te prendre la tête, ça marche toujours sur NV d'abord. Après j'irais pas mettre ces sommes pour m'amuser :o donc je suis bien avec mes BC250.
 
Je viens quand même d'investir dans 32GB de DD4 pour 127 euros:
https://www.dealabs.com/bons-plans/ [...] ur-3394279


 
Clairement! Avec Nvidia, tu disposes de 2 avantages :  

  • Tu peux tout tester day one sans trop de surprises.
  • Les séries 5000 disposent de l'architecture Blackwell qui optimisée pour le format nvfp4 proposé par Nvidia.

n°45717
croustx
Modoadorateur
Posté le 20-08-2026 à 00:18:47  profilanswer
 

Je suis passé de :
. Qwen 3.6 27b q3 130k de contexte
à
. Qwen 3.8 27b q4 90k de contexte

 

=> il est plus "malin"
=> par contre le contexte est vraiment rikiki ...


Message édité par croustx le 20-08-2026 à 01:08:37
n°45727
the_fennec
f3nn3cUs z3rd4
Posté le 20-08-2026 à 07:36:30  profilanswer
 

Si tu as chargé le MTP, tu peux ne pas le faire et gagner en VRAM.


---------------
Faudra que je teste un jour :o
n°45737
croustx
Modoadorateur
Posté le 20-08-2026 à 09:29:05  profilanswer
 

the_fennec a écrit :

Si tu as chargé le MTP, tu peux ne pas le faire et gagner en VRAM.


 
Effectivement, j'ai gagné 1go de Vram !
 
Merci !
 

n°45739
the_fennec
f3nn3cUs z3rd4
Posté le 20-08-2026 à 09:36:56  profilanswer
 

croustx a écrit :


 
Effectivement, j'ai gagné 1go de Vram !
 
Merci !
 


 
De rien, pince_ouverte aura une meilleur mémoire :D
 
D'ailleurs je trouve que le gain MTP de Qwen 3.8 est assez faible au final, genre je passe de 5 tg/s a 7 tg/s, ça change pas fondamentalement la réactivité. C'est surtout le PP qui est lent je trouve.


---------------
Faudra que je teste un jour :o
n°45740
croustx
Modoadorateur
Posté le 20-08-2026 à 09:57:51  profilanswer
 

J'ai un truc quand même chelou : j'ai beau configurer Ollama et Openclaw avec 131k,
 
Quand je fais un ollama ls
 
Il me dit que le modèle chargé ne fait que 90k
 
Bug, ou bien j'ai loupé un truc ?

n°45786
lapin
Posté le 20-08-2026 à 13:10:15  profilanswer
 

Je demande au llm google/gemma-4-12b-qat au format GGUF via LM STUDIO de respecter scrupuleusement ce truc:
 
https://i.imgur.com/Xct3mgs.png
 
En respectant les angles et la forme géométrique de me le pondre en Script au format SVG
 
 
près de 30 minutes pour me pondre ceci:
 

Code :
  1. <svg width="500" height="500" viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg">
  2.   <!-- Style des lignes -->
  3.   <g stroke="black" stroke-width="2" fill="none">
  4.     <!-- Contour extérieur -->
  5.     <line x1="100" y1="100" x2="400" y2="150" /> <!-- A-B -->
  6.     <line x1="400" y1="150" x2="400" y2="450" /> <!-- B-C -->
  7.     <line x1="400" y1="450" x2="100" y2="400" /> <!-- C-G -->
  8.     <line x1="100" y1="400" x2="100" y2="100" /> <!-- G-A -->
  9.    
  10.     <!-- Lignes internes -->
  11.     <line x1="250" y1="125" x2="250" y2="425" /> <!-- E-F -->
  12.     <line x1="100" y1="250" x2="400" y2="450" /> <!-- D-C -->
  13.   </g>
  14.   <!-- Étiquettes des points -->
  15.   <g font-family="Arial, sans-serif" font-size="20" font-weight="bold">
  16.     <text x="80" y="90">A</text>
  17.     <text x="410" y="140">B</text>
  18.     <text x="410" y="470">C</text>
  19.     <text x="60" y="420">G</text>
  20.     <text x="80" y="260">D</text>
  21.     <text x="230" y="115">E</text>
  22.     <text x="230" y="445">F</text>
  23.     <text x="260" y="340">H</text>
  24.   </g>
  25. </svg>


 
 
https://www.dropbox.com/scl/fi/by5a [...] ij96s&dl=1
 
 
C'est mieux que le premier:
https://www.dropbox.com/scl/fi/6ti0 [...] ozbo3&dl=1
 
Mais ça reste de la merde.
 
 
Longueur de contexte: 44936
Déchargement GPU: 22
CPU Thread Pool Size: 32
Tail d'évaluation: 2048
Physical Batch Size: 512
Unified KV Cache: activé
Contexte Check Points: 32
Max Concurrent predictions: 4
OffLoad KV Cache To GPU Memory: activé
Garder le Modèle en mémoire: activé
Essayer mmap(): activé  
Chat Template:

Citation :


{#
  Template: Google Gemma 4 Canonical Chat Template
  Author: Google Gemma Engineering Team
  Published: 2026-07-09
  Context: Fixed tool-calling loops, turn closures, and thinking content-ordering.
#}
{%- macro format_parameters(properties, required, filter_keys=false) -%}
    {%- set standard_keys = ['description', 'type', 'properties', 'required', 'nullable'] -%}
    {%- set ns = namespace(found_first=false) -%}
    {%- for key, value in properties | dictsort -%}
        {%- set add_comma = false -%}
        {%- if not filter_keys or key not in standard_keys -%}
            {%- if ns.found_first %},{% endif -%}
            {%- set ns.found_first = true -%}
            {{ key }}:{
            {%- if value['description'] -%}
                description:<|"|>{{ value['description'] }}<|"|>
                {%- set add_comma = true -%}
            {%- endif -%}
            {%- if value['type'] | upper == 'STRING' -%}
                {%- if value['enum'] -%}
                    {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
                    enum:{{ format_argument(value['enum']) }}
                {%- endif -%}
            {%- elif value['type'] | upper == 'ARRAY' -%}
                {%- if value['items'] is mapping and value['items'] -%}
                    {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
                    items:{
                    {%- set ns_items = namespace(found_first=false) -%}
                    {%- for item_key, item_value in value['items'] | dictsort -%}
                        {%- if item_value is not none -%}
                            {%- if ns_items.found_first %},{% endif -%}
                            {%- set ns_items.found_first = true -%}
                            {%- if item_key == 'properties' -%}
                                properties:{
                                {%- if item_value is mapping -%}
                                    {{- format_parameters(item_value, value['items']['required'] | default([])) -}}
                                {%- endif -%}
                                }
                            {%- elif item_key == 'required' -%}
                                required:[
                                {%- for req_item in item_value -%}
                                    <|"|>{{- req_item -}}<|"|>
                                    {%- if not loop.last %},{% endif -%}
                                {%- endfor -%}
                                ]
                            {%- elif item_key == 'type' -%}
                                {%- if item_value is string -%}
                                    type:{{ format_argument(item_value | upper) }}
                                {%- else -%}
                                    type:{{ format_argument(item_value | map('upper') | list) }}
                                {%- endif -%}
                            {%- else -%}
                                {{ item_key }}:{{ format_argument(item_value) }}
                            {%- endif -%}
                        {%- endif -%}
                    {%- endfor -%}
                    }
                {%- endif -%}
            {%- endif -%}
            {%- if value['nullable'] %}
                {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
                nullable:true
            {%- endif -%}
            {%- if value['type'] | upper == 'OBJECT' -%}
                {%- if value['properties'] is defined and value['properties'] is mapping -%}
                    {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
                    properties:{
                    {{- format_parameters(value['properties'], value['required'] | default([])) -}}
                    }
                {%- elif value is mapping -%}
                    {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
                    properties:{
                    {{- format_parameters(value, value['required'] | default([]), filter_keys=true) -}}
                    }
                {%- endif -%}
                {%- if value['required'] -%}
                    {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
                    required:[
                    {%- for item in value['required'] | default([]) -%}
                        <|"|>{{- item -}}<|"|>
                        {%- if not loop.last %},{% endif -%}
                    {%- endfor -%}
                    ]
                {%- endif -%}
            {%- endif -%}
            {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
            type:<|"|>{{ value['type'] | upper }}<|"|>}
        {%- endif -%}
    {%- endfor -%}
{%- endmacro -%}
{%- macro format_function_declaration(tool_data) -%}
    declaration:{{- tool_data['function']['name'] -}}{description:<|"|>{{- tool_data['function']['description'] -}}<|"|>
    {%- set params = tool_data['function']['parameters'] -%}
    {%- if params -%}
        ,parameters:{
        {%- if params['properties'] -%}
            properties:{ {{- format_parameters(params['properties'], params['required']) -}} },
        {%- endif -%}
        {%- if params['required'] -%}
            required:[
            {%- for item in params['required'] -%}
                <|"|>{{- item -}}<|"|>
                {{- ',' if not loop.last -}}
            {%- endfor -%}
            ],
        {%- endif -%}
        {%- if params['type'] -%}
            type:<|"|>{{- params['type'] | upper -}}<|"|>}
        {%- endif -%}
    {%- endif -%}
    {%- if 'response' in tool_data['function'] -%}
        {%- set response_declaration = tool_data['function']['response'] -%}
        ,response:{
        {%- if response_declaration['description'] -%}
            description:<|"|>{{- response_declaration['description'] -}}<|"|>,
        {%- endif -%}
        {%- if response_declaration['type'] | upper == 'OBJECT' -%}
            type:<|"|>{{- response_declaration['type'] | upper -}}<|"|>}
        {%- endif -%}
    {%- endif -%}
    }
{%- endmacro -%}
{%- macro format_argument(argument, escape_keys=True) -%}
    {%- if argument is none -%}
        {{- 'null' -}}
    {%- elif argument is string -%}
        {{- '<|"|>' + argument + '<|"|>' -}}
    {%- elif argument is boolean -%}
        {{- 'true' if argument else 'false' -}}
    {%- elif argument is mapping -%}
        {{- '{' -}}
        {%- set ns = namespace(found_first=false) -%}
        {%- for key, value in argument | dictsort -%}
            {%- if ns.found_first %},{% endif -%}
            {%- set ns.found_first = true -%}
            {%- if escape_keys -%}
                {{- '<|"|>' + key + '<|"|>' -}}
            {%- else -%}
                {{- key -}}
            {%- endif -%}
            :{{- format_argument(value, escape_keys=escape_keys) -}}
        {%- endfor -%}
        {{- '}' -}}
    {%- elif argument is sequence -%}
        {{- '[' -}}
        {%- for item in argument -%}
            {{- format_argument(item, escape_keys=escape_keys) -}}
            {%- if not loop.last %},{% endif -%}
        {%- endfor -%}
        {{- ']' -}}
    {%- else -%}
        {{- argument -}}
    {%- endif -%}
{%- endmacro -%}
{%- macro strip_thinking(text) -%}
    {%- set ns = namespace(result='') -%}
    {%- for part in text.split('<channel|>') -%}
        {%- if '<|channel>' in part -%}
            {%- set ns.result = ns.result + part.split('<|channel>')[0] -%}
        {%- else -%}
            {%- set ns.result = ns.result + part -%}
        {%- endif -%}
    {%- endfor -%}
    {{- ns.result | trim -}}
{%- endmacro -%}
 
{%- macro format_tool_response_block(tool_name, response) -%}
    {{- '<|tool_response>' -}}
    {%- if response is mapping -%}
        {{- 'response:' + tool_name + '{' -}}
        {%- for key, value in response | dictsort -%}
            {{- key -}}:{{- format_argument(value, escape_keys=False) -}}
            {%- if not loop.last %},{% endif -%}
        {%- endfor -%}
        {{- '}' -}}
    {%- else -%}
        {{- 'response:' + tool_name + '{value:' + format_argument(response, escape_keys=False) + '}' -}}
    {%- endif -%}
    {{- '<tool_response|>' -}}
{%- endmacro -%}
 
{#- ===== SETUP ===== -#}
{%- set ns = namespace(prev_message_type=None, prev_non_tool_role=None) -%}
{%- set loop_messages = messages -%}
{%- set enable_thinking = enable_thinking | default(false) -%}
{%- set preserve_thinking = preserve_thinking | default(false) -%}
{{- bos_token -}}
{#- Handle System/Tool Definitions Block -#}
{%- if enable_thinking or tools or (messages and messages[0]['role'] in ['system', 'developer']) -%}
    {{- '<|turn>system\n' -}}
    {#- Inject Thinking token at the very top of the FIRST system turn -#}
    {%- if enable_thinking -%}
        {{- '<|think|>\n' -}}
        {%- set ns.prev_message_type = 'think' -%}
    {%- endif -%}
    {%- if messages and messages[0]['role'] in ['system', 'developer'] -%}
        {%- if messages[0]['content'] is string -%}
            {{- messages[0]['content'] | trim -}}
        {%- elif messages[0]['content'] is sequence -%}
            {%- for item in messages[0]['content'] -%}
                {{- item['text'] | trim + ' '-}}
            {%- endfor -%}
        {%- endif -%}
        {%- set loop_messages = messages[1:] -%}
    {%- endif -%}
    {%- if tools -%}
        {%- for tool in tools %}
            {{- '<|tool>' -}}
            {{- format_function_declaration(tool) | trim -}}
            {{- '<tool|>' -}}
        {%- endfor %}
        {%- set ns.prev_message_type = 'tool' -%}
    {%- endif -%}
    {{- '<turn|>\n' -}}
{%- endif %}
 
{#- Pre-scan: find last user message index for reasoning guard -#}
{%- set ns_turn = namespace(last_user_idx=-1) -%}
{%- for i in range(loop_messages | length) -%}
    {%- if loop_messages['role'] == 'user' -%}
        {%- set ns_turn.last_user_idx = i -%}
    {%- endif -%}
{%- endfor -%}
 
{#- Loop through messages -#}
{%- for message in loop_messages -%}
    {%- if message['role'] != 'tool' -%}
    {%- set ns.prev_message_type = None -%}
    {%- set role = 'model' if message['role'] == 'assistant' else message['role'] -%}
    {#- Detect continuation using tracked state — O(1) instead of O(n) backward scan -#}
    {%- set continue_same_model_turn = (role == 'model' and ns.prev_non_tool_role == 'assistant') -%}
    {%- if not continue_same_model_turn -%}
        {{- '<|turn>' + role + '\n' }}
 
    {%- endif -%}
 
    {#- Render reasoning/reasoning_content as thinking channel -#}
    {%- set thinking_text = message.get('reasoning') or message.get('reasoning_content') -%}
    {%- set thinking_gate = (loop.index0 > ns_turn.last_user_idx) or (preserve_thinking and message.get('tool_calls')) -%}
    {%- if thinking_text and thinking_gate -%}
        {{- '<|channel>thought\n' + thinking_text + '\n<channel|>' -}}
    {%- endif -%}
 
            {%- if message.get('tool_calls') -%}
                {%- for tool_call in message.get('tool_calls') -%}
                    {%- set function = tool_call['function'] -%}
                    {{- '<|tool_call>call:' + function['name'] + '{' -}}
                    {%- if function['arguments'] is mapping -%}
                        {%- set ns_args = namespace(found_first=false) -%}
                        {%- for key, value in function['arguments'] | dictsort -%}
                            {%- if ns_args.found_first %},{% endif -%}
                            {%- set ns_args.found_first = true -%}
                            {{- key -}}:{{- format_argument(value, escape_keys=False) -}}
                        {%- endfor -%}
                    {%- elif function['arguments'] is none -%}
                    {%- else -%}
                        {{- raise_exception(
                            "chat_template: tool_calls[].function.arguments must be a "
                            "JSON object (mapping), not a string. Deserialize arguments "
                            "before passing to the template."
                        ) -}}
                    {%- endif -%}
                    {{- '}<tool_call|>' -}}
                {%- endfor -%}
                {%- set ns.prev_message_type = 'tool_call' -%}
            {%- endif -%}
 
            {%- set ns_tr_out = namespace(flag=false) -%}
            {%- if message.get('tool_responses') -%}
                {#- Legacy: tool_responses embedded on the assistant message (Google/Gemma native) -#}
                {%- for tool_response in message.get('tool_responses') -%}
                    {{- format_tool_response_block(tool_response['name'] | default('unknown', true), tool_response['response']) -}}
                    {%- set ns_tr_out.flag = true -%}
                    {%- set ns.prev_message_type = 'tool_response' -%}
                {%- endfor -%}
            {%- elif message.get('tool_calls') -%}
                {#- OpenAI Chat Completions: forward-scan consecutive role:tool messages -#}
                {%- set ns_tool_scan = namespace(stopped=false) -%}
                {%- for k in range(loop.index0 + 1, loop_messages | length) -%}
                    {%- if ns_tool_scan.stopped -%}
                    {%- elif loop_messages[k]['role'] != 'tool' -%}
                        {%- set ns_tool_scan.stopped = true -%}
                    {%- else -%}
                        {%- set follow = loop_messages[k] -%}
                        {#- Resolve tool_call_id to function name -#}
                        {%- set ns_tname = namespace(name=follow.get('name') or 'unknown') -%}
                        {%- for tc in message.get('tool_calls') -%}
                            {%- if tc.get('id') == follow.get('tool_call_id') -%}
                                {%- set ns_tname.name = tc['function']['name'] -%}
                            {%- endif -%}
                        {%- endfor -%}
                        {#- Handle content as string or content-parts array -#}
                        {%- set tool_body = follow.get('content') -%}
                        {%- if tool_body is string -%}
                            {{- format_tool_response_block(ns_tname.name, tool_body) -}}
                        {%- elif tool_body is sequence and tool_body is not string -%}
                            {%- set ns_txt = namespace(s='') -%}
                            {%- for part in tool_body -%}
                                {%- if part.get('type') == 'text' -%}
                                    {%- set ns_txt.s = ns_txt.s + (part.get('text') | default('')) -%}
                                {%- endif -%}
                            {%- endfor -%}
                            {{- format_tool_response_block(ns_tname.name, ns_txt.s) -}}
                            {%- for part in tool_body -%}
                                {%- if part.get('type') in ['image', 'image_url'] -%}
                                    {{- '<|image|>' -}}
                                {%- elif part.get('type') in ['audio', 'input_audio'] -%}
                                    {{- '<|audio|>' -}}
                                {%- elif part.get('type') == 'video' -%}
                                    {{- '<|video|>' -}}
                                {%- endif -%}
                            {%- endfor -%}
                        {%- else -%}
                            {{- format_tool_response_block(ns_tname.name, tool_body) -}}
                        {%- endif -%}
                        {%- set ns_tr_out.flag = true -%}
                        {%- set ns.prev_message_type = 'tool_response' -%}
                    {%- endif -%}
                {%- endfor -%}
            {%- endif -%}
 
            {%- set captured_content -%}
            {%- if message.get('content') is string -%}
                {%- if role == 'model' -%}
                    {{- strip_thinking(message['content']) -}}
                {%- else -%}
                    {{- message['content'] | trim -}}
                {%- endif -%}
            {%- elif message.get('content') is sequence -%}
                {%- for item in message['content'] -%}
                    {%- if item.get('type') == 'text' -%}
                        {%- if role == 'model' -%}
                            {{- strip_thinking(item['text']) -}}
                        {%- else -%}
                            {{- item['text'] | trim -}}
                        {%- endif -%}
                    {%- elif item.get('type') in ['image', 'image_url'] -%}
                        {{- '<|image|>' -}}
                    {%- elif item.get('type') in ['audio', 'input_audio'] -%}
                        {{- '<|audio|>' -}}
                    {%- elif item.get('type') == 'video' -%}
                        {{- '<|video|>' -}}
                    {%- endif -%}
                {%- endfor -%}
            {%- endif -%}
            {%- endset -%}
 
            {{- captured_content -}}
            {%- set has_content = captured_content | trim | length > 0 -%}
 
        {#- Forward-scan: find next non-tool message role for continuation detection -#}
        {%- set next_nt = namespace(role=None, found=false) -%}
        {%- for j in range(loop.index0 + 1, loop_messages | length) -%}
            {%- if not next_nt.found -%}
                {%- if loop_messages[j]['role'] != 'tool' -%}
                    {%- set next_nt.role = loop_messages[j]['role'] -%}
                    {%- set next_nt.found = true -%}
                {%- endif -%}
            {%- endif -%}
        {%- endfor -%}
 
        {%- set continues_into_next = (
            role == 'model'
            and next_nt.role == 'assistant'
            and (not message.get('tool_calls') or ns_tr_out.flag)
        ) -%}
 
        {%- if ns.prev_message_type == 'tool_call' and not ns_tr_out.flag -%}
            {{- '<|tool_response>' -}}
        {%- elif continues_into_next -%}
        {%- elif not (ns_tr_out.flag and not has_content and not next_nt.found) -%}
            {{- '<turn|>\n' -}}
        {%- endif -%}
 
    {#- Track previous non-tool role for next iteration (avoids O(n) backward scan) -#}
    {%- set ns.prev_non_tool_role = message['role'] -%}
    {%- endif -%}
{%- endfor -%}
 
{%- if add_generation_prompt -%}
    {%- if ns.prev_message_type != 'tool_response' and ns.prev_message_type != 'tool_call' -%}
        {{- '<|turn>model\n' -}}
        {%- if not enable_thinking -%}
            {{- '<|channel>thought\n<channel|>' -}}
        {%- endif -%}
    {%- elif ns.prev_message_type == 'tool_response' and enable_thinking -%}
        {{- '<|channel>thought\n' -}}
    {%- endif -%}
{%- endif -%}


 
K Cache Quantizations : Active sur FP32, note je tente FP32 car en FP16 il m'avait fait de la merde voir le deuxième SVG qui était bien pire.
V Cache Quantization: Active sur FP16, peut pas mettre FP32 sur V Cache en même temps que FP32 sur K Cache Quantization enfin pour le moment.
 
 
 
 
 
[i]"Note si on charge un modèle en mémoire vive du GPU, à l'échec du chargement du modèle, ou même si le modèle charge et bon, mais qu'on veut en charger un nouveau avec d'autres paramètres, la VRAM n'est pas préalablement vidée, ceci provoquant une erreur de chargement du nouveau modèle en cours. En fait, il faut redémarrer Windows 11 pour vider la VRAM du GPU."
 
 
Bref pour le moment copié une forme Géométrique avec un vieux RX-VEGA56 avec l'API Vulkan et un LLM en google/gemma-4-12b-qat au format GGUF sur l'application LM STUDIO 0.4.21(Build 2), ben ça n'est pas ça.
C'est possible que le problème provienne du nombre de Threads CPU en fait plus haut que 8 ou 16 Threads CPU fait délirer le modèle, qui fait port nawak.
Donc peut-être qu'en baissant le nombre de Threads CPU à 8 ou 16 Threads, google/gemma-4-12b-qat  fasse moins d'erreurs.

n°45789
neo world
Posté le 20-08-2026 à 13:38:28  profilanswer
 

tu lui en demandes trop à ce petit modèle.
 
C'est à toi de lui simplifier la vie :  
- propose une implémentation de librairie SVG capable de dessiner des figures à partir de points aux coordonnées X,Y  
- bonne séance de correction
- propose un script capable d'extraire les coordonnées des points A B C ... sur l'image XXX.png
- bonne séance de correction
- en t'appuyant sur la librairie de l'étape 1 dessine une figure en reliant les points A B C ...
-bonne séance de correction
 
Ou mieux tu l'utilises pour compléter corriger / compléter ton code (c'est plutôt là où il pourra le mieux t'aider vu sa taille
 
Pour l'utiliser en mdoe developpeur end to end il te faudra de plus gros modèles et/ou bosser avec des IA externes :jap:

n°45794
bifidusse
(actif)
Posté le 20-08-2026 à 14:38:19  profilanswer
 

Du bon usage de l'outil...
 
Au début de mes expérimentations, j'avais galéré à avoir un résultat correct pour une question qui me semblait toute simple : voici 4 tableaux en PDF, donne-moi la valeur moyenne pour l'élément machin.
 
C'était catastrophique, j'avais, au mieux, une bonne valeur parmi les 4, le reste c'était n'importe quoi.
 
J'utilisais Anything LLM et ce qu'une IA en ligne m'avait conseillé à l'époque c'était d'inclure les documents dans mon espace de travail (RAG).
 
ça n'était pas mieux du tout.
 
Je devais sans doute utilise Mistral ou Llama à l'époque. Certes mon PC était un peu moins velu (6GB de VRAM, 32 de ram) mais en théorie, j'aurais dû avoir un résultat.
 
Maintenant c'est différent. Avec un petit Gemma-4 (même le E2B qui tourne sur mon portable) et Unsloth, ça marche nickel.
 
Je suppose qu'à l'époque je demandais à un modèle texte only de faire quelque chose qu'il ne pouvait pas faire. Ou c'est Unsloth qui gère mieux l'apport de contexte au modèle. Ou les deux.
 
Hier je suis aussi parvenu à lui demander de faire un résumé de 300 caractères pour une trentaine d'url.
 
Bon ça doit vous sembler très basique, mais moi je suis content  :D  
 
Prochaine étape : voir comment on peut donner x images à une IA, lui dire ce que ça représente (un lieu par ex.), elle apprend, elle peut retrouver ce qui est représenté dans d'autres images.

n°45795
Nr13
Posté le 20-08-2026 à 15:07:52  profilanswer
 

bifidusse a écrit :


 
Prochaine étape : voir comment on peut donner x images à une IA, lui dire ce que ça représente (un lieu par ex.), elle apprend, elle peut retrouver ce qui est représenté dans d'autres images.


 
C'est un sujet (detection, segmentation, classification sur des images) avec déjà ENORMEMENT de travail accompli et des modèles spécifiques dédiés (Yolo et cie) sont bcp plus performants que les VLM.
En tout cas tu ne peux pas faire "apprendre" à ton LLM/VLM (par contre il peut te mettre en place un système spécifique avec un modèle qui va bien, te faire générer des données d'entrainement et faire mouliner le truc pour le rendre plus performant sur TES images, si elles sont vraiment particulières).

n°45807
bifidusse
(actif)
Posté le 20-08-2026 à 16:36:15  profilanswer
 

Nr13 a écrit :


 
C'est un sujet (detection, segmentation, classification sur des images) avec déjà ENORMEMENT de travail accompli et des modèles spécifiques dédiés (Yolo et cie) sont bcp plus performants que les VLM.
En tout cas tu ne peux pas faire "apprendre" à ton LLM/VLM (par contre il peut te mettre en place un système spécifique avec un modèle qui va bien, te faire générer des données d'entrainement et faire mouliner le truc pour le rendre plus performant sur TES images, si elles sont vraiment particulières).


 
Ouille, je n'ai pas tout compris mais j'imagine qu'un jour ça sera plus clair.
 
L'idée est de tagger des photos de vacances. Certains lieux récurrents (plusieurs voyages au même endroit) ne sont pas reconnus par l'IA locale (j'ai normalement essayé la plupart des modèles vision qui peuvent tourner sur ma machine). Elle reconnaît des endroits connus, mais n'arrive généralement à rien quand on quitte les endroits très populaires. L'idée est donc de lui montrer plusieurs photos d'un lieu, lui dire ce que c'est et sur base de ce qu'elle a analysé, être capable de retrouver le même pattern dans d'autres images.
 
Une autre piste serait d'utiliser un modèle spécialement entraîné sur un pays mais je n'ai pas encore trouvé.
 
Autre usage possible, reconnaître les tronches de la famille et tagger les images et du coup, les retrouver toutes facilement.
 
photo-folder-tagger https://github.com/LaurentVoillot/photo-folder-tagger fait ça, pour les oiseaux / paysages / autres. Mais les modèles utilisés ne permettent pas de faire ce que j'aimerais faire.
 
Je parle de milliers de photos sur plus de 15 ans, d'où l'intérêt de faire tourner un PC là-dessus pendant la nuit plutôt que de passer des heures à le faire à la main.

n°45811
the_fennec
f3nn3cUs z3rd4
Posté le 20-08-2026 à 16:44:40  profilanswer
 

Bon je suis repassé sur claude-code et j'ai forcé le reasoning a medium et viré preserve_thinking.
 

Code :
  1. llama-server --load-mode dio --flash-attn on --metrics --alias default --host 0.0.0.0 --port 8080 --jinja --chat-template-file __qwen_template.jinja --kv-unified -ctk q8_0 -ctv q8_0 -lv 4 -m Qwen3.8-27B-UD-Q8_K_XL.gguf --rpc lain:50000,arisu:50000 -ngl 99 -ts 17,17,13 --ctx-size 262144 --temp 0.7 --top-p 0.95 --top-k 20 --min-p 0.0 --repeat-penalty 1.0 --presence-penalty 0.0  --spec-draft-device Vulkan0 --spec-type ngram-mod,draft-mtp --spec-draft-n-max 2 --spec-ngram-mod-n-match 16 --spec-ngram-mod-n-min 32 --spec-ngram-mod-n-max 64s --spec-draft-n-min 0.75 --chat-template-kwargs "{\"preserve_thinking\": false, \"reasoning_effort\": \"medium\"}"

 
 
Ça me parait mieux même si le PP est vraiment lent, 35/s a 135K de context, le tg fait des pointes a 9/s.


---------------
Faudra que je teste un jour :o
n°45812
Tronklou
❤❤ Vrp Bambulab à mi-temps ❤❤
Posté le 20-08-2026 à 16:48:38  profilanswer
 

totosssfr a écrit :


 
Intel C612? Tu veux parler des X99 chinoises ou de grande marque? Attention, les port sont probablement des PCIE Gen 3 (qui sont deux fois plus lents que leurs équivalents PCIE Gen4 qui sont eux mêmes deux fois plus lents que les PCIE Gen 5).
Pour du tensor parallelism, tes 2 gpu vont passer leur temps à s'échanger des données via les ports pcie gen 3 pour chaque token : plus la bande passante sur les ports PCIE sera grande plus ce sera efficace.
C'est moins limitant pour du pipeline parallelism où le premier GPU fait son boulot puis passe le résultat au second. La quantité de données échangée étant bien plus faible, c'est moins pénalisant en PCIE Gen 3.
Cette seconde solution est moins rapide mais si tu arrives à envoyer des batchs de requêtes, c'est pas forcément si pénalisant et tu bénéficie quand même du cumul de la VRAM des deux GPU.


 

the_fennec a écrit :

En restant 100% NVidia t'as quand même l'avantage de pouvoir essayer toutes les solutions sans te prendre la tête, ça marche toujours sur NV d'abord. Après j'irais pas mettre ces sommes pour m'amuser :o donc je suis bien avec mes BC250.
 
Je viens quand même d'investir dans 32GB de DD4 pour 127 euros:
https://www.dealabs.com/bons-plans/ [...] ur-3394279


 
Alors, après une bonne dizaines d'heures de recherches.
Le x99 ca reste globalement le deal braker : des vrai 16 ligne sans passer par un chipset, du matos pas cher qui prend aussi bien de la ddr3 rgdimm que ddr4, ca vaut de l'or vus les taros de la ram  
Niveau castration des perfs, au final jusqu'a 8x en pcie 3 ca reste sur des pertes acceptables, l'interet c'est surtout la latence ( qui est bonne du coup avec les xeons en direct sans chipset).
 
En plus y a moyen de modder d'avantage avec les bios chinois et rajouter de la bifurcation, on peut donc raisonablement imagner pousser jusqu'a 5 gpu sur une seule cm  :sol:  
Rajoute qu'il y a des models en 8 slots ddr, là on peut se faire de la grosse config 64/128gb apachere  :love:  
 
 
Pour le choix des gpu c'est plus cornéliens :
- Le max de perfs en vitesse, le dual 5070ti est clairement en haut
- Le max de vram : des rx6800, ca se trouve dans les 300e
- Le frankenstein : 2080ti moddée a 22gb pour 600e piece
- Le mono gpu : r9700 a 1800e


---------------
Victime de girafophobie, mais se soigne.
n°45813
Nr13
Posté le 20-08-2026 à 16:55:05  profilanswer
 

bifidusse a écrit :


 
Ouille, je n'ai pas tout compris mais j'imagine qu'un jour ça sera plus clair.
 
L'idée est de tagger des photos de vacances. Certains lieux récurrents (plusieurs voyages au même endroit) ne sont pas reconnus par l'IA locale (j'ai normalement essayé la plupart des modèles vision qui peuvent tourner sur ma machine). Elle reconnaît des endroits connus, mais n'arrive généralement à rien quand on quitte les endroits très populaires. L'idée est donc de lui montrer plusieurs photos d'un lieu, lui dire ce que c'est et sur base de ce qu'elle a analysé, être capable de retrouver le même pattern dans d'autres images.
 
Une autre piste serait d'utiliser un modèle spécialement entraîné sur un pays mais je n'ai pas encore trouvé.
 
Autre usage possible, reconnaître les tronches de la famille et tagger les images et du coup, les retrouver toutes facilement.
 
photo-folder-tagger https://github.com/LaurentVoillot/photo-folder-tagger fait ça, pour les oiseaux / paysages / autres. Mais les modèles utilisés ne permettent pas de faire ce que j'aimerais faire.
 
Je parle de milliers de photos sur plus de 15 ans, d'où l'intérêt de faire tourner un PC là-dessus pendant la nuit plutôt que de passer des heures à le faire à la main.


 
Ha c'est plus clair. Un VLM pourrait peut-être fonctionner finalement, peu importe si il n'arrive pas à savoir où une photo a été prise, si il est capable de te dire si deux photos ont été prises dans des endroits semblables (on espère le même) bien qu'inconnus, ça te suffit..
Sinon tu n'as pas de dates fiable dans les meta-datas de tes photos? Ca me parait de très très loin le plus simple et rapide pour les regrouper  :D  

n°45814
neo world
Posté le 20-08-2026 à 16:57:01  profilanswer
 

3090 avec nvlink ? :D
V100 avec le convertisseur vers carte pci express ? :D
 
#a peu presque :o

n°45816
the_fennec
f3nn3cUs z3rd4
Posté le 20-08-2026 à 17:11:08  profilanswer
 

Tronklou a écrit :


 
Alors, après une bonne dizaines d'heures de recherches.
Le x99 ca reste globalement le deal braker : des vrai 16 ligne sans passer par un chipset, du matos pas cher qui prend aussi bien de la ddr3 rgdimm que ddr4, ca vaut de l'or vus les taros de la ram  
Niveau castration des perfs, au final jusqu'a 8x en pcie 3 ca reste sur des pertes acceptables, l'interet c'est surtout la latence ( qui est bonne du coup avec les xeons en direct sans chipset).
 
En plus y a moyen de modder d'avantage avec les bios chinois et rajouter de la bifurcation, on peut donc raisonablement imagner pousser jusqu'a 5 gpu sur une seule cm  :sol:  
Rajoute qu'il y a des models en 8 slots ddr, là on peut se faire de la grosse config 64/128gb apachere  :love:  
 
 
Pour le choix des gpu c'est plus cornéliens :
- Le max de perfs en vitesse, le dual 5070ti est clairement en haut
- Le max de vram : des rx6800, ca se trouve dans les 300e
- Le frankenstein : 2080ti moddée a 22gb pour 600e piece
- Le mono gpu : r9700 a 1800e


 
Elles me font de l’œil ces x99 aussi, mais j'ai un peu peur de la stabilité, c'est mon server@home :love:.
Donc pour le moment j'ai juste investis pour passer a 64GB de RAM. Ensuite migrer la 4060Ti sur une VM Linux.
Je me tâte a remplacer mon Ryzen 3600 par un modèle avec iGPU pour le passer sur ma VM Windows qui s'occupe d'encoding.
 
T'as déjà un/des GPUs?
Perso j'ai pas besoin de vitesse, je trouve qu'avoir un max de VRAM est le plus important, gros contexte, je peux bidouiller des modèles exotiques.
 
Après Nvidia a moins de soucis en général.
 
Au final tu veux en faire quoi?


---------------
Faudra que je teste un jour :o
n°45818
bifidusse
(actif)
Posté le 20-08-2026 à 17:17:28  profilanswer
 

Nr13 a écrit :


 
Ha c'est plus clair. Un VLM pourrait peut-être fonctionner finalement, peu importe si il n'arrive pas à savoir où une photo a été prise, si il est capable de te dire si deux photos ont été prises dans des endroits semblables (on espère le même) bien qu'inconnus, ça te suffit..
Sinon tu n'as pas de dates fiable dans les meta-datas de tes photos? Ca me parait de très très loin le plus simple et rapide pour les regrouper  :D  


 
Sisi, j'ai des dates fiables mais pas de coordonnées GPS (ce qui aiderait beaucoup pour les paysages).
 
Tout est bien rangé dans des dossiers et avec mes notes, je peux retrouver où les photos ont été faites, puis les tagger "en masse" dans DarkTable. C'est juste que si je pouvais dégrossir automatiquement, ça m'aiderait beaucoup.
 
Et puis comme ça je justifie l'achat de la 16GB  :whistle: (bon, maintenant je peux mettre tout à fond dans Forza Horizon 4 mais bon)

n°45820
Tronklou
❤❤ Vrp Bambulab à mi-temps ❤❤
Posté le 20-08-2026 à 17:21:41  profilanswer
 

neo world a écrit :

3090 avec nvlink ? :D
V100 avec le convertisseur vers carte pci express ? :D
 
#a peu presque :o


 
Les 3090 c'est mort, ca tape a 1K minimum, et honnêtement je crame pas autant dans une architecture aussi vieille  :sweat:  
Les V100 je suis mitigé : on peut s'en sortir a environ 250e une 16gb avec l'adaptateur pcie, mais on est sur du volta de 2017, donc pas de FP8 moderne, pas de NVFP4, pas de Tensor Cores INT8  :sweat:  

the_fennec a écrit :


 
Elles me font de l’œil ces x99 aussi, mais j'ai un peu peur de la stabilité, c'est mon server@home :love:.
Donc pour le moment j'ai juste investis pour passer a 64GB de RAM. Ensuite migrer la 4060Ti sur une VM Linux.
Je me tâte a remplacer mon Ryzen 3600 par un modèle avec iGPU pour le passer sur ma VM Windows qui s'occupe d'encoding.
 
T'as déjà un/des GPUs?
Perso j'ai pas besoin de vitesse, je trouve qu'avoir un max de VRAM est le plus important, gros contexte, je peux bidouiller des modèles exotiques.
 
Après Nvidia a moins de soucis en général.
 
Au final tu veux en faire quoi?


 
J'ai déjà une rx6800, une 5070ti et une 3060, faudra élaguer a terme :D
 
Dans l'idéal avoir qwen 3.8 27b en daily usage pour mon hermess et garder uniquement ollama en abo cloud.


---------------
Victime de girafophobie, mais se soigne.
n°45821
the_fennec
f3nn3cUs z3rd4
Posté le 20-08-2026 à 17:34:54  profilanswer
 

Tronklou a écrit :


 
J'ai déjà une rx6800, une 5070ti et une 3060, faudra élaguer a terme :D
 
Dans l'idéal avoir qwen 3.8 27b en daily usage pour mon hermess et garder uniquement ollama en abo cloud.


 
8GB ou 12GB la 3060?
 
La j'ai Qwen3.8-27B-UD-Q8_K_XL avec 256K de contexte et MTP et ça me prends 13540+13626+13626 soit un peu moins de 41GB de VRAM.  
Donc t'es bon si ta 3060 est une 12GB, sinon il faut gratter un peu, tu vires le MTP et t'es bon.
 
T'auras une bien meilleure perf que moi, surtout si tu split en tensor au lieu de layers.


---------------
Faudra que je teste un jour :o
n°45822
yohaskan
Posté le 20-08-2026 à 17:38:40  profilanswer
 

the_fennec a écrit :

Bon je suis repassé sur claude-code et j'ai forcé le reasoning a medium et viré preserve_thinking.
 

Code :
  1. llama-server --load-mode dio --flash-attn on --metrics --alias default --host 0.0.0.0 --port 8080 --jinja --chat-template-file __qwen_template.jinja --kv-unified -ctk q8_0 -ctv q8_0 -lv 4 -m Qwen3.8-27B-UD-Q8_K_XL.gguf --rpc lain:50000,arisu:50000 -ngl 99 -ts 17,17,13 --ctx-size 262144 --temp 0.7 --top-p 0.95 --top-k 20 --min-p 0.0 --repeat-penalty 1.0 --presence-penalty 0.0  --spec-draft-device Vulkan0 --spec-type ngram-mod,draft-mtp --spec-draft-n-max 2 --spec-ngram-mod-n-match 16 --spec-ngram-mod-n-min 32 --spec-ngram-mod-n-max 64s --spec-draft-n-min 0.75 --chat-template-kwargs "{\"preserve_thinking\": false, \"reasoning_effort\": \"medium\"}"

 
 
Ça me parait mieux même si le PP est vraiment lent, 35/s a 135K de context, le tg fait des pointes a 9/s.


 
"Qwen3.8-27B-UD-Q8_K_XL.gguf"  Q8 donc?  
En Q4 tu devrais être 2 x plus rapide, non?
même si à 18Tg/s... :D  
 
Tu penses que cette quantification vaut ce temps d'attente supplémentaire ?

n°45823
Tronklou
❤❤ Vrp Bambulab à mi-temps ❤❤
Posté le 20-08-2026 à 17:38:47  profilanswer
 

Naturellement c'est une 3060 12gb  :sol:  
 
Mouais donc meme en q4 , 32gb avec deux 5070ti c'est pas gagné au final si je veut les 256k de context  :sweat:

Message cité 1 fois
Message édité par Tronklou le 20-08-2026 à 17:42:37

---------------
Victime de girafophobie, mais se soigne.
n°45825
lapin
Posté le 20-08-2026 à 17:59:01  profilanswer
 

Apparemment et Gemini confirme, dans LM STUDIO il faut décocher les cases du Enable Thinking, car il pense trop et quand tu lui demandes de générer un script SVG si le Enable Thinking, il part en roue libre tourne en bloucle infinie et mange sont Context Length Limit Reach, du coup ben il ne génère jamais le SVG dans ses conditions.
 
 
On peut aussi baisser le Température Gemini conseil entre 0,2 et 0,3.
 
 
Édit en l'état, Madame et monsieur google votre fils  Google\gemma-4-12b-qat est atteint d'agnosie de transformation ou d'agnosie d'orientation.


Message édité par lapin le 20-08-2026 à 18:07:41
n°45826
the_fennec
f3nn3cUs z3rd4
Posté le 20-08-2026 à 18:27:20  profilanswer
 

yohaskan a écrit :


"Qwen3.8-27B-UD-Q8_K_XL.gguf"  Q8 donc?  
En Q4 tu devrais être 2 x plus rapide, non?
même si à 18Tg/s... :D  
 
Tu penses que cette quantification vaut ce temps d'attente supplémentaire ?


2x plus rapide, mais combien de fois plus con? :o
En plus je sais pas si je serais beaucoup plus rapide, il y a autant de paramètres, ils prennent juste moins de place.  
 
La ça fait presque 13h qu'il bosse, je vais voir de temps en temps ce qu'il fait:
https://i.imgur.com/63QZnWA.png
 
 

Tronklou a écrit :

Naturellement c'est une 3060 12gb  :sol:  
 
Mouais donc meme en q4 , 32gb avec deux 5070ti c'est pas gagné au final si je veut les 256k de context  :sweat:


 
En Q4 t'es large, avec 32GB tu mets un Q6 facile:
 
https://huggingface.co/unsloth/Qwen3.8-27B-GGUF
https://i.imgur.com/LbhXwXo.png
 
Et encore, pour un MoE tu peux offload quelques experts.


Message édité par the_fennec le 20-08-2026 à 18:28:53

---------------
Faudra que je teste un jour :o
n°45828
Pipould's
Posté le 20-08-2026 à 19:07:06  profilanswer
 

J'ai une possibilité de prendre une cmp170hx pour 1650 balles mais je trouve que ça vaut pas le coup vu le risque a lunlock :(

n°45829
moyen_moin​s
chat réincarné
Posté le 20-08-2026 à 19:39:05  profilanswer
 

le Q6 sur le 3.8 27B, c'est limite 32Go pour le contexte.
j'ai pris la version atomicchat (24.15Go) et en q8/q5_1, j'accroche péniblement les 64k de contexte

n°45837
epsiloncen​taury
Posté le 20-08-2026 à 20:36:46  profilanswer
 

Petit retour d’expérience sur un montage IA local  improbable.  
 
 
Je précise d’entrée que je ne suis ni ingénieur, ni informaticien, ni spécialiste de l’IA. Je suis retraité, curieux, j’aime bien bricoler et essayer de comprendre jusqu’où on peut pousser sa machine faute de mieux
 
Je me fais beaucoup aider par une IA pour comprendre les options, écrire certaines commandes, compiler, analyser les erreurs et trouver de nouvelles pistes.
 
Mais je ne voudrais pas non plus lui laisser tout le mérite.  :D  
Derrière ce qui suit, il y a eu des centaines de tests, de réglages, de plantages, de fausses pistes et de changements de direction. C’est moi qui décide ce qu’on tente, qui compare les résultats et surtout qui insiste quand quelque chose ne fonctionne pas.
 
L’IA est un excellent copilote technique. Mais sans la curiosité et la ténacité pour tester encore et encore, je serais probablement resté depuis longtemps avec ma configuration d’origine sous LM Studio.
 
Ma machine n’a pourtant absolument rien d’une station dédiée à l’IA :
 
- Ryzen 7 5700G
- 32 Go de RAM
- Radeon RX 5600 XT 6 Go
 
 
Au départ, je faisais tourner mes modèles uniquement sur la RX 5600 XT, principalement avec LM Studio.
 
J’avais déjà essayé une première fois de remettre ma vieille GTX 1650 dans la machine pour tenter de faire travailler les deux GPU ensemble sous LM Studio, l’expérience avait plutôt foiré. Je ne maîtrisais rien en fait,  y compris le jargon de ces outils. La répartition entre les deux cartes et les performances n’étaient pas intéressantes, en plus des plantages a cause des cartes. J’avais donc fini par enlever la GTX et laisser tomber l’idée.
 
Quelque temps plus tard, je suis tombé sur une vidéo d’un gars qui disait réussir à faire tourner Qwen 35B sur une GTX 1060.  :??:  
 
Ça m’a intrigué. Il utilisait llama.cpp . J'ai eu du mal à le croire, mais je me suis dit que si quelqu’un arrivait à faire fonctionner un modèle de cette taille sur une 1060, il devait bien y avoir quelque chose à tenter avec mon Ryzen, mes 32 Go de RAM et ma RX 5600 XT. C’est à ce moment-là que j’ai commencé à regarder llama.cpp beaucoup plus sérieusement. J’ai découvert qu’on pouvait aller beaucoup plus loin dans les réglages que ce que j’avais utilisé jusque-là . Nombre de couches GPU, offload, contexte, cache KV, nombre de threads CPU, gestion des experts MoE, etc...  Avec l’aide de l’IA, j’ai commencé à tester différents paramètres. Et plutôt que de commencer tranquillement avec un petit 7B ou 8B, mon premier gros essai sous llama.cpp a été directement, comme le gard de la video . Qwen 3.6 35B-A3B MoE Q4_K_M
 
Sur le papier, ce n’est pas vraiment le modèle qu’on imagine faire tourner confortablement sur ma machine. Il fait environ 35 milliards de paramètres au total, mais grâce à son architecture MoE, environ 3 milliards seulement sont actifs à chaque token. Après pas mal d’essais sur l’offload GPU, les experts laissés côté CPU, le cache KV et les threads, je suis arrivé à un réglage de ce genre :
 
-ngl 99 --n-cpu-moe 35 --cache-type-k q4_0 --cache-type-v q4_0 -c 4096 -t 8
 
Et là, grosse surprise. Sur mon Ryzen 5700G, avec 32 Go de RAM et la RX 5600 XT, j’arrive autour de :
 
- 30 tokens/s sur le prompt
- 16 à 17 tokens/s en génération
 
À ce niveau-là, on n’est plus dans le simple (Le modèle arrive à se charger)  environ 17 tokens/s, le 35B MoE est réellement utilisable pour discuter. C’est vraiment ce résultat qui m’a convaincu de continuer à creuser llama.cpp.
 
Je me suis alors laissé tenter par une autre idée ?  Transformer ce gros modèle en assistant vocal local. J'ai demandé a l'IA si c'était faisble, elle m'a dit OK .  Sur ces conseil , n'ayant aucune connaissance, sur le outils à utiliser pour le voix . J’ai ajouté progressivement :
 
 
- Whisper pour transformer ma voix en texte
- une mémoire de conversation
- du streaming pour commencer à traiter la réponse sans attendre la fin
- Kokoro pour la synthèse vocale
 
Là encore, il a fallu pas mal bricoler. Au début, par exemple, je conservais trop d’échanges dans le contexte immédiat envoyé au modèle. La latence devenait énorme. On a fini par séparer deux choses :
 
- une mémoire longue conservée sur disque
- une mémoire courte très réduite envoyée au LLM
 
Le reste de la conversation peut donc être conservé sans obliger le modèle à tout retraiter à chaque nouvelle question. On a également réduit le temps nécessaire pour détecter la fin de ma phrase et fait démarrer la synthèse vocale plus tôt. Au final, j’avais donc un Qwen 35B local avec lequel je pouvais réellement discuter au micro. Ce n’est qu’après ça que je suis revenu à mon ancienne idée, faire travailler ensemble la RX 5600 XT et la GTX 1650.
 
Puisque llama.cpp permettait des réglages beaucoup plus fins, je me suis dit qu’il fallait retenter l’expérience qui avait échoué sous LM Studio. Avec l’aide de l’IA, j’ai compilé une version de llama.cpp avec deux backends différents dans la même build :
 
GTX 1650 4 Go : CUDA
RX 5600 XT 6 Go : Vulkan
 
Et cette fois, ça fonctionne réellement. Les deux cartes peuvent travailler sur le même modèle dans le même processus, chacune avec son propre backend. Ce n’est évidemment ni du SLI ni du CrossFire. On est plutôt dans une sorte de multi-GPU hétérogène, llama.cpp répartit les couches entre une carte NVIDIA utilisée en CUDA et une carte AMD utilisée en Vulkan.
 
Pour mesurer l’intérêt de la chose, j’ai testé Gemma 12B Q4_K_M. J’ai essayé plusieurs répartitions entre les deux GPU.  
 
GTX40  RX 60
30/70
25/75
33/67
29/71
 
Le meilleur compromis chez moi s’est trouvé autour de :
 
30 % GTX
70 % Radeon
 
Avec la Radeon seule, sur un réglage comparable du genre : -ngl 37 -t 5 -c 4096  j’étais autour de : 9,3 tokens/s en génération. Avec les deux GPU, en offload complet : -ngl 99 et un split 30/70, je monte autour de :22 tokens/s
 
Donc sur ce modèle, je passe grosso modo de 9 à 22 tokens. Plus de deux fois la vitesse.
 
Et là, pour le coup, les deux cartes ne sont pas simplement détectées par le logiciel. Elles participent réellement au calcul du même modèle.
 
J’ai également essayé un Qwen 27B dense Q4_K_M. Malgré les deux GPU, il reste chez moi autour de :1,8 token/s. Le modèle est tout simplement beaucoup trop gros par rapport à la VRAM disponible et finit par énormément solliciter la RAM système. Ce qui donne une comparaison assez amusante :
 
Qwen 27B dense : environ 1,8 t/s
Qwen 35B MoE   : environ 17 t/s

 
Donc le nombre de milliards de paramètres écrit dans le nom du modèle ne suffit clairement pas à prédire les performances. L’architecture compte énormément. Dans le cas du MoE, le modèle peut avoir beaucoup de paramètres au total sans tous les activer à chaque token. La façon dont on répartit les poids et les calculs entre VRAM, RAM et CPU change également complètement le résultat.
 
Et maintenant je pousse encore un peu plus loin le bricolage. Plutôt que d’utiliser systématiquement les deux GPU pour le LLM, je teste une nouvelle répartition :
 
Qwen 35B MoE : RX 5600 XT + CPU/RAM
GTX 1650     : synthèse vocale
 
J’ai déjà relié directement l’interface web de llama.cpp à Kokoro. Donc je peux utiliser normalement le modèle dans le navigateur et ses réponses sont lues automatiquement à voix haute.
 
Et actuellement je teste Chatterbox à la place de Kokoro pour essayer d’obtenir une voix plus naturelle. Le modèle Chatterbox arrive à tenir sur la petite GTX 1650, environ 3,0 Go de VRAM au chargement
pic mesuré : environ 3,12 Go, VRAM disponible : 4 Go
 
Ça passe donc assez juste, mais ça passe. Le premier test en français est d'ailleurs déjà nettement plus naturel que Kokoro. Il reste encore un accent un peu étrange avec la voix de référence par défaut, donc la prochaine étape sera probablement de lui donner un extrait d’une vraie voix française comme référence.
 
Le but de tout ça n’est évidemment pas de prétendre qu’une RX 5600 XT et une GTX 1650 vont remplacer une 4090 ou une 5090. Ce qui m’intéresse surtout, c’est de voir jusqu’où on peut pousser du matériel assez ancien avec des réglages adaptés. Et finalement, ce qui m’amuse presque autant que le résultat, c’est la façon d’y arriver.  
 
un retraité qui n’est pas du métier, du vieux matériel, une IA comme copilote technique, et beaucoup, beaucoup d’essais.
 
L’IA m’a clairement permis de faire des choses que je n’aurais  jamais su faire seul. Mais elle ne remplace pas les heures passées à tester, mesurer, revenir en arrière, remettre en cause un réglage et choisir une nouvelle direction quand une idée ne fonctionne pas.
 
Quand j’ai commencé, je faisais simplement tourner quelques modèles sur ma Radeon sous LM Studio. Aujourd’hui, sur la même machine :
 
- je fais tourner un Qwen 35B MoE autour de 17 tokens/s
- j’ai pu discuter avec lui au micro
- j’ai réussi à faire travailler ensemble une Radeon en Vulkan et une GeForce en CUDA sur le même modèle
- et je teste maintenant une configuration où chaque GPU fait tourner une IA différente, l’un pour le LLM et l’autre pour la voix
 
Je ne pensais franchement pas arriver à ça avec cette machine quand j’ai commencé.   :D

n°45838
Tronklou
❤❤ Vrp Bambulab à mi-temps ❤❤
Posté le 20-08-2026 à 20:41:44  profilanswer
 

Bravo pour ta pugnacité et merci pour le petit reportage, c'est ce genre de config de type Frankenstein qui donne envie de se lancer avec ses propres moyens :D


---------------
Victime de girafophobie, mais se soigne.
 Page :   1  2  3  4  5  ..  36  37  38  39  40  41

Aller à :
Ajouter une réponse
 

Sujets relatifs
[Topic unique] IA générative de texte, ChatGPT, Copilot, Gemini & cosécurité de l'IA / agentique et des Devs en roue libre
Plus de sujets relatifs à : Infra IA : aide au choix et troubleshot de LLM Locaux


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)