首页 > 其他分享 >猜字谜|构建生成式 AI 应用实践(一)

猜字谜|构建生成式 AI 应用实践(一)

时间:2024-02-23 21:00:22浏览次数:22  
标签:AI 模型 生成式 uri 部署 Amazon 猜字谜 SageMaker model

在 2023 亚马逊云科技 re:Invent 之后,细心的开发者们也许已经发现有一个很有趣的动手实验:开发一款可部署的基于大语言模型的字谜游戏:

image.png

该款游戏使用了文生图模型为玩家提供一个未知的提示词,玩家需要根据模型生成的图像来猜测该提示词,来完成游戏。该动手实验完整地展示了如何在亚马逊云科技上完整构建生成式 AI 应用程序。

亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库!

构建生成式 AI 应用程序实践”系列内容中,我将通过三篇博客来介绍这个有趣的动手实验,并由此展示完整构建基于大模型的生成式 AI 应用的代码实践,以帮助生成式 AI 开发者们来完整了解构建生成式 AI 应用开发的整个流程,这些工作包括:

  • 构建和部署前端程序(包括使用亚马逊云科技 CDK 部署 Streamlit 应用等)

  • 构建和部署后端程序(包括部署实现不同场景功能的三个大模型等)

  • 面向生产环境的持续集成和持续部署(CI/CD)

本文是这个系列的第一篇,将概要介绍如何创建 Amazon SageMaker 笔记本实例,获取完整的前后端程序代码,实验涉及的组件和实现代码文件等内容。

创建 Amazon SageMaker 笔记本实例

你即将开始使用 Stable Diffusion 基础模型结合生成式 AI 和 Amazon SageMaker JumpStart 创建一个猜谜游戏。需要确认你的亚马逊云科技账号已准备就绪

image.png

亚马逊云科技账号准备就绪后,首先需要创建一个名为“stable-diffusion”的 Amazon SageMaker 笔记本实例(此处作者创建了一个名为“stable-diffusion”的实例)。实例创建后,需要等待大约 10 分钟,直到其变为“InService”状态。如下图所示:

image.png

此处示例显示创建的笔记本实例类型为 ml.m5.xlarge,作者在 ml.t3.medium 笔记本实例也成功完成过这个实验。创建实例时,注意为实例配置合适的 IAM 角色,使其具有访问 S3 和 SageMaker 的权限。如下图所示:

image.png

在 Amazon SageMaker 中获取完整程序代码

在上一节中,我们已经创建了 Amazon SageMaker 实例,现在将使用 JupyterLab 终端提取为该实验准备的完整程序代码。点击“Open JupyterLab”进入 JupyterLab Launcher 面板,如下图所示。

image.png

点击“Terminal”进入 Terminal 界面。由于代码位于:s3://aws-jam-challenge-resources/genai-charades/generative-charades.zip

因此,我们输入如下命令来获取程序代码包,并解压包获得完整程序代码:

$ cd /home/ec2-user/SageMaker
$ aws s3 cp  s3://aws-jam-challenge-resources/genai-charades/generative-charades.zip .
$ unzip generative-charades.zip

如下图所示:

image.png

解压代码包后,在 JupyterLab 左侧会看到一个 generative-charades 的目录(如下截图所示),这个目录下就是我们这个实验的全部代码。从这篇开始的系列博客,我们将一起分析这套代码是如何实现一个生成式 AI 的完整应用的。

image.png

应用程序组件构成概述

该生成式 AI 驱动的猜谜游戏将由三个大模型,以及其它组件共同构成。

首先,我们需要一个文字生成图像的大模型来担当图像生成器的工作。在本例中,这个模型还应该能够部署成为一个独立的端点,这样任何想要玩游戏的人,不需要在他们的机器上安装 GPU 即可开展游戏。

其次,我们需要一个文本嵌入的大模型来做评分裁判的工作。在本例中,我们将使用这个文本嵌入模型,把用户提供的答案与实际正确答案进行比较,以反馈给用户最终结果;另外,这个模型也应该能够部署成为一个独立的端点,以响应来自大量游戏玩家的猜谜请求。

最后,我们还需要一个文本生成的大模型来做提示生成的工作。因为我们计划可以选择性地提供一个机制,向用户提供提示,但又不泄露精确的正确提示词本身。

综上所述,该生成式 AI 驱动的猜谜游戏各组件逻辑图,如下图所示:

image.png

除了三个大模型做主要功能担当之外,以上架构图还展示了我们为实现完整应用程序而需要的其它各组件,包括:

  • S3 做游戏所需的模型构件提供对象存储等

  • ECS 和 Fargate 封装了游戏所需的服务等

  • Cloudfront 为游戏提供内容缓存等

这些功能我们将通过下面两个 Notebook 和大家一起逐步完成部署。

应用程序部署代码概述

Notebook #1 – 部署三个基础大模型作为后端

第一个 notebook 是 deploy_charades_endpoints.ipynb,如下图所示:

image.png

这个 notebook 将逐步实现如何部署三个大模型作为后端支撑。

以部署文本生成图像的大模型为例,我们将使用 Stable Diffusion 1.5(或 2.1)基础版的大模型。以下代码将通过 SageMaker Jumpstart 将 SD 1.5(或 2.1)基础版模型部署为 Amazon SageMaker 端点。

由于 Amazon SageMaker 托管基于 Docker 容器,因此为了将我们的模型部署为端点,我们需要一个 Docker 容器以及用于调用模型进行推理的脚本。Amazon SageMaker 端点的架构如下所示:

image.png

幸运的是,Amazon SageMaker Jumpstart 提供了所有这些功能。当我们运行以下代码单元段时,它将打印出我们使用的 Docker 容器、源代码的位置以及我们将要部署的模型 URI:

from sagemaker import image_uris, model_uris, script_uris, hyperparameters
from sagemaker.model import Model
from sagemaker.predictor import Predictor
from sagemaker.utils import name_from_base

# deploy 
# model_id = "huggingface-txt2img-runwayml-stable-diffusion-v1-5" 
model_id = "model-txt2img-stabilityai-stable-diffusion-v2-1-base"

# sd_endpoint_name = name_from_base(f"jumpstart-example-infer-{model_id}")
sd_endpoint_name = f"jumpstart-{model_id}"

# Please use ml.g5.xlarge instance type if it is available in your region. ml.g5.xlarge has 24GB GPU compared to 16GB in ml.p3.2xlarge and supports generation of larger and better quality images.
inference_instance_type = "ml.g4dn.2xlarge"
model_version = '1.1.0'

# Retrieve the inference docker container uri. This is the base HuggingFace container image for the default model above.
deploy_image_uri = image_uris.retrieve(
    region=None,
    framework=None,  # automatically inferred from model_id
    image_scope="inference",
    model_id=model_id,
    model_version=model_version,
    instance_type=inference_instance_type,
)

# Retrieve the inference script uri. This includes all dependencies and scripts for model loading, inference handling etc.
deploy_source_uri = script_uris.retrieve(
    model_id=model_id, model_version=model_version, script_scope="inference"
)

# Retrieve the model uri. This includes the pre-trained nvidia-ssd model and parameters.
model_uri = model_uris.retrieve(
    model_id=model_id, model_version=model_version, model_scope="inference"
)

# To increase the maximum response size from the endpoint.
env = {
    "MMS_MAX_RESPONSE_SIZE": "20000000",
}

print("deploying image uri:", deploy_image_uri)
print("deploying source uri:", deploy_source_uri)
print("deploying model uri:", model_uri)

以上代码段的作者实际运行输出如下所示,供参考:

image.png

Notebook #2 – 部署前端和实现CI/CD

第二个 notebook 是 CDK-notebook.ipynb,如下图所示:

image.png

Amazon SageMaker 端点为三个基础大模型创建完成后,我们还需要使用 亚马逊云科技云开发工具包 (CDK) 来 部署 Streamlit 应用。

亚马逊云科技云开发工具包 (CDK) 是一款开源软件开发框架,可使用代码定义云基础设施并通过 CloudFormation 进行配置。它由两大主要部分组成:

1. CDK Construct 库:包含一系列预先编写、模块化且可重复使用的代码片段,称为构造 (construct)。开发者可以使用、修改和集成这些构造块,快速开发基础设施。该库旨在简化使用服务构建应用程序时,定义和集成各个服务所需的复杂性。

2. CDK 工具包:用于与 CDK 应用交互的命令行工具。您可以使用它来创建、管理和部署 CDK 项目。CDK 支持 TypeScript、JavaScript、Python、Java、C#/.Net 和 Go 等编程语言。开发者可以使用任何一种支持的语言来定义可重复使用的云组件 (construct),然后将它们组合成栈 (stack) 和应用 (app);最后将 CDK 应用部署到 CloudFormation,以配置或更新资源。

亚马逊云科技云开发工具包 (CDK) 的工作原理如下图所示:

image.png

在这个 notebook 中,我们将学习 CDK 的基本概念,并构建一个模板,用于部署一个基于我们刚刚生成的模型和 UI 的整体解决方案,从而打包我们的猜谜游戏。

在下一篇文章中,我们将详细介绍如何使用 Amazon SageMaker 来部署这个游戏需要的三个大模型:

  • 文本生成图像模型—Stable Diffusion 1.5(或 2.1)

  • 文本嵌入模型—MiniLM L6 v2

  • 文本生成模型—Falcon 7B Instruct

敬请期待。

文章来源:https://dev.amazoncloud.cn/column/article/65d88f59e3b3f210762c8eed?sc_medium=regulartraffic&sc_campaign=crossplatform&sc_channel=bokey

 

标签:AI,模型,生成式,uri,部署,Amazon,猜字谜,SageMaker,model
From: https://www.cnblogs.com/AmazonwebService/p/18030363

相关文章

  • 记录 re:Invent 大会,使用 PartyRock 编写我们第一个 AI 应用以及心得
    如果说2023年什么应用技术最火,那么说是OpenAI为代表的ChatGPT在AI方面的突破和发展,是完全没有任何的争议的。随后,各大云厂商以及应用集成商甚至垂直领域的服务提供商都有了对应的AI模型。我们开玩笑的说,这个好比多年前的百团大战一样,各种的AI相关的应用奔涌出现、百......
  • [转帖]IB和RoCE,谁更适合AI数据中心网络?
    https://zhuanlan.zhihu.com/p/668576216 超高带宽、超低延迟、超高可靠,这是大模型训练对于网络的要求。多年来,TCP/IP协议一直是互联网通信的支柱,但对于AI网络来说,TCP/IP在某些方面存在着致命的缺点。TCP/IP协议的时延较高,通常在数十微秒左右,同时还会对CPU造成严重的负......
  • 安全生产:AI视频智能分析网关V4如何应用在企业安全生产场景中?
    随着科技的不断进步,视频智能分析技术在安全生产领域中的应用越来越广泛。这种技术通过计算机视觉和人工智能算法,可以对监控视频进行自动分析和处理,以实现多种功能,如目标检测、行为识别、异常预警等。今天我们以TSINGSEE青犀AI视频智能分析网关V4为例,来介绍下视频智能分析技术AI视......
  • 部署微信AI机器人
    基于开源项目https://github.com/zhayujie/chatgpt-on-wechat部署微信AI机器人准备1、访问gpt3的APIkey2、可以访问openai.comAPI的网络3、gitclonehttps://github.com/muyiai/chatgpt-on-wechat.git4、安装docker软件5、下载镜像zhayujie/chatgpt-on-wechat:latest6......
  • AI老照片修复
    一、在线修复网站1、ARCARC是腾讯开发的一个网站,有"人像修复、人像抠图、动漫增强"三个主要功能,其中的人像修复和动漫增强可以让模糊图片变清晰。「人像修复」针对的是真人照片修复,「动漫增强」针对的是卡通动漫插图清晰度提升。模糊照片修复效果很好2、jpgHD一款免费......
  • 让 K8s 更简单!8款你不得不知的 AI 工具-Part 2
    在part1中,我们探讨了目前比较流行的四种OpenAI开源工具。在今天的part2中我们将探究另外三种不同的OpenAI开源工具并介绍一些与Appilot相关的内容。 Kubectl-GPTKubectl-GPT是一个kubectl插件,可使用GPT模型从自然语言输入生成kubectl命令。该插件引入了ku......
  • VMware Cloud Director Availability 4.7 | 灾难恢复和迁移 | DRaaS
    VMwareCloudDirectorAvailability4.7|灾难恢复和迁移|DRaaSOnboarding&DisasterRecoveryServices请访问原文链接:https://sysin.org/blog/vmware-cloud-director-availability-4/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgVMwareCloudDirectorAva......
  • 遇到Failed to get response from https://registry.npm.taobao.org/vue-cli-version-
    1.问题在启动vueui时,总是遇到报错,如下图:2.解决参考:vuecli创建项目报错:Failedtogetresponsefrom/vue-cli-version-marker找到你的.vuerc文件:C:\Users\trmbh\.vuerc,这里根据自己的用户名更改然后改为{"useTaobaoRegistry":false,"packageManager":"npm"}第......
  • SciTech-Mathmatics-FourierSeries: Time Domain and Frequency Domain
    TimeDomainandFrequencyDomainFrequencydomain:measuredbySpectrumAnalysiszerTellsushowproperties(amplitudes)changeoverfrequencies:TimeDomain:measuredbyOscilloscopeTellsushowproperties(suchasAmplitude(Power),Phase,andsoon)......
  • ssts-hospital-web-master项目实战记录九:父组件App.vue给子组件main-page*.vue传值ter
    记录时间:2024-02-23一、App.vue详见:App.vue组件实现 【使用“文心一言”提取组件传值逻辑说明和代码】在Vue3中,组件传值通常涉及到props、emits、slots和组件的引用。在提供的代码中,主要关注点是动态组件的渲染和通过props传递数据。下面是对组件传值逻辑的说明和代码......