Update README.md
Browse files
README.md
CHANGED
@@ -1,3 +1,79 @@
|
|
1 |
-
---
|
2 |
-
license: apache-2.0
|
3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
license: apache-2.0
|
3 |
+
language:
|
4 |
+
- he
|
5 |
+
- en
|
6 |
+
---
|
7 |
+
|
8 |
+
This is my attempt at instruction tuning for [Hebrew-Mistral-7B](https://huggingface.co/yam-peleg/Hebrew-Mistral-7B).
|
9 |
+
|
10 |
+
The model hallucinates a lot. Please generate 4-5 times for each prompt to find the best generation.
|
11 |
+
|
12 |
+
Also, note that this model does not have any moderation mechanisms.
|
13 |
+
|
14 |
+
## Usage
|
15 |
+
|
16 |
+
Install dependencies
|
17 |
+
```
|
18 |
+
pip install -q -U transformers
|
19 |
+
pip install accelerate
|
20 |
+
pip install -q sentencepiece
|
21 |
+
pip install protobuf
|
22 |
+
```
|
23 |
+
|
24 |
+
```python
|
25 |
+
import torch
|
26 |
+
from transformers import AutoTokenizer, AutoModelForCausalLM, StoppingCriteria, TextStreamer
|
27 |
+
|
28 |
+
model_id = "ronmasas/Hebrew-Mistral-7B-Instruct-v0.1"
|
29 |
+
|
30 |
+
# Load model and tokenizer
|
31 |
+
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="cuda:0")
|
32 |
+
tokenizer = AutoTokenizer.from_pretrained(model_id)
|
33 |
+
|
34 |
+
model = model.half()
|
35 |
+
|
36 |
+
# Define special tokens
|
37 |
+
END_TOKEN = 64003 # -> [/INST]
|
38 |
+
B_INST, E_INST = "[INST]", "[/INST]"
|
39 |
+
SYSTEM_PROMPT = "A conversation between a human and an AI assistant."
|
40 |
+
|
41 |
+
class EosListStoppingCriteria(StoppingCriteria):
|
42 |
+
def __init__(self, eos_sequence = [END_TOKEN]):
|
43 |
+
self.eos_sequence = eos_sequence
|
44 |
+
def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor, **kwargs) -> bool:
|
45 |
+
last_ids = input_ids[:,-len(self.eos_sequence):].tolist()
|
46 |
+
return self.eos_sequence in last_ids
|
47 |
+
|
48 |
+
def stream(user_prompt):
|
49 |
+
prompt = f"{SYSTEM_PROMPT} {B_INST} {user_prompt.strip()} {E_INST}\n"
|
50 |
+
inputs = tokenizer([prompt], return_tensors="pt").to("cuda:0")
|
51 |
+
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
|
52 |
+
_ = model.generate(**inputs, streamer=streamer, max_new_tokens=256, temperature=0.7, do_sample=True, stopping_criteria = [EosListStoppingCriteria()])
|
53 |
+
|
54 |
+
stream("ืืชืื ืืืชื ืชืืื ื-ืื ืคืื ืขื ืื ืฉืืืื ืืฉืืืจืจ ืืช ืืืืื Hebrew Mistral 7B.")
|
55 |
+
"""
|
56 |
+
ืื ืื,
|
57 |
+
|
58 |
+
ืื ื ืจืืฆื ืืืืืืช ืื ืืงืจื ืื ืขื ืืขืืืื ืืงืฉื ืฉืืฉืงืขืช ืืืื Hebrew Mistral 7B. ืืืืื ืฉืื ืืื ืืฆืืจืช ืืืคืช ืฉื ืืืืืช ืืืื ื ืืื ื ืืกืืจ ืชืืื ืขื ืืืื ืืืืืฉืจืื ืฉืืืฉืงืขื ืืคืืชืืื. ืืืืืืช ืืืชืืื ืขื ืฉืคื ืืืืฆืขืืช ืคืืืคืืจืื ืื ืืชืงืืืช ืืืืฉืืช ืืืืชื ืืฉื ืจืื ืืจืขื ื ืืืืขืื ืืืืชืจ ืขืืืจ ืืงืืืื ืืืื. ืชืืื ืขื ืื ืืขืืืื ืืงืฉื ืืืืืื ืฉืืืฉืงืขื ืืคืจืืืงื ืื, ืืื ืืืืช ืืืืจ ืขืื ืืื ืืืฉืคืืข.
|
59 |
+
|
60 |
+
ืฉืื ืชืืื ืืงืจื ืื,
|
61 |
+
[ืฉืื]
|
62 |
+
"""
|
63 |
+
```
|
64 |
+
|
65 |
+
|
66 |
+
```python
|
67 |
+
stream("ืื ืื ืืจื ืื ื?")
|
68 |
+
"""
|
69 |
+
ืืจื ืื ื, ืืืืืขื ืื ืืฉื ืืก ืืจื ืื ื, ืืื ืืก ืฉื ืืื ืขื ืืื ืจืฉืืช ืืงืืืืช (ืขืืจ, ืืืื ืื ืืืืจ) ืขืืืจ ืฉืืจืืชืื ืืื ืฆืืคืืืื ืฉืืื ืืกืคืงืช, ืืืื ืืื ืื, ืืจืืืืช ืืฉืืจืืชืื. ืื ืืืื ืืืืื ืืืกืื ืขื ืืื ืกื, ืจืืืฉ ืืฉืืจืืชืื (ืืืื ืืื).
|
70 |
+
"""
|
71 |
+
|
72 |
+
stream("ืืชืื ืฉืืืฉ ืืืชืจืืช ืืืืื ืขื ืืฉืืืืช ืืืกืืฃ ืฆืืื ืฉื ืืขืื ืืืื.")
|
73 |
+
"""
|
74 |
+
1. ืฉืืืจืช ืชืืื ื ืืืืื ืช ืฉื ืืืืช ืืืื ืืืืฆืขืืช ืืืกืืฃ ืฆืืื
|
75 |
+
2. ืืฉืคืขืืช ืืจืืืืชืืืช ืืจืืืืช ืืืื ืฉื ืกืืจืื ืืืกืืฃ ืฆืืื ืฉื ืืืืช ืืืื
|
76 |
+
3. ืืืฆื ืืืกืืฃ ืฆืืื ืฉื ืืืืช ืืืื ืขืืืจ ืืฉืืจ ืืืืืื ื ืืืจืืืืช ืืขืื ืืืื ืืืืืืืช.
|
77 |
+
"""
|
78 |
+
```
|
79 |
+
|