1. LLM Bench ๆฏไป้บผ?่ฝ่งฃๆฑบไป้บผๅ้ก
LLM Bench(ๆณๆ็จไพ้ๆธฌๅคงๅ่ช่จๆจกๅๆจ่ซๆ่ฝ็ๅบๆบๆธฌ่ฉฆๅทฅๅ ท/่ ณๆฌ)ไธป่ฆ็จไพๅ็ญไธๅๅ้ก:
- ้ซๆๅฅฝไธๅฅฝ? ไฝฟ็จ่ ไบๅๆ,ๅพ้ๅบๅฐ「็ๅฐ็ฌฌไธๅๅญ」ๅฟซไธๅฟซ(TTFT)。
- ็ฉฉไธ็ฉฉ? ไฝต็ผๆ้ซๆ่ฒ ่ผไธไพๆ,ๆฏๅฆ้ๅงๆๅ、่ถ ๆๆ้ฏ่ชค(p95、ErrRate)。
- ๆๅพไฝๅคๅฐไบบ? ๅคไฝฟ็จ่ ๆไปฃ็(Agent)ๅๆๆ้ฒไพ,ๅๅ้ๆฏๅฆ็ถญๆ(TPS / tokens per second)。
็ถไฝ ๅจๆฏๅฐไธๅๆจกๅ(7B/8B/14B)、ไธๅ็กฌ้ซ(CPU/GPU/็ตฑไธ่จๆถ้ซ)、ๆไธๅ้จ็ฝฒๆนๅผ(ๆฌๆฉ/VM/ๅฎนๅจ)ๆ, LLM Bench ่ฝ่ฎไฝ ็จ「ๆธๅญ」่ไธๆฏ「ๆ่ฆบ」ๅๆฑบ็ญ。
2. ไฝ ๆ่ฉฒๅ ๆ็ 5 ๅๆธฌ่ฉฆๅ่ฉ(TTFT / Latency / TPS / Concurrency / ErrRate)
| ๅ่ฉ | ไปฃ่กจๆ็พฉ | ไฝ ๆๅธธ็จไพๅคๆทไป้บผ |
|---|---|---|
| TTFT(Time To First Token) | ๅพ้ๅบ่ซๆฑๅฐๅๅณ「็ฌฌไธๅ token」็ๆ้ | ไบๅ้ซๆ:่ๅคฉ「ๆๆฒๆๅกไฝ」 |
| Latency | ๆดๅ่ซๆฑๅฎๆ็ๅปถ้ฒ(ๅซ็ๆๅฎ) | ้ทๆ็ๆ่ๆ、ๆด้ซ็ญๅพ ๆ้ |
| TPS(tokens/sec) | ๆฏ็งๅฏ็ๆๅคๅฐ token(ๅๅ้) | ๅคไฝฟ็จ่ ๆฟ่ผ้、้ท่ผธๅบๆ็ |
| Concurrency(ไฝต็ผ) | ๅๆ้ๅบๅนพๅ่ซๆฑ | ๅฃๅๆธฌ่ฉฆ:ๆๅ็ซฏๆฏๅฆๆๅพไฝ |
| ErrRate(้ฏ่ชค็) | ่ซๆฑๅคฑๆๆฏไพ(timeout/400/500/429 ็ญ) | ็ฉฉๅฎๆง:ๆฏๅฆ้ฉๅไธ็ทๆๅ Agent |
3. ๅฎ่ฃๆนๅผ(Windows / Linux / Python ็ฐๅขๆณจๆไบ้ )
ไฝ ๅฏไปฅๆ「LLM Bench」็่งฃๆไธ็ตๅฏ่ท็ Python benchmark ่ ณๆฌ(ๆๅ้กๅทฅๅ ท),ๆ ธๅฟๅๆๆฏ:
- ไฝ ่ฝๅผๅซๅฐไธๅๆจ่ซๆๅ็ซฏ(ไพๅฆ Ollama ็ OpenAI ็ธๅฎน API)。
- ไฝ ่ฝ็จ Python ๅท่ก่ ณๆฌไธฆ้ๅบ HTTP ่ซๆฑ。
3.1 Windows(PowerShell)
python -V
python -m pip install -U pip
python -m pip install -U requests
ๅฆๆไฝ ่ฆ่ท async/ไธฆ็ผ็ๆฌ(ๅธธ่ฆๆ็จ aiohttp/httpx),ๅฏไปฅๅ่ฃ:
python -m pip install -U aiohttp httpx
3.2 Linux(Ubuntu/Debian ้ก)
python3 -V
python3 -m pip install -U pip
python3 -m pip install -U requests aiohttp httpx
ๆณจๆ:่ฅไฝ ้ๅฐ PEP 668(็ณป็ตฑ Python ไธๅ ่จฑ็ดๆฅ pip ๅฎ่ฃ)็้ๅถ,ๅปบ่ญฐ็จ venv:
python3 -m venv .venv
. .venv/bin/activate
python -m pip install -U pip requests aiohttp httpx
4. ๆธฌ่ฉฆๅๆบๅ:็ขบ่ชไฝ ็ๆจ่ซๆๅ็ซฏ(Ollama / OpenAI ็ธๅฎน API)
้็ฏไปฅ Ollama ็บไพ,Ollama ้ ่จญๆๆไพ OpenAI ็ธๅฎน็ API ็ซฏ้ป。 ไฝ ๅฏไปฅๅ ็ขบ่ชๆๅๆฏๅฆ่ตทไพ:
4.1 ๆชขๆฅ Ollama ๆฏๅฆๅจ่ท
Windows:
ollama ps
Linux:
curl -s http://127.0.0.1:11434/api/tags | head
4.2 ไฝ ้ๆฌกๆธฌ่ฉฆ็็ฎๆจ็ซฏ้ป(็คบไพ)
http://127.0.0.1:11434/v1
ๅฆๆไฝ ็ bench ่ ณๆฌๆฏ่ตฐ OpenAI ๆ ผๅผ(/v1/chat/completions),้ๅ็ซฏ้ปๅฐฑๆฏๆๅธธ็จ็ๅ ฅๅฃ。
5. ๅบ็คๆธฌ่ฉฆ:่ทๅบ็ฌฌไธไปฝๅ ฑๅ(ๅฎไฝต็ผ、็ญ่ผธๅบ)
ๅ ็จ「ๅฎไฝต็ผ」็ขบไฟๆต็จ้ฝ้,ไธฆไธ็จ็ญ่ผธๅบๆธๅฐ่ฎๆธ(ไพๅฆ max_tokens=128)。 ไปฅไธๆฏไฝ ๅฏฆ้่ทๆๅ็็ฏไพ(Windows PowerShell):
$env:BENCH_CONCURRENCY="1"; python .\bench_ollama_ttft_async.py
ไฝ ็ถๆ่ผธๅบ้้ปๅฆไธ(ๆ้้้ต่ก):
Target: http://127.0.0.1:11434/v1
Model: llama3-groq-tool-use:8b
N=50 concurrency=1 max_tokens=128
=== Summary ===
OK: 50 ERR: 0 ErrRate: 0.0%
TTFT p50: 0.349s p95: 0.389s
่งฃ่ฎ:ๅจ concurrency=1 ไธ,TTFT p50 ็ด 0.35 ็ง、p95 ็ด 0.39 ็ง,ไธ ErrRate=0%,ไปฃ่กจไบๅ้ซๆๅฟซไธ็ฉฉ。
6. ้ฒ้ๆธฌ่ฉฆ็ฉ้ฃ:ไฝต็ผ、้ท่ผธๅบ、้ท Prompt ็ๅฃๅๆธฌ่ฉฆๆ้บผ่จญ่จ
ๅฆๆไฝ ่ฆ่ฉไผฐ「่ฝๆๅคๅฐไบบ」ๆ「Agent ๅๆ่ทๆไธๆ็ธ」,ไฝ ้่ฆๆๆธฌ่ฉฆๅๆ็ฉ้ฃ(ๅบๅฎไธๅ่ฎๅ ,ๅ ถไปไธๅ)。 ไธ้ข็ตฆไฝ ไธๅๆฐๆๆๅฏฆ็จ็็ฉ้ฃ้ ๅบ:
6.1 ไฝต็ผๅฃๅ(Concurrency)
ๅปบ่ญฐๅพ 1 → 2 → 4 → 8 ้ๆญฅๆ้ซ,ๆฏๅ้ป่ณๅฐ N=50:
# ไปฅ็ฐๅข่ฎๆธๆๅๆธๆนๅผ่ชฟๆด(ไพไฝ ็ bench ่
ณๆฌ่ๅฎ)
BENCH_CONCURRENCY=1
BENCH_CONCURRENCY=2
BENCH_CONCURRENCY=4
BENCH_CONCURRENCY=8
่งๅฏไธไปถไบ:
- ErrRate ๆฏๅฆ้ๅงไธๅ
- TTFT p95 ๆฏๅฆ็ช็ถ่ทณ้ซ(ๆๅ่ฎๅคง)
- ๅฎๆๆ้ๆฏๅฆ็ทๆง่ฎๆ ข(้กฏ็คบๅๅไธ่ถณ)
6.2 ่ผธๅบ้ทๅบฆ(max_tokens)
็จ 128 / 256 / 512 / 1024 ๆฏ่ผ「็ญ็ญ」่「้ทๆ」็ๅๅๅทฎ็ฐ。
6.3 Prompt ้ทๅบฆ(Context ๅฃๅ)
ๆ prompt ๅไธๆฎต:็ญ(ๆธๅ token)、ไธญ(ๆธ็พ token)、้ท(ๆธๅ token)。 ๅพๅค้จ็ฝฒๅจ「้ทไธไธๆ」ๆ TTFT ๆๆ้กฏ่ฎๆ ข,้ๆฏ Agent ๅ ดๆฏ็ๅธธ่ฆ็ถ้ ธ。
7. ๆธฌ่ฉฆ็ตๆๆ้บผ็:p50 / p95、ๆๅ、็ถ้ ธ่「ๅฅฝไธๅฅฝ」ๅคๆทๆจๆบ
ๆฐๆๆๆจ่ฆ็็ๆณๆฏ:ๅ ็ฉฉๅฎ、ๅ้ซๆ、ๆๅพๆฟ่ผ。
7.1 ็ฉฉๅฎๆง:ErrRate
- ErrRate = 0%:็ๆณ(ไฝ ้ๆฌกๅฐฑๆฏ 0%)
- ErrRate > 1%:้ๅง้่ฆๆฅๅๅ (timeout、VRAM、Gateway/ๅๅไปฃ็、้็้ๅถ็ญ)
7.2 ้ซๆ:TTFT
- < 0.5s:ๅคๆธๆ ๅขๆ่ฆบๅพ「ๅพ้ 」
- 0.5–1.5s:ๅฏ็จไฝๆๆ่ฆบๅจ็ญ
- > 2s:ไบๅ้ซๆๆ้กฏๅก(้ค้ๆฏ่ถ ๅคงๆจกๅๆ้ซ่ฒ ่ผ)
7.3 ๆๅ:p95 vs p50
p95 ไปฃ่กจ「ๆฏ่ผๅๆฅฃ้ฃ 5%」็ไฝฟ็จ่ ้ซๆ。็ๆณ็ๆณๆฏ p95 ไธ่ฆๆฏ p50 ๅคงๅคชๅค。 ไฝ ้ๆฌก็ TTFT(p50 0.349s / p95 0.389s)ๅทฎ่ทๅพๅฐ,ๅฑฌๆผ็ฉฉๅฎๅ。
7.4 ๅธธ่ฆ็ถ้ ธๅฐ็ ง
| ็พ่ฑก | ๆๅฏ่ฝๅๅ | ๅชๅ ่็ๆนๅ |
|---|---|---|
| TTFT ๆ้กฏ่ฎๆ ข,ไฝ TPS ้ๅฏไปฅ | ๅ่็/ๆ้/ไธไธๆ้้ท | ็ธฎ็ญ prompt、้ไฝ context、ๆ้ซๆนๆฌก/ไฝต็ผ็ญ็ฅ |
| ไฝต็ผไธๆ้ซๅฐฑ timeout/ErrRate ไธๅ | VRAM ไธ่ถณ、ๆๅ็ซฏๆ็จ้ฃฝๅ | ้ไฝไฝต็ผ、ๆๅฐๆจกๅ、ๅขๅ GPU/่จๆถ้ซ、่ชฟๆด batch |
| ้ท่ผธๅบ้ๅธธๆ ข | ๅๅไธ่ถณ(TPS ไฝ)、CPU/GPU ๅ้ | ๆนๆจ่ซๅพ็ซฏ、้ๅ GPU offload、ๆๆดๅฟซๆจกๅ |
8. ๅธธ่ฆๅ้กๆ้ค(400/429、Timeout、VRAM ไธ่ถณ、ๅทฅๅ ทไธๆฏๆด tools)
8.1 400(ๆจกๅไธๆฏๆด tools)
ไฝ ๆพ้ๅฐ้กไผผ่จๆฏ:ๆไบๆจกๅไธๆฏๆด tools(function/tool calling),ๅจ Agent/ๅทฅๅ ทๆจกๅผๆ็ดๆฅ 400。
- ่งฃๆณ:ๆน็จๆฏๆด tools ็ๆจกๅ(ๆ้้ tools ๆจกๅผ)。
- ๆชขๆฅ:ไฝ ็่ซๆฑ payload ๆฏๅฆๅธถไบ tool/schema。
8.2 429(้็้ๅถ)
- ไฝต็ผๅคช้ซ、ๆๆๅ็ซฏๆ้ๆต。
- ่งฃๆณ:้ไฝ concurrency、ๅ ้่ฉฆ/้้ฟ(backoff)。
8.3 Timeout / 503
- ๆๅ็ซฏๆ้้ไน 、ๆ GPU/CPU ้ฃฝๅ。
- ่งฃๆณ:้ไฝ max_tokens、็ธฎ็ญ prompt、่ชฟๆดไฝต็ผ็ญ็ฅ。
8.4 VRAM ไธ่ถณ(OOM)
- ๅธธ่ฆๆผๅคงๆจกๅ + ้ซไฝต็ผ + ้ทไธไธๆ。
- ่งฃๆณ:ๆๅฐๆจกๅ、้ไฝ context、ๆธๅฐไฝต็ผ、ๆๆน็จๅๅฑค/้ๅ็ๆฌ。
9. ๅชๅๆนๅ:ๅพ「้ซๆ」ๅฐ「ๆฟ่ผ้」็่ชฟๆ กๆธ ๅฎ
- ๅ ๆ ErrRate ๅฃๅฐ 0%:ไธ็ฉฉๅฐฑๅ ๅฅ่ซๅฟซ。
- ๅชๅ TTFT:็ธฎ็ญ prompt、้ฟๅ ่ถ ้ท system ๆไปค、ๆธๅฐไธๅฟ ่ฆไธไธๆ。
- ๆๅ TPS:็ขบไฟ GPU offload ๆญฃๅธธ、้ฟๅ CPU ่ขซๆๆปฟ、้ธๆๅๅ่ผ้ซ็ๆจกๅ。
- ไฝต็ผ็ญ็ฅ:้ๆญฅๆ้ซ concurrency ๆพๅฐๆ้ป(ErrRate ไธๅๆ p95 ้ฃๅ็่จ็ๅผ)。
- ๆฏ่ผๆจกๅ่ฆ「ๅๆขไปถ」:ๅ N、ๅ prompt、ๅ max_tokens、ๅไฝต็ผ,ๆๆๅฏๆฏๆง。
10. ๅฐ็ต:ๅปบ่ญฐไฝ ็ ง้ๅ้ ๅบ่ท,ๆๅฟซๆพๅฐๆไฝณๆจกๅ่้ ็ฝฎ
- concurrency=1、max_tokens=128:็ขบ่ชๆต็จ้、ErrRate=0%
- concurrency ้ๆญฅๆ้ซ:ๆพๅบ็ฉฉๅฎๆฟ่ผไธ้
- max_tokens ๆ้ท:่ฉไผฐ้ทๆๅๅ
- prompt ๆ้ท:ๆจกๆฌ Agent ๅ ดๆฏ
- ๅๆจกๅๅฐ็ ง่กจ:็จๆธๆๆๅบๆ้ฉๅไฝ ็้จ็ฝฒ็ตๅ
๐ฌ ็่จ่่
ไฝ ็ฎๅๆฏ็จ Ollama、ๆฌๆฉ GPU、้ๆฏ้ฒ็ซฏ API ๅจ่ท LLM?ๅฆๆไฝ ่ฒผไธไฝ ็ๆธฌ่ฉฆๅๆธ(N / concurrency / max_tokens)่ Summary, ๆๅฏไปฅๅนซไฝ ไธ่ตท่งฃ่ฎ p50/p95、ๆพ็ถ้ ธ,ไธฆๅปบ่ญฐไธไธๆญฅๆ้บผ่ชฟ。
ๆฒๆ็่จ:
ๅผต่ฒผ็่จ