Prompt engineering
āļāļēāļĢāđāļĢāđāļāļāļ§āļēāļĄāđāļĢāđāļ§āđāļāļāļēāļĢāļāļāļļāļĄāļēāļāđāļĄāđāļāļĨāļ āļēāļĐāļēāļāļāļēāļāđāļŦāļāđ: āđāļāļāļāļīāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāđāļāđāļāļēāļāļāļĩāđāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ
from transformers import AutoModelForCausalLM, AutoTokenizer <p>model_id = "TheBloke/Llama-2-7b-Chat-GPTQ" tokenizer = AutoTokenizer.from_pretrained(model_id) model = AutoModelForCausalLM.from_pretrained(model_id) And for custom quantization, one might follow these steps using the AutoGPTQ toolkit:</p> <p>from transformers import AutoModelForCausalLM, AutoTokenizer, GPTQConfig</p> <p>model_id = "llama-2-7b-original" tokenizer = AutoTokenizer.from_pretrained(model_id) quantization_config = GPTQConfig(bits=4, dataset="your-dataset", tokenizer=tokenizer) model = AutoModelForCausalLM.from_pretrained(model_id, quantization_config=quantization_config)</p>
āļāļģāđāļ§āđāļ§āđāļēāļāļēāļĢāļāļĢāļąāļāļāļāļēāļāļāļēāļāļāđāļāļāđāļāđāļāļēāļĢāļāļĢāļąāļāļāļāļēāļāļŦāļĨāļąāļāļāļēāļĢāļāļĢāļąāļāļāļāļēāļāļŦāļĢāļ·āļāļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļāļģāđāļāļ°āļāļģāđāļāļ·āđāļāļĢāļąāļāļĐāļēāļāļļāļāļ āļēāļāļāļāļāđāļĄāđāļāļĨ āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĢāļąāļāļāļāļēāļāđāļŦāļĄāđ āļāļļāļāļŠāļēāļĄāļēāļĢāļāļĄāļĩāļŠāđāļ§āļāļĢāđāļ§āļĄāļāļĨāļąāļāđāļāļĒāļąāļāļāļļāļĄāļāļāđāļāļĒāļāļēāļĢāļāļąāļāđāļĄāđāļāļĨāļāļĩāđāļāļĢāļąāļāļāļāļēāļāļāļāļāļāļļāļāđāļāļĒāļąāļāđāļāļĨāļāļāļāļĢāđāļĄ āđāļāđāļ Hugging Face
āļāļ§āļĢāļŠāļĢāđāļēāļāļŠāļĄāļāļļāļĨāļĢāļ°āļŦāļ§āđāļēāļāļāļāļēāļāđāļĄāđāļāļĨ āļāļ§āļēāļĄāļāđāļāļāļāļēāļĢāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨ āđāļĨāļ°āļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāđāļĄāļ·āđāļāđāļĨāļ·āļāļāļ§āļīāļāļĩāļāļēāļĢāļāļĢāļąāļāļāļāļēāļāļŠāļģāļŦāļĢāļąāļāļāļĢāļāļĩāļāļēāļĢāđāļāđāļāļēāļāļāļāļāļāļļāļ
Â
āļāļąāļĨāļāļāļĢāļīāļāļķāļĄāļāļēāļĢāļāļķāļāļāļ§āļēāļĄāļŠāļāđāļāđāļāļ Flash
āļāļĨāđāļāļāļēāļĢāļāļķāļāļāļ§āļēāļĄāļŠāļāđāļāđāļāļāļŦāļĨāļēāļĒāļŦāļąāļ§āđāļāđāļāļŠāđāļ§āļāļāļĢāļ°āļāļāļāļŦāļĨāļąāļāļāļāļ LLMs āļāļĩāđāđāļāđāđāļāļāļāļĢāļēāļāļŠāđāļāļāļĢāđāđāļĄāļāļĢāđ āļāđāļ§āļĒāđāļŦāđāđāļĄāđāļāļĨāļŠāļēāļĄāļēāļĢāļāļāļąāļāļāđāļāļĄāļđāļĨāļāļĩāđāļāļķāđāļāļāļĒāļđāđāļāļąāļāļĢāļ°āļĒāļ°āļāļēāļāđāļĨāļ°āđāļŠāļāļāļāļķāļāļāļĢāļīāļāļāđāļāđ āļāļĒāđāļēāļāđāļĢāļāđāļāļēāļĄ āļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢāļāļķāļāļāļ§āļēāļĄāļŠāļāđāļāļāļĩāđāđāļĄāđāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāđāļāļāļēāļĢāļŠāļĢāđāļēāļāļāđāļāļāļ§āļēāļĄāđāļāļāļāļąāļāđāļāļĄāļąāļāļī āđāļāļ·āđāļāļāļāļēāļāļāđāļāļāļāļģāļāļ§āļāļāđāļēāđāļŦāļĄāđāļŦāļĨāļēāļĒāļāļĢāļąāđāļāļŠāļģāļŦāļĢāļąāļāđāļāđāļĨāļ°āđāļāđāļāđāļāđāļŦāļĄāđ
āļāļąāļĨāļāļāļĢāļīāļāļķāļĄ Flash Attention āļāļķāđāļāļāļģāđāļŠāļāļāđāļāļāļĢāļ°āļāļēāļĐ Flash Attention āđāļāđāļāļ§āļīāļāļĩāļāļēāļĢāļāļĩāđāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāđāļĨāļ°āđāļāđāļāļĄāļīāļāļĢāļāļąāļāļāļēāļĢāļāļāļēāļāđāļāđāļāļĄāļēāļāļāļ§āđāļēāđāļāļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢāļāļķāļāļāļ§āļēāļĄāļŠāļāđāļ āđāļāļāļāļĩāđāļāļ°āļāļģāļāļ§āļāļāđāļēāļāļķāļāļāļ§āļēāļĄāļŠāļāđāļāđāļŦāļĄāđāļŠāļģāļŦāļĢāļąāļāđāļāđāļĨāļ°āđāļāđāļāđāļ Flash Attention āļāļ°āđāļāļāđāļĨāļ°āļāļģāļāđāļēāđāļĄāļāļĢāļīāļāļāđāļŦāļĨāļąāļ/āļāđāļēāđāļŦāļĄāđāļĄāļēāđāļāđāļāđāļģ āļĨāļāļāļēāļĢāļāļģāļāļ§āļāļāļĩāđāļāđāļģāļāļąāļ
āļāļēāļĢāđāļāļīāđāļĄāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļāļĩāđāđāļĄāđāđāļāļĩāļĒāļāđāļāđāļĨāļāļ āļēāļĢāļ°āļāļēāļĢāļāļģāļāļ§āļ āđāļāđāļĒāļąāļāļāļĢāļąāļāļāļĢāļļāļāļĢāļđāļāđāļāļāļāļēāļĢāđāļāđāļēāļāļķāļāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģ āļāļģāđāļŦāđāļŠāļēāļĄāļēāļĢāļāđāļāđāđāļāļāļāđāļ§āļīāļāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģ GPU āđāļĨāļ°āļāļēāļĢāļāļāļēāļāđāļāđāļāļāļĩāđāļāļĩāļāļķāđāļ
āđāļĄāđāļ§āđāļēāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāļāļ Flash Attention āļāļ°āļāļąāļāļāđāļāļ āđāļāđāđāļāļ§āļāļīāļāļŦāļĨāļąāļāļāļ·āļāļāļēāļĢāđāļāđāļāļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢāļāļķāļāļāļ§āļēāļĄāļŠāļāđāļāļāļāļāđāļāđāļāļŠāļāļāļāļąāđāļāļāļāļ:
- āļāļēāļĢāļāļąāļāļāļąāļ§āđāļāļ Prefix Sum: āļāļąāđāļāļāļāļāļāļĩāđāļāļģāļāļ§āļāđāļĨāļ°āđāļāļāļāļēāļĢāļāļąāļāļāļąāļ§āļŦāļĨāļąāļ/āļāđāļēāļŠāļģāļŦāļĢāļąāļāđāļāđāļāđāļāļāļīāļāļāļļāļāļāļąāđāļāļŦāļĄāļ āļāļģāđāļŦāđāļŠāļēāļĄāļēāļĢāļāļāļģāļĄāļēāđāļāđāļāđāļģāđāļāđāļāļĒāđāļēāļāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļĢāļ°āļŦāļ§āđāļēāļāļāļēāļĢāļŠāļĢāđāļēāļāļāđāļāļāļ§āļēāļĄ
- āļāļēāļĢāļāļķāļāļāļ§āļēāļĄāļŠāļāđāļāđāļāļ Causal: āļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢāļāļķāļāļāļ§āļēāļĄāļŠāļāđāļāļāļĩāđāđāļāđāļāļĢāļīāļ āļāļķāđāļāđāļāđāļĢāļąāļāļāļēāļĢāļāļĢāļąāļāđāļŦāđāđāļŦāļĄāļēāļ°āļŠāļĄāđāļāļ·āđāļāđāļāđāļāļĢāļ°āđāļĒāļāļāđāļāļēāļāļāđāļēāļŦāļĨāļąāļ/āļāđāļēāļāļĩāđāđāļāļāđāļ§āđāļāļēāļāļāļąāđāļāļāļāļāđāļĢāļ
āļāđāļ§āļĒāļāļēāļĢāđāļĒāļāļāļąāđāļāļāļāļāđāļŦāļĨāđāļēāļāļĩāđ Flash Attention āļŠāļēāļĄāļēāļĢāļāđāļāđāļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢāļāļāļēāļāđāļāđāļāļāļĩāđāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļŠāļđāļāļāļāļ GPU āđāļāđ āļāļģāđāļŦāđāļŠāļēāļĄāļēāļĢāļāđāļĢāđāļāļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢāļāļķāļāļāļ§āļēāļĄāļŠāļāđāļāđāļ LLMs āđāļāđāļāļĒāđāļēāļāļĄāļēāļ
āļāļĩāđāļāļ·āļāļāļąāļ§āļāļĒāđāļēāļāļāļēāļĢāļāļģ Flash Attention āđāļāđāļāđāļāļąāļ LLMs:
from transformers import AutoModelForCausalLM
import torch
from flash_attention import flash_attention
<p># āđāļŦāļĨāļ LLM āđāļāđāļ OctoCoder
model = AutoModelForCausalLM.from_pretrained("bigcode/octocoder")</p>
<p># āđāļŦāļĨāļāļāļĢāļāļĄāļāđāļĢāļ°āļāļāļāļĩāđāļāļĩāđāļāļģāđāļĄāđāļāļĨāđāļŦāđāđāļāđāļāđāļāļŠāļāļīāļŠāđāļāļāļāđāļāļēāļĢāđāļāļĩāļĒāļāđāļāđāļ
system_prompt = "..."</p>
<p># āļāļēāļĢāđāļāļĢāļĩāļĒāļĄāļāļīāļāļāļļāļāļāļĩāđāļĒāļēāļ§āļāļķāđāļāļāđāļ§āļĒāļāļĢāļāļĄāļāđāļĢāļ°āļāļ
long_prompt = system_prompt + "āļāļģāļāļēāļĄ: āđāļāļĢāļāđāļāļĩāļĒāļāļāļąāļāļāđāļāļąāļāđāļ Python āļāļĩāđāđāļāļĨāļāđāļāļāđāđāļāđāļāļāļīāļāļ°āđāļāļāđ"</p>
<p># āļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļĄāđāļāļĨāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāđāļāļīāđāļĄāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ Flash Attention
model.to_bettertransformer()</p>
<p># āļāļēāļĢāđāļāđāļāļēāļāđāļĄāđāļāļĨāļāļĢāđāļāļĄāļāļąāļ Flash Attention
start_time = time.time()
with torch.backends.cuda.sdp_kernel(enable_flash=True):
result = model.generate(long_prompt, max_new_tokens=60)
print(f"āļŠāļĢāđāļēāļāđāļŠāļĢāđāļāđāļ {time.time() - start_time} āļ§āļīāļāļēāļāļĩ.")
āđāļĄāđāļ§āđāļē Flash Attention āļāļ°āđāļŦāđāļāļēāļĢāđāļāļīāđāļĄāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļāļĩāđāļāđāļēāļāļĢāļ°āļāļąāļāđāļ āđāļāđāļāđāļāļģāļāļēāļāļ āļēāļĒāđāļāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļĢāļēāļāļŠāđāļāļāļĢāđāđāļĄāļāļĢāđāļāļĩāđāļĄāļĩāļāļĒāļđāđ āđāļāļ·āđāļāļāļĨāļāļāļĨāđāļāļĒāļĻāļąāļāļĒāļ āļēāļāđāļāļāļēāļĢāļāļāļļāļĄāļēāļ LLMs āļāļĩāđāđāļĢāđāļāļāļ§āļēāļĄāđāļĢāđāļ§āļāļĒāđāļēāļāđāļāđāļāļĢāļīāļ āđāļĢāļēāļāđāļāļāļŠāļģāļĢāļ§āļāļāļ§āļąāļāļāļĢāļĢāļĄāļāļēāļāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļĩāđāļāļāļāđāļāļāļĄāļēāđāļāļĒāđāļāļāļēāļ°āļŠāļģāļŦāļĢāļąāļāļāļēāļāļāļĩāđ
āļāļēāļĢāļāļĢāļąāļāļāļāļēāļ LLMs
āļāļēāļĢāļāļĢāļąāļāļāļāļēāļ LLMs āđāļāđāļāđāļāļāļāļīāļāđāļāļāļēāļĢāļĨāļāļāļāļēāļāđāļĄāđāļāļĨāđāļāļĒāļĒāļąāļāļāļāļĢāļąāļāļĐāļēāļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāđāļ§āđ āđāļāļĒāđāļāđāļāļēāļĢāļāļĢāļ°āļĄāļēāļāļāđāļēāļāļ§āļēāļĄāļŠāļģāļāļąāļāļāļāļāļāđāļģāļŦāļāļąāļāļāļēāļĄāļĄāļēāļāļĢāļāļēāļāļāļāļāđāļĄāļāļĢāļīāļāļāđāđāļŪāļŠāđāļāļĩāļĒāļāđ āđāļāļāļēāļĢāļāļĢāļąāļāļāļāļēāļ āļāđāļģāļŦāļāļąāļāļāļĩāđāđāļĄāđāļŠāļģāļāļąāļāļāļ°āļāļđāļāļĨāļāļāļāļ āđāļĨāđāļ§āđāļĄāđāļāļĨāļāļ°āļāļđāļāļāļĢāļąāļāđāļŦāđāđāļŦāļĄāļēāļ°āļŠāļĄāļāļĩāļāļāļĢāļąāđāļāđāļāļ·āđāļāļāļēāļĢāļāļđāđāļāļ·āļāļāļ§āļēāļĄāđāļĄāđāļāļĒāļģ LLM-Pruner āļĄāļĩāļāļģāļŠāļąāđāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĢāļąāļāļāļāļēāļāļāđāļ§āļĒāļāļĨāļĒāļļāļāļāđāļāđāļēāļāđ
āļāļąāļ§āļāļĒāđāļēāļāđāļāđāļ Python āļāļĩāđāđāļŠāļāļāļāļēāļĢāđāļāđ LLM-Pruner āļŠāļģāļŦāļĢāļąāļāđāļĄāđāļāļĨ LLaMa:
from transformers import AutoModelForSequenceClassification
from pruning import LLMPruner
<p># āđāļŦāļĨāļāđāļĄāđāļāļĨ LLaMa āļāļĩāđāđāļāđāļĢāļąāļāļāļēāļĢāļāļķāļāļāļāļĄāļēāđāļĨāđāļ§
model = AutoModelForSequenceClassification.from_pretrained("llama-base")</p>
<p># āļāļąāđāļāļāđāļēāļāļĢāļąāļāļāļāļēāļāļāđāļ§āļĒāļāļēāļĢāļāļģāļŦāļāļāļāđāļēāļāļĩāđāļāđāļāļāļāļēāļĢ
pruner = LLMPruner(
model,
pruning_ratio=0.25,
block_mlp_layers=(4, 30),
block_attention_layers=(4, 30),
pruner_type='taylor'
)</p>
<p># āļāļģāļāļēāļĢāļāļĢāļąāļāļāļāļēāļ
pruned_model = pruner.prune()</p>
<p># āļāļĢāļąāļāđāļŦāđāđāļŦāļĄāļēāļ°āļŠāļĄāđāļĄāđāļāļĨāļāļĩāđāļāļĢāļąāļāļāļāļēāļ
pruned_model.fine_tune(training_data)
āļāļąāļ§āļāļĒāđāļēāļāđāļāđāļāļāļĩāđāđāļŠāļāļāļāļēāļĢāđāļŦāļĨāļāđāļĄāđāļāļĨ LLaMa āļāļĩāđāđāļāđāļĢāļąāļāļāļēāļĢāļāļķāļāļāļāļĄāļēāđāļĨāđāļ§ āļāļēāļĢāļāļąāđāļāļāđāļēāļāļĢāļąāļāļāļāļēāļāļāđāļ§āļĒāļāļēāļĢāļāļģāļŦāļāļāļāđāļēāļāļĩāđāļāđāļāļāļāļēāļĢ āļāļēāļĢāļāļģāļāļēāļĢāļāļĢāļąāļāļāļāļēāļ āđāļĨāļ°āļāļēāļĢāļāļĢāļąāļāđāļŦāđāđāļŦāļĄāļēāļ°āļŠāļĄāđāļĄāđāļāļĨāļāļĩāđāļāļĢāļąāļāļāļāļēāļ
āļāļ§āļąāļāļāļĢāļĢāļĄāļāļēāļāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļŠāļĢāđāļēāļāļāđāļāļāļ§āļēāļĄāļāļĩāđāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ
āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļĢāļēāļāļŠāđāļāļāļĢāđāđāļĄāļāļĢāđ āđāļĄāđāļ§āđāļēāļāļ°āļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļŠāļđāļāļŠāļģāļŦāļĢāļąāļāļāļēāļāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļ āļēāļĐāļē āđāļāđāļāđāđāļĄāđāđāļāđāļāļđāļāļāļāļāđāļāļāļĄāļēāđāļāļĒāđāļāļāļēāļ°āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļŠāļĢāđāļēāļāļāđāļāļāļ§āļēāļĄ āđāļĄāļ·āđāļāđāļāđāļāļēāļ LLMs āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļŠāļĢāđāļēāļāļāđāļāļāļ§āļēāļĄāļāļĩāđāļĄāļĩāļāļĢāļīāļāļāļāļīāļāļāļļāļāļĒāļēāļ§ āļāļąāļāļ§āļīāļāļąāļĒāļāļāļ§āđāļēāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļĩāđāļāļāļāđāļāļāļĄāļēāđāļāļĒāđāļāļāļēāļ°āļŠāļēāļĄāļēāļĢāļāļāļĢāļąāļāļāļĢāļļāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļāļēāļĢāļāļāļļāļĄāļēāļāđāļāđāļāļĒāđāļēāļāļĄāļēāļāđāļāļĒāđāļĄāđāļŠāļđāļāđāļŠāļĩāļĒāļāļļāļāļ āļēāļ
āļāļĩāđāļāļ·āļāļāļ§āļąāļāļāļĢāļĢāļĄāļāļēāļāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļŦāļĨāļąāļāđ āļāļĩāđāļāđāļ§āļĒāđāļŦāđāļāļēāļĢāļāļāļļāļĄāļēāļ LLMs āđāļĢāđāļ§āļāļķāđāļ:
Alibi: āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄ Alibi āļāļķāđāļāļāļđāļāļāļģāđāļŠāļāļāđāļāļāļĢāļ°āļāļēāļĐ PAL-Instruction āđāļāđāļāļāļēāļĢāļŠāļĢāđāļēāļāđāļāļāļāļģāļĨāļāļāļāļĢāļīāļāļāļāļīāļāļāļļāļāļĒāļēāļ§āļāļāļāļāļēāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāļŠāļĢāđāļēāļāļāđāļāļāļ§āļēāļĄāđāļāļĒāļāļĢāļ āđāļāļĒāđāļāđāļāļēāļĢāđāļŠāļāļāļāļķāļāļāļĩāđāļāļĩāļāļāļąāļāļāļāļāļāļĢāļīāļāļāļāļīāļāļāļļāļ (alibi) āđāļāļ·āđāļāļāđāļ§āļĒāđāļāļāļēāļĢāđāļĢāļīāđāļĄāļāđāļāļāļēāļĢāļŠāļĢāđāļēāļāļāđāļāļāļ§āļēāļĄ āļĨāļāļāļ§āļēāļĄāļāļģāđāļāđāļāđāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļĨāļģāļāļąāļāļāļīāļāļāļļāļāļāļąāđāļāļŦāļĄāļāļāđāļģāđ āļĢāļ°āļŦāļ§āđāļēāļāļāļēāļĢāļŠāļĢāđāļēāļāļāđāļāļāļ§āļēāļĄāđāļāļāļāļąāļāđāļāļĄāļąāļāļī
āļāļēāļĢāļāļąāļāļāļąāļ§āđāļāļ Rotary: āđāļāļāļāļĩāđāļāļ°āđāļāđāļāļēāļĢāļāļąāļāļāļąāļ§āļāļģāđāļŦāļāđāļāļĄāļēāļāļĢāļāļēāļ āđāļāļāļāļīāļāļāļēāļĢāļāļąāļāļāļąāļ§āđāļāļ Rotary āđāļāđāđāļĄāļāļĢāļīāļāļāđāļāļēāļĢāļŦāļĄāļļāļāđāļāļ·āđāļāđāļāđāļēāļĢāļŦāļąāļŠāļāđāļāļĄāļđāļĨāļāļģāđāļŦāļāđāļāđāļāđāļāļĒāđāļēāļāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļĄāļēāļāļāļķāđāļ āļ§āļīāļāļĩāļāļĩāđāđāļāđāļĢāļąāļāļāļēāļĢāļāļīāļŠāļđāļāļāđāđāļĨāđāļ§āļ§āđāļēāļŠāļēāļĄāļēāļĢāļāļāļĢāļąāļāļāļĢāļļāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāđāļĨāļ°āļāđāļ§āļĒāđāļŦāđāļŠāļēāļĄāļēāļĢāļāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļĨāļģāļāļąāļāļāļīāļāļāļļāļāļāļĩāđāļĒāļēāļ§āļāļķāđāļāđāļāđ
āļāļēāļĢāļāļķāļāļāļ§āļēāļĄāļŠāļāđāļāđāļāļ Multi-Query (MQA): āđāļāļāļēāļĢāļāļķāļāļāļ§āļēāļĄāļŠāļāđāļāđāļāļāļāļąāđāļāđāļāļīāļĄ āđāļāđāļĨāļ°āđāļāđāļāļāļāļāļāļĢāļēāļĒāļāļēāļĢāļāļ°āļāļķāļāļāļ§āļēāļĄāļŠāļāđāļāļāļēāļāļāļąāđāļāļĨāļģāļāļąāļāļāļīāļāļāļļāļ āļāļķāđāļāļāļģāđāļāļŠāļđāđāļāļēāļĢāļāļģāļāļ§āļāļāļĩāđāļāđāļģāļāļąāļ MQA āđāļāđāļāļāļēāļĢāļāļāļīāļĢāļđāļāļāļēāļĢāļāļķāļāļāļ§āļēāļĄāļŠāļāđāļāđāļāļ·āđāļāđāļāđāļāļāļąāļāļāļēāļĢāļāļģāļāļ§āļāļĢāļ°āļŦāļ§āđāļēāļāđāļāđāļāļāļāļāļāļĢāļēāļĒāļāļēāļĢāļŦāļĨāļēāļĒāļāļąāļ§ āļĨāļāļāļ§āļēāļĄāļāļąāļāļāđāļāļāđāļāļĒāļĢāļ§āļĄ
āļāļēāļĢāļāļķāļāļāļ§āļēāļĄāļŠāļāđāļāđāļāļ Grouped-Query-Attention (GQA): GQA āļāļĒāļēāļĒ MQA āđāļāļĒāļāļēāļĢāđāļāđāļāđāļāđāļāļāļāļāļāļĢāļēāļĒāļāļēāļĢāļāļāļāđāļāđāļāļāļĨāļļāđāļĄāđāļĨāļ°āļāļģāļāļ§āļāļāļēāļĢāļāļķāļāļāļ§āļēāļĄāļŠāļāđāļāļĢāđāļ§āļĄāļāļąāļāļŠāļģāļŦāļĢāļąāļāđāļāđāļĨāļ°āļāļĨāļļāđāļĄ āļ§āļīāļāļĩāļāļĩāđāļĨāļāļāļ§āļēāļĄāļāđāļāļāļāļēāļĢāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļĨāļāđāļāļāļāļ°āđāļāļĩāļĒāļ§āļāļąāļāļāđāļĢāļąāļāļĐāļēāļāļļāļāļ āļēāļāļāļēāļĢāļŠāļĢāđāļēāļāļāđāļāļāļ§āļēāļĄāļāļĩāđāļŠāļđāļāđāļ§āđ
āđāļĄāđāļ§āđāļēāļāļ§āļąāļāļāļĢāļĢāļĄāđāļŦāļĨāđāļēāļāļĩāđāļĒāļąāļāļāļāļāļĒāļđāđāđāļāļāđāļ§āļāļāļēāļĢāļ§āļīāļāļąāļĒāđāļĨāļ°āļāļąāļāļāļē āđāļāđāļāđāđāļāđāđāļŠāļāļāđāļŦāđāđāļŦāđāļāļāļķāļāļāļēāļĢāđāļāļīāđāļĄāļāļ§āļēāļĄāđāļĢāđāļ§āļāļĩāđāļāđāļēāļāļĢāļ°āļāļąāļāđāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļāļļāļĄāļēāļ LLMs āđāļāļĒāđāļāļāļēāļ°āļāļĒāđāļēāļāļĒāļīāđāļāđāļĄāļ·āđāļāļĢāļ§āļĄāļāļąāļāđāļāļāļāļīāļāļāļ·āđāļāđ āđāļāđāļ Flash Attention āđāļĨāļ°āļāļēāļĢāļāļĢāļąāļāļāļāļēāļāļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāļāļēāļāļāļāļīāļāļĻāļēāļŠāļāļĢāđ
āļāļēāļĢāļāļīāļāļēāļĢāļāļēāđāļāļāļēāļĢāđāļāđāļāļēāļāļāļĢāļīāļ
āļāļāļāđāļŦāļāļ·āļāļāļēāļāļāļąāļĨāļāļāļĢāļīāļāļķāļĄāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļŦāļĨāļąāļāđāļĨāđāļ§ āļĒāļąāļāļĄāļĩāļāļēāļĢāļāļīāļāļēāļĢāļāļēāļŦāļĨāļēāļĒāļāļĢāļ°āļāļēāļĢāđāļāļāļēāļĢāđāļāđāļāļēāļ LLMs āđāļāļŠāļ āļēāļāđāļ§āļāļĨāđāļāļĄāļāļēāļĢāļāļĨāļīāļ:
āļāļēāļĢāđāļĢāđāļāļāļ§āļēāļĄāđāļĢāđāļ§āļŪāļēāļĢāđāļāđāļ§āļĢāđ: āđāļĄāđāļ§āđāļē CPU āļāļ°āļŠāļēāļĄāļēāļĢāļāļāļąāļāļāļēāļĢāļāļēāļĢāļāļāļļāļĄāļēāļ LLMs āđāļāđ āđāļāđ GPU āđāļĨāļ°āļāļąāļ§āđāļĢāđāļāļāļ§āļēāļĄāđāļĢāđāļ§āļāļ·āđāļāđ āđāļāđāļ TPU āļāļāļ Google (GOOGL ) āđāļāđāļāļŠāļīāđāļāļāļģāđāļāđāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĢāļĢāļĨāļļāļāļēāļĢāļĢāļąāļāļŠāđāļāļāđāļāļĄāļđāļĨāļŠāļđāļāđāļĨāļ°āļāļ§āļēāļĄāļŦāļāđāļ§āļāļāđāļģ āļāļēāļĢāđāļĨāļ·āļāļāļŪāļēāļĢāđāļāđāļ§āļĢāđāļāļĩāđāđāļŦāļĄāļēāļ°āļŠāļĄāđāļĨāļ°āđāļāļīāđāļĄāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļāļēāļĢāđāļāđāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģāļāļķāļāļĄāļĩāļāļ§āļēāļĄāļŠāļģāļāļąāļ
āļāļēāļĢāđāļāļāļāđāđāļĨāļ°āļāļēāļĢāļāļāļēāļāđāļāđāļ: āđāļāļ·āđāļāđāļāđāļāļĢāļ°āđāļĒāļāļāđāļāļēāļāļŪāļēāļĢāđāļāđāļ§āļĢāđāđāļāļāļāļāļēāļāđāļāđāļāļāļĒāđāļēāļāđāļāđāļĄāļāļĩāđ āļāļĨāļĒāļļāļāļāđāđāļāđāļāļāļēāļĢāļāļāļļāļĄāļēāļāđāļāļāļāđ (āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļīāļāļāļļāļāļŦāļĨāļēāļĒāļĢāļēāļĒāļāļēāļĢāļāļĢāđāļāļĄāļāļąāļ) āđāļĨāļ°āļāļēāļĢāļāļāļēāļāđāļāđāļāđāļāļāđāļĄāđāļāļĨ (āļāļēāļĢāļāļĢāļ°āļāļēāļĒ LLMs āđāļāļĒāļąāļāļāļļāļāļāļĢāļāđāļŦāļĨāļēāļĒāđāļāļĢāļ·āđāļāļ) āļŠāļēāļĄāļēāļĢāļāđāļāļīāđāļĄāļāļēāļĢāļĢāļąāļāļŠāđāļāļāđāļāļĄāļđāļĨāđāļāđāļāļĒāđāļēāļāļĄāļēāļ
āļāļēāļĢāļāļ·āđāļāļāļēāļĒāļĢāļ°āļŦāļ§āđāļēāļāļāļēāļĢāļāļĢāļąāļāļāļāļēāļāđāļĨāļ°āļāļļāļāļ āļēāļ: āļĢāļ°āļāļąāļāļāļēāļĢāļāļĢāļąāļāļāļāļēāļ (8 āļāļīāļ, 4 āļāļīāļ, āļŊāļĨāļŊ) āļāļ°āļŠāđāļāļāļĨāļāļĢāļ°āļāļāđāļāļĒāļāļĢāļāļāđāļāļāļ§āļēāļĄāđāļĢāđāļ§āļāļēāļĢāļāļāļļāļĄāļēāļāđāļĨāļ°āļāļ§āļēāļĄāļāđāļāļāļāļēāļĢāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģ āđāļāđāļĒāļąāļāļāļ°āļŠāđāļāļāļĨāļāđāļāļāļļāļāļ āļēāļāđāļāļēāļāđāļāļļāļāļāđāļ§āļĒ āļāļēāļĢāļāļ·āđāļāļāļēāļĒāļĢāļ°āļŦāļ§āđāļēāļāļāļēāļĢāļāļĢāļąāļāļāļāļēāļāđāļĨāļ°āļāļļāļāļ āļēāļāļāļķāļāļāđāļāļāđāļāđāļĢāļąāļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļāļĒāđāļēāļāļĢāļāļāļāļāļāļŠāļģāļŦāļĢāļąāļāļāļĢāļāļĩāļāļēāļĢāđāļāđāļāļēāļāđāļāđāļĨāļ°āļĢāļēāļĒāļāļēāļĢ
āļāļēāļĢāļāļĨāļąāđāļāđāļĄāđāļāļĨ: āđāļāļāļāļĩāđāļāļēāļĢāļāļĢāļąāļāļāļāļēāļ āđāļāļāļāļīāļāļāļēāļĢāļāļĨāļąāđāļāđāļĄāđāļāļĨāļŠāļēāļĄāļēāļĢāļāļāļĩāļāļāļąāļ LLMs āļāļĩāđāđāļŦāļāđāļĨāļāđāļāđāļāđāļĄāđāļāļĨāļāļĩāđāđāļĨāđāļāđāļĨāļ°āđāļāđāļāļēāļāđāļāđāļāļĒāđāļēāļāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļĄāļēāļāļāļķāđāļ āđāļāļāļāļ°āđāļāļĩāļĒāļ§āļāļąāļāļāđāļĢāļąāļāļĐāļēāļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāļŠāļđāļāđāļ§āđ
āļāļēāļĢāđāļāļāđāļĨāļ°āļĢāļąāļāđāļāļĄāđāļāļĩāđāđāļāđāļĢāļąāļāļāļēāļĢāļāļĢāļąāļāđāļŦāđāđāļŦāļĄāļēāļ°āļŠāļĄ: āļĢāļąāļāđāļāļĄāđāđāļāļīāļāļĨāļķāļāļāļĩāđāđāļāđāļĢāļąāļāļāļēāļĢāļāļĢāļąāļāđāļŦāđāđāļŦāļĄāļēāļ°āļŠāļĄ āđāļāđāļ TensorRT āļāļāļ NVIDIA (NVDA ) āđāļĨāļ°āđāļāļĢāļĄāđāļ§āļīāļĢāđāļāļāļĩāđāļāļāļāđāļāļāļĄāļēāđāļāļ·āđāļāļāļēāļĢāđāļŦāđāļāļĢāļīāļāļēāļĢ LLMs (āđāļāđāļ Composable Inference Suite āļāļāļ MosaicML) āļŠāļēāļĄāļēāļĢāļāđāļŦāđāļāļēāļĢāđāļāļīāđāļĄāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļāļĩāđāļŠāļģāļāļąāļāļāđāļēāļāđāļāļāļāļīāļ āđāļāđāļ āļāļēāļĢāļĢāļ§āļĄāļāļąāļ§āļāļģāđāļāļīāļāļāļēāļĢ āļāļēāļĢāļāļĢāļąāļāđāļŦāđāđāļŦāļĄāļēāļ°āļŠāļĄāļāļāļāđāļāļāļĢāđāđāļāļĨ āđāļĨāļ°āļāļĨāļĒāļļāļāļāđāļāļēāļĢāđāļāļāļāļĩāđāļāļēāļāļāļĨāļēāļ
āđāļŠāđāļāļāļēāļāļŠāļđāđāļāļēāļĢ_deploy LLMs āļāļĩāđāđāļŦāļĄāļēāļ°āļŠāļĄāļĄāļąāļāđāļāļĩāđāļĒāļ§āļāđāļāļāļāļąāļāļāļēāļĢāļĢāļ§āļĄāđāļāļāļāļīāļāļŦāļĨāļēāļĒāļāļĒāđāļēāļāđāļāļāļāļ°āļāļĩāđāļāļīāļāļēāļĢāļāļēāļāļ§āļēāļĄāļāđāļāļāļāļēāļĢāđāļāļāļēāļ°āļāļāļāđāļāļāļāļĨāļīāđāļāļāļąāļāļāļāļāļāļļāļ āļāđāļāļāļģāļāļąāļāļāļāļāđāļāļĢāļāļŠāļĢāđāļēāļāļāļ·āđāļāļāļēāļ āđāļĨāļ°āđāļāđāļēāļŦāļĄāļēāļĒāļāļēāļĢāđāļŠāļāļāļāļĨ
āļŠāļĢāļļāļ
āđāļĄāļ·āđāļ LLMs āļĒāļąāļāļāļāļāļąāļāļāļēāļāļĒāđāļēāļāļĢāļ§āļāđāļĢāđāļ§ āļāļēāļĢāđāļĢāđāļāļāļ§āļēāļĄāđāļĢāđāļ§āđāļāļāļēāļĢāļāļāļļāļĄāļēāļāļāļāļāļāļ§āļāļĄāļąāļāļāļķāļāļĄāļĩāļāļ§āļēāļĄāļŠāļģāļāļąāļāļĄāļēāļāļāļķāđāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāđāļāđāļāļēāļāļāļĢāļīāļāđāļĨāļ°āļāļģāđāļŦāđāļŠāļēāļĄāļēāļĢāļāđāļāđāļēāļāļķāļ AI āļāļĩāđāļāļĢāļāļāļĨāļąāļāđāļŦāļĨāđāļēāļāļĩāđāđāļāđāļāļ§āđāļēāļāļāļķāđāļ
āđāļāļāļđāđāļĄāļ·āļāļāļēāļāđāļāļāļāļīāļāļāļĩāđ āđāļĢāļēāđāļāđāļŠāļģāļĢāļ§āļāđāļāļāļāļīāļāļāļĩāđāļāļąāļāļŠāļĄāļąāļĒāļāļąāđāļāđāļāđāļāļēāļĢāļāļĢāļąāļāļāļāļēāļāļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāļāļēāļāļāļāļīāļāļĻāļēāļŠāļāļĢāđ āđāļāļāļāļāļķāļāļāļĨāđāļāļāļēāļĢāļāļķāļāļāļ§āļēāļĄāļŠāļāđāļāđāļŦāļĄāđāđ āđāļĨāļ°āļāļ§āļąāļāļāļĢāļĢāļĄāļāļēāļāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļĩāđāļāļāļāđāļāļāļĄāļēāđāļāļĒāđāļāļāļēāļ°āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļŠāļĢāđāļēāļāļāđāļāļāļ§āļēāļĄāļāļĩāđāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ āđāļĄāđāļ§āđāļēāđāļāđāļĨāļ°āđāļāļ§āļāļēāļāļāļ°āļĄāļĩāļāđāļāļāļĩāļāļāļāļāļāđāļāļ āđāļāđāļāļĨāļąāļāļāļĩāđāđāļāđāļāļĢāļīāļāļĄāļąāļāļāļĒāļđāđāđāļāļāļēāļĢāļĢāļ§āļĄāđāļāļāļāļīāļāđāļŦāļĨāđāļēāļāļĩāđāđāļāđāļēāļāđāļ§āļĒāļāļąāļ
āđāļĄāļ·āđāļāļĄāļāļāđāļāļāđāļēāļāļŦāļāđāļē āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļēāļāļŦāļ§āļąāļāļāļēāļĢāļ§āļīāļāļąāļĒāđāļĨāļ°āļāļąāļāļāļēāļāļĩāđāļĒāļąāļāļāļāļāļģāđāļāļīāļāļāđāļāđāļāđāļāļāđāļēāļāļāļĩāđ āļāļķāđāļāđāļāđāļĢāļąāļāđāļĢāļāļāļĨāļąāļāļāļąāļāļāļēāļāļāļ§āļēāļĄāļāđāļāļāļāļēāļĢāļāļĩāđāđāļĄāđāļŦāļĒāļļāļāļĒāļąāđāļāļŠāļģāļŦāļĢāļąāļ LLMs āļāļĩāđāļĄāļĩāļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāļĄāļēāļāļāļķāđāļāđāļĨāļ°āļŠāļēāļĄāļēāļĢāļāđāļāđāļēāļāļķāļāđāļāđāļĄāļēāļāļāļķāđāļ āļāļąāđāļāđāļāđāļāļēāļĢāđāļĢāđāļāļāļ§āļēāļĄāđāļĢāđāļ§āļŪāļēāļĢāđāļāđāļ§āļĢāđ āļāļēāļĢāļāļĩāļāļāļąāļāđāļĄāđāļāļĨ āđāļāļāļāļāļķāļāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāđāļŦāļĄāđāđ āļāļąāđāļāļŦāļĄāļ āļāļēāļĢāđāļŠāļ§āļāļŦāļēāļāļēāļĢāļāļāļļāļĄāļēāļ LLMs āļāļĩāđāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļĒāļąāļāļāļāđāļāđāļāđāļāļ§āļŦāļāđāļēāđāļāđāļĨāļāļāļāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļ āļēāļĐāļēāļāļĢāļĢāļĄāļāļēāļāļīāđāļĨāļ°āļāļąāļāļāļēāļāļĢāļ°āļāļīāļĐāļāđ














