W&B와 Ploomber로 구현하는 LLM 관찰 가능성
이 글은 AI로 번역되었습니다. 오역이 있을 경우 댓글로 알려주세요.
Created on September 12|Last edited on September 12
Comment
소개
머신러닝과 인공지능에서 옵저버빌리티는 모델의 성능을 모니터링하고 이해하며 최적화할 수 있게 해 주는 핵심 요소입니다. 이 분야에서 특히 돋보이는 도구가 Weights & Biases (W&B)로, 실험을 추적하고 데이터를 시각화하며 인사이트를 공유하도록 설계된 플랫폼입니다.
이 글에서는 GPT-3.5 같은 대규모 언어 모델(LLM)로 구동되는 애플리케이션에 옵저버빌리티를 강화하기 위해 W&B를 어떻게 활용할 수 있는지 살펴보겠습니다.
LLM과 상호작용하는 대표적인 방법은 “프롬프트” 기법입니다. 간단히 말해, 모델에 프롬프트(텍스트 조각)를 제공하면 그 입력을 바탕으로 모델이 응답을 생성합니다.
LLM의 과제 중 하나는 때때로 잘못되거나 편향된 출력(‘환각’)을 생성할 수 있다는 점입니다. 따라서 옵저버빌리티를 통해 이들의 동작을 모니터링하고 이해하는 것이 중요합니다. 옵저버빌리티는 전통적인 모니터링을 넘어, 모델의 내부 상태를 들여다보고 동작을 이해하며 개선할 지점을 찾아내는 과정입니다.
LLM 옵저버빌리티를 위한 W&B 활용 이점
Weights & Biases는 LLM의 옵저버빌리티를 크게 향상시키는 다양한 기능을 제공합니다. 주요 이점은 다음과 같습니다:
- 실험 추적W&B로 실험을 체계적으로 추적할 수 있어, 서로 다른 모델 버전과 설정을 더 쉽게 비교할 수 있습니다.
- 실시간 모니터링개발자는 모델의 성능을 실시간으로 모니터링하여 문제가 발생하는 즉시 파악할 수 있습니다.
- 통찰을 주는 시각화W&B는 모델의 동작을 이해하고 패턴을 식별하는 데 도움이 되는 다양한 시각화 도구를 제공합니다.
- 협업과 공유통찰과 결과를 팀원이나 더 넓은 커뮤니티와 쉽게 공유하여 협업을 촉진할 수 있습니다.
이러한 기능 덕분에 W&B는 LLM의 옵저버빌리티를 강화하기에 이상적인 플랫폼입니다. 다음 섹션에서는 GPT-3.5 같은 LLM과 W&B를 어떻게 통합해 이러한 이점을 얻을 수 있는지 살펴보겠습니다.
Weights & Biases에서 트레이싱 이해하기
트레이싱은 Weights & Biases의 기능으로, 대규모 언어 모델과 기타 머신러닝 파이프라인의 실행 흐름을 구조화된 방식으로 기록하고 시각화합니다. 실행 과정의 각 단계에 대한 상세 정보를 수집해 디버깅, 재현성 모니터링, 성능 최적화에 도움을 줍니다.
과정은 다음 단계로 나눌 수 있습니다:
- 초기화W&B 런은 다음으로 시작합니다 wandb.init() 이며, W&B 대시보드로 데이터를 로깅할 수 있도록 환경을 설정합니다.
- 트레이스 로깅트레이스는의 Trace 클래스를 사용해 로깅합니다 wandb.sdk.data_types.trace_tree트레이스는 파이프라인에서 단일 실행 단계, 즉 하나의 스팬을 나타냅니다. 각 트레이스에는 시작과 종료 시각, 입력과 출력, 상태, 추가 메타데이터 등의 정보가 기록됩니다.
- 중첩 스팬트레이스는 중첩된 자식 스팬을 가질 수 있어 파이프라인을 계층적으로 표현할 수 있습니다. 예를 들어 에이전트의 루트 스팬 아래에 체인용 자식 스팬이 있고, 그 아래에 개별 LLM 호출에 대한 자식 스팬이 달릴 수 있습니다.
- 트레이스 보기로그가 완료되면 트레이스를 W&B 대시보드에서 확인할 수 있으며, 트레이스 테이블과 타임라인 형태로 제공됩니다. 이 시각화는 단계의 실행 순서와 상호 의존성을 이해하는 데 도움이 됩니다.
요약하면, W&B의 트레이싱은 LLM의 실행 흐름을 체계적으로 수집하고 시각화하는 방법 및 기타 머신러닝 파이프라인에 옵저버빌리티를 제공하고, 디버깅과 성능 최적화를 가능하게 합니다.
다음 섹션에서는 트레이싱을 LLM에 통합해 옵저버빌리티를 강화하는 방법을 살펴보겠습니다.
샘플 애플리케이션: GPT-3.5 도서 추천 어시스턴트
W&B와 GPT-3.5의 통합을 보여주기 위해, 자연어 질의에 기반해 사용자에게 도서를 추천하는 어시스턴트를 OpenAI API로 구현하는 실용적인 애플리케이션을 만들겠습니다. 이후 W&B를 활용해 어시스턴트의 옵저버빌리티를 강화하고, 성능과 사용자 상호작용을 추적하겠습니다.
애플리케이션의 동작 방식은 다음과 같습니다:
초기화
스크립트는 필요한 라이브러리를 임포트하고 W&B 프로젝트를 초기화하는 것으로 시작합니다. 이는 데이터 로깅과 실험 추적을 위한 기반을 마련합니다. 다음으로, 다음과 같은 데이터셋을 사용해 Goodreads의 인기 도서그다음 임베딩을 생성해 도서 추천을 조회하는 데 활용합니다.
에이전트 만들기
GPT-3.5 어시스턴트는 OpenAI의 Chat Completions API를 통해 OpenAI API로 생성됩니다. 이 어시스턴트는 사용자 질의에 기반해 도서 추천을 생성하는 작업을 수행하도록 프롬프트를 받습니다.
추천 생성
그 book_recommender_agent 이 함수는 어시스턴트가 사용자 질의와 상호작용하는 부분입니다. 질의를 처리하고 어시스턴트와 상호작용하며, 트레이스를 W&B에 기록합니다. 구체적으로는 사용자가 특정 작가를 언급했는지 감지해 그에 맞게 질의를 조정합니다. 이후 임베딩을 바탕으로 관련 목록을 생성하고, 해당 목록의 관련 도서를 기반으로 책 요약을 포함한 추천을 생성하도록 어시스턴트에 프롬프트를 제공합니다.
트레이싱과 로깅
옵저버빌리티 향상의 핵심은 …에 있습니다 _wandb.py 파일, 특히 trace_log 함수입니다. 이 함수는 계산 단계의 구조화된 표현인 Trace 객체를 생성합니다. 여기서는 어시스턴트 런의 상태, 토큰 사용량, 시작 및 종료 시각, 입력 질의와 응답 등의 세부 정보를 수집합니다. 이렇게 생성된 트레이스는 W&B에 다음을 통해 기록됩니다. root_span.log(name="openai_trace").
시각화와 분석
데이터가 W&B에 기록되면, 사용자는 강력한 대시보드를 통해 성능 지표를 시각화하고 서로 다른 런을 비교하며 모델 동작에 대한 인사이트를 얻을 수 있습니다.
패키징과 공유
마지막 단계는 애플리케이션을 패키징해 커뮤니티와 공유하는 것입니다. 애플리케이션과 해당 W&B 대시보드를 함께 공유하면, 개발자는 협업을 촉진하고 다른 이들이 옵저버빌리티 향상의 이점을 누리도록 할 수 있습니다.
이 예제에서 트레이싱은 어떻게 보이나요?
아래는 Book Recommender 애플리케이션의 트레이스 테이블과 트레이스 타임라인을 보여주는 W&B 대시보드 스냅샷입니다. 트레이스 테이블은 시스템 프롬프트, 사용자 프롬프트, 응답, 시작 및 종료 시간, 상태, 메타데이터 등 실행 흐름을 구조적으로 보여줍니다.

트레이스에는 쿼리 성공 여부, 처리 시간, 토큰 사용량이 포함됩니다. 이 정보는 패턴을 파악하고, 어시스턴트의 동작을 이해하며, 성능을 최적화하는 데 활용할 수 있습니다. 또한 서로 다른 런을 비교해 쿼리나 구성에 따라 어시스턴트의 동작이 어떻게 달라지는지 확인할 수 있습니다. 트레이스 타임라인은 실행 흐름을 시각적으로 보여 주어 단계의 순서와 의존 관계를 더 쉽게 이해할 수 있게 합니다.
또한 네트워크 트래픽과 연산 자원 사용량도 관측할 수 있습니다:

Ploomber Cloud로 직접 사용해 보세요
Ploomber Cloud Book Recommender 같은 애플리케이션을 손쉽게 다운로드하고 배포할 수 있게 해 줍니다. 시작 절차가 최소화되어 있으며, 번거로운 세부 작업을 모두 처리해 주기 때문에 복잡함 없이 자신만의 앱을 만들고 배포할 수 있습니다. 시작하려면 다음을 준비했는지 확인하세요: 가입했는지 계정을 만들고 API 키.
애플리케이션 다운로드
Ploomber Cloud를 설치하고 API 키를 설정하세요:
pip install ploomber-cloud
ploomber-cloud key YOUR-KEY
이제 다음 명령을 실행해 도서 추천 앱을 다운로드할 수 있습니다:
ploomber-cloud examples panel/book-recommender
애플리케이션 파일을 어디에 다운로드할지 묻게 됩니다. 현재 디렉터리에 다운로드하려면 Enter 키만 누르세요. 그런 다음 다음으로 이동하세요: book-recommender 디렉터리.
API 키
애플리케이션을 실행하려면 몇 가지가 필요합니다. 먼저 OpenAI API 키가 필요합니다. OpenAI에 계정을 생성한 다음, 여기에서 키를 받으세요.env 파일을 만들고 키를 입력하세요. 형식은 다음과 같습니다:
OPENAI_API_KEY=your-openai-api-key
Weights & Biases에도 계정을 만들어야 합니다. 다음 링크를 방문해 생성하세요: Weights & Biases 가입 페이지 (무료입니다!) 사용자 이름을 기록해 두세요. 로그인한 뒤 다음 페이지에서 API 키를 생성해야 합니다. https://wandb.ai/authorize.
로그인한 다음 사용자 프로필에서 프로젝트 탭을 선택하고 “New Project” 버튼을 클릭해 새 프로젝트를 만들 수 있습니다. 프로젝트 이름을 기록해 두세요.
앱은 다음 환경 변수 이름을 가정합니다. 다음 항목을 추가하세요: .env 파일. 모든 설정을 마치면 .env 파일은 다음과 같아야 합니다:
OPENAI_API_KEY=your-openai-api-keyWANDB_API_KEY=your-wandb-api-keyWANDB_PROJECT=your-project-nameWANDB_ENTITY=your-wandb-username
추가 안내: 기본적으로 Weights & Biases 추적은 비활성화되어 있습니다. 활성화하려면 다음으로 이동하세요. app.py 그리고 설정합니다 WEIGHTS_AND_BIASES_TRACKING True로 설정합니다.
데이터세트
마지막으로 데이터세트가 필요합니다. 데이터세트를 다음 위치로 다운로드하세요: book-recommender/ 폴더에 다운로드한 뒤 이름을 다음과 같이 변경하세요: goodreads.csv.
다음 스크립트를 실행해 조회 파일을 생성하세요:
python generate_assets.py --embeddings --verbose
이 명령을 실행하면 다음이 생성됩니다 author_to_title.json, title_to_description.json 그리고 embeddings.json assets/ 폴더의 파일들.
처음 N개의 행에 대해서만 임베딩을 생성하려면 아래 명령을 실행하세요(N=100 예시):
python generate_assets.py -n 100 --embeddings --verbose
배포
이제 애플리케이션을 배포할 준비가 되었습니다. 프로젝트를 초기화하고 안내에 따라 진행하세요. 이것은 Panel 애플리케이션입니다.
ploomber-cloud init
이로써 다음이 생성되었을 것입니다 ploomber-cloud.json 파일입니다. 이제 앱을 배포하세요:
ploomber-cloud deploy --watch
배포 과정은 몇 분 정도 걸립니다. 완료되면 앱으로 이동해 직접 사용해 볼 수 있습니다. Weights & Biases의 프로젝트 페이지로 이동하면, 입력에 기반한 트레이스를 확인할 수 있습니다. 전체적으로 애플리케이션은 다음과 같은 모습이어야 합니다:

결론
이것으로 마무리합니다! 이 글에서는 Weights & Biases를 통해 추적과 옵저버빌리티의 장점을 살펴보았습니다. OpenAI와 GPT-3.5를 사용해 북 추천 에이전트를 구축하며 추적 기능을 시연했고, 마지막으로 Ploomber Cloud를 활용해 데모 애플리케이션을 다운로드하고 배포한 뒤 직접 살펴볼 수 있었습니다.
Add a comment