大语言模型LLM(Large Language Model)指参数数量达到亿级别的神经网络语言模型,例如GPT-3、GPT-4、PaLM、PaLM2等。当您需要处理大量自然语言数据或希望建立复杂的语言理解系统时,可以将大语言模型转化为推理服务,通过API轻松集成先进的NLP能力(例如文本分类、情感分析、机器翻译等)到您的应用程序中。通过服务化LLM,您可以避免昂贵的基础设施成本,快速响应市场变化,并且由于模型运行在云端,还可以随时扩展服务以应对用户请求的高峰,从而提高运营效率。
前提条件
已在ASM中开启ModelMesh功能,并配置ASM环境。具体操作,请参见使用模型服务网格进行多模型推理服务的步骤一和步骤二。
已了解如何使用模型服务网格自定义模型运行时。具体操作,请参见使用模型服务网格自定义模型运行时。
步骤一:构建自定义运行时
构建自定义运行时,提供带有提示调整配置的HuggingFace LLM。此示例中的默认值设置为预先构建的自定义运行时镜像和预先构建的提示调整配置。
实现一个继承自MLServer MLModel的类。
peft_model_server.py文件包含了如何提供带有提示调整配置的HuggingFace LLM的所有代码。
_load_model
函数是该文件中的一部分,用于选择已训练的PEFT提示调整配置的预训练LLM模型。_load_model
函数还定义了分词器,以便对推理请求中的原始字符串输入进行编码和解码,而无需用户预处理其输入为张量字节。构建Docker镜像。
实现模型类之后,您需要将其依赖项(包括MLServer)打包到一个支持ServingRuntime资源的镜像中。您可以参考如下Dockerfile进行镜像构建。
创建新的ServingRuntime资源。
使用以下内容,保存为sample-runtime.yaml, 创建一个新的ServingRuntime资源,并将其指向您刚创建的镜像。
执行以下命令,部署ServingRuntime资源。
kubectl apply -f sample-runtime.yaml
创建完成后,您可以在ModelMesh部署中看到新的自定义运行时。
步骤二:部署LLM服务
为了使用新创建的运行时部署模型,您需要创建一个InferenceService资源来提供模型服务。该资源是KServe和ModelMesh用于管理模型的主要接口,代表了模型在推理中的逻辑端点。
使用以下内容,创建一个InferenceService资源来提供模型服务。
在YAML中,InferenceService命名为
peft-demo
,并声明其模型格式为peft-model
,与之前创建的示例自定义运行时使用相同的格式。还传递了一个可选字段runtime
,明确告诉ModelMesh使用peft-model-server
运行时来部署此模型。执行以下命令,部署InferenceService资源。
kubectl apply -f ${实际YAML名称}.yaml
步骤三:运行推理服务
使用curl
命令,发送推理请求到上面部署的LLM模型服务。
MODEL_NAME="peft-demo"
ASM_GW_IP="ASM网关IP地址"
curl -X POST -k http://${ASM_GW_IP}:8008/v2/models/${MODEL_NAME}/infer -d @./input.json
curl
命令中的input.json
表示请求数据:
{
"inputs": [
{
"name": "content",
"shape": [1],
"datatype": "BYTES",
"contents": {"bytes_contents": ["RXZlcnkgZGF5IGlzIGEgbmV3IGJpbm5pbmcsIGZpbGxlZCB3aXRoIG9wdGlvbnBpZW5pbmcgYW5kIGhvcGU="]}
}
]
}
bytes_contents
对应字符串“Every day is a new beginning, filled with opportunities and hope”
的Base64编码。
JSON响应如下所示:
{
"modelName": "peft-demo__isvc-5c5315c302",
"outputs": [
{
"name": "output-0",
"datatype": "BYTES",
"shape": [
"1",
"1"
],
"parameters": {
"content_type": {
"stringParam": "str"
}
},
"contents": {
"bytesContents": [
"VHdlZXQgdGV4dCA6IEV2ZXJ5IGRheSBpcyBhIG5ldyBiaW5uaW5nLCBmaWxsZWQgd2l0aCBvcHRpb25waWVuaW5nIGFuZCBob3BlIExhYmVsIDogbm8gY29tcGxhaW50"
]
}
}
]
}
bytesContents
进行Base64解码后的内容如下,表明上述大语言模型LLM的模型服务请求符合预期。
Tweet text : Every day is a new binning, filled with optionpiening and hope Label : no complaint