오픈텔레메트리(OpenTelemetry) 표준으로 LLM 추적, 벤더 종속성 탈출!

by DD
2개월 전
조회수 26

오픈텔레메트리(OpenTelemetry)가 LLM 추적을 위한 표준을 발표하여, 추적 포맷(Tracing Format)의 표준화를 시도함

기존 LLM 추적 방식의 문제점: 벤더 종속성(Vendor Lock-in) 발생 및 대시보드 호환성(Dashboard Compatibility) 부족

오픈텔레메트리(OpenTelemetry) 표준은 세 가지 GenAI 스팬(Span) 정의: chat, invoke_agent, execute_tool

프롬프트(Prompt) 및 완료(Completion) 기록은 기본적으로 비활성화하여 개인 정보 보호(Privacy)를 강화

표준 준수를 위한 마이그레이션(Migration) 과정에서 추적 데이터(Tracing Data) 미수집 문제 발생, 해결 및 6개의 패치 버전 출시

오픈텔레메트리(OpenTelemetry) GenAI Semantic Conventions: 핵심 원리

오픈텔레메트리(OpenTelemetry)는 LLM 추적을 위한 표준인 GenAI Semantic Conventions을 발표하여, 추적 데이터(Tracing Data)의 상호 운용성(Interoperability)을 확보했다. 이 표준은 세 가지 주요 스팬(Span)을 정의한다.

chat: 모델 호출(Model Call) 시 사용

invoke_agent: 에이전트 호출(Agent Invocation) 시 사용

execute_tool: 도구 실행(Tool Execution) 시 사용

스팬 이름(Span Name)은 {operation} {name} 형식으로 지정하며, 기존 벤더 종속적인 추적 방식에서 벗어나 표준화된 속성(Standardized Attributes)을 사용한다. 이를 통해 다양한 백엔드(Backend)에서 추적 데이터를 시각화할 수 있다.

표준 준수를 위한 마이그레이션(Migration) 과정

기존 추적 방식에서 오픈텔레메트리(OpenTelemetry) 표준으로 마이그레이션(Migration)하는 과정에서, 저자는 이중 방출(Dual-Emit) 방식을 채택했다. 이는 기존 속성과 새로운 표준 속성을 동시에 내보내는 방식으로, 하위 호환성(Backward Compatibility)을 유지하면서 점진적으로 표준을 적용할 수 있도록 한다.

@deprecated 어노테이션(Annotation): 기존 속성에 적용하여 사용 중단을 알림

OTEL_SEMCONV_STABILITY_OPT_IN 환경 변수: 새로운 속성 사용 여부 제어

v3 릴리스(Release): 기존 속성 완전 제거

이러한 접근 방식은 기존 사용자(Existing Users)에게 미치는 영향 최소화하면서, 표준을 준수하는 방향으로의 전환을 가능하게 한다.

LLM 추적 시 개인 정보 보호(Privacy) 고려 사항

오픈텔레메트리(OpenTelemetry) 표준은 개인 정보 보호(Privacy)를 최우선 가치로 삼아, 프롬프트(Prompt)와 완료(Completion)를 기본적으로 기록하지 않도록 권고한다. 이는 민감한 정보의 무분별한 노출을 방지하기 위한 조치이다.

기본 설정: 프롬프트 및 완료 기록 비활성화

선택적 기록: gen_ai.input.messages 및 gen_ai.output.messages 속성을 사용하여 JSON 문자열 형태로 기록

외부 저장소: 프롬프트 및 완료를 별도의 저장소에 저장하고, 스팬에는 참조 정보만 포함

이러한 접근 방식은 데이터 유출 위험(Data Leakage Risk)을 최소화하면서, 필요한 경우에만 프롬프트 및 완료를 기록할 수 있도록 한다.

오픈텔레메트리(OpenTelemetry) 표준의 장점

오픈텔레메트리(OpenTelemetry) 표준을 준수함으로써 얻을 수 있는 가장 큰 장점은 다양한 백엔드(Backend)와의 호환성(Compatibility)이다. 표준화된 속성을 사용하면, 특정 벤더(Vendor)에 종속되지 않고 여러 도구에서 추적 데이터를 시각화할 수 있다.

Jaeger: 기본 계층 구조(Hierarchy View) 지원

Arize Phoenix: GenAI 전용 UI 및 에이전트 워크플로우(Agent Workflow) 제공

SigNoz: GenAI 대시보드 지원

Datadog: LLM 관측 가능성(Observability) 기능 제공

Langfuse: 세션 뷰(Session View) 지원

Grafana + Tempo: 속성 기반 쿼리(Query) 및 사용자 정의 대시보드(Custom Dashboard) 구축

결과적으로 벤더 종속성(Vendor Lock-in)을 방지하고, 다양한 도구를 활용하여 LLM 시스템을 모니터링할 수 있다.

실제 구현 시 발생한 문제점 및 해결 과정

저자는 오픈텔레메트리(OpenTelemetry) 표준을 구현하는 과정에서, 추적 데이터(Tracing Data)가 전혀 수집되지 않는 문제에 직면했다. 이는 Node.js SDK의 특정 설정으로 인해 발생한 문제였다.

문제 원인: spanProcessors: [] 설정 시 추적 데이터 내보내기(Export) 비활성화

해결 방법: 설정 수정 및 테스트 코드(Test Code) 보완

결과: 6개의 패치 버전(Patch Version) 출시

이러한 경험을 통해, 저자는 테스트의 중요성(Importance of Testing)을 강조하며, 실제 구현 환경에서의 테스트를 통해 예상치 못한 문제를 발견하고 해결하는 과정을 보여준다.

OpenTelemetry just standardized LLM tracing. Here's what it actually looks like in code.