
在實際部署和優化大語言模型LLM推理服務時很多開發者會遇到一個共同的困境模型在測試時表現良好一旦上線響應速度就變得不可預測資源消耗也遠超預期。這背后往往是因為對 LLM 推理的底層機制理解不夠深入僅僅停留在調用 API 的層面。推理過程遠不止是“輸入文本輸出文本”那么簡單它涉及到計算圖優化、內存管理、批處理策略、解碼算法等一系列復雜的工程決策。理解這些決策背后的原理是構建高效、穩定、低成本 LLM 應用服務的關鍵。本文將以一個工程實踐者的視角系統性地拆解 LLM 推理的核心流程、性能瓶頸和優化手段。我們將從最基礎的 Transformer 模型前向傳播開始逐步深入到批處理、KV 緩存、量化、持續批處理等高級主題并解釋每一步“為什么”要這么做。無論你是希望將開源模型部署到自有服務器還是需要優化現有推理服務的性能這篇文章都將提供一條清晰的實踐路徑。1. 理解 LLM 推理的核心計算流程在討論任何優化之前必須首先理解一個 LLM 在推理時究竟在計算什么。這不僅僅是調用model.generate()那么簡單而是要知道每個張量是如何流動和變化的。1.1 Transformer 解碼器的單步前向傳播對于一個典型的僅解碼器Decoder-Only架構的 LLM如 GPT、LLaMA生成一個詞元token的過程可以看作一次完整的前向傳播。這個過程在模型參數固定的情況下會重復執行多次直到生成結束。一次生成單步的核心計算步驟如下輸入嵌入將當前要生成的詞元 ID一個整數轉換為一個高維向量嵌入向量。位置編碼將位置信息當前是第幾個詞元注入到嵌入向量中。現代模型多使用 RoPE 等相對位置編碼。多層 Transformer 塊處理這是計算的核心。每個塊主要包含自注意力層讓當前詞元關注到所有已生成的詞元包括初始輸入計算注意力分數和加權和。這里會用到KV 緩存來避免重復計算這是推理優化的關鍵。前饋網絡層一個多層感知機對注意力層的輸出進行非線性變換。殘差連接與層歸一化貫穿始終用于穩定訓練和優化。輸出投影將最后一個 Transformer 塊的輸出向量通過一個線性層通常稱為 LM Head映射到詞表大小的 logits 向量。采樣根據 logits通過某種策略如貪婪搜索、核采樣、溫度采樣選擇下一個詞元 ID。用偽代碼可以簡化為# 偽代碼展示單步生成的核心邏輯 def generate_one_token(model, input_ids, past_key_values): # input_ids: 當前要處理的詞元ID形狀 [batch_size, 1] # past_key_values: 之前所有步驟計算好的 K, V 緩存 # 1. 模型前向傳播得到當前步的logits和更新后的KV緩存 outputs model( input_idsinput_ids, past_key_valuespast_key_values, use_cacheTrue # 關鍵告訴模型使用并更新KV緩存 ) next_token_logits outputs.logits[:, -1, :] # 取最后一個位置的logits new_past_key_values outputs.past_key_values # 2. 采樣 next_token_id sampling_function(next_token_logits) return next_token_id, new_past_key_values關鍵解釋past_key_values是優化點。如果不緩存每次生成新詞元都需要為所有歷史詞元重新計算 K 和 V計算復雜度是 O(n2)。緩存后每次只需為當前新詞元計算 Q并與緩存的 K、V 計算注意力復雜度降為 O(n)。1.2 自回歸生成與迭代解碼LLM 生成是自回歸的即下一個詞元的生成依賴于之前所有已生成的詞元。這導致推理過程本質上是串行的無法像訓練那樣完全并行化。這種模式被稱為迭代解碼。初始輸入: 法國的首都是 步驟1: 模型處理輸入輸出 logits采樣得到 “巴黎” 步驟2: 將 “巴黎” 作為新輸入結合之前的KV緩存模型輸出 logits采樣得到 “。” 步驟3: 將 “。” 作為輸入可能采樣到結束符生成結束。這種串行性決定了生成延遲Time To First Token, TTFT和生成吞吐量Tokens per Second是衡量推理性能的兩個核心指標而它們往往需要權衡。1.3 計算與內存瓶頸分析理解瓶頸是優化的前提。LLM 推理主要受限于兩方面計算瓶頸Compute-Bound發生在計算密集型操作上如矩陣乘法MatMul、尤其是注意力機制中的 QK^T 計算。當模型參數量大、序列長時計算量巨大。內存瓶頸Memory-Bound發生在需要頻繁讀寫顯存GPU HBM的操作上。這包括模型權重一個 7B 的模型FP16 精度下權重就約占 14 GB 顯存。KV 緩存對于長序列KV 緩存可能占用比模型權重更多的顯存。計算公式近似為2 * batch_size * seq_len * num_layers * num_heads * head_dim * dtype_size。激活值前向傳播過程中產生的中間張量。在實際推理中尤其是批次較小時內存帶寬往往成為主要瓶頸因為從顯存中讀取模型權重和 KV 緩存到計算核心的開銷可能遠大于實際計算時間。2. 環境準備與核心工具選擇在開始實踐優化之前需要搭建一個可以實驗和測量的環境。我們不追求一次性搭建完美生產環境而是先建立一個可復現、可觀測的學習環境。2.1 硬件與基礎軟件環境對于學習和小規模實驗擁有足夠顯存的 GPU 是必要的。以下是一個基礎環境清單組件推薦配置說明GPUNVIDIA GPU (RTX 3090/4090, A10, A100 等)顯存 16GB 為宜用于運行 7B/13B 模型。CUDA與 GPU 驅動匹配的版本 (如 12.1)深度學習計算基礎。Python3.9 或 3.10主流框架支持較好的版本。深度學習框架PyTorch (2.0)必須與 CUDA 版本匹配。可以通過以下命令快速驗證 PyTorch 和 CUDA 環境# 檢查PyTorch版本和CUDA是否可用 python -c import torch; print(fPyTorch version: {torch.__version__}); print(fCUDA available: {torch.cuda.is_available()}); print(fCUDA version: {torch.version.cuda}) # 檢查GPU信息 python -c import torch; print(fGPU: {torch.cuda.get_device_name(0)}); print(fGPU Memory: {torch.cuda.get_device_properties(0).total_memory / 1e9:.2f} GB)2.2 推理框架與庫的選擇直接使用原始 PyTorch 進行推理非常低效。我們需要借助專門的推理優化庫。以下是幾個主流選擇及其適用場景框架/庫核心特點適用場景Hugging Facetransformers PyTorch生態豐富模型多易用性極高方便快速原型驗證。實驗、原型開發、對性能要求不高的初期服務。vLLM通過PagedAttention高效管理 KV 緩存極大提升吞吐量支持連續批處理。高吞吐量場景的首選如聊天、批量任務處理。TGI (Text Generation Inference)Hugging Face 官方出品集成了 Flash Attention、連續批處理、量化等優化適合部署。需要穩定、功能全面如支持 Safetensors、健康檢查的生產部署。TensorRT-LLMNVIDIA 官方極致性能優化支持多種量化與 Triton 推理服務器深度集成。NVIDIA 硬件上追求極致低延遲和高吞吐的生產環境。llama.cpp純 C 實現CPU/GPU 混合推理量化支持極好內存需求低。資源受限環境如消費級GPU、CPU、邊緣設備、本地運行。初期建議從transformers庫開始理解基礎流程。當需要提升性能時轉向vLLM追求吞吐或TGI追求穩定部署。本文后續示例將主要結合transformers和vLLM進行講解。安裝基礎庫pip install torch transformers accelerate # 安裝vLLM (請根據CUDA版本選擇) pip install vllm # 或者從源碼安裝最新版 # pip install githttps://github.com/vllm-project/vllm.git3. 從基礎到進階推理優化關鍵技術實踐現在我們進入核心的優化實踐環節。我們將按照從基礎到進階的順序逐一實現并解釋這些關鍵技術。3.1 優化基石KV 緩存與注意力優化KV 緩存是推理優化中性價比最高的手段。其原理是在生成第t個詞元時前t-1個詞元的 Key 和 Value 張量是固定不變的。我們可以將它們緩存起來避免在每一步都重新計算。未使用 KV 緩存每一步都需要為所有歷史詞元重新計算 K, V。計算量和內存訪問量巨大。使用 KV 緩存只在第一步計算所有輸入詞元的 K, V 并緩存。后續每一步只計算當前新詞元的 Q然后與緩存的 K, V 計算注意力。使用transformers庫開啟 KV 緩存非常簡單import torch from transformers import AutoModelForCausalLM, AutoTokenizer model_id meta-llama/Llama-2-7b-chat-hf # 示例模型需要你有訪問權限 tokenizer AutoTokenizer.from_pretrained(model_id) model AutoModelForCausalLM.from_pretrained( model_id, torch_dtypetorch.float16, # 使用半精度減少內存 device_mapauto # 使用Accelerate自動分配設備 ) model.eval() # 設置為評估模式 prompt 法國的首都是 inputs tokenizer(prompt, return_tensorspt).to(model.device) # 關鍵參數use_cacheTrue, 并且準備past_key_values with torch.no_grad(): # 首次生成past_key_values為None outputs model(**inputs, use_cacheTrue) past_key_values outputs.past_key_values next_token_logits outputs.logits[:, -1, :] # 采樣得到第一個新詞元 next_token torch.argmax(next_token_logits, dim-1, keepdimTrue) generated_ids next_token # 自回歸生成后續詞元 for _ in range(10): # 假設最多生成10個新詞元 # 注意輸入只包含上一步生成的詞元ID step_inputs {input_ids: next_token, past_key_values: past_key_values, use_cache: True} step_outputs model(**step_inputs) past_key_values step_outputs.past_key_values next_token_logits step_outputs.logits[:, -1, :] next_token torch.argmax(next_token_logits, dim-1, keepdimTrue) generated_ids torch.cat([generated_ids, next_token], dim-1) if next_token.item() tokenizer.eos_token_id: break print(tokenizer.decode(generated_ids[0], skip_special_tokensTrue))關鍵解釋past_key_values是一個元組每一層包含兩個張量 (K_cache, V_cache)。use_cacheTrue指示模型返回并期望接收這個緩存。在循環中我們只傳入最新的一個詞元 ID 和之前的緩存模型內部會正確地拼接和計算。內存估算對于一個 7B 模型hidden_size4096, num_layers32, num_heads32head_dim 4096/32128。假設批次為1序列長度為1024FP16精度。則一層KV緩存大小約為2 * 1 * 1024 * 128 * 2 bytes ≈ 0.5 MB。32層總共約16 MB。這看起來不大但如果批次增大到32序列長度到2048緩存將占用約16MB * 32 * 2 ≈ 1 GB。在真實的多用戶、長對話場景下KV緩存管理成為關鍵挑戰這也引出了vLLM 的 PagedAttention技術。3.2 提升吞吐靜態與動態批處理批處理是提升 GPU 利用率和吞吐量的核心手段。其思想是將多個獨立的推理請求輸入序列打包成一個批次利用 GPU 的并行計算能力一次性處理。靜態批處理在服務啟動時確定一個固定的批次大小。所有請求排隊湊夠一個批次再處理。缺點是不靈活短請求要等長請求容易造成資源浪費或延遲增高。動態批處理推理服務器持續接收請求并將當前隊列中可用的請求動態組合成一個批次進行處理。更高效但實現復雜。連續批處理這是動態批處理在自回歸生成場景下的高級形式。它允許不同請求處于生成的不同階段有的在生成第一個詞元有的在生成第十個詞元并將它們的計算統一到一個批次中同時高效管理各自獨立的 KV 緩存。vLLM 和 TGI 的核心優勢即在于此。使用transformers進行簡單的靜態批處理prompts [ 法國的首都是, 人工智能是, 如何學習編程 ] # 對多個提示進行編碼和填充 inputs tokenizer(prompts, paddingTrue, return_tensorspt).to(model.device) with torch.no_grad(): # 模型會一次性處理整個批次 outputs model.generate(**inputs, max_new_tokens50, use_cacheTrue) for i, output_seq in enumerate(outputs): print(fPrompt {i}: {tokenizer.decode(output_seq, skip_special_tokensTrue)})注意簡單的填充padding對于長度相近的請求有效。但對于長度差異大的請求大量填充符會造成計算浪費。生產級推理服務器vLLM/TGI會使用更精細的策略如僅對注意力掩碼進行填充而不實際進行詞元填充。3.3 降低資源需求模型量化量化是將模型權重和激活值從高精度如 FP32轉換為低精度如 FP16, INT8, INT4的過程目的是大幅減少內存占用和內存帶寬壓力有時還能利用特定硬件如 NVIDIA Tensor Core加速 INT8 計算。精度字節數常見用途優點缺點FP324訓練高精度推理精度無損內存占用大計算慢FP16/BF162推理混合精度訓練內存減半計算快可能溢出或精度損失INT81推理內存降至1/4部分硬件有加速需要校準精度損失更明顯INT40.5邊緣設備超大模型內存降至1/8需要復雜量化算法精度損失需評估使用bitsandbytes庫進行 8 位量化INT8加載from transformers import BitsAndBytesConfig import torch # 配置4位量化 (NF4格式更激進) bnb_config_4bit BitsAndBytesConfig( load_in_4bitTrue, bnb_4bit_quant_typenf4, # 使用NormalFloat4量化 bnb_4bit_compute_dtypetorch.float16, bnb_4bit_use_double_quantTrue, # 二次量化進一步壓縮 ) # 配置8位量化 bnb_config_8bit BitsAndBytesConfig(load_in_8bitTrue) model_id meta-llama/Llama-2-7b-chat-hf model_8bit AutoModelForCausalLM.from_pretrained( model_id, quantization_configbnb_config_8bit, # 傳入量化配置 device_mapauto ) print(f模型內存占用: {model_8bit.get_memory_footprint() / 1e9:.2f} GB)關鍵解釋load_in_8bitTrue會讓transformers在加載模型時與bitsandbytes庫協作將權重動態量化為 INT8。前向傳播時權重會反量化為 FP16 進行計算因此計算精度仍是 FP16但內存中存儲的是 INT8。這通常能帶來幾乎無損的性能困惑度表現但內存占用減半。注意量化是一個權衡。INT8 量化通常很安全INT4 量化如 GPTQ AWQ需要仔細評估對您具體任務的影響。建議在量化后使用您的評估數據集進行測試。3.4 利用現代硬件Flash Attention 與算子融合這些是更深層次的優化通常由推理框架如 vLLM, TGI或編譯工具如 PyTorch 2.0 的torch.compile自動完成但了解其原理有助于理解性能數據。Flash Attention一種 IO 感知的精確注意力算法。它通過分塊計算和存儲避免了在 GPU HBM 和 SRAM 之間來回搬運巨大的注意力矩陣大小為[batch, head, seq_len, seq_len]從而顯著提升長序列注意力計算的速度并降低內存占用。算子融合將多個連續的、細粒度的 GPU 操作如 LayerNorm 的多個步驟融合成一個“宏操作”Kernel減少內核啟動開銷和全局內存訪問次數。在 vLLM 中這些優化是默認開啟的。在 PyTorch 2.x 中可以嘗試使用torch.compile對模型進行編譯以利用算子融合等優化# 使用 torch.compile 優化模型實驗性可能不穩定 compiled_model torch.compile(model, modereduce-overhead) # 然后使用 compiled_model 進行推理生產建議對于自定義模型或研究可以嘗試torch.compile。對于部署主流模型直接使用 vLLM 或 TGI 是更穩妥的選擇它們已經集成了這些優化。4. 使用 vLLM 構建高性能推理服務vLLM 將上述優化PagedAttention、連續批處理、Flash Attention 等封裝成一個易用且高性能的推理引擎。下面演示如何快速搭建一個服務。4.1 離線批量推理首先體驗 vLLM 的離線批量生成能力from vllm import LLM, SamplingParams # 定義模型和采樣參數 prompts [ 法國的首都是, 人工智能是, 請用一句話解釋量子計算。 ] sampling_params SamplingParams(temperature0.8, top_p0.95, max_tokens50) # 初始化LLM引擎 # tensor_parallel_size 可用于多GPU張量并行 llm LLM(modelmeta-llama/Llama-2-7b-chat-hf, dtypehalf) # half 表示 FP16 # 執行推理 outputs llm.generate(prompts, sampling_params) # 輸出結果 for output in outputs: prompt output.prompt generated_text output.outputs[0].text print(fPrompt: {prompt!r}\nGenerated: {generated_text!r}\n)4.2 啟動 API 服務器vLLM 內置了高性能的 OpenAI 兼容 API 服務器這是其作為生產服務的核心優勢。# 啟動API服務器 python -m vllm.entrypoints.openai.api_server \ --model meta-llama/Llama-2-7b-chat-hf \ --served-model-name llama-2-7b-chat \ --dtype half \ --api-key your-api-key-here \ --port 8000服務器啟動后你可以使用任何 HTTP 客戶端或 OpenAI SDK 進行調用# 使用curl調用 curl http://localhost:8000/v1/completions \ -H Content-Type: application/json \ -H Authorization: Bearer your-api-key-here \ -d { model: llama-2-7b-chat, prompt: San Francisco is a, max_tokens: 50, temperature: 0 }# 使用OpenAI Python SDK調用需安裝openai包 from openai import OpenAI client OpenAI( api_keyyour-api-key-here, base_urlhttp://localhost:8000/v1 ) response client.completions.create( modelllama-2-7b-chat, promptSan Francisco is a, max_tokens50 ) print(response.choices[0].text)關鍵優勢這個服務器自動處理了連續批處理、動態批處理、KV緩存管理和流量控制。多個請求可以同時發送服務器會高效地將它們打包計算并流式返回結果。4.3 關鍵配置參數解析啟動 vLLM 服務器時以下參數對性能影響巨大參數說明生產環境調整建議--dtype模型權重數據類型。half(FP16),bfloat16,float。根據 GPU 支持選擇A100/H100 優選bfloat16。--gpu-memory-utilizationGPU 顯存利用率目標 (0-1)。vLLM 據此分配 KV 緩存等。通常設為 0.9為系統和其他進程留出空間。--max-model-len模型支持的最大上下文長度。必須設置為小于等于模型訓練時的長度如 4096。設置過大會浪費緩存。--tensor-parallel-size張量并行大小用于多 GPU 拆分模型。模型太大單卡放不下時使用如 70B 模型用 4 卡。--block-sizePagedAttention 中內存塊的大小。通常使用默認值16。對于極長或極短序列可微調。--swap-spaceCPU 交換空間大小 (GB)。當 GPU 顯存不足時將部分 KV 緩存交換到 CPU 內存。謹慎使用會顯著增加延遲。僅作為顯存不足時的應急方案。5. 生產環境部署與監控考量將優化后的模型部署到生產環境還需要考慮穩定性、可觀測性和資源管理。5.1 部署架構模式單體服務模式使用 vLLM 或 TGI 直接提供 API。簡單直接適合中小規模。推理服務器 網關模式vLLM/TGI 作為后端推理引擎前置于一個 API 網關如 Nginx, Kong。網關負責負載均衡、認證、限流、日志聚合。Kubernetes 部署將推理服務容器化在 K8s 中部署。便于擴縮容、滾動更新和資源管理。需要仔細配置 GPU 資源請求和限制。一個簡單的 Dockerfile 示例FROM nvidia/cuda:12.1.0-runtime-ubuntu22.04 RUN apt-get update apt-get install -y python3-pip WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . # 假設你的啟動腳本是 start_server.py CMD [python3, -m, vllm.entrypoints.openai.api_server, \ --model, /app/models/llama-2-7b-chat, \ --port, 8000, \ --dtype, half]5.2 性能監控與指標部署后必須監控關鍵指標以了解服務健康度和性能瓶頸。指標類別具體指標說明與健康閾值延遲Time To First Token (TTFT)從請求發出到收到第一個詞元的延遲。受預處理和首次推理影響。應 1秒目標。Time Per Output Token (TPOT)生成每個詞元的平均延遲。反映生成速度。應穩定且符合預期如 50ms。吞吐Requests per Second (RPS)每秒處理的請求數。Tokens per Second (TPS)每秒生成的詞元總數。是衡量吞吐的核心。資源GPU UtilizationGPU 計算利用率。理想情況應較高50%但非絕對。GPU Memory UsageGPU 顯存使用量。需監控是否接近上限。KV Cache UsagevLLM 等可提供反映緩存命中和管理效率。業務Error Rate請求失敗率。應接近 0。Request Queue Length排隊等待處理的請求數。持續過長說明服務能力不足。vLLM 提供了 Prometheus 格式的指標端點 (/metrics)可以方便地集成到監控系統如 Prometheus Grafana中。5.3 常見生產問題排查清單當推理服務出現性能下降或錯誤時可以按以下清單排查問題現象可能原因檢查與解決方向TTFT 異常高1. 首次加載模型或冷啟動。2. 輸入序列過長預處理耗時。3. GPU 顯存不足觸發交換。1. 使用模型預熱啟動后先跑幾個樣例請求。2. 監控預處理時間優化分詞器或限制輸入長度。3. 檢查nvidia-smi顯存使用考慮增加 GPU 或減少--gpu-memory-utilization。TPOT 不穩定或過高1. 批次大小動態變化劇烈。2. 生成長序列導致 KV 緩存過大。3. 系統有其他高優先級進程搶占資源。1. 觀察請求流量是否均勻考慮實施請求隊列平滑或限流。2. 監控序列長度分布設置合理的max_tokens限制。3. 使用isolcpus或taskset隔離 CPU 核心確保推理進程獨占性。吞吐量 (TPS) 低1. 批次大小太小GPU 利用率低。2. 使用了低效的采樣參數如低溫度導致確定性高但計算未減少。3. 模型未量化內存帶寬成為瓶頸。1. 增加 vLLM 的--max-num-batched-tokens或等待隊列以累積更大批次。2. 評估采樣參數對質量的影響在質量和速度間權衡。3. 考慮使用量化INT8/FP8或更高效的注意力實現。服務 OOM (內存溢出)1. 并發請求過多KV 緩存爆顯存。2. 單個請求上下文長度超限。3. 模型權重加載失敗如 dtype 錯誤。1. 降低--gpu-memory-utilization設置更嚴格的請求并發數和上下文長度限制。2. 在 API 網關層攔截超長請求。3. 確認模型文件完整并使用正確的精度加載如--dtype half。生成質量下降1. 量化導致精度損失。2. 采樣參數溫度、top_p設置不當。3. 模型本身在特定任務上能力有限。1. 在測試集上對比量化前后模型的輸出質量如困惑度、任務準確率。2. 系統化調整采樣參數找到適合您任務的最佳配置。3. 考慮微調或使用更適合的模型。6. 進階優化方向與選型建議在掌握了基礎優化后可以根據具體場景探索更進階的方案。6.1 多 GPU 并行策略當模型過大或追求極致吞吐時需要將模型拆分到多個 GPU 上。張量并行將模型的單個層如注意力頭、前饋網絡神經元拆分到多個 GPU 上。通信密集適用于單服務器內多卡。vLLM, TGI, TensorRT-LLM支持。流水線并行將模型的不同層拆分到多個 GPU 上。適用于模型層數極多的情況。通信發生在層與層之間。模型并行更廣義的概念包含上述兩者。對于 70B 及以上的模型通常需要結合使用張量并行和流水線并行。6.2 投機解碼與推測采樣這是一種前沿優化技術旨在打破自回歸生成的串行瓶頸。其核心思想是用一個小、快的“草稿模型”快速生成一串候選詞元序列然后用大、準的“驗證模型”一次性并行驗證這些候選詞元接受其中正確的前綴。可以顯著提升解碼速度2-3倍。目前vLLM已實驗性支持投機解碼。這需要準備一大一小兩個模型。6.3 框架選型決策樹面對眾多選擇可以根據以下決策樹進行選型目標是什么快速實驗/原型驗證-Hugging Facetransformers。生態最好靈活性最高。追求極致吞吐量服務多用戶聊天/批量任務-vLLM。PagedAttention 和連續批處理優勢明顯。需要穩定、功能全面的生產部署且偏好 Hugging Face 生態-TGI。由 Hugging Face 官方維護集成度高。在 NVIDIA 硬件上追求最低延遲和最高吞吐且愿意投入更多工程成本-TensorRT-LLM。性能天花板最高。資源受限消費級GPU、CPU、本地運行、需要極致的量化支持-llama.cpp。內存效率極高。模型格式支持確認您要部署的模型格式PyTorch.bin, Safetensors, GGUF是否被框架支持。功能需求是否需要流式輸出、OpenAI 兼容 API、多 LoRA 適配器、Grammar 約束生成等特定功能。6.4 持續學習與迭代LLM 推理優化是一個快速發展的領域。建議持續關注新硬件如 NVIDIA H200 的更高帶寬內存專門針對 LLM 推理的芯片如 Groq。新算法如 FlashAttention-2, Striped Attention以及更高效的量化方案如 AWQ, Marlin。新框架特性關注 vLLM, TGI 等項目的版本更新它們會不斷集成最新的優化。最終任何優化都應在您的具體業務場景延遲要求、吞吐要求、成本預算、模型質量容忍度下進行測試和驗證。建立一個從模型加載、請求處理到結果返回的完整性能基準測試流程是進行有效優化的前提。