| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- consumer
- #패스트캠퍼스 #환급챌린지 #패스트캠퍼스후기 #습관형성 #직장인자기계발 #오공완
- Authentication
- effective java
- Clean Code
- producer
- Spring Security
- Factory Method Pattern
- 함수형 프로그래밍
- signWith
- Stream
- orelse
- SpringBoot
- git cli
- Java8
- topic
- 패스트캠퍼스 #환급챌린지 #패스트캠퍼스후기 #습관형성 #직장인자기계발 #오공완
- 싱글톤
- optional
- Functional Programming
- orElseGet
- 디자인패턴
- TDD
- mokito
- 카프카
- 인텔리제이 단축키
- kafka
- Java
- JWT
- junit5
- Today
- Total
goodbye
패스트캠퍼스 환급챌린지 50일차 : 테디노트의 RAG 비법노트 강의 후기 본문
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다
https://fastcampus.info/4n8ztzq
(~6/20) 50일의 기적 AI 환급반💫 | 패스트캠퍼스
초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!
fastcampus.co.kr
패스트캠퍼스 환급챌린지 50일차!
1) 공부 시작 시간 인증

2) 공부 종료 시간 인증

3) 강의 수강 클립 인증

4) 학습 인증샷

5) 학습통계

Today I Learned
반복을 통해 평가하는 방법(How to evaluate with repetitions)
LLM 출력은 결정적이지 않기 때문에 여러번 반복하면 시스템 성능을 더 정확하게 예측할 수 있습니다. 출력은 반복마다 다를 수 있습니다. 반복은 에이전트와 같이 변동성이 큰 시스템에서 노이즈를 줄이는 방법입니다.
실험에서 반복 구성
/ 함수( Python ) 에 선택적 매개변수를 추가하여 데이터세트의 각 예제를 몇 번이나 평가할지 지정합니다. 예를 들어, 데이터세트에 예제가 5개 있고 set 으로 설정되어 있다면 각 예제는 5번씩 실행되어 총 25번 실행됩니다.evaluateaevaluatenum_repetitions=5
from langsmith import evaluate
results = evaluate(
lambda inputs: label_text(inputs["text"]),
data=dataset_name,
evaluators=[correct_label],
experiment_prefix="Toxic Queries",
num_repetitions=3,
)
반복을 통해 실행된 실험 결과 보기
반복 실험을 실행한 경우 출력 결과 열에 화살표가 표시되어 표에서 출력을 볼 수 있습니다. 반복 실험에서 각 실행을 보려면 출력 셀 위에 마우스를 올리고 확장된 보기를 클릭하세요. 반복 실험을 실행하면 LangSmith는 표에 각 피드백 점수의 평균을 표시합니다. 피드백 점수를 클릭하면 개별 실행의 피드백 점수를 보거나 반복 실험에 따른 표준 편차를 볼 수 있습니다.

모델 속도 제한을 처리하는 방법
대규모 평가 작업을 실행할 때 흔히 발생하는 문제는 일반적으로 모델 제공업체에서 제공하는 타사 API 속도 제한에 부딪히는 것입니다. 속도 제한을 해결하는 몇 가지 방법이 있습니다.
RateLimiters 사용 langchain(Python 전용
애플리케이션이나 평가자에서 Python ChatModels를 사용하는 경우 langchain모델에 속도 제한기를 추가하여 클라이언트 측에서 요청이 모델 공급자 API로 전송되는 빈도를 제어하여 속도 제한 오류를 방지할 수 있습니다.
from langchain.chat_models import init_chat_model
from langchain_core.rate_limiters import InMemoryRateLimiter
rate_limiter = InMemoryRateLimiter(
requests_per_second=0.1, # <-- Super slow! We can only make a request once every 10 seconds!!
check_every_n_seconds=0.1, # Wake up every 100 ms to check whether allowed to make a request,
max_bucket_size=10, # Controls the maximum burst size.
)
llm = init_chat_model("gpt-4o", rate_limiter=rate_limiter)
def app(inputs: dict) -> dict:
response = llm.invoke(...)
...
def evaluator(inputs: dict, outputs: dict, reference_outputs: dict) -> dict:
response = llm.invoke(...)
지수
속도 제한 오류를 처리하는 매우 일반적인 방법은 지수 백오프를 사용하여 재시도하는 것입니다. 지수 백오프를 사용하여 재시도한다는 것은 실패한 요청을 (기하급수적으로) 증가하는 대기 시간으로 반복적으로 재시도하는 것을 의미합니다. 이 과정은 요청이 성공하거나 최대 요청 수에 도달할 때까지 계속됩니다.
구성 요소를 사용하는 경우 메서드를 langchain사용하여 모든 모델 호출에 재시도를 추가할 수 있습니다 .
from langchain import init_chat_model
llm_with_retry = init_chat_model("gpt-4o-mini").with_retry(stop_after_attempt=6)
사용하지 않는 경우 (Python) 또는 (Python) langchain과 같은 다른 라이브러리를 사용하여 지수 백오프를 사용한 재시도를 구현하거나, 직접 구현할 수 있습니다. OpenAI 문서 에서 이 작업의 몇 가지 예를 참조하세요 .
최대 동시성 제한
애플리케이션과 평가자에 대한 동시 호출 수를 제한하는 것은 모델 호출 빈도를 줄이는 또 다른 방법이며, 이를 통해 속도 제한 오류를 방지할 수 있습니다. 이 설정은 evaluate() / aevaluate()max_concurrency 함수 에서 직접 설정할 수 있습니다 . 이렇게 하면 데이터 세트를 여러 스레드에 효과적으로 분할하여 평가를 병렬화할 수 있습니다.
from langsmith import aevaluate
results = await aevaluate(
...
max_concurrency=4,
)
자세한 로그를 출력하는 방법
LangSmith 패키지는 Python의 내장 logging메커니즘을 사용하여 패키지의 동작에 대한 로그를 표준 출력으로 출력합니다. 현재 Python 환경에서 로깅이 표준 출력으로 로그를 보내도록 구성되어 있지 않은 경우 다음과 같이 명시적으로 켜야 합니다.
import logging
# Note: this will affect _all_ packages that use python's built-in logging mechanism,
# so may increase your log volume. Pick the right log level for your use case.
logging.basicConfig(level=logging.WARNING)
Increase the logger's verbosity
문제를 디버깅할 때 로그의 상세도를 높여 표준 출력에 더 많은 정보를 출력하는 것이 좋습니다. Python 로거는 기본적으로 WARNING로그 수준을 사용하지만, 다른 값을 선택하여 상세도 수준을 조절할 수 있습니다. 가장 상세도가 낮은 값부터 가장 높은 값까지, 값은 ERROR, WARNING, INFO, 입니다 DEBUG. 다음과 같이 설정할 수 있습니다.
import langsmith
import logging
# Loggers are hierarchical, so setting the log level on "langsmith" will
# set it on all modules inside the "langsmith" package
langsmith_logger = logging.getLogger("langsmith")
langsmith_logger.setLevel(level=logging.DEBUG)
'Lecture > 패스트캠퍼스' 카테고리의 다른 글
| 패스트캠퍼스 환급챌린지 47일차 : 테디노트의 RAG 비법노트 강의 후기 (3) | 2025.08.16 |
|---|---|
| 패스트캠퍼스 환급챌린지 46일차 : 테디노트의 RAG 비법노트 강의 후기 (4) | 2025.08.15 |
| 패스트캠퍼스 환급챌린지 45일차 : 테디노트의 RAG 비법노트 강의 후기 (4) | 2025.08.14 |
| 패스트캠퍼스 환급챌린지 44일차 : 테디노트의 RAG 비법노트 강의 후기 (1) | 2025.08.13 |
| 패스트캠퍼스 환급챌린지 43일차 : 테디노트의 RAG 비법노트 강의 후기 (6) | 2025.08.12 |