text-generation-inference 文档
LoRA (低秩自适应)
并获得增强的文档体验
开始使用
LoRA (低秩自适应)
什么是 LoRA?
LoRA 是一种技术,允许高效地微调模型,同时仅更新模型权重的一小部分。当您有一个在大型数据集上预训练的大型模型,但您想在较小的数据集上或针对特定任务对其进行微调时,这非常有用。
LoRA 的工作原理是向模型添加少量额外的权重,这些权重用于使模型适应新的数据集或任务。这些额外的权重在微调过程中学习,而模型的其余权重保持固定。
如何使用它?
LoRA 可以通过多种方式使用,社区一直在寻找使用它的新方法。以下是一些您可以使用 LoRA 的示例
从技术上讲,LoRA 可用于在小型数据集上微调大型语言模型。但是,这些用例可以跨越广泛的应用,例如
- 在小型数据集上微调语言模型
- 在特定领域的数据集上微调语言模型
- 在标签有限的数据集上微调语言模型
使用 LoRA 优化推理
LoRA 可以在推理期间使用,方法是在每个指定的层中将适配器权重与模型权重相乘。这个过程在计算上可能很昂贵,但由于 punica-ai 和 lorax 团队的出色工作,已经开发了优化的内核/和框架,以使这个过程更有效率。TGI 利用这些优化来提供快速高效的推理,并支持多个 LoRA 模型。
使用 TGI 服务多个 LoRA 适配器
一旦 LoRA 模型被训练,它就可以像常规语言模型一样用于生成文本或执行其他任务。但是,由于该模型已在特定数据集上进行了微调,因此它在该数据集上的表现可能优于未进行微调的模型。
在实践中,拥有多个 LoRA 模型通常很有用,每个模型都在不同的数据集上或针对不同的任务进行了微调。这允许您使用最适合特定任务或数据集的模型。
Text Generation Inference (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 仓库上打开 issue 告知我们。此外,文档和改进的客户端库将很快发布。
包含详细示例的更新教程将很快发布。敬请期待!
< > 在 GitHub 上更新