데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      LLM의 thinking_token_budget은 어떤 역할을 하는가?

      Teus 26.08.11
      155 2 1
      DEVOTEE 요약
      LLM의 `thinking_token_budget`은 모델의 내부 추론(thinking) 과정에서 사용할 수 있는 최대 토큰 수를 설정하는 기능입니다. 이 설정은 LLM이 더 깊이 생각하도록 유도하는 것이 아니라, 오히려 생성되는 내부 thinking 토큰의 양을 제한하는 역할을 합니다. 따라서, 모델이 불필요하게 많은 생각 토큰을 소모하는 것을 막아 빠른 응답을 얻고자 할 때 유용하며, -1로 설정하면 무제한의 thinking 시간을 보장할 수 있습니다.

      안녕하세요. teus입니다.


      이번 포스팅은, opencode 등의 LLM에서 설정할 수 있는 thinking_token_budget에 대해서 다룹니다.


      0. Effort

      opencode나 claude code의 설정에 보면, 모델의 reasoningEffort를 수정 할 수 있습니다.

      https://opencode.ai/docs/models/#configure-models

      문제는 위와같이 reasoningEffort라고 지정되어있는 변수의 경우

      직접적으로 어느정도의 reasoning을 진행할 지를 우리가 알 수는 없고

      enable_thinking 활성화 여부와 system prompt의 일부분에 영향을 끼친다고 이야기 했습니다.

      claude code의 reasoning effort는 vllm에도 효과가 있는가?


      1. thinking_token_budget

      이때 vLLM설정에 보면, thinking_token_budget이라고 해서

      LLM의 reasoning 과정에서 최대 얼마만큼의 token을 사용할 수 있을지를 범위를 정해줄 수 있습니다.

      https://docs.vllm.ai/en/stable/features/reasoning_outputs/#thinking-budget-control

      vllm serve Qwen/Qwen3-0.6B \
          --reasoning-parser qwen3 \
          --reasoning-config '{"reasoning_start_str": "<think>", "reasoning_end_str": "I have to give the solution based on the reasoning directly now.</think>"}'

      image.png

      위 config 같은 경우 vLLM상에서 설정할 수도 있지만

      유저측에서 LLM을 실행할 때 별도로 thinking_token_budget 을 추가해서 보낼 수가 있습니다.

      {
        "$schema": "https://opencode.ai/config.json",
        "model": "vllm/vllm_model",
        "provider": {
          "vllm": {
            "npm": "@ai-sdk/openai-compatible",
            "name": "MY vllm",
            "options": {
              "baseURL": "http://mylocalllm/v1",
              "apiKey": "..."
            },
            "models": {
              "vllm_model": {
                "name": "UserBigModel",
                "reasoning" : true,
                "options" : {
                  "reasoningEffort" : "high",
                  "thinking_token_budget": 21500
                }
              }
            }
          }
        }
      }

      opencode 기준으로 opencode.jsonc 을 수정해 줌 으로써, LLM에 요청을 보낼 때 위와같이 추가해 보내줄 경우 요청에 반영이 되어 날라갑니다.

      {
        "model": "vllm_model",
        "max_tokens": 32000,
        "thinking_token_budget": 21500,
        "reasoning_effort": "high",
        "messages": [
          {
      ...

      해당 변수 관련해서 주의할 점은


      해당 변수는

      LLM한테 21500만큼 생각을 해! -> X

      아무리 많이 생각해도, 21500만큼은 하지마 -> O


      생성되는 thinking token의 생성량을 제한하는 역할을 할 뿐

      LLM 모델한테 더욱 생각을 깊게 하는 역할을 하지 않는다는 점 입니다.

      # https://github.com/vllm-project/vllm/blob/f2654939e69b4069b13977e9aef3e31d4dcaf051/vllm/v1/sample/thinking_budget_state.py#L439
      ...
          elif remaining_budget <= 0:
              state["force_index"] = [0]
      ...

      그래서, LLM이 thinking과정에서 중간에 멈추지 않게 하려면 해당하는 budget을 -1로 설정해주면, unlimited 상태로 최대한의 혼자말 시간을 보장해줄 수가 있습니다.

      # https://github.com/vllm-project/vllm/blob/f2654939e69b4069b13977e9aef3e31d4dcaf051/vllm/sampling_params.py#L35
      ...
              VLLMValidationError(
                  "`thinking_token_budget` must be a non-negative integer "
                  "or -1 for unlimited.",
                  parameter="thinking_token_budget",
                  value=value,
      ...

      그래서, thinking을 더 하게 만들고싶은 용도는 아니고, 내가 thinking없이 빠른 답변을 얻고싶다 했을 때 사용하면 좋을 config라고 볼 수 있습니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      Teus 님의 최신 블로그

      더보기
      동영상 기고하기