Llama 2 云端部署与API调用【AWS SageMaker】

Meta 刚刚发布了 Llama 2 大模型。如果你和我们一样,你一定会迫不及待地想要亲自动手并用它来构建。

在这里插入图片描述

推荐:用 NSDT设计器 快速搭建可编程3D场景。

使用任何类型的 LLM 进行构建的第一步是将其托管在某处并通过 API 使用它。 然后你的开发人员可以轻松地将其集成到你的应用程序中。本指南将介绍如何在Amazon SageMaker 上托管 Llama 2 模型,以及如何利用 AWS Lambda 和 AWS API Gateway 通过 API 使用模型。

在开始之前,请前往amazon aws 登录或注册帐户。新帐户将自动获得免费套餐访问权限,这确实提供了一些 Sagemaker 积分,但请留意它们,因为根据你的服务器选择,账单可能会高得离谱。

1、为什么使用Llama2?

当我可以使用 Open AI API 时,为什么要使用 llama 2?

3个原因:

  • 安全性——让敏感数据远离第三方供应商
  • 可靠性——确保您的应用程序有正常运行时间
  • 一致性——每次提出问题都会得到相同的结果

2、托管Llama2模型

进入 AWS 仪表板后,在搜索栏中搜索 AWS Sagemaker,然后单击它以转到 AWS Sagemaker
在这里插入图片描述

AWS Sagemaker 是 AWS 用于部署和托管机器学习模型的解决方案。
在这里插入图片描述

2.1 在 AWS Sagemaker 上设置域

单击左侧边栏上的域
在这里插入图片描述

单击“创建域”

在这里插入图片描述

确保选中“快速设置”框
在这里插入图片描述

使用你选择的域填写下面的表格,并填写其余选项,如屏幕截图中所示。

如果你对此不熟悉,请在执行角色类别中选择创建新角色。 否则,请选择之前可能创建过的角色。
在这里插入图片描述

单击表单上的“提交”以创建你的域
在这里插入图片描述

域创建完成后,你将看到此屏幕
在这里插入图片描述

记下在此处看到的用户名,因为下一步部署我们的模型需要它

如果你的域创建时出现错误,可能是由于用户权限或 VPC 配置造成的。

2.2 启动 Sagemaker Studio 会话

域创建完成后,单击左侧边栏中的 Studio 链接
在这里插入图片描述

选择你之前创建的域和用户配置文件,然后单击“Open Studio”

在这里插入图片描述

这将带你进入 Jupyter 实验室工作室会话,如下所示:

2.3 选择 Llama-2–7b-chat 模型

我们将部署 llama 2 模型的聊天优化版和 7b版本。

有一个更强大的 70b 型号,它更加稳定,出于演示目的,它的成本太高,所以我们将使用较小的型号

单击 SageMaker Jumpstart 选项卡下左侧栏中的模型、笔记本、解决方案
在这里插入图片描述

在搜索栏中搜索 Llama 2 模型。 我们正在寻找 7b 聊天模型。 点击模型
在这里插入图片描述

如果没有看到此模型,那么可能需要关闭并重新启动工作室会话

这将带你进入模型页面。 你可以更改最适合你的用例的部署设置,但我们将继续使用默认的 Sagemaker 设置并按原样部署模型
在这里插入图片描述

70B 版本需要强大的服务器,因此如果你的帐户无权访问它,你的部署可能会出错。 在这种情况下,请向 AWS 服务配额提交请求。

等待 5-10 分钟以完成部署并确认屏幕显示
在这里插入图片描述

记下模型的端点名称,因为你需要它来通过 API 使用模型。

至此,你现在已经完成了托管模型的第一部分。

2、通过 API 使用Llama 2模型

首先进入AWS Lambda创建Lambda函数,lambda 函数将用于调用 LLM 模型的端点。

在AWS控制台搜索栏中搜索Lambda服务,然后单击Lambda服务
在这里插入图片描述

单击“Create Function”:
在这里插入图片描述

输入正确的函数名称(无论什么),选择Python 3.10作为运行时和x86_64架构。 然后点击创建函数
在这里插入图片描述

3.1 指定模型的端点

输入前面最后一步中的 LLM 模型的端点名称作为环境变量

单击新创建的模型中的“配置”选项卡
在这里插入图片描述

单击环境变量,然后单击编辑
在这里插入图片描述

单击下一个屏幕上的“Add environment variable”:

在这里插入图片描述

输入 ENDPOINT_NAME 作为键,输入模型的端点名称作为值。 单击“保存”
在这里插入图片描述

你可以为想要的键添加任何内容,但它需要与我们在代码中编写的内容相匹配以便稍后调用该函数

3.2 编写调用 Llama 模型的代码

返回“代码”选项卡,然后复制并粘贴以下代码

import os
import io
import boto3
import json

# grab environment variables
ENDPOINT_NAME = os.environ['ENDPOINT_NAME']
runtime= boto3.client('runtime.sagemaker')

def lambda_handler(event, context):
    response = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME,
                                       ContentType='application/json',
                                       Body=event['body'],
                                       CustomAttributes="accept_eula=true")
    
    result = json.loads(response['Body'].read().decode())
    
    
    return {
        "statusCode": 200,
        "body": json.dumps(result)
    }

代码插入成功后点击"Deploy"进行部署:
在这里插入图片描述

4、将Lambda 函数接入 AWS API Gateway

转到 Lambda 函数的主屏幕并单击添加触发器

在这里插入图片描述

在“添加触发器”对话框中选择“API 网关”菜单项
在这里插入图片描述

填写 API Gateway 对话框,如下所示,然后单击“添加”
在这里插入图片描述

成功创建 API 端点后,你可以在“配置”选项卡和“触发器”侧栏下查看 API URL
在这里插入图片描述

5、测试Llama2 API

使用以下 JSON 正文向你的 API URL 发出 POST 或 GET 请求

{
 "inputs": [
  [
   {"role": "system", "content": "You are chat bot who writes songs"},
   {"role": "user", "content": "Write a rap about Barbie"}
  ]
 ],
 "parameters": {"max_new_tokens":256, "top_p":0.9, "temperature":0.6}
}

input 键存储一个数组,每个元素是你和聊天机器人之间的 1 次对话。

对话由嵌套的 JSON 对象表示,其中包含表示对话中“人”的角色和作为提示的内容

检查API 的响应状态码和响应JSON。 状态代码应为 200,响应 JSON 将如下所示

[{"generation": {"role": "assistant", 
"content": " Yo, listen up, I got a story to tell 
'Bout a doll that's fly, and she's doin' well
Barbie, Barbie, she's the queen of the scene
From Malibu to Kenya, she's always lookin' supreme
She's got the style, she's got the grace
She's got the swag, she's got the pace
She's got the cars, she's got the cash
She's livin' large, she's got the flash
She's got the perfect body, she's got the perfect face
She's got the perfect hair, she's got the perfect pace
She's got the perfect life, she's got the perfect vibe
She's got it all, she's got the perfect ride
She's got Ken by her side, he's her main man
He's got the skills, he's got the plan
They're livin' large, they're got the fame
They're the perfect couple, they're got the game
So listen up,"}}]

可以使用以下Python代码来测试API。 将 api_url 的值替换为您在上一步 4 中创建的 API Url

import requests

api_url = 'https://spip03jtgd.execute-api.us-east-1.amazonaws.com/default/call-bloom-llm'

json_body = {
 "inputs": [
  [
   {"role": "system", "content": "You are chat bot who writes songs"},
   {"role": "user", "content": "Write a rap about Barbie"}
  ]
 ],
 "parameters": {"max_new_tokens":256, "top_p":0.9, "temperature":0.6}
}

r = requests.post(api_url, json=json_body)

print(r.json())

6、可能的错误

在这种情况下你可能会收到一些错误:

  • 权限:如果你的角色没有使用 Sagemaker 调用端点策略的权限,那么你将无法调用端点。
  • 超时:根据你的提示和变量,可能会收到超时错误。 与权限不同,这是一个简单的修复。 单击“配置”、“常规”和“编辑超时”,然后将超时值设置为更多秒数

在这里插入图片描述


原文链接:Llama2云端部署及调用 — BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/64150.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HTML5注册页面

分析 注册界面实际上是一个表格&#xff08;对齐&#xff09;&#xff0c;一行有两个单元格。 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevic…

致远OA协同管理软件无需登录getshell

一个男子汉&#xff0c;老守在咱村那个土圪崂里&#xff0c;又有什么意思&#xff1f;人就得闯世事&#xff01;安安稳稳活一辈子&#xff0c;还不如痛痛快快甩打几下就死了&#xff01;即使受点磨难&#xff0c;只要能多经一些世事&#xff0c;死了也不后悔&#xff01; 漏洞…

NodeJS原型链污染ctfshow_nodejs

文章目录 NodeJS原型链污染&ctfshow_nodejs前言0x01.原型与原型链0x02.prototype和__proto__分别是什么&#xff1f;0x03.原型链继承不同对象的原型链* 0x04.原型链污染原理0x05.merge()导致原型链污染0x06.ejs模板引擎RCEejs模板引擎另一处rce 0x07.jade模板引擎RCE【ctfs…

使用RecyclerView构建灵活的列表界面

使用RecyclerView构建灵活的列表界面 1. 引言 在现代移动应用中&#xff0c;列表界面是最常见的用户界面之一&#xff0c;它能够展示大量的数据&#xff0c;让用户可以浏览和操作。无论是社交媒体的动态流、商品展示、新闻列表还是任务清单&#xff0c;列表界面都扮演着不可或…

Vue2 第二十节 vue-router (四)

1.全局前置路由和后置路由 2.独享路由守卫 3.组件内路由守卫 4.路由器的两种工作模式 路由 作用&#xff1a;对路由进行权限控制 分类&#xff1a;全局守卫&#xff0c;独享守卫&#xff0c;组件内守卫 一.全局前置路由和后置路由 ① 前置路由守卫&#xff1a;每次路由…

开箱报告,Simulink Toolbox库模块使用指南(二)——MATLAB Fuction模块

文章目录 前言 MATLAB Fuction模块 采样点设置 FFT 求解 分析和应用 总结 前言 见《开箱报告&#xff0c;Simulink Toolbox库模块使用指南&#xff08;一&#xff09;——powergui模块》 MATLAB Fuction模块 MATLAB Fuction模块是在Simulink建模仿真或生成代码时&#x…

Vue中监听路由参数变化的几种方式

目录 一. 路由监听方式&#xff1a; 通过 watch 进行监听 1. 监听路由从哪儿来到哪儿去 2. 监听路由变化获取新老路由信息 3. 监听路由变化触发方法 4. 监听路由的 path 变化 5. 监听路由的 path 变化, 使用handler函数 6. 监听路由的 path 变化&#xff0c;触发method…

无锚框原理 TOOD:Task-aligned One-stage Object Detection

无锚框原理 TOOD&#xff1a;Task-aligned One-stage Object Detection 一 摘要二 引言TOOD设计 三 具体设计Task-aligned Head任务对齐的预测器 TAP预测对齐 TAL 任务对齐学习Task-aligned Sample Assignment多任务损失 一 摘要 一阶段目标检测通常通过优化两个子任务来实现&…

CSS中所有选择器详解

文章目录 一、教学视频二、基础选择器1.标签选择器2.类选择器3.id选择器4.通配符选择器 三、复合选择器1.交集选择器2.并集选择器 四、属性选择器1.[属性]2.[属性属性值]3.[属性^属性值]4.[属性$属性值]5.[属性*属性值] 五、关系选择器1.父亲>儿子2.祖先 后代3.兄弟4.兄~弟 …

Mermaid系列之FlowChart流程图

一.欢迎来到我的酒馆 介绍mermaid下&#xff0c;Flowchat流程图语法。 目录 一.欢迎来到我的酒馆二.什么是mermiad工具三.在vs code中使用mermaid四.基本语法 二.什么是mermiad工具 2.1 mermaid可以让你使用代码来创建图表和可视化效果。mermaid是一款基于javascript语言的图表…

Vue2 第二十一节 Vue UI组件库

移动端常用UI组件 1. Vant https://youzan.github.io/vant 2. Cube UI https://didi.github.io/cube-ui 3. Mint UI http://mint-ui.github.io PC端常用UI组件 1. Element UI https://element.eleme.cn 2. IView UI https://www.iviewui.com 一. Element UI 的引入和使…

我国洪涝灾害分布图

声明&#xff1a;来源网络&#xff0c;仅供学习&#xff01;

Apache Paimon 学习笔记

本博客对应于 B 站尚硅谷教学视频 尚硅谷大数据Apache Paimon教程&#xff08;流式数据湖平台&#xff09;&#xff0c;为视频对应笔记的相关整理。 1 概述 1.1 简介 Flink 社区希望能够将 Flink 的 Streaming 实时计算能力和 Lakehouse 新架构优势进一步结合&#xff0c;推…

C++QT教程1——QT概述(下载与安装)

文章目录 1 Qt概述1.1 什么是Qt1.2 Qt的发展史1.3 Qt版本1.4 Qt的下载与安装下载地址&#xff1a;其实我是有点懵逼的&#xff0c;因为还有个qtcreator&#xff0c;我差点不知道下哪个。。。&#xff08;qt框架比qtcreator功能更多更强大&#xff09; 安装 1.5 Qt的优点1.6 QT成…

了解IL汇编异常处理语法

从网上拷过来一个IL汇编程序&#xff0c;编译时先报如下错&#xff0c; 看它是把空格识别为了下注红线的字符&#xff0c;这是字符编码的问题&#xff0c;用记事本替换功能替换了&#xff1b; 然后又报如下的错&#xff0c; 看不出来问题&#xff0c;拷一句正确的来&#xff0…

[考研机试] KY20 完数VS盈数 清华大学复试上机题 C++实现

描述 一个数如果恰好等于它的各因子(该数本身除外)子和&#xff0c;如&#xff1a;6321。则称其为“完数”&#xff1b;若因子之和大于该数&#xff0c;则称其为“盈数”。 求出2到60之间所有“完数”和“盈数”。 输入描述&#xff1a; 题目没有任何输入。 输出描述&#…

STM32 4G学习(二)

特性参数 ATK-IDM750C是正点原子开发的一款高性能4G Cat1 DTU产品&#xff0c;支持移动4G、联通4G和电信4G手机卡。 它以高速率、低延迟和无线数传作为核心功能&#xff0c;可快速解决应用场景下的无线数传方案。 它支持TCP/UDP/HTTP/MQTT/DNS/RNDIS/NTP协议&#xff0c;支持…

DevOps在项目管理中的魔法:简化与深化

什么是DevOps&#xff1f; 定义与核心思想 DevOps, 这个名词&#xff0c;在技术领域中饱受瞩目。但它到底是什么&#xff1f;首先&#xff0c;DevOps并不仅仅是一个技术或者工具&#xff0c;它首先是一种文化&#xff0c;一种思想。DevOps是Development&#xff08;开发&#…

Mac 安装不在 Apple 商店授权的应用程序

文章目录 一、场景介绍二、实操说明 一、场景介绍 在日常的工作生活中&#xff0c;发现一些好用的应用程序&#xff0c;但是出于某些原因&#xff0c;应用程序的开发者并没有将安装包上架到苹果商店。 那么这些优秀的应用程序下载安装以后就会出现如下弹框被拒之门外 二、实操…

【redis】能ping通虚拟机但是端口无法访问

问题 虚拟机上有redis&#xff0c;能ping通虚拟机的ip&#xff0c;但是idea连不上虚拟机里的redis&#xff0c;telnet已启动的redis6379端口失败 基本情况 虚拟机网络模式是NAT模式&#xff0c;linux防火墙firewalld已关闭&#xff0c;没有iptables&#xff0c;主机和虚拟机…