背景介绍
IPEX-LLM是一款用于在Intel CPU及GPU(例如本地PC上的集成GPU,离散GPU如Arc, Flex和Max)上运行大型语言模型(LLM)的PyTorch库。它能以极低的延迟执行文本生成任务。本文将介绍如何使用LangChain与IPEX-LLM进行文本生成的交互。
核心原理解析
IPEX-LLM通过将预训练的模型转换为低比特格式,并充分利用Intel硬件特性,极大地提高了推理效率。这使得在本地CPU和GPU上运行LLM变得更为高效,适合实际应用中的低延迟需求。
代码实现演示
下面我们展示如何设置并使用IPEX-LLM在本地环境中进行文本生成任务。
环境准备
首先,我们需要更新LangChain并安装IPEX-LLM:
%pip install -qU langchain langchain-community
%pip install --pre --upgrade ipex-llm[all]
基本用法
import warnings
from langchain.chains import LLMChain
from langchain_community.llms import IpexLLM
from langchain_core.prompts import PromptTemplate
warnings.filterwarnings("ignore", category=UserWarning, message=".*padding_mask.*")
# 指定提示模板
template = "USER: {question}\nASSISTANT:"
prompt = PromptTemplate(template=template, input_variables=["question"])
# 加载模型
llm = IpexLLM.from_model_id(
model_id="lmsys/vicuna-7b-v1.5",
model_kwargs={"temperature": 0, "max_length": 64, "trust_remote_code": True},
)
# 创建链
llm_chain = prompt | llm
# 执行文本生成任务
question = "What is AI?"
output = llm_chain.invoke(question)
print(output)
保存/加载低比特模型
为了更高效地使用模型,我们可以将低比特模型保存到磁盘,并在需要时加载:
# 保存低比特模型
saved_lowbit_model_path = "./vicuna-7b-1.5-low-bit"
llm.model.save_low_bit(saved_lowbit_model_path)
del llm
# 从保存的路径加载低比特模型
llm_lowbit = IpexLLM.from_model_id_low_bit(
model_id=saved_lowbit_model_path,
tokenizer_id="lmsys/vicuna-7b-v1.5",
model_kwargs={"temperature": 0, "max_length": 64, "trust_remote_code": True},
)
# 创建链并执行文本生成任务
llm_chain = prompt | llm_lowbit
question = "What is AI?"
output = llm_chain.invoke(question)
print(output)
应用场景分析
- 本地推理:可在个人PC上部署,适合开发者进行模型调试和小规模测试。
- 边缘设备应用:利用Intel硬件特性,在边缘设备上高效运行AI应用。
- 企业内部部署:可在企业内部服务器上部署,确保数据隐私和安全。
实践建议
- 硬件优化:充分利用Intel硬件特性,选择适合的设备进行推理。
- 低比特模型使用:通过保存和加载低比特模型,提高模型加载和推理速度。
- 调试与测试:在本地环境中进行充分的调试和测试,确保模型的稳定性和准确性。
结束语
通过上述步骤,我们可以高效地在Intel CPU和GPU上运行大型语言模型。如果遇到问题欢迎在评论区交流。
—END—
import openai
# 使用稳定可靠的API服务
client = openai.OpenAI(
base_url='https://yunwu.ai/v1', # 国内稳定访问
api_key='your-api-key'
)