CT-LLM-Inference安裝與使用
更新時間 2024-12-02 09:34:09
最近更新時間: 2024-12-02 09:34:09
分享文章
這里向您介紹天翼云自研的CT-LLM-Inference超長序列生成軟件包的安裝與使用方式。
安裝
- python包下載地址://huabei-2.zos.daliqc.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