주요 콘텐츠로 건너뛰기
AI 튜토리얼

Flare로 로컬 AI 모델 준비 및 서비스 제공

Flare가 Ignition과 Helios를 사용해 NVIDIA SM120 및 SM121 GPU에서 선택한 AI 모델을 준비하고 서비스하는 방식을 알아보세요. 이 튜토리얼에서는 Flare의 아키텍처, 설정 워크플로, 명시적 메모리 계획, 대화 상태 처리, 기본 서비스 제공 과정과 실용적인 최적화 고려 사항을 설명합니다.

Flare로 로컬 AI 모델 준비 및 서비스 제공

Flare란 무엇인가?

Flare는 NVIDIA SM120 및 SM121 GPU를 위해 특별히 설계된 로컬 추론 서버입니다. 긴 대화, 코딩 에이전트, 그리고 도구를 반복적으로 호출하는 워크로드를 대상으로 합니다. 핵심 목표는 텍스트 생성의 응답성을 유지하면서 워크스테이션과 소형 시스템의 리소스를 효율적으로 사용하는 것입니다.

Flare 로컬 추론 서버 로고

광범위한 호환성을 우선하는 서빙 플랫폼과 달리, Flare는 선택된 모델, 하드웨어, 커널 및 배포 패턴을 중심으로 한 제한적이고 명확한 계약을 사용합니다. 이러한 좁은 범위 덕분에 모델 준비, 메모리 관리, 스케줄링 및 실행을 함께 설계할 수 있습니다.

지원되는 모델 레시피, 사전 준비된 용량 및 NVIDIA 하드웨어 요구 사항이 로컬 워크로드와 일치할 때 Flare를 사용하는 것이 가장 적합합니다.

아키텍처 작동 방식

Flare는 모델 준비와 런타임 서빙을 Ignition과 Helios라는 두 가지 주요 구성 요소로 나눕니다.

Ignition: 빌드 시점 모델 준비

Ignition은 표준 Python 머신러닝 생태계에서 작동합니다. PyTorch, Transformers 및 FlashInfer/b12x를 사용해 모델을 로드하고, 커널을 튜닝하고, 순전파를 컴파일하며, CUDA 그래프를 캡처합니다.

그 결과 준비된 런타임 패키지가 생성됩니다. 컴파일과 CUDA 그래프 캡처는 서빙이 시작되기 전에 완료되므로 프로덕션 런타임에서 이러한 준비 단계를 수행할 필요가 없습니다.

Helios: Rust 기반 서빙

Helios는 Ignition이 생성한 패키지를 서빙하는 Rust 런타임입니다. Python 없이 실행되며 스케줄링, 캐시 저장, 요청 처리 및 런타임 리소스의 명시적 소유권을 담당합니다.

모델 레시피
    -> Ignition 준비
    -> 커널 튜닝 및 순전파 컴파일
    -> CUDA 그래프 캡처
    -> 런타임 패키지
    -> Helios 서빙

이 경계를 통해 모델 개발은 익숙한 Python 도구와 연결하면서도 서빙 런타임은 작고 집중된 형태로 유지할 수 있습니다.

주요 기능

  • NVIDIA 중심 지원: Flare는 다양한 가속기를 폭넓게 지원하기보다 NVIDIA SM120 및 SM121 GPU를 대상으로 설계되었습니다.
  • 빌드 시점의 Python: 모델 준비에는 PyTorch, Transformers 및 FlashInfer/b12x가 사용됩니다.
  • 런타임의 Rust: Helios는 Python 없이 준비된 패키지를 서빙합니다.
  • 서빙 전 최적화: 커널 튜닝, 순전파 컴파일 및 CUDA 그래프 캡처는 요청을 처리하기 전에 완료됩니다.
  • 명시적 메모리 계획: 버퍼와 실행 용량을 미리 계획합니다.
  • 완전한 대화 상태: Flare는 반복 상태와 KV 캐시를 통합된 대화 상태로 취급하여 올바른 재사용, 분기 및 재개를 지원합니다.
  • 레시피 기반 모델 지원: 모델 레시피가 모델 계산을 정의하고 필요한 경우 레이아웃이나 실행을 특화합니다.
  • 로컬 워크로드 지향: 이 시스템은 로컬 머신에서의 긴 세션, 코딩 에이전트 및 반복적인 도구 사용을 위해 설계되었습니다.

사전 요구 사항 및 설정

Flare를 사용하기 전에 환경이 의도적으로 제한된 범위에 부합하는지 확인하십시오.

  1. GPU 아키텍처를 확인합니다. Flare는 NVIDIA SM120 및 SM121 GPU를 대상으로 합니다. README는 다른 GPU 아키텍처에 대한 지원을 주장하지 않습니다.
  2. 지원되는 모델 레시피를 선택합니다. Flare는 모든 모델과의 호환성을 보장하지 않습니다. 모델이 사용 가능한 레시피와 해당 레시피가 예상하는 데이터 흐름에 맞아야 합니다.
  3. 런타임 용량을 계획합니다. 예상되는 대화와 요청에 필요한 버퍼 및 실행 용량을 결정합니다.
  4. Python 빌드 환경을 준비합니다. Ignition은 모델을 준비하는 동안 PyTorch, Transformers 및 FlashInfer/b12x에 의존합니다.
  5. 모델 패키지를 준비합니다. Ignition을 사용해 모델을 로드하고, 커널을 튜닝하고, 순전파 실행을 컴파일하며, CUDA 그래프를 캡처합니다.
  6. Helios로 서빙합니다. 준비가 완료되면 결과로 생성된 런타임 패키지를 Rust 서빙 런타임에 제공합니다.

README에는 정확한 설치 명령, 종속성 버전 또는 실행 플래그가 제공되어 있지 않습니다. 공식 절차는 저장소의 모델 준비 및 서빙 가이드를 따르십시오. 구성 세부 사항은 CLI 가이드를 참조하십시오.

기본 사용 워크플로

Flare의 기본 워크플로는 먼저 준비한 다음 서빙하는 방식입니다. README에 구체적인 명령이 정의되어 있지 않으므로 다음 예시는 실행 가능한 CLI 구문이 아니라 개념을 설명하기 위한 것입니다.

1단계: 호환되는 모델 선택

Flare 레시피가 지원하는 모델로 시작합니다. 레시피는 모델 계산을 담당하며 데이터 흐름이 맞는 경우 표준 모델 구현을 재사용할 수 있습니다. 다른 레이아웃이나 실행 동작이 필요한 경우 레시피가 해당 부분을 특화합니다.

2단계: 필요한 용량 결정

준비된 패키지가 지원해야 하는 워크로드를 추정합니다. 대화 길이, 동시 실행 요구 사항, 캐시 사용, 반복 상태 및 반복적인 도구 상호 작용을 고려합니다. Flare는 중요한 버퍼와 용량을 서빙 전에 계획할 것을 요구합니다.

3단계: 런타임 패키지 빌드

Ignition을 통해 준비 프로세스를 실행합니다. 이 단계에서 Flare는 Python 생태계를 사용해 비용이 큰 설정 작업을 수행합니다.

입력:
  지원되는 모델 레시피
  모델 매개변수
  계획된 실행 용량

Ignition 수행 작업:
  모델 로드
  커널 튜닝
  순전파 컴파일
  CUDA 그래프 캡처

출력:
  준비된 런타임 패키지

4단계: Helios 시작

준비된 패키지를 제공하도록 Helios를 구성합니다. Helios는 제공 런타임에 Python이 필요하지 않으며 요청 처리, 스케줄링, 캐시 저장을 담당합니다. 실제 구성 옵션과 실행 인터페이스는 CLI 문서를 참조하세요.

5단계: 의도한 워크로드 실행

현실적인 장문 대화, 코딩 에이전트 세션, 도구 사용 패턴으로 Flare를 테스트하세요. 짧은 합성 프롬프트는 Flare가 설계된 워크로드와 동일한 상태 관리, 메모리 트래픽 또는 스케줄링 동작을 드러내지 않을 수 있습니다.

대화 상태 이해하기

Flare는 대화 상태를 단순한 KV 캐시 이상으로 취급합니다. 모델이 순환 상태도 사용하는 경우 해당 상태는 캐시와 동기화된 상태로 유지되어야 합니다. Flare는 이러한 요소를 하나의 전체로 관리하므로 재사용, 분기, 재개와 같은 작업에서도 전체 대화가 올바르게 유지됩니다.

이 설계는 에이전트에 특히 중요합니다. 에이전트는 도구 결과를 기다리며 일시 중지하거나, 대안을 평가하는 동안 분기하거나, 이전 세션을 재개할 수 있습니다. 모델 상태의 한 부분만 보존하면 잘못된 이어서 실행 동작이 발생할 수 있습니다.

고급 팁

실제로 필요한 용량에 맞춰 준비하기

실행 용량과 버퍼는 미리 계획되므로 준비 방식이 제공 가능한 범위에 직접 영향을 줍니다. 하나의 패키지가 모든 컨텍스트 길이, 동시성 수준 또는 모델 구성에 적합하다고 가정하지 마세요. 프로젝트 문서의 용량 규칙을 따르세요.

제공 경로에서 컴파일 제외하기

프로덕션 제공을 시작하기 전에 Ignition이 커널 튜닝, 순전파 컴파일, CUDA 그래프 캡처를 완료하도록 하세요. 이러한 분리는 선택적 최적화가 아니라 Flare 설계의 핵심 요소입니다.

상태를 원자적 단위로 취급하기

대화 재사용, 분기 또는 재개를 구현할 때는 Flare가 관리하는 전체 상태를 보존하세요. KV 캐시가 항상 모델의 유일한 영속 상태라고 가정하는 통합을 설계하지 마세요.

레시피를 모델 경계로 사용하기

모델별 계산은 모델 레시피에 배치하고, 스케줄링, 요청 처리, 캐시 저장은 런타임에 맡기세요. 이는 Flare의 책임 분리를 따르며 공유 런타임을 핵심 기능에 집중하는 데 도움이 됩니다.

실제 워크로드를 기준으로 벤치마크하기

Rust는 리소스 소유권을 명시적으로 관리하지만, 구현 언어만으로 더 높은 추론 성능이 보장되지는 않습니다. GPU 계산, 메모리 트래픽, 스케줄링, 모델 구조, 워크로드 형태는 여전히 중요합니다.

더 폭넓은 모델, 하드웨어 또는 배포 환경을 비교하려면 vLLM과 Flare를 비교하세요. 두 시스템 모두 CUDA 그래프를 사용할 수 있지만, 적용 범위와 설계상의 트레이드오프는 서로 다릅니다. 배포하려는 정확한 모델, 대화 패턴, 용량, 머신을 기준으로 벤치마크하세요.

설계 문서 읽기

런타임, 모델 레시피, 상태 관리, 스케줄링 경계가 이러한 방식으로 구성된 이유를 더 자세히 알아보려면 저장소의 핵심 설계 문서를 참조하세요.

결론

Flare는 NVIDIA SM120 및 SM121 GPU에서 일부 모델을 위한 특화된 로컬 추론 경로를 제공합니다. Ignition은 익숙한 Python 도구를 사용해 최적화된 런타임 패키지를 준비하고, Helios는 간결한 Rust 런타임을 통해 이를 제공합니다. Flare는 장시간 대화, 코딩 에이전트, 반복적인 도구 사용, 메모리 및 대화 상태의 명시적 관리를 포함하는 계획된 로컬 워크로드에 가장 적합합니다.