EC Both 엔코더
EC Both 엔코더 (Ec Both Encoder)
ec_both 역할로 EC(인코더 캐시) 커넥터를 사용해 멀티모달 이미지 중복에 대한 캐시 히트를 시연하는 배포 스크립트입니다. ECExampleConnector와 공유 스토리지 경로를 설정해 서버를 띄우고, 중복 이미지가 포함된 벤치마크 데이터셋으로 캐시 동작을 확인합니다.
출처: 문서
본문
소스: https://github.com/vllm-project/vllm/tree/main/examples/disaggregated/ec_both_encoder
#!/bin/bash
set -euo pipefail
MODEL="${MODEL:-Qwen/Qwen2.5-VL-3B-Instruct}"
PORT="${PORT:-8000}"
GPU="${GPU:-0}"
NUM_PROMPTS="${NUM_PROMPTS:-200}"
EC_SHARED_STORAGE_PATH="${EC_SHARED_STORAGE_PATH:-/tmp/ec_cache}"
TIMEOUT="${TIMEOUT:-600}"
SERVER_PID=""
cleanup() {
echo "Stopping server..."
if [[ -n "$SERVER_PID" ]] && kill -0 "$SERVER_PID" 2>/dev/null; then
kill "$SERVER_PID" 2>/dev/null || true
wait "$SERVER_PID" 2>/dev/null || true
fi
echo "Done."
}
trap cleanup EXIT INT TERM
wait_for_server() {
local deadline=$((SECONDS + TIMEOUT))
echo "Waiting for server on port $PORT..."
while (( SECONDS < deadline )); do
if curl -sf "http://localhost:${PORT}/v1/models" > /dev/null 2>&1; then
echo "Server ready."
return 0
fi
sleep 2
done
echo "ERROR: Server did not start within ${TIMEOUT}s"
return 1
}
rm -rf "$EC_SHARED_STORAGE_PATH"
mkdir -p "$EC_SHARED_STORAGE_PATH"
###############################################################################
# Start server with ec_both
###############################################################################
CUDA_VISIBLE_DEVICES="$GPU" \
vllm serve "$MODEL" \
--port "$PORT" \
--enforce-eager \
--ec-transfer-config '{
"ec_connector": "ECExampleConnector",
"ec_role": "ec_both",
"ec_connector_extra_config": {
"shared_storage_path": "'"$EC_SHARED_STORAGE_PATH"'"
}
}' \
"$@" &
SERVER_PID=$!
wait_for_server
###############################################################################
# Benchmark -- dataset contains duplicate images, exercises cache hits
###############################################################################
echo "Running benchmark ($NUM_PROMPTS prompts)..."
vllm bench serve \
--model "$MODEL" \
--backend openai-chat \
--endpoint /v1/chat/completions \
--dataset-name hf \
--dataset-path lmarena-ai/VisionArena-Chat \
--seed 0 \
--num-prompts "$NUM_PROMPTS" \
--port "$PORT"
echo "Benchmark complete."
동작 요약:
- 환경변수로 모델·포트·GPU·프롬프트 수·공유 스토리지 경로·타임아웃을 설정 가능(기본값 제공).
ECExampleConnector와ec_role: ec_both로--ec-transfer-config를 구성해 서버를 백그라운드로 띄웁니다.- 서버가 준비될 때까지
/v1/models를 폴링하며 기다립니다. - 중복 이미지가 포함된
lmarena-ai/VisionArena-Chat데이터셋으로vllm bench serve벤치마크를 실행해 인코더 캐시 히트를 연습합니다. - 스크립트 종료 시 서버를 정리(cleanup)합니다.
더 알아보기 (Learn more)
- Module-level EC 예제 — EC(encoder caching)
- Disaggregated Serving