Bu repository, blog yazımda paylaştığım örneklerin kaynak kodlarını içermektedir.
- notebooks klasöründeki rephrasing.ipynb dosyasını çalıştırarak modellerin talimatlara ne kadar uyup nasıl Türkçe cümleler oluşturduğunu inceleyebilirsiniz.
- src klasörünün altında ise application.py ile çalıştırabileceğiniz basit bir sohbet uygulamasına göz atabilirsiniz.
Tüm uygulamalar Python 3.12
ile geliştirilmiştir.
Paketleri yüklemeden önce uygulamalar için sanal bir Python ortamı oluşturmanızı tavsiye ederim.
mkvirtualenv turkish-responding-benchmark
Sonrasında, gerekli olan paketleri indirmeniz gerekmektedir.
pip install -r requirements.txt
Kodlarda yerel ayarları bulundurmamak için modellerin konumlarını harici bir yapılandırma dosyasında tutmak istedim. Bu nedenle, testte kullanmak istediğiniz modellerin konumunu properties klasörünün altında local.ini
olarak oluşturmanız gerekiyor. Referans olarak test.ini dosyasına göz atabilirsiniz.
Örneğin Qwen2-7B quantized modelini Hugging Face reposundan indirip, indirdiğiniz konumu local.ini
dosyasında şu şekilde belirtebilirsiniz:
[REPHRASING_MODEL]
model_directory = ../../models/qwen2-7b-instruct-q8_0.gguf
[CHAT_MODEL]
model_directory = ../../models/qwen2-7b-instruct-q8_0.gguf
Gerekli paketleri kurduktan sonra, notebooks klasörüne gelip, jupyter-notebook platformuna girmeniz gerekiyor.
jupyter notebook
Sonrasında kodu baştan sona çalıştırıp modellerin performanslarını gözlemleyebilirsiniz.
P.S. Blog yazısında da bahsettiğim gibi, Llama modeli farklı spesifik token'lar kullandığı için, daha iyi performans için uyarlanan prompt'u kullanmanız gerekiyor.
Prompt'un farklı olan kısmı:
<|begin_of_text|>user
{question}<|eot_id|>"
<|begin_of_text|>assistant
Bu kısımda, uygulamayı başlatmak için streamlit'i de çalıştırmanız gerekiyor.
streamlit run application.py
Makinenizdeki donanıma bağlı olarak, soruların cevaplarını almaya başlayabilirsiniz!
Streamlit ile ilgili tüm detaylara application.py dosyasından, onun dışındaki tüm servislere ise service klasörünün altından ulaşabilirsiniz.
Rephrasing uygulamasında da bahsettiğim gibi, LLama modellerini kullanırken prompt'ta ve mesajların birleştirildiği kısımda (_combine_messages) özel token'ları değiştirmeniz gerekiyor.
<|im_start|> to <|begin_of_text|>
<|im_end|> to <|eot_id|>
Kodun standartlarını ve okunabilirliğini sağlamak için hem Jupyter hem de Python dosyalarını destekleyen pre-commit hookları da eklemek istedim.
Bunun için gerekli paketleri yüklemeniz gerekmektedir.
pip install -r requirements_dev.txt
Sonrasında, herhangi bir commit oluşturduğunuzda aktif olarak tarama yapacak olan hookları aktive etmeniz için pre-commit paketini çalıştırmamız gerekiyor.
pre-commit install
.pre-commit-config.yaml dosyasında gerekli olan tüm ayarlara ulaşabilirsiniz.
Bonus: Commit öncesinde de tüm taramaları yapmak için aşağıdaki komutu çalıştırabilirsiniz:
pre-commit run --all-files
İyi Eğlenceler!