Yapay Zekâ Araçları 101

Hugging Face LLM Araçları için Tam Başlangıç Rehberi

mm
Unite.AI sitesini Google'daki tercih ettiğiniz kaynaklara ekleyin
HUGGING FACE - COMPLETE GUIDE

Hugging Face, bir AI araştırma laboratuvarı ve merkezi olarak akademisyenler, araştırmacılar ve meraklılardan oluşan bir topluluğu oluşturmuştur. Kısa bir süre içinde, Hugging Face AI alanında önemli bir varlık göstermiştir. Teknoloji devleri arasında Google (GOOGL ), Amazon (AMZN ) ve Nvidia (NVDA ), AI startup’ı Hugging Face’e önemli yatırımlar yaparak, değerini 4.5 milyar dolar olarak belirlemiştir.

Bu rehberde, transformer’ları, LLM’leri ve Hugging Face kütüphanesinin açık kaynaklı AI topluluğunu desteklemedeki önemli rolünü tanıtacağız. Ayrıca, Hugging Face’in temel özelliklerini, pipeline’ları, veri setlerini, modelleri ve daha fazlasını Python örnekleri ile ele alacağız.

NLP’de Transformer’lar

2017 yılında, Cornell Üniversitesi, transformer’lar hakkında etkili bir makale yayınladı. Bu, NLP’de kullanılan derin öğrenme modelleridir. Bu keşif, ChatGPT gibi büyük dil modellerinin geliştirilmesini hızlandırdı.

Büyük dil modelleri veya LLM’ler, transformer’ları kullanarak insan benzeri metin oluşturabilen AI sistemleridir. Ancak, bu modelleri oluşturmak pahalı olabilir ve genellikle milyonlarca dolar gerektirir, bu da erişilebilirliğini büyük şirketlerle sınırlar.

Hugging Face, 2016 yılında kuruldu ve NLP modellerinin herkes tarafından erişilebilir olmasını hedefliyor. Ticari bir şirket olmasına rağmen, Hugging Face, transformer modellerini uygun fiyatlı olarak inşa edebilmeleri ve kullanabilmeleri için insanların ve organizasyonların faydalanabileceği bir dizi açık kaynaklı kaynak sunuyor. Makine öğrenimi, bilgisayarların desenleri tanıyarak görevleri gerçekleştirmesini öğretmektir, derin öğrenme ise makine öğreniminin bir alt kümesidir ve bağımsız olarak öğrenen bir ağ oluşturur. Transformer’lar, derin öğrenme mimarilerinin bir türüdür ve girdi verilerini etkili ve esnek bir şekilde kullanır, bu nedenle büyük dil modelleri oluşturmak için popüler bir seçimdir çünkü daha az eğitim süresi gerektirir.

Hugging Face’in NLP ve LLM Projelerini Nasıl Kolaylaştırdığı

Hugging Face Ekosistemi - Modeller, veri setleri, metrikler, transformer'lar, hızlandırıcılar, tokenizatörler

Hugging Face, LLM’lerle çalışmayı kolaylaştırmıştır:

  1. Seçebileceğiniz önceden eğitilmiş modellerin bir dizi sunar.
  2. Modelleri özel ihtiyaçlarınıza göre ayarlayabilmeniz için araçlar ve örnekler sağlar.
  3. Farklı ortamlarda kolayca dağıtım seçenekleri sunar.

Hugging Face aracılığıyla sunulan harika bir kaynak, Açık LLM Liderlik Tablosudır. Bu, büyük dil modellerinin ve sohbet botlarının verimliliğini sistemli bir şekilde izleyen, sıralayan ve değerlendiren kapsamlı bir platformdur ve açık kaynaklı alanda yapılan ilerlemeleri analiz eder.
LLM Benchmarks, modelleri dört metriğe göre değerlendirir:

  • AI2 Reasoning Challenge (25-shot) — ilkokul bilim müfredatına ilişkin sorular.
  • HellaSwag (10-shot) — insanlara basit gelen, ancak gelişmiş modeller için zor olan ortak akıl sınavı.
  • MMLU (5-shot) — metin modelinin 57 farklı alanda, temel matematik, hukuk ve bilgisayar bilimi dahil, uzmanlığını değerlendiren çok yönlü bir değerlendirme.
  • TruthfulQA (0-shot) — modelin sık karşılaşılan yanlış bilgileri tekrarlayıp tekrarlamadığını belirleyen bir araç.

Bu benchmark’lar, “25-shot”, “10-shot”, “5-shot” ve “0-shot” terimlerini kullanır ve modelin değerlendirme sırasında aldığı.prompt örneklerinin sayısını gösterir. “Az-shot” paradigmalarında, modellere cevaplarını yönlendirmek için birkaç örnek verilir, “0-shot” durumunda ise modellere hiçbir örnek verilmez ve yalnızca önceden var olan bilgilerine dayanarak cevap vermeleri gerekir.

Hugging Face’in Bileşenleri

Pipeline’lar

Hugging Face’in transformer’ları kütüphanesindeki ‘pipeline’lar’, önceden eğitilmiş modellerin kolay kullanımını sağlayan bir özelliktir. various görevler için sezgisel bir API sağlar, bunlar arasında duygu analizi, soru-cevap, masked dil modelleme, adlandırılmış varlık tanıma ve özetleme bulunur.

Pipeline’lar, üç temel Hugging Face bileşenini entegre eder:

  1. Tokenizatör: Modelin anlayabileceği formata dönüştürmek için metninizi hazırlar.
  2. Model: Pipeline’ın kalbidir ve önceden işlenmiş girdilere dayalı gerçek tahminleri yapar.
  3. Sonra İşlemci: Modelin ham tahminlerini insan tarafından okunabilir forma dönüştürür.

Bu pipeline’lar, geniş kod yazma ihtiyacını azaltır ve çeşitli NLP görevleri için kullanıcı dostu bir arayüz sunar.

Hugging Kütüphanesini Kullanarak Transformer Uygulamaları

Hugging Face kütüphanesinin bir özelliği, transformer’ları kullanarak NLP görevlerini basitleştiren Transformer’lar kütüphanesidir. Kütüphaneyi yüklemek ve içe aktarmak için aşağıdaki komutları kullanın:

[kod dili=”Python”]
pip install -q transformers
from transformers import pipeline
[/kod]

Bunu yaptıktan sonra, duygu analizi gibi NLP görevlerini gerçekleştirmeye başlayabilirsiniz. Kütüphanenin güçlü pipeline() fonksiyonu, diğer pipeline’ları kapsayan bir merkez olarak görev yapar ve görev özgü uygulamaları ses, görüntü ve çok modlu alanlarda kolaylaştırır.

Pratik Uygulamalar

Metin Sınıflandırma

Metin sınıflandırma, Hugging Face’in pipeline() fonksiyonu ile kolayca gerçekleştirilebilir. Bir metin sınıflandırma pipeline’ı başlatmak için:

[kod dili=”Python”]
classifier = pipeline(“metin-sınıflandırma”)
[/kod]

Elle tutma deneyimi için, bir dize veya dize listesini pipeline’a besleyin ve tahminleri alın, bunları Python’un Pandas kütüphanesi ile güzel bir şekilde görselleştirebilirsiniz. Aşağıdaki Python kodu bunu gösterir:

[kod dili=”Python”]
cümleler = [“AI dünyasına hoş geldiniz.”,
“Umarım sizi hayal kırıklığına uğratmaz.”]

# Her cümle için sınıflandırma sonuçlarını alın
sonuçlar = classifier(cümleler)

# Her sonuç için etiketi ve puanı yazdırın
for i, sonuç in enumerate(sonuçlar):
print(f”Sonuç {i + 1}:”)
print(f” Etiket: {sonuç[‘etiket’]}”)
print(f” Puan: {round(sonuç[‘puan’], 3)}\n”)
[/kod]

Çıktı

[kod dili=”Bash”]
Sonuç 1:
Etiket: POZİTİF
Puan: 1.0

Sonuç 2:
Etiket: POZİTİF
Puan: 0.996
[/kod]

Adlandırılmış Varlık Tanıma (NER)

NER, metinden gerçek dünya nesneleri olan adlandırılmış varlıkları çıkarmak için kullanılır. NER pipeline’ı ile bu varlıkları etkili bir şekilde tanımlayabilirsiniz:

[kod dili=”Python”]
ner_tagger = pipeline(“ner”, aggregation_strategy=”simple”)
metin = “Elon Musk SpaceX’ (SPCX ) in CEO’sudur.”
çıktılar = ner_tagger(metin)
print(çıktılar)
[/kod]

Çıktı

[kod dili=”Bash”] Elon Musk: KİŞİ, SpaceX: KURULUŞ [/kod]

Soru-Cevap

Soru-cevap, belirli bir bağlamdan spesifik sorulara cevaplar çıkarmayı içerir. Bir soru-cevap pipeline’ı başlatın ve bağlamı ve soruyu girin:

[kod dili=”Python”]
reader = pipeline(“question-answering”)
metin = “Hugging Face, NLP için araçlar üreten bir şirkettir. New York’ta kurulmuştur ve 2016 yılında kurulmuştur.”
soru = “Hugging Face nerede kuruldu?”
çıktılar = reader(question=soru, context=metin)
print(çıktılar)
[/kod]

Çıktı

[kod dili=”Bash”] { ‘score’: 0.998, ‘start’: 51, ‘end’: 60, ‘answer’: ‘New York’ } [/kod]

Hugging Face’in pipeline() fonksiyonu, metin sınıflandırma, NER ve soru-cevap gibi görevler için önceden oluşturulmuş pipeline’lar sunar. Aşağıdaki tabloda daha fazla görev ve pipeline tanımlayıcıları listelenmiştir:

Görev Açıklama Pipeline Tanımlayıcı
Metin Oluşturma Verilen bir promot’a dayalı metin oluşturur pipeline(görev=”metin-oluşturma”)
Özetleme Uzun metinleri veya belgeleri özetler pipeline(görev=”özetleme”)
Görüntü Sınıflandırma Giriş görüntüsünü etiketler pipeline(görev=”görüntü-sınıflandırma”)
Ses Sınıflandırma Ses verilerini kategoriler pipeline(görev=”ses-sınıflandırma”)
Görsel Soru-Cevap Görüntü ve soru ile cevap verir pipeline(görev=”görsel-soru-cevap”)

 

Ayrıntılı açıklamalar ve daha fazla görev için, lütfen Hugging Face’in pipeline belgelerine bakın.

Hugging Face’in Rust’a Odaklanmasının Nedeni

Hugging Face Safetensors ve Tokenizatör Rust

Hugging Face Safetensors ve Tokenizatör GitHub Sayfası

Hugging Face (HF) ekosistemi, safetensors ve tokenizatörler gibi kütüphanelerde Rust’u kullanmaya başlamıştır.

Hugging Face ayrıca yakın zamanda, Rust ile oluşturulan bir makine öğrenimi çerçevesi olan Candle adlı yeni bir framework çıkardı. Geleneksel framework’lerin aksine, Candle Rust ile inşa edilmiştir. Rust’u kullanma amacı, performansı artırmak, kullanıcı deneyimini basitleştirmek ve GPU operasyonlarını desteklemektir.

Candle’ın ana amacı, sunucusuz çıkarımı kolaylaştırmak ve hafif ikili dosyaların dağıtımını mümkün kılmaktır, bu da Python’ın üretim iş yüklerinden kaynaklanan gecikmelerini ortadan kaldırır. Bu framework, PyTorch gibi büyük ve yavaş olan tam makine öğrenimi framework’lerinin oluşturduğu sorunların üstesinden gelmek için bir çözümdür.

Rust neden Python’dan daha çok tercih ediliyor, birlikte keşfedelim:

  1. Hız ve Performans – Rust, Python’dan daha hızlıdır ve makine öğrenimi framework’lerinde daha hızlı yürütme sağlar. Python’ın Global Interpreter Lock (GIL) nedeniyle performansı bazen yavaşlayabilir, ancak Rust bu sorundan muzdarip değildir, böylece görevlerin daha hızlı yürütülmesini sağlar.
  2. Güvenlik – Rust, bir çöp toplama olmadan bellek güvenliği garantileri sağlar, bu da paralel sistemlerin güvenliğini sağlamak için çok önemlidir. Bu, özellikle safetensors gibi veri yapılarını işlerken güvenlik öncelikli alanlarda kritik öneme sahiptir.

Safetensors

Safetensors, Rust’un hız ve güvenlik özelliklerinden yararlanmaktadır. Safetensors, tensörlerin manipülasyonunu içerir, bu karmaşık bir matematiksel varlıkdır ve Rust, bu işlemlerin hem hızlı hem de güvenli olmasını sağlar, bu da veri yapılarını işlerken ortaya çıkabilecek hataları ve güvenlik sorunlarını önler.

Tokenizatör

Tokenizatörler, cümleleri veya ifadeleri daha küçük birimler olan kelimelere veya terimlere ayırır. Rust, bu işlemin yürütme süresini hızlandırır, böylece doğal dil işleme görevlerinin verimliliğini artırır.

Hugging Face’in tokenizatörünün temelinde, kelime seviyesi ve karakter seviyesi tokenizasyon arasında bir denge sağlayan alt-sözcük tokenizasyonu kavramı yatmaktadır. Bu, bilgiyi korurken sözcük dağarcığının boyutunu optimize eder. Alt-sözcükler oluşturur, Örneğin “##ing” ve “##ed”, anlamsal zenginliği korurken sözcük dağarcığını şişirmekten kaçınır.

Alt-sözcük tokenizasyonu, dil kalıplarını analiz etmek için geniş metin koleksiyonlarında kapsamlı bir eğitim aşaması gerektirir, yalnızca ön ek ve son ek kurallarına bağlı kalmaz, etkili bir alt-sözcük tokenizatörü tasarlamak için dil kalıplarının derinlemesine bir analizini gerektirir. Oluşturulan tokenizatör, yeni kelimeleri alt-sözcüklere ayırarak yüksek bir anlamsal anlayış seviyesini korur.

Tokenizasyon Bileşenleri

Tokenizatörler kütüphanesi, tokenizasyon işlemini birden fazla adıma ayırır, her biri tokenizasyonun farklı bir yönünü ele alır. Bu bileşenleri keşfedelim:

  • Normalleştirici: Giriş dizesine ilk dönüşümleri uygular, gerekli ayarlamaları yapar, bunlar arasında küçük harf dönüşümü, Unicode normalleştirme ve stripping bulunur.
  • Ön-Tokenizatör: Giriş dizesini ön-segmentlere ayırır, bu ayrım önceden tanımlanmış kurallara dayanır, Örneğin boşluklarla ayrılmış kelimeler.
  • Model: Alt-sözcüklerin keşfedilmesini ve oluşturulmasını denetler, bu, girdi verilerinize ve eğitim sürecinize bağlı olarak uyarlanabilir.
  • Sonra İşlemci: Çıkışa, özellikle BERT gibi transformer tabanlı modellerle uyumluluk sağlamak için [CLS] ve [SEP] gibi tokenler ekler.

Hugging Face tokenizatörlerini kullanmaya başlamak için, kütüphaneyi pip install tokenizers komutu ile yükleyin ve Python ortamınıza içe aktarın. Kütüphane, büyük miktarda metni kısa sürede tokenize edebilir, bu da daha yoğun görevler için değerli işlem kaynaklarını tasarruf sağlar.

Tokenizatörler kütüphanesi, Rust’u kullanır, bu, C++’ın sentaktik benzerliğini korurken programlama dil tasarımı açısından yeni kavramlar sunar. Python bağlamaları ile birleştirildiğinde, düşük seviyeli bir dilin performansından faydalanırken Python ortamında çalışmanıza olanak tanır.

Veri Setleri

Veri setleri, AI projelerinin temelini oluşturur. Hugging Face, çeşitli NLP görevleri için uygun bir dizi veri seti sunar. Bunları verimli bir şekilde kullanmak için, bunları yüklemek ve analiz etmek için süreci anlamak önemlidir. Aşağıdaki Python betiği, Hugging Face’den bir veri setini nasıl yükleyeceğinizi ve inceleyeceğinizi gösterir:

[kod dili=”Python”]
from datasets import load_dataset
# Bir veri seti yükleyin
veri_seti = load_dataset(‘squad’)
# İlk girişi görüntüleyin
print(veri_seti[0])
[/kod]

Bu betik, load_dataset() fonksiyonunu kullanarak SQuAD veri setini yükler, bu, soru-cevap görevleri için popüler bir seçimdir.

Önceden Eğitilmiş Modelleri Kullanma ve Her Şeyi Birleştirmek

Önceden eğitilmiş modeller, birçok derin öğrenme projesinin temelini oluşturur, araştırmacılara ve geliştiricilere sıfırdan başlamadan önce bir başlangıç noktası sağlar. Hugging Face, çeşitli önceden eğitilmiş modeller sunar, bunları keşfetmek için aşağıdaki kodu kullanın:

[kod dili=”Python”]
from transformers import AutoModelForQuestionAnswering, AutoTokenizer

# Önceden eğitilmiş modeli ve tokenizatörü yükleyin
model = AutoModelForQuestionAnswering.from_pretrained(‘bert-large-uncased-whole-word-masking-finetuned-squad’)
tokenizatör = AutoTokenizer.from_pretrained(‘bert-large-uncased-whole-word-masking-finetuned-squad’)

# Modelin mimarisini görüntüleyin
print(model)
[/kod]

Model ve tokenizatörü yükledikten sonra, bir metinden bir soruya cevap çıkarmak için bir fonksiyon oluşturabilirsiniz. Bu fonksiyon, tokenizatörü kullanarak girdi metnini ve soruyu modelin anlayabileceği forma dönüştürür, ardından modeli kullanarak cevabı alır:

[kod dili=”Python”]
def cevap_al(metin, soru):
# Giriş metnini ve soruyu tokenize edin
girdiler = tokenizatör(soru, metin, return_tensors=’pt’, max_length=512, truncation=True)
çıkışlar = model(**girdiler)

# Cevabın başlangıç ve bitiş puanlarını alın
cevap_başlangıç = torch.argmax(çıkışlar.start_logits)
cevap_bitiş = torch.argmax(çıkışlar.end_logits) + 1

# Cevabı metinden çıkarın
cevap = tokenizatör.convert_tokens_to_string(tokenizatör.convert_ids_to_tokens(girdiler[‘input_ids’][0][çıkış_başlangıç:çıkış_bitiş]))
return cevap
[/kod]

Bu fonksiyonu, bir metin paragrafı ve bir soru ile birlikte kullanarak, metinde belirtilen soruya verilen cevabı alabilirsiniz. Örneğin:

[kod dili=”Python”]
metin = “””
Eiffel Kulesi, Paris, Fransa’da bulunan dünyanın en ikonik yapılarından biridir. Gustave Eiffel tarafından tasarlanmış ve 1889’da tamamlanmıştır. Kule, tamamlanma zamanında dünyanın en yüksek yapılmış yapısıydı ve 324 metre yüksekliğindedir.
“””
soru = “Eiffel Kulesi kim tarafından tasarlandı?”
cevap = cevap_al(metin, soru)
print(f”Cevap: {cevap}”)
[/kod]

Bu, Hugging Face’in transformer’ları kütüphanesini kullanarak basit ancak güçlü bir soru-cevap sistemini oluşturmanın bir örneğidir. Bu kavramları iyi anlamak için, Google Colab Notebook ile elle tutma deneyimi yapmanız önerilir.

Sonuç

Hugging Face, açık kaynaklı araçlar, önceden eğitilmiş modeller ve kullanıcı dostu pipeline’lar sunarak, hem deneyimli profesyoneller hem de yeni başlayanlar için AI dünyasına kolayca girmeyi sağlar. Ayrıca, Rust’u entegre etme çabaları, hız ve güvenlik özelliklerine olan bağlılıklarını vurgular. Hugging Face’in dönüştürücü çalışması, yalnızca yüksek düzeyde AI araçlarına erişimi demokratikleştirmekle kalmaz, aynı zamanda AI alanında öğrenme ve geliştirme için işbirlikçi bir ortam sağlar, böylece herkesin erişebileceği bir AI geleceğine katkıda bulunur.

Son beş yıldır Makine Öğrenimi ve Derin Öğrenme dünyasına kendimi adamış bulunuyorum. Tutkum ve uzmanlığım, özellikle AI/ML'ye odaklanarak 50'den fazla çeşitli yazılım mühendisliği projesine katkıda bulunmama yol açtı. Süregelen meraklılığım da beni Doğal Dil İşleme alanına yöneltti, bu alana daha da derinlemesine girmeye hevesliyim.