|
--- |
|
base_model: |
|
- Qwen/Qwen2-1.5B |
|
- Replete-AI/Replete-Coder-Qwen2-1.5b |
|
license: apache-2.0 |
|
tags: |
|
- moe |
|
- frankenmoe |
|
- merge |
|
- mergekit |
|
- lazymergekit |
|
- Qwen/Qwen2-1.5B |
|
- Replete-AI/Replete-Coder-Qwen2-1.5b |
|
--- |
|
|
|
# QwenMoEAriel |
|
|
|
QwenMoEAriel is a Mixture of Experts (MoE) made with the following models using [LazyMergekit](https://colab.research.google.com/drive/1obulZ1ROXHjYLn6PPZJwRR6GzgQogxxb?usp=sharing): |
|
* [Qwen/Qwen2-1.5B](https://huggingface.co/Qwen/Qwen2-1.5B) |
|
* [Replete-AI/Replete-Coder-Qwen2-1.5b](https://huggingface.co/Replete-AI/Replete-Coder-Qwen2-1.5b) |
|
|
|
## 🧩 Configuration |
|
|
|
```yaml |
|
base_model: Qwen/Qwen2-1.5B |
|
architecture: qwen |
|
experts: |
|
- source_model: Qwen/Qwen2-1.5B |
|
positive_prompts: |
|
- "chat" |
|
- "assistant" |
|
- "tell me" |
|
- "explain" |
|
- "I want" |
|
- source_model: Replete-AI/Replete-Coder-Qwen2-1.5b |
|
positive_prompts: |
|
- "code" |
|
- "python" |
|
- "javascript" |
|
- "programming" |
|
- "algorithm" |
|
shared_experts: |
|
- source_model: Qwen/Qwen2-1.5B |
|
positive_prompts: # required by Qwen MoE for "hidden" gate mode, otherwise not allowed |
|
- "chat" |
|
# (optional, but recommended:) |
|
residual_scale: 0.1 # downweight output from shared expert to prevent overcooking the model |
|
``` |
|
|
|
## 💻 Usage |
|
|
|
```python |
|
!pip install -qU transformers bitsandbytes accelerate einops |
|
import torch |
|
from transformers import AutoModelForCausalLM, AutoTokenizer |
|
|
|
device = torch.device("cuda" if torch.cuda.is_available() else "cpu") |
|
print(device) |
|
model = AutoModelForCausalLM.from_pretrained( |
|
"femiari/Qwen2-1.5Moe", |
|
torch_dtype=torch.float16, |
|
ignore_mismatched_sizes=True |
|
).to(device) |
|
tokenizer = AutoTokenizer.from_pretrained("femiari/Qwen2-1.5Moe") |
|
|
|
prompt = "Give me a short introduction to large language model." |
|
messages = [ |
|
{"role": "system", "content": "You are a helpful assistant."}, |
|
{"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 |
|
) |
|
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] |
|
|
|
print(response) |
|
|
|
``` |