text-generation-inference 文档
LoRA (低秩自适应)
并获得增强的文档体验
开始使用
LoRA (低秩自适应)
什么是 LoRA?
LoRA 是一种技术,它允许高效地微调模型,而只需更新模型权重的一小部分。当您有一个在大型数据集上预训练的大型模型,但希望在较小的数据集上或针对特定任务进行微调时,这非常有用。
LoRA 的工作原理是向模型添加少量额外的权重,这些权重用于使模型适应新的数据集或任务。这些额外的权重在微调过程中学习,而模型的其余权重保持固定。
如何使用?
LoRA 的使用方式多种多样,社区总是在发现新的使用方法。以下是一些您可以使用 LoRA 的示例
技术上,LoRA 可用于在小数据集上微调大型语言模型。然而,这些用例可以涵盖广泛的应用,例如:
- 在小型数据集上微调语言模型
- 在领域特定数据集上微调语言模型
- 在标签有限的数据集上微调语言模型
使用 LoRA 优化推理
LoRA 可以在推理过程中使用,方法是在每个指定层将适配器权重与模型权重相乘。这个过程计算成本可能很高,但得益于 punica-ai 和 lorax 团队的出色工作,已经开发出优化的内核和框架,使这个过程更加高效。TGI 利用这些优化,以便为多个 LoRA 模型提供快速高效的推理。
使用 TGI 服务多个 LoRA 适配器
一旦 LoRA 模型被训练好,它就可以像普通语言模型一样用于生成文本或执行其他任务。然而,由于模型已经在特定数据集上进行了微调,它在该数据集上的表现可能比未经过微调的模型更好。
在实践中,拥有多个 LoRA 模型通常很有用,每个模型都在不同的数据集上或为不同的任务进行微调。这使您能够使用最适合特定任务或数据集的模型。
文本生成推理 (TGI) 现在支持在启动时加载多个 LoRA 模型,这些模型可用于生成请求。此功能从 ~2.0.6
版本开始提供,并与使用 peft
库训练的 LoRA 模型兼容。
指定 LoRA 模型
要在 TGI 中使用 LoRA,在启动服务器时,您可以使用 LORA_ADAPTERS
环境变量指定要加载的 LoRA 模型列表。例如:
LORA_ADAPTERS=predibase/customer_support,predibase/dbpedia
要指定模型版本,请使用 adapter_id@revision
,如下所示:
LORA_ADAPTERS=predibase/customer_support@main,predibase/dbpedia@rev2
要使用本地存储的 lora 适配器,请使用 adapter-name=/path/to/adapter
,如下所示。当您想要使用此适配器时,请设置 "parameters": {"adapter_id": "adapter-name"}"
LORA_ADAPTERS=myadapter=/some/path/to/adapter,myadapter2=/another/path/to/adapter
注意,可以将 adapter_ids 与 adapter_id=adapter_path 混合使用,例如:
LORA_ADAPTERS=predibase/dbpedia,myadapter=/path/to/dir/
在服务器日志中,您将看到以下消息:
Loading adapter weights into model: predibase/customer_support Loading adapter weights into model: predibase/dbpedia
生成文本
然后,您可以在生成请求中使用这些模型,方法是在请求有效负载中指定 lora_model
参数。例如
curl 127.0.0.1:3000/generate \
-X POST \
-H 'Content-Type: application/json' \
-d '{
"inputs": "Hello who are you?",
"parameters": {
"max_new_tokens": 40,
"adapter_id": "predibase/customer_support"
}
}'
如果您正在使用以如下方式设置的本地存储的 lora 适配器:LORA_ADAPTERS=myadapter=/some/path/to/adapter
,以下是一个示例有效负载:
curl 127.0.0.1:3000/generate \
-X POST \
-H 'Content-Type: application/json' \
-d '{
"inputs": "Hello who are you?",
"parameters": {
"max_new_tokens": 40,
"adapter_id": "myadapter"
}
}'
注意: Lora 功能是新的,仍在改进中。如果您遇到任何问题或有任何反馈,请通过在 GitHub 仓库 中提交问题告知我们。此外,文档和改进的客户端库将很快发布。
包含详细示例的更新教程将很快发布。敬请期待!
< > 在 GitHub 上更新