"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Entropix: 추론 성능 극대화를 위한 샘플링 기법

Entropix: 추론 성능 극대화를 위한 샘플링 기법

2024-11-07에 게시됨
검색:184

Entropix: 추론 성능 극대화를 위한 샘플링 기법

Entropix README에 따르면 Entropix는 엔트로피 기반 샘플링 방법을 사용합니다. 이 글에서는 엔트로피와 바렌트로피를 기반으로 한 구체적인 샘플링 기법을 설명합니다.

엔트로피와 바렌트로피

샘플링 전략을 결정하는 핵심 요소인 엔트로피와 바렌트로피에 대해 먼저 설명하겠습니다.

엔트로피

정보 이론에서 엔트로피는 무작위 변수의 불확실성을 측정한 것입니다. 확률 변수 X의 엔트로피는 다음 방정식으로 정의됩니다.

Entropix: Sampling Techniques for Maximizing Inference Performance

  • X: 이산 확률 변수입니다.
  • x_i: X의 i번째 가능한 상태.
  • p(x_i): 상태 x_i의 확률.

확률 분포가 균일할 때 엔트로피가 최대화됩니다. 반대로 특정 상태가 다른 상태보다 훨씬 더 가능성이 높으면 엔트로피가 감소합니다.

발렌트로피

엔트로피와 밀접하게 관련된 바렌트로피는 정보 내용의 가변성을 나타냅니다. 정보량 I(X), 엔트로피 H(X), 확률변수 X에 대한 분산을 고려하면, 바렌트로피 V E(X)는 다음과 같이 정의됩니다.

Entropix: Sampling Techniques for Maximizing Inference Performance

바렌트로피는 확률 p(x_i)가 크게 달라질 때 커집니다. 확률이 균일할 때(분포의 엔트로피가 최대이거나 한 값의 확률이 1이고 다른 모든 값의 확률이 0인 경우) 작아집니다.

샘플링 방법

다음으로 엔트로피와 바렌트로피 값에 따라 샘플링 전략이 어떻게 바뀌는지 살펴보겠습니다.

Entropix: Sampling Techniques for Maximizing Inference Performance

1. 저엔트로피, 저바렌트로피 → Argmax

이 시나리오에서 특정 토큰은 다른 토큰보다 예측 확률이 훨씬 높습니다. 다음 토큰이 거의 확실하므로 Argmax를 사용합니다.

if ent 



코드 링크

2. 저엔트로피, 고바렌트로피 → 가지

이는 어느 정도 확신이 있지만 실행 가능한 옵션이 여러 개 있을 때 발생합니다. 이 경우 Branch 전략을 사용하여 객관식 중에서 샘플링하여 최상의 결과를 선택합니다.

elif ent  5.0:
    temp_adj = 1.2   0.3 * interaction_strength
    top_k_adj = max(5, int(top_k * (1   0.5 * (1 - agreement))))
    return _sample(logits, temperature=min(1.5, temperature * temp_adj), top_p=top_p, top_k=top_k_adj, min_p=min_p, generator=generator)

코드 링크

이 전략을 '분기'라고 부르지만 현재 코드는 샘플링 범위를 조정하고 단일 경로를 선택하는 것으로 보입니다. (더 많은 통찰력을 갖고 계신 분이 계시다면 더 자세히 설명해 주시면 감사하겠습니다.)

3. 고엔트로피, 저바렌트로피 → CoT 또는 일시 정지 토큰 삽입

다음 토큰의 예측 확률이 상당히 균일하여 다음 컨텍스트가 확실하지 않음을 나타내는 경우 모호성을 해결하기 위해 설명 토큰이 삽입됩니다.

elif ent > 3.0 and vent 



코드 링크

4. 고엔트로피, 고바렌트로피 → 리샘플링

이 경우에는 여러 컨텍스트가 있어 다음 토큰의 예측 확률이 낮습니다. 리샘플링 전략은 더 높은 온도 설정과 더 낮은 상단 p와 함께 사용됩니다.

elif ent > 5.0 and vent > 5.0:
    temp_adj = 2.0   0.5 * attn_vent
    top_p_adj = max(0.5, top_p - 0.2 * attn_ent)
    return _sample(logits, temperature=max(2.0, temperature * temp_adj), top_p=top_p_adj, top_k=top_k, min_p=min_p, generator=generator)

코드 링크

중간 사례

위 조건 중 어느 것도 충족되지 않으면 적응 샘플링이 수행됩니다. 여러 개의 샘플을 채취하여 엔트로피, 바렌트로피, 어텐션 정보를 바탕으로 가장 좋은 샘플링 점수를 계산합니다.

else:
    return adaptive_sample(
        logits,
        metrics,
        gen_tokens,
        n_samples=5,
        base_temp=temperature,
        base_top_p=top_p,
        base_top_k=top_k,
        generator=generator
    )

코드 링크


참고자료

  • 엔트로픽스 저장소
  • Entropix는 무엇을 하고 있나요?
릴리스 선언문 이 글은 https://dev.to/m_sea_bass/entropix-sampling-techniques-for-maximizing-inference-performance-2hgc?1에서 복제되었습니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3