安装
- python包下载地址:https://huabei-2.zos.ctyun.cn/huabei2-cwai-image/inference/vllm-kv-cache-distributed-inference.tar。
- 运行超长序列推理软件包所需环境依赖较多,建议通过工程自带的Dockerfile构建镜像环境运行。
- 镜像构建:在工程根目录下运行docker build -t llm_inference:test . 。
- 运行构建好的镜像,可以在/workspace看到vllm文件夹, 相关程序都在这里。
使用
与开源软件vllm的运行方法基本一致,激活上下文并行能力仅需通过参数控制。
推理示例:
from vllm import LLM, SamplingParams
# Sample prompts.
prompts = [
"The president of the United States is"
]
# Create a sampling params object.
sampling_params = SamplingParams(temperature=0.8, top_p=0.95
, max_tokens=100000)
# Create an LLM.
model_str="/docker_image_data/Llama-2-7b-chat-hf"
llm = LLM(model=model_str, kv_cache_distributed_size=4)
# Generate texts from the prompts. The output is a list of RequestOutput objects
# that contain the prompt, generated text, and other information.
outputs = llm.generate(prompts, sampling_params)
# Print the outputs.
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
运行上面示例需要:
- 下载需要运行推理程序的模型文件,或部署自己训练的具有超长序列生成能力的模型到某一文件夹,例如/docker_image_data/Llama-2-7b-chat-hf(注:此原生模型文件来自hugging face,标准生成长度只有4096,不支持超长序列生成能力)。
- 利用参数初始化大语言模型接口LLM,'model'即上面步骤(1)提供的模型文件地址;'kv_cache_distributed_size'是可用于上下文并行存储的计算单元(GPU)数量,数量越多,可生成的序列长度越长。
- 需要注意的是,原生vllm支持的模型网络结构包括gpt2, llama, opt, baichuan, yi, qianwen等等,我们提供的代码里目前只适配并测试了llama和opt,如果用户自己部署的模型并非这两种,则需要参考上面两个模型的改造方法,在相应模型网络文件上进行一定的适配(具体参考llm-inference/vllm/model_executor/models/ 内的代码)。
参数说明
- 'kv_cache_distributed_size'是可用于上下文并行存储的计算单元(GPU)数量,数量越多,可生成的序列长度越长,默认值是1,即不启动上下文并行存储。
- vllm原生支持张量并行的计算方式,可以在LLM的初始化参数中通过'tensor_parallel_size'指定,该值默认为1,即整个模型存储在单张卡上,不进行张量并行。
- 我们发布的上下文存储并行参数'kv_cache_distributed_size'和vllm原生的张量并行'tensor_parallel_size'参数可以同时使用,但要注意前者的数值必须是后者的整数倍。
- 假设'kv_cache_distributed_size'=M; 'tensor_parallel_size'=N,要求M%N=0,推理程序运行时会假设每个整体模型的参数分布存储在N个GPU上,一共有M/N个模型并行运行,文本的上下文信息分布式存储在M个GPU的内存上。
示例镜像使用
提供的示例镜像与通过代码自动构建的镜像的内容一致,但对生成结束条件做了改变,可通过运行或修改示例脚本(/workspace/offline_inference.py)中的参数观察运行示例结果。
- 镜像名称:vllm-kv-cache-distributed-inference_01-ubuntu22.04-amd64.tar