赞
踩
在百模大战中,AI行业的发展正在经历前所未有的变革。这场竞争不仅推动了AI技术的快速发展,也揭示了AI行业的新趋势。这些趋势不仅影响着我们如何看待和使用AI,也预示着AI未来的发展方向。在这个快速发展的领域,了解这些新趋势对于理解AI行业的未来走向至关重要。
亚马逊云科技的Amazon Bedrock 是一项完全托管的服务,通过单个 API 提供来自 AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI 和 Amazon 等领先人工智能公司的高性能基础模型(FM),以及通过安全性、隐私性和负责任的人工智能构建生成式人工智能应用程序所需的一系列广泛功能。
使用 Amazon Bedrock,可以轻松试验和评估适合您的使用案例的热门 FM,通过微调和检索增强生成(RAG)等技术利用数据对其进行私人定制,并构建使用企业系统和数据来源执行任务的代理。由于 Amazon Bedrock 是无服务器的,因此无需管理任何基础设施,并且可以使用已经熟悉的 AWS 服务将生成式人工智能功能安全地集成和部署到我们的应用程序中。
今天炒香菇的书呆子通过亚马逊云科技提供的免费在线实验环境带大家体验和学习掌握如何基于Amazon Bedrock 快速构建生成式AI应用。
在构建AIGC方面,无论是小白还是大佬,Amazon Bedrock都是一个不错的选择
进入实验网址:https://dev.amazoncloud.cn/experience/cloudlab?id=65fd7f888f852201f9704488
亚马逊云科技官网为大家准备了24h的实验环境,可以免费使用
若在实验完成后想要继续体验,可以购买相关服务
进入网址后,点击开始实验
可以选择用微信或者账号密码登录
登录成功后可以看到临时实验账号的控制台
在控制台左侧可以浏览操作界面
Stable Diffusion XL是在Stability AI 在2023年4 月份推出的新模型,训练参数是之前 Stable Diffusion v2.1 的 2.5 倍,其生成的图像在美学程度和质量上有了很大的改进。
据官方介绍,SDXL 1.0 相比之前的模型,优势主要体现在以下几个方面:
下面我们将通过Amazon Bedrock 快速上手Stability AI SDXL 1.0构建艺术图像
在左侧控制台选择操作
–>图像
,右侧点击选择模型
然后依次选择Stability AI
--> SDXL 1.0
–>按需
,然后选择应用
在右侧,我们可以下方设定关键词,在右侧调整模式,生成图像的基本信息等来控制如何生成图像
例如,我的测试demo如下
a student sit on his book desk and reading a book
我们还可以进一步对细节进行修改
点击图像,进行编辑
选中图中的student继续使用提示词
可以看到生成的图片中student的头发为绿色
打开亚马逊云科技控制台,搜索Cloud9,点击进入
选择创建环境
设置环境详细信息
点击创建
待主机创建完成后,进入IDE终端
复制以下内容到终端,执行命令,以下载和解压缩代码
cd ~/environment/
curl 'https://dev-media.amazoncloud.cn/doc/workshop.zip' --output workshop.zip
unzip workshop.zip
解压完成:
观察左侧主机目录
继续使用 终端,安装实验所需的环境依赖项
pip3 install -r ~/environment/workshop/setup/requirements.txt -U
打开 Amazon Bedrock 示例,输入关键字 sdxl,选择 SDXL 1.0,查看 API 请求代码
API为
{
"modelId": "stability.stable-diffusion-xl-v1",
"contentType": "application/json",
"accept": "application/json",
"body": "{\"text_prompts\":[{\"text\":\"Sri lanka tea plantation.\",\"weight\":1}],\"cfg_scale\":10,\"seed\":0,\"steps\":50,\"width\":1024,\"height\":1024}"
}
使用 Amazon Cloud9 IDE,选择 workshop/labs/api/bedrock_api.py 编写代码
添加 import 语句,这些语句允许我们使用 Amazon Web Services boto3 库来调用 Amazon Bedrock,使用 base64 进行编码和解码操作,使用 Image 模块处理图像,以及使用 io、os 模块进行文件输入/输出
import json
import boto3
import base64
import os
from PIL import Image
import io
初始化 Amazon Bedrock 客户端库
session = boto3.Session()
bedrock = session.client(service_name='bedrock-runtime') #creates a Bedrock client
在这里,我们将确定要使用的模型、提示和指定模型的推理参数。
bedrock_model_id = "stability.stable-diffusion-xl-v1" # set the foundation model
prompt = "a beautiful mountain landscape" # the prompt to send to the model
seed = 10
body = json.dumps({
"text_prompts": [{"text": prompt}],
"seed": seed,
"cfg_scale": 10,
"steps": 30,
}) # build the request payload
调用 Bedrock API,我们使用 Bedrock 的 invoke_model 函数进行调用。
# send the payload to Bedrock
response = bedrock.invoke_model(
body=body, modelId=bedrock_model_id, accept='application/json', contentType='application/json')
从响应中获取图像数据,并将其保存为文件
# read the response
response_body = json.loads(response.get('body').read())
base64_image_data = response_body.get("artifacts")[0]["base64"]
print(f"{base64_image_data[0:80]}...")
# Convert base64 image data to an image and save it to a file
image_data = base64.b64decode(base64_image_data)
os.makedirs("data", exist_ok=True)
image = Image.open(io.BytesIO(image_data))
image.save('data/sd_generated_image.jpg')
保存文件,并在命令行处执行代码:
cd ~/environment/workshop/labs/api
python3 bedrock_api.py
同时,我们还可以通过进行文生图,图生图,图像修复等功能
欢迎在线体验实验:https://dev.amazoncloud.cn/experience/cloudlab?id=65fd7f888f852201f9704488
Meta Llama 3是Meta公司于2024年4月18日发布的新一代开源大语言模型(LLM)。这一系列模型旨在推动人工智能领域的边界,提供卓越的性能和广泛的应用潜力。Meta Llama 3主要包括两个版本的模型:一个是拥有80亿参数的模型,另一个是更为强大的700亿参数模型。
关键特性与成就:
在左侧控制台选择操作
–>聊天
,右侧点击选择模型
选择 Meta Llama 3 8B Instruct,点击应用
下面我写一个调用示例
写一个冒泡排序算法,并给出详细注释
查看API请求参数
aws bedrock-runtime invoke-model \
--model-id meta.llama2-70b-chat-v1 \
--body "{\"prompt\":\"[INST]You are a Data scientist trying to explain to a 5 year old[/INST]\\nCan you explain what is a transformer in a machine learning context ?\\n \\n\\nSure, I'd be happy to explain! So, you know how we can teach machines to learn things, like how to recognize pictures or understand what people say?\\n\\nYes, I do!\\n\\nGreat! Well, there are different ways we can teach machines to learn, and one of the ways is called \\\"transformers.\\\"\\n\\nImagine you have a big box full of toys, and you want to give all the toys to your friend who loves toys. But, there are so many toys that it would take forever to give them all to your friend one by one.\\n\\nThat's kind of like how machines learn from data. They can look at lots and lots of data, like pictures or words, and learn things from it. But, just like it would take forever to give all the toys to your friend one by one, it would take forever for the machine to look at all the data one piece at a time.\\n\\nThat's where transformers come in! A transformer is like a special machine that can look at all the toys in the box at the same time. It can take all the toys, and give them to your friend all at once!\\n\\nIn the same way, a transformer in machine learning can look at lots and lots of data all at once, and learn things from it much faster than if it had to look at each piece of data one by one.\\n\\nDoes that make sense?\\n\\nI think so! So, it's like a machine that helps other machines learn faster?\\n\\nExactly! It's like a special tool that helps machines learn faster and more efficiently. And, just like how your friend would be really happy to get all the toys at once, machines are really happy to have transformers help them learn faster!\",\"max_gen_len\":512,\"temperature\":0.5,\"top_p\":0.9}" \
--cli-binary-format raw-in-base64-out \
--region us-west-2 \
invoke-model-output.txt
打开亚马逊云科技控制台,搜索Cloud9,点击进入
选择创建环境
设置环境详细信息
点击创建
待主机创建完成后,进入IDE终端
以下为请求参数内容:
以下为返回参数内容:
{
"generation": "\n\n<response>",
"prompt_token_count": int,
"generation_token_count": int,
"stop_reason" : string
}
打开 workshop/labs/api 文件夹,打开文件 bedrock_api.py
import json
import boto3
session = boto3.Session()
bedrock = session.client(service_name='bedrock-runtime') #初始化Bedrock客户端库
bedrock_model_id = "meta.llama3-8b-instruct-v1:0" #设置模型 user_message = "用中文简述一下OSI七层网络模型" #提示词 prompt = f""" <|begin_of_text|> <|start_header_id|>user<|end_header_id|> {user_message} <|eot_id|> <|start_header_id|>assistant<|end_header_id|> """ body = json.dumps({ "prompt": prompt, "max_gen_len": 2048, "temperature":0.5, "top_p":0.9 })
response = bedrock.invoke_model(body=body, modelId=bedrock_model_id, accept='application/json', contentType='application/json') #发送调用请求
response_body = json.loads(response.get('body').read())
response_text=response_body['generation'] #从 JSON 中返回相应数据
print(response_text)
cd ~/environment/workshop/labs/api
python3 bedrock_api.py
应用程序由两个文件组成:一个用于 Streamlit 前端,另一个用于调用 Bedrock 的支持库
首先,创建支持库,将 Streamlit 前端连接到 Bedrock 后端
添加导入语句,允许使用 LangChain 调用 Bedrock
from langchain_aws import BedrockLLM
复制
def get_text_response(input_content): #文生文函数 input_content = f""" <|begin_of_text|> <|start_header_id|>user<|end_header_id|> {input_content} <|eot_id|> <|start_header_id|>assistant<|end_header_id|> """ llm = BedrockLLM( #创建Bedrock llm 客户端 model_id="meta.llama3-8b-instruct-v1:0", #设置模型 model_kwargs={ "max_gen_len": 1024, "temperature":0.2, "top_p":0.5 } ) return llm.invoke(input_content) #返回数据
import streamlit as st #streamlit 命令使用别名 "st"
import text_lib as glib
st.set_page_config(page_title="Text to Text") #页面 title
st.title("Text to Text") #page title
input_text = st.text_area("Input text", label_visibility="collapsed") #输入文本内容
go_button = st.button("Go", type="primary") #请求按钮
if go_button: #运行按钮
with st.spinner("Working..."): #当带有块的代码运行时显示一个微调器
response_content = glib.get_text_response(input_content=input_text) #调用方法
st.write(response_content) #显示响应内容
cd ~/environment/workshop/labs/text
streamlit run text_app.py --server.port 8080
执行结果如下
预览方法:
打开 Cloud9 菜单栏->Preview->Preview Running Application
如果大家想要深度体验基于Amazon Bedrock 构建属于自己的AI应用程序
可以继续体验:https://dev.amazoncloud.cn/experience/cloudlab?id=65fd7f888f852201f9704488
亚马逊云科技给广大开发者提供了大量主机资源和丰富的入门教程,开箱即用,可以快速上手~
也欢迎大家一起探索 Amazon Bedrock 更多的功能,为工作中赋能增效降本!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。