大语言模型(LLMs)在 Amazon SageMaker 上的动手实践(一)

本期文章,我们将通过三个动手实验从浅到深地解读和演示大语言模型(LLMs),如何结合 Amazon SageMaker 的模型部署、模型编译优化、模型分布式训练等。

实验一:使用 Amazon SageMaker 构建基于开源 GPT-J 模型的对话机器人应用

开发者可以使用 Amazon SageMaker 构建一个交互式的人机对话应用 DEMO,尝试基于开源 GPT-J 模型的 Text Generation 技术。Amazon SageMaker 是亚马逊云科技公有云中的一项托管服务。作为一个云机器学习平台,可以让开发者在云中创建、训练和部署 ML 模型以此来对大语言模型有更深刻的认知。

这一动手实验仅仅使用 20 行左右的代码,即可将开源的 GPT-J 模型部署到 Amazon SageMaker 的终端节点(Endpoint),实现基于大语言模型的简单交互式人机对话。完成该实验的代码编写和模型部署预计需要 20 分钟。

什么是 GPT-J:

GPT-J 是一种生成式预训练(GPT)大语言模型,就其架构而言,它可与 GPT-3 等流行的私有大语言模型相媲美。它由大约 60 亿个参数和 28 个层组成,包括一个前馈模块和一个自注意力模块。为 GPT-J 提供推理所需的内存要低得多——在 FP16 中,模型权重占用不到 13 GB,这意味着可以在单个 16GB GPU 上轻松进行推理。

1. 创建 SageMaker Notebook 实例

在亚马逊云科技控制台(console.aws.amazon.com)上,输入 “Amazon SageMaker” 并点击进入,然后在左侧导航菜单中找到 “Notebook instances”,点击右上角的 “Create notebook instance” 开始创建。如下图所示:

在创建 Notebook instances 的过程中,需要指定在 Amazon SageMaker 中运行代码的角色(role)。由于需要访问 Amazon S3 等资源(存放模型训练需要的数据、模型构件等),因此必须设置合适的角色(role)使其具有访问相关 Amazon S3 的权限。如下图所示:

提交后等待几分钟,可以看到状态变成 “InService”,即表示该实例已经成功创建。如下图所示:

如果之前已经创建过(并且没有 delete),可以直接点击 ”Start” 重新启动实例。如下图所示:

当状态从 “Pending” 变成 “InService”, 即表示该实例已经成功启动。如下图所示:

2. 进入 Open Jupyter/JupyterLab 环境

如下图,点击 Open Jupyter 或者 Open JupyterLab 环境。我个人更喜欢 Open JupyterLab,因此本文中会主要以 Open JupyterLab 来做讲解和演示:

点击 “Terminal”,以打开一个终端:

在打开的终端中输入以下命令:

$ pwd

$ cd SageMaker

$ git clone https://github.com/hanyun2019/aigc.git

输出如下:

这时你会看到左侧菜单栏增加了 “aigc” 目录:

该目录下的文件如下图所示:

双击 “deploy-gptj.ipynb” 打开这个文件,即可开始逐步完成实验一:

3. 使用 Amazon SageMaker 构建基于开源 GPT-J 模型的对话机器人应用

以下逐行解释实验一的主要代码。

首先,需要安装 SageMaker 的相关 SDK:

!pip install -U sagemaker

然后 import 实验需要的 HuggingFace API 和 SageMaker 的 API 包:

from sagemaker.huggingface import HuggingFaceModel

import sagemaker

定义创建终端节点的 IAM 角色权限:

# IAM role with permissions to create endpoint

role = sagemaker.get_execution_role()

定义 GPT-J 模型构件所在的 S3 桶:

# public S3 URI to gpt-j artifact

model_uri="s3://huggingface-sagemaker-models/transformers/4.12.3/pytorch/1.9.1/gpt-j/model.tar.gz"

调用 HuggingFace API 来创建模型相关参数,包括:模型构件文件名、transformers 的版本号、PyTorch 的版本号、Python 的版本号、角色名等:

# create Hugging Face Model Class

huggingface_model = HuggingFaceModel(

model_data=model_uri,

transformers_version='4.12.3',

pytorch_version='1.9.1',

py_version='py38',

role=role,

)

以上设置完毕后,即可部署模型到 Amazon SageMaker 的终端节点了。可以在这里设置一些终端节点的参数,比如节点实例数量、节点类型等:

# deploy model to SageMaker Inference

predictor = huggingface_model.deploy(

initial_instance_count=1, # number of instances

instance_type='ml.g4dn.xlarge' #'ml.p3.2xlarge' # ec2 instance type

)

运行以上 “huggingface_model.deploy” 代码后,会在 Amazon SageMaker 控制台的 “EndPoints” 看到有实例正在创建(Creating)中,如下图所示:

当看到实例创建完成(InService),即可开始进行推理,即开始和聊天机器人对话了!

如下图所示,我们询问的是中国香港地区的最高建筑、最贵物业等信息。你可以自己定义问题,从中获得和大模型(GPT-J)聊天机器人对话的乐趣!

特别提醒:完成该实验后,记得删除终端节点,以避免不必要的终端节点收费。如下图所示:

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3的项目创建到启动

Vue3的项目创建 检查node版本创建 npm init vuelatest 安装依赖 项目启动 启动成功

初识《树》

目录 前言: 树的概念及结构: 1.概念 2.结构 3.树的相关概念 4.树的表示 5.树的实际应用 二叉树的概念及结构: 1.概念 2.特殊二叉树 ​编辑 3.二叉树的性质 对于满二叉树 对于完全二叉树: 4.二叉树的存储结构 堆 …

从零带你底层实现unordered_map (2)

💯 博客内容:从零带你实现unordered_map 😀 作  者:陈大大陈 🚀 个人简介:一个正在努力学技术的准C后端工程师,专注基础和实战分享 ,欢迎私信! 💖 欢迎大家…

webgoat-Cross Site Scripting XSS 跨站脚本攻击

01 概念 本节课讲述了什么是XSS,并使用XSS执行那些非开发者本意的任务。 目标 了解什么是XSS,XSS如何工作? 学习反射型XSS及注入,基于DOM的XSS注入 02 What is XSS? Cross-Site Scripting也叫XSS是一种漏洞,允许…

Pytorch-gpu环境篇

最最最头疼的就是配环境了 包之间的版本匹配问题 INSTALLING PREVIOUS VERSIONS OF PYTORCH 要考虑到pytorch和torchvision之间的匹配关系 显卡版本匹配问题

一篇博客带你了解TCP网络传输协议

Transmission Control Protocol(TCP,传输控制协议)是互联网协议套件中的一种主要协议之一,负责在网络上可靠地传输数据。下面是TCP协议的详细讲解: 1. 基本概念: 面向连接: TCP是一种面向连接的…

四、防火墙-NAT Server

学习防火墙之前,对路由交换应要有一定的认识 NAT Server1.1.基本原理1.2.多出口场景下的NAT Server1.3.源进源出 —————————————————————————————————————————————————— NAT Server 一般对用户提供一些可访问的…

[栈溢出+参数跟踪] [ZJCTF 2019]Login

题目来源 buuctf——[ZJCTF 2019]Login 本题主要考察参数溯源的能力。 参考链接 https://zhuanlan.zhihu.com/p/570607303 题目信息 64位,ubuntu16,开了金丝雀 C风格的代码,并且将admin登录信息写入代码中。 溢出点不在这里,但是…

将本地项目上传到gitee

本文详细介绍如何将本地项目上传到gitee 1.登录gitee创建一个与本地项目名相同的仓库 2.进入本地项目所在路径,打开Git Bash 3.执行初始化命令 git init4.添加远程仓库 4.1 点击复制你的HTTPS仓库路径 4.2 执行添加远程仓库命令 git remote add origin 你的…

金山办公前端二面

1. react 和 vue的区别 还有jquery? (1) jquery 和 vue、react 的区别: vue 和 react : 数据和视图分离 以数据驱动视图,只关心数据变化 dom 操作被封装(数据驱动) jquery:依靠 do…

Sass基础知识详细讲解【附带表图】

文章目录 前言使用 SassRack / Rails / Merb插件缓存选项语法选择编码 Sass CSS扩展Sass 注释输出 Sass 脚本Sass -规则和指令Sass 控制指令和表达式 Sass 混入指令Sass 功能指令命名约定Sass 输出样式:nested:expanded:compact:compressedSass 扩展缓存存储自定义导入 后言 前…

小程序静默授权获取unionid

文章目录 导文文章重点 导文 小程序静默授权获取unionid 文章重点 用wx.login(Object object)放到app.js里面 wx.login({success (res) {console.log(123);if (res.code) {//发起网络请求// wx.request({// url: https://example.com/onLogin,// data: {// code: res.…