3.5 KiB
Qwen2MoE
Overview
Qwen2MoE is the new model series of large language models from the Qwen team. Previously, we released the Qwen series, including Qwen-72B, Qwen-1.8B, Qwen-VL, Qwen-Audio, etc.
Model Details
Qwen2MoE is a language model series including decoder language models of different model sizes. For each size, we release the base language model and the aligned chat model. Qwen2MoE has the following architectural choices:
- Qwen2MoE is based on the Transformer architecture with SwiGLU activation, attention QKV bias, group query attention, mixture of sliding window attention and full attention, etc. Additionally, we have an improved tokenizer adaptive to multiple natural languages and codes.
- Qwen2MoE employs Mixture of Experts (MoE) architecture, where the models are upcycled from dense language models. For instance,
Qwen1.5-MoE-A2.7B
is upcycled fromQwen-1.8B
. It has 14.3B parameters in total and 2.7B activated parameters during runtime, while it achieves comparable performance withQwen1.5-7B
, with only 25% of the training resources.
For more details refer to the release blog post.
Usage tips
Qwen1.5-MoE-A2.7B
and Qwen1.5-MoE-A2.7B-Chat
can be found on the Huggingface Hub
In the following, we demonstrate how to use Qwen1.5-MoE-A2.7B-Chat
for the inference. Note that we have used the ChatML format for dialog, in this demo we show how to leverage apply_chat_template
for this purpose.
>>> from transformers import AutoModelForCausalLM, AutoTokenizer
>>> device = "cuda" # the device to load the model onto
>>> model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen1.5-MoE-A2.7B-Chat", device_map="auto")
>>> tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen1.5-MoE-A2.7B-Chat")
>>> prompt = "Give me a short introduction to large language model."
>>> messages = [{"role": "user", "content": prompt}]
>>> text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
>>> model_inputs = tokenizer([text], return_tensors="pt").to(device)
>>> generated_ids = model.generate(model_inputs.input_ids, max_new_tokens=512, do_sample=True)
>>> generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)]
>>> response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
Qwen2MoeConfig
autodoc Qwen2MoeConfig
Qwen2MoeModel
autodoc Qwen2MoeModel - forward
Qwen2MoeForCausalLM
autodoc Qwen2MoeForCausalLM - forward
Qwen2MoeForSequenceClassification
autodoc Qwen2MoeForSequenceClassification - forward
Qwen2MoeForTokenClassification
autodoc Qwen2MoeForTokenClassification - forward