Zephyrnet Logosu

Gradient, AWS Inferentia ile LLM karşılaştırmasını uygun maliyetli ve zahmetsiz hale getiriyor | Amazon Web Hizmetleri

Tarih:

Bu, Gradient'te Michael Feil ile birlikte yazılan bir konuk yazısıdır.

Büyük dil modellerinin (LLM'ler) performansının değerlendirilmesi, dağıtım öncesi ön eğitim ve ince ayar sürecinin önemli bir adımıdır. Performansı ne kadar hızlı ve sık doğrulayabilirseniz, modelin performansını iyileştirme şansınız da o kadar yüksek olur.

At meyil, özel LLM geliştirme üzerinde çalışıyoruz ve kısa süre önce başlattık Yapay Zeka Geliştirme Laboratuvarıkurumsal kuruluşlara özel, özel LLM'ler ve yapay zeka (AI) yardımcı pilotları oluşturmak için kişiselleştirilmiş, uçtan uca bir geliştirme hizmeti sunuyor. Bu sürecin bir parçası olarak modellerimizin (ayarlanmış, eğitilmiş ve açık) performansını açık ve özel ölçütlere göre düzenli olarak değerlendiriyoruz. Modellerimizi eğitmek için AWS ekibiyle çalışırken AWS EğitimiYüksek Lisans değerlendirmesi için ana araç söz konusu olduğunda hem VRAM hem de GPU örneklerinin kullanılabilirliği ile sınırlı olduğumuzu fark ettik. lm-değerlendirme-koşum. Bu açık kaynak çerçevesi, çeşitli değerlendirme görevlerinde ve kıyaslamalarda farklı üretken dil modellerini puanlamanıza olanak tanır. Gibi lider tabloları tarafından kullanılır. Sarılma Yüz halka açık kıyaslama için.

Bu zorlukların üstesinden gelmek için entegre çözümümüzü oluşturmaya ve açık kaynak oluşturmaya karar verdik. AWS Nöron, arkadaki kütüphane AWS Çıkarımları ve Trainium'un içine lm-evaluation-harness. Bu entegrasyon kıyaslamayı mümkün kıldı v-alpha-tross, Albatross modelimizin erken bir versiyonueğitim süreci ve sonrasında diğer kamusal modellere karşı.

Bağlam açısından, bu entegrasyon, gerçek değerlendirme görevini etkilemeden belirteçlerin çıkarımını ve dizilerin log-olasılık tahminini soyutlayarak lm-evaluation-harness içinde yeni bir model sınıfı olarak çalışır. Dahili test hattımızı şuraya taşıma kararı: Amazon Elastik Bilgi İşlem Bulutu (Amazon EC2) Inf2 örnekleri (AWS Inferentia2 tarafından desteklenen), mevcut tüm genel mimarilerimize zahmetsizce uyum sağlayan 384 GB'a kadar paylaşılan hızlandırıcı belleğine erişmemizi sağladı. AWS Spot Bulut Sunucularını kullanarak AWS Cloud'da kullanılmayan EC2 kapasitesinden yararlanabildik ve isteğe bağlı fiyatlardan %90'a varan indirimle maliyet tasarrufu sağladık. Bu, test için gereken süreyi en aza indirdi ve daha sık test yapmamıza olanak sağladı çünkü hazır olan birden fazla örnekte test yapabildik ve örnekleri işimiz bittiğinde yayınlayabildik.

Bu yazıda testlerimizin ayrıntılı bir dökümünü, karşılaştığımız zorlukları ve AWS Inferentia'da test donanımını kullanmanın bir örneğini vereceğiz.

AWS Inferentia2'de Karşılaştırma

Bu projenin amacı, şekilde gösterildiği gibi aynı puanları üretmekti. LLM Skor Tablosunu Aç (Hugging Face'te bulunan birçok CausalLM modeli için) ve bunu özel kıyaslamalarda çalıştırma esnekliğini koruyor. Mevcut modellere ilişkin daha fazla örnek görmek için bkz. AWS Inferentia ve Trainium Sarılma Yüzünde.

Bir modeli Hugging Face transformatörlerinden Hugging Face'e taşımak için gereken kod değişiklikleri Optimum Nöron Python kütüphanesi oldukça düşüktü. Çünkü lm-değerlendirme-koşum kullanımları AutoModelForCausalLM, değiştirmede bir düşüş var NeuronModelForCausalLM. Önceden derlenmiş bir model olmadan, model anında otomatik olarak derlenir ve bu da işe 15-60 dakika eklenebilir. Bu bize herhangi bir AWS Inferentia2 bulut sunucusu ve desteklenen CausalLM modeli için test dağıtma esnekliği sağladı.

Sonuçlar

Karşılaştırmalı değerlendirmelerin ve modellerin çalışma şekli nedeniyle farklı çalışmalarda puanların tam olarak eşleşmesini beklemiyorduk. Ancak standart sapmaya göre birbirlerine çok yakın olmaları gerekir ve bunu aşağıdaki tabloda da gösterildiği gibi sürekli olarak gördük. AWS Inferentia2'de çalıştırdığımız ilk kriterlerin tümü Hugging Face lider tablosu tarafından onaylandı.

In lm-evaluation-harnessfarklı testler tarafından kullanılan iki ana akış vardır: generate_until ve loglikelihood. GSM8k testi öncelikle şunları kullanır: generate_until tıpkı çıkarım sırasında olduğu gibi yanıtlar üretmek için. Loglikelihood Temel olarak kıyaslama ve testlerde kullanılır ve farklı çıktıların üretilme olasılığını inceler. Her ikisi de Neuron'da çalışır, ancak loglikelihood SDK 2.16'daki yöntem, olasılıkları belirlemek için ek adımlar kullanır ve fazladan zaman alabilir.

Lm-değerlendirme-koşum sonuçları
Donanım yapılandırması Orijinal Sistem AWS Inferentia inf2.48xlarge
Batch_size=1 ile gsm7k'de mistralai/Mistral-0.1B-Instruct-v8'i değerlendirme zamanı 103 dakikadır. 32 dakikadır.
Gsm8k'de puan (cevap alın – std ile tam_eşleşme) 0.3813 – 0.3874 (± 0.0134) 0.3806 – 0.3844 (± 0.0134)

Neuron ve lm değerlendirme koşum takımını kullanmaya başlayın

Bu bölümdeki kod kullanmanıza yardımcı olabilir lm-evaluation-harness ve Hugging Face'te desteklenen modellerle çalıştırın. Mevcut modellerden bazılarını görmek için şu adresi ziyaret edin: AWS Inferentia ve Trainium Sarılma Yüzünde.

AWS Inferentia2'de model çalıştırma konusunda bilginiz varsa, num_cores ayar aktarıldı. Kodumuz kaç çekirdeğin kullanılabilir olduğunu algılar ve bu sayıyı otomatik olarak parametre olarak iletir. Bu, kullandığınız örnek boyutundan bağımsız olarak testi aynı kodu kullanarak çalıştırmanıza olanak tanır. Ayrıca Neuron'un derlenmiş versiyonuna değil, orijinal modele atıfta bulunduğumuzu fark edebilirsiniz. Emniyet kemeri, modeli gerektiği gibi sizin için otomatik olarak derler.

Aşağıdaki adımlar Gradyan'ın nasıl dağıtılacağını gösterir gradientai/v-alpha-tross test ettiğimiz model. Daha küçük bir örnek üzerinde daha küçük bir örnekle test yapmak istiyorsanız, mistralai/Mistral-7B-v0.1 modeli.

  1. İsteğe Bağlı Inf bulut sunucularını çalıştırmak için varsayılan kota 0'dır, bu nedenle Hizmet Kotaları aracılığıyla artış talep etmelisiniz. Spot Bulut Sunucularıyla test yapabilmek için tüm Inf Spot Bulut Sunucusu isteklerine başka bir istek ekleyin. Bu örnek için inf192xlarge örneğini kullanarak 2.48 vCPU kotasına veya temel inf4.xlarge için 2 vCPU kotasına ihtiyacınız olacaktır (Mistral modelini dağıtıyorsanız). Kotalar AWS Bölgesine özeldir; bu nedenle talepte bulunduğunuzdan emin olun. us-east-1 or us-west-2.
  2. Modelinize göre örneğinize karar verin. Çünkü v-alpha-tross 70B mimarisi olduğundan inf2.48xlarge örneğini kullanmaya karar verdik. Bir inf2.xlarge dağıtın (7B Mistral modeli için). Farklı bir modeli test ediyorsanız modelinizin boyutuna göre örneğinizi ayarlamanız gerekebilir.
  3. Örneği kullanarak dağıtın Sarılma Yüzü DLAMI sürümü 20240123Böylece gerekli tüm sürücüler kurulur. (Gösterilen fiyata bulut sunucusu maliyeti dahildir ve ek yazılım ücreti alınmaz.)
  4. Sürücü boyutunu 600 GB (Mistral 100B için 7 GB) olarak ayarlayın.
  5. Klonlayın ve yükleyin lm-evaluation-harness örnekte. Herhangi bir farklılığın test veya kod değişikliklerinden değil, model değişikliklerinden kaynaklandığını bilmemiz için bir yapı belirtiriz.
git clone https://github.com/EleutherAI/lm-evaluation-harness
cd lm-evaluation-harness
# optional: pick specific revision from the main branch version to reproduce the exact results
git checkout 756eeb6f0aee59fc624c81dcb0e334c1263d80e3
# install the repository without overwriting the existing torch and torch-neuronx installation
pip install --no-deps -e . 
pip install peft evaluate jsonlines numexpr pybind11 pytablewriter rouge-score sacrebleu sqlitedict tqdm-multiprocess zstandard hf_transfer

  1. koşmak lm_eval hf-neuron model tipini kullanarak Hugging Face'teki modele giden yola giden bir bağlantıya sahip olduğunuzdan emin olun:
# e.g use mistralai/Mistral-7B-v0.1 if you are on inf2.xlarge
MODEL_ID=gradientai/v-alpha-tross

python -m lm_eval --model "neuronx" --model_args "pretrained=$MODEL_ID,dtype=bfloat16" --batch_size 1 --tasks gsm8k

Önceki örneği Mistral ile çalıştırırsanız aşağıdaki çıktıyı almanız gerekir (daha küçük olan inf2.xlarge'da çalıştırılması 250 dakika sürebilir):

███████████████████████| 1319/1319 [32:52<00:00,  1.50s/it]
neuronx (pretrained=mistralai/Mistral-7B-v0.1,dtype=bfloat16), gen_kwargs: (None), limit: None, num_fewshot: None, batch_size: 1
|Tasks|Version|  Filter  |n-shot|  Metric   |Value |   |Stderr|
|-----|------:|----------|-----:|-----------|-----:|---|-----:|
|gsm8k|      2|get-answer|     5|exact_match|0.3806|±  |0.0134|

Temizlemek

İşiniz bittiğinde EC2 bulut sunucularını Amazon EC2 konsolu aracılığıyla durdurduğunuzdan emin olun.

Sonuç

Gradient ve Neuron ekipleri, bu sürümle birlikte LLM değerlendirmesinin daha geniş çapta benimsendiğini görmekten heyecan duyuyor. Kendiniz deneyin ve AWS Inferentia2 bulut sunucularında en popüler değerlendirme çerçevesini çalıştırın. Artık AWS Inferentia2'nin isteğe bağlı kullanılabilirliğinden yararlanabilirsiniz. Gradient'ten özel LLM geliştirme. Bunlarla AWS Inferentia'da modelleri barındırmaya başlayın Öğreticiler.


Yazarlar Hakkında

Michael Feil Gradient'te yapay zeka mühendisidir ve daha önce Rodhe & Schwarz'da makine öğrenimi mühendisi ve Max-Plank Akıllı Sistemler Enstitüsü ve Bosch Rexroth'ta araştırmacı olarak çalışmıştır. Michael, LLM'ler için çeşitli açık kaynak çıkarım kitaplıklarına ve StarCoder gibi açık kaynak projelerine önde gelen katkıda bulunanlardan biridir. Michael, KIT'ten mekatronik ve BT alanında lisans derecesine ve Münih Teknik Üniversitesi'nden robotik alanında yüksek lisans derecesine sahiptir.

Jim Burtoft AWS'de Kıdemli Başlangıç ​​Çözümleri Mimarıdır ve doğrudan Gradient gibi girişimlerle çalışır. Jim bir CISSP'dir, AWS AI/ML Teknik Saha Topluluğunun bir parçasıdır ve Neuron Elçisidir ve Inferentia ile Trainium'un kullanımını sağlamak için açık kaynak topluluğuyla birlikte çalışır. Jim, Carnegie Mellon Üniversitesi'nden matematik alanında lisans derecesine ve Virginia Üniversitesi'nden ekonomi alanında yüksek lisans derecesine sahiptir.

spot_img

En Son İstihbarat

spot_img