peft safetensors xglm text-generation tr dataset:TFLai/Turkish-Alpaca license:apache-2.0 region:us
---
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 |