2 puan yazan GN⁺ 2023-09-18 | 1 yorum | WhatsApp'ta paylaş
  • Petals, büyük dil modelinin tamamını tek bir cihaza yüklemeden, ev tipi GPU’lar veya Google Colab ile yalnızca bir bölümünü çalıştırarak metin üretimi ve fine-tuning yapılmasını mümkün kılar
  • Llama 3.1 ile 405B’ye kadar, Mixtral 8x22B, Falcon 40B+ ve BLOOM 176B desteğiyle kişisel donanımlarla da büyük modellerle çalışılabilir
  • Kullanıcılar kendilerine düşen model parçasını yükledikten sonra, kalan parçaları sağlayan katılımcı ağına bağlanan BitTorrent benzeri bir yapıyla çalışır
  • Tek batch inference performansı Llama 2 70B üzerinde en fazla 6 tokens/sec, Falcon 180B üzerinde en fazla 4 tokens/sec düzeyindedir; bu da chatbot’lar ve etkileşimli uygulamalar için kullanılabilir bir seviyedir
  • Standart LLM API’lerine göre fine-tuning ve sampling yöntemleri daha geniş biçimde seçilebilir; model içindeki akış yolları ve hidden states bile yönetilebilir

Büyük modelleri dağıtık şekilde çalıştırma

  • Petals, büyük dil modellerini evde çalıştırmayı hedefler ve BitTorrent gibi, birden çok kullanıcının modelin farklı bölümlerini sağladığı bir yöntemle çalışır
  • Kullanıcılar modelin tamamını yüklemek yerine yalnızca modelin bir bölümünü çalıştırır ve kalan bölümleri sağlayan ağa katılır
  • Desteklenen modeller:
    • Llama 3.1: 405B’ye kadar
    • Mixtral: 8x22B
    • Falcon: 40B+
    • BLOOM: 176B
  • Ev tipi GPU veya Google Colab ile metin üretimi ve göreve özel fine-tuning yapılabilir
  • Tek batch inference performansı:
    • Llama 2 70B: en fazla 6 tokens/sec
    • Falcon 180B: en fazla 4 tokens/sec
  • Bu hız, chatbot’lar ve etkileşimli uygulamalar için yeterli düzeydedir

API’den daha geniş kontrol alanı

  • Petals, geleneksel LLM API’lerinin ötesine geçerek fine-tuning ve sampling yöntemlerinin doğrudan seçilmesini sağlar
  • Modelden geçen özel akış yolları çalıştırılabilir veya hidden states incelenebilir
  • API kolaylığını PyTorch ve 🤗 Transformers esnekliğiyle birlikte sunar
  • Hemen denenebilecek bir Colab not defteri ve GitHub dokümantasyonu sağlanır
  • GPU sağlayarak Petals kapasitesini artırmak için katılım yöntemi vardır; geliştirme haberleri Discord üzerinden takip edilebilir
  • Bu proje, BigScience araştırma çalıştayının bir parçasıdır

1 yorum

 
GN⁺ 2023-09-18
Hacker News yorumları
  • İlginç. Model ağırlıklarını katmanlara ayırıp birden çok makineye dağıtan; her makinenin hazır olunca kendini büyük bir hash tablosuna kaydettirdiği ve ardından kendi sorumluluğundaki katmanlar için “takım halinde” çıkarım ya da ince ayar yaptığı bir yapı gibi görünüyor.
    Henüz erken aşamada ama https://github.com/jmorganca/ollama için model ağırlıklarını Docker registry’de barındırma üzerinde çalışıyorduk. Bunun başlıca nedeni içerik adreslenebilirliği: Ollama her seferinde doğru ağırlıkların indirildiğini doğrulayabiliyor ve nihayetinde ağırlıkları bir ad ya da değişebilen bir URL yerine içeriğin kendisi üzerinden alabiliyor.
    Sonraki adım olarak modeli katmanlara ayırıp her katmanı bağımsız biçimde saklayarak bunu bu tür kullanım senaryolarında değerlendirmek ya da daha büyük modelleri birden çok “yerel” makineye yayarak indirip çalıştırmak mümkün olabilir.

    • Kendi reklamını biraz azaltamaz mısın? LLM’lerle ilgili neredeyse her yazıda ollama yorumlarını sık sık görüyorum.
      HN yönergelerinde de “HN’yi ağırlıklı olarak tanıtım için kullanmayın; kendi çalışmanızı ara sıra paylaşmanız sorun değil ama siteyi kullanmanızın ana nedeni merak olmalı” deniyor.
      Bu durumda da OP’nin çalışmasından bahsederken projeye giden ücretsiz backlink’i eklemesen de yeterince anlaşılır olurdu.
  • “İşe göre ince ayar yapılabilir” kısmında kaşlarım kalktı.
    70B’ye ince ayar yapmak sadece zor değil; ne kadar beklemeye razı olursanız olun, çok pahalı cloud instance’ları kiralamadan ya da ev fiyatına bir PC almadan kelimenin tam anlamıyla imkânsız.
    Bir “llama eğitim sürüsü” olsaydı memnuniyetle katılırdım.

    • Geleneksel ince ayar için doğru, ama bunun parametre verimli ince ayar ya da qLORA için de geçerli olup olmadığını bilmiyorum.
      Anladığım kadarıyla N on milyar parametreli bir modele, N’den biraz daha az gigabayt VRAM’i olan bir GPU ile ince ayar yapılabiliyor.
      70B parametreli bir model için A100 civarı mı gerekir?
    • H100’ün fiyatı evden ziyade araba fiyatına daha yakın değil mi?
    • Güvenilmez bir ağ üzerinde dağıtık biçimde ince ayar yapmak, tek bir düğüme ya da iyi bağlanmış bir kümeye göre enerji ve maliyet verimliliği açısından çok daha kötü olabilir.
      Ayrıca Lambda Cloud’da 70B modele milyon token başına 2 dolara, Replicate’te ise 10 doların altında ince ayar yapabiliyorsunuz.
    • LLM eğitimini paralelleştirmeyi engelleyen şey ne? Kitap 1’i önce okuyup sonra kitap 2’yi okumakla tersini yapmak arasında bilgi güncelleme sonucu aynı olmalı.
      LLM’nin de her kitabı bağımsız öğrendiğini varsayarsak, LLM ağırlıklarındaki iki deltayı basitçe toplamak yeterliymiş gibi görünüyor.
    • CentML’nin derleyici optimizasyonu teknolojisiyle, modeli değiştirmeden 4×A10 üzerinde 40B Falcon’a ince ayar yapılabiliyor.
  • Eğitilmiş LLM’ler herhangi bir şekilde bileştirilebilir mi? Örneğin ikisi de verinin %99’unda aynı şeylere güveniyor ama yalnızca %1’de ayrışıyorsa, tamamen ayrı iki modele mi ihtiyaç var; yoksa %99 için aynı görüşe sahip başka kişilerle hesaplamayı paylaşıp, her birinin güven modeli farklarını telafi eden türev modeller oluşturmak mümkün mü?
    Sinir ağlarına dair anlayışım temel düzeyde, ama modelin kullanışlılığını koruyarak ağırlıkları bu şekilde manipüle etmek kulağa saçma gelmiyor.
    Sormamın nedeni, aynı performansa sahip iki LLM’nin hangi cümlelerde hemfikir olduğunu ve hangi cümlelerde disagreement olduğunu bilmenin faydalı olabileceğini düşünmem. Böylece bu farklar geriye doğru eğitim verisindeki farklara eşlenebilir. Muhtemelen yalnızca fark küçük olduğunda mümkün olur.
    Öte yandan aynı performansta iki LLM, daha güçlü tek bir model oluşturma fırsatını kaçırmaya yakın bir şeyse ve disagreement analizi de aşırı pahalıysa, oldukça farklı bir dünyada oluruz.

  • Kötü niyetli bir katılımcının daha büyük hesaplamada kendi payına düşen çıktıyı değiştirmesi nasıl engellenecek? Saldırganın istediği ağ çıktısını üretebilecek bir yol olmasa bile, çok sayıda düğüm gelip sadece çöp sonuçlar döndürürse sistemi fiilen hizmet reddi saldırısına uğratabilir gibi görünüyor.

    • Petals geliştiricisiyim. Tüm sunucuları düzenli olarak tarayıp hatalı sonuç döndüren sunucuları engelleyen bir doğrulayıcı geliştiriyoruz.
      Ayrıca istemciler, veriyi ağ üzerinde birbiriyle çakışmayan birden çok yol üzerinden akıtıp sonuçların eşleşip eşleşmediğini kontrol edebilir.
      Sık saldıranları yakalar ama %100 koruma sağlamaz; bu yüzden tam doğruluk garantisi gerekiyorsa insanların özel swarm’lar kuracağını düşünüyorum. Örneğin tek başına LLM çalıştıracak kadar GPU’su olmayan ama güvenilir donanım sahipleri olan kişiler, özel bir Petals swarm kurarak coğrafi olarak dağıtılmış donanım üzerinde birlikte LLM çalıştırıp verileri işleyebilir.
  • İlk aklıma gelen soru “ekonomisi nasıl?” oldu. FAQ’ya göre:
    Petals teşvikleri kripto para, blockchain vb. üzerine mi kurulu? Hayır. Petals diğer tüm yönleriyle tamamen merkeziyetsiz bir sistem olsa da teşvikler için AI Horde kudos’a benzer merkezi bir sistem üzerinde çalışılıyor. Bu puanları paraya çevirecek bir hizmet sunma planı yok; sistem içinde kullanılan “oyun” puanları gibi düşünülebilir.
    Petals, makine öğrenimi araştırmacıları ve mühendisleri için makine öğrenimi odaklı bir projedir ve finansla ilgili değildir. Teşvik sistemini merkezi tutmayı seçmelerinin nedeni, geliştirme ve bakımının çok daha kolay olması; böylece makine öğrenimi araştırmacılarına yararlı özellikler geliştirmeye odaklanabilmeleri.
    https://github.com/bigscience-workshop/petals/wiki/FAQ:-Freq...

    • Burada bahsedilen AI Horde kudos gerçekten harika ve kişisel olarak ciddi biçimde az kullanıldığını düşünüyorum:
      https://lite.koboldai.net/
      https://tinybots.net/artbot
      https://aihorde.net/
      Aslında HN’de belirli bir 13B–70B fine-tuned modeli denemek isteyen varsa öğleden sonra host edebilirim:
      https://huggingface.co/models?sort=modified&search=70B+gguf
    • Grafik tasarım tarafında uzun zamandır dağıtık render farm’lar vardı. Puanınız yüksekse işinizin önceliğinin artması dışında ayrı bir teşvik yok.
      https://www.sheepit-renderfarm.com/home
    • “Açık swarm’da model katmanlarını host etmek için motivasyon nedir?” sorusunun yanıtına bakınca, inference ve fine-tuning’i bizzat çalıştıran kişiler modelin bir kısmını yerelde host ederek bir miktar hız artışı elde ediyor. Ayrıca BitTorrent kullanıcılarının zaten indirdikleri veriyi paylaşarak başkalarına yardım etmesi gibi, modeli çalıştırmasına yardım eden topluluğa geri verme motivasyonu da olabilir.
      Bu herkes için yeterli olmayabilir; bu yüzden GPU zamanını açık swarm’a bağışlayan kişiler için açık bir teşvik olan “bloom points” de devreye alınıyor. Sistem hazır olduğunda web sitesinde en çok katkı yapanlar gösterilecek; puan kazananlar bunları daha yüksek öncelik veya güçlendirilmiş güvenlik garantileriyle inference/fine-tuning için kullanabilecek ya da belki başka ödüllerle takas edebilecek.
      Yine de bir ölçüde merkezi token istiyor gibi görünüyorlar.
    • Artık her merkeziyetsiz projenin kripto parayla karşılaştırılmak zorunda kalması üzücü.
    • Mantıksal sonuç, modellerin eninde sonunda kripto para ödemeleriyle bağlantılı olacağı yönünde. Lightning burada önemli hale geliyor.
      Ek olarak, Petals’ın “token”ını bir ödeme sistemine bağlayalım demek istemiyorum. Genel olarak, merkeziyetsiz olsun ya da olmasın, makine öğrenimi model kümelerine yapılan çağrılarda hem kimlik doğrulama hem de ödeme aracı sağlayan kripto para ödemelerinin kullanılma olasılığının yüksek olduğunu kastediyorum.
      Petals, model kullanımı için merkeziyetsiz hesaplamanın iyi bir uygulaması ve uzun vadede değerli olacak gibi görünüyor.
  • 3080 Ti’ımı paylaşmak istemiştim ama başlangıç rehberindeki komutu çalıştırınca bağımlılık sürümleriyle ilgili bir sorun var gibi görünüyor: https://github.com/bigscience-workshop/petals/wiki/Run-Petal...
    ImportError: cannot import name 'get_full_repo_name' from 'huggingface_hub' (~/.local/lib/python3.8/site-packages/huggingface_hub/__init__.py)

  • Kendi sunucu swarm’ınızı host edebiliyor gibisiniz [0]
    “Özel” bir Petals kümesinin fine-tuning performansının kabaca nasıl olduğunu merak ediyorum.
    [0] https://github.com/bigscience-workshop/petals/wiki/Launch-yo...

    • Güvenilir bir ortamda küme çalıştırıyorsanız Ray veya benzeri bir şey kullanmak daha verimli olur gibi geliyor.
  • Gerçekten harika. Umarım bu alanda binlerce, milyonlarca geliştiricinin erişimini artırır.

  • Crowdsourcing’in geleceğin yolu olduğunu hep düşünmüşümdür. Bilgi de olsa hesaplama da olsa aynı.
    Aslında “kaynak” zaten var; mesele sadece yerleşim.

  • Eski bir projede Petals kullanmıştım. GPU da paylaştım, proje için kod da yazdım.
    Petals kısmı benim için soyutlanmıştı ve kod yazma deneyimi sıradandı.
    O projeyi hiçbir yere koymadım ve sonrasında ne olduğunu da pek bilmiyorum. Genel olarak yaklaşık beş kişinin yürüttüğü bir işti.