跳到内容

端到端分析

此方法可以在单个文件中收集所有跟踪信息,同时精确控制跟踪收集的开始和停止时间。通过将所有分析数据整合到一个文件中,简化了分析过程。然而,这可能会导致生成较大的跟踪文件,在浏览器或 Perfetto 等工具中加载和分析时可能会更加困难。为了避免生成过大的跟踪文件,我们建议在不需要完整跟踪时,单独使用端到端 (E2E) 分析中包含的方法。

E2E 分析在单次运行中捕获所有相关数据,结合了

由于 E2E 分析过程中会收集大量数据,PyTorch 分析器中的 Python 堆栈事件默认是禁用的。如果您需要 Python 堆栈事件,请使用 通过异步服务器进行的 PyTorch 分析通过脚本进行的 PyTorch 分析,这两种方法默认都会收集这些事件。

虽然您可以收集硬件跟踪,但我们不建议在 E2E 分析期间这样做,因为它会显著增加跟踪文件的大小。有关硬件级别分析,请参阅 本文档

要执行 E2E 分析,请使用以下任一过程。

单请求服务器分析

  1. 禁用硬件跟踪以减小跟踪文件大小。如果您想收集硬件跟踪,请跳过此步骤。

    hl-prof-config --use-template profile_api --hw-trace off
    export HABANA_PROFILE=1
    
  2. 启用 E2E 分析。

    export VLLM_PROFILER_ENABLED=full
    
  3. 设置输出目录。

    export VLLM_TORCH_PROFILER_DIR=/tmp
    
  4. 启动 vLLM 服务器。以下示例使用 facebook/opt-125m 模型,TP=1,并将最大批处理大小设置为 128

    VLLM_PROMPT_SEQ_BUCKET_MAX=128 VLLM_PROMPT_SEQ_BUCKET_MIN=128 \
    python3 -m vllm.entrypoints.openai.api_server --port 8080 \
    --model "facebook/opt-125m" --tensor-parallel-size 1 \
    --max-num-seqs 128 --dtype bfloat16 \
    --max-model-len 256
    
  5. 等待预热完成并开始分析。

    curl -X POST https://:8080/start_profile
    
  6. 发送分析请求。

    curl https://:8080/v1/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "facebook/opt-125m",
        "prompt": "San Francisco is a",
        "max_tokens": 7,
        "temperature": 0
    }'
    
  7. 停止分析。

    curl -X POST https://:8080/stop_profile
    

多请求服务器分析

  1. 禁用硬件跟踪以减小跟踪文件大小。如果您想收集硬件跟踪,请跳过此步骤。

    hl-prof-config --use-template profile_api --hw-trace off
    export HABANA_PROFILE=1
    
  2. 启用 E2E 分析。

    export VLLM_PROFILER_ENABLED=full
    
  3. 设置输出目录。

    export VLLM_TORCH_PROFILER_DIR=/tmp
    
  4. 启动 vLLM 服务器。以下示例使用 facebook/opt-125m 模型,TP=1,并将最大批处理大小设置为 128

    VLLM_PROMPT_SEQ_BUCKET_MAX=128 VLLM_PROMPT_SEQ_BUCKET_MIN=128 \
    python3 -m vllm.entrypoints.openai.api_server --port 8080 \
    --model "facebook/opt-125m" --tensor-parallel-size 1 \
    --max-num-seqs 128 --dtype bfloat16 \
    --max-model-len 256
    
  5. 安装 datasets 包。

    pip install datasets
    
  6. 使用 vLLM 服务发送分析请求。

    vllm bench serve \
            --backend vllm \
            --model "facebook/opt-125m" \
            --port 8080 \
            --dataset-name "random" --random-input-len 128 --random-output-len 4 \
            --random-range-ratio 1.0 \
            --ignore-eos \
            --profile \
            --max-concurrency "4" \
            --request-rate "inf" \
            --num-prompts 4 \
            --percentile-metrics "ttft,tpot,itl,e2el"
    

脚本分析

  1. 禁用硬件跟踪以减小跟踪文件大小。如果您想收集硬件跟踪,请跳过此步骤。

    hl-prof-config --use-template profile_api --hw-trace off
    export HABANA_PROFILE=1
    
  2. 启用 E2E 分析。

    export VLLM_PROFILER_ENABLED=full
    
  3. 设置输出目录。

    export VLLM_TORCH_PROFILER_DIR=/tmp
    
  4. 通过指示 LLM 对象开始和停止分析来在脚本中启用跟踪。

    from vllm import LLM, SamplingParams
    llm = LLM(model="facebook/opt-125m")
    llm.start_profile() # Start profiling
    outputs = llm.generate(["San Francisco is a"])
    llm.stop_profile() # Stop profiling
    

结果

执行 E2E 分析会生成一个 vllm(...).pt.trace.json.gz 文件,该文件可以使用 Perfetto 打开。

此文件提供有关主机间隙、提示和解码持续时间、重新编译事件以及 Python 执行时间的信息。