AI开发平台MODELARTS-分离部署推理服务:步骤九 开启动态配比调整功能(可选)

时间:2024-12-17 18:06:51

步骤九 开启动态配比调整功能(可选)

动态配比调整功能允许服务在运行时根据负载调整全量和增量的数量配比。例如启动时设置全量个数为2,增量个数为2。开启此功能后,服务能够根据负载的特性自动调整为1:3或3:1的全量增量比。

全量和增量的启动方法无需变化,scheduler实例启动时需要额外配置一些参数,示例命令如下:

export GLOBAL_RANK_TABLE_FILE_PATH=global_ranktable_10.**.**.18.json
export RANK_TABLE_FILE_PATH=local_rank_table_10.**.**.18_host.json
export NODE_PORTS=8088,8089
export USE_OPENAI=1

sh AscendCloud-LLM/llm_tools/PD_separate/start_servers.sh \
    --model=${model} \
    --tensor-parallel-size=2 \
    --max-model-len=4096 \
    --max-num-seqs=256 \
    --max-num-batched-tokens=4096 \
    --host=0.0.0.0 \
    --port=9000 \
    --served-model-name ${served-model-name} \
    --dynamic \
    --replan-interval=6000 \
    --workload-results="workload_dir" \
    --max-files=2 \
    --max-workload-nums=100 \
    --profile-input-len="64,256,2048" \
    --profile-out-len="4,16,64,128" \
    --profile-results="training_data_8b-063.json" \
    --ratio-model="ProducerConsumer"

# 当前schduler端口port对外提供推理服务,故使用该端口进行性能验证和精度对齐

基本参数请参考步骤八 启动scheduler实例,额外的参数如下:

  • --dynamic:是否开启自适应角色转换,如果不开启,则下方参数无效
  • --replan-interval:重新计算pd配比转换的间隔时间,默认6000,单位为秒
  • --profile-input-len:profiling的输入长度,默认"64,256,2048",服务会在启动时测算这些输入长度数据的执行时间,该数量会影响服务启动时间,建议不超过10个
  • --profile-out-len:profiling的输出长度,默认"4,16,64,128",服务会在启动时测算这些输出长度数据的执行时间,该数量会影响服务启动时间,建议不超过5个
  • --profile-results:profiling结果的输出地址,用于估算配比的重要数据,可重复使用及用于离线计算配比
  • --ratio-model:配比计算方法,当前仅支持"ProducerConsumer"
  • --workload-results:定期将处理过的请求输出到该目录下,务必是一个空文件夹
  • --max-files:记录请求的最大文件数量
  • --max-workload-num: 每个文件记录的最大请求数量,当请求数超过该值时才会触发配比调整

除了在线配比调整的功能之外,还提供了额外离线估算最优配比的工具,用户可以在服务启动之前用此工具获得一个较优的配比,使用示例如下:

python ${LLM_TOOLS_PATH}/PD_separate/ratio_offline.py \
     --model=${model} \
     --tensor-parallel-size=1 \
     --max-model-len=8192 \
     --max-num-seqs=256 \
     --max-num-batched-tokens=8192 \
     --ratio-model=ProducerConsumer \
     --block-num=476 \
     --instance-num=6 \
     --input-len=1024 \
     --output-len=48 \
     --request-rate=10 \
     --num-prompts=1000 \
     --arrival-pattern=poisson \
     --profile-results=training_data_8b-063.json

其中常见的参数如下:

  • --model:HuggingFace下载的模型文件,此工具不会加载模型权重,也无需NPU
  • --max-num-seqs:同时处理的最大句子数量
  • --max-num-batched-tokens:最多会使用多少token,必须大于或等于--max-model-len,推荐使用4096或8192
  • --tensor-parallel-size:模型并行数量
  • --ratio-model:配比计算方法,当前仅支持"ProducerConsumer"
  • --block-num: 全量或增量实例可用的free block数,可通过步骤六 启动全量推理实例中的启动日志获得
  • --instance-num: 全量+增量的实例总个数
  • --input-len: 模拟数据的输入长度
  • --output-len: 模拟数据的输出长度
  • --request-rate: 平均每秒发送的请求个数(request per seconds)
  • --num-prompts: 模拟的请求总数
  • --arrival-pattern: 请求发送的pattern,当前仅支持poisson
  • --profile-results: profiling的结果文件,可通过在scheduler实例开启动态功能获得,较大影响配比计算的准确率,建议先获取此文件后使用该工具
support.huaweicloud.com/bestpractice-modelarts/modelarts_llm_infer_91104.html