如何自托管AI嵌入:深入探索Self Hosted Embeddings和Hugging Face模型
在这篇文章中,我们将深入探讨如何使用SelfHostedEmbeddings
、SelfHostedHuggingFaceEmbeddings
和SelfHostedHuggingFaceInstructEmbeddings
类,在自托管环境中加载和使用Hugging Face模型。我们将会提供实用的代码示例,讨论潜在的挑战及其解决方案,并引导您获取更多资源。
引言
大多数开发者习惯于在云端环境中使用预训练模型,但随着对隐私和数据控制需求的增加,自托管AI模型正在成为一个重要的趋势。本篇文章中,我们将学习如何在本地或自定义集群上运行这些嵌入服务。
主要内容
1. 环境准备
首先,您需要为模型选择适当的硬件环境。这里有几个选项:
import runhouse as rh
# For an on-demand A100 with GCP, Azure, or Lambda
gpu = rh.cluster(name="rh-a10x", instance_type="A100:1", use_spot=False)
# 使用API代理服务提高访问稳定性
2. 使用SelfHostedEmbeddings加载模型
我们可以加载常见的预训练模型并生成文本嵌入。以下是使用SelfHostedHuggingFaceEmbeddings
的示例:
from langchain_community.embeddings import SelfHostedHuggingFaceEmbeddings
embeddings = SelfHostedHuggingFaceEmbeddings(hardware=gpu)
text = "This is a test document."
query_result = embeddings.embed_query(text)
3. 自定义加载函数
有时您可能需要自定义模型加载过程,比如使用特定的Hugging Face模型。以下是一个示例:
def get_pipeline():
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
model_id = "facebook/bart-base"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)
return pipeline("feature-extraction", model=model, tokenizer=tokenizer)
def inference_fn(pipeline, prompt):
# Return last hidden state of the model
if isinstance(prompt, list):
return [emb[0][-1] for emb in pipeline(prompt)]
return pipeline(prompt)[0][-1]
from langchain_community.embeddings import SelfHostedEmbeddings
embeddings = SelfHostedEmbeddings(
model_load_fn=get_pipeline,
hardware=gpu,
model_reqs=["./", "torch", "transformers"],
inference_fn=inference_fn,
)
query_result = embeddings.embed_query(text)
常见问题和解决方案
-
网络限制问题:某些地区可能无法直接访问Hugging Face的API,可以使用API代理服务,提升访问的稳定性。
-
模型兼容性:确保安装的PyTorch和Transformers版本与所需的模型兼容。
总结和进一步学习资源
通过本文,您了解了如何在自托管环境中加载和使用嵌入模型。希望这篇文章帮助您掌握了自托管模型的基本技巧。如果您想进一步学习,可以参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—