File size: 8,019 Bytes
6b22dfa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
---
datasets:
- TFLai/Turkish-Alpaca
language:
- tr
library_name: peft
pipeline_tag: text-generation
license: apache-2.0
---
# (ALPHA) Turkish Instruct LLM Based On Facebook-XGLM

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.

The model provided originates from a checkpoint at the 5700th step.

## Inference
Please note, utilizing this model necessitates the download of substantial data files, necessitating a minimum of 24GB VRAM.

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.** 

In order to install PEFT modules, please visit:
* https://github.com/huggingface/peft

### Load the Model
```python
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
from peft import PeftModel

bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_use_double_quant=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16
)

model = AutoModelForCausalLM.from_pretrained("facebook/xglm-7.5B", 
                                             quantization_config=bnb_config,
                                             device_map="auto")

model = PeftModel.from_pretrained(model, "myzens/XGLM_TR_FineTune_alpha")

tokenizer = AutoTokenizer.from_pretrained("facebook/xglm-7.5B")
```

### Text Generation Examples
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):
```python
import re

def post_process(text, how_many_sentences=5):

    start_index = text.find("### Cevap: ") + len("### Cevap: ")
    end_index = text.find("️", start_index)
    extracted_text = text[start_index:end_index].strip()

    sentences = extracted_text.split('.')
    sentences = '.'.join(sentences[:how_many_sentences])
    cleaned_text = ''.join(ch for ch in sentences if ch.isalnum() or ch.isspace() or ch == ".")
    cleaned_text = cleaned_text.replace("  ", " ")
    cleaned_text = re.sub('\.\.+', '.', cleaned_text)
    cleaned_text = cleaned_text.strip()

    return cleaned_text
```

#### Basic Sentiment Analysis
```python
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.
### Talimat: Sana verilen cümleyi olumlu, olumsuz veya tarafsız olarak sınıflandır 
### 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.
### Cevap:"""

inputs = tokenizer(PROMPT, return_tensors="pt")
input_ids = inputs["input_ids"].cuda()

generation_output = model.generate(
    input_ids=input_ids,
    temperature=0.1,
    top_p=0.2,
    repetition_penalty=1.2,
    max_length=128,
    pad_token_id=tokenizer.pad_token_id,
    eos_token_id=tokenizer.eos_token_id
)

for generated_text in generation_output:
    story = tokenizer.decode(generated_text, skip_special_tokens=True)
    print(post_process(story, 1)) # Olumsuz
```

#### General

Use `how_many_sentences = -1`.

```python
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.
### Talimat: 
### Giriş: Sanatın toplum için önemini açıkla.
### Cevap:"""

inputs = tokenizer(PROMPT, return_tensors="pt")
input_ids = inputs["input_ids"].cuda()

generation_output = model.generate(
    input_ids=input_ids,
    temperature=0.8,
    top_p=0.9,
    repetition_penalty=1.2,
    max_length=512,
    pad_token_id=tokenizer.pad_token_id,
    eos_token_id=tokenizer.eos_token_id
)
"""
Sanat insanlığın gelişimine katkıda bulunan önemli bir araçtır ve birçok farklı alanda kullanılabilir.
Örneğin sanat eserleri görsel olarak bilgiyi aktarmak veya duyguları ifade etmek gibi çeşitli amaçlar sağlayabilirler.
Ayrıca sanatçılar yaratıcılıklarını kullanarak yeni fikirler üretebilmelerine olanak tanıyarak toplumun ilerlemesine yardımcı olabilirler.
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.
Bu nedenle sanatın toplumsal faydası yadsınamazdır
"""
```

#### Suggestions
```python
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.
### Talimat: 
### Giriş: Ders çalışmak için önerilerde bulun.
### Cevap:"""

generation_output = model.generate(
    input_ids=input_ids,
    temperature=0.7,
    top_p=0.9,
    repetition_penalty=1.2,
    max_length=512,
    pad_token_id=tokenizer.pad_token_id,
    eos_token_id=tokenizer.eos_token_id
)

"""
1. Çalışmak istediğiniz konuyu belirleyin ve ders çalışmaya başlamadan önce o konudaki kaynakları araştırın.
2. Dersi takip etmek için düzenli olarak zaman ayırmaya çalışın.
3. Birden çok görev yapmayı deneyin - bu sayede her gün birkaç saatinizi verimli kullanabilirsiniz.
4. Herhangi bir soru veya sorunla karşılaştığınız anda öğretmeninize danışın.
5. Kendinizi motive etmenin yollarına odaklanın - böylece kendinize güvenebilirsiniz ve motivasyonunuzu sürdürmek kolaylaşır.
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.
7. Başarısızlık duygusunu kabul edin ve başarının yolunu bulmanıza yardımcı olacak yeni yollar arayın.
8. Başkalarına yardım etmeye çalışarak kendi gelişiminize katkı sağlayın.
9. Sınavlara hazırlık yaparken dikkat dağıtıcı aktivitelerden kaçının.
10. Sonunda başarılı olduğunuzun garantisini vermeyin. Bu sadece sizi stresli hale getirebilir.
11. Deneme sınavlarını tekrarlayın ve sonuçları değerlendirerek ilerlemeyi izleyin.
12. Daha iyi sonuçlar elde etme yolunda adım atmak için sabırlı olun.
13. Yeni bilgiler öğrendiğinizde bunları paylaşmayı unutmayın.
14. Motivasyonunu kaybetmekten korkan öğrencilerle iletişim kurmaktan çekinmeyin.
15. Soru sorduğunuzda olumlu geri bildirim almak önemli olduğundan emin olun.
16. Arkadaşlarınızla birlikte çalışırken destekleyici olmakta fayda vardır.
17. Öğretmeniniz tarafından verilen ödevleri eksiksiz yapın.
18. Dikkat dağıtan diğer etkinliklerden uzak durun.
19. Zaman yönetimini öğrenin ve planlı hareket ederek zamanı etkili kullanın.
20. Uyku düzenini koruyun ve sağlıklı beslenmeye özen gösterin.
21. Stresle başa çıkma becerilerinizi geliştirin.
22. Hayatınızda başkalarının da sizin gibi zorluklar yaşadığını hatırlayın.
23. Farkındalık yaratmak için farklı yöntemler deneyerek zihinsel sağlığınızı korumaya çalışın.
24. Eğer yeterince konsantre olamıyorsanız dinlenmeye izin verin.
"""
```

### Future Steps
1) We are aiming to decrease the inference cost while maintaining the quality in the outputs.
2) We'll continue to improve our dataset.

### Contact

We would like to thank [Ünver Çiftçi](https://www.linkedin.com/in/unverciftci/) who has connected us in the first place.

|  | Task | LinkedIn | GitHub |
|:---:|:---:|:---:|:---:|
| Kaan Bıçakcı | Training + Data Preprocessing | [Contact](https://www.linkedin.com/in/kaanbicakci/) | https://github.com/Frightera |
| 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 |
| 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 |