LangSmith란
LangSmith란 LLM 애플리케이션을 디버깅, 테스트, 평가, 모니터링할 수 있는 개발자 플랫폼이다.
프로젝트나 LangChain 학습을 시작한다면, LangSmith를 설정 후 진행하는 것이 좋다고 한다.
LangSmith는 굳이 분류하자면 LLMOps 도구이다.
DevOps의 LLM 버전이라고 이해하면 된다.
LLM 어플리케이션을 잘 만들고 운영하기 위한 도구이고, 아래와 같은 기능들을 지원한다.
- 현재 사용자가 어떻게 채팅을 하고 있는지 추적하고, 피드백을 수집한다.
- 비용은 얼마나 차징이 되고 있는지, 응답 시간은 얼마나 걸렸는지를 실시간으로 추적한다.
- 데이터셋을 구성하여 LLM 어플리케이션을 자동 평가하고, 개발하는 일들을 도와준다.
이러한 핵심 기능들을 토대로 LLMOps라고 분류할 수 있으나, 개발사인 랭체인에서는 “Developer Platform”이라고 칭하고 LLMOps라는 용어를 사용하지는 않는다.
LangSmith는 기본적으로 LLM을 넘어 멀티모달리티를 지원하고, LLM 자체를 잘 만드는 것 보다 LLM을 잘 사용하는 방법에 더 중점을 두고 있어서, LLMOps라는 용어가 좋은 용어라고 보기는 어렵다고 생각한다.
1. 추적과 디버깅
랭스미스에서는 위와 같이 각 중간 과정의 in/out 결과를 보여준다.
Retrieve가 잘 안되었는지, 올바른 근거 자료를 찾아 줬음에도 LLM이 대답을 못하고 있는지, 추론이 가능하다.
LLM 모델을 바꾸거나, Prompt를 바꾸거나, 다양하게 모두 돌린 후 간단히 비교하기도 좋다.
비용도 나오고, 수행시간도 나와서 어디서 비용이 많이 드는지, 너무 느리지 않는지 모두 확인 가능하다.
개선을 진행할수록 소수의 질문에서만 문제가 생기는데, 이를 체계화해서 로깅을 남기기보단, 그 시간을 단축시켜주는 도구로서 유용하다.
2. 데이터 수집과 평가
LLM 어플리케이션의 알파이자 오메가는 사실 데이터셋이다.
데이터셋을 구성하고 사용하기 좋게 잘 구성이 되어있다.
- 허깅페이스처럼 연구/개발자가 직접 데이터셋을 올릴 수 있다.
- 연동된 서비스의 유저 로그를 데이터셋으로 자동 수집 가능하다.
- 연동된 서비스의 유저 피드백을 같이 수집 가능하다.
- 자동으로 데이터를 가공해서 추가수집 가능하다.
챗 서비스를 서빙한다고 하면, 유저의 질문, 시스템의 답변, 유저의 만족도 조사결과까지 맞물려 데이터 수집이 되니 매우 유용하다.
모아다가 강화학습을 할 수도 있고, A/B 테스트를 할 수도 있고, 불만족스러웠던 데이터만 따로 백테스팅을 할 수도 있고, 사용하기 나름이다.
어떤 방식으로든 모아진 데이터는 평가에 활용을 하기 좋게 구성되어 있다.
아래와 같이 평가 로직을 등록할 수 있는데, API Key와 함께 프롬프트를 써주면, LLM이 알아서 평가를 해준다.
아래 그림은 답변이 도움이 되었는지를 수치화하는 평가로직인데, 프롬프트를 템플릿화해서 다 만들어놔서 편하다.
- 평가로직을 등록만 해두면, 서비스에서 발생하는 내 답변들을 자동으로 평가해 데이터화 해준다..
LLM 어플리케이션은 “평가”가 어려운 경우가 많다. 정석적이기 때문이다. 이 부분을 해결하기 위해 양질읠 데이터, LLM을 다시 평가 판사 (LLM as judge)로 사용하기, 외 기타 여러가지 방법이 있다.
이를 잘 지원하는 도구로서 유용하다.
3. 협업
도메인 전문가들이 데이터를 분석하고, 평가해서 데이터 라벨링을 해주고, 의견을 주고 해야하는데, 협업하기가 쉽지 않다.
데이터를 어떤 형태로 뽑아야 할지, 도메인 전문가들이 어떻게 라벨링을 달아서 시스템에 다시 올려야할지, 이 부분을 잘 도와준다.
데이터들을 Annotation queue에 넣어서 사람을 지정해 줄 수가 있다. 그러면 도메인전문가들이 데이터를 보고 정성평가를 달아주고, 데이터셋에 연동이 된다. 모두 웹 인터페이스로 사용이 가능해서, 개발이 익숙하지 않은 사람들과 협업이 매우 편하다.
4. 사용법
4.1. LangSmith 설치
1 | pip install -U langsmith |
4.2. API Key 발급
4.3. 환경 설정
1 | export LANGCHAIN_TRACING_V2=true |
4.4. trace를 기록하기
1 | import openai |
4.5. Evaluation 실행하기
1 | from langsmith import Client |
AWS에 Langsmith를 배포하여 사용 가능한가?
위 링크에 의하면, Enterprise 플랜을 사용하는 경우 데이터가 환경을 벗어나지 않도록 AWS, GCP 또는 Azure의 K8S 클러스터에서 실행되도록 Langsmith 제공 가능하다.
Architecture Overview
랭스미스는 사용자가 제어하는 클라우드 환경에서 Kubernetes(권장) 또는 Docker를 통해 실행할 수 있다.
LangSmith 애플리케이션은 5개의 LangSmith 서버와 3개의 상태 저장 서비스로 구성된다.
- 랭스미스 프런트엔드
- 랭스미스 백엔드
- 랭스미스 플랫폼 백엔드
- LangSmith Playground
- LangSmith Queue
- clickhouse db
- postgres
- redis
각각에 대한 설명은 Architectural overview를 참고
1. Kubernetes에 설치하기
Self-hosting LangSmith on Kubernetes
2. Docker에 설치하기
Self-hosting LangSmith with Docker
- Docker 설치, 최소 4개의 vCPU, 16GB 메모리, 충분한 디스크공간 필요
- LangSmith 라이센스 키 필요
- Docker compose를 사용하여 실행, 프로덕션에서는 k8s 권장
- 배포 검증
1
2curl localhost:1980/info
{"version":"0.5.7","license_expiration_time":"2033-05-20T20:08:06","batch_ingest_config":{"scale_up_qsize_trigger":1000,"scale_up_nthreads_limit":16,"scale_down_nempty_trigger":4,"size_limit":100,"size_limit_bytes":20971520}}
장단점
- 사용하기 매우 편하다, 문서도 잘 되어있고, 코드 구현도 쉽다.
- LangChain과 함께 사용하면 더 쉽고, 잘 연동 된다.
- 오픈소스가 아니라서 상업 수준으로 사용하려면, 비용을 내야한다.
References
install_url
to use ShareThis. Please set it in _config.yml
.