• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 生成式人工智能/大語言模型

    借助 NVIDIA 在生產應用中集成和部署 Tongyi Qwen3 模型

    阿里巴巴近期發布了其開源的混合推理大語言模型(LLM)通義千問 Qwen3,此次 Qwen3 開源模型系列包含兩款混合專家模型 (MoE) 235B-A22B(總參數 2,350 億,激活參數 220 億)和 30B-A3B,以及六款稠密(Dense)模型 0.6B、1.7B、4B、8B、14B、32B。

    現在,開發者能夠基于 NVIDIA GPU,使用 NVIDIA TensorRT-LLM、Ollama、SGLang、vLLM 等推理框架高效集成和部署 Qwen3 模型,從而實現極快的詞元 (token) 生成,以及生產級別的應用研發。

    本文提供使用 Qwen3 系列模型的最佳實踐,我們會展示如何使用上述框架來部署模型實現高效推理。開發者可以根據他們的應用場景需求來選擇合適的框架,例如高吞吐量、低延遲、或是 GPU 內存占用(GPU footprint)。

    Qwen3 模型

    Qwen3 是中國首個混合推理模型,在 AIME、LiveCodeBench、ArenaHard、BFCL 等權威評測集上均獲得出色的表現(信息來源于阿里巴巴官方微信公眾號)。Qwen3 提供的系列開源稠密和 MoE 模型在推理、指令遵循、Agent 能力、多語言支持等方面均大幅增強,是全球領先的開源模型。

    大語言模型的推理性能對于實時、經濟高效的生產級部署至關重要

    LLM 生態系統快速演進,新模型和新技術不斷更新迭代,需要一種高性能且靈活的解決方案來優化模型。

    推理系統設計頗具挑戰,要求也不斷提升,這些挑戰包括 LLM 推理計算中預填充(prefill)和解碼(decode)兩個階段對于計算能力和顯存大小 / 帶寬的需求差異,超大尺寸模型并行分布式推理,海量并發請求,輸入輸出長度高度動態請求等。

    目前在推理引擎上有許多優化技術可用,包括高性能 kernel,低精度量化,Batch 調度,采樣優化,KV 緩存(KV cache)優化等等,選擇最適合自己應用場景的技術組合需要耗費開發者大量精力。

    NVIDIA TensorRT-LLM 提供了最新的極致優化的計算 kernel、高性能 Attention 實現、多機多卡通信分布式支持、豐富的并行和量化策略等,從而在 NVIDIA GPU 上實現高效的 LLM 推理。此外,TensorRT-LLM 采用 PyTorch 的新架構還提供了直觀、簡潔且高效的模型推理配置 LLM API,從而能夠兼顧極佳性能和靈活友好的工作流。
    通過使用 TensorRT-LLM,開發者可以迅速上手先進的優化技術,其中包括定制的 Attention kernel、連續批處理 (in-flight batching) 、分頁 KV 緩存 (Paged KV cache)、量化(FP8、FP4、INT4 AWQ、INT8 SmoothQuant)、投機采樣等諸多技術。

    使用 TensorRT-LLM 運行 Qwen3 的推理部署優化

    下面以使用 Qwen3-4B 模型配置 PyTorch backend 為例,描述如何快捷進行基準測試以及服務化的工作。采用類似的步驟,也可以實現 Qwen3 其他 Dense 和 MoE 模型的推理部署優化。

    1. 首先準備 benchmark 測試數據集合和 extra-llm-api-config.yml 配置文件:
    python3 /path/to/TensorRT-LLM/benchmarks/cpp/prepare_dataset.py 
        --tokenizer=/path/to/Qwen3-4B 
        --stdout token-norm-dist --num-requests=32768 
        --input-mean=1024 --output-mean=1024     --input-stdev=0 --output-stdev=0 > /path/to/dataset.txt
    
    cat >/path/to/extra-llm-api-config.yml <<EOF
    pytorch_backend_config:
        use_cuda_graph: true
        cuda_graph_padding_enabled: true
        cuda_graph_batch_sizes:
        - 1
        - 2
        - 4
        - 8
        - 16
        - 32
        - 64
        - 128
        - 256
        - 384
        print_iter_log: true
        enable_overlap_scheduler: true
    EOF
    1. 通過 trtllm-bench 運行 benchmark 指令:
    trtllm-bench 
          --model Qwen/Qwen3-4B 
          --model_path /path/to/Qwen3-4B 
          throughput 
          --backend pytorch 
          --max_batch_size 128 
          --max_num_tokens 16384 
          --dataset /path/to/dataset.txt 
          --kv_cache_free_gpu_mem_fraction 0.9 
          --extra_llm_api_options /path/to/extra-llm-api-config.yml 
          --concurrency 128 
          --num_requests 32768 
          --streaming

    相同 GPU 環境配置下,基于 ISL = 1K, OSL = 1K,相較 BF16 基準,Qwen3-4B 稠密模型使用 TensorRT-LLM 在 BF16 的推理吞吐(每秒生成的 token 數)加速比最高可達 16.04 倍。 

    Qwen3-4B inference optimization by TensorRT-LLM.
    圖 1:Qwen3-4B 稠密模型在 TensorRT-LLM BF16 與 BF16 基準的推理吞吐性能比較
    1. 通過 trtllm-serve 運行 serve 指令: 
    trtllm-serve 
      /path/to/Qwen3-4B 
      --host localhost 
      --port 8000 
      --backend pytorch 
      --max_batch_size 128 
      --max_num_tokens 16384 
      --kv_cache_free_gpu_memory_fraction 0.95 
      --extra_llm_api_options /path/to/extra-llm-api-config.yml
    1. 模型啟動成功后,便可通過標準 OpenAI API 進行模型推理調用。
    curl -X POST "http://localhost:8000/v1/chat/completions" \
    	-H "Content-Type: application/json" \
    	--data '{
    		"model": "Qwen/Qwen3-4B",
               "Max_tokens": 1024,
               "Temperature": 0,
    		"messages": [
    			{
    				"role": "user",
    				"content": "What is the capital of France?"
    			}
    		]
    	}'
    

    使用 Ollama, SGLang, vLLM 框架運行 Qwen3-4B

    除了 TensorRT-LLM, Qwen 模型也可以使用諸如 Ollama,SGLang, vLLM 等框架,通過簡單幾步部署到 NVIDIA GPU。 Qwen3 提供了多種模型可以運行在終端和設備上,例如 NVIDIA Jeston 以及適用于 Windows 開發者的 NVIDIA RTX。

    使用 Ollama 在本地運行 Qwen3-4B:

    • 從以下網址下載和安裝最新版本的 Ollama: ollama.com/download
    • 使用 ollama run 命令運行模型,此操作將加載并初始化模型用于后續與用戶交互。
    ollama run qwen3:4b
    • 在用戶提示詞或系統消息中添加 /think(默認值)和 /no_think 可在模型的思考模式之間切換。運行 ollama run 命令后,可以直接在終端中使用以下的示例提示詞,來測試思考模式:
    "Write a python lambda function to add two numbers" - Thinking mode enabled
    "Write a python lambda function to add two numbers /no_think" - Non-thinking mode

    使用 SGLang 運行 Qwen3-4B:

    • 安裝 SGLang 庫
    pip install "sglang[all]"
    • 下載模型,在這個演示中,我們使用的是 Hugging Face 上的 huggingfaceCLI 命令提示符執行,請注意需要提供一個 API key 來下載模型。
    huggingface-cli download --resume-download Qwen/Qwen3-4B --local-dir ./
    • 加載和運行模型,請注意,根據不同的需求,可以傳遞額外的參數。更多詳細信息可以參考相關文檔。
    python -m sglang.launch_server \     
      --model-path /ssd4TB/huggingface/hub/models/ \
      --trust-remote-code \
      --device "cuda:0" \
      --port 30000 \
      --host 0.0.0.0
    • 調用模型推理
    curl -X POST "http://localhost:30000/v1/chat/completions" \
    	-H "Content-Type: application/json" \
    	--data '{
    		"model": "Qwen/Qwen3-4B",
    		"messages": [
    			{
    				"role": "user",
    				"content": "What is the capital of France?"
    			}
    		]
    	}'

    使用 vLLM 運行 Qwen3-4B

    • 安裝 vLLM 庫
    pip install vllm
    
    • 通過 vllm serve 加載和運行模型,請注意,根據不同的需求,可以傳遞額外的參數。更多詳細信息可以參考相關文檔。
    vllm serve "Qwen/Qwen3-4B" \
     --tensor-parallel-size 1 \
     --gpu-memory-utilization 0.85 \
     --device "cuda:0" \
     --max-num-batched-tokens 8192 \
     --max-num-seqs 256
    
    • 調用模型推理
    curl -X POST "http://localhost:8000/v1/chat/completions" \
    	-H "Content-Type: application/json" \
    	--data '{
    		"model": "Qwen/Qwen3-4B",
    		"messages": [
    			{
    				"role": "user",
    				"content": "What is the capital of France?"
    			}
    		]
    	}'
    

    總結

    僅僅通過幾行代碼,開發者即可通過包括 TensorRT-LLM 在內的流行推理框架來使用最新的 Qwen 系列模型。

    此外,對模型推理和部署框架的技術選型需要考慮到諸多關鍵因素,尤其是在把 AI 模型部署到生產環境中時,對性能、資源和成本的平衡。

    0

    標簽

    人人超碰97caoporen国产