LLM 온도에 대한 포괄적 인 안내서 🔥🌡️

LLM 온도에 대한 포괄적 인 안내서 🔥🌡️

내 자신의 LLM 기반 응용 프로그램을 구축하는 동안 많은 프롬프트 엔지니어링 가이드를 발견했지만 온도 설정을 결정하기위한 동등한 가이드는 거의 없습니다.

물론, 온도는 단순한 수치 값이지만 프롬프트는 마음이 복잡해 질 수 있으므로 제품 결정으로 사소한 느낌이들 수 있습니다. 그럼에도 불구하고 올바른 온도를 선택하면 출력의 특성이 크게 바뀔 수 있으며, 생산 품질 LLM 애플리케이션을 구축하는 사람은 누구나 의도적으로 온도 값을 선택해야합니다.

이 게시물에서는 온도와 그 뒤에있는 수학, 잠재적 인 제품 영향 및 LLM 응용 프로그램에 적합한 온도를 선택하고 평가하는 방법을 살펴 보겠습니다. 결국, 나는 당신이 모든 LLM 사용 사례에 적합한 온도를 찾을 수있는 명확한 행동 과정을 가질 수 있기를 바랍니다.

온도는 무엇입니까?

온도는 LLM의 출력의 임의성을 제어하는 ​​숫자입니다. 대부분의 API는 값을 0에서 1 또는 일부 유사한 범위로 제한하여 출력을 의미 적으로 일관된 경계로 유지합니다.

OpenAi의 문서에서 :

“0.8과 같은 높은 값은 출력을 더욱 무작위로 만들고 0.2와 같은 낮은 값은 더 집중적이고 결정적으로 만듭니다.”

직관적으로, 그것은 대답을 뱉을 때 모델이 “탐사 적”또는 “보수적”이라는 것을 조정할 수있는 다이얼과 같습니다.

이 온도 값은 무엇을 의미합니까?

개인적으로, 나는 온도 필드 뒤의 수학이 매우 흥미 롭기 때문에 그것에 뛰어들 것입니다. 그러나 이미 LLM의 내부에 익숙하거나 관심이 없다면 이 섹션을 건너 뛰십시오.

당신은 아마도 LLM이 주어진 토큰 시퀀스 후에 다음 토큰을 예측하여 텍스트를 생성한다는 것을 알고있을 것입니다. 예측 과정에서 다음에 올 수있는 모든 가능한 토큰에 확률을 할당합니다. 예를 들어, LLM으로 전달 된 시퀀스가 ​​”기린이…

하지만 조금 백업합시다. 이러한 확률은 어떻게 되나요?

이러한 확률은 일반적으로 원시 점수에서 나옵니다 로짓그것은 많은 신경망 계산 및 기타 기계 학습 기술의 결과입니다. 이 벌목은 금입니다. 여기에는 다음에 어떤 토큰을 선택할 수 있는지에 대한 모든 귀중한 정보가 포함되어 있습니다. 그러나 이러한 로그의 문제점은 확률의 정의에 맞지 않는다는 것입니다. 2, 2, -3.65 또는 20과 같이 긍정적이거나 부정적인 숫자 일 수 있습니다. 반드시 0과 1 사이의 것은 아닙니다. 그들은 반드시 좋은 확률 분포처럼 최대 1을 추가 할 필요는 없습니다.

따라서 이러한 로그를 사용할 수있게하려면 기능을 사용하여 깨끗한 확률 분포로 변환해야합니다. 여기에 일반적으로 사용되는 기능을 SoftMax그리고 본질적으로 두 가지 중요한 일을하는 우아한 방정식입니다.

  1. 모든 로그를 양수로 바꿉니다.
  2. 로그를 조정하여 최대 1을 추가합니다.
SoftMax 공식

SoftMax 기능은 각 로이트를 가져 와서 올리면 작동합니다 이자형 (약 2.718) 그 로짓의 힘으로, 그리고이 모든 지수의 합으로 나눕니다. 따라서 가장 높은 로이트는 여전히 가장 높은 분자를 얻을 수 있으므로 확률이 가장 높습니다. 그러나 부정적인 로이트 값이있는 다른 토큰은 여전히 ​​기회를 얻게됩니다.

이제 온도가 나오는 곳이 있습니다. 온도는 SoftMax를 적용하기 전에 로그를 수정합니다. 온도가있는 SoftMax의 공식은 다음과 같습니다.

온도가있는 SoftMax

온도가있을 때 낮은로그를 t로 나누면 값이 더 크거나 더 많이 퍼집니다. 그러면 지수는 다른 것보다 가장 높은 값을 훨씬 더 크게 만들어 확률 분포가 더 고르지 않습니다. 이 모델은 가장 가능성있는 토큰을 선택할 가능성이 높아져 더 결정 론적 산출.

온도가있을 때 높은, 로그를 t로 나누면 모든 값이 더 작고 가깝게 연결되어 확률 분포가 더 균등하게 퍼집니다. 이것은 모델이 가능성이 낮은 토큰을 선택하여 증가 할 가능성이 높다는 것을 의미합니다. 무작위성.

온도를 선택하는 방법

물론 온도를 선택하는 가장 좋은 방법은 온도를 가지고 놀는 것입니다. 프롬프트와 마찬가지로 온도는 예제 실행으로 입증되어 다른 가능성에 대해 평가해야한다고 생각합니다. 다음 섹션에서 논의하겠습니다.

그러나 우리가 그것에 뛰어 들기 전에, 나는 그것을 강조하고 싶습니다 온도는 중요한 제품 결정입니다사용자 행동에 크게 영향을 줄 수있는 것. 더 정확성 기반 애플리케이션의 경우 더 낮고 더 창의적인 응용 프로그램의 경우 더 높은 선택이 더 간단 해 보일 수 있습니다. 그러나 사용자 신뢰 및 사용 패턴에 대한 다운 스트림 결과와 함께 양방향으로 트레이드 오프가 있습니다. 다음은 염두에 두는 미묘한 점입니다.

  • 저온은 제품을 권위있게 느낄 수 있습니다. 보다 결정적인 출력은 전문 지식의 환상을 만들고 사용자 신뢰를 장려 할 수 있습니다. 그러나 이것은 또한 속성 사용자로 이어질 수 있습니다. 응답이 항상 자신감이있는 경우, 사용자는 AI의 출력을 비판적으로 평가하지 않고 잘못된 경우에도 맹목적으로 신뢰할 수 있습니다.
  • 저온은 결정 피로를 줄일 수 있습니다. 많은 옵션 대신 강력한 답변이 하나도 보이면 지나치게 생각하지 않고 행동을 취할 가능성이 높습니다. 이로 인해 제품을 사용하는 동안 온 보딩이나인지 부하가 ​​더 낮아질 수 있습니다. 반대로 고온은 더 많은 결정 피로를 일으키고 이탈 할 수 있습니다.
  • 고온은 사용자 참여를 장려 할 수 있습니다. 고온의 예측 불가능 성은 사용자에게 호기심을 유지할 수 있으며 (가변 보상과 같은) 세션이 더 길거나 상호 작용이 증가 할 수 있습니다. 반대로, 저온은 사용자를 낳는 정체 된 사용자 경험을 만들 수 있습니다.
  • 온도는 사용자가 프롬프트를 개선하는 방식에 영향을 줄 수 있습니다. 고온으로 답변이 예상치 못한 경우 사용자는 밝히다 그들의 프롬프트. 그러나 저온이 낮 으면 사용자가 강제로 가질 수 있습니다 자세한 내용을 추가하거나 확장하십시오 새로운 답변을 얻기 위해 그들의 프롬프트.

이것들은 광범위한 일반화이며 물론 모든 특정 응용 프로그램마다 더 많은 뉘앙스가 있습니다. 그러나 대부분의 응용 분야에서 온도는 A/B 테스트에서 조정하는 강력한 변수 일 수 있으며, 프롬프트와 함께 고려해야 할 사항이 있습니다.

다른 온도 평가

개발자로서 우리는 단위 테스트에 익숙합니다 : 입력 세트 정의, 함수를 통해 입력을 실행하며 예상 출력 세트를 얻습니다. 우리는 코드가 우리가 기대하는 일을하고 있고 논리가 명확한 제약 조건을 충족 시키도록하는 밤에 잠을 자고 있습니다.

PromptFoo 패키지를 사용하면 LLM-Prompt를 유닛 테스트와 동등하게 수행 할 수 있지만 추가적인 뉘앙스가 있습니다. LLM 출력은 비 결정적이며 종종 엄격하게 논리적 인 작업보다 더 창의적인 작업을 수행하도록 설계되었으므로 “예상 출력”의 모습을 정의하기가 어려울 수 있습니다.

“예상 출력”정의

가장 간단한 평가 전술은 a 인간 루 브릭에 따르면 출력이 얼마나 좋은지 평가하십시오. 말로 표현할 수없는 특정 “분위기”를 찾고있는 출력의 경우 아마도 가장 효과적인 방법 일 것입니다.

또 다른 간단한 평가 전술은 사용하는 것입니다 결정 론적 지표 – “출력에는 특정 문자열이 포함되어 있습니까?”와 같은 것들입니다. 또는 “출력이 유효한 JSON입니까?” 또는 “출력 이이 JavaScript 표현식을 충족합니까?”. 예상 출력을 이러한 방식으로 표현할 수 있다면 Prustfoo에 등이 있습니다.

더 흥미로운 AI-AGE 평가 전술은 사용하는 것입니다 LLM 등급 점검. 이들은 본질적으로 LLM을 사용하여 LLM 생성 출력을 평가하며 제대로 사용하면 매우 효과적 일 수 있습니다. Prustfoo는 이러한 모델 등급 메트릭을 여러 형태로 제공합니다. 전체 목록은 여기에 있으며 “출력이 원래 쿼리와 관련이 있습니까?”의 주장이 포함되어 있습니다. “다른 테스트 사례를 비교하고 어느 것이 가장 좋은지 알려주세요!” “이 출력은 어디 에서이 루 브릭에서 순위를 매겼습니까?”

창의적인 선물 아이디어를 제시하는 소비자를 향한 응용 프로그램을 만들고 메인 프롬프트에서 어떤 온도를 사용해야하는지 경험적으로 결정하고 싶습니다.

특정 예산 내에서 관련성, 독창성 및 타당성과 같은 메트릭을 평가하고 이러한 요소를 최적화하기 위해 올바른 온도를 선택해야합니다. GPT 4O-Mini의 성능을 0 대 1의 온도와 비교하면 테스트 파일이 다음과 같이 시작될 수 있습니다.

providers:
  - id: openai:gpt-4o-mini
    label: openai-gpt-4o-mini-lowtemp
    config:
      temperature: 0
  - id: openai:gpt-4o-mini
    label: openai-gpt-4o-mini-hightemp
    config:
      temperature: 1
prompts:
  - "Come up with a one-sentence creative gift idea for a person who is {{persona}}. It should cost under {{budget}}."

tests:
  - description: "Mary - attainable, under budget, original"
    vars:
      persona: "a 40 year old woman who loves natural wine and plays pickleball"
      budget: "$100"
    assert:
      - type: g-eval
        value:
          - "Check if the gift is easily attainable and reasonable"
          - "Check if the gift is likely under $100"
          - "Check if the gift would be considered original by the average American adult"
  - description: "Sean - answer relevance"
    vars:
      persona: "a 25 year old man who rock climbs, goes to raves, and lives in Hayes Valley"
      budget: "$50"
    assert:
      - type: answer-relevance
        threshold: 0.7

여러 개의 동일한 입력 실행에 대한 온도 변화의 영향을 테스트하기 위해 테스트 케이스를 반복적으로 실행하고 싶을 것입니다. 이 경우 반복 매개 변수를 사용합니다.

promptfoo eval --repeat 3
프롬프트 푸 테스트 결과

결론

온도는 간단한 수치 매개 변수이지만 단순성에 속지 않습니다. LLM 응용 프로그램에 광범위한 영향을 미칠 수 있습니다.

바로 튜닝하는 것은 원하는 동작을 얻는 데 핵심입니다. 너무 낮아서 모델이 너무 안전합니다. 너무 높아서 예측할 수없는 응답을 내뿜기 시작합니다. PrfustFoo와 같은 도구를 사용하면 다른 설정을 체계적으로 테스트하고 Goldilocks 영역을 찾을 수 있습니다. 너무 차갑지 않고 너무 덥지는 않지만 옳습니다. 켈



출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다