퀵스타트
퀵스타트 (Quickstart)
이 페이지는 공식 컨테이너 이미지를 사용한 가장 간단한 배포 흐름만 다뤄요. 소스 설치, Docker 빌드, 시스템 설정, 버전 매핑 등 모든 시나리오에 대한 완전한 설치 가이드는 NPU 지원 SGLang 설치를 참고하세요.
출처: 문서
본문
전제 조건 (Prerequisites)
지원 장치 (Supported Devices)
- Ascend A2 시리즈 제품
- Ascend A3 시리즈 제품
장치를 식별하려면 npu-smi info -l을 실행하세요: A3 시리즈는 NPU당 Chip Count: 2를, A2 시리즈는 NPU당 Chip Count: 1을 보고해요. 하드웨어 세부 사항은 Ascend NPU 참조를 참고하세요.
Docker
호스트 머신에 Docker가 설치되어 있고 Docker 데몬이 실행 중인지 확인하세요. 다음으로 확인할 수 있어요:
docker --version && docker info
Docker가 설치되어 있지 않다면 운영 체제에 맞는 공식 Docker 설치 가이드를 따라하세요.
컨테이너를 이용한 환경 설정
모델 가중치를 로컬 경로(예: /path/to/model)에 이미 다운로드했다면, 아래 docker run 명령에 --volume /path/to/model:/path/to/model을 추가해 그 경로를 컨테이너에 마운트하세요.
docker run -it --rm --privileged --network=host --ipc=host --shm-size=16g \
--device=/dev/davinci0 --device=/dev/davinci1 --device=/dev/davinci2 --device=/dev/davinci3 \
--device=/dev/davinci4 --device=/dev/davinci5 --device=/dev/davinci6 --device=/dev/davinci7 \
--device=/dev/davinci8 --device=/dev/davinci9 --device=/dev/davinci10 --device=/dev/davinci11 \
--device=/dev/davinci12 --device=/dev/davinci13 --device=/dev/davinci14 --device=/dev/davinci15 \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--volume /usr/local/sbin:/usr/local/sbin \
--volume /usr/local/Ascend/driver:/usr/local/Ascend/driver \
--volume /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \
--volume /etc/ascend_install.info:/etc/ascend_install.info \
--volume /var/queue_schedule:/var/queue_schedule \
--volume ~/.cache/:/root/.cache/ \
--entrypoint=bash \
$IMAGE
```
docker run -it --rm --privileged --network=host --ipc=host --shm-size=16g \
--device=/dev/davinci0 --device=/dev/davinci1 --device=/dev/davinci2 --device=/dev/davinci3 \
--device=/dev/davinci4 --device=/dev/davinci5 --device=/dev/davinci6 --device=/dev/davinci7 \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--volume /usr/local/sbin:/usr/local/sbin \
--volume /usr/local/Ascend/driver:/usr/local/Ascend/driver \
--volume /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \
--volume /etc/ascend_install.info:/etc/ascend_install.info \
--volume /var/queue_schedule:/var/queue_schedule \
--volume ~/.cache/:/root/.cache/ \
--entrypoint=bash \
$IMAGE
```
사용법 (Usage)
SGLang 서버는 기본적으로 컨테이너에 설치되어 있어요. pip show sglang로 버전을 확인할 수 있어요.
SGLang 서버 시작하기
SGLang은 Hugging Face에서 모델을 자동으로 다운로드해요. 모델이 이미 로컬 경로에 다운로드되어 있다면(컨테이너에 마운트된 상태) --model-path /path/to/model처럼 그 경로를 직접 사용하세요.
# Set HF_ENDPOINT to a mirror site if network is not available
export HF_ENDPOINT=https://hf-mirror.com
# Set your own HF_TOKEN to download restricted models
export HF_TOKEN=<secret>
# Start SGLang server
# It may take several minutes to download the model on the first run
sglang serve --model-path Qwen/Qwen2.5-7B-Instruct --attention-backend ascend &
서버 시작은 몇 분이 걸릴 수 있어요. 다음과 같은 출력이 보이면 서버가 실행 중인 거예요.
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:30000 (Press CTRL+C to quit)
The server is fired up and ready to roll!
테스트 요청 보내기
서버를 사용해 추론을 수행할 수 있어요:
curl -X POST http://localhost:30000/generate \
-H "Content-Type: application/json" \
-d '{
"text": "The capital of France is",
"sampling_params": {
"temperature": 0,
"max_new_tokens": 16
}
}'
응답의 "text" 필드에 "Paris"가 포함되어 있으면 서버가 예상대로 동작하는 거예요.
서버 중지 및 컨테이너 종료
SGLang 서버는 백그라운드 프로세스로 실행돼요. SIGINT 신호를 보내 중지할 수 있어요.
SGLANG_PID=$(pgrep -f "sglang serve")
kill -SIGINT $SGLANG_PID
서버가 정상적으로 종료될 때까지 잠시 기다리세요. 출력은 다음과 같아야 해요:
INFO: Shutting down
INFO: Waiting for application shutdown.
INFO: Application shutdown complete.
INFO: Finished server process [<SGLANG_PID>]
이제 서버가 중지됐어요. ps -ef | grep sglang으로 확인할 수 있는데 — 예상 출력은 아무것도 없어야 하고(일치하는 프로세스 없음), 그 다음 Ctrl+D를 눌러 컨테이너를 종료하세요.