Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

AMD MI300X에서 SGLang 사용하기

요즘 가장 잘 알려지지 않은 비밀은 새로운 AMD GPU가 추론에 엄청나게 비용 효율적이라는 점입니다. AMD MI300X 여러 대에서 매우 빠른 추론 서버를 실행하는 방법의 핵심 요약을 원하신다면 다음과 같습니다.

높은 처리량의 추론을 서비스하려는 경우, 추론 서버 선택지는 사실상 다음과 같습니다.

  • TensorRT-LLM: GPU 배포를 위해 모델을 최적화하는 NVIDIA의 고성능 딥러닝 추론 라이브러리로, 낮은 지연 시간과 높은 처리량에 중점을 둡니다.
  • vLLM: 대규모 언어 모델을 서비스하기 위한 범용 프레임워크로, 특히 Kubernetes 환경과 높은 처리량의 추론 시나리오에 적합합니다.
  • SGLang: 오버헤드 없는 배치 스케줄링과 최적화된 어텐션 커널 같은 고급 기능을 갖춘, 효율적인 추론을 위해 설계된 프레임워크입니다.

제 경험상 SGLang이 실행하기 가장 쉽습니다. 다만 kserve로 Kubernetes 추론 서비스를 관리하고 있다면, 네트워크 효과와 종속성 때문에 결국 vLLM을 사용하게 될 가능성이 큽니다.

그래도 SGLang의 성능은 매우 뛰어납니다. FlashInfer 어텐션 커널을 사용한 오버헤드 없는 배치 스케줄링과 자동 KV 캐시 재사용을 위한 RadixAttention 등 성능 향상을 가져올 수 있는 최적화가 많이 있습니다. 또한 JSON 출력을 많이 처리하는 경우를 위해 SGLang에는 매우 빠른 제약 디코딩 알고리즘도 있습니다.

설정

시작하려면 최신 SGLang 이미지를 받으십시오.

docker pull rocm/sglang-staging:latest

컨테이너를 실행하십시오.

docker run -d \
  -it \
  --ipc=host \
  --network=host \
  --privileged \
  --device=/dev/kfd \
  --device=/dev/dri \
  --device=/dev/mem \
  --group-add render \
  --security-opt seccomp=unconfined \
  -v /home:/workspace \
  rocm/sglang-staging:latest

그런 다음 컨테이너 ID를 확인하고 다음 명령을 실행하여 컨테이너 안의 셸에 접속하십시오.

docker exec -it $CONTAINER_ID bash

그런 다음 Hugging Face에 로그인하십시오.

huggingface-cli login

그런 다음 다음 명령을 실행하여 서버를 시작하십시오. DeepSeek-R1 모델을 사용하고 FP8로 양자화하겠습니다.

HSA_NO_SCRATCH_RECLAIM=1 python -m sglang.launch_server \
  --model deepseek-ai/DeepSeek-R1 \
  --tp 8 \
  --quant fp8 \
  --trust-remote-code \
  --port 8000

그런 다음 다음 명령을 실행하여 클라이언트를 시작하십시오.

import openai

port = 8000
client = openai.Client(base_url=f"http://127.0.0.1:{port}/v1", api_key="None")

response = client.chat.completions.create(
    model="deepseek-ai/DeepSeek-R1",
    messages=[
        {"role": "user", "content": "Who wrote the Simarillion?"},
    ],
    temperature=0,
    max_tokens=64,
)

print_highlight(f"Response: {response}")

성능을 더 높이기 위해 쓸 수 있는 다른 요령도 있습니다. 예를 들어 NUMA 밸런싱을 비활성화할 수 있습니다.

sudo sh -c 'echo 0 > /proc/sys/kernel/numa_balancing'

더 많은 튜닝 가이드는 AMD 문서를 참고하십시오.


원문 © Stephen Diehl, stephendiehl.com · 글 CC BY-SA 4.0, 코드 MIT · Stephen Diehl은 런던의 소프트웨어 엔지니어이자 작가입니다(저자가 정한 소개 문구). 이 글은 저자가 개인 자격으로 쓴 것이며 어떤 조직과의 연관도 밝히거나 암시해서는 안 됩니다 (라이선스와 고지).
이 페이지는 원문을 한국어로 옮기며 변경한 비공식 번역이며 같은 CC BY-SA 4.0으로 제공합니다 · yeokja 한국어 번역 · Anthropic 사의 claude-opus-5-5 모델을 활용하여 번역되었으며 학습을 모두 비허용한 상태로 작업하였습니다.