Dynamo: NVIDIA가 공개한 고성능 AI 추론 프레임워크

Dynamo 소개

NVIDIA가 공개한 Dynamo는 멀티 노드 분산 환경에서 생성형 AI 및 추론 모델을 고성능으로 서빙하기 위한 프레임워크입니다. 기존 LLM 서빙 방식과 차별화된 GPU 활용 전략과 고속 데이터 전송, LLM-aware 요청 라우팅, KV 캐시 최적화 등의 기능을 제공합니다.

Dynamo는 Rust와 Python으로 개발된 오픈소스 추론 프레임워크로, LLM 모델을 고효율로 서빙할 수 있도록 설계되었습니다. 특히 TensorRT-LLM, vLLM, SGLang 등의 다양한 추론 엔진을 지원한다는 점에서 유연성과 확장성이 뛰어난 솔루션입니다. 다음과 같은 핵심 기능을 제공합니다:

  • 분리된 Prefill & Decode 추론: GPU 사용률을 극대화하고 지연 시간을 줄입니다.

  • 동적 GPU 스케줄링: 수요 변동에 맞춰 최적의 성능을 유지합니다.

  • LLM-aware 요청 라우팅: 불필요한 KV 캐시 재계산을 방지하여 속도를 향상합니다.

  • 고속 데이터 전송(NIXL 활용): 추론 응답 시간을 최소화합니다.

  • KV 캐시 오프로딩: 여러 메모리 계층을 활용하여 시스템 처리량을 증가시킵니다.

이번에 공개한 Dynamo와 기존 LLM 서빙 프레임워크의 주요 특징들을 비교하면 다음과 같습니다:

비교 항목 Dynamo vLLM TensorRT-LLM
추론 엔진 지원 :white_check_mark: 다양한 엔진(TRT-LLM, vLLM 등) :white_check_mark: vLLM 전용 :white_check_mark: TensorRT-LLM 전용
멀티 노드 지원 :white_check_mark: 가능 :no_entry_sign: 단일 노드 :white_check_mark: 가능
KV 캐시 최적화 :white_check_mark: 지원 :white_check_mark: 지원 :white_check_mark: 지원
GPU 스케줄링 :white_check_mark: 동적 스케줄링 :no_entry_sign: 정적 스케줄링 :white_check_mark: 지원
서빙 API :white_check_mark: OpenAI API 호환 :white_check_mark: OpenAI API 호환 :no_entry_sign: 전용 API 사용

Dynamo는 단순한 vLLM이나 TensorRT-LLM 기반 서빙 솔루션과는 달리 멀티 노드 환경에서 확장성 있는 AI 추론을 지원하는 것이 가장 큰 특징입니다.

Dynamo의 주요 기능

멀티 백엔드 지원

Dynamo는 TensorRT-LLM, vLLM, SGLang 등 다양한 추론 엔진을 지원하여, 사용자가 원하는 환경에 맞게 조합하여 사용할 수 있습니다.

고성능 LLM 서빙

Rust 기반의 OpenAI 호환 HTTP API 서버를 제공하며, 요청 라우팅 및 로드 밸런싱을 지원합니다. 또한, 다중 LLM 엔진을 효율적으로 통합할 수 있습니다.

Docker 기반 손쉬운 배포

Docker Compose를 이용하여 쉽게 배포하고 관리할 수 있습니다.

설치 및 사용 방법

Dynamo는 Ubuntu 24.04 및 x86_64 CPU 환경에서 실행하는 것이 권장됩니다. 지원하는 CPU 및 GPU 환경 등은 지원 환경 매트릭스 문서에서 확인할 수 있습니다.

설치 방법

먼저 다음과 같은 명령어로 필요 의존성 및 패키지를 설치할 수 있습니다:

# Python 및 필요 의존성 설치
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -yq python3-dev python3-pip python3-venv libucx0

# 가상 환경 설정
python3 -m venv venv
source venv/bin/activate

# Dynamo 패키지 설치
pip install ai-dynamo[all]

참고: TensorRT-LLM을 사용하려면 별도 브랜치를 확인하세요.

LLM 실행 방법

Hugging Face의 모델을 로컬에서 실행하려면 dynamo run 명령어를 사용합니다:

dynamo run out=vllm deepseek-ai/DeepSeek-R1-Distill-Llama-8B

이후, 다음과 같이 예제를 실행합니다:

? User › Hello, how are you?
✔ User · Hello, how are you?
Okay, so I'm trying to figure out how to respond to the user's greeting...

LLM 서빙 방법

Dynamo는 간단한 설정으로 docker 기반의 로컬 및 분산 추론 서비스를 실행할 수 있습니다.

먼저, Dynamo 분산 런타임 서비스를 실행합니다:

docker compose -f deploy/docker-compose.yml up -d

다음으로 LLM 서빙을 실행합니다:

cd examples/llm
dynamo serve graphs.agg:Frontend -f configs/agg.yaml

실행한 다음, 로컬 서버로 API 요청을 보낼 수 있습니다:

curl localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{
    "model": "deepseek-ai/DeepSeek-R1-Distill-Llama-8B",
    "messages": [
        {"role": "user", "content": "Hello, how are you?"}
    ],
    "stream": false,
    "max_tokens": 300
}' | jq

라이선스

Dynamo 프로젝트는 Apache License 2.0으로 공개 및 배포되고 있습니다.

:github: NVIDIA Dynamo GitHub 저장소




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

1개의 좋아요