Skip to content

A practical guide for benchmarking TensorFlow Lite (TFLite) models, covering inference performance, resource usage, and runtime configuration using the TFLite Benchmark Tool.

Notifications You must be signed in to change notification settings

deepixel-inc/Tflite-Benchmark-Program

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

16 Commits
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ TFLite ๋ชจ๋ธ ๋ฒค์น˜๋งˆํฌ ํ…Œ์ŠคํŠธ ๊ฐ€์ด๋“œ

์ด ๋ฌธ์„œ๋Š” TensorFlow Lite(TFLite) ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ(์ถ”๋ก  ์‹œ๊ฐ„, ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰ ๋“ฑ)์„ ์ •๋Ÿ‰์ ์œผ๋กœ ์ธก์ •ํ•˜๊ธฐ ์œ„ํ•œ TFLite Benchmark Tool ์‚ฌ์šฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Benchmark ๊ฒฐ๊ณผ ํ™”๋ฉด ์ฃผ์š” ์ง€ํ‘œ ์„ค๋ช…

[๊ทธ๋ฆผ 1] TFLite ์„ฑ๋Šฅ ์ธก์ • ๋ฉ”์ธ ๊ฒฐ๊ณผ

๐Ÿ“‚ ๋ชจ๋ธ ๋กœ๋“œ ๋ฐ ์‹คํ–‰
โ€ข Select Model (.tflite): ํ•™์Šต๋œ tflite ๋ชจ๋ธ์„ ์„ ํƒํ•˜์—ฌ ๋กœ๋“œ
โ€ข Run Benchmark: ๋กœ๋“œ๋œ tflite ๋ชจ๋ธ์„ ๋Œ€์ƒ์œผ๋กœ ์ข…ํ•ฉ ํ”„๋กœํŒŒ์ผ๋ง ๋ฐ์ดํ„ฐ ์‚ฐ์ถœ (Benchmark summary ์ฐธ๊ณ )


โš™๏ธ ์‹คํ–‰ ์„ค์ • [Current Settings]
๋ฒค์น˜๋งˆํฌ ์ˆ˜ํ–‰ ์‹œ ์ ์šฉ๋œ ํ™˜๊ฒฝ ์„ค์ •๊ฐ’์ž…๋‹ˆ๋‹ค.
๋ชจ๋ธ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜๊ธฐ ์ „, CPU ๋ฆฌ์†Œ์Šค ํ• ๋‹น ๋ฐ ํ•˜๋“œ์›จ์–ด ๊ฐ€์† ์˜ต์…˜์„ ์ •์˜ํ•˜๋ ค๋ฉด ์šฐ์ธก ์ƒ๋‹จ โš™๏ธ๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”. [๊ทธ๋ฆผ2] ์ฐธ์กฐ
โ€ข Threads (1): ์ถ”๋ก  ์‹œ ํ™œ์šฉ๋œ CPU ์ฝ”์–ด ์ˆ˜
โ€ข Target FPS (30.0): ๋ชฉํ‘œ ์ดˆ๋‹น ํ”„๋ ˆ์ž„ ์ˆ˜
โ€ข Warm-up Runs (10): ์ธก์ • ์ „ ์•ˆ์ •ํ™” ์‹คํ–‰ ํšŸ์ˆ˜
โ€ข Benchmark Runs (50): ์‹ค์ œ ํ†ต๊ณ„ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฐ์ถœํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋ณต ์‹คํ–‰ํ•œ ํšŸ์ˆ˜


๐Ÿ“Š ๋ฒค์น˜๋งˆํฌ ์š”์•ฝ [Benchmark Summary]
โ€ข Model Name: ํ…Œ์ŠคํŠธ์— ์‚ฌ์šฉ๋œ .tflite ๋ชจ๋ธ ํŒŒ์ผ๋ช…
โ€ข Model Size: ๊ธฐ๊ธฐ์— ์ €์žฅ๋œ ๋ชจ๋ธ ํŒŒ์ผ์˜ ๋ฌผ๋ฆฌ์  ์šฉ๋Ÿ‰
โ€ข Inference Time: 1ํšŒ ์ถ”๋ก  ํ‰๊ท  ์‹œ๊ฐ„
โ€ข Actual FPS: ์‹ค์ œ ์ธก์ •๋œ ์ดˆ๋‹น ํ”„๋ ˆ์ž„ ์ˆ˜
โ€ข CPU Usage: ๋ชจ๋ธ ์‹คํ–‰ ์ค‘ CPU์— ๊ฐ€ํ•ด์ง€๋Š” ์—ฐ์‚ฐ ๋ถ€ํ•˜์œจ
โ€ข Memory Usage: ์ ์œ  ์ค‘์ธ RAM ์šฉ๋Ÿ‰
โ€ข CPU Freq: ๋ฒค์น˜๋งˆํฌ ์ค‘ CPU๊ฐ€ ์ตœ๋Œ€ ํด๋Ÿญ ์„ฑ๋Šฅ์„ ์–ผ๋งˆ๋‚˜ ์œ ์ง€ํ–ˆ๋Š”์ง€


[โ—IMPORTANTโ—]
๐Ÿšจ ์ •ํ™•ํ•œ ์ธก์ •์„ ์œ„ํ•œ ํ•„๋… ํ™˜๊ฒฝ ์„ค์ • ๐Ÿšจ
1. ์ „์› ๊ด€๋ฆฌ: ์„ฑ๋Šฅ ์ œํ•œ(Throttling) ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ๋ฐฐํ„ฐ๋ฆฌ ์ ˆ์ „ ๋ชจ๋“œ ๋น„ํ™œ์„ฑํ™” ๊ถŒ์žฅ
2. ์—ด ๊ด€๋ฆฌ: ๋ฐœ์—ด๋กœ ์ธํ•œ ํ•˜๋“œ์›จ์–ด ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด ๊ธฐ๊ธฐ๊ฐ€ ๋ƒ‰๊ฐ๋œ ์ƒํƒœ์—์„œ ์ธก์ • ๊ถŒ์žฅ
3. ์ „๋ ฅ ๊ณต๊ธ‰: ์ „์•• ๋ณ€๋™ ์—†๋Š” ์ผ์ •ํ•œ ์ถœ๋ ฅ์„ ์œ„ํ•ด ์ถฉ์ „๊ธฐ๋ฅผ ์—ฐ๊ฒฐํ•œ ์ƒํƒœ์—์„œ ์ง„ํ–‰ํ•  ๊ฒƒ์„ ๊ถŒ์žฅ
4. ์ •๋ฐ€๋„ ํ™•๋ณด:
ย ย ย ย โ€ข Inference Time์€ ๋งค ์‹คํ–‰ ์‹œ ๋ณ€๋™์„ฑ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์–ด CPU ์ตœ๋Œ€ ํด๋Ÿญ(100.00%) ์œ ์ง€ ์ƒํƒœ์—์„œ ์ง„ํ–‰ ๊ถŒ์žฅ
ย ย ย ย โ€ข ๋ฐ์ดํ„ฐ์˜ ์ •๋ฐ€๋„๋ฅผ ์œ„ํ•ด 10ํšŒ ์ •๋„ ๋ฐ˜๋ณต ์ˆ˜ํ–‰ ํ›„ ํ‰๊ท ๊ฐ’์œผ๋กœ ํ™˜์‚ฐ์„ ๊ถŒ์žฅ

Benchmark ์„ค์ • ํ™”๋ฉด ์ฃผ์š” ์ง€ํ‘œ ์„ค๋ช…

[๊ทธ๋ฆผ 2] Benchmark Setting ์ˆ˜์ • ๊ฐ€๋Šฅ ํ™”๋ฉด

๐Ÿ› ๏ธ ๋ฒค์น˜๋งˆํฌ ์„ค์ • [Benchmark Setting]

1. ๊ธฐ๋ณธ ์‹คํ–‰ ์„ค์ •
๋ชจ๋ธ์ด ๊ตฌ๋™๋˜๋Š” ๋ฌผ๋ฆฌ์  ํ™˜๊ฒฝ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • Number of Threads (1): ์ถ”๋ก (Inference) ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹นํ•  CPU ์ฝ”์–ด์˜ ๊ฐœ์ˆ˜
  • Target FPS (30.0): ์•ฑ์ด ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ์ดˆ๋‹น ํ”„๋ ˆ์ž„ ์ˆ˜
  • Warm-up Runs (10): ๋ณธ๊ฒฉ์ ์ธ ์ธก์ • ์ „, ์บ์‹œ ๋กœ๋“œ ๋ฐ ํ•˜๋“œ์›จ์–ด ๊ฐ€์†๊ธฐ(Delegate) ์ดˆ๊ธฐํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์ „ ์‹คํ–‰ํ•˜๋Š” ํšŸ์ˆ˜
  • Benchmark Runs (50): ํ†ต๊ณ„์  ์‹ ๋ขฐ๋„๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๋ฐ˜๋ณต ์ˆ˜ํ–‰ํ•  ์ด ํšŸ์ˆ˜

2. ๊ฐ€์† ์˜ต์…˜ (Acceleration Options) ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์˜ ํŠน์ˆ˜ ํ•˜๋“œ์›จ์–ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ์„ค์ •์ž…๋‹ˆ๋‹ค.

  • Use XNNPack (ON): ๋ถ€๋™ ์†Œ์ˆ˜์ (Floating-point) ๋ชจ๋ธ์„ ์œ„ํ•ด ์„ค๊ณ„๋œ CPU ๊ฐ€์† ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • Use NNAPI Acceleration (OFF): ์•ˆ๋“œ๋กœ์ด๋“œ ์‹ ๊ฒฝ๋ง API๋ฅผ ํ†ตํ•ด ํ•˜๋“œ์›จ์–ด ๊ฐ€์†(GPU, DSP, NPU ๋“ฑ)์„ ์‚ฌ์šฉํ• ์ง€ ์—ฌ๋ถ€

About

A practical guide for benchmarking TensorFlow Lite (TFLite) models, covering inference performance, resource usage, and runtime configuration using the TFLite Benchmark Tool.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published