授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道
前言
之前Meta开源了Llama 2 模型,一直想基于Meta的Llama 2 创建一个聊天机器人,而使用任何类型的 LLM 进行构建的第一步是将其托管在某处并通过 API 使用它,所以这次就使用AWS 的Lambda服务 和AWS API Gateway创建AP来I调用托管的Llama 2 模型
操作
一、托管 Llama 2 模型
在 SageMaker Studio 中可以搜索我们自己想要的模型, 点击就可以进入对应的模型页面。因为我之前已经创建了 Llama-2-7b-chat,所以这里不在展示创建过程。
这里的Endpoint name 需要记住,在创建函数时需要配置为环境变量。
二、Lambda服务
Lambda服务
AWS Lambda 是一项计算服务,我们无需预配置或管理服务器即可运行代码。
Lambda 在可用性高的计算基础设施上运行代码,执行计算资源的所有管理工作,其中包括服务器和操作系统维护、容量调配和弹性伸缩和记录。使用 Lambda,只需在 Lambda 支持的一种语言运行时系统中提供代码。
创建Lambda函数
lambda 函数是用来调用 LLM 模型的端点
在AWS控制台搜索栏中搜索Lambda服务,然后单击Lambda服务
- 创建函数
选择Python 3.10作为运行时和x86_64架构。然后点击创建函数
- 配置环境变量
单击新创建的模型中的“配置”选项卡,编辑环境变量
输入ENDPOINT_NAME作为键,输入之前模型的端点名称作为值。单击“保存”。这里的键值可以设置为其他名称,但是需要与我们在代码中编写的一致
- 编写调用代码
- 添加触发器
在“添加触发器”对话框中选择“ API Gateway”菜单项
填写 API Gateway 对话框,如下所示,然后单击“添加”
成功创建 API 端点后,可以在“配置”选项卡和“触发器”侧栏下查看 API URL
- 调用 LLM Api
api_url = "https://dywbi9zx2l.execute-api.us-east-1.amazonaws.com/default/call-llm"
json_body = {
"inputs": [
[
{"role": "system", "content": "你现在是一个命理师"},
{"role": "user", "content": "算一下今天运势怎么样"}
]
],
"parameters": {"max_new_tokens": 256, "top_p": 0.9, "temperature": 0.6}
}
r = requests.post(api_url, json=json_body)
print(r.json())
正常响应返回结果如下:
三、碰到的问题
- 权限问题
我们创建Lambda服务是默认创建了一个新的角色,这个新创建的角色是没有使用 Sagemaker 调用端点策略的权限的,所以我们需要在在IAM中给角色添加访问权限,服务的角色可以在新添加的函数的基本设置中查看
1、添加访问SageMaker的策略
2、给角色分配权限
- 超时问题
因为默认的配置中的超时时间只有3秒钟,所以有的时候会遇到超时错误。可以单击“配置”、“常规”和“编辑超时”,然后将超时值设置为更多秒数
总结
这样我们就创建了一个基于Llama-2-7b-chat模型的API,总体上操作还是比较简单的,基本上没有很难操作的地方,如果调用出错的话,可以查看下日志进行排查。