前言 - 淺談 AIGC
AIGC - 引領(lǐng)人工智能走向春天
隨著人工智能技術(shù)的發(fā)展與完善,AI Generated Content (AIGC,人工智能自動生成內(nèi)容) 在內(nèi)容的創(chuàng)作上為人們的工作和生活帶來前所未有的幫助,具體表現(xiàn)在能夠幫助人類提高內(nèi)容生產(chǎn)的效率,豐富內(nèi)容生產(chǎn)的多樣性、提供更加動態(tài)且可交互的內(nèi)容。AIGC 相關(guān)技術(shù)可以在創(chuàng)意、表現(xiàn)力、迭代、傳播、個(gè)性化等方面,充分發(fā)揮技術(shù)優(yōu)勢,打造新的數(shù)字內(nèi)容生成與交互形態(tài)。在這兩年AIGC在AI作畫、AI 作曲、AI 作詩、AI寫作、AI視頻生成、 AI語音合成等領(lǐng)域持續(xù)大放異彩;尤其是近段時(shí)間火遍全網(wǎng)的AI繪畫,作為用戶的我們只要簡單輸入幾個(gè)關(guān)鍵詞幾秒鐘之內(nèi)一幅畫作就能誕生。
春天里盛開的 AI 繪畫
最近以AIGC帶來巨大生產(chǎn)力提升的時(shí)尚寵兒不斷進(jìn)化升級,爭相亮相。我們迎來ChatGPT 系列技術(shù)帶給我們一波又一波的AI盛宴,而在計(jì)算機(jī)視覺領(lǐng)域,AI 繪畫近兩年正在逐漸走向圖像生成舞臺的中央。
文本生成圖像(AI 繪畫)是根據(jù)文本生成圖像的的新型生產(chǎn)方式,相比于人類創(chuàng)作者,文本生成圖像展現(xiàn)出了創(chuàng)作成本低、速度快且易于批量化生產(chǎn)的優(yōu)勢。
AI 繪畫之Stable Diffusion 2.0 登場
近一年來,AI繪畫領(lǐng)域迅猛發(fā)展,國內(nèi)外科技巨頭和初創(chuàng)企業(yè)爭相涌入,出現(xiàn)了不少文本生成圖像的技術(shù)產(chǎn)品。這些產(chǎn)品背后主要使用基于擴(kuò)散生成算法的 dall-e-2 和 stable diffusion 等模型。
2022年 Stable Diffusion 2.0 版本的發(fā)布,再次點(diǎn)燃了無數(shù)創(chuàng)作者使用AI文本圖像生成技術(shù)來生成高質(zhì)量創(chuàng)意圖像的熱情 ,如下圖所示,Stable Diffusion相關(guān)代碼倉庫,gitHub star 數(shù)量正在飛速增長:
與 Stable Diffusion 上一個(gè)版本相比,Stable Diffusion 2.0 取得了更加優(yōu)異的圖像生成效果,具體表現(xiàn)如下:
- 通過在模型體系結(jié)構(gòu)中引入交叉注意力層,將擴(kuò)散模型轉(zhuǎn)化為強(qiáng)大而靈活的生成器,用于文本或邊界框等一般條件輸入,并以卷積方式實(shí)現(xiàn)高分辨率圖像生成;
- 基于 latent diffusion models(LDM)在圖像修復(fù)和類條件圖像合成方面獲得了目前最優(yōu)的分?jǐn)?shù);
- 在多項(xiàng)任務(wù)上都取得了非常有競爭力的表現(xiàn),包括無條件圖像生成、文本到圖像合成和超分辨率;
- 同時(shí)與 pixel-based 擴(kuò)散模型方法相比顯著降低了計(jì)算要求,使得它的推理速度大大提升。
人人都有機(jī)會成為前沿的技術(shù)探索者
Stable Diffusion 2.0 和 chatGPT 等系列模型在計(jì)算機(jī)視覺和自然語言處理兩大AI應(yīng)用領(lǐng)域的優(yōu)異表現(xiàn), 引起學(xué)術(shù)界和工業(yè)界的極大轟動,人工智能事業(yè)發(fā)展似乎迎來了又一個(gè)春天。
眾所周知,隨著 AI 任務(wù)復(fù)雜性和應(yīng)用范圍增加,高精度大規(guī)模不斷涌現(xiàn),AI模型的訓(xùn)練和推理對算力的要求越來越高,對于中小企業(yè)和個(gè)人開發(fā)者而言,如果想訓(xùn)練或者部署稍微大的AI模型就不得不面對購買大量算力資源高投入的風(fēng)險(xiǎn),而具備高算力資源的企業(yè)則能夠有機(jī)會把握住各種神奇AIGC技術(shù)全面開花落地的歷史機(jī)遇。
我們普通的創(chuàng)業(yè)者和開發(fā)者,有沒有機(jī)會去訓(xùn)練和部署我們所看好領(lǐng)域的AIGC模型呢,答案是肯定的,在當(dāng)下這個(gè)云服務(wù)時(shí)代,人人都有機(jī)會成為前沿的技術(shù)探索者。
最近受邀參加了亞馬遜云科技 『云上探索實(shí)驗(yàn)室』實(shí)踐云上技術(shù)的系列活動,通過Amazon SageMaker 平臺快速完成 AIGC模型推理服務(wù)在線web部署,帶給我很多啟發(fā)和驚喜,原來在云端進(jìn)行AI模型推理部署可以如此簡潔,優(yōu)雅、流暢。在參加這次活動實(shí)踐的過程中,我也學(xué)到了很多有益的知識和技能, 接下來的博文就會以我的一次AIGC模型(Stable Diffusion 2.0 )web服務(wù)部署之旅帶大家一起體驗(yàn)如何在云端去落地AI模型服務(wù):
-
傳送門:Stable Diffusion 2.0 GitHub 倉庫
-
傳送門:亞馬遜云科技之云上探索實(shí)驗(yàn)室活動:從實(shí)踐中探索機(jī)器學(xué)習(xí)邊界
基于Amazon SageMaker進(jìn)行Stable Diffusion 模型部署
認(rèn)識 Amazon SageMaker
Amazon SageMaker
是一項(xiàng)完全托管的機(jī)器學(xué)習(xí)服務(wù):借助SageMaker的多種功能,數(shù)據(jù)科學(xué)家和開發(fā)人員可以快速輕松地構(gòu)建和訓(xùn)練機(jī)器學(xué)習(xí)模型,然后直接部署至生產(chǎn)環(huán)境就緒的托管環(huán)境。SageMaker涵蓋了ML 的整個(gè)工作流,可以標(biāo)記和準(zhǔn)備數(shù)據(jù)、選擇算法、訓(xùn)練模型、調(diào)整和優(yōu)化模型以便部署、預(yù)測和執(zhí)行操作。
經(jīng)過過去一周多的學(xué)習(xí)和實(shí)踐體驗(yàn),我發(fā)現(xiàn)這個(gè)平臺簡直就是為我們這些創(chuàng)業(yè)者和個(gè)人開發(fā)者量身打造的AI服務(wù)落地利器。許多AI工程項(xiàng)目,我們只需去構(gòu)造好自己的訓(xùn)練集和測試集,其余的模型訓(xùn)練、推理、部署,Amazon SageMaker 都能夠幫我們輕松完成。
本次博文所分享的 Stable Diffusion 2.0,通過參考官方提供的技術(shù)文檔,只用了 20分鐘左右的時(shí)間,我就在Amazon SageMaker 上成功搭建了一套流暢的AI繪畫在線服務(wù),接下來,讓我們一起揭秘。
借助 Amazon SageMaker 進(jìn)行環(huán)境搭建和模型推理
1. 創(chuàng)建 jupyter notebook 運(yùn)行環(huán)境
- 點(diǎn)擊鏈接登錄至亞馬遜云科技管理控制臺
在搜索框中搜索 SageMaker ,如下圖所示
這里我們創(chuàng)建一個(gè)筆記本編程實(shí)例
我這里選擇的配置如下:
選擇角色,其他的默認(rèn)即可
大概5分鐘左右,實(shí)例就創(chuàng)建成功啦
- 點(diǎn)擊鏈接,下載代碼
上傳剛剛下載的代碼
直接打開這個(gè)代碼
選擇合適的conda環(huán)境
2. 一鍵運(yùn)行所有代碼
這里我們直接一鍵運(yùn)行運(yùn)行所有代碼即可,代碼執(zhí)行過程中會依次完成 Stable Diffusion 模型相關(guān)類和函數(shù)的代碼定義、推理測試,并打包代碼和模型,然后部署模型至Sagemaker 推理終端節(jié)點(diǎn) (PS:這里的所有代碼運(yùn)行完畢大概需要5到10分鐘左右)
關(guān)鍵代碼分析如下
1. 環(huán)境準(zhǔn)備,代碼模型下載
檢查當(dāng)前 pyTorch 版本
!nvcc --version
!pip list | grep torch
安裝 Stable Diffusion 代碼運(yùn)行額外需要的依賴庫,這網(wǎng)速飛快
!sudo yum -y install pigz
!pip install -U pip
!pip install -U transformers==4.26.1 diffusers==0.13.1 ftfy accelerate
!pip install -U torch==1.13.1+cu117 -f https://download.pytorch.org/whl/torch_stable.html
!pip install -U sagemaker
!pip list | grep torch
下載代碼和模型文件,這里直接下載Hugging Face提供的代碼和模型即可
2. 在Notebook中配置并使用模型
直接調(diào)用 函數(shù)進(jìn)行模型加載
import torch
import datetime
from diffusers import StableDiffusionPipeline
# Load stable diffusion
pipe = StableDiffusionPipeline.from_pretrained(SD_MODEL, torch_dtype=torch.float16)
在 Cuda 上進(jìn)行模型的推理,這里 Stable Diffusion V2 能夠支持生成的最大圖像尺寸為 768 * 768
# move Model to the GPU
torch.cuda.empty_cache()
pipe = pipe.to("cuda")
# V1 Max-H:512,Max-W:512
# V2 Max-H:768,Max-W:768
print(datetime.datetime.now())
prompts =[
"Eiffel tower landing on the Mars",
"a photograph of an astronaut riding a horse,van Gogh style",
]
generated_images = pipe(
prompt=prompts,
height=512,
width=512,
num_images_per_prompt=1
).images # image here is in [PIL format](https://pillow.readthedocs.io/en/stable/)
print(f"Prompts: {prompts}\n")
print(datetime.datetime.now())
for image in generated_images:
display(image)
友情提示 :如果報(bào)錯,遇到推理時(shí) GPU 內(nèi)存不夠,則可以嘗試以下三種方式進(jìn)行解決
- 試一試生成分辨率小一點(diǎn)的圖片
- 減少生成圖片的數(shù)量
- 升級機(jī)型,選擇更強(qiáng)的GPU服務(wù)器
3. 部署模型至Sagemaker 推理終端節(jié)點(diǎn)
我們這里直接使用 AWS 的 SageMaker Python 開發(fā)工具包部署模型剛剛已經(jīng)驗(yàn)證能夠運(yùn)行成功的模型和打包好的代碼。
- 編寫初始化的Sagemaker代碼用于部署推理終端節(jié)點(diǎn)
import sagemaker
import boto3
'''
# 創(chuàng)建 Session
'''
sess = sagemaker.Session()
# sagemaker session bucket -> used for uploading data, models and logs
# sagemaker will automatically create this bucket if it not exists
sagemaker_session_bucket=None
if sagemaker_session_bucket is None and sess is not None:
# set to default bucket if a bucket name is not given
sagemaker_session_bucket = sess.default_bucket()
try:
role = sagemaker.get_execution_role()
except ValueError:
iam = boto3.client('iam')
role = iam.get_role(RoleName='sagemaker_execution_role')['Role']['Arn']
sess = sagemaker.Session(default_bucket=sagemaker_session_bucket)
print(f"sagemaker role arn: {role}")
print(f"sagemaker bucket: {sess.default_bucket()}")
print(f"sagemaker session region: {sess.boto_region_name}")
- 創(chuàng)建 inference.py 腳本,進(jìn)行模型的加載和推理
%%writefile ./$SD_MODEL/code/inference.py
import base64
import torch
from io import BytesIO
from diffusers import StableDiffusionPipeline
'''
# 加載模型到CUDA
'''
def model_fn(model_dir):
# Load stable diffusion and move it to the GPU
pipe = StableDiffusionPipeline.from_pretrained(model_dir, torch_dtype=torch.float16)
pipe = pipe.to("cuda")
return pipe
'''
# 推理方法
'''
def predict_fn(data, pipe):
# 解析參數(shù) get prompt & parameters
prompt = data.pop("prompt", "")
# set valid HP for stable diffusion
height = data.pop("height", 512)
width = data.pop("width", 512)
num_inference_steps = data.pop("num_inference_steps", 50)
guidance_scale = data.pop("guidance_scale", 7.5)
num_images_per_prompt = data.pop("num_images_per_prompt", 1)
# 傳入?yún)?shù),調(diào)用推理 run generation with parameters
generated_images = pipe(
prompt=prompt,
height=height,
width=width,
num_inference_steps=num_inference_steps,
guidance_scale=guidance_scale,
num_images_per_prompt=num_images_per_prompt,
)["images"]
# create response
encoded_images = []
for image in generated_images:
buffered = BytesIO()
image.save(buffered, format="JPEG")
encoded_images.append(base64.b64encode(buffered.getvalue()).decode())
# create response
return {"generated_images": encoded_images}
在 Amazon Cloud9 創(chuàng)建前后端 Web 應(yīng)用
AWS Cloud9 是一種基于云的集成開發(fā)環(huán)境 (IDE),只需要一個(gè)瀏覽器,即可編寫、運(yùn)行和調(diào)試代碼。包括一個(gè)代碼編輯器、調(diào)試程序和終端,并且預(yù)封裝了適用于 JavaScript、Python、PHP 等常見編程語言的基本工具,無需安裝文件或配置開發(fā)計(jì)算機(jī),即可開始新的項(xiàng)目。
- 這里我直接參考官方提供的手冊,跟著操作即可完成 Web 服務(wù)的部署
1. 創(chuàng)建云服務(wù)實(shí)例,并進(jìn)行web環(huán)境安裝
這里我試用了 Cloud9 云服務(wù),在查找服務(wù)處搜索 Cloud9,并點(diǎn)擊進(jìn)入Cloud9服務(wù)面板即可
點(diǎn)擊創(chuàng)建環(huán)境
我這里的設(shè)置如下
其他部分配置保持默認(rèn),在頁面底部點(diǎn)擊橙色的 Create 按鈕創(chuàng)建環(huán)境。 環(huán)境的創(chuàng)建將花費(fèi)1-2分鐘的時(shí)間。
創(chuàng)建成功之后,點(diǎn)擊 open 進(jìn)入服務(wù)控制臺
粘貼左側(cè)的代碼,復(fù)制到控制臺bash窗口進(jìn)行運(yùn)行,會自動下載和解壓代碼
cd ~/environment
wget https://static.us-east-1.prod.workshops.aws/public/73ea3a9f-37c8-4d01-ae4e-07cf6313adac/static/code/SampleWebApp.zip
unzip SampleWebApp.zip
# 在 AWS Cloud9 上安裝 Flask 和 boto3
pip3 install Flask
pip3 install boto3
2. 運(yùn)行啟動web服務(wù),輸入想要生成的圖像參數(shù)和提示詞,調(diào)用推理服務(wù)
依賴的環(huán)境安裝好之后,就可以運(yùn)行這個(gè)服務(wù)代碼
服務(wù)啟動成功之后,訪問 127.0.0.1:8080 即可訪問本地服務(wù);設(shè)定 width 和 Length 參數(shù),以及想要生成的圖片描述,然后點(diǎn)擊提交
等待 幾秒鐘之后,就得到了上面輸入的兩個(gè) 提示詞對應(yīng)生成的圖像,看得出來效果還是非常不錯的;
- 經(jīng)測試發(fā)現(xiàn),即使每次輸入的提示詞是同一個(gè),模型生成得到的輸出也是不固定的
- 輸入的提示詞語越精準(zhǔn),生成的圖像效果會容易越好
- 基于亞馬遜SageMaker服務(wù)平臺,如此快速(熟練之后,不到半個(gè)小時(shí))就能搭建好一套AI模型的web端在線推理調(diào)用,果然好的技術(shù)就是第一生產(chǎn)力
3. 文本圖像生成示例
這里提供3組文本圖像生成的示例,方便各位同學(xué)參考:
提示詞 | 生成圖像示例1 | 生成圖像示例2 |
---|---|---|
A rabbit is piloting a spaceship |
![]() |
![]() |
Driverless car speeds through the desert |
![]() |
![]() |
A small cabin on top of a snowy mountain in the style of Disney, artstation |
![]() |
![]() |
4. Stable Diffusion 2.0 模型效果優(yōu)缺點(diǎn)分析
目前業(yè)界已經(jīng)有不少文本圖像生成的服務(wù)和模型推出,Stable Diffusion 2.0 的圖像生成效果,整體上我覺得相當(dāng)驚艷,優(yōu)點(diǎn)很明顯:
- 能夠直接支持 512x512像素和768x768像素的圖像生成,生成圖像的整體質(zhì)量和局部細(xì)節(jié)都有顯著提升,其次在超分辨率高階Diffusion模型加持下,Stable Diffusion 2.0 可以進(jìn)一步生成分辨率2K以上的高清圖像。
- 對文本詞匯的解析比較精準(zhǔn),推理速度相比之前版本有較大提升,整體來看非常高效、魯棒,超越目前業(yè)界很多模型。
不足之處,Stable Diffusion 2.0 對于過短和過長的文本提示詞生成的圖像可能效果差異很大,這意味著有的時(shí)候,如果想要生成得到更加貼近我們預(yù)期的圖像,需要對專業(yè)的文本提示詞匯有所了解,使得輸入的文本提示詞更加精準(zhǔn)和容易讓模型理解。
亞馬遜云科技之云上探索實(shí)驗(yàn)室
亞馬遜云服務(wù)使用體驗(yàn)總結(jié)
通過此次深度參與亞馬遜云科技之云上探索實(shí)驗(yàn)室活動并上手實(shí)踐不同AI項(xiàng)目的云端服務(wù)部署,我進(jìn)一步認(rèn)識到 AWS(Amazon Web Services)的強(qiáng)大所在:
- 可擴(kuò)展性:AWS允許用戶根據(jù)業(yè)務(wù)需要輕松擴(kuò)展服務(wù)器資源,能夠幫助客戶節(jié)省成本、提高效率;
- 可靠性:AWS 擁有持續(xù)領(lǐng)先的云服務(wù)基礎(chǔ)設(shè)施,具有高度可靠的分布式架構(gòu),能夠在全球業(yè)務(wù)范圍內(nèi)提供穩(wěn)定可靠的服務(wù);
- 安全性:AWS 提供各種安全功能和工具,有效幫助用戶保護(hù)數(shù)據(jù)和應(yīng)用程序;
- 靈活性:AWS 提供各種可定制的服務(wù)和功能,以滿足用戶的特定需求;
- 可信賴:AWS 在業(yè)界樹立良好的企業(yè)形象和服務(wù)口碑,早已成為全球數(shù)百萬企業(yè)和個(gè)人客戶的云轉(zhuǎn)型首選。
AWS 相比其他云服務(wù)廠商,還具備以下優(yōu)點(diǎn):
- 亞馬遜云科技為 AWS 提供全球覆蓋廣泛、服務(wù)深入的云平臺,已有超過 200 項(xiàng)功能齊全的服務(wù)可供使用;
- 提供有一套構(gòu)建于 AWS 之上的按需付費(fèi)的生產(chǎn)效率應(yīng)用程序,使得團(tuán)隊(duì)用戶能夠快速、安全、經(jīng)濟(jì)高效地檢查項(xiàng)目狀態(tài)、進(jìn)行內(nèi)容協(xié)作,并實(shí)現(xiàn)實(shí)時(shí)通信;
- 提供最廣泛、最深入的機(jī)器學(xué)習(xí)服務(wù)及配套的云基礎(chǔ)設(shè)施和廣泛驗(yàn)證的算法模型,從而使每位開發(fā)人員、數(shù)據(jù)科學(xué)家和專家從業(yè)者都能利用機(jī)器學(xué)習(xí)技術(shù)高效切入AI服務(wù)的落地和部署;
- 提供全方位的在線開發(fā)工具,用戶能夠更快、更高效地托管代碼以及構(gòu)建、測試和部署應(yīng)用程序;
前沿技術(shù)有待大家一起去探索
這次有幸受邀參加亞馬遜云科技【云上探索實(shí)驗(yàn)室】活動,跟著亞馬遜云科技技術(shù)團(tuán)隊(duì)提供的系列非常詳盡的 AI模型云上推理部署實(shí)戰(zhàn)文檔和視頻教程一步步進(jìn)行真實(shí)的云上服務(wù)部署操作,讓我再次認(rèn)識到AI在各個(gè)領(lǐng)域技術(shù)突破所帶來的強(qiáng)大生產(chǎn)力,而通過借助 亞馬遜 SageMaker 平臺進(jìn)行AI模型服務(wù)部署大大簡化我們普通開發(fā)者進(jìn)行AI模型部署服務(wù)的難度,使得對于中小企業(yè)和個(gè)人開發(fā)者而言,AI服務(wù)的快速落地也不再是一件難事。
- 教程鏈接,小伙伴們有興趣的話,也可以參考SageMaker平臺提供的AIGC模型部署官方文檔和我這里的博客進(jìn)行嘗試,部署自己的AIGC模型
通過使用 亞馬遜 SageMaker 服務(wù)平臺,我們只需要一個(gè)瀏覽器,即可編寫、運(yùn)行和調(diào)試各種代碼,無需進(jìn)行復(fù)雜的機(jī)器適配和環(huán)境搭建,能夠快速完成AI模型的推理、測試、驗(yàn)證部署工作。
如果你也想親身感受最新、最熱門的亞馬遜云科技開發(fā)者工具與服務(wù),那么只需點(diǎn)擊下方鏈接,即可跟著亞馬遜云科技團(tuán)隊(duì)工程師一起對更多有趣的AI技術(shù)進(jìn)行探索與實(shí)踐,出擊吧,AI 追夢人
- 亞馬遜云科技之云上探索實(shí)驗(yàn)室活動:從實(shí)踐中探索機(jī)器學(xué)習(xí)邊界
率先完成學(xué)習(xí)打卡小伙伴,還有豐厚獎品可以領(lǐng)取喲
文章來源:http://www.zghlxwxcb.cn/news/detail-412151.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-412151.html
到了這里,關(guān)于如何在亞馬遜 SageMaker 進(jìn)行 Stable Diffusion 模型在線服務(wù)部署的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!