Tüm 6 veri merkezi çalışıyor

Kripto ile ödenir · Kimlik kontrolü yok · 5 dakikanın altında içinde root erişimi

Uygulama rehberi · 11 dakikalık okuma

Llama 3.3 70B'yi tek bir düğümde sunmak.

Beş dakika önce teslim edilen bir makineden, istekleri yanıtlayan OpenAI uyumlu bir uç noktaya — işlem hacminizi sessizce yarıya indiren iki bayrak ve sizi ele geçirilmeye açık bırakan bayrakla birlikte.

Kısa cevap

Gereken bellek
4-bit'te 43 GB, FP8'de 82 GB, BF16'da 164 GB — tümü 8k bağlamda
En basit makine
Bir adet 80 GB'lık kart. Sharding yok, ara bağlantı yok, senkronizasyon yok
İlk tokene kadar geçen süre
Teslimattan itibaren on beş dakikadan az, çoğu ağırlıkları indirmekle geçer
Tek hata
8000 portunu herkese açık bir adreste yayınlamak. Kimlik doğrulaması yoktur

Gerekenler

70 milyar parametre. 4-bit'te bu, 35 GB ağırlık demektir; KV önbelleği tek bir istek için 8k bağlamda 2.5 GB daha ekler, çalışma zamanı ek yükü ise yaklaşık %15'tir. Geri kalan her şey bu üç sayıdan çıkar — boyutlandırma rehberi bunların nereden geldiğini gösterir.

Llama 3.3 70B için gereken bellek, hassasiyet ve bağlama göre
HassasiyetAğırlıklar 8k bağlamında toplam32k bağlamında toplam128k bağlamında toplam
BF16 / FP16Referans kalitesi 140 GB 164 GB 173 GB 207 GB
FP8Referansa yakın, Hopper ve Blackwell 70 GB 82 GB 86 GB 103 GB
4-bit (AWQ, GPTQ)En küçük ağırlıklar, önbellek FP16 kalır 35 GB 43 GB 52 GB 86 GB

128k'daki 4-bit satırına dikkat edin: ağırlıklar 35 GB'a küçülür ama önbellek hiç küçülmez, çünkü AWQ ve GPTQ yalnızca ağırlıkları nicemler. Aşağıdaki makine seçiminin çoğunu belirleyen tek gerçek budur.

Düğüm seçimi

Katalogumuzdaki, bu modeli tek bir kartta barındıran en ucuz makineler — mümkünse tercih edeceğiniz yapılandırma budur: sharding olmayınca senkronizasyon da olmaz, hata ayıklanacak bir şey daha az olur.

Llama 3.3 70B'yi tek kartta barındıran düğümler
DüğümSığan hassasiyetKart belleğiTahmini tok/sAylık
NVIDIA RTX A6000PCIe 5.0 · 768 GB/s 4-bit (AWQ, GPTQ) 48 GB ~10 $286/ay
2 × NVIDIA RTX A6000PCIe 5.0 ×16 · 768 GB/s 4-bit (AWQ, GPTQ) 48 GB ~10 $597/ay
NVIDIA L40SPCIe 5.0 · 864 GB/s 4-bit (AWQ, GPTQ) 48 GB ~11 $714/ay
NVIDIA A100 PCIePCIe 5.0 · 1,935 GB/s 4-bit (AWQ, GPTQ) 80 GB ~25 $1,091/ay

İşlem hacmi, bellek bant genişliğiyle sınırlı tek akışlı üretimdir ve kasıtlı olarak muhafazakârdır. Sürekli batching ile eşzamanlı istekler genelinde toplam değer kat kat daha yüksektir — vLLM'in bütün amacı budur.

On dakikalık kurulum

Burada adres dışında bize özgü hiçbir şey yoktur. Docker, NVIDIA container toolkit ve çalışan bir sürücü yığını makinede zaten hazırdır.

Makineyi onaylayın, ardından ağırlıklara barınacak bir yer verin
$ ssh root@203.0.113.42
$ nvidia-smi --query-gpu=name,memory.total --format=csv

# Weights on the fast local NVMe, not the system volume.
$ mkdir -p /scratch/models
$ df -h /scratch

# A gated model needs a token. Skip if yours is open.
$ export HF_TOKEN=hf_xxxxxxxxxxxxxxxxxxxx

Sunucuyu başlatmak

Tek bir konteyner. İlk çalıştırma yaklaşık 40 GB nicemlenmiş ağırlık indirir; bu da 1 Gbit/s hızındaki bir portta birkaç dakika sürer; bundan sonraki her yeniden başlatma saniyeler içinde tamamlanır.

vLLM, tek kart, 4-bit
$ docker run -d --name vllm --restart unless-stopped \
    --gpus all --ipc=host \
    -v /scratch/models:/root/.cache/huggingface \
    -e HF_TOKEN="$HF_TOKEN" \
    -p 127.0.0.1:8000:8000 \
    vllm/vllm-openai:latest \
    --model casperhansen/llama-3.3-70b-instruct-awq \
    --quantization awq_marlin \
    --max-model-len 8192 \
    --gpu-memory-utilization 0.92

# Watch it load. "Application startup complete" is the signal.
$ docker logs -f vllm
İlk istek
$ curl -s http://127.0.0.1:8000/v1/models | head

$ curl -s http://127.0.0.1:8000/v1/chat/completions \
    -H 'Content-Type: application/json' \
    -d '{"model":"casperhansen/llama-3.3-70b-instruct-awq",
         "messages":[{"role":"user","content":"In one sentence: what is a KV cache?"}],
         "max_tokens":80}'

Önemli olan bayraklar

--max-model-lenSunduğunuz bağlama ayarlayınvLLM, KV önbelleğini beyan edilen maksimum için ayırır. Siz 8192 sunarken 131072 beyan etmek, ihtiyacınız olan belleğin on altı katını çöpe atmak demektir ve bunun belirtisi bir hata değil, “yetersiz eşzamanlılık”tır.
--gpu-memory-utilization0.90 ile 0.95 arasıvLLM'in talep edebileceği kart oranı. Talep etmediği her şey boşa gider; adanmış bir makinede 0.90 varsayılanını bırakmak size gerçek eşzamanlılığa mal olur. 0.95'in üzerine çıkmayın.
--ipc=hostZorunlu, isteğe bağlı değilBu olmadan konteynerin paylaşılan belleği 64 MB ile sınırlı kalır. Tek kartta bu sorun yaratmayabilir; sharding uygulanmış bir modelde ise NCCL, anlamlı bir hata vermeden takılır.
--tensor-parallel-sizeYalnızca model sığmadığındaTek bir karta sığan bir modelde sharding yapmak onu daha yavaş hale getirir. Ara bağlantı rehberine bakın — pahalı bir düğümün ucuz bir düğümden daha kötü performans göstermesinin en yaygın tek yolu budur.
--kv-cache-dtype fp8Önbelleğinizi yarıya indirirHopper ve Blackwell'de. Tutabileceğiniz bağlamı veya eşzamanlılığı iki katına çıkarır, genellikle ölçülemeyen bir kalite maliyetiyle. Bu listedeki en kolay kazanç.
--max-num-seqsGerçek eşzamanlılığınıza sınırlayınSekiz kullanıcıya hizmet veren bir makinede bunu 256'da bırakmak, vLLM'in 256 için planlama yapması ve tutamayacağı istekleri kabul etmesi anlamına gelir; bu da reddetme değil, gecikme sıçramaları olarak ortaya çıkar.

Onu dünyaya yayınlamamak

OpenAI uyumlu API'nin varsayılan olarak kimlik doğrulaması yoktur. Herkese açık bir adreste 0.0.0.0'a bağlıysa, bu açık bir çıkarım sunucusudur ve tarayıcılar bunları saatler içinde bulur. Yukarıdaki komuttaki -p 127.0.0.1:8000:8000 kısmına dikkat edin — baştaki bu adres, onu internetten uzak tutan şeydir ve başka bir yerden komut kopyalanırken en sık atlanan tek karakterdir.

Kendi makinenizden bir SSH tüneli üzerinden erişin — açılan port yok, yönetilecek sertifika yok, yanlış yapılandırılacak bir şey yok:

Dizüstü bilgisayarınızdan
$ ssh -N -L 8000:127.0.0.1:8000 root@203.0.113.42

# Now http://127.0.0.1:8000 on your laptop is the server.

Gerçekten herkese açık olması gerekiyorsa, önüne TLS ve bir API anahtarıyla bir ters proxy koyun ve güvenlik duvarında kaynak adreslerini de kısıtlayın. Dokümantasyonda minimal bir kural kümesi bulunur. Herkesin sorduğuna yanıt verecek bir uç nokta için doğru duruş, çifte önlemdir.

İşlem hacmini artırmak

Denemeye değer sıraya göre. İlk ikisi ücretsizdir ve genellikle en büyük kazancı sağlar.

  1. --max-model-len değerini gerçek bağlamınıza düşürün. Neredeyse her zaman tek başına en büyük kazanç budur ve kullanmadığınız hiçbir şeye mal olmaz.
  2. --gpu-memory-utilization değerini 0.95'e çıkarın. Bu, adanmış bir makinedir; kartta yer ayrılacak başka bir şey yoktur.
  3. Kart destekliyorsa FP8 KV önbelleğini açın. Tutabileceğiniz miktarı ikiye katlar.
  4. İstemci tarafında batch yapın. Sürekli batching yalnızca istekler eşzamanlı geldiğinde işe yarar. Tek tek gelen istekler, ne yapılandırırsanız yapılandırın kartın çoğunu boşta bırakır.
  5. Ancak bundan sonra, daha hızlı bir kart düşünün. Üretim hızı bellek bant genişliğiyle sınırlıdır, bu yüzden 4.800 GB/s'teki bir H200, aynı model için 2.000'deki bir H100 PCIe'nin kabaca 2,4× katıdır — gerçek bir kazanç, ve bu listedeki en pahalısı.
Önce ve sonra ölçün — tahmin etmeyin
$ docker exec vllm python -m vllm.entrypoints.openai.api_server --help | head -1
$ docker exec vllm vllm bench serve \
    --model casperhansen/llama-3.3-70b-instruct-awq \
    --num-prompts 200 --request-rate 8

# And watch the card while it runs: if utilisation sits below 90%,
# the bottleneck is your client, not the GPU.
$ nvidia-smi dmon -s um

Çalışır durumda tutmak

İlk gün yapılmaya değer üç şey, çünkü üçünü de on dördüncü günde keşfetmek can sıkıcıdır.

Yeniden başlatma politikası

--restart unless-stopped yukarıdaki komutta yer alır. Yeniden başlatmadan sonra konteyner geri döner ve ağırlıklar zaten /scratch üzerindedir, böylece bir dakikadan kısa sürede çalışır hale gelir.

Süreci değil, kartı izleyin

Veri yolundan düşmüş bir GPU, sağlıklı görünen bir konteyner bırakır. Bir sağlık kontrolünde nvidia-smi -q -d PERFORMANCE bunu yakalar; bir port kontrolü yakalamaz.

Ağırlıkların yedeği alınmaz

Bunlar yalnızca yerel NVMe'nizde bulunur, başka hiçbir yerde değil. Bu sorun değil — yeniden indirilebilirler. Fine-tuning yapılmış adaptörleriniz öyle değildir, bu yüzden onları makinenin dışında bir yere koyun.

Ve süre sona erdiğinde, diskler bir saat içinde, hiçbir ek süre tanınmadan silinir. /scratch üzerindeki her şey bununla birlikte gider. Bu kasıtlıdır — size verilen makinede başka kimsenin verisinin olmadığını garanti eden söz de aynı sözdür — ama bu, sürenin son gününün dosyaları kopyalamaya başlamak için uygun bir gün olmadığı anlamına gelir.

Bu modeli kiraladığımız her düğüme karşı kontrol edin.

Yapılandırıcı, hangi yapılandırmaların modeli tek bir kartta barındırdığını, hangilerinin bölmek zorunda olduğunu ve her birinin maliyetini bildirir.

Giriş Yapın

Konsol, makbuzlar ve bant dışı erişim.

Henüz hesabınız yok mu?

Ayrı bir kayıt işlemi yoktur. Hesabınız, ilk siparişinizi verirken oluşturulur — e-postayı ve şifreyi ödeme adımında seçersiniz, ve makine hazır olduğunda konsol da açık olur.

Bir sunucu yapılandırın

Language