로그인가입

배우기 / [튜토리얼 4]

채팅 틀이 붙으면 달라지는 것

SmolLM2 360MchatM02
이 글에서 배울 내용
chat 모드에서는 말을 못 붙이게 막는 것이 일이다

또 덧셈입니다. 이번에 바뀐 것은 chat 모드, 즉 채팅 틀(chat template)이 붙는다는 점입니다. 튜토리얼 1번과 3번에서 쓴 raw 는 쓴 글이 그대로 들어갔습니다. chat 은 그 앞뒤로 특수 표식(special token)을 둘러서 넣습니다.

무엇이 둘러싸이나

문제 쪽에서 전체 프롬프트 를 펼치면 실제로 들어가는 글이 보입니다. 대략 이런 모양입니다.

chat 모드에서 실제로 들어가는 글
<|im_start|>system
You are a helpful AI assistant named SmolLM, trained by Hugging Face<|im_end|>
<|im_start|>user
3 + 3<|im_end|>
<|im_start|>assistant

<|im_start|> 같은 것이 그 표식입니다. 모델을 만들 때 대화를 이런 모양으로 보여 주면서 가르쳤다는 점에서, 이 모양이 들어오면 모델이 조수(assistant) 노릇을 시작합니다. 글을 잇는 대신 대답을 하려고 듭니다.

조수(assistant)는 너무 친절해서 문제가 될 수 있습니다

조수가 되면 보통은 좋은 일입니다. 지시를 훨씬 잘 따릅니다. 그런데 이 사이트의 채점은 기대값과 한 글자도 달라서는 안 됩니다. 그래서 친절함이 그대로 감점이 됩니다.

기대값
6
조수가 내놓기 쉬운 것
정답은 6입니다.

3 + 3 = 6 이기 때문입니다.

계산은 맞았는데 오답입니다. 게다가 raw 모드와 달리 chat 모드는 첫 줄만 보지 않고 낸 글 전체를 봅니다. 뒤에 한 줄이라도 더 붙으면 그대로 틀립니다.

chat 모드에서 할 일은 답을 맞히게 하는 것이 아니라, 답 말고는 아무것도 못 쓰게 막는 것입니다.

막는 법

  • 무엇을 하지 말라고 또박또박 적으십시오. No words, No explanation 처럼 금지를 나열하는 쪽이 숫자만 출력해 한 줄보다 잘 듣습니다.

  • 영어로 쓰십시오. SmolLM2 는 영어로 배웠습니다. 같은 뜻이면 영어 쪽이 훨씬 잘 통합니다.

  • 최대 토큰(max tokens)이 16입니다. 설명을 붙이기 시작하면 16토큰 안에 못 끝내고 중간에 잘립니다. 잘린 글도 오답입니다.

  • 그래도 정답은 같은 말을 붙이면, 그 말을 못 쓰게 직접 적어 보십시오.

직접 해보기

예시 답안으로 통과한 뒤에, 같은 문제의 raw 판(M01)에 같은 프롬프트를 넣어 보십시오. 같은 글인데 결과가 전혀 다릅니다. 그 차이가 이 글에서 배울 내용입니다.

예시 답안

그대로 복사해서 문제 쪽의 같은 이름 칸에 붙이시면 됩니다. ␣ 는 공백, ↵ 는 줄바꿈을 보이게 적은 것입니다. 복사되는 것은 원래 글자입니다.

pre_prompt
Output␣only␣the␣number.␣No␣words,␣no␣punctuation,␣no␣explanation.↵
↵
post_prompt
(비워 둡니다)

한 번 통과시켜 보신 다음에는 꼭 고쳐 보십시오. 어디를 건드리면 무너지는지 보는 것이 답을 아는 것보다 오래 남습니다.