퀵스타트

퀵스타트 (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 설치 가이드를 따라하세요.

컨테이너를 이용한 환경 설정

진행하기 전에 충분한 디스크 공간을 확보하세요. `df -h`를 실행해 사용 가능한 디스크 공간을 확인하세요. Docker 이미지는 최소 **30GB**의 여유 공간이 필요해요. 모델 가중치를 다운로드해야 한다면 [ModelScope](https://www.modelscope.cn/models)에서 모델 크기를 확인해 충분한 공간을 확보하세요. **안정 릴리스**와 **데일리 빌드**를 모두 공개해요. 검증된 버전을 원하면 안정 릴리스 태그(예: `cann9.0.0-a3-v0.5.16`)를, 최신 개발 변경 사항이 필요하면 데일리 빌드 태그(예: `main-cann9.0.0-a3`)를 선택하세요.

모델 가중치를 로컬 경로(예: /path/to/model)에 이미 다운로드했다면, 아래 docker run 명령에 --volume /path/to/model:/path/to/model을 추가해 그 경로를 컨테이너에 마운트하세요.

```shell Command theme={null} # Choose one (uncomment the line you want): export IMAGE=quay.io/ascend/sglang:cann9.0.0-a3-v0.5.16 # Stable release # export IMAGE=quay.io/ascend/sglang:main-cann9.0.0-a3 # Daily build
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
```
```shell Command theme={null} # Choose one (uncomment the line you want): export IMAGE=quay.io/ascend/sglang:cann9.0.0-910b-v0.5.16 # Stable release # export IMAGE=quay.io/ascend/sglang:main-cann9.0.0-910b # Daily build
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를 눌러 컨테이너를 종료하세요.

더 알아보기 (Learn more)