Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

« Scripts IA » : différence entre les versions

De Le Wiki de Lug
 
(10 versions intermédiaires par le même utilisateur non affichées)
Ligne 53 : Ligne 53 :
         (
         (
             while true; do
             while true; do
                nvidia-smi \
                  nvidia-smi \
                    --query-gpu=memory.used \
                      --query-gpu=index,memory.used \
                    --format=csv,noheader,nounits \
                      --format=csv,noheader,nounits \
                    >> "$TMP_VRAM"
                      >> "$TMP_VRAM"
   
   
                 sleep 0.1
                 sleep 0.1
Ligne 91 : Ligne 91 :
         # Pic VRAM
         # Pic VRAM
         #
         #
         GPU0_PEAK=$(awk 'NR%2==1 {if ($1>m) m=$1} END {print m+0}' "$TMP_VRAM")
         GPU0_PEAK=$(awk -F',' '$1+0 == 0 {gsub(/ /,"",$2); if ($2>m) m=$2} END {print m+0}' "$TMP_VRAM")
         GPU1_PEAK=$(awk 'NR%2==0 {if ($1>m) m=$1} END {print m+0}' "$TMP_VRAM")
         GPU1_PEAK=$(awk -F',' '$1+0 == 1 {gsub(/ /,"",$2); if ($2>m) m=$2} END {print m+0}' "$TMP_VRAM")
   
   
         if (( RC != 0 )); then
         if (( RC != 0 )); then
Ligne 157 : Ligne 157 :
  echo
  echo
  echo "CSV : $OUT"
  echo "CSV : $OUT"
=== Quelques résultats avec RTX 3060 12GO ===
=== Quelques résultats avec 2x RTX 3060 12GO ===
==== Muse Glimmer 30B (UD-Q5_K_L) ====
==== Muse Glimmer 30B (UD-Q5_K_L) ====
  batch  ubatch  pp_tps  gpu0_peak_mib  gpu1_peak_mib  status
  batch  ubatch  pp_tps  gpu0_peak_mib  gpu1_peak_mib  status
  512    128    675.29 9047           9047           OK
  512    128    666.88 9321           9321           OK
  512    256    723.88 9147           9147           OK
  512    256    715.51 9421           9421           OK
  '''512    512    755.27 9361           9361           OK'''
  512    512    746.05 9635           9635           OK
  1024  128    673.84 9047           9047           OK
  1024  128    665.82 9321           9321           OK
  1024  256    719.47 9147           9147           OK
  1024  256    713.34 9421           9421           OK
  1024  512    753.19 9361           9361           OK
  '''1024  512    746.39 9635           9635           OK'''
  1024  1024    779.98 9793          9793          OK
  1024  1024    772.92 10067          10067          OK
  2048  128    672.80 9047           9047           OK
  2048  128    665.81 9321           9321           OK
  2048  256    720.20 9147           9147           OK
  2048  256    712.31 9421           9421           OK
  2048  512    753.18 9361           9361           OK
  2048  512    745.80 9635           9635           OK
  2048  1024    780.41 9793          9793          OK
  '''2048  1024    772.98  10067          10067          OK'''
  2048  2048    768.27  10919          10919          OK


512 → 1024 ne donne que ~+3,5 % de vitesse, mais coûte +432 MiB par GPU.
 
* 1024/512 → 2048/1024 : +3,6 % de prefill pour +432 MiB/GPU
* 1024/1024 → 2048/2048 : -0,6 % de vitesse pour +852 MiB/GPU
* le sweet spot perf pur est clairement 2048/1024
* le sweet spot perf/VRAM reste plutôt 1024/512


==== Gemma4 31B (UD-Q4_K_XL) ====
==== Gemma4 31B (UD-Q4_K_XL) ====
  batch  ubatch  pp_tps  gpu0_peak_mib  gpu1_peak_mib  status
  batch  ubatch  pp_tps  gpu0_peak_mib  gpu1_peak_mib  status
  512    128    608.10 9463          9463          OK
  512    128    607.79 9463          9463          OK
  512    256    647.19 9593          9593          OK
  512    256    647.72 9593          9593          OK
  512    512    682.33 9919          9919          OK
  '''512    512    682.09 9919          9919          OK'''
  1024  128    608.80 9463          9463          OK
  1024  128    609.18 9463          9463          OK
  1024  256    645.05 9593          9593          OK
  1024  256    645.99 9593          9593          OK
  1024  512    681.17 9919          9919          OK
  1024  512    681.69 9919          9919          OK
  1024  1024    690.45 10573          10573          OK
  1024  1024    690.55 10573          10573          OK
  2048  128    607.51 9463          9463          OK
  2048  128    610.55 9463          9463          OK
  2048  256    645.92 9593          9593          OK
  2048  256    644.71 9593          9593          OK
  '''2048  512    681.99 9919          9919          OK'''
  2048  512    681.38 9919          9919          OK
  2048  1024    690.91 10573          10573          OK
  2048  1024    690.48 10573          10573          OK
512 → 1024 :
2048  2048    684.43  11869          11869          OK
* seulement ~+1,3 % de prefill
 
* mais +654 MiB par GPU
 
-> Donc sur Gemma, ub=1024 est franchement mauvais en rendement mémoire.
* 512/512 → 1024/1024 : seulement +1,24 % de prefill, pour +654 MiB/GPU.
* 1024/1024 → 2048/2048 : -0,89 % de performances, tout en ajoutant +1296 MiB/GPU.
* 512/512 → 2048/2048 : seulement +0,34 % de vitesse pour +1950 MiB/GPU (!).


==== Qwen 3.8 27B (UD-Q4_K_XL) ====
==== Qwen 3.8 27B (UD-Q4_K_XL) ====
Ligne 197 : Ligne 204 :
  512    128    608.64  8491          8491          OK
  512    128    608.64  8491          8491          OK
  512    256    666.90  8605          8605          OK
  512    256    666.90  8605          8605          OK
  512    512    693.10  8867          8867          OK
  '''512    512    693.10  8867          8867          OK'''
  1024  128    608.03  8491          8491          OK
  1024  128    608.03  8491          8491          OK
  1024  256    664.78  8605          8605          OK
  1024  256    664.78  8605          8605          OK
Ligne 209 : Ligne 216 :




Donc -ub 512 → 1024 donne seulement environ +2 % de prefill, mais coûte +528 MiB par GPU.
* 512 → 1024 : +1,7 % de PP pour +528 MiB/GPU
* 1024 → 2048 : +1,4 % de PP pour +1042 MiB/GPU
* 512 → 2048 : +3,1 % de PP pour +1570 MiB/GPU
 
Clairement, 2048/2048 est le plus rapide, mais le rendement mémoire est très mauvais.


==== Ling-3.0 Tiny (Q6_K_L) ====
==== Ling-3.0 Tiny (Q6_K_L) ====
Ligne 228 : Ligne 239 :


passer -ub 512 → 1024 apporte encore environ +10 % de prefill
passer -ub 512 → 1024 apporte encore environ +10 % de prefill
==== Gemma4 26B-A4B (UD-Q4_K_XL) ====
batch  ubatch  pp_tps  gpu0_peak_mib  gpu1_peak_mib  status
512    128    1053.40  7427          7651          OK
512    256    1448.60  7569          7793          OK
512    512    1838.16  7873          8097          OK
1024  128    1055.65  7427          7651          OK
1024  256    1446.31  7569          7793          OK
1024  512    1837.26  7873          8097          OK
1024  1024    2144.97  8487          8711          OK
2048  128    1055.99  7427          7651          OK
2048  256    1447.60  7569          7793          OK
2048  512    1838.98  7873          8097          OK
2048  1024    2148.06  8487          8711          OK
2048  2048    2263.36  9699          9923          OK
* 1024/512 → 2048/1024 : +16,9 % de prefill pour environ +614 MiB/GPU
* 2048/1024 → 2048/2048 : encore +5,4 % pour environ +1212 MiB/GPU
* 1024/512 → 2048/2048 : environ +23,2 % de PP pour ~+1,8 Go/GPU
Gemma 4 26B profite nettement plus des gros ubatch.
=== Quelques résultats avec 1x RTX 3060 12GO ===
==== FM2.5-2.6B (Q6_K_L) ====
batch  ubatch  pp_tps  gpu0_peak_mib  gpu1_peak_mib  status
512    128    4051.52  5722          0              OK
512    256    4474.83  5782          0              OK
512    512    4692.96  5914          0              OK
1024  128    3978.66  5722          0              OK
1024  256    4435.82  5782          0              OK
1024  512    4662.09  5914          0              OK
1024  1024    4771.00  6176          0              OK
2048  128    3933.95  5722          0              OK
2048  256    4420.80  5782          0              OK
2048  512    4653.68  5914          0              OK
2048  1024    4762.36  6176          0              OK
2048  2048    4758.63  6704          0              OK

Dernière version du 12 septembre 2026 à 08:03

Test de vitesse batch / ubatch via llama.cpp

#!/usr/bin/env bash

set -u

LLAMA_BENCH="/opt/llama.cpp/build/bin/llama-bench"
MODEL="/opt/models/Qwen3.8-27B/UD-Q4_K_XL/Qwen3.8-27B-UD-Q4_K_XL.gguf"

OUT="/tmp/muse_batch_bench.csv"

# Taille du prompt de benchmark.
# 8192 suffit largement pour comparer b/ub sans faire durer chaque test des minutes.
PROMPT=8192

# Nombre de répétitions par couple.
REPS=3

BATCHES=(512 1024 2048)
UBATCHES=(128 256 512 1024 2048)

echo "batch,ubatch,pp_tps,gpu0_peak_mib,gpu1_peak_mib,status" > "$OUT"

echo
echo "============================================================"
echo " Muse-Glimmer batch / ubatch benchmark"
echo "============================================================"
echo "Model : $MODEL"
echo "Prompt: $PROMPT tokens"
echo "Runs  : $REPS"
echo


for B in "${BATCHES[@]}"; do
    for UB in "${UBATCHES[@]}"; do

        # ubatch ne doit pas être supérieur au batch.
        if (( UB > B )); then
            continue
        fi

        echo
        echo "============================================================"
        echo "b=$B  ub=$UB"
        echo "============================================================"

        TMP_JSON=$(mktemp)
        TMP_VRAM=$(mktemp)

        #
        # Surveillance VRAM pendant le benchmark
        #
        (
            while true; do
                 nvidia-smi \
                     --query-gpu=index,memory.used \
                     --format=csv,noheader,nounits \
                     >> "$TMP_VRAM"

                sleep 0.1
            done
        ) &

        MON_PID=$!

        #
        # Benchmark
        #
        "$LLAMA_BENCH" \
            -m "$MODEL" \
            -p "$PROMPT" \
            -n 0 \
            -r "$REPS" \
            -b "$B" \
            -ub "$UB" \
            -ngl 999 \
            -sm tensor \
            -ts 1/1 \
            -ctk q8_0 \
            -ctv q8_0 \
            -fa on \
            -o json \
            > "$TMP_JSON" 2>/tmp/muse_bench_error.log

        RC=$?

        kill "$MON_PID" 2>/dev/null
        wait "$MON_PID" 2>/dev/null

        #
        # Pic VRAM
        #
        GPU0_PEAK=$(awk -F',' '$1+0 == 0 {gsub(/ /,"",$2); if ($2>m) m=$2} END {print m+0}' "$TMP_VRAM")
        GPU1_PEAK=$(awk -F',' '$1+0 == 1 {gsub(/ /,"",$2); if ($2>m) m=$2} END {print m+0}' "$TMP_VRAM")

        if (( RC != 0 )); then
            echo "ECHEC / OOM"
            cat /tmp/muse_bench_error.log

            echo "$B,$UB,0,$GPU0_PEAK,$GPU1_PEAK,FAIL" >> "$OUT"

            rm -f "$TMP_JSON" "$TMP_VRAM"
            continue
        fi

        #
        # Récupération du débit prompt processing depuis le JSON
        #
        PP=$(python3 - "$TMP_JSON" <<'PY'
import json
import sys

with open(sys.argv[1], "r") as f:
    data = json.load(f)

if isinstance(data, dict):
    data = [data]

vals = []

for x in data:
    if x.get("n_prompt", 0) > 0:
        v = x.get("avg_ts")
        if v is not None:
            vals.append(float(v))

if vals:
    print(f"{sum(vals)/len(vals):.2f}")
else:
    print("0")
PY
)

        echo
        echo "PP       : $PP tok/s"
        echo "GPU0 peak: $GPU0_PEAK MiB"
        echo "GPU1 peak: $GPU1_PEAK MiB"

        echo "$B,$UB,$PP,$GPU0_PEAK,$GPU1_PEAK,OK" >> "$OUT"

        rm -f "$TMP_JSON" "$TMP_VRAM"

        # petite pause thermique
        sleep 3
    done
done


echo
echo
echo "============================================================"
echo " RÉSULTATS"
echo "============================================================"

column -s, -t "$OUT"

echo
echo "CSV : $OUT"

Quelques résultats avec 2x RTX 3060 12GO

Muse Glimmer 30B (UD-Q5_K_L)

batch  ubatch  pp_tps  gpu0_peak_mib  gpu1_peak_mib  status
512    128     666.88  9321           9321           OK
512    256     715.51  9421           9421           OK
512    512     746.05  9635           9635           OK
1024   128     665.82  9321           9321           OK
1024   256     713.34  9421           9421           OK
1024   512     746.39  9635           9635           OK
1024   1024    772.92  10067          10067          OK
2048   128     665.81  9321           9321           OK
2048   256     712.31  9421           9421           OK
2048   512     745.80  9635           9635           OK
2048   1024    772.98  10067          10067          OK
2048   2048    768.27  10919          10919          OK


  • 1024/512 → 2048/1024 : +3,6 % de prefill pour +432 MiB/GPU
  • 1024/1024 → 2048/2048 : -0,6 % de vitesse pour +852 MiB/GPU
  • le sweet spot perf pur est clairement 2048/1024
  • le sweet spot perf/VRAM reste plutôt 1024/512

Gemma4 31B (UD-Q4_K_XL)

batch  ubatch  pp_tps  gpu0_peak_mib  gpu1_peak_mib  status
512    128     607.79  9463           9463           OK
512    256     647.72  9593           9593           OK
512    512     682.09  9919           9919           OK
1024   128     609.18  9463           9463           OK
1024   256     645.99  9593           9593           OK
1024   512     681.69  9919           9919           OK
1024   1024    690.55  10573          10573          OK
2048   128     610.55  9463           9463           OK
2048   256     644.71  9593           9593           OK
2048   512     681.38  9919           9919           OK
2048   1024    690.48  10573          10573          OK
2048   2048    684.43  11869          11869          OK


  • 512/512 → 1024/1024 : seulement +1,24 % de prefill, pour +654 MiB/GPU.
  • 1024/1024 → 2048/2048 : -0,89 % de performances, tout en ajoutant +1296 MiB/GPU.
  • 512/512 → 2048/2048 : seulement +0,34 % de vitesse pour +1950 MiB/GPU (!).

Qwen 3.8 27B (UD-Q4_K_XL)

batch  ubatch  pp_tps  gpu0_peak_mib  gpu1_peak_mib  status
512    128     608.64  8491           8491           OK
512    256     666.90  8605           8605           OK
512    512     693.10  8867           8867           OK
1024   128     608.03  8491           8491           OK
1024   256     664.78  8605           8605           OK
1024   512     691.75  8867           8867           OK
1024   1024    705.04  9395           9395           OK
2048   128     607.83  8491           8491           OK
2048   256     664.38  8605           8605           OK
2048   512     692.18  8867           8867           OK
2048   1024    705.58  9395           9395           OK
2048   2048    714.92  10437          10437          OK


  • 512 → 1024 : +1,7 % de PP pour +528 MiB/GPU
  • 1024 → 2048 : +1,4 % de PP pour +1042 MiB/GPU
  • 512 → 2048 : +3,1 % de PP pour +1570 MiB/GPU

Clairement, 2048/2048 est le plus rapide, mais le rendement mémoire est très mauvais.

Ling-3.0 Tiny (Q6_K_L)

batch  ubatch  pp_tps   gpu0_peak_mib  gpu1_peak_mib  status
512    128     2754.83  3427           3455           OK
512    256     4361.06  3447           3539           OK
512    512     5385.03  3505           3719           OK
1024   128     2511.54  3427           3455           OK
1024   256     4340.62  3447           3539           OK
1024   512     5354.56  3505           3719           OK
1024   1024    5928.85  3597           4089           OK
2048   128     2402.04  3427           3455           OK
2048   256     4320.40  3447           3539           OK
2048   512     5336.70  3505           3719           OK
2048   1024    5909.44  3597           4089           OK
2048   2048    5796.45  3815           4823           OK


passer -ub 512 → 1024 apporte encore environ +10 % de prefill

Gemma4 26B-A4B (UD-Q4_K_XL)

batch  ubatch  pp_tps   gpu0_peak_mib  gpu1_peak_mib  status
512    128     1053.40  7427           7651           OK
512    256     1448.60  7569           7793           OK
512    512     1838.16  7873           8097           OK
1024   128     1055.65  7427           7651           OK
1024   256     1446.31  7569           7793           OK
1024   512     1837.26  7873           8097           OK
1024   1024    2144.97  8487           8711           OK
2048   128     1055.99  7427           7651           OK
2048   256     1447.60  7569           7793           OK
2048   512     1838.98  7873           8097           OK
2048   1024    2148.06  8487           8711           OK
2048   2048    2263.36  9699           9923           OK
  • 1024/512 → 2048/1024 : +16,9 % de prefill pour environ +614 MiB/GPU
  • 2048/1024 → 2048/2048 : encore +5,4 % pour environ +1212 MiB/GPU
  • 1024/512 → 2048/2048 : environ +23,2 % de PP pour ~+1,8 Go/GPU

Gemma 4 26B profite nettement plus des gros ubatch.

Quelques résultats avec 1x RTX 3060 12GO

FM2.5-2.6B (Q6_K_L)

batch  ubatch  pp_tps   gpu0_peak_mib  gpu1_peak_mib  status
512    128     4051.52  5722           0              OK
512    256     4474.83  5782           0              OK
512    512     4692.96  5914           0              OK
1024   128     3978.66  5722           0              OK
1024   256     4435.82  5782           0              OK
1024   512     4662.09  5914           0              OK
1024   1024    4771.00  6176           0              OK
2048   128     3933.95  5722           0              OK
2048   256     4420.80  5782           0              OK
2048   512     4653.68  5914           0              OK
2048   1024    4762.36  6176           0              OK
2048   2048    4758.63  6704           0              OK