Ana içeriğe geç

vLLM ile Llama 4: Demo Projeyle Rehber

RunPod üzerinde hem metin tamamlama hem de çok modlu çıkarım için Meta'nın LLaMA 4 Scout'unu vLLM ile nasıl dağıtıp kullanacağınızı öğrenin.
· 12 dk. oku

Yapay Zeka ile Keşfedin

Meta’nın en yeni LLaMA 4 modelleri Scout ve Maverick, uzun bağlamlı akıl yürütme, çok modlu anlama ve ölçeklenebilir, verimli çıkarım için geliştirildi. OpenAI uyumlu API’lere sahip, yüksek verimli bir çıkarım altyapısı olan vLLM ile eşleştirildiğinde, bu modeller gerçek dünya uygulamaları için pratik hale geliyor.

Bu blog yazısında, vLLM kullanarak çoklu GPU’lu bir RunPod örneğinde LLaMA 4 Scout’u nasıl dağıtacağınızı ve onu yerel veya uzak bir OpenAI uyumlu API uç noktası üzerinden nasıl sunacağınızı adım adım göstereceğim. Model kurulumu, dağıtım ve hem metin hem de görsel girdilerle API etkileşimini ele alacağız.

Bu öğreticinin sonunda iki tam demo da elinizde olacak:

  1. Metin tamamlama demosu: OpenAI uyumlu Python kodu kullanarak LLaMA 4 ile sohbet etmeye ve uzun bağlam yeteneklerini keşfetmeye yönelik basit bir arayüz.
  2. Çok modlu görsel demo: vLLM’in çok modlu desteğini kullanarak hem metin hem de görsel girdileri kabul eden ve LLaMA 4’ten temellendirilmiş görsel akıl yürütme yanıtları döndüren bir arayüz.

Okurlarımızı yapay zekâdaki en son gelişmelerden haberdar etmek için, haftanın öne çıkan haberlerini sade bir dille özetleyen, ücretsiz Cuma bültenimiz The Median’i gönderiyoruz. Abone olun; haftada sadece birkaç dakikada güncel kalın:

Neden vLLM Üzerinde LLaMA 4 Kullanmalı?

vLLM (virtual large language model), UC Berkeley Sky Computing Lab’de geliştirilen, GPU belleği parçalanmasını en aza indiren ve çok uzun diziler için verimli anahtar-değer önbelleklemesini mümkün kılan yeni bir bellek yönetim sistemi olan PagedAttention’ı tanıtan, optimize edilmiş bir LLM çıkarım çerçevesidir. Daha fazla bilgi için şu öğreticiye göz atın: vLLM.

İşte vLLM’in LLaMA 4’ü sunmak için ideal bir altyapı olmasının nedenleri:

  1. Yüksek işleme hacmi, düşük gecikme: vLLM’in sayfalı KV önbelleği, uzun bağlamlarda bile verimli çıkarım sağlar.
  2. Çok modlu ve uzun bağlam hazır: Scout modeli için hem görselleri hem de 10M tokene kadar bağlamı destekler.
  3. OpenAI uyumlu: OpenAI SDK’ları ve araçlarını herhangi bir değişiklik yapmadan kullanabilirsiniz.
  4. Ölçeklenebilir ve GPU verimli: vLLM, tensör ve bellek paralelliğiyle H100, A100 ve MI300X dahil birden çok GPU’dan tam verim alarak yüksek hacimli çıkarım yapar.

vLLM ile RunPod Üzerinde LLaMA 4 Scout Barındırma

Bu bölümde, RunPod üzerinde güçlü bir çoklu GPU örneği sağlamayı, Meta’nın LLaMA 4 Scout modelini vLLM ile dağıtmayı ve hem yerel hem de uzaktan çıkarım için OpenAI uyumlu bir API’yi dışa açmayı adım adım inceleyeceğiz.

Adım 1: RunPod ortamınızı kurun 

Modeli başlatmadan önce RunPod hesabınızın kurulu olduğundan emin olun:

  • RunPod.io’ya giriş yapın ve faturalandırmayı yapılandırın.
  • Bu proje süresince büyük GPU örneklerini çalıştırabilmek için bakiyenize en az 25 $ ekleyin.

Adım 2: H100 NVL GPU’larla bir pod dağıtın

Şimdi, 17B LLaMA 4 Scout modelini barındırabilecek bir pod sağlayalım:

  1. Pods bölümüne gidin ve “Deploy a Pod”a tıklayın.
  2. GPU’ları VRAM’e göre filtreleyin, minimumu 80 GB olarak ayarlayın ve H100 NVL seçeneğini seçin. Not: LLaMA 4 Scout en az 24 GB VRAM gerektirir. En iyi performans için 4x H100 NVL kullanacağız.

Llama 4 için RunPod H100 NVL GPU

  1. Aşağı kaydırın ve pod’unuza “LLAMA4_DEMO” gibi bir ad verin.
  2. Template altında “Change Template”e tıklayın ve PyTorch 2.4.0’ı seçin.
  3. “Edit Template”e tıklayın, Container Disk ve Volume Disk’i 1000 GB olarak ayarlayın ve overrides uygulayın.
  4. (İsteğe bağlı) Modelleri indirebilmek için Hugging Face erişim belirtecinizi ortam değişkenlerine ekleyin.

RunPod üzerinde Llama 4 çalıştırmak için şablon geçersiz kılmalarını düzenleme

  1. GPU Count’ı 4 olarak ayarlayın, ardından “Deploy On-Demand”e tıklayın.

runpod pytorch 2.4.0 için GPU Sayısı ayarları

Pod’un sağlanması için birkaç dakika bekleyin.

Sağlanan Pod

Adım 3: Pod’unuza bağlanın

“Connect” düğmesi mor renge döndüğünde tıklayın. Birden fazla bağlantı seçeneği göreceksiniz—şunlardan birini yapabilirsiniz:

  • Kabuk komutları çalıştırmak için bir JupyterLab terminali açın.
  • Veya uzaktan kontrol için SSH ya da HTTP portlarını kullanın.

Adım 4: vLLM ve gerekli kütüphaneleri kurun

Pod’unuzun içindeki terminalde vLLM ve bağımlılıklarını kurun. vLLM ve diğer kütüphaneleri pod ortamına yükleyin.

pip install -U vllm
pip install transformers accelerate pillow #optional

Adım 5: vLLM üzerinde LLaMA 4 Scout çalıştırın

Sırada, aşağıdaki komutla LLaMA 4 Scout model sunucusunu başlatıyoruz:

VLLM_DISABLE_COMPILE_CACHE=1 vllm serve meta-llama/Llama-4-Scout-17B-16E-Instruct \
--tensor-parallel-size 4 \
--max-model-len 100000 --override-generation-config='{"attn_temperature_tuning": true}'

Bu komut şunları yapar:

  • Daha hızlı başlangıç için vLLM derleme önbelleğini devre dışı bırakır.
  • Modeli tensör paralelliğiyle 4 GPU üzerinde çalıştırır.
  • Bellek kısıtları nedeniyle en fazla 100.000 token bağlam uzunluğu ayarlar. Not — Modeli 10M bağlam uzunluğuyla çalıştırmak isterseniz en az 8 x H100 GPU gerekir.
  • Uzun bağlamlı çıkarımda doğruluğu artırmak için attention temperature tuning yapılandırmasını etkinleştirir.

Llama 4 için vLLM kurulumu

Llama 4 için model parçalarının indirilmesi

Artık API’niz 8000 numaralı portta çalıştığına göre, aynı pod ortamında yeni bir Jupyter Notebook oluşturun.

Llama 4 Scout ile Metin Tamamlama

Bu demoda, vLLM üzerinden sunulan yerel LLaMA 4 Scout modeliyle basit bir Python betiği kullanarak etkileşime geçeceğiz. Model API üzerinden sunulduğu için, çok turlu diyaloğu destekleyen bir sohbet asistanı oluşturabiliriz.

Adım 1: Önkoşullar

vLLM API’siyle iletişim kurmak için resmi OpenAI Python SDK’sını ve uçbirim çıktısını renklendirmek için Colorama kütüphanesini kullanacağız. Her ikisini de şu komutla kurabilirsiniz:

pip install openai colorama

Kurulumdan sonra gerekli modülleri içe aktarın:

from openai import OpenAI
from colorama import Fore, Style, init

Adım 2: İstemciyi başlatın

OpenAI istemcisini yerelde çalışan vLLM sunucumuza işaret edecek şekilde yapılandırıyoruz. Dağıtımınız bir API anahtarı gerektirmiyorsa (yerel çalıştırmalar için varsayılan davranış), anahtar olarak "EMPTY" verin:

# Initialize colorama
init(autoreset=True)
# Set up client
openai_api_key = "EMPTY"  
openai_api_base = "http://localhost:8000/v1"
client = OpenAI(
    api_key=openai_api_key,
    base_url=openai_api_base,
)

Bu kod, Colorama kütüphanesini otomatik sıfırlamalı renkli uçbirim çıktısı için başlatır. Ardından OpenAI sınıfını kullanarak OpenAI uyumlu bir istemci kurar ve yerelde barındırılan vLLM API’sine işaret eder.

Adım 3: Sohbet döngüsünü başlatın

Sonraki adımda, modelle kesintisiz etkileşime olanak tanıyan basit bir döngü uyguluyoruz. Konuşma geçmişi turlar boyunca korunur ve çok turlu diyalog davranışı sağlanır.

# Initialize message history
messages = [
    {"role": "system", "content": "You are a helpful assistant."}
]
print("Start chatting with the assistant! Type 'exit' or 'quit' to end.\n")
while True:
    user_input = input(f"{Fore.BLUE}User: {Style.RESET_ALL}")
    if user_input.strip().lower() in ["exit", "quit"]:
        print("Exiting chat. Goodbye!")
        break
    messages.append({"role": "user", "content": user_input})
    chat_response = client.chat.completions.create(
        model="meta-llama/Llama-4-Scout-17B-16E-Instruct",
        messages=messages,
    )
    assistant_message = chat_response.choices[0].message.content
    print(f"{Fore.GREEN}Assistant: {assistant_message}\n{Style.RESET_ALL}")
    messages.append({"role": "assistant", "content": assistant_message})

Basit bir uçbirim tabanlı sohbet arayüzü, konuşma geçmişi ve bir sistem yönergesiyle başlatılır ve döngüde sürekli kullanıcı girişi kabul eder. Her kullanıcı iletisi, ileti geçmişine eklenir ve Llama-4-Scout-17B-16E-Instruct modeline client.chat.completions.create() API çağrısı üzerinden gönderilir.

Modelin yanıtı Colorama ile yeşil renkte yazdırılır ve ileti geçmişine eklenir; kullanıcı "exit" veya "quit" yazana kadar çok turlu diyalog devam eder.

vLLM üzerinde Llama 4 Scout için metin tamamlama demosu

Bir sonraki bölümde, aynı API’yi kullanarak görsel + metin girdileriyle çok modlu çıkarımı nasıl çalıştıracağımızı inceleyeceğiz.

LLaMA 4 Scout ile Çok Modlu Görsel ve Metin Çıkarımı

Bu demoda, vLLM üzerinden barındırılan LLaMA 4 Scout modeline yerel çok modlu yeteneklerini kullanarak hem görsel hem de metin girdileri göndermeyi keşfedeceğiz. Bu sayede tek bir OpenAI uyumlu API ile görsel akıl yürütme, görsel altyazı üretimi veya çok modlu Soru-Cevap gerçekleştirebilirsiniz.

Adım 1: Önkoşullar

Bu örnek, vLLM sunucusuyla etkileşim için OpenAI SDK’yı kullanır. Henüz kurulu değilse şu komutu çalıştırabilirsiniz:

pip install openai

Ardından gerekli modülü içe aktarın: 

from openai import OpenAI

Adım 2: API istemcisini kurun

OpenAI uyumlu arayüzü kullanarak yerel vLLM sunucunuza bağlanın. Sunucunuz kimlik doğrulama gerektirmiyorsa, API anahtarı olarak "EMPTY" kullanın.

openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"
client = OpenAI(
    api_key=openai_api_key,
    base_url=openai_api_base,
)

Yukarıdaki kod parçacığı, vLLM sunucusunu kullanarak yerel çıkarım için OpenAI uyumlu bir istemci başlatır. api_key "EMPTY" olarak ayarlanmıştır (kimlik doğrulama yok) ve base_url yerel vLLM API uç noktasını işaret eder.

Adım 3: Çok modlu bir istem göndərin

Şimdi hem bir görsel hem de metin yönergesi içeren bir sohbet istemi göndereceğiz. LLaMA 4 Scout, görseli sorguyla birlikte işleyip açıklayıcı bir yanıt döndürecek.

messages = [
    {
        "role": "user",
        "content": [
            {"type": "image_url", "image_url": {"url": image_url1}},
            {"type": "text", "text": "Can you describe what's in this image?"}
        ]
    }
]
chat_response = client.chat.completions.create(
    model="meta-llama/Llama-4-Scout-17B-16E-Instruct",  
    messages=messages,
)
print("Response:", chat_response.choices[0].message.content)

LLaMA 4 Scout modeliyle çok modlu çıkarım sunulduktan sonra, OpenAI sohbet şemasına göre biçimlendirilmiş şekilde hem bir görsel URL’si hem de metin istemi içeren bir sohbet tarzı girdi oluşturuyoruz. client.chat.completions.create() yöntemi, bu çok modlu isteği modele göndermek için kullanılır; model görseli ve eşlik eden metni işleyerek bağlamsal bir yanıt üretir.

Çok modlu demo

Çok modlu demo

Sonuç

Bu öğreticide, Meta’nın LLaMA 4 Scout modelini RunPod üzerinde vLLM kullanarak barındırdık; hem metin hem de çok modlu çıkarım için OpenAI uyumlu uç noktalar üzerinden erişilebilir hale getirdik. vLLM’in yüksek işleme hacmini ve RunPod’un güçlü altyapısını birleştirerek, uzun bağlam ve görsel yeteneklere sahip, son teknoloji LLM’leri sunmak için maliyet etkin bir kurulum oluşturduk.

LLaMA 4 ve vLLM hakkında daha fazla bilgi için şunlara göz atın:

Aashi Dutt

Yazar

Aashi Dutt

ML (Üretken Yapay Zekâ) alanında Google Developers Uzmanıyım, Kaggle 3x Expert unvanına sahibim ve 3+ yıllık teknoloji deneyimiyle Women Techmakers Elçisiyim. 2020'de bir sağlık teknolojileri girişiminin kurucu ortağı oldum ve Georgia Tech'te makine öğrenmesi alanında uzmanlaşarak bilgisayar bilimleri yüksek lisansı yapıyorum.

Konular

İlgili