exec=false인데 문장은 왜 남아 있을까: LLMON의 입력과 실행 연결
LLMON의 exec=false는 자료를 지우지 않고 실행 참조만 제외한다. 납기일 예시와 실제 템플릿 렌더링으로 입력·지시 연결을 구분하고 모델 평가의 범위를 살핀다.

사용하지 않을 자료에 exec=false를 붙였는데도, 모델에 보낼 문자열에는 그 자료가 그대로 남아 있다. LLMON에서는 정상적인 동작이다. 이 설정은 텍스트를 지우는 대신 이번 실행이 참조할 대상에서 제외한다. 따라서 비활성화한 자료와 모델에 아예 보내지 않은 자료는 다르게 취급해야 한다.
IBM Granite 팀의 2026년 11월 12일 발표 (새 창)는 지시와 자료를 분리하는 LLMON과 Granite 4.1 3B·8B preview를 소개한다. 여기서는 3B 모델의 채팅 템플릿을 따라 문장 생성과 참조 연결을 나눠 본다. 모델 추론은 실행하지 않았으며, 아래 납기일은 동작 설명을 위한 가상 자료다.
문장을 만드는 단계와 연결하는 단계가 다르다
현재 납기일은 11월 20일이고, 이전 문서에는 11월 30일이 남아 있다고 가정하자. instruction에는 “자료의 납기일을 요약하라”를 넣고, data에는 현재 자료와 이전 자료를 각각 넣는다. 지시와 현재 자료의 exec는 true로, 이전 자료는 false로 설정한다.
고정 리비전의 채팅 템플릿 (새 창)은 먼저 각 항목을 순회하며 본문과 ID를 가진 블록을 만든다. 이 출력 단계는 exec 조건 밖에 있다. 다음으로 exec가 true인 항목의 ID만 참조 목록에 추가한다. 마지막 exec 블록에서 지시는 instruction 참조로, 자료는 input 참조로 연결된다.
이 템플릿을 로컬 Jinja 환경에서 렌더링해 확인했다. false인 경우에도 두 납기일 문장이 모두 남았고, data를 가리키는 input 참조는 한 개였다. 이전 자료를 true로 바꾼 경우에는 두 문장이 그대로 남은 채 참조가 두 개로 늘었다. 이는 입력 문자열 변환을 확인한 결과이지, 모델이 11월 20일을 답했거나 이전 자료를 무시했다는 실험 결과가 아니다.
| 이전 자료 설정 | 입력에 남는 납기일 | data input 참조 수 |
|---|---|---|
| exec=false | 11월 20일·11월 30일 | 1 |
| exec=true | 11월 20일·11월 30일 | 2 |
자료의 true는 명령으로 승격한다는 뜻이 아니다
같은 true라도 항목 종류에 따라 연결되는 자리가 다르다. data의 true는 이번 작업에서 읽을 입력으로 연결한다는 뜻이다. 그 안에 “납기일을 바꿔라”라는 문장이 들어 있더라도 템플릿은 이를 instruction 참조로 바꾸지 않는다. 신뢰할 지시와 읽을 자료를 별도의 경로로 표현하는 설계다.
반대로 검색 문서 전체를 content에 넣으면 이 템플릿은 content를 실행할 instruction의 단축 표기로 처리한다. 문자열 안에 “참고 자료”라고 적었다는 이유만으로 data 블록이 되지는 않는다. 납기일 예시를 연결할 때도 자료를 어느 필드에 넣을지가 먼저 결정돼야 한다.
false는 삭제나 마스킹 옵션으로 쓰기 어렵다. 모델에 전달하지 않을 이전 자료라면 템플릿 호출 전에 제외하는 편이 목적에 맞다. 여러 후보를 문맥에 남겨 두고 이번 작업의 대상만 바꾸려는 경우에는 명시적 참조가 유용할 수 있다. 다만 문맥에 남긴 텍스트만큼 입력 길이도 유지된다. 이 비교는 설계상 선택이며, 토큰 수나 속도를 측정한 결과는 아니다.
참조하지 않는 텍스트도 어텐션에서는 보일 수 있다
공식 시각화 (새 창)의 첫 프레임에는 목표 지시·자료뿐 아니라 Distractor Instr.와 Distractor Data에도 어텐션이 표시된다. 이 장면은 L26의 첫 출력 토큰을 선택한 화면이며, 납기일 예시를 실행한 화면은 아니다. 굵은 선은 해당 단계에서 텍스트 종류에 배분된 어텐션을 보여 준다.
여기서 읽을 수 있는 점은 참조 구분이 텍스트를 물리적으로 제거하는 장치와 다르다는 것이다. 어텐션이 남았다는 사실만으로 모델이 그 명령을 따랐다고 판정할 수도 없다. 참조된 자료로 답하는지, 미참조 자료 때문에 답이 바뀌는지는 출력 결과를 따로 비교해야 한다. 그림 한 프레임을 모든 층과 생성 단계의 동작으로 일반화하지 않는다.

입력 연결 확인 다음에는 답변 변화를 비교한다
발표의 OPI 그래프 (새 창)는 9,000개 공격에서 robustness를 1−공격 성공률로 정의한다. 두 LLMON preview의 막대가 1에 가까운 것은 이 정적 평가에서 공격을 잘 버텼다는 결과다. 새 공격을 답변에 맞춰 바꾸는 적응형·다중 턴 방어까지 보장하는 수치는 아니다. 발표에서도 그 평가는 진행 중이라고 구분하며 모델을 실험용 preview로 명시한다.
납기일 사례에 적용하려면 입력 변환과 모델 답변을 나눠 평가할 수 있다. 먼저 false에서 이전 문장은 남고 참조만 빠지는지 확인한다. 이어 같은 현재 자료에 이전 자료를 제외한 조건, false로 남긴 조건, true로 연결한 조건을 비교한다. 앞의 두 조건에서 답이 달라지면 미참조 자료의 영향 가능성을 조사할 수 있고, 마지막 조건은 상충하는 입력을 함께 연결했을 때의 별도 문제다. 이 모델 비교는 아직 실행하지 않은 제안이다.
현재 템플릿에서 확인한 결론은 명확하다. exec=false는 해당 항목의 실행 참조를 만들지 않는다. 자료를 보내지 않아야 하는 요구에는 사전 제외가 필요하고, 참조를 구분해 전달하려는 요구에는 알맞은 필드와 그 형식으로 학습된 모델이 필요하다. 템플릿 검사를 통과한 뒤에도 실제 답변의 정확성은 별도로 확인해야 한다.

