国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用 PAI-Blade 優(yōu)化 Stable Diffusion 推理流程

這篇具有很好參考價(jià)值的文章主要介紹了使用 PAI-Blade 優(yōu)化 Stable Diffusion 推理流程。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

背景

AIGC是人工智能計(jì)算領(lǐng)域里發(fā)展迅速的重要業(yè)務(wù)。Stable Diffusion 是其中最熱門的開源模型,受到廣泛關(guān)注。然而,隨著應(yīng)用場(chǎng)景不斷擴(kuò)大,Stable Diffusion所面臨的推理時(shí)延和計(jì)算成本問題也越來越突出。

簡(jiǎn)介

PAI-Blade是 PAI 推出的通用推理優(yōu)化工具,可以通過模型系統(tǒng)聯(lián)合優(yōu)化,使模型達(dá)到最優(yōu)推理性能。PAI-Blade依托于完全動(dòng)態(tài)尺寸的AI編譯器BladeDISC?和?基于深度學(xué)習(xí)自動(dòng)調(diào)度的高性能計(jì)算庫BlaDNN, 為包括圖像生成模型Stable Diffsuion, 大語言模型LLM, 大規(guī)模稀疏推薦模型CTR, 語音識(shí)別模型ASR等等在內(nèi)的眾多模型提供自動(dòng)的高性能推理優(yōu)化。

BladeDISC?是一款支持完全動(dòng)態(tài)尺寸的AI編譯器,前端支持Pytorch和Tensorflow模型。對(duì)于Pytorch模型能夠支持 TorchScript 和 TorchDynamo 兩種輸入模式,后端通過 AStitch 大尺度算子融合技術(shù)和高效的 codegen 邏輯提升模型訪存密集算子的執(zhí)行效率。BladeDISC現(xiàn)已在github開源,項(xiàng)目地址:https://github.com/alibaba/BladeDISC?。

BlaDNN?是基于深度學(xué)習(xí)自動(dòng)調(diào)度的高性能計(jì)算庫。BlaDNN 作為Ansor的升級(jí)版,不僅生成的kernel性能超過Ansor,而且可以完全依賴DNN自動(dòng)調(diào)度而不使用Tuning調(diào)優(yōu),使得Dynamic Shape業(yè)務(wù)場(chǎng)景的在線自動(dòng)調(diào)度成為可能,基于DNN自動(dòng)調(diào)度生成的GPU計(jì)算密集算子的平均性能達(dá)到極致tuning性能的99.39%,通過模型系統(tǒng)聯(lián)合優(yōu)化DNN推理延時(shí)低至2us, 并且只使用一個(gè)CPU Core,從而不會(huì)對(duì)GPU模型本身的性能造成任何抖動(dòng)。

通過采用 PAI-Blade 加速推理優(yōu)化技術(shù),對(duì)訪存密集型算子進(jìn)行大尺度融合及優(yōu)化代碼生成,對(duì)計(jì)算密集型算子進(jìn)行自動(dòng)調(diào)度,可以大幅度降低Stable Diffusion的推理延遲和顯存占用,從而減少計(jì)算成本。使用 PAI-Blade 優(yōu)化Stable Diffusion 具有以下三點(diǎn)優(yōu)勢(shì):

  1. 高性能,使用Blade可以降低 Text2Img、Img2Img 等推理流程的端到端延遲 2.42-3.05 倍,同時(shí)可降低省顯存占用至多 5.27 倍,超過TensorRT-8.5等業(yè)內(nèi)SOTA優(yōu)化手段。
  2. 完全動(dòng)態(tài)shape支持,一次優(yōu)化后,可以支持任意形狀、batch size的輸入。
  3. 易用性、可擴(kuò)展性:僅需數(shù)行代碼即可在多類pipeline中啟用 Blade優(yōu)化,同時(shí)能支持LoRA等推理方案的優(yōu)化。

使用示例

本文接下來以社區(qū)流行的 "runwayml/stable-diffusion-v1-5" 的 Text2Img pipeline 為例,詳細(xì)介紹 PAI-Blade 在各類使用場(chǎng)景下的使用方法。

環(huán)境安裝

下述示例完整的運(yùn)行腳本及相關(guān)環(huán)境已集成到?registry.cn-beijing.aliyuncs.com/blade_demo/blade_diffusion?docker 中。在該docker中,直接通過?python /blade/blade_diffusion.py?即可運(yùn)行推理示例。

官方模型優(yōu)化

使用 PAI-Blade 優(yōu)化 Stable Diffusion 模型可以分為以下幾個(gè)步驟。

首先,加載預(yù)訓(xùn)練的模型。

from diffusers import StableDiffusionPipeline

device = torch.device("cuda:0")
pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", revision="fp16", torch_dtype=torch.float16).to(device)

第二步,使用 PAI-Blade 進(jìn)行優(yōu)化。注意,由于 PAI-Blade 是完全動(dòng)態(tài)shape的優(yōu)化工具,優(yōu)化完成后可使用任意shape進(jìn)行推理。

import torch_blade

opt_cfg = torch_blade.Config()
opt_cfg.enable_fp16 = True
with opt_cfg, torch.no_grad():
    encoder = blade_optimize(pipe.text_encoder, model_inputs=encoder_inputs, allow_tracing=True)
    unet = blade_optimize(pipe.unet, model_inputs=unet_inputs, allow_tracing=True)
    decoder = blade_optimize(pipe.vae.decoder, model_inputs=decoder_inputs, allow_tracing=True)

最后,使用優(yōu)化好的模型替換原始模型,后續(xù)即可以原始 pipeline 同樣的方式進(jìn)行推理。

@dataclass
class UNet2DConditionOutput:
    sample: torch.FloatTensor

class TracedUNet(torch.nn.Module):
    def __init__(self):
        super().__init__()
        self.config = pipe.unet.config
        self.in_channels = pipe.unet.in_channels
        self.device = pipe.unet.device

    def forward(self, latent_model_input, t, encoder_hidden_states, **kwargs):
        sample = unet(latent_model_input.half(), t.half(), encoder_hidden_states.half())["sample"]
        return UNet2DConditionOutput(sample=sample)

class TracedEncoder(torch.nn.Module):
    def __init__(self):
        super().__init__()
        self.config = pipe.text_encoder.config
        self.device = pipe.text_encoder.device
        self.dtype = torch.half

    def forward(self, input_ids, **kwargs):
        embeddings = encoder(input_ids.long())
        return [embeddings["last_hidden_state"]]

class TracedDecoder(torch.nn.Module):
    def forward(self, input):
        return decoder(input.half())

pipe.text_encoder = TracedEncoder()
pipe.unet = TracedUNet()
pipe.vae.decoder = TracedDecoder()

A100 性能對(duì)比

image size samplesteps Time of Pytorch(s) Time of PAI-Blade(s) speedup Pytorch memory usage (GB) PAI-Blade memory usage (GB)
1024x1024 50 13.26 4.34 3.06X 32.91 6.25
768x768 50 5.65 2.00 2.83X 14.99 5.91
512x512 50 2.24 0.84 2.67X 6.60 5.42

A10 性能對(duì)比

image size samplesteps Time of Pytorch(s) Time of PAI-Blade(s) speedup Pytorch memory usage (GB) PAI-Blade memory usage (GB)
1024x1024 50 OOM 13.86 - OOM 6.89
768x768 50 13.13 5.61 2.34X 12.60 6.22
512x512 50 4.53 2.11 2.15X 6.28 5.47

推理結(jié)果驗(yàn)證

使用PAI-Blade優(yōu)化后,生成的圖像與Pytorch原始輸出對(duì)比,觀察優(yōu)化結(jié)果是否正確。左圖為Pytorch eager模式輸出,右圖為PAI-Blade優(yōu)化后的模型輸出。

使用 PAI-Blade 優(yōu)化 Stable Diffusion 推理流程

已驗(yàn)證的pipeline類型

  1. StableDiffusionPipeline
  2. StableDiffusionImg2ImgPipeline
  3. StableDiffusionInpaintPipeline
  4. AltDiffusionPipeline

LoRA優(yōu)化

LoRA 是指在原始模型基礎(chǔ)上,添加額外的低秩矩陣來微調(diào)預(yù)訓(xùn)練的模型,并且只訓(xùn)練那些新添加的權(quán)重,從而大幅降低微調(diào)成本??梢酝ㄟ^?diffusers官方訓(xùn)練代碼?微調(diào)得到 LoRA 權(quán)重。diffusers 加載使用 LoRA 后,模型運(yùn)行方式與原始模型略有不同,帶來額外計(jì)算開銷。

PAI-Blade 目前已適配 huggingface/diffusers 中 LoRA 優(yōu)化方式。同樣的,Blade 針對(duì)同一pipeline,只需優(yōu)化一次,即可使用任意的 LoRA 權(quán)重進(jìn)行推理。我們將在下一篇文章中介紹PAI-Blade 優(yōu)化 LoRA 的使用方式,敬請(qǐng)期待。

展望

目前,Stable Diffusion相關(guān)技術(shù)仍在不斷演化中,PAI-Blade 團(tuán)隊(duì)也時(shí)刻關(guān)注社區(qū)趨勢(shì),將優(yōu)化適配到各種工具中去。目前團(tuán)隊(duì)主要集中在:

  1. 將相關(guān)優(yōu)化集成到 stable-diffusion-webui 中;
  2. 優(yōu)化 finetune 訓(xùn)練速度。

原文鏈接

本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載文章來源地址http://www.zghlxwxcb.cn/news/detail-489631.html

到了這里,關(guān)于使用 PAI-Blade 優(yōu)化 Stable Diffusion 推理流程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 阿里云PAI-Diffusion功能再升級(jí),全鏈路支持模型調(diào)優(yōu),平均推理速度提升75%以上

    阿里云PAI-Diffusion功能再升級(jí),全鏈路支持模型調(diào)優(yōu),平均推理速度提升75%以上

    隨著Stable Diffusion模型在AI圈的爆火,AI生成內(nèi)容(AI Generated Content,AIGC)的應(yīng)用呈現(xiàn)出井噴式的增長(zhǎng)趨勢(shì)。其中,文圖生成(Text-to-image Generation)任務(wù)是最流行的AIGC任務(wù)之一,旨在生成與給定文本對(duì)應(yīng)的圖像。在先前的工作中,阿里云機(jī)器學(xué)習(xí)PAI團(tuán)隊(duì)開源了PAI-Diffusion系列模型

    2024年01月17日
    瀏覽(19)
  • 阿里云 PAI 免費(fèi)試用搭建 stable-diffusion-WebUI

    阿里云 PAI 免費(fèi)試用搭建 stable-diffusion-WebUI

    最近玩 stable-diffusion 一直在 Colab 上,前幾天發(fā)現(xiàn)阿里云的 PAI 有免費(fèi)試用,就玩了一下,發(fā)現(xiàn)速度比 Colab 還快,然后可以免費(fèi)試用三個(gè)月(如果不關(guān)機(jī)的話估計(jì)就只能玩 1 個(gè)月)。 首先在阿里云首頁免費(fèi)試用菜單下面點(diǎn)擊了解更多: 然后在最下方找到 PAI-DSW 的免費(fèi)試用,點(diǎn)

    2024年02月10日
    瀏覽(33)
  • 基于 PAI-EAS 一鍵部署 Stable Diffusion AIGC 繪畫

    基于 PAI-EAS 一鍵部署 Stable Diffusion AIGC 繪畫

    人工智能平臺(tái)PAI完成云上Stable Diffusion以文生圖應(yīng)用搭建, 支持兩種方式: 使用交互式建模?PAI-DSW 使用模型在線服務(wù)?PAI-EAS 兩種部署適用人群: 1.使用交互式建模 PAI-DSW 部署Stable Diffusion 亮點(diǎn): Notebook經(jīng)典界面,對(duì)習(xí)慣代碼操作的開發(fā)者更加友好; 支持微調(diào)訓(xùn)練等操作,靈

    2024年01月20日
    瀏覽(27)
  • Stable Diffusion在阿里云PAI DSW平臺(tái)實(shí)踐,送浩浩媽媽二次元

    Stable Diffusion在阿里云PAI DSW平臺(tái)實(shí)踐,送浩浩媽媽二次元

    內(nèi)容 說明 鏡像 stable-diffusion-webui-develop:1.0-pytorch2.0-gpu-py310-cu117-ubuntu22.04 鏡像區(qū)域 杭州、上海、北京、深圳 環(huán)境安裝 在DSW Gallery中找到“AI擴(kuò)圖神器,放飛你的想象力”,點(diǎn)擊“在DSW中打開”按鈕,進(jìn)入后已提供了額庫下載、基礎(chǔ)模型下載、webui運(yùn)行等基礎(chǔ) 在WebUI中進(jìn)入擴(kuò)展

    2024年04月26日
    瀏覽(21)
  • 云服務(wù)器免費(fèi)領(lǐng)用,體驗(yàn)PAI-EAS 5分鐘部署Stable Diffusion webUI

    云服務(wù)器免費(fèi)領(lǐng)用,體驗(yàn)PAI-EAS 5分鐘部署Stable Diffusion webUI

    最近發(fā)現(xiàn)大家都在體驗(yàn)AIGC的Stable Diffusion 文生圖模型,很多博主也分享了詳細(xì)的本地部署保姆級(jí)教程。 為什么選擇本地部署Stable Diffusion 因?yàn)闆]有生成數(shù)量的限制,不用花錢,不用被NSFW約束,生成時(shí)間快,不用排隊(duì),自由度高,插件豐富,功能眾多,可以調(diào)試和個(gè)性化的地方

    2024年02月16日
    瀏覽(40)
  • 使用stable diffusion 生成作品流程

    使用stable diffusion 生成作品流程

    ? AOTUDL 云部署 1.算力市場(chǎng)選用RTX3090/RTX A5000 2.點(diǎn)擊算法鏡像noval ai 3.0和Lora scripts 配置python環(huán)境及其他 3.啟動(dòng)stable diffusion和Lora scripts 4.裝配模型:可在如Civitai上下載標(biāo)注有 CKPT 的模型,有模型才能作畫。下載的模型放入下載后文件路徑下的 models/Stable-diffusion 目錄。 5.Stable D

    2024年02月10日
    瀏覽(20)
  • stable diffusion推理過程代碼梳理

    stable diffusion推理過程代碼梳理

    最近在看stable diffusion,想梳理一下代碼流程,以便之后查閱 從txt2img.py開始看 1.首先是對(duì)文本進(jìn)行編碼 (1)調(diào)用的是?stable-diffusion/ldm/models/diffusion/ddpm.py的get_learned_conditioning函數(shù) (2) 第555行表示使用CLIP的文本編碼器對(duì)輸入的文本進(jìn)行編碼,調(diào)用的是stable-diffusion/ldm/modules

    2024年02月11日
    瀏覽(19)
  • 【Stable Diffusion/NovelAI Diffusion的AMD GPU加速推理探索】

    【Stable Diffusion/NovelAI Diffusion的AMD GPU加速推理探索】

    測(cè)試機(jī)子配置: 1:AMD RX6600(顯存8g)+i5 12600KF 16g內(nèi)存 (臺(tái)式機(jī)) 2:RTX 3070 laptop(顯存8g)+i7 10870H 32g內(nèi)存 (HP暗夜精靈筆記本) 兩臺(tái)電腦平均性能差不多,當(dāng)然N卡肯定更好一點(diǎn) 這邊我們還是MS大發(fā)好,用MS的DirectML推理框架推理,雖然據(jù)小道消息反饋DML推理效率遠(yuǎn)不如Cuda,但是要知道

    2024年02月01日
    瀏覽(21)
  • 在英特爾 CPU 上加速 Stable Diffusion 推理

    在英特爾 CPU 上加速 Stable Diffusion 推理

    前一段時(shí)間,我們向大家介紹了最新一代的 英特爾至強(qiáng) CPU (代號(hào) Sapphire Rapids),包括其用于加速深度學(xué)習(xí)的新硬件特性,以及如何使用它們來加速自然語言 transformer 模型的 分布式微調(diào) 和 推理。 英特爾至強(qiáng)處理器: https://www.intel.com/content/www/us/en/products/details/processors/xeon/scal

    2024年02月09日
    瀏覽(27)
  • 基于onnx模型和onnx runtime推理stable diffusion

    直接用diffusers的pipeline: 在pipeline_onnx_stable_diffusion的基礎(chǔ)上修改得到的直接調(diào)用onnx模型版本,可以用于其他推理引擎推理參考: pipe_onnx_simple.py onnx_utils_simple.py 生成1張512x512圖的shape信息

    2024年02月11日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包