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, Mistral ve Mixtral'i vLLM ile AWS EC2 üzerinde dağıtın

2023 yılında, birçok gelişmiş açık kaynaklı LLM piyasaya sürüldü, ancak bu yapay zeka modellerini üretime dağıtmak hala teknik bir zorluk. Bu makalede, AWS EC2 üzerinde en iyi LLM'lerden bazılarının nasıl dağıtılacağını göstereceğiz: LLaMA 3 70B, Mistral 7B ve Mixtral 8x7B. Verimi en üst düzeye çıkarmak için toplu çıkarımı destekleyen gelişmiş bir çıkarım motoru kullanacağız: vLLM.

vLLM

LLaMA 3, Mistral ve Mixtral

Meta, önceden eğitilmiş ve ince ayarı yapılmış çeşitli üretici metin modellerini içeren LLaMA 3 serisi büyük dil modellerini (LLM'ler) oluşturdu ve piyasaya sürdü. Bu modellerin boyutları 7 milyar ile 70 milyar arasında değişen parametrelerle değişmektedir.

Google DeepMind ve Meta'da deneyim sahibi kişiler tarafından kurulan Mistral AI, Mistral 7B ve ardından Mixtral 8x7B ile LLM dünyasına önemli bir giriş yaptı.

Mistral 7B'yi özellikle etkileyici kılan şey performansıdır. Çeşitli testlerde Llama2-13B'den daha iyi performans göstermiş ve hatta birçok metrikte Llama1-34B'yi aşmıştır. Bu, Mistral 7B'nin önemli ölçüde daha düşük bir hesaplama ek yükü ile benzer veya daha iyi yetenekler sağladığını göstermektedir. Kodlama görevleri söz konusu olduğunda, Mistral 7B, CodeLlama 7B ile rekabet eder ve 13,4 GB'lık kompakt boyutu, standart makinelerde çalışmasını sağlar.

Mixtral 8x7B, çeşitli uygulamalar için uygun, uyarlanabilir ve hızlı bir modeldir. Altı kat daha hızlı çalışır ve tüm test metriklerinde LLaMA 3 70B'nin performansını karşılar veya aşar. Bu model birden fazla dili destekler ve doğal kodlama yeteneklerine sahiptir. Uzunluğu 32 bine kadar olan dizileri yönetebilir.

Tüm bu modeller açık kaynaklıdır ve doğru donanıma erişmeyi başarırsanız bunları kendi sunucunuza dağıtabilirsiniz. Şimdi bunları vLLM ile AWS EC2 üzerinde nasıl dağıtacağımızı görelim.

vLLM ile Toplu Çıkarım ve Çoklu GPU

vLLM, verimli LLM çıkarımı ve dağıtımı için özel olarak tasarlanmış hızlı ve kullanıcı dostu bir kütüphanedir. vLLM'nin performansı, etkili dikkat anahtarı ve değer bellek yönetimi için sayfalı dikkat, gelen sorguların gerçek zamanlı olarak toplu işlenmesi ve özelleştirilmiş CUDA çekirdekleri gibi çeşitli gelişmiş tekniklerden gelir.

Ayrıca vLLM, dağıtılmış çıkarım (tensör paralelliği yoluyla), çıktı akışı ve hem NVIDIA hem de AMD GPU mimarileri için uyum yoluyla iyi bir esneklik sunar.

Özellikle vLLM, LLaMA 3, Mistral ve Mixtral'i dağıtmak için çok yararlı olacaktır, çünkü modellerimizi tek bir büyük GPU (NVIDIA A100 veya H100 gibi) yerine birkaç küçük GPU (NVIDIA A10 gibi) yerleştiren AWS EC2 örneklerinde dağıtmamıza izin verecektir. Ayrıca vLLM, toplu çıkarım sayesinde modelimizin verimini önemli ölçüde artırmamızı sağlayacaktır.

AWS EC2'de Doğru Donanımı Sağlama

LLM'leri dağıtmak birçok nedenden dolayı zorlu bir iştir: VRAM (GPU belleği) kullanımı, çıkarım hızı, verim, disk alanı kullanımı... Burada, AWS EC2 üzerinde modellerimizi çalıştırmak için yeterli VRAM'e sahip bir GPU örneği sağlayacağımızdan emin olmamız gerekir.

G5 örnekleri, modern NVIDIA A10 GPU'lara erişim sağladıkları ve 192 GB VRAM'e kadar ölçeklenebildikleri (g5.48xlarge örneğine bakın) ve oldukça uygun maliyetli oldukları için iyi bir seçimdir.

Mistral 7B, yaklaşık 14 GB VRAM gerektirdiğinden kurulumu en kolay modeldir. Ardından 110GB ile Mixtral 8x7B ve 140GB ile LLaMA 3 70B geliyor. Burada fp32'yi değil yalnızca fp16'yı dikkate alıyoruz ve herhangi bir niceleme uygulamıyoruz.

Sonuç olarak Mistral 7B g5.xlarge örneğinde çalışabilir, ancak Mixtral 8x7B ve LLaMA 3 70B g5.48xlarge örneği gerektirir, bu nedenle bu eğitimde bir g5.48xlarge örneği sağlayacağız.

Bu tür örnekleri sağlamak için AWS EC2 konsolunuzda oturum açın ve yeni bir örnek başlatın: g5.48xlarge örneğinde NVIDIA derin öğrenme AMI'sini seçin. En az 300 GB disk alanına ihtiyacınız olacak.

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

Dağıtılmış Çıkarım için vLLM'yi Yükleme

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

pip install vllm

Dağıtılmış çıkarım için 8 x A10 GPU üzerinde vLLM kullanacağımız için Ray'i de yüklememiz gerekiyor:

pip install ray

Yükleme işlemi sırasında uyumluluk sorunları olması durumunda, vLLM'yi kaynaktan derlemek veya Docker imajını kullanmak sizin için daha kolay olabilir: daha fazla ayrıntı için kurulum belgelerine bakın.

Çıkarım Komut Dosyasını Oluşturma

Artık ilk çıkarım betiğinizi oluşturabilirsiniz. Aşağıdakileri içeren bir Python dosyası oluşturun:

from vllm import LLM

# Replace the model name with the one you want to use:
# Mixtral simple: mistralai/Mixtral-8x7B-v0.1
# Mixtral instruct: mistralai/Mixtral-8x7B-Instruct-v0.1
# Mistral 7B simple: mistralai/Mistral-7B-v0.1
# Mistral 7B instruct: mistralai/Mistral-7B-Instruct-v0.1
# LLaMA 3 70B: meta-llama/Llama-2-70b-hf
llm = LLM("mistralai/Mixtral-8x7B-Instruct-v0.1", tensor_parallel_size=8)

print(llm.generate("What is batch inference?"))

Şimdi betiğinizi Python ile çalıştırın, bu da aşağıdaki gibi bir şey döndürür:

Batch inference is the process of applying machine learning models to a batch of data inputs all at once, rather than processing each input individually in real-time. In batch inference, a large set of inputs is collected and then processed together as a group, or "batch," by the machine learning model.

Batch inference is often used in scenarios where real-time predictions are not required, and where there is a large volume of data that needs to be processed. It can be more efficient and cost-effective than real-time inference, as it allows for the efficient use of computing resources and can reduce the latency associated with processing individual inputs.

Batch inference is commonly used in applications such as image recognition, natural language processing, and predictive analytics. For example, a company might use batch inference to analyze customer data and generate insights about purchasing patterns, or to analyze sensor data from industrial equipment to identify potential maintenance issues.

In summary, batch inference is the process of applying machine learning models to a batch of data inputs all at once, as an alternative to real-time inference. It is commonly used in scenarios where real-time predictions are not required and where there is a large volume of data that needs to be processed efficiently.

Gördüğünüz gibi bu çocuk oyuncağı. Sahip olduğunuz temel GPU sayısına bağlı olarak tensor_parallel_size'ı uyarlamanız gerekir.

Yukarıdaki tek seferlik bir senaryoydu. Şimdi birden fazla isteği karşılayabilen ve anında toplu çıkarım yapabilen uygun bir çıkarım sunucusu başlatmak istiyoruz. İlk olarak sunucuyu başlatın:

python -m vllm.entrypoints.openai.api_server \
--model mistralai/Mixtral-8x7B-Instruct-v0.1
--tensor-parallel-size 8

Bir süre sonra, model VRAM'e doğru bir şekilde yüklendiğinde, ikinci bir kabuk penceresi açabilir ve bazı isteklerde bulunabilirsiniz:

curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
    "model": "mistralai/Mixtral-8x7B-Instruct-v0.1",
    "prompt": "What is batch inference?"
}'

Bu, daha önce olduğu gibi aynı sonucu döndürecektir, ancak bu sefer aynı anda birkaç istek gerçekleştirebilirsiniz.

Sonuç

GPU'nuzun kullanımını en üst düzeye çıkarmak ve modelinizi paralel olarak birkaç GPU'ya kolayca dağıtmak istiyorsanız vLLM gibi gelişmiş bir çıkarım sunucusundan yararlanmak faydalıdır.

Gördüğünüz gibi, bu teknik sayesinde LLaMA 3, Mistral ve Mixtral gibi en gelişmiş açık kaynaklı yapay zeka modellerini kendi sunucunuza yerleştirmek oldukça kolaydır.

Bu eğitimde AWS EC2 kullandık ama elbette başka sağlayıcılar da kullanabilirdik. Asıl zorluk GPU'ların maliyeti ve kullanılabilirliği olacaktır.

Bu tür LLM'leri kendiniz dağıtmak istemiyorsanız, bunun yerine NLP Cloud API'mizi kullanmanızı öneririz. Bu size çok zaman kazandıracak ve hatta kendi LLM'lerinizi kurmaktan daha ucuza gelecektir. Henüz yapmadıysanız, denemekten çekinmeyin!

Vincent
NLP Cloud'da Geliştirici Danışmanı