Create README.md
Browse files
README.md
ADDED
@@ -0,0 +1,180 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
datasets:
|
3 |
+
- TFLai/Turkish-Alpaca
|
4 |
+
language:
|
5 |
+
- tr
|
6 |
+
library_name: peft
|
7 |
+
pipeline_tag: text-generation
|
8 |
+
license: apache-2.0
|
9 |
+
---
|
10 |
+
# (ALPHA) Turkish Instruct LLM Based On Facebook-XGLM
|
11 |
+
|
12 |
+
This is one of our early experimental models based on Facebook's XGLM, fine-tuned using PEFT loRA on a Turkish Instruction dataset. Our goal is to share a Turkish LLM model in the future.
|
13 |
+
|
14 |
+
The model provided originates from a checkpoint at the 5700th step.
|
15 |
+
|
16 |
+
## Inference
|
17 |
+
Please note, utilizing this model necessitates the download of substantial data files, necessitating a minimum of 24GB VRAM.
|
18 |
+
|
19 |
+
Given its experimental nature, it is very likely that this model can produce garbage (biased & wrong) output from time to time, so **use it with caution.**
|
20 |
+
|
21 |
+
In order to install PEFT modules, please visit:
|
22 |
+
* https://github.com/huggingface/peft
|
23 |
+
|
24 |
+
### Load the Model
|
25 |
+
```python
|
26 |
+
import torch
|
27 |
+
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
|
28 |
+
from peft import PeftModel
|
29 |
+
|
30 |
+
bnb_config = BitsAndBytesConfig(
|
31 |
+
load_in_4bit=True,
|
32 |
+
bnb_4bit_use_double_quant=True,
|
33 |
+
bnb_4bit_quant_type="nf4",
|
34 |
+
bnb_4bit_compute_dtype=torch.bfloat16
|
35 |
+
)
|
36 |
+
|
37 |
+
model = AutoModelForCausalLM.from_pretrained("facebook/xglm-7.5B",
|
38 |
+
quantization_config=bnb_config,
|
39 |
+
device_map="auto")
|
40 |
+
|
41 |
+
model = PeftModel.from_pretrained(model, "myzens/XGLM_TR_FineTune_alpha")
|
42 |
+
|
43 |
+
tokenizer = AutoTokenizer.from_pretrained("facebook/xglm-7.5B")
|
44 |
+
```
|
45 |
+
|
46 |
+
### Text Generation Examples
|
47 |
+
Here's a quick and dirty implementation of a post-processing function in case you want to get rid of any garbage letters etc (if any exists):
|
48 |
+
```python
|
49 |
+
import re
|
50 |
+
|
51 |
+
def post_process(text, how_many_sentences=5):
|
52 |
+
|
53 |
+
start_index = text.find("### Cevap: ") + len("### Cevap: ")
|
54 |
+
end_index = text.find("️", start_index)
|
55 |
+
extracted_text = text[start_index:end_index].strip()
|
56 |
+
|
57 |
+
sentences = extracted_text.split('.')
|
58 |
+
sentences = '.'.join(sentences[:how_many_sentences])
|
59 |
+
cleaned_text = ''.join(ch for ch in sentences if ch.isalnum() or ch.isspace() or ch == ".")
|
60 |
+
cleaned_text = cleaned_text.replace(" ", " ")
|
61 |
+
cleaned_text = re.sub('\.\.+', '.', cleaned_text)
|
62 |
+
cleaned_text = cleaned_text.strip()
|
63 |
+
|
64 |
+
return cleaned_text
|
65 |
+
```
|
66 |
+
|
67 |
+
#### Basic Sentiment Analysis
|
68 |
+
```python
|
69 |
+
PROMPT = """Aşağıda, daha fazla bağlam sağlayan bir girdi ile eşleştirilmiş bir görevi açıklayan bir talimat bulunmaktadır. İsteği uygun şekilde tamamlayan bir yanıt yazın.
|
70 |
+
### Talimat: Sana verilen cümleyi olumlu, olumsuz veya tarafsız olarak sınıflandır
|
71 |
+
### Giriş: Tamam iyi güzel kargo zamanında geliyor. HB ile ilgili bi sıkıntı yok. Ama bu ürün çok kullanışsız.
|
72 |
+
### Cevap:"""
|
73 |
+
|
74 |
+
inputs = tokenizer(PROMPT, return_tensors="pt")
|
75 |
+
input_ids = inputs["input_ids"].cuda()
|
76 |
+
|
77 |
+
generation_output = model.generate(
|
78 |
+
input_ids=input_ids,
|
79 |
+
temperature=0.1,
|
80 |
+
top_p=0.2,
|
81 |
+
repetition_penalty=1.2,
|
82 |
+
max_length=128,
|
83 |
+
pad_token_id=tokenizer.pad_token_id,
|
84 |
+
eos_token_id=tokenizer.eos_token_id
|
85 |
+
)
|
86 |
+
|
87 |
+
for generated_text in generation_output:
|
88 |
+
story = tokenizer.decode(generated_text, skip_special_tokens=True)
|
89 |
+
print(post_process(story, 1)) # Olumsuz
|
90 |
+
```
|
91 |
+
|
92 |
+
#### General
|
93 |
+
|
94 |
+
Use `how_many_sentences = -1`.
|
95 |
+
|
96 |
+
```python
|
97 |
+
PROMPT = """Aşağıda, daha fazla bağlam sağlayan bir girdi ile eşleştirilmiş bir görevi açıklayan bir talimat bulunmaktadır. İsteği uygun şekilde tamamlayan bir yanıt yazın.
|
98 |
+
### Talimat:
|
99 |
+
### Giriş: Sanatın toplum için önemini açıkla.
|
100 |
+
### Cevap:"""
|
101 |
+
|
102 |
+
inputs = tokenizer(PROMPT, return_tensors="pt")
|
103 |
+
input_ids = inputs["input_ids"].cuda()
|
104 |
+
|
105 |
+
generation_output = model.generate(
|
106 |
+
input_ids=input_ids,
|
107 |
+
temperature=0.8,
|
108 |
+
top_p=0.9,
|
109 |
+
repetition_penalty=1.2,
|
110 |
+
max_length=512,
|
111 |
+
pad_token_id=tokenizer.pad_token_id,
|
112 |
+
eos_token_id=tokenizer.eos_token_id
|
113 |
+
)
|
114 |
+
"""
|
115 |
+
Sanat insanlığın gelişimine katkıda bulunan önemli bir araçtır ve birçok farklı alanda kullanılabilir.
|
116 |
+
Örneğin sanat eserleri görsel olarak bilgiyi aktarmak veya duyguları ifade etmek gibi çeşitli amaçlar sağlayabilirler.
|
117 |
+
Ayrıca sanatçılar yaratıcılıklarını kullanarak yeni fikirler üretebilmelerine olanak tanıyarak toplumun ilerlemesine yardımcı olabilirler.
|
118 |
+
Son olarak sanatsal ürünler insanlar arasında iletişim kurmaya da yardımcı olurken aynı zamanda kültürel etkileşimde de büyük rol oynarlar.
|
119 |
+
Bu nedenle sanatın toplumsal faydası yadsınamazdır
|
120 |
+
"""
|
121 |
+
```
|
122 |
+
|
123 |
+
#### Suggestions
|
124 |
+
```python
|
125 |
+
PROMPT = """Aşağıda, daha fazla bağlam sağlayan bir girdi ile eşleştirilmiş bir görevi açıklayan bir talimat bulunmaktadır. İsteği uygun şekilde tamamlayan bir yanıt yazın.
|
126 |
+
### Talimat:
|
127 |
+
### Giriş: Ders çalışmak için önerilerde bulun.
|
128 |
+
### Cevap:"""
|
129 |
+
|
130 |
+
generation_output = model.generate(
|
131 |
+
input_ids=input_ids,
|
132 |
+
temperature=0.7,
|
133 |
+
top_p=0.9,
|
134 |
+
repetition_penalty=1.2,
|
135 |
+
max_length=512,
|
136 |
+
pad_token_id=tokenizer.pad_token_id,
|
137 |
+
eos_token_id=tokenizer.eos_token_id
|
138 |
+
)
|
139 |
+
|
140 |
+
"""
|
141 |
+
1. Çalışmak istediğiniz konuyu belirleyin ve ders çalışmaya başlamadan önce o konudaki kaynakları araştırın.
|
142 |
+
2. Dersi takip etmek için düzenli olarak zaman ayırmaya çalışın.
|
143 |
+
3. Birden çok görev yapmayı deneyin - bu sayede her gün birkaç saatinizi verimli kullanabilirsiniz.
|
144 |
+
4. Herhangi bir soru veya sorunla karşılaştığınız anda öğretmeninize danışın.
|
145 |
+
5. Kendinizi motive etmenin yollarına odaklanın - böylece kendinize güvenebilirsiniz ve motivasyonunuzu sürdürmek kolaylaşır.
|
146 |
+
6. Öğrenme sürecinde hata yapmaktan korkmayın! Hatalar öğrenmenin doğal bir parçasıdır; ancak yanlış yaptığınızda düzeltmeniz gereken şeylerin farkına varmanız önemlidir.
|
147 |
+
7. Başarısızlık duygusunu kabul edin ve başarının yolunu bulmanıza yardımcı olacak yeni yollar arayın.
|
148 |
+
8. Başkalarına yardım etmeye çalışarak kendi gelişiminize katkı sağlayın.
|
149 |
+
9. Sınavlara hazırlık yaparken dikkat dağıtıcı aktivitelerden kaçının.
|
150 |
+
10. Sonunda başarılı olduğunuzun garantisini vermeyin. Bu sadece sizi stresli hale getirebilir.
|
151 |
+
11. Deneme sınavlarını tekrarlayın ve sonuçları değerlendirerek ilerlemeyi izleyin.
|
152 |
+
12. Daha iyi sonuçlar elde etme yolunda adım atmak için sabırlı olun.
|
153 |
+
13. Yeni bilgiler öğrendiğinizde bunları paylaşmayı unutmayın.
|
154 |
+
14. Motivasyonunu kaybetmekten korkan öğrencilerle iletişim kurmaktan çekinmeyin.
|
155 |
+
15. Soru sorduğunuzda olumlu geri bildirim almak önemli olduğundan emin olun.
|
156 |
+
16. Arkadaşlarınızla birlikte çalışırken destekleyici olmakta fayda vardır.
|
157 |
+
17. Öğretmeniniz tarafından verilen ödevleri eksiksiz yapın.
|
158 |
+
18. Dikkat dağıtan diğer etkinliklerden uzak durun.
|
159 |
+
19. Zaman yönetimini öğrenin ve planlı hareket ederek zamanı etkili kullanın.
|
160 |
+
20. Uyku düzenini koruyun ve sağlıklı beslenmeye özen gösterin.
|
161 |
+
21. Stresle başa çıkma becerilerinizi geliştirin.
|
162 |
+
22. Hayatınızda başkalarının da sizin gibi zorluklar yaşadığını hatırlayın.
|
163 |
+
23. Farkındalık yaratmak için farklı yöntemler deneyerek zihinsel sağlığınızı korumaya çalışın.
|
164 |
+
24. Eğer yeterince konsantre olamıyorsanız dinlenmeye izin verin.
|
165 |
+
"""
|
166 |
+
```
|
167 |
+
|
168 |
+
### Future Steps
|
169 |
+
1) We are aiming to decrease the inference cost while maintaining the quality in the outputs.
|
170 |
+
2) We'll continue to improve our dataset.
|
171 |
+
|
172 |
+
### Contact
|
173 |
+
|
174 |
+
We would like to thank [Ünver Çiftçi](https://www.linkedin.com/in/unverciftci/) who has connected us in the first place.
|
175 |
+
|
176 |
+
| | Task | LinkedIn | GitHub |
|
177 |
+
|:---:|:---:|:---:|:---:|
|
178 |
+
| Kaan Bıçakcı | Training + Data Preprocessing | [Contact](https://www.linkedin.com/in/kaanbicakci/) | https://github.com/Frightera |
|
179 |
+
| Talha Rüzgar Akkuş | Data Collection + General Idea | [Contact](https://www.linkedin.com/in/talha-r%C3%BCzgar-akku%C5%9F-1b5457264/) | https://github.com/LegallyCoder |
|
180 |
+
| Ethem Yağız Çalık | Data Collection + General Idea | [Contact](https://www.linkedin.com/in/ethem-ya%C4%9F%C4%B1z-%C3%A7al%C4%B1k-799a73275/) | https://github.com/Weyaxi |
|