|
--- |
|
base_model: |
|
- inceptionai/jais-family-590m |
|
- inceptionai/jais-family-590m |
|
tags: |
|
- merge |
|
- mergekit |
|
- lazymergekit |
|
- inceptionai/jais-family-590m |
|
--- |
|
|
|
# Jais-590m-merged |
|
|
|
Jais-590m-merged is a merge of the following models using [LazyMergekit](https://colab.research.google.com/drive/1obulZ1ROXHjYLn6PPZJwRR6GzgQogxxb?usp=sharing): |
|
* [inceptionai/jais-family-590m](https://huggingface.co/inceptionai/jais-family-590m) |
|
* [inceptionai/jais-family-590m](https://huggingface.co/inceptionai/jais-family-590m) |
|
|
|
## 🧩 Configuration |
|
|
|
```yaml |
|
slices: |
|
- sources: |
|
- model: inceptionai/jais-family-590m |
|
layer_range: [0, 18] |
|
- model: inceptionai/jais-family-590m |
|
layer_range: [0, 18] |
|
merge_method: slerp |
|
base_model: inceptionai/jais-family-590m |
|
parameters: |
|
t: |
|
- filter: self_attn |
|
value: [0, 0.5, 0.3, 0.7, 1] |
|
- filter: mlp |
|
value: [1, 0.5, 0.7, 0.3, 0] |
|
- value: 0.5 |
|
dtype: bfloat16 |
|
``` |
|
|
|
## 💻 Usage |
|
|
|
/Due to the jais family tokenizer deployment with trust remote code, especially if handling Arabic, the following implementation is suggested for inferencing this merge model/ |
|
|
|
```python |
|
!pip install -qU transformers accelerate |
|
|
|
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline |
|
import torch |
|
|
|
# Model and message setup |
|
model_name = "Solshine/Jais-590m-merged" |
|
user_message = "Explain how transformers work in machine learning" # This can be any user input |
|
|
|
# Structure the message with role-content pairing for compatibility with Jais-chat format |
|
messages = [{"role": "user", "content": user_message}] |
|
|
|
# Initialize tokenizer with trust_remote_code for custom Arabic-English handling |
|
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True) |
|
|
|
# Check if tokenizer is valid |
|
if tokenizer is None: |
|
raise ValueError("Tokenizer initialization failed!") |
|
|
|
# Custom chat template including assistant role |
|
def custom_chat_template(messages): |
|
chat_prompt = "" |
|
for message in messages: |
|
role = message["role"] |
|
content = message["content"] |
|
chat_prompt += f"{role}: {content}\n" |
|
# Add assistant role to prompt the model's response |
|
chat_prompt += "assistant:" |
|
return chat_prompt |
|
|
|
# Generate the prompt |
|
prompt = custom_chat_template(messages) |
|
print(f"Generated prompt:\n{prompt}") |
|
|
|
# Initialize the model |
|
model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True) |
|
if model is None: |
|
raise ValueError("Model initialization failed!") |
|
|
|
# Move model to the appropriate device |
|
device = torch.device("cuda" if torch.cuda.is_available() else "cpu") |
|
model.to(device) |
|
|
|
# Initialize the text generation pipeline |
|
text_gen_pipeline = pipeline( |
|
"text-generation", |
|
model=model, |
|
tokenizer=tokenizer, |
|
device=device, |
|
torch_dtype=torch.float16, |
|
trust_remote_code=True |
|
) |
|
|
|
# Generate text |
|
try: |
|
outputs = text_gen_pipeline( |
|
prompt, |
|
max_new_tokens=256, |
|
do_sample=True, |
|
temperature=0.7, |
|
top_k=50, |
|
top_p=0.95, |
|
pad_token_id=tokenizer.eos_token_id # Ensure proper stopping |
|
) |
|
# Extract and print the assistant's response |
|
generated_text = outputs[0]["generated_text"] |
|
assistant_response = generated_text.split("assistant:")[1].strip() |
|
print(f"Assistant's response:\n{assistant_response}") |
|
except Exception as e: |
|
print(f"Error during text generation: {e}") |
|
|
|
``` |