<Structured Outputs> Let Me Speak Freely? A Study on the Impact of Format Restrictions on Performance of Large Language Models (2024.10)
관심 있는 NLP 논문을 읽어보고 간단히 정리했습니다.
혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 🙇♂️
[Appier AI Research, National Taiwan University]
- LLM에게 JSON, XML과 같은 structured format을 지키도록 강제하는 경우, reasoning task에서 모델 성능이 하락한다.
- 하지만 분류 태스크에서는 오히려 성능이 향상될 수 있다.
- 즉, 어떤 형식을 강제하는 것이 모델 성능에 영향을 주는지는 task by task로 다르다.
출처 : https://arxiv.org/abs/2408.02442
1. Introduction
LLM은 뛰어난 퍼포먼스를 보이고 있음에도 아직까지 실제 application 수준으로 개발되지 못하고 있는 상황입니다.
여기에는 여러 이유가 있지만 그중 가장 대표적인 것 중 하나가 출력 형식의 비일관성입니다.
어떤 프로그램이 정상적으로 동작하기 위해서는 내부적으로 전달되는 결괏값들이 일정한 형식을 따라야 하는데, 생성형 모델의 특성상 일관되지 않은 결괏값이 나타날 때가 있다는 사실 자체가 큰 리스크입니다.
예를 들어서 사용자로부터 질문을 입력받아 현재 시간을 출력하는 앱이 있다고 해봅시다.
언어 모델이 출력한 결과는 학습한 데이터 특성에 따라, 그리고 사용자가 제공하는 입력에 따라 달라지겠지만, 일반적으로는 yyyy-mm-dd 형식이 기대될 수 있습니다.
저런 형식으로 날짜를 출력하라고 지시할 수 있겠죠.
그런데 문제는 모델이 어떻게 대답할지 전혀 모른다는 겁니다.
예를 들어,
"네, 알겠습니다. 현재 시간은 yyyy-mm-dd 입니다." 라고 할지,
"yyyy-mm-dd" 라고 심플하게 답만 내놓을지,
"죄송합니다만 제가 현재 파악하고 있는 정보가 아닙니다." 라고 할지 알 수 없다는 거죠.
이는 프로그램이 복잡할수록 더욱 치명적인 문제가 될 것입니다.
그렇기 때문에 최근에는 언어 모델의 출력 결과를 JSON과 같은 형식으로 고정하여 반환하도록 하는 방법에 대한 연구가 활발히 이뤄지고 있습니다.
실제로 OpenAI의 경우엔 특정 모델에 한하여 100% 확률로 JSON 출력 결과를 보장할 수 있다고 강조하게 되었죠.
그렇다면,
"그냥 JSON 형식으로 반환을 고정하면 되는 거 아니야?"
라고 생각할 수도 있겠습니다만 실제는 조금 더 까다롭습니다.
결과물이 JSON으로 반환되는 것을 강제하는 건 상대적으로 덜 어려울 수도 있지만, 모델 성능이 하락되는 것을 방지하는 게 쉽지 않습니다.
모델 학습을 해보신 분들은 공감이 되실텐데요, 모델에게 요구하는 항목의 개수가 증가하면 결국 한계치에 도달하여 어떤 것도 제대로 수행하지 못하는 상황이 됩니다.
다르게 말하면 형식을 맞추도록 강제하는 것도 모델의 입장에선 일종의 cost가 드는 셈이라고 볼 수도 있는 것 같습니다.
여하튼, 본 논문에서는 이런 식으로 모델의 출력 결과를 강제했을 때, reasoning & classification 태스크에 성능적으로 어떤 영향을 미치게 되는지에 대해 실험한 결과를 제시합니다.
2. Related Work
- Structured generation
- industrial solutions, JSON mode (OpenAI, Gemini)
- Instructor (Liu, 2024)
- Guardrails (PrefectHQ, 2024)
- LLMs reasoning ability
- Think step-by-step (Kojima et al., 2022)
- reasoning step의 개수와 final accuracy 간의 상관관계에 대한 연구 (Jin et al., 2024)
- 정교한 CoT decoding schema (Wang and Zhou, 2024)
- Benchmarks
- IFEval (Zhou et al., 2023): instruction을 따라 구체적인 형식의 답변을 생성하는지 확인하는 벤치마크
- INFOBENCH (Qin et al., 2024): 더 다양한 종류의 instruction과 conduct를 커버하는 벤치마크
- FOFO (Xia et al., 2024): 오직 format-following 능력만을 평가하는 벤치마크
3. Methodology for Structured Generation
3.1. Constrained Decoding (JSON-mode)
LLM의 output을 사전에 정의된 token space로 한정하는 방식을 뜻합니다.
기업 단위에서 활용하는 것으로 잘 알려진 JSON mode가 이에 해당하는 대표적인 방식입니다.
OpenAI나 Gemini API를 사용할 때, 일종의 하이퍼파라미터 옵션으로 선택할 수 있습니다.
본 논문에서는 이와 관련된 연구로 Willard and Louf, 2023; Koo et al., 2024 을 들고 있습니다.
3.2. Format-Restricting Instructions (FRI)
LLM이 JSON, XML, YAML과 같이 표준화된 형식으로 답변을 생성할 수 있도록 지시하는 방법입니다.
constrained decoding과 달리 predefined token space로 출력 결과를 강제하는 것이 아니기 때문에, 상대적으로 relaxed 하다고 표현하고 있습니다.
단, 답변 내용에서 최종 정답을 추출하여 모델 성능을 평가해야 된다는 단점이 있습니다.
여기에는 정통적인 방법으로 정규표현식을 활용할 수도 있고, LLM을 쓸 수도 있습니다.
3.3. NL-to-Format
1) LLM이 natural language로 답변을 생성하도록 지시하고
2) 이를 target format schema로 convert 하는
two-step process입니다.
이는 모델이 형식에 제한을 받지 않는 상황에서 최고 성능을 발휘하면서도, 이를 특정 형식으로 갈무리하여 활용할 수 있도록 돕는 방식으로 이해할 수 있습니다.
4. Experiments
4.1. Datasets
4.1.1. Reasoning Tasks
- GSM8K (OpenAI)
- Grade School Math Word Problems
- 8.5K개의 고품질 데이터셋
- 예시 Question
- Natalia sold clips to 48 of her friends in April, and then she sold half as many clips in May. How many clips did Natalia sell altogether in April and May?
- 예시 Answer
- Natalia sold 48/2 = <<48/2=24>>24 clips in May. Natalia sold 48+24 = <<48+24=72>>72 clips altogether in April and May. #### 72
- Last Letter Concatenation (NeurIPS, Google Brain)
- census 데이터에서 맨 앞, 맨 뒤 글자를 추출한 뒤 이를 이어 붙여 무작위로 생성한 것으로 테스트
- https://namecensus.com/ 의 데이터를 사용
- 예시 Question
- Take the last letters of the words in “Lady Gaga” and concatenate them.
- 예시 Answer
- The last letter of “Lady” is “y”. The last letter of “Gaga” is “a”. Concatenating them is “ya”. So the answer is ya.
- Shuffled Objects (Google)
- BigBench의 일부로, 여러 물체의 순서를 뒤섞은 것에 대한 정보를 바탕으로 최종 상태를 추론하는 능력을 평가하는 벤치마크
- 예시 input
- "Alice, Bob, Claire, Dave, and Eve are playing a game. At the start of the game, they are each holding a ball: Alice has a pink ball, Bob has a white ball, Claire has a red ball, Dave has a purple ball, and Eve has a yellow ball. \n\nAs the game progresses, pairs of players trade balls. First, Alice and Dave swap balls. Then, Claire and Eve swap balls. Then, Alice and Bob swap balls. Then, Dave and Claire swap balls. Finally, Alice and Claire swap balls. At the end of the game, Alice has the "
- 예시 output
- "target_scores": {
"pink ball.": 1,
"white ball.": 0,
"red ball.": 0,
"purple ball.": 0,
"yellow ball.": 0
}
- "target_scores": {
4.1.2. Classification Tasks
- DDXPlus (Mila)
- 환자의 profile을 바탕으로 49개의 diseases 중 하나를 적절히 골라야 하는 multiple-choice medical diagnosis dataset
- StreamBench가 제공하는 subset을 사용
{
"name": "E_130",
"code_question": "E_129",
"question_fr": "De quelle couleur sont les lésions?",
"question_en": "What color is the rash?",
"is_antecedent": false,
"default_value": "V_11",
"value_meaning": {
"V_11": {"fr": "NA", "en": "NA"},
"V_86": {"fr": "foncée", "en": "dark"},
"V_107": {"fr": "jaune", "en": "yellow"},
"V_138": {"fr": "pâle", "en": "pale"},
"V_156": {"fr": "rose", "en": "pink"},
"V_157": {"fr": "rouge", "en": "red"}
},
"possible-values": [
"V_11",
"V_86",
"V_107",
"V_138",
"V_156",
"V_157"
],
"data_type": "C"
}
- MultiFin (ACL Findings)
- 주어진 paragraph를 다섯 개의 카테고리 중 하나로 분류해야 하는 multi-choice financial dataset
- 예시 input
- Encuesta Mundial de CEOs 2019 - Hostelería SPA
- 예시 low-level label
- Board, Strategy & Mgmt
- Retail & Consumers
- 예시 high-level label
- Business & Management
- Sports Understanding
- 인위적으로 구성된 스포츠 관련 문장이 plausible 한지 implausible 한지 판별하는 태스크
- BigBench의 subset
- 예시 input
- Jamal Murray was perfect from the line
- 예시 output
- "target_scores": {
"plausible": 1,
"implausible": 0
}
- "target_scores": {
- NI-Task 280 (ACL, AI2, Washington)
- paragraph 기반으로 고정관념을 분류하는 multiple choice 태스크
- Natural Instructions 자체는 61개의 distinct tasks, 193k task instances (input-output pair)로 구성된 벤치마크
- 이중 subset을 사용
- 구체적인 예시는 확인하지 못함
4.2. Model
API를 호출하여 사용하는 모델들은 JSON mode를 사용했다고 밝혔습니다.
- gpt-3.5-turbo-0125
- claude-3-haiku-20240307
- gemini-1.5-flash
- LLaMA-3-8B-Instruct
- Gemma-2-9B-Instruct
4.3. Evaluation method
4.3.1. Metrics
- Accuracy
- classification-based tasks
- Sport Understanding, DDXPlus, Natural Instruction Task 280, MultiFin
- Exact Match
- reasoning-based tasks
- GSM8K, Last Letter Concatenation
- Shuffled Objects
- 추출된 string이 actual answer와 완벽하게 일치하면 정답
4.3.2. Perfect Text Parser
본 논문에서는 text parser로 LLM을 사용하여 생성된 텍스트로부터 최종 answer를 추출하도록 했습니다.
이는 단순한 parsing 오류로 인하여 모델의 performance가 제대로 측정되지 않는 상황을 방지하기 위함입니다.
예를 들어 모델의 답변은 정확했는데 JSON 형식에서 괄호 닫는 것을 하나 빠뜨려 틀렸다고 판정된다면 정확한 비교가 어렵기 때문입니다.
물론 실제로 parsing 자체가 얼마나 제대로 이뤄졌는지에 대한 것도 측정한 결과를 제시하기 때문에 너무 걱정하지 않아도 됩니다.
4.3.3. Consideration for Prompt Sensitivity
Prompt Engineering이라는 말이 핫 키워드로 떠오를 만큼 언어 모델에게 주어지는 입력이 최종 출력에 큰 영향을 줄 수 있다는 것은 이미 잘 알려져 있습니다.
여기서는 JSON, XML, YAML 각 3개씩, 총 9개의 prompt combination을 사용하여 모델 성능을 평가한 결과를 제시하고 있습니다.
5. Main Results
Impact of Format Restriction on Final Results
결과 자체는 굉장히 심플하게 정리할 수 있습니다.
Reasoning Tasks에서는 Format Restriction이 악영향을 미치고, 반대로 Classification Tasks에서는 긍정적인 영향을 줍니다.
막대그래프의 색깔은 순서대로 JSON-mode, FRI, NL to Format, NL을 나타내고 있습니다.
되게 단순하게 생각하면 파란색은 강제성이 높고 빨간색은 자유도가 높은 것입니다.
사실 다른 색 사이에 차이는 크지 않은데, 유독 파란색의 성능이 낮은 것을 알 수 있습니다.
이런 그래프들의 특징 중 하나가 보통 scale에 장난질을 많이 쳐놓는다는 것인데, 여기서는 그런 것도 없습니다.
GSM8K는 그래도 형식이고 뭐고 실제로 복잡한 추론을 수반하는 태스크여서 그런지 영향을 상대적으로 덜 받습니다만, 그럼에도 불구하고 NL과의 스코어가 수십 퍼센트 이상 벌어집니다.
개인적인 궁금증은 왜 형식 강제로 인한 성능 저하가 특히 Last Letter와 Shuffled Obj에서 더 심한가에 있습니다.
이에 대해서는 논문에서도 딱히 언급하고 있지는 않은데요, naive한 생각으로는 모델의 입장에서 순서에 관한 정보를 다루는 것이 많이 challenging 해서 그런 것인가 싶기도 합니다.
위와 달리 분류 태스크에서는 JSON-mode가 성능 향상에 기여하는 태스크가 일부 있다는 점이 눈에 띕니다. (파란색)
특히 DDXPlus에서 Gemini 1.5 Flash 모델을 보면 (편차가 크긴 하지만) 다른 방식 대비 20% p 가까운 성능 차이를 보이고 있다는 걸 알 수 있죠.
또한 이에 대한 태스크별 편차가 위에서보다 상대적으로 작다는 것도 특징인 것 같습니다.
태스크의 유형뿐만 아니라 난이도 자체도 결과에 꽤 큰 영향을 줄 수 있다는 것 아닐까 싶기도 하고요.
6. Discussion
6.1. Impact on looser format restriction
본 논문에서는 schema restriction을 제시하지 않음으로써 강제성을 낮춘 Soft Restrict setting에 대한 실험 결과도 제시하고 있습니다.
예를 들어 기존에는, 'Replya your answer in JSON format with the following schema: {"reason": ..., "answer": ...}" 와 같이 제시되었다면,
"Reply your answer in JSON format"과 같이 단순하게 지시하는 것을 뜻합니다.
저는 이게 위에서 언급한 FRI (Format-Restricting Instruction)와 뭐가 다른지 모르겠습니다.
여하튼 이러한 세팅으로 실험했을 때 성능이 향상되고 변동폭도 줄었다(결과 편차 작음)고 언급하고 있습니다.
6.2. Comparison Across Different Formats
실험 대상이 되는 세 개의 형식에 대한 비교 실험 결과를 제시하고 있습니다.
결론적으로 말하자면 어떤 형식이 다른 것에 비해 일관되게 좋거나 나쁜 패턴은 나타나지 않았다고 합니다.
6.3. Structure Format and Parsing Error Rates
저자들의 분석 결과에 따르면, 정답을 추출하는 과정에서 확인된 parsing error로 인해 모델 성능이 하락된 것처럼 보이는 것에 대해서는 거의 우려하지 않아도 될 수준이라고 합니다.
Gemini 1.5 Flash, GPT 3.5 Turbo의 경우 거의 0퍼센트에 가까운 실패율을 보였고, LLaMA 3 8B 세팅에서도 Last Letter 태스크에서 JSON format을 제대로 지키지 못한 케이스가 고작 0.148%였다고 합니다.
하지만 놀라운 건 성능 차이는 38.15%나 벌어졌다는 것이고요.
(라고 하면서 아래 표를 제시했는데, 대체 뭐와 38.15% 차이가 나는 것인지는 설명을 똑바로 안 해놨습니다...)
그래도 위 표를 보면 확실히 똑똑하다고 알려진 모델일수록, 형식을 강제하는 것이 모델 성능 하락에 크게 영향 주지 않고 있다는 걸 알 수는 있겠네요.
한 가지 더 언급을 하자면, schema constraint를 적용하면 결과의 편차도 커지게 됩니다.
이는 모델이 prompt에 더 sensitive하게 반응하여 결과가 매번 달라질 수 있음을 시사한다고 해석할 수 있겠습니다.
7. Conclusion
오늘은 제가 최근 담당하고 있는 프로젝트에서 경험한 것과 아주 유사한 실험 결과 및 결론을 제시하는 연구를 리뷰해 보았습니다.
제가 하고 있는 게 모델의 추론 능력을 활용하는 것이라고 보기는 어렵지만, 적어도 모델의 입장에서 context에 대한 understanding을 요구하는 태스크에서 특정 형식을 강제하는 것이 좋지 않다는 점은 크게 공감되는 포인트인 것 같습니다.
쓰고 싶지만 그러기가 어려운 것은 정답을 extract 하는 데 LLM을 쓴다는 것입니다.
사실 LLM이 특정 형식의 텍스트를 말 그대로 추출하고, 이를 간단히 재가공하는 것은 아주 잘합니다.
문제는 사이즈가 너무 크다 보니까 덩치에 비해 너무 작은 일을 하고 있는 것처럼 보이는 거고요..
그런다고 해서 특정 형식만을 반환하는 파이프라인을 억지로 구축하거나 학습을 진행하면 모델이 망가지게 되어 제대로 된 문맥 이해를 힘들어하는 것이 눈에 확연히 보입니다.
눈물 나는 포인트는 LLaMA-3-8B가 다른 모델들에 비해 크게 영향을 받는다는 것입니다.
사실 저 논문이 결과를 제시할 때에 비해 더 뛰어난 모델들이 많이 등장하기는 했습니다만, 아직도 공개되지 않은 proprietary 모델들과 성능 차이는 꽤 큰 편이고요..
특히나 갈수록 training이 제대로 되지 않는다는 이야기가 공공연하게 돌면서 모델을 원하는 대로 fitting 시키는 것이 꽤나 어렵다는 느낌이 듭니다.
저런 점을 고려한다면 확실히 정답을 추출하는 모듈을 따로 붙이는 게 작은 사이즈의 모델을 활용하는 시나리오에서는 적합한 방식일 텐데 자원/환경 상의 이유로 이러한 옵션을 배제해야 한다는 게 아쉽습니다.
이와 달리 구조화된 텍스트가 모델에게 도움이 된다는 연구 결과도 있습니다.
사실 이건 모델에게 구조화된 '입력'을 제공하는 게 RAG의 성능 향상에 도움이 된다는 이야기라서 오늘 리뷰한 논문과 일맥상통하는 것은 아닙니다.
하지만 간단하게 생각해 보면 모델의 입장에서는
- 입력: sturctured 👍🏻
- 출력: structured 👎🏻
로 정리할 수도 있을 것 같습니다.
물론 분류 태스크에서는 format 강제하는 게 좋은 경우도 있었다! 라고 하긴 하지만 LLM으로 분류 태스크를 수행하는 사람은 많지 않을 것 같고요..
직관적으로도 위와 같은 결론에 도달할 수 있는 것 같습니다 ㅋㅋㅋ