TinyLlama 1.1B - Boyut Önemli Değil

TinyLlama 1.1B – Boyut Önemli Değil

Kaynak Düğüm: 3081711

Giriş

Hızla büyüyen yapay zeka ve makine öğrenimi ortamında TinyLlama 1.1B dikkate değer bir gelişme olarak ortaya çıkıyor. Hesaplamalı kısıtlamaların daha karmaşık modellerin çalıştırılmasında zorluklar yarattığı bir çağda TinyLlama, beklentilere meydan okuyarak öne çıkıyor. Kompakt modellerin olağanüstü performansını sergiliyor.

Bu makale, kompakt bir büyük dil modeli olan TinyLlama 1.1B'nin bir analizini sunmayı amaçlamaktadır. Hugging Face platformunu kullanarak performans kıyaslamaları ve pratik uygulama konusunda nasıl eğitildiği gibi temel yönlerini inceleyeceğiz. Hatta bu modeli ücretsiz Google Colab'da çalıştırıp matematik ve muhakeme yeteneklerini test edeceğiz.

MinikLlama 1.1B

Öğrenme hedefleri

  • TinyLlama 1.1B hakkında kapsamlı bilgi edinin
  • Modelin geçirdiği karmaşık eğitim sürecini keşfedin
  • Etkinliğini değerlendirmek için performansı ve kıyaslama sonuçlarını analiz edin
  • Kodlama örneklerini kullanarak TinyLlama 1.1B'yi uygulamaya yönelik pratik adımları öğrenin

Bu makale, Veri Bilimi Blogatonu.

İçindekiler

TinyLlama 1.1B nedir?

Daha geniş kapsamlı Llama projesinin bir parçası olan TinyLlama 1.1B, dil modellemedeki ilerlemelerin bir kanıtıdır. Bu, 1.1 trilyonluk şaşırtıcı bir token üzerinde eğitilmiş, 3 milyar parametreli bir modeldir ve bu da onu yapay zeka ortamında benzersiz bir konuma yerleştirir. Daha büyük benzerlerinden farklı olarak TinyLlama 1.1B, daha verimli ve yönetilebilir olacak şekilde tasarlanmıştır ve bu da onu sınırlı hesaplama kaynaklarına sahip uygulamalar için iyi bir seçim haline getirir.

Bu açık kaynaklı model, en son yapay zeka teknolojisine erişimi demokratikleştirerek birçok geliştiricinin ve araştırmacının doğal dil işleme alanında keşif yapmasına ve yenilik yapmasına olanak tanır. Günümüzün çeşitli bilgi işlem ortamlarında kritik bir husus olan performansı kaynak tüketimi ile dengeleme yeteneği ile bilinen bir modeldir.

TinyLlama 1.1B Eğitim Süreci

TinyLlama 1.1B'nin eğitim süreci de modelin kendisi gibi büyüleyici. TinyLlama'nın eğitimi sadece 90 gün sürdü ve 16 adet A100-40G GPU üzerinde eğitildi. Ön eğitim 3 Trilyon Token üzerinde yapıldı ve TinyLlama Ekibi her yarım trilyon arasındaki ara modeli yayınladı. 

Verilere gelince, Slimpajama ve Starcoderdata, 950 Milyar Token'lık birleşik veri kümesi boyutuyla alındı. Doğal dil-kod oranı 7:3'te tutuldu, yani verilerin %70'i doğal dil ve %30'u koddu. Bu nedenle, ince ayar için 3 Trilyon Jeton işaretini elde etmek amacıyla TinyLlama, bu veri seti için 3 dönemlik eğitimden geçti. 

Hatta TinyLlama'nın TinyLlama-Chat adında bir sohbet versiyonu bile yayınlandı. Başlangıçta bu model, ChatGPT tarafından oluşturulan çeşitli sentetik konuşmaları içeren UltraChat veri kümesi üzerinde ince ayardan geçti. Bu adım, modelin farklı konuşma bağlamları ve tarzlarını ele alması açısından çok önemliydi.

UltraFeedback veri kümesinde DPOTrainer kullanılarak daha fazla iyileştirme sağlandı. Bu eğitim aşaması, modelin yanıtlarını insan benzeri konuşma kalıplarıyla uyumlu hale getirmeye odaklandı. Sonuç, yalnızca farklı konulardaki bilgileri kavramakla kalmayıp, aynı zamanda doğal ve ilgi çekici bir şekilde etkileşime giren bir modeldir.

Ayrıca şunu okuyabilirsiniz: LlaMA 2'ye Başlarken: Yeni Başlayanlar İçin Kılavuz

Performans ve Karşılaştırma Sonuçları

TinyLlama 1.1B'nin performansının değerlendirilmesi, yüksek kaliteli yanıtları hızlı bir şekilde sunma yeteneğini ortaya koyuyor. Aldığı eğitim, küreselleşen dünyamızın önemli bir özelliği olan çok dilli uygulamaları karşılama becerisini ona kazandırmıştır. TinyLlama 1.1B, daha küçük boyutuna rağmen yanıt kalitesi ve hız açısından hala daha büyük emsallerine yetişiyor ve bu da onu farklı yapay zeka uygulamalarında güçlü bir araç haline getiriyor.

TinyLlama 1.1B'nin kriterleri, daha büyük modellere göre daha az kapsamlı olsa da, karmaşık dil görevlerini yerine getirmedeki yeterliliğini göstermektedir. Birden fazla dilde tutarlı ve bağlamsal olarak uygun yanıtlar üretme yeteneği özellikle etkileyicidir. Model, HellaSwag, WinoGrande, ARC, MMLU ve diğerleri gibi farklı kriterlerde test edildi. Toplam ortalama puan ise 52.99 oldu. Bu, ortalama 1 puan alan diğer 1 Milyar Parametreli Model olan Pythia 48.3B'den çok daha iyidir. Tablo, her bir kıyaslamanın bireysel puanlarını göstermektedir

kıyaslama TinyLlama 1.1B Puanı
HellaSwag 59.2
Obka 36.0
Wino Grande 59.12
ARC_c 30.12
ARC_e 55.25
boolq 57.83
pika 73.29
ort 52.9

TinyLlama – Başlarken

Burada bu bölümde TinyLlama Chat'in sayısallaştırılmış versiyonunu indirip Google Colab'da çalıştıracağız. Modeli indirmeden önce aşağıdaki Python Paketlerini indirip kurmamız gerekiyor.

!CMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 pip3 install llama-cpp-python 
!pip3 install huggingface-hub 
  • The CMAKE_ARGS=”-DLLAMA_CUBLAS=açık” ve FORCE_CMAKE=1lama_cpp_python'un ücretsiz colab sürümünde bulunan Nvidia GPU'yu kullanmasına olanak tanıyacak.
  • Daha sonra kurulumu gerçekleştiriyoruz llama_cpp_python pip3 aracılığıyla paket
  • Hatta indiriyoruz sarılma yüz merkezinicelenmiş TinyLlama 1.1B Sohbetini indireceğimiz

TinyLlama 1.1B Chat modelini test etmek için öncelikle onun nicelenmiş versiyonunu indirmemiz gerekiyor. İndirmek için aşağıdaki kodu çalıştıracağız

from huggingface_hub import hf_hub_download

# specifying the model name
model_name = "TheBloke/TinyLlama-1.1B-Chat-v1.0-GGUF"
# specifying the type of quantization of the model
model_file = "tinyllama-1.1b-chat-v1.0.Q8_0.gguf"

# download the model by specifying the model name and quantized model name
model_path = hf_hub_download(model_name, filename=model_file)

İşte, Hugging_face_hub kütüphane nicelenmiş modelin indirilmesi sürecini halledecektir. Bunun için ithal ediyoruz hf_hub_download aşağıdaki parametreleri alır:

  • model adı: Bu değişkene indirmek istediğimiz modeli aktarıyoruz. Burada TinyLlama 1.1B Chat GGUF modelini indirmek istiyoruz.
  • model_dosyası: Burada indirmek istediğimiz nicelenmiş modelin tipini belirtiyoruz. Burada TinyLlama 8B Chat'in 1.1 bitlik nicelenmiş versiyonunu indireceğiz.
  • Son olarak bu parametreleri sunucuya aktarıyoruz. hf_hub_downloadBu parametreleri alır ve belirtilen modeli indirir. İndirdikten sonra modelin indirildiği yolu döndürür.
  • Döndürülen bu yol şuraya kaydediliyor: model_yolu değişkeni.

Artık bu modeli şu adresten yükleyebiliriz: llama_cpp_python kütüphane. Modeli yükleme kodu aşağıdaki gibi olacaktır.

from llama_cpp import Llama
llm = Llama(
    model_path=model_path,
    n_ctx=512,  # the number of i/p tokens the model can take
    n_threads=8, # the number of threads to use
    n_gpu_layers=40# how many layers of the model to offload to the GPU
)

biz ithal ediyoruz lama sınıfından lama_cppaşağıdaki parametreleri alan

  • model_yolu: Bu değişken modelimizin saklandığı yolu alır. Burada sağlayacağımız önceki adımdaki yolu elde ettik.
  • n_ctx: Burada modelin bağlam uzunluğunu veriyoruz. Şimdilik bağlam uzunluğu olarak 512 token sağlıyoruz
  • n_konu: Burada kullanılacak iş parçacığı sayısını belirtiyoruz. lama sınıf
  • n_gpu_layers: Ücretsiz ortak çalışma durumunda bunu yaptığımız, çalışan bir GPU'muz varsa bunu belirtiriz. Bunun için 40'ı geçiyoruz, bu da modelin tamamını GPU'ya boşaltmak istediğimiz ve herhangi bir kısmının sistem RAM'inde çalışmasını istemediğimiz anlamına geliyor.
  • Son olarak bundan bir nesne yaratıyoruz. lama sınıfa girin ve onu llm değişkenine verin

Bu kodu çalıştırmak TinyLlama 1.1B Chat nicelenmiş modelini GPU'ya yükleyecek ve uygun bağlam uzunluğunu ayarlayacaktır. Şimdi bu model üzerinde bazı çıkarımlar yapmanın zamanı geldi. Bunun için aşağıdaki kodla çalışıyoruz

output = llm(
  "<|im_start|>usernWho are you?<|im_end|>n<|im_start|>assistantn", # User Prompt
  max_tokens=512,  # Number of output tokens generated
  stop=["</s>"],   # Token which tells the LLM to stop
)
print(output['choices'][0]['text']) # Model generated text

Modeli çıkarmak için aşağıdaki parametreleri Yüksek Lisans'a iletiyoruz:

  • bilgi istemi/sohbet şablonu: Bu, modelle sohbet etmek için gereken Bilgi İstemi Şablonudur. Yukarıda belirtilen şablon(yani , ) TinyLlama 1.1B Sohbet modeli için çalışan modeldir. Şablonda Kullanıcıdan sonraki cümle Kullanıcı İstemidir ve Asistandan sonra nesil oluşturulacaktır.
  • max_tokens: Bu değişkene, bir İstem verildiğinde Büyük Dil Modelinin çıkarabileceği maksimum belirteç sayısını tanımlayan bir değer iletiriz. Şimdilik bunu 512 jetonla sınırlandırıyoruz.
  • durdurmak: Bu değişkene stop jetonunu iletiyoruz. Durdurma jetonu, Büyük Dil Modeline daha fazla jeton üretmeyi durdurmasını söyler. TinyLlama 1.1B Sohbet için durdurma jetonu:

Bunu çalıştırdığımızda oluşturulan metin çıktı değişkeninde saklanır. Sonuç, OpenAI API çağrısına benzer bir biçimde oluşturulur. Dolayısıyla, OpenAI yanıtlarından nesile nasıl eriştiğimize benzer şekilde, nesile verilen print ifadesi aracılığıyla erişebiliriz. Oluşturulan çıktı aşağıda görülebilir

MinikLlama 1.1B

Bu boyuttaki bir model için oluşturulan yanıt birinci sınıftır. Bu, bu boyuttaki bir modelden beklenmeyen bir durumdur; dilbilgisi ve ton mükemmel görünüyor ve cümlelerin tekrarlandığına dair hiçbir işaret yok. Modelin muhakeme yeteneklerini test etmeyi deneyelim

output = llm(
  "<|im_start|>usernIf all students who study hard get good grades, 
  and John got good grades, can we conclude that John studied hard?
  <|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
MinikLlama 1.1B
output = llm(
  "<|im_start|>usernHow fast can a snake fly?n<|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
"

Şimdiye kadar, çok iyi. Gördüğümüz örneklerden model iyi yanıtlar üretiyor. Ancak bu her durumda doğru olmayabilir çünkü bunu yalnızca sınırlı sayıda soru üzerinde test ediyoruz. Hatta modeli matematik muhakeme yetenekleri açısından test edelim

output = llm(
  "<|im_start|>usernJohn is twice as old as Sarah, and Sarah is three years 
  older than Mary. If Mary is 10 years old, how old is John?n<|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
"
output = llm(
  "<|im_start|>usernWhat is the missing number in this pattern: 
  1, 4, 9, 16, __, 36?n<|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
"

Gördüğümüz örneklerden TinyLlamaChat'in matematikteki basit yetenek sorularını yanıtlamada son derece düşük performans gösterdiği açıktır. Bu beklenen bir durumdur çünkü model herhangi bir matematik veri kümesinde önceden eğitilmemiştir. Neslin kalitesi, matematik veri kümesinde ince ayar yapılarak geliştirilebilir

İnce ayar konusuna gelince, TinyLlama sınırlı donanıma sahip olan ve kendi özel veri kümelerinde büyük dil modellerine ince ayar yapmak isteyenlerin tercih edeceği bir seçimdir.

Potansiyel Kullanım Durumları ve Uygulamalar

Kompakt boyutu göz önüne alındığında MinikLlama1.1 milyar parametreye sahip olan uygulamaları, esas olarak, donanım sınırlamaları veya daha yüksek verimlilik nedeniyle daha büyük modellerin mümkün olmayabileceği ortamlara uygundur. Boyutunu dikkate alan bazı özel kullanım durumları şunlardır:

Mobil uygulamalar: TinyLlama'nın daha küçük boyutu, cihaz üzerinde işlemenin gerekli olduğu mobil uygulamalara entegrasyon için onu iyi bir seçim haline getiriyor. Buna dil çeviri uygulamaları, kişisel asistan özellikleri ve akıllı telefonlarda verimli bir şekilde çalışabilen sohbet robotları da dahildir.

IoT Cihazlarındaki Gömülü Sistemler: Nesnelerin İnterneti (IoT) alanında bilgi işlem kaynakları genellikle sınırlıdır; TinyLlama, akıllı ev asistanları, giyilebilir teknoloji ve buna benzer diğer ekipmanlar gibi farklı ekipmanlara akıllı dil işleme yetenekleri eklemek için kullanılabilir.

Kenar Hesaplama: Verilerin merkezi bir bulut ortamı yerine kaynağa daha yakın işlenmesinden yararlanan uygulamalar için TinyLlama etkili bir şekilde kullanılabilir. Buna otomotiv sistemlerinde, üretim ekipmanlarında ve diğer uç cihazlarda gerçek zamanlı dil işleme de dahildir.

Düşük Kaynaklı Dil Araştırması: Daha küçük boyutu ve daha düşük hesaplama gereksinimleri nedeniyle TinyLlama, özellikle büyük ölçekli model eğitiminin mümkün olmadığı, yetersiz kaynaklı diller için dil araştırmalarında değerli bir araç olabilir.

Eğitim Araçları: TinyLlama, özellikle üst düzey bilgi işlem kaynaklarına erişimin sınırlı olduğu eğitim ortamlarında, dil öğrenme uygulamaları, etkileşimli eğitim araçları ve diğer öğrenme yardımcılarını geliştirmek için kullanılabilir.

Küçük İşletmeler için İçerik Üretimi: Sınırlı kaynaklara sahip küçük işletmeler, TinyLlama'yı kapsamlı bilgi işlem gücüne ihtiyaç duymadan ürün açıklamaları, pazarlama metni ve müşteri yazışmaları gibi içerik oluşturmak için kullanabilir.

Prototipleme ve Deney: Dil modellerini denemek isteyen ancak yüksek güçlü bilgi işlem kaynaklarına erişimi olmayan geliştiriciler ve araştırmacılar, yeni NLP uygulamalarının prototipini yapmak ve geliştirmek için TinyLlama'yı kullanabilirler.

Verimli Veri Analizi: TinyLlama, müşteri geri bildirimlerini, anket yanıtlarını veya sosyal medya etkileşimlerini analiz etmek gibi hızlı ve verimli işlemenin gerekli olduğu senaryolarda metin analizi ve veri çıkarma için kullanılabilir.

Sonuç

TinyLlama 1.1B, yapay zeka ve doğal dil işleme alanındaki ilerlemelerin bir kanıtıdır. Geliştirilmesi ve yaygın olarak kullanılabilirliği, daha verimli, küçük ve hızlı çıkarım dili modelleri oluşturmak için hayati öneme sahiptir. TinyLlama 1.1B, daha küçük bir parametre alanını sağlam performansla dengeleyerek, geniş bir uygulama yelpazesi için güçlü ve pratik modellere yönelik kritik ihtiyacı karşılar. Farklı bilgi işlem ortamları için yeterince hafif olmasının yanı sıra dili insan benzeri bir şekilde anlama ve üretme yeteneği, makinelerinde Büyük Dil Modellerini çalıştırmakta zorlanan insanlar için onu tercih edilen bir seçim haline getiriyor. Model, bir veri kümesi üzerinde kolayca ince ayar yapılabilir ve sınırlı bilgi işlem kaynaklarıyla eğitilebilir. 

Bu Makaleden Temel Çıkarımlar:

  • Verimlilik için tasarlanan TinyLlama 1.1B, sınırlı hesaplama kaynaklarına sahip olanlar da dahil olmak üzere daha geniş bir kullanıcı kitlesinin kullanımına sunuluyor ve bu da onu birçok uygulama için uygun hale getiriyor.
  • Model, 3 A90-16G GPU kullanılarak 100 gün boyunca 40 trilyon token üzerinde eğitim de dahil olmak üzere kapsamlı bir eğitim sürecinden geçti.
  • Küçük boyutuna rağmen TinyLlama 1.1B, birden fazla dilde yüksek kaliteli, bağlamsal olarak alakalı yanıtlar sunarak onu dikkate alınması gereken bir model haline getiriyor.
  • Mobil uygulamalar, IoT ekipmanları, eğitim araçları ve daha fazlası için iyi bir seçimdir; kompakt boyutu ve verimliliği geniş uygulamalara olanak tanır.
  • Daha düşük hesaplama gereksinimleri, onu özellikle kaynak yetersizliği olan diller için dil araştırmalarında değerli bir araç haline getiriyor.
  • Model, özellikle sınırlı hesaplama gücüne sahip ortamlarda, dil modelleriyle deney yapanlar veya yeni NLP Uygulamaları geliştirenler için iyi bir seçimdir.

Sık Sorulan Sorular

Q1. TinyLlama 1.1B nedir?

A. TinyLlama 1.1B, 1.1 trilyon jetonla eğitilmiş, sınırlı hesaplama kaynaklarına sahip uygulamalar için uygun, 3 milyar parametreye sahip, kompakt, verimli bir büyük dil modelidir.

Q2. TinyLlama 1.1B nasıl eğitildi?

A. Slimpajama ve Starcoderdata dahil veri kümeleri üzerinde 90 A16-100G GPU kullanılarak 40 gün boyunca eğitildi ve doğal dil/kod oranı 7:3 oldu.

Q3. TinyLlama 1.1B'nin performans kriterleri nelerdir?

A. TinyLlama 1.1B, HellaSwag, MMLU ve WinoGrande gibi kıyaslamalarda ortalama 52.99 puan alarak karmaşık dil görevlerini yerine getirme becerilerini gösteriyor.

Q4. TinyLlama 1.1B'nin bazı potansiyel kullanım durumları nelerdir?

A. Boyut ve hızın önemli olduğu uygulamalar için uygundur. Bunlara mobil uygulamalar, ev otomasyon cihazları gibi IoT ekipmanları, küçük işletmeler için içerik üretimi ve verimli veri analizi dahildir.

Q5. TinyLlama 1.1B sınırlı kaynaklara sahip geliştiriciler için uygun mu?

A. Kesinlikle, yeni NLP uygulamalarının prototiplenmesi ve geliştirilmesi için yüksek güçlü bilgi işlem kaynaklarına erişimi olmayan geliştiriciler ve araştırmacılar için mükemmel bir seçimdir. TinyLlama modeli bir Raspberry Pi makinesinde bile çalıştırılabilir.

Q6. TinyLlama 1.1B matematiksel muhakeme görevlerinde nasıl performans gösteriyor?

A. Farklı dil görevlerinde gerçekten başarılı olmasına rağmen, matematiksel akıl yürütmede ilgili veri kümelerinde ince ayar yapılarak geliştirilebilecek sınırlamalar gösterir.

Bu makalede gösterilen medya Analytics Vidhya'ya ait değildir ve Yazarın takdirine bağlı olarak kullanılır.

Zaman Damgası:

Den fazla Analitik Vidhya