使用Hugging Face推理端点部署嵌入模型
使用Hugging Face模型推理端点部署嵌入模型
生成式AI和ChatGPT等LLM的兴起增加了对嵌入模型的兴趣和重要性,特别是用于检索增强生成(如搜索或与数据聊天)的任务。通过将句子、图像、单词等表示为数字向量表示,嵌入模型可以帮助我们将语义相关的项目进行映射并检索有用的信息。这有助于为我们的提示提供相关的上下文,以提高生成的质量和特异性。
与LLMs相比,嵌入模型的尺寸较小,在推理方面也更快速。这非常重要,因为在更改模型或改进模型微调之后,您需要重新创建嵌入。此外,整个检索增强过程尽可能快速以提供良好的用户体验也非常重要。
在本博客文章中,我们将向您展示如何使用Text Embedding Inference(我们的托管式SaaS解决方案)部署开源嵌入模型到Hugging Face Inference Endpoints,并教您如何运行大规模批量请求。
在开始之前,让我们复习一下关于推理端点的知识。
- Atom Computing首次宣布推出一台拥有1000多个量子比特的量子计算机
- 能源部加速新兴技术发展
- 南瓜香料时间序列分析 (Nánguā xiāngliào shíjiān xùliè fēnxī)
1. Hugging Face Inference Endpoints是什么?
Hugging Face Inference Endpoints提供了一种简单且安全的方式来部署用于生产的机器学习模型。推理端点使开发人员和数据科学家能够创建生成式AI应用程序,而无需管理基础架构:只需几个点击即可简化部署过程,包括处理大量请求的自动扩展、通过按照端点的正常运行时间计费来降低基础架构成本,以及提供高级安全性。
以下是一些最重要的功能:
- 简单部署:只需几个点击即可将模型部署为生产就绪的API,无需处理基础架构或MLOps。
- 成本效率:利用自动缩放到零的能力,当端点不使用时减少基础架构成本,同时根据端点的正常运行时间计费,确保成本效益。
- 企业安全:将模型部署在仅通过直接VPC连接访问的安全离线端点上,支持SOC2 Type 2认证,并提供BAA和GDPR数据处理协议以增强数据安全性和合规性。
- LLM优化:针对LLMs进行优化,通过分页注意力和自定义transformers代码以及由Text Generation Inference提供支持的快速注意力实现高吞吐量和低延迟。
- 全面的任务支持:内置支持🤗 Transformers、Sentence-Transformers和Diffusers任务和模型,并支持轻松定制,以实现高级任务,如扬声器日记化或任何机器学习任务和库。
您可以从以下链接开始使用推理端点:https://ui.endpoints.huggingface.co/
2. Text Embeddings Inference是什么?
Text Embeddings Inference(TEI)是一种专为部署和提供开源文本嵌入模型而构建的解决方案。TEI旨在支持高性能提取,支持最受欢迎的模型。TEI支持Massive Text Embedding Benchmark (MTEB) Leaderboard中的所有前10个模型,包括FlagEmbedding、Ember、GTE和E5。TEI目前实现了以下性能优化功能:
- 无模型图编译步骤
- 小型Docker镜像和快速启动时间。准备好真正的无服务器!
- 基于令牌的动态批处理
- 通过Flash Attention,Candle和cuBLASLt优化的transformers代码用于推理
- Safetensors权重加载
- 生产就绪(使用Open Telemetry进行分布式跟踪,Prometheus指标)
这些功能在吞吐量和成本方面实现了业界领先的性能。在具有512个令牌的序列长度和32个批次大小的Nvidia A10G推理端点上对BAAI/bge-base-en-v1.5进行基准测试,我们实现了每秒450次以上的吞吐量,每100万个令牌的成本为0.00156美元或每千个令牌的成本为0.00000156美元。这比OpenAI Embeddings便宜64倍(0.0001美元/千个令牌)。
3.将嵌入模型部署为推理端点
要开始使用,您需要使用已注册组织账户或用户账户,并有一个已登记的支付方式(您可以在此处添加一个),然后在https://ui.endpoints.huggingface.co访问推理端点。
然后,点击“新建端点”。选择存储库、云和地区,调整实例和安全设置,并在我们这种情况下部署BAAI/bge-base-en-v1.5
。
推理端点根据模型大小建议一个足够大的实例类型来运行模型。这里使用Intel Ice Lake 2 vCPU
。为了获得我们运行的基准性能,将实例更改为1x Nvidia A10G
。
注:如果无法选择实例类型,则需要与我们联系并请求实例配额。
然后,您可以单击“创建端点”来部署您的模型。经过1-3分钟后,端点应该在线并可用来提供请求。
4.向端点发送请求并创建嵌入
端点概述提供了访问推理小部件的功能,该小部件可用于手动发送请求。这使您可以快速测试不同输入的端点并与团队成员共享。
注意:TEI当前不会自动截断输入。您可以通过在请求中设置truncate: true
来启用此功能。
除了小部件,概述还提供了cURL、Python和Javascript的代码片段,您可以使用这些代码片段发送请求到模型。代码片段向您显示如何发送单个请求,但TEI还支持批量请求,这使您可以发送多个文档以增加端点的利用率。以下是如何发送具有截断设置为true的批量请求的示例。
import requestsAPI_URL = "https://l2skjfwp9punv393.us-east-1.aws.endpoints.huggingface.cloud"headers = { "Authorization": "Bearer YOUR TOKEN", "Content-Type": "application/json"}def query(payload): response = requests.post(API_URL, headers=headers, json=payload) return response.json() output = query({"inputs": ["sentence 1", "sentence 2", "sentence 3"],"truncate": True})# output [[0.334, ...], [-0.234, ...]]
结论
Hugging Face 推断端点上的 TEI 实现了快速和高效的部署最先进的嵌入模型。以每秒 450+ 请求的行业领先吞吐量和每 1k 计算代币低至 $0.00000156 的成本,推断端点与 OpenAI 嵌入相比,节省了 64 倍的成本。
对于利用文本嵌入进行语义搜索、聊天机器人、推荐等的开发人员和公司,Hugging Face 推断端点消除了基础架构开销,并以最低成本提供高吞吐量,简化了从研究到生产的流程。