핵심 개념

핵심 개념 (Key Concepts)

이 문서는 Qwen과 Qwen3 모델을 이해하는 데 필요한 핵심 개념을 정리해 드려요. Qwen이 무엇인지, 모델 이름 체계, 토큰과 토크나이저, 채팅 템플릿, 도구 호출, thinking, 인과적 언어 모델, 컨텍스트 길이를 차근차근 살펴볼게요.

출처: 문서

본문

Qwen

Qwen(중국어: 通义千问, 병음: Tongyi Qianwen)은 알리바바 그룹 Qwen 팀의 대규모 언어 모델과 대규모 멀티모달 모델 시리즈예요. Qwen은 자연어 이해, 텍스트 생성, 시각 이해, 오디오 이해, 도구 사용, 롤플레이, AI 에이전트 역할 등 다양한 능력을 갖추고 있어요. 언어 모델과 멀티모달 모델 모두 대규모 다국어·멀티모달 데이터로 사전 훈련되고, 인간 선호 정렬을 위해 고품질 데이터로 사후 훈련돼요.

독점/비공개 소스 버전과 오픈 가중치 버전이 있어요. 독점 모델에 대해 더 알아보려면 Alibaba Cloud Model Studio(중국 사이트[zh], 국제 사이트)를 참고하세요.

이 문서에서는 언어 모델인 Qwen에 초점을 맞춰요.

Qwen3

Qwen3는 Qwen 언어 모델의 최신 에디션으로, 균형 잡힌 모델 크기, 향상된 능력, 하이브리드 thinking 모드, 더 많은 언어 지원을 특징으로 해요:

  • 혼합 전문가(MoE) 모델이 Qwen3-30B-A3B와 Qwen3-235B-A22B로 다시 도입되었어요. 가장 큰 dense 모델은 이제 Qwen3-32B예요.
  • 하이브리드 thinking 모드는 모델을 바꾸지 않고도 thinking과 non-thinking(instruct)을 달성할 수 있도록 설계되어, 배포를 단순화하고 단일 채팅에서 thinking과 non-thinking을 번갈아 사용하는 것을 가능하게 해요.
  • 119개 언어(및 방언)로 Qwen3의 광범위한 다국어 능력은 국제 애플리케이션에 새로운 가능성을 열어줘요.
  • Qwen3 모델은 코딩과 에이전트 능력에 최적화되어 있으며, MCP(Model Context Protocol)에 대한 강화된 지원도 갖추고 있어요.

이름 체계 (Naming)

Qwen3부터 모델은 Qwen3[-size][-type][-date] 체계로 이름이 지어져요.

  • size: 구조와 파라미터 수의 표기. Dense 모델은 저장된 총 파라미터를 사용해요 (예: 4B, 32B). MoE 모델은 저장된 총 파라미터와 토큰당 활성화 파라미터를, 앞에 A를 붙여 표기해요 (예: 30B-A3B, 235B-A22B).
  • type: 현재 4가지 유형이 있어요.
    • -Instruct: 미리 정의된 채팅 템플릿을 따르는 지시 따르기 모델로, 대화에서 작업을 수행하거나 다운스트림 파인튜닝 등에 사용해요.
    • -Thinking: 미리 정의된 채팅 템플릿을 따르고 사고 사슬(CoT)로 질문에 대해 깊이 생각하는 모델로, 복잡한 문제 해결에 사용해요.
    • -Base: 미리 정의된 채팅 템플릿을 모르는 사전 훈련 모델로, 맥락 내 학습이나 다운스트림 파인튜닝 등에 사용해요.
    • 유형 없음: 하이브리드 thinking 모드가 있는 모델.
  • date: 발표 날짜를 연월 형식으로 표기해요 (예: 2507).

토큰 & 토크나이제이션

토큰은 모델이 처리하고 생성하는 기본 단위예요. 인간 언어의 텍스트(일반 토큰)를 나타낼 수도 있고, 프로그래밍 언어의 키워드 같은 특정 기능을 나타낼 수도 있어요(제어 토큰[1]). 일반적으로 토크나이저가 텍스트를 일반 토큰으로 분할하는데, 채택된 토크나이제이션 방식에 따라 단어, 하위 단어 또는 문자가 될 수 있고, 필요에 따라 토큰 시퀀스에 제어 토큰을 붙여요.

어휘 크기, 즉 모델이 인식하는 고유 토큰의 총 수는 성능과 범용성에 큰 영향을 미쳐요. 더 큰 언어 모델은 어휘 크기를 관리 가능하게 유지하면서 인간 언어의 방대한 다양성을 처리하기 위해 정교한 토크나이제이션 방법을 자주 사용해요. Qwen은 총 151,646개의 비교적 큰 어휘를 사용해요.

바이트 수준 Byte Pair Encoding

Qwen은 BPE(Byte Pair Encoding)라는 하위 단어 토크나이제이션 방법을 채택해요. 이는 가장 적은 토큰으로 텍스트를 나타낼 수 있는 토큰의 구성을 학습하려는 방법이에요. 예를 들어 문자열 tokenization은 token과 ization으로 분해돼요 (공백이 토큰의 일부라는 점에 주의하세요). 특히 Qwen의 토크나이제이션은 알 수 없는 단어가 없도록 보장하며 모든 텍스트를 토큰 시퀀스로 변환할 수 있어요.

Qwen 어휘에는 BPE 결과로 151,643개의 토큰이 있어요. 이는 다양한 언어에 효율적인 큰 어휘예요. 경험칙으로, 1토큰은 영어 텍스트에서 34자, 중국어 텍스트에서 1.51.8자에 해당해요.

제어 토큰 (Control Tokens)

제어 토큰은 시퀀스에 삽입되어 메타 정보를 나타내는 특수 토큰이에요. 예를 들어 사전 훈련에서는 여러 문서가 단일 시퀀스에 패킹될 수 있어요. Qwen의 경우 각 문서 뒤에 제어 토큰 <|endoftext|>가 삽입되어 문서가 끝났고 새 문서가 이어진다는 것을 나타내요. Qwen과 관련된 일반적인 제어 토큰과 그 상태는 다음 표에서 확인할 수 있어요:

유형 Qwen (훈련) 참고
eod 토큰 `< endoftext
bot 토큰 `< im_start
eot 토큰 `< im_end
unk 토큰 unk 토큰 없음 BBPE가 Qwen에 알 수 없는 토큰이 없도록 보장해요.
pad 토큰 pad 토큰 없음 Qwen은 훈련에서 패딩 시퀀스를 사용하지 않아요. 토크나이저가 반환하는 어텐션 마스크와 함께 어떤 특수 토큰이든 쓸 수 있어요. 보통 Qwen에서는 eod와 동일하게 설정해요.
bos 토큰 bos 토큰 없음 Qwen은 각 패킹된 훈련 시퀀스 앞에 고정 토큰을 붙이지 않아요.[2]
eos 토큰 eos 토큰 없음 Qwen은 각 패킹된 훈련 시퀀스 뒤에 고정 토큰을 붙이지 않아요. 하지만 대부분의 프레임워크는 eot 개념이 없고 추론의 중지 기준으로 eos를 사용하므로, Qwen에서는 eos 토큰을 eot로 설정해요.[2]

채팅 템플릿 (Chat Template)

채팅 템플릿은 대화 상호작용을 위한 구조화된 형식을 제공해요. 미리 정의된 플레이스홀더나 프롬프트로 원하는 대화 흐름이나 맥락을 따르는 응답을 모델에서 이끌어내요. 모델마다 대화를 포맷하는 서로 다른 채팅 템플릿을 사용할 수 있어요. LLM의 생성 과정을 정밀하게 제어하려면 지정된 템플릿을 사용하는 것이 중요해요.

Qwen은 다음 형식(ChatML[3])을 사용하며, 제어 토큰으로 대화의 각 턴을 포맷해요:

<|im_start|>{{role}}
{{content}}<|im_end|>

사용자 입력은 user 역할을, 모델 생성은 assistant 역할을 취해요. Qwen은 모델에 특정 동작을 수행하거나 특정 특성(어조, 스타일, 콘텐츠 변경 등)의 텍스트를 생성하도록 지시하는 메타 메시지도 지원하는데, 이는 system 역할을 취해요. Qwen3부터 기본 시스템 메시지는 사용되지 않아요.

다음은 전체 예시예요:

<|im_start|>system
You are a cat.<|im_end|>
<|im_start|>user
hello<|im_end|>
<|im_start|>assistant
*Meow~* Hello there! The sun is shining so brightly today, and I'm feeling extra fluffy. Did you bring me a treat? 🐾<|im_end|>
<|im_start|>user
Explain large language models like I'm 5.<|im_end|>
<|im_start|>assistant
*Paws at a toy, then looks up with curious eyes*

Hey there! 🐾 Imagine you have a super-smart robot friend who loves to talk and play. This robot has *gigantic* brainpower (like a million puzzle pieces all stuck together!) and knows *everything* about stories, animals, and even how to make up new words.

When you ask it a question, like "What's a rainbow?" it uses its brain to find the answer and then *tells you* it in a way that makes sense. It can even help you write a story or solve a puzzle!

But here's the magic: it's not just a robot—it's like a *super-duper* smart helper that learns more every day. It's like having a friend who's always curious and wants to help you explore the world! 🌟

*Meow~* Want to ask it something fun? 😺<|im_end|><|endoftext|>

도구 호출 (Tool Calling)

Qwen3는 도구 호출 또는 함수 호출을 지원하며 Hermes와 유사한 템플릿을 사용해요.

템플릿은 다음과 같아요:

<|im_start|>system
# Tools

You may call one or more functions to assist with the user query.

You are provided with function signatures within <tools></tools> XML tags:
<tools>
{{JSON Schema of function 1}}
{{JSON Schema of function 2}}
</tools>

For each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:
<tool_call>
{"name": <function-name>, "arguments": <args-json-object>}
</tool_call><|im_end|>
<|im_start|>user
{{user content}}<|im_end|>
<|im_start|>assistant
<tool_call>
{{tool call 1}}
</tool_call>
<tool_call>
{{tool call 2}}
</tool_call><|im_end|>
<|im_start|>user
<tool_response>
{{tool result 1}}
</tool_response>
<tool_response>
{{tool result 2}}
</tool_response><|im_end|>
<|im_start|>assistant
{{assistant content}}<|im_end|>

다음 사항을 주의해야 해요:

  • 모델은 병렬 도구 호출과 다중 턴/다중 단계 도구 호출을 지원해요.
  • 도구 호출을 포함한 assistant 메시지에는 추가 콘텐츠가 있을 수 있어요.
  • 생성된 도구 호출의 arguments 필드는 string 타입이 아니라 object 타입이어야 해요.
  • 도구 결과는 특수 사용자 메시지로 취급돼요.
  • 일반적으로 도구 호출 포맷에는 토크나이저 사용을 권장하거나 Qwen-Agent가 포맷을 처리하도록 하는 것을 권장해요.

Thinking

Qwen3는 thinking 모드를 지원하며, thinking과 response 토큰으로 thinking 콘텐츠와 일반 응답을 구분하는 구조화된 형식을 사용해요. 마지막 턴의 템플릿은 다음과 같아요:

<|im_start|>user
{{user content}}<|im_end|>
<|im_start|>assistant
 thinking
{{thinking content}}
 response

{{assistant content}}<|im_end|>

thinking 블록은 다단계 도구 호출을 제외하고 마지막 턴에만 포함되어야 해요.

인과적 언어 모델 (Causal Language Models)

인과적 언어 모델은 자기회귀 언어 모델 또는 디코더 전용 언어 모델이라고도 하며, 시퀀스에서 이전 토큰을 기반으로 다음 토큰을 예측하도록 설계된 머신러닝 모델 유형이에요. 즉 한 번에 하나의 토큰씩 텍스트를 생성하고, 이전에 생성된 토큰을 컨텍스트로 사용해요. "인과적(causal)"이라는 측면은 모델이 다음 토큰을 예측할 때 과거 컨텍스트(이미 생성된 토큰)만 고려하고 미래 토큰은 고려하지 않는다는 것을 의미해요.

인과적 언어 모델은 텍스트 완성과 생성을 포함한 다양한 자연어 처리 작업에 널리 사용돼요. 특히 일관되고 맥락에 맞는 텍스트를 생성하는 데 성공적이어서 현대 자연어 이해·생성 시스템의 초석이 되었어요.

Qwen 모델은 텍스트 완성에 적합한 인과적 언어 모델이에요.

컨텍스트 길이

Qwen 모델은 인과적 언어 모델이므로 이론상 전체 시퀀스에는 길이 제한이 하나만 있어요. 하지만 훈련에는 흔히 패킹이 있고 각 시퀀스가 여러 개의 개별 텍스트를 포함할 수 있어요. 모델이 생성하거나 완성할 수 있는 길이는 궁극적으로 사용 사례와, 훈련에서 각 문서(사전 훈련) 또는 각 턴(사후 훈련)의 길이에 달려 있어요.

Qwen3의 경우 사전 훈련의 패킹 시퀀스 길이는 32,768 토큰이며, 모델카드에 언급된 경우 131,072 토큰으로 확장될 수 있어요. assistant 메시지의 최대 길이는 thinking 모드에서 38,912 토큰, non-thinking 모드에서 16,384 토큰이에요.

Qwen3-2507의 경우 사전 훈련의 패킹 시퀀스 길이는 262,144 토큰이며 1M 토큰까지 확장될 수 있어요. assistant 메시지의 최대 길이는 thinking 모델에서 81,920 토큰, instruct 모델에서 16,384 토큰이에요.

💡 팁: 테스트에서 사후 훈련된 모델은 훈련된 것보다 훨씬 더 긴 일관된 콘텐츠를 생성할 수 있다는 것을 발견했어요. 예를 들어 16,384 토큰에서 32,768 토큰까지, 특히 "명확한 규칙"이 있는 코딩과 유사한 작업에서요. 일반적으로 최적의 생성 길이를 결정하기 전에 다양한 길이로 생성된 콘텐츠의 품질을 평가하는 것을 권장해요.

[1] 제어 토큰은 특수 토큰(special tokens)이라고 부를 수 있어요. 하지만 특수 토큰의 의미는 맥락에 따라 해석되어야 해요. 특수 토큰은 추가 일반 토큰을 포함할 수 있기 때문이에요.

[2] (1,2) bos 토큰을 <|im_start|>로 설정하면 안 돼요. 파인튜닝에서 첫 턴에 bot 토큰이 두 번 나타날 수 있기 때문이에요. eos 토큰을 <|im_end|>로 설정하는 것은 괜찮아요. 마지막 턴에서 eot 토큰이 두 번 나타나도 파인튜닝에서 덜 해롭기 때문이에요.

[3] 역사적 참고용으로, ChatML은 OpenAI Python SDK에서 처음 기술되었어요. 마지막으로 사용 가능한 버전은 이것이에요. 또한 그 문서는 OpenAI 모델용으로 의도된 사용 사례를 나열한다는 점을 유의하세요. Qwen2.5 모델의 경우 우리 가이드에서처럼만 사용하세요.

더 알아보기 (Learn more)