treeru.com
개발

CPU 임베딩 벤치마크 도구 — 8종 CPU 성능 비교 자동화

2026-02-10
Treeru

RAG 시스템이나 검색 엔진에서 임베딩은 핵심 연산입니다. GPU 없이 CPU만으로 임베딩을 돌릴 때, CPU마다 성능 차이가 얼마나 날까요?Python 벤치마크 스크립트를 만들어 8종 CPU에서 실제 임베딩 속도를 측정했습니다.

8종

테스트 CPU

3가지

임베딩 모델

~7배

최대 성능 차이

JSON

결과 포맷

1벤치마크 설계

공정한 비교를 위해 테스트 조건을 통일했습니다. 동일한 텍스트 데이터셋, 동일한 임베딩 모델, 동일한 Python 환경에서 측정합니다.

테스트 조건

임베딩 모델: all-MiniLM-L6-v2 (경량), bge-base-en-v1.5 (중형), multilingual-e5-large (대형)
입력 데이터: 1,000개 문장 (평균 50토큰)
배치 크기: 32 (고정)
반복 횟수: 3회 (중앙값 사용)
Python 3.11 + sentence-transformers
OS: Ubuntu 22.04 LTS (통일)
임베딩 모델파라미터차원특징
all-MiniLM-L6-v222M384경량, 빠른 속도
bge-base-en-v1.5109M768균형잡힌 성능
multilingual-e5-large560M1024다국어, 높은 품질

왜 CPU 임베딩인가?

모든 환경에 GPU가 있는 건 아닙니다. 에지 서버, 저전력 미니PC, 클라우드 CPU 인스턴스에서 임베딩을 처리해야 하는 경우가 많습니다. CPU만으로 어느 정도 성능이 나오는지 아는 것이 인프라 설계의 출발점입니다.

2Python 벤치마크 스크립트

sentence-transformers를 사용해 실제 임베딩 워크로드를 시뮬레이션합니다. 모델 로딩, 웜업, 실측정을 분리해서 순수 추론 속도만 측정합니다.

# cpu_embedding_bench.py

import os
import time
import json
import platform
from sentence_transformers import SentenceTransformer

MODELS = [
    "all-MiniLM-L6-v2",
    "BAAI/bge-base-en-v1.5",
    "intfloat/multilingual-e5-large",
]

# 테스트 데이터 (1,000개 문장)
sentences = [
    f"This is test sentence number {i} for "
    f"embedding benchmark."
    for i in range(1000)
]

def benchmark_model(model_name, batch_size=32, runs=3):
    model = SentenceTransformer(model_name)

    # 웜업 (첫 실행은 느림)
    model.encode(sentences[:10], batch_size=batch_size)

    times = []
    for _ in range(runs):
        start = time.perf_counter()
        model.encode(sentences, batch_size=batch_size)
        elapsed = time.perf_counter() - start
        times.append(elapsed)

    median_time = sorted(times)[len(times) // 2]
    throughput = len(sentences) / median_time

    return {
        "model": model_name,
        "median_seconds": round(median_time, 2),
        "sentences_per_sec": round(throughput, 1),
    }

results = {
    "cpu": platform.processor(),
    "cores": os.cpu_count(),
    "benchmarks": [
        benchmark_model(m) for m in MODELS
    ],
}

print(json.dumps(results, indent=2))

# 실행 방법

# 의존성 설치
pip install sentence-transformers torch

# 벤치마크 실행 (결과를 JSON으로 저장)
python cpu_embedding_bench.py > results.json

# 또는 특정 CPU 코어 수로 제한
OMP_NUM_THREADS=4 python cpu_embedding_bench.py

OMP_NUM_THREADS로 코어 수 제한이 가능합니다

PyTorch는 기본적으로 모든 CPU 코어를 사용합니다.OMP_NUM_THREADS=4로 제한하면 특정 코어 수에서의 성능을 측정할 수 있습니다. 다른 작업과 CPU를 공유하는 환경에서 유용합니다.

38종 CPU 측정 결과

데스크탑, 노트북, 미니PC, 서버 등 다양한 환경의 CPU에서 테스트했습니다. 모든 CPU에서 all-MiniLM-L6-v2 (경량 모델) 기준으로 비교합니다.

서버CPU코어/스레드문장/초상대 성능
서버 ARyzen 9 9950X3D16C/32T847.3100%
서버 BRyzen 9 7950X16C/32T782.192%
워크스테이션 ACore i9-14900K24C/32T725.686%
서버 CRyzen 7 7840HS8C/16T489.258%
서버 DRyzen 7 5700X8C/16T421.550%
미니PC ACore i5-1340P12C/16T356.842%
노트북 ARyzen 5 7530U6C/12T218.426%
미니PC BIntel N1004C/4T123.715%

최고 성능

847.3

문장/초 (9950X3D)

최대 성능 차이

6.85배

9950X3D vs N100

N100 1,000문장

8.1초

실사용 가능 수준

N100도 의외로 쓸 만합니다

가장 느린 N100도 초당 123.7문장을 처리합니다. 1,000문장을 약 8초에 임베딩하는 건 소규모 RAG 시스템에서 충분히 실용적인 속도입니다. TDP 6W로 전기료 부담도 거의 없습니다.

4SSH 원격 실행

서버가 여러 대라면 일일이 접속해서 테스트하는 건 비효율적입니다.SSH 키 인증을 설정해 두면 셸 스크립트로 여러 서버에 벤치마크를 원격 실행하고 결과를 수집할 수 있습니다.

# remote-bench.sh - 여러 서버에서 벤치마크 원격 실행

#!/bin/bash

SERVERS=(
  "server-a"
  "server-b"
  "server-c"
  "minipc-a"
)

SCRIPT_PATH="/opt/bench/cpu_embedding_bench.py"
OUTPUT_DIR="./results"

mkdir -p "$OUTPUT_DIR"

for server in "${SERVERS[@]}"; do
  echo "[$server] 벤치마크 시작..."

  ssh "$server" "python3 $SCRIPT_PATH" \
    > "$OUTPUT_DIR/$server.json" 2>/dev/null

  if [ $? -eq 0 ]; then
    echo "[$server] 완료"
  else
    echo "[$server] 실패"
  fi
done

echo "모든 서버 벤치마크 완료"
echo "결과: $OUTPUT_DIR/"

SSH 키 설정 전제

SSH 키 기반 인증이 설정되어 있어야 함 (비밀번호 프롬프트 없이)
각 서버에 Python 3.11+와 sentence-transformers가 설치되어 있어야 함
벤치마크 스크립트가 동일한 경로에 배포되어 있어야 함
방화벽에서 SSH 포트가 열려 있어야 함

첫 실행은 느릴 수 있습니다

sentence-transformers가 처음 실행될 때 모델을 다운로드합니다. 원격 실행 전에 각 서버에서 한 번씩 수동으로 실행해서 모델 캐시를 만들어두세요.

5JSON 결과 출력

벤치마크 결과를 JSON으로 출력하면 후처리와 시각화가 편합니다. 여러 서버의 결과를 병합하는 스크립트도 함께 제공합니다.

# 단일 서버 결과 예시 (server-a.json)

{
  "cpu": "AMD Ryzen 9 9950X3D",
  "cores": 32,
  "benchmarks": [
    {
      "model": "all-MiniLM-L6-v2",
      "median_seconds": 1.18,
      "sentences_per_sec": 847.3
    },
    {
      "model": "BAAI/bge-base-en-v1.5",
      "median_seconds": 3.42,
      "sentences_per_sec": 292.4
    },
    {
      "model": "intfloat/multilingual-e5-large",
      "median_seconds": 8.75,
      "sentences_per_sec": 114.3
    }
  ]
}

# merge_results.py - 여러 서버 결과 병합

import json
import glob

results = []
for path in sorted(glob.glob("results/*.json")):
    with open(path) as f:
        data = json.load(f)
        data["server"] = path.split("/")[-1].replace(
            ".json", ""
        )
        results.append(data)

# 모델별로 정렬된 비교표 생성
for model_idx in range(len(results[0]["benchmarks"])):
    model_name = results[0]["benchmarks"][model_idx]["model"]
    print(f"\n=== {model_name} ===")
    ranked = sorted(
        results,
        key=lambda r: r["benchmarks"][model_idx][
            "sentences_per_sec"
        ],
        reverse=True,
    )
    for r in ranked:
        bench = r["benchmarks"][model_idx]
        print(
            f"  {r['cpu']:30s}"
            f"  {bench['sentences_per_sec']:8.1f} sent/s"
        )

JSON 포맷의 장점

JSON으로 저장하면 Python, JavaScript, Go 등 어떤 언어에서든 쉽게 파싱할 수 있습니다. 시각화 도구(matplotlib, Chart.js)에 직접 넣을 수 있고, 데이터베이스에 저장하기도 편합니다.

6종합 비교표

8종 CPU의 3가지 모델 벤치마크 결과를 한 눈에 비교합니다. 단위는 문장/초(sentences per second)입니다.

CPUMiniLM (경량)BGE-base (중형)E5-large (대형)TDP
9950X3D847.3292.4114.3170W
7950X782.1268.5105.7170W
i9-14900K725.6251.898.2253W
7840HS489.2170.366.854W
5700X421.5146.257.165W
i5-1340P356.8123.548.328W
7530U218.475.629.515W
N100123.742.816.76W

용도별 CPU 추천

1

대규모 임베딩 서버

9950X3D 또는 7950X — 코어 수와 캐시가 크며, 높은 처리량이 필요한 환경에 적합

2

비용 대비 성능

7840HS 또는 5700X — 절반 가격에 절반 이상의 성능, 중소규모 서비스에 충분

3

저전력 에지 환경

N100 — TDP 6W로 전기료 부담 없이 소규모 RAG 시스템 운영 가능

성능/와트 효율은 모바일 CPU가 우수합니다

단순 속도는 데스크탑 CPU가 압도적이지만, 와트당 성능(문장/초/W)으로 보면 7840HS(9.1 sent/s/W)가 9950X3D(5.0 sent/s/W)보다 80% 이상 효율적입니다. 전기료가 중요한 환경이라면 모바일 CPU가 합리적인 선택입니다.

이 글의 핵심 정리

  • Python + sentence-transformers로 CPU 임베딩 벤치마크를 자동화
  • 8종 CPU 테스트 결과: 최고(9950X3D) 847.3 문장/초, 최저(N100) 123.7 문장/초
  • 최대 성능 차이 6.85배 — CPU 선택이 임베딩 처리량에 직접적 영향
  • SSH 원격 실행으로 여러 서버 벤치마크를 한 번에 수집
  • JSON 출력으로 결과 분석 및 시각화가 편리
  • 와트당 효율은 모바일 CPU(7840HS)가 데스크탑(9950X3D)보다 80% 우수

본 글은 2026년 2월 기준으로 작성되었습니다. 벤치마크 결과는 OS 설정, BIOS 버전, 메모리 속도, 주변 온도 등에 따라 달라질 수 있습니다. 서버 이름은 실제 환경과 무관한 가명을 사용했습니다. CPU 가격과 TDP는 발행일 기준 공식 스펙이며, 실제 소비 전력은 다를 수 있습니다. 본 콘텐츠의 비상업적 공유는 자유이나, 상업적 이용 시 문의 페이지를 통해 연락 바랍니다.

AI 인프라 구축이 필요하신가요?

Treeru가 CPU/GPU 선택부터 RAG 시스템 구축까지 도와드립니다.

무료 상담 신청하기
T

Treeru

웹 개발, IT 인프라, AI 솔루션 분야의 실무 인사이트를 공유합니다. 기업의 디지털 전환을 돕는 IT 파트너, Treeru입니다.

공유

댓글

(4개)
4.38/ 5

로그인하면 댓글을 작성할 수 있습니다.

2026-02-22
454.0

sentence-transformers 라이브러리를 벤치마크에 쓴 점이 좋습니다. 실제 임베딩 워크로드와 동일한 조건이니까 신뢰도가 높네요.

2026-02-19
555.0

SSH 원격 실행 부분이 특히 실용적이네요. 서버 여러 대에 동일한 벤치마크를 돌리고 결과를 모으는 게 스크립트 하나로 되니까요.

2026-02-15
4.554.5

N100으로 임베딩 서버를 돌리고 있는데, 벤치마크 숫자를 보니 역시 저전력 대비 성능이 괜찮은 CPU인 것 같습니다.

관련 글

© 2026 TreeRU. All rights reserved.

본 콘텐츠의 저작권은 TreeRU에 있으며, 출처를 밝히지 않은 무단 전재 및 재배포를 금합니다. 인용 시 출처(treeru.com)를 반드시 명시해 주세요.