26S30b

QK·4일 전

현재 stage3a_vllm_benchmark.sh를 직접 확인해서 70B와 8B 시나리오의 실제 차이를 짚어보겠습니다.좋은 단서입니다 — 8B는 되고 70B/DeepSeek만 전부 0이라는 건 서버는 떴는데(헬스체크 통과) 실제 추론 요청이 거부되고 있다는 뜻입니다. 스크립트를 다시 보니 실제로 진단을 방해하는 버그를 하나 발견했습니다.

발견한 버그: 서버 로그 파일이 덮어써지고 있었습니다확인해보니, dense70b_bf16(시나리오1)과 long_ctx_shared_prefix_cached(시나리오3)가 served_name과 quant_flag가 똑같아서(llama-3.1-70b, none) 로그 파일명이 같습니다 — server_llama-3.1-70b_none.log. 그래서 시나리오3이 실행되면서 시나리오1의 서버 로그가 덮어써집니다. 지금 그 로그를 보고 계셨다면 사실 시나리오1이 아니라 시나리오3(prefix caching)의 로그를 보고 계셨을 수 있습니다.

이 버그를 고치고, 서버가 뜬 직후 실제 요청 1건을 curl로 미리 던져서 진짜 에러 본문을 즉시 보여주는 스모크 테스트를 추가하겠습니다. vllm bench serve의 "misconfiguration" 메시지는 뭉뚱그려진 요약이라 진짜 원인(400 응답의 detail 필드)을 알 수 없습니다.이제 각 start_vllm_server 호출부에 고유한 log_tag를 추가합니다.로그 파일 버그는 고쳤고, 재실행 시 서버가 뜨자마자 실제 요청 1건을 먼저 던져서 진짜 에러 본문을 바로 보여주도록 했습니다. 다시 돌리시면 smoke_fail_70b_bf16.json 같은 파일에 정확한 400 에러 메시지(detail 필드)가 남을 겁니다.

재실행 전에, 지금 가지고 계신 로그로 먼저 확인해볼 수 있는 것들입니다.

지금 바로 확인할 것

1. 지금 server_llama-3.1-70b_none.log는 사실 시나리오1(BF16)이 아니라 시나리오3(prefix caching)의 로그입니다 (덮어써짐). 시나리오1의 실제 실패 원인은 이 로그에 안 남아있을 수 있습니다. FP8 시나리오 로그(server_llama-3.1-70b_fp8.log)는 겹치지 않았으니 그건 확인 가능합니다 — 거기 보이는 에러가 있다면 알려주세요.

2. 8B는 되고 70B만 전부 실패했다는 건, 서버 기동 자체(/v1/models 헬스체크)는 통과했지만 실제 /v1/chat/completions 요청이 거부되고 있다는 뜻입니다. 가장 유력한 후보 2가지를 직접 확인해보시면 좋습니다.

후보 A: 70B 모델 디렉터리의 토크나이저/챗 템플릿 파일 누락 (air-gap 반입 시 일부 파일 누락)

ls -la /mnt/local-nvme-cache/models/Meta-Llama-3.1-70B-Instruct/tokenizer_config.json
ls -la /mnt/local-nvme-cache/models/Meta-Llama-3.1-8B-Instruct/tokenizer_config.json
python3 -c "
import json
for p in ['.../70B-Instruct/tokenizer_config.json', '.../8B-Instruct/tokenizer_config.json']:
    d = json.load(open(p))
    print(p, '-> chat_template 존재:', 'chat_template' in d)
"

70B 쪽에 chat_template이 없거나 파일이 비어있다면, /v1/chat/completions(채팅 엔드포인트)가 챗 템플릿을 적용 못 해서 400을 반환하는 것이 원인일 수 있습니다. (8B는 같은 Llama-3.1 Instruct 계열이라 원래는 동일한 템플릿을 가져야 정상입니다.)

후보 B: 서버 로그에서 KV 캐시 블록 할당 관련 경고

grep -iE "num_gpu_blocks|kv.cache|warning|error" /var/log/b300_validation/stage3a_vllm_*/server_llama-3.1-70b_fp8.log | tail -30

num_gpu_blocks_override 관련 값이 비정상적으로 작거나(0에 가까움) 관련 경고가 있는지 확인해주세요.

재실행해서 정확한 원인 확보

cd ~/b300-validation
source ~/vllm-bench-env/bin/activate
sudo -E ./stage3a_vllm_benchmark.sh

시나리오1 서버가 뜬 직후 스모크 테스트가 자동으로 돌면서, 실패 시 smoke_fail_70b_bf16.json에 정확한 detail 메시지를 남깁니다. 이 파일 내용을 보내주시면 정확한 원인을 짚어드릴 수 있습니다 — 지금은 클라이언트가 뭉뚱그린 "misconfiguration" 메시지만 있어서 추측 이상의 확답은 어렵습니다.

profile
engineer

0개의 댓글