在 Amazon Bedrock 上使用 Hugging Face 模型

发布于 2024 年 12 月 9 日
在 GitHub 上更新

logos

我们激动地宣布,Hugging Face 的热门开放模型现已在 Amazon Bedrock 新推出的 Bedrock Marketplace 上架!AWS 客户现在可以通过 Bedrock Marketplace 部署 83 款开放模型,以构建他们的生成式 AI 应用程序。

在底层,Bedrock Marketplace 的模型端点由 Amazon SageMaker Jumpstart 管理。通过 Bedrock Marketplace,您现在可以将 SageMaker JumpStart 的易用性与 Amazon Bedrock 的完全托管基础设施相结合,包括与 Agents、Knowledge Bases、Guardrails 和 Model Evaluations 等高级 API 的兼容性。

在 Amazon Bedrock 中注册您的 SageMaker Jumpstart 端点时,您只需支付 SageMaker 的计算资源费用,并适用常规的 Amazon Bedrock API 价格。

在这篇博文中,我们将向您展示如何部署 Gemma 2 27B Instruct 模型,并通过 Amazon Bedrock API 使用该模型。您将学习如何:

  1. 部署 Google Gemma 2 27B Instruct
  2. 使用 Amazon Bedrock API 发送请求
  3. 清理

部署 Google Gemma 2 27B Instruct

有两种方法可以部署用于 Amazon Bedrock 的开放模型:

  1. 您可以从 Bedrock 模型目录中部署您的开放模型。
  2. 您可以使用 Amazon Jumpstart 部署您的开放模型,并将其注册到 Bedrock。

两种方法类似,因此我们将引导您通过 Bedrock 模型目录进行操作。

首先,在 Amazon Bedrock 控制台中,请确保您位于 Bedrock Marketplace 可用的 14 个区域之一。然后,在导航窗格的“基础模型”部分选择 “模型目录”。在这里,您可以搜索无服务器模型和 Amazon Bedrock Marketplace 中可用的模型。按“Hugging Face”提供商筛选结果,您可以浏览 83 款可用的开放模型。

例如,让我们搜索并选择 Google Gemma 2 27B Instruct。

model-catalog.png

选择模型后会打开模型详情页面,您可以在其中看到更多来自模型提供商的信息,例如模型亮点和使用方法,包括示例 API 调用。

在右上角,让我们点击“部署”。

model-card.png

这会带您到部署页面,您可以在此选择端点名称、实例配置以及与网络配置和用于在 SageMaker 中执行部署的服务角色相关的高级设置。让我们使用默认的高级设置和推荐的实例类型。

您还需要接受模型提供商的最终用户许可协议。

在右下角,让我们点击“部署”。

model-deploy.png

我们刚刚在您的 Amazon SageMaker 租户中,在一台 ml.g5.48xlarge 实例上启动了 Google Gemma 2 27B Instruct 模型的部署,该模型与 Amazon Bedrock API 兼容!

端点部署可能需要几分钟。它将出现在“Marketplace 部署”页面上,您可以在导航窗格的“基础模型”部分找到该页面。

通过 Amazon Bedrock API 使用模型

您可以通过 UI 在 Playground 中快速测试模型。但是,要以编程方式使用任何 Amazon Bedrock API 调用已部署的模型,您需要获取端点 ARN。

从托管部署列表中,选择您的模型部署以复制其端点 ARN。

model-arn.png

您可以使用您偏好的语言中的 AWS SDK 或使用 AWS CLI 来查询您的端点。

以下是使用 AWS SDK for Python (boto3) 通过 Bedrock Converse API 的示例:

import boto3

bedrock_runtime = boto3.client("bedrock-runtime")

# Add your bedrock endpoint arn here.
endpoint_arn = "arn:aws:sagemaker:<AWS::REGION>:<AWS::AccountId>:endpoint/<Endpoint_Name>"

# Base inference parameters to use.
inference_config = {
    "maxTokens": 256,
    "temperature": 0.1,
    "topP": 0.999,
}

# Additional inference parameters to use.
additional_model_fields = {"parameters": {"repetition_penalty": 0.9, "top_k": 250, "do_sample": True}}
response = bedrock_runtime.converse(
    modelId=endpoint_arn,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "text": "What is Amazon doing in the field of generative AI?",
                },
            ]
        },
        ],
    inferenceConfig=inference_config,
    additionalModelRequestFields=additional_model_fields,
)
print(response["output"]["message"]["content"][0]["text"])
"Amazon is making significant strides in the field of generative AI, applying it across various products and services. Here's a breakdown of their key initiatives:\n\n**1. Amazon Bedrock:**\n\n* This is their **fully managed service** that allows developers to build and scale generative AI applications using models from Amazon and other leading AI companies. \n* It offers access to foundational models like **Amazon Titan**, a family of large language models (LLMs) for text generation, and models from Cohere"

就是这样!如果您想更进一步,请查阅 Bedrock 文档

清理

实验结束后,别忘了删除您的端点,以停止产生费用!在您获取端点 ARN 的页面右上角,点击“删除”即可删除您的端点。

社区

    raise error_class(parsed_response, operation_name)
botocore.errorfactory.ValidationException: An error occurred (ValidationException) when calling the Converse operation: This action doesn't support the model that you provided. Try again with a supported text or chat model.
  • 运行下面的代码片段时遇到了上述问题,运行时我传入了实际的 arn,请问这份文档是最新的吗?
        endpoint_arn = "arn:aws:sagemaker:<AWS::REGION>:<AWS::AccountId>:endpoint/<Endpoint_Name>"
        response = bedrock_runtime.converse(
                modelId=endpoint_arn,
                messages=[
                    {
                        "role": "user",
                        "content": [
                            {
                                "text": "What is Amazon doing in the field of generative AI?",
                            },
                        ]
                    },
                    ],
                inferenceConfig=inference_config,
                additionalModelRequestFields=additional_model_fields,
        ) 
·

你好 @vsrivastav-pm ,很高兴您在尝试!您能在论坛里开一个讨论,提供更多关于部署到您 SM 端点的模型的信息并标记我吗?
https://discuss.huggingface.co/c/sagemaker/17

此评论已被隐藏(标记为已解决)
·
文章作者

您试过 Amazon Bedrock 自定义模型导入 吗?如果试过,请分享您的反馈!

注册登录 以发表评论