OrpoGemma-2-9B-TR / README.md
selimc's picture
Update README.md
4aa95f6 verified
metadata
library_name: transformers
tags:
  - Turkish
  - TR
  - ORPO
datasets:
  - selimc/orpo-dpo-mix-TR-20k
language:
  - tr
base_model:
  - google/gemma-2-9b-it
license: gemma

image/png

OrpoGemma-2-9B-TR

OrpoGemma-2-9B-TR is a Turkish fine-tuned version of google/gemma-2-9b-it. It is trained using the ORPO Trainer on a subset of 1500 rows from the dataset selimc/orpo-dpo-mix-TR-20k.

Training Information

  • Base Model: google/gemma-2-9b-it

  • Fine-Tuning Technique: ORPO

  • Training Data: 1500 rows from selimc/orpo-dpo-mix-TR-20k

  • Training Time: 2.5 hours on NVIDIA H100

    QLoRA Configurations:

    • lora_r: 16
    • lora_alpha: 32
    • lora_dropout: 0.05

    ORPO Training Parameters

    • lr: 2e-6
    • epochs: 3
    • per_device_train_batch_size: 8
    • gradient_accumulation_steps: 4

📈 Training Curves

image/png

image/png

Model Capabilities

  • Produces fluent, coherent, and contextually appropriate text in Turkish.
  • Delivers detailed and informative responses to a wide range of instructions and question types.
  • May still produce incorrect or nonsensical outputs, user verification is recommended.

How to Use

from transformers import pipeline, BitsAndBytesConfig, AutoTokenizer
import torch

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_id = "selimc/OrpoGemma-2-9B-TR"

tokenizer = AutoTokenizer.from_pretrained(model_id)

pipe = pipeline(
    "text-generation",
    model=model_id,
    model_kwargs={"torch_dtype": torch.bfloat16 ,'quantization_config': bnb_config},
    tokenizer=tokenizer,
    device_map="auto"
)

messages = [
    {"role": "user", "content": "Gökyüzü neden mavi?"},
]

prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)

outputs = pipe(
    prompt,
    max_new_tokens=512,
    do_sample=True,
    eos_token_id=[pipe.tokenizer.convert_tokens_to_ids("<end_of_turn>"), pipe.tokenizer.eos_token_id],
    temperature=0.67,
)

generated_text = outputs[0]['generated_text']
response = generated_text[len(prompt):]
print(response)

Example 1

messages = [
    {"role": "user", "content": """Bir web sayfasından tüm URL’leri çeken bir Python fonksiyonu yazın ve nasıl çalıştığını açıklayın."""},
]
Bir web sayfasından tüm URL’leri çeken bir Python fonksiyonu yazalım ve nasıl çalıştığını açıklayalım.

```python
import requests

def get_urls_from_page(url):
  """
  
  Bir web sayfasından tüm URL'leri çeker.

  Args:
      url (str): Web sayfasının URL'i.

  Returns:
      list: Web sayfasındaki tüm URL'ler.
  """
  response = requests.get(url)
  response.raise_for_status()

  urls = []
  for link in response.html.find_all('a', href=True):
    urls.append(link['href'])

  return urls

# Örnek kullanım

web_page_url = 'https://www.example.com/'
all_urls = get_urls_from_page(web_page_url)
print(f"Bu web sayfasındaki {len(all_urls)} URL bulunmaktadır:\n{all_urls}")
```

**Fonksiyonun nasıl çalıştığı:**

1. **`requests` kütüphanesini içer:** Bu kütüphane web sayfalarına erişmek için kullanılır.
2. **`get_urls_from_page` fonksiyonunu tanımla:** 
   * Bu fonksiyon, bir web sayfasının URL'ini alır.
   * `requests.get()` kullanarak web sayfasına erişir ve `response.raise_for_status()` kullanarak HTTP durum kodunun 200-399 aralığında olup olmadığını kontrol eder.
   * `response.html` içine bir HTML belgesini saklar.
   * `response.html.find_all('a', href=True)` kullanarak, `href` atributuna sahip tüm `<a>` etiketlerini bulur. 
   * `urls` listesine URL'leri ekler.
   * `urls` listesini döndürür.

3. **Örnek kullanım:**

   * `web_page_url` değişkenine bir web sayfasının URL'ini atar.
   * `get_urls_from_page` fonksiyonunu kullanarak web sayfasından tüm URL'leri çeker.
   * `all_urls` listesini `print()` fonksiyonu kullanarak ekrana yazdır

Example 2

messages = [
    {
        "role": "system",
        "content":
          """
          Sen bir türkçe bilmece ustasısın. Görevin:
            - Sorulan bilmecelere mantıklı ve doğru cevaplar vermek
            - Bilmecenin çözümünü adım adım açıklamak
          """
    },
    {
        "role": "user",
        "content":
          """
            Kanadı var, kuş değil.
            Suda yüzer, gemi değil.
            Kuyruğu var, kedi değil.
            Bil bakalım, bu nedir?
          """
    },
]
Kanadı var, kuş değil, suda yüzer, gemi değil, kuyruğu var, kedi değil... Bu bir **balık**! 🐟