Yapay zeka veya tam yığın geliştirme ile mücadele mi ediyorsunuz? Uzmanlarımız size rehberlik etmek için burada: özel tavsiyeler, teknik entegrasyon ve daha fazlası. Bize ulaşın [email protected].

LLaMA 3 Üretime Nasıl Kurulur ve Dağıtılır?

LLaMA 3 jeneratif yapay zeka modeli Meta tarafından birkaç gün önce piyasaya sürüldü ve şimdiden etkileyici yetenekler sergiliyor.

Bu adım adım kılavuz ile LLaMA 3'ü üretime nasıl kuracağınızı ve dağıtacağınızı öğrenin. Donanım gereksinimlerinden dağıtım ve ölçeklendirmeye kadar, sorunsuz bir uygulama için bilmeniz gereken her şeyi ele alıyoruz.

LLaMA 3

LLaMA'ya Giriş 3

Meta, metin oluşturma, programlama veya sohbet robotları için kullanılabilen Llama 3 açık kaynaklı yapay zeka modelinin ilk sürümlerini tanıttı. Ayrıca Meta, LLaMA 3'ü birincil sosyal medya uygulamalarına dahil etmeyi planladığını duyurdu. Bu hamle, OpenAI'nin ChatGPT'si, Microsoft'un Copilot'u ve Google'ın Gemini'si gibi diğer yapay zekâ asistanlarıyla rekabet etmeyi amaçlıyor.

Llama 2'ye benzer şekilde, Llama 3 de önde gelen bir yapay zeka şirketi tarafından sunulan açık ağırlıklara sahip, serbestçe erişilebilen büyük bir dil modeli olarak öne çıkıyor (geleneksel anlamda "açık kaynak" olarak nitelendirilmese de).

Llama 3 şu anda Meta'nın web sitesinden iki farklı parametre boyutunda ücretsiz olarak indirilebiliyor: 8 milyar (8B) ve 70 milyar (70B). Kullanıcılar bu sürümlere erişmek için kaydolabilirler. Llama 3 iki farklı şekilde sunulmaktadır: bir sonraki token tahmini için temel bir model olan önceden eğitilmiş ve kullanıcı komutlarına uyacak şekilde ince ayarlanmış olan talimat ayarlı. Her iki sürümün de 8.192 belirteçlik bir bağlam sınırı vardır.

Meta'nın CEO'su Mark Zuckerberg, Dwarkesh Patel ile yaptığı bir röportajda, 24.000 GPU'luk bir küme kullanarak iki özel yapım modeli eğittiklerini belirtti. 70B modeli yaklaşık 15 trilyon token veri ile eğitildi ve hiçbir zaman bir doygunluk noktasına ya da yeteneklerinin bir sınırına ulaşmadı. Daha sonra Meta, diğer modelleri eğitmeye odaklanmaya karar verdi. Şirket ayrıca şu anda Llama 3'ün 400B parametreli bir versiyonu üzerinde çalıştıklarını ve Nvidia'dan Jim Fan gibi uzmanların MMLU, GPQA, HumanEval ve MATH gibi kıyaslamalarda GPT-4 Turbo, Claude 3 Opus ve Gemini Ultra ile benzer performans gösterebileceğine inandıklarını açıkladı.

Meta'ya göre Llama 3, MMLU (lisans düzeyinde bilgi), GSM-8K (ilkokul matematiği), HumanEval (kodlama), GPQA (lisansüstü düzeyde sorular) ve MATH (matematik kelime problemleri) dahil olmak üzere çeşitli ölçütler kullanılarak değerlendirilmiştir. Bu kıyaslamalar, 8B modelinin Google'ın Gemma 7B ve Mistral 7B Instruct gibi açık ağırlık modellerinden daha iyi performans gösterdiğini ve 70B modelinin Gemini Pro 1.5 ve Claude 3 Sonnet ile rekabet edebildiğini ortaya koymaktadır.

Meta, Llama 3 modelinin Llama 2'ye benzer şekilde kodlamayı anlama yeteneği ile geliştirildiğini ve ilk kez hem görüntü hem de metin kullanılarak eğitildiğini bildirdi. Bununla birlikte, mevcut çıktısı metinle sınırlıdır.

LLaMA 3 Karşılaştırma Ölçütleri LLaMA 3 Karşılaştırma Ölçütleri

LLaMA 3 Donanım Gereksinimleri ve AWS EC2'de Doğru Örneklerin Seçilmesi

Birçok kuruluş üretim iş yükleri için AWS kullandığından, AWS EC2 üzerinde LLaMA 3'ün nasıl dağıtılacağını görelim.

LLM'lerin uygulanması söz konusu olduğunda VRAM (GPU belleği) tüketimi, çıkarım hızı, verim ve disk alanı kullanımı gibi birçok engel vardır. Bu senaryoda, AWS EC2 üzerinde modellerimizin yürütülmesini desteklemek için yeterli VRAM kapasitesine sahip bir GPU örneği tahsis ettiğimizden emin olmalıyız.

LLaMA 3 8B, FP16'da yaklaşık 16 GB disk alanı ve 20 GB VRAM (GPU belleği) gerektirir. Elbette LLaMA 3'ü bir CPU üzerinde de kullanabilirsiniz ancak gecikme süresi gerçek hayattaki bir üretim kullanım durumu için çok yüksek olacaktır. LLaMA 3 70B ise FP16'da yaklaşık 140 GB disk alanı ve 160 GB VRAM gerektirir.

LLaMA 3 8B için 20GB VRAM'e sahip olmak oldukça kolaydır. Bir NVIDIA A10 GPU sağlamanızı öneririm: bu GPU 24GB VRAM ile birlikte gelir ve Ampere platformunu temel alan hızlı bir GPU'dur. AWS EC2'de, bir A10 GPU sağlamak için bir G5 örneği seçmelisiniz. Bir g5.xlarge yeterli olacaktır.

Ancak LLaMA 3 70B modelini dağıtmak çok daha zordur. Hiçbir GPU bu model için yeterli VRAM'e sahip değildir, bu nedenle çoklu GPU örneği sağlamanız gerekecektir. AWS'de bir g5.48xlarge örneği sağlarsanız 192 GB VRAM (8 x A10 GPU) elde edersiniz ve bu da LLaMA 3 70B için yeterli olacaktır.

Böyle bir yapılandırmada, aşağıdaki gecikmeleri (yanıt süreleri) bekleyebilirsiniz: LLaMA 3 8B için 1 saniyede üretilen 50 belirteç ve LLaMA 3 70B için 5 saniyede üretilen 50 belirteç.

Bu modellerin işletim maliyetini düşürmek ve gecikme süresini artırmak için niceleme tekniklerini araştırabilirsiniz, ancak bu tür optimizasyonların modelinizin doğruluğuna zarar verebileceğini unutmayın. Niceleme bu makalenin kapsamı dışındadır.

Bu tür örnekleri sağlamak için AWS EC2 konsolunuzda oturum açın ve yeni bir örnek başlatın: g5.xlarge veya g5.48xlarge örneğinde NVIDIA derin öğrenme AMI'sini seçin. Yeterli disk alanı sağlamayı da unutmayın.

AWS üzerinde G5 örneğinde Derin Öğrenme AMI

vLLM ile Üretim Çıkarsaması

vLLM, hızlı ve kolay LLM çıkarımı ve dağıtımı için tasarlanmış bir kütüphanedir. Verimliliği, dikkat anahtarının ve değer belleğinin optimum yönetimi için sayfalı dikkat, gelen sorguların gruplar halinde gerçek zamanlı işlenmesi ve kişiselleştirilmiş CUDA çekirdekleri dahil olmak üzere çeşitli sofistike yöntemlere atfedilir.

Buna ek olarak, vLLM dağıtılmış hesaplama (tensör paralelliği kullanarak), gerçek zamanlı akış ve hem NVIDIA hem de AMD grafik kartlarıyla uyumluluk kullanarak yüksek derecede uyarlanabilirlik sağlar.

Özellikle vLLM, birkaç kompakt NVIDIA A10 GPU ile donatılmış AWS EC2 örneklerini kullanmamızı sağlayarak LLaMA 3'ün dağıtımına büyük ölçüde yardımcı olacaktır. Bu, NVIDIA A100 veya H100 gibi tek bir büyük GPU kullanmaya göre daha avantajlıdır. Ayrıca vLLM, sürekli toplu çıkarım yoluyla modelimizin verimliliğini önemli ölçüde artıracaktır.

vLLM'yi kurmak oldukça basittir. Yeni oluşturduğumuz AWS örneğimize bir SSH bağlantısı kuralım ve pip kullanarak vLLM'yi yükleyelim:

pip install vllm

vLLM kullanarak 8 x A10 GPU üzerinde dağıtılmış çıkarım yapmayı planladığımız için Ray'in de yüklenmesi gerekmektedir:

pip install ray

Kurulum sırasında uyumluluk sorunlarıyla karşılaşmanız durumunda, vLLM'yi kaynaktan derlemeniz veya Docker imajını kullanmanız daha kolay olabilir: vLLM kurulum talimatlarına bir göz atın.

Çıkarım Sunucusunu Başlatın

Şimdi Python çıkarım betiğimizi oluşturalım:

from vllm import LLM

# Use LLaMA 3 8B on 1 GPU
llm = LLM("meta-llama/Meta-Llama-3-8B-Instruct")

# Use LLaMA 3 70B on 8 GPUs
# llm = LLM("meta-llama/Meta-Llama-3-70B-Instruct", tensor_parallel_size=8)

print(llm.generate("What are the most popular quantization techniques for LLMs?"))

Yukarıdaki betiği çalıştırabilirsiniz. Bu betiği ilk kez çalıştırıyorsanız, modelin indirilmesini ve GPU'ya yüklenmesini beklemeniz gerekecek, ardından buna benzer bir şey alacaksınız:

The most popular quantization techniques for Large Language Models (LLMs) are:
1. Integer Quantization
2. Floating-Point Quantization
3. Mixed-Precision Training
4. Knowledge Distillation

Bunu anlamak oldukça basittir. Sahip olduğunuz GPU sayısına göre tensor_parallel_size değerini ayarlamanız yeterlidir.

Şimdi çok sayıda isteği yönetebilecek ve eşzamanlı çıkarımları yürütebilecek uygun bir çıkarım sunucusu başlatmak istiyoruz. Başlamak için sunucuyu başlatın:

LLaMA 3 8B için:

python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-8B-Instruct

LLaMA 3 70B için:

python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-70B-Instruct
--tensor-parallel-size 8

Modelin GPU'ya yüklenmesi 1 dakika kadar sürmelidir. Ardından ikinci bir terminal başlatabilir ve bazı istekler yapmaya başlayabilirsiniz:

curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
    "model": "meta-llama/Meta-Llama-3-8B-Instruct",
    "prompt": "What are the most popular quantization techniques for LLMs?"
}'

Artık sürekli gruplama sayesinde birçok paralel isteği karşılayabilen, üretime hazır bir çıkarım sunucunuz var. Bir noktada, istek sayısı çok yüksekse, GPU aşırı yüklenecektir. Bu durumda modeli birkaç GPU örneğinde çoğaltmanız ve isteklerinizi yük dengelemeniz gerekecektir (ancak bu, bu makalenin kapsamı dışındadır).

Sonuç

Gördüğünüz gibi, vLLM gibi çıkarım sunucuları sayesinde LLaMA 3'ü üretime dağıtmak herhangi bir karmaşık kod gerektirmiyor.

Doğru donanımı sağlamak ise oldukça zor. Öncelikle bu GPU'lar çok maliyetli olduğu için, aynı zamanda mevcut küresel GPU kıtlığı nedeniyle. AWS'de ilk kez bir GPU sunucusu sağlamaya çalışıyorsanız, bir GPU sunucusu oluşturma izniniz olmayabilir. Bu durumda destek ekibiyle iletişime geçmeniz ve kullanım durumunuzu açıklamanız gerekecektir. Bu makalede AWS EC2 kullandık, ancak diğer satıcılar da elbette mevcuttur (Azure, GCP, OVH, Scaleway...).

LLaMA 3'ü kendi başınıza dağıtmak istemiyorsanız, NLP Bulut API'mizi kullanmanızı öneririz. Bu seçenek, kendi LLaMA 3 altyapınızı yönetmekten daha verimli ve potansiyel olarak çok daha uygun maliyetli olabilir. NLP Cloud'da LLaMA 3'ü şimdi deneyin!

LLaMA 3 ve genel olarak yapay zeka dağıtımı hakkında sorularınız varsa, lütfen bize sormaktan çekinmeyin, yardımcı olmaktan her zaman memnuniyet duyarız!

Julien
NLP Cloud'da CTO