ਸਮੱਗਰੀ 'ਤੇ ਜਾਓ

ਬਲੌਗ

ਟਰਬੋਚਾਰਜਿੰਗ LLMs

PagedAttention, vLLM, Self-Debugging, PowerInfer, ਅਤੇ EG-MLA — GPU ਕੇਵੀ ਕੈਚ ਨੂੰ ਬਰਬਾਦ ਕੀਤੇ ਬਿਨਾਂ LLM ਏਜੰਟਾਂ ਨੂੰ ਕਿਵੇਂ ਸਕੇਲ ਕਰਨਾ ਹੈ

  • Balinder Walia
  • 4 ਮਿੰਟ ਦੀ ਪੜ੍ਹਤ
  • Updated

TenthMatrixਉਤਪਾਦਨ ਵਿੱਚ ਵੱਡੇ ਭਾਸ਼ਾ ਮਾਡਲਾਂ ਨੂੰ ਕਿਵੇਂ ਟਰਬੋਚਾਰਜ ਕਰਨਾ ਹੈ: PagedAttention, vLLM, Self-Debugging, PowerInfer, ਅਤੇ EG-MLA — ਅਸਲ ਵਿੱਚ GPUs 'ਤੇ ਦਿਖਾਈ ਦੇਣ ਵਾਲੇ ਟ੍ਰੇਡ-ਆਫ ਦੇ ਨਾਲ। ਡੂੰਘੀ ਗੋਤਾਖੋਰੀ:ਲੰਬਾ ਲੇਖ। ਪ੍ਰਾਈਮਰ:LLMs ਸਮਝਾਇਆ + Kubernetes।

Turbocharging LLMs cover

ਹੇਠਲੀ ਲਾਈਨ। KV ਕੈਸ਼ ਦੇ ਟੁਕੜੇ ਹੋਣ 'ਤੇਥ੍ਰੋਪੁਟ ਮਰ ਜਾਂਦਾ ਹੈ। ਇੱਕ OS (vLLM ਦੇ ਅੰਦਰ PagedAttention) ਦੀ ਤਰ੍ਹਾਂ ਕੈਚ ਪੇਜ ਕਰੋ, ਇੱਕ ਟੋਕਨ ਇੰਜਣ ਚੁਣੋ ਜੋ ਬਾਕਸ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੋਵੇ (ਇੱਕ ਚਰਬੀ ਵਾਲੇ ਖਪਤਕਾਰ GPU 'ਤੇ PowerInfer, ਇੱਕ ਸਰਵਿੰਗ ਕਲੱਸਟਰ 'ਤੇ vLLM), ਜਦੋਂ ਆਰਕੀਟੈਕਚਰ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ (EG-MLA), ਅਤੇ ਕੈਪ ਏਜੰਟ ਡੀਬੱਗ ਲੂਪਸ ਨੂੰ ਸੁੰਗੜਦਾ ਹੈ, ਤਾਂ ਕਿ ਗੁਣਵੱਤਾ ਬੇਲੋੜੀ ਖਰੀਦ ਨਾ ਕਰੇ।

ਵਾਚ: ਇੱਕ LLM ਅਸਲ ਵਿੱਚ

ਕੀ ਹੈ

ਸੰਦਰਭ, ਉਤਪਾਦ ਡੈਮੋ ਨਹੀਂ:ਵੱਡੀ ਭਾਸ਼ਾ ਦੇ ਮਾਡਲਾਂ ਲਈ(ਐਂਡਰੇਜ ਕਾਰਪੈਥੀ) ਦੀ ਪਛਾਣ। ਸਾਡੀਪਲੇਨ-ਅੰਗਰੇਜ਼ੀ LLM + Kubernetes ਗਾਈਡਨਾਲ ਜੋੜਾ ਬਣਾਓ।

ਸਕੇਲਿੰਗ ਸਮੱਸਿਆ

LLMs ਨੇ ਗੱਲਬਾਤ ਵਾਲੀ AI ਅਤੇ ਪੀੜ੍ਹੀ ਨੂੰ ਅਨਲੌਕ ਕੀਤਾ, ਫਿਰ ਤੁਰੰਤ ਇੱਕ ਸੇਵਾ ਸਮੱਸਿਆ ਬਣ ਗਈ। ਹਰੇਕ ਡੀਕੋਡ ਪਗ ਇੱਕ KV ਕੈਸ਼ ਵਿੱਚ ਕੁੰਜੀਆਂ ਅਤੇ ਮੁੱਲ ਜੋੜਦਾ ਹੈ ਜੋ ਕ੍ਰਮ ਦੀ ਲੰਬਾਈ ਅਤੇ ਬੈਚ ਆਕਾਰ ਨਾਲ ਵਧਦਾ ਹੈ। ਭੋਲੇ-ਭਾਲੇ ਇੰਜਣ ਵੱਡੀਆਂ ਸੰਗਠਿਤ ਸਲੈਬਾਂ ਨੂੰ ਪੂਰਵ-ਰਿਜ਼ਰਵ ਰੱਖਦੇ ਹਨ। ਉਸ ਵਿੱਚੋਂ ਜ਼ਿਆਦਾਤਰ ਮੈਮੋਰੀ ਵਿਹਲੀ ਰਹਿੰਦੀ ਹੈ ਜਦੋਂ ਕਿ ਹੋਰ ਬੇਨਤੀਆਂ ਉਡੀਕ ਕਰਦੀਆਂ ਹਨ। GPU "ਪੂਰਾ" ਦਿਸਣ ਦੇ ਬਾਵਜੂਦ ਥ੍ਰੂਪੁੱਟ ਸਮੇਟਦਾ ਹੈ।

PagedAttention: ਧਿਆਨ

ਲਈ ਵਰਚੁਅਲ ਮੈਮੋਰੀ

PagedAttention maps logical token pages to physical GPU KV blocks

PagedAttention (Kwon et al., SOSP 2023) KV ਕੈਸ਼ ਨੂੰ OS ਪੇਜਿੰਗ ਵਾਂਗ ਵਰਤਦਾ ਹੈ: ਫਿਕਸਡ-ਸਾਈਜ਼ ਬਲਾਕ, ਪ੍ਰਤੀ ਬੇਨਤੀ ਇੱਕ ਬਲਾਕ ਟੇਬਲ, ਗੈਰ-ਸੰਬੰਧਿਤ ਭੌਤਿਕ ਪੰਨੇ[arXiv:2309.06180]। ਕਰਨਲ ਧਿਆਨ ਦੇ ਸਮੇਂ ਬਲਾਕਾਂ ਨੂੰ ਇਕੱਠਾ ਕਰਦਾ ਹੈ। ਤੁਹਾਨੂੰ ਅਜੇ ਵੀਬਲਾਕ ਆਕਾਰ,ਅਧਿਕਤਮ ਮਾਡਲ ਲੰਬਾਈ, ਅਤੇਕੈਸ਼ ਲੜੀ(GPU HBM ਬਨਾਮ CPU ਆਫਲੋਡ ਬਨਾਮ ਪ੍ਰੀਫਿਕਸ ਕੈਸ਼) ਨੂੰ ਟਿਊਨ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਬਹੁਤ ਛੋਟੇ ਬਲਾਕ ਮੈਪਿੰਗ ਓਵਰਹੈੱਡ ਜੋੜਦੇ ਹਨ; ਬਹੁਤ ਵੱਡੇ ਬਲਾਕ ਕੂੜੇ ਨੂੰ ਦੁਬਾਰਾ ਪੇਸ਼ ਕਰਦੇ ਹਨ।

vLLM:

ਦੀ ਸੇਵਾ ਕਰਨ ਵਾਲਾ ਲਗਭਗ-ਜ਼ੀਰੋ ਵੇਸਟ

vLLM PagedAttention ਦੇ ਆਲੇ-ਦੁਆਲੇ ਬਣਾਇਆ ਸਰਵਿੰਗ ਸਿਸਟਮ ਹੈ। ਇਹ ਨੇੜੇ-ਜ਼ੀਰੋ ਕੇਵੀ ਰਹਿੰਦ-ਖੂੰਹਦ, ਨਿਰੰਤਰ ਬੈਚਿੰਗ, ਅਤੇ ਇੱਕ OpenAI- ਅਨੁਕੂਲ HTTP ਸਤਹ ਨੂੰ ਨਿਸ਼ਾਨਾ ਬਣਾਉਂਦਾ ਹੈ। ਉਤਪਾਦਨ ਵਿੱਚ, ਤਿੰਨ ਚੀਜ਼ਾਂ ਦੇਖੋ: (1)gpu_memory_utilizationਬਨਾਮ OOM, (2) ਟਾਈਮ-ਟੂ-ਫਸਟ-ਟੋਕਨ ਬਨਾਮ ਡੀਕੋਡ ਟੋਕਨ/s, (3) ਕੀ ਪ੍ਰੀਫਿਕਸ / ਪ੍ਰੋਂਪਟ ਕੈਚਿੰਗ ਤੁਹਾਡੇ ਈਵਲ ਸੈੱਟ ਲਈ ਜਵਾਬ ਬਦਲਦੀ ਹੈ। ਕੈਚਿੰਗ ਇੱਕ ਥ੍ਰੋਪੁੱਟ ਜਿੱਤ ਹੈ; ਇਹ ਸ਼ੁੱਧਤਾ ਅਤੇ ਟੇਲ-ਲੇਟੈਂਸੀ ਪ੍ਰਭਾਵਾਂ ਤੋਂ ਮੁਕਤ ਨਹੀਂ ਹੈ।

from vllm import LLM, SamplingParams

llm = LLM(model="meta-llama/Llama-3.1-8B-Instruct", gpu_memory_utilization=0.90)
params = SamplingParams(temperature=0.2, max_tokens=256)
outs = llm.generate(["Explain PagedAttention in one paragraph."], params)
print(outs[0].outputs[0].text)

ਇਹ ਅਸਲ vLLM ਵਰਤੋਂ ਹੈ। ਇੱਕ ਹੱਗਿੰਗ ਫੇਸ BERTforward()ਕਾਲਹੈPagedAttention ਨਹੀਂ — ਪੇਜਡ KV ਸਰਵਿੰਗ ਨਾਲ ਕਲਾਸੀਫਾਇਰ ਲੌਗਿਟਸ ਨੂੰ ਉਲਝਾਓ ਨਾ।

Self-Debugging: ਲੇਟੈਂਸੀ ਬਜਟ

ਦੇ ਨਾਲ ਕੁਆਲਿਟੀ ਲੂਪਸ

Self-Debugging (ਚੇਨ ਐਟ ਅਲ.) ਇੱਕ ਮਾਡਲ ਨੂੰ ਕੁਝ-ਸ਼ੌਟ ਟਰੇਸ, ਮੇਲ ਖਾਂਦੀਆਂ ਜਾਂ ਬੇਸਲਾਈਨਾਂ ਤੋਂ ਆਪਣੇ ਖੁਦ ਦੇ ਪੂਰਵ-ਅਨੁਮਾਨਿਤ ਪ੍ਰੋਗਰਾਮਾਂ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ ਸਿਖਾਉਂਦਾ ਹੈ ਜੋ 10 ਗੁਣਾ ਜ਼ਿਆਦਾ ਉਮੀਦਵਾਰਾਂ ਨੂੰ ਛੱਡਦਾ ਹੈ[arXiv:2304.05128]। ਏਜੰਟਾਂ ਲਈ, ਇਹ ਸੋਨਾ ਹੈ - ਜਦੋਂ ਤੱਕ ਫੀਡਬੈਕ ਰਾਊਂਡ ਸਟੈਕ ਨਹੀਂ ਹੁੰਦਾ। ਡੀਬੱਗ ਸੁਨੇਹਿਆਂ ਦੀ ਸੰਖਿਆ ਨੂੰ ਕੈਪ ਕਰੋ, ਹਰੇਕ ਗੇੜ ਨੂੰ ਲੌਗ ਕਰੋ, ਅਤੇ ਬਜਟ ਖਤਮ ਹੋਣ 'ਤੇ ਮਨੁੱਖੀ ਜਾਂ ਕਿਸੇ ਛੋਟੇ ਮਾਹਰ ਮਾਡਲ ਲਈ ਫੇਲ ਹੋਵੋ।

ਵਾਚ: ਸਰਵਿੰਗ ਅਤੇ ਅਨੁਮਾਨ ਸੰਦਰਭ

ਤੇਜ਼ LLM ਸਰਵਿੰਗ 'ਤੇ ਸੰਦਰਭੀ ਗੱਲਬਾਤ — ਅਧਿਕਾਰਤ TenthMatrix ਡੈਮੋ ਨਹੀਂ। vLLM ਪੇਪਰ ਅਤੇdocs.vllm.aiਨਾਲ ਜੋੜਾ ਬਣਾਓ।

PowerInfer: ਸਿੰਗਲ ਫੈਟ GPU

'ਤੇ ਟੋਕਨ

PowerInfer ਗਰਮ/ਠੰਡੇ ਨਿਊਰੋਨਸ ਨੂੰ ਵੰਡਦਾ ਹੈ ਤਾਂ ਕਿ ਇੱਕ ਖਪਤਕਾਰ GPU ਪਲੱਸ CPU ਤੇਜ਼ੀ ਨਾਲ ਟੋਕਨ ਤਿਆਰ ਕਰ ਸਕੇ। ਰਿਪੋਰਟ ਕੀਤੇ ਅੰਕੜੇ:13.20 ਟੋਕਨ/s ਔਸਤ, ਇੱਕ NVIDIA RTX 4090 'ਤੇ ਸਿਖਰ29.08 ਟੋਕਨ/s, ਸ਼ੁੱਧਤਾ ਰੱਖਦੇ ਹੋਏ11.69xਬਨਾਮ llama.cpp ਤੱਕ। ਫਲੀਟ ਪੈਮਾਨੇ 'ਤੇ ਤੁਹਾਨੂੰ ਅਜੇ ਵੀ ਪਲੇਸਮੈਂਟ ਦੀ ਲੋੜ ਹੈ: GPU 'ਤੇ ਕਿਹੜੀਆਂ ਲੇਅਰਾਂ ਰਹਿੰਦੀਆਂ ਹਨ, ਤੁਸੀਂ ਨੋਡਾਂ ਵਿੱਚ ਕਿਵੇਂ ਸ਼ਾਰਡ ਕਰਦੇ ਹੋ, ਅਤੇ ਕੀਦਾ ਸਥਾਨਕ ਪ੍ਰੋਫਾਈਲ ਤੁਹਾਡੇਪ੍ਰੋਂਪਟ ਪੇਪਰ ਦੇ ਮਾਡਲਾਂ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ।

EG-MLA: ਬੈਂਚ ਨੂੰ ਖਰਾਬ ਕੀਤੇ ਬਿਨਾਂ KV ਨੂੰ ਸੁੰਗੜੋ

EG-MLA (ਏਮਬੈਡਿੰਗ-ਗੇਟਿਡ ਮਲਟੀ-ਹੈੱਡ ਲੇਟੈਂਟ ਅਟੈਨਸ਼ਨ) ਰਿਪੋਰਟ ਕਰਦਾ ਹੈਵੱਧ 91.6% KV ਕੈਸ਼ ਕਟੌਤੀਬਨਾਮ ਮਲਟੀ-ਹੈੱਡ ਅਟੈਨਸ਼ਨ ਨਾ-ਮਾਤਰ ਗਿਰਾਵਟ ਦੇ ਨਾਲ, ਵਾਧੂ ਬੱਚਤ ਬਨਾਮ MLA (59.9% ਤੱਕ), ਅਤੇ ਤਰਕ ਸੂਈਟਾਂ 'ਤੇ ਬਿਹਤਰ ਸਕੋਰ, XTAGX9 ਪੈਰਾਮੀਟਰ ਪਿਛਲੇ XTAGX9 ਪੇਪਰ ਸਕੇਲ. ਇਸਨੂੰ ਇੱਕ ਆਰਕੀਟੈਕਚਰ ਵਿਕਲਪ ਦੇ ਰੂਪ ਵਿੱਚ ਸਮਝੋ, ਨਾ ਕਿ ਇੱਕ ਜੰਮੇ ਹੋਏ vLLM ਚੈਕਪੁਆਇੰਟ 'ਤੇ ਡ੍ਰੌਪ-ਇਨ ਫਲੈਗ - ਮੈਮੋਰੀ ਗ੍ਰਾਫ ਦਾ ਜਸ਼ਨ ਮਨਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਆਪਣੇ ਈਵਲ ਹਾਰਨੇਸ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰੋ।

vLLM, PowerInfer, Self-Debugging and EG-MLA stack

ਇਸਨੂੰ ਇਕੱਠੇ ਰੱਖਣਾ

ਕਲੱਸਟਰ ਸਰਵਿੰਗ ਲਈ PagedAttention + vLLM, PowerInfer ਜਦੋਂ ਬਾਕਸ ਇੱਕ ਵਰਕਸਟੇਸ਼ਨ GPU, Self-Debugging ਇੱਕ ਹਾਰਡ ਗੋਲ ਸੀਮਾ ਵਾਲੇ ਕੋਡਿੰਗ ਏਜੰਟਾਂ ਦੇ ਅੰਦਰ, ਅਤੇ EG-MLA ਨੂੰ ਜੋੜੋ ਜਦੋਂ ਤੁਸੀਂ ਮਾਡਲ ਪਰਿਵਾਰ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰਦੇ ਹੋ। ਡਿਸਟ੍ਰੀਬਿਊਟਡ ਸਰਵਿੰਗ ਗੁੰਝਲਦਾਰਤਾ ਨੂੰ ਜੋੜਦੀ ਹੈ: KV ਸਮਾਨਤਾ, ਪ੍ਰੀਫਿਲ/ਡੀਕੋਡ ਸਪਲਿਟ, ਅਤੇ ਆਟੋਸਕੇਲਿੰਗ ਜੋ ਪੇਜ ਟੇਬਲ ਨੂੰ ਨਹੀਂ ਥਰੈਸ਼ ਕਰਦਾ ਹੈ। ਮਾਪ. ਫਿਰ ADR ਲਿਖੋ।

ਅਗਲਾ

ਪੜ੍ਹੋ
  1. ਲੰਮਾ ਲੇਖ— ਨੋਬਸ, ਫੇਲ ਮੋਡ, Kubernetes ਨੋਟਸ।
  2. LLMs ਸਮਝਾਇਆ + Kubernetes
  3. 'ਤੇ ਆਪਣਾ ਖੁਦ ਚਲਾਓ
  4. Muse Glimmer / ਸਥਾਨਕ ਏਜੰਟ·ਐਂਟਰਪ੍ਰਾਈਜ਼ AI ਲੈਬ

TenthMatrixਦੁਆਰਾ ਪ੍ਰਕਾਸ਼ਿਤ।