色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用Jina來構建一個使用Stable Diffusion生成圖像的Executor呢

深度學習自然語言處理 ? 來源:Alex CG ? 2023-03-27 10:25 ? 次閱讀

什么是 Executor

Executor 是一個獨立的 gRPC 微服務,它可以在 DocumentArray 上執行任務。Executor Hub 上有大量預構建的 Executor 可供選擇,包含了各種常見的任務,如文本分類,圖像識別、目標檢測等。

ExecutorHub:cloud.jina.ai/executors

為了讓你能夠更輕松地部署和管理微服務,我們正將 Executor 從 Flow 中分離出來。同時,也方便你更好地利用 Jina 的其他強大功能,比如:

利用 gRPC 和 protobuf 實現高效的網絡傳輸和序列化,更快地處理數據和模型之間的通信

使用 DocArray 更準確、靈活地表示多模態數據,以滿足不同場景下的需求;

“Array-first”概念,將輸入數據分批進行模型推理,可以大幅提高吞吐量,使你的模型處理更加高效;

輕松地將 ML 模型部署到生產環境中,享受云原生所帶來的便利和絲滑。

此外,請密切關注即將推出的 Jina AI Cloud(cloud.jina.ai),在 Jina Cloud 上免費運行模型部署。

Jina 吉祥物

前段時間,我們在周五一起喝酒聊天的時候,突然聊到要不要給 Jina 選一個可愛的吉祥物,就像米其林輪胎人一樣。

酒后頭腦風暴之后,我們最終的決定是「彩虹獨角獸蝴蝶小貓」,考慮到基因改造工程的復雜度,要怎么真正創造出這樣一個神奇的新生物呢?我們決定先動手畫張圖:

但想一想,還有什么比使用 Jina 本身更好的方式來生成 Jina 的吉祥物呢?考慮到這一點,我們立馬開發了一個圖像生成的 Executor 和 Deployment。因此,在這篇文章中,我們將介紹如何將模型構建成 Executor、部署它、擴展它以及與全世界共享它。

構建 Executor

需要一個 GPU 才能在本地運行和部署這個 Executor。但你也可以調整代碼,使用 Executor Hub Sandbox 版本,托管在 Jina AI Cloud上。

在 Jina 中部署服務時總是以 Executor 的形式進行。Executor是一個Python類,用于轉換和處理 Document??梢詫⑽谋?圖像編碼為向量、OCR、從 PDF 中提取表格等等,不僅限于圖像生成。

當然如果你只是想把它用起來,而不是從頭開始構建它,可以直接跳到 Executor Hub 部分。

在本教程中,我們將重點關注 Executor 和 Deployment,而不會深入研究 Stable Diffusion 模型的復雜性。我們希望本教程適用于任何微服務或模型,而不是只適用特定用例。

以下大致就是我們希望 Executor 看起來的樣子。用戶傳入提示詞,Executor 使用該提示詞生成圖像,然后將該圖像傳回給用戶:

dcc32e40-cb54-11ed-bfe3-dac502259ad0.png

先決條件

您需要安裝 Hugging Face Diffusers,pip install diffusers[torch]。

現在,讓我們從整體上看一下 Executor 代碼,然后逐節分析:

我們將從創建開始 text_to_image.py:

from docarray import DocumentArray
from jina import Executor, requests
import numpy as np

class TextToImage(Executor):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        import torch
        from diffusers import StableDiffusionPipeline

        self.pipe = StableDiffusionPipeline.from_pretrained(
            "CompVis/stable-diffusion-v1-4", torch_dtype=torch.float16
        ).to("cuda")

    @requests
    def generate_image(self, docs: DocumentArray, **kwargs):
    # image here is in PIL format
        images = self.pipe(docs.texts).images
        
        for i, doc in enumerate(docs):
            doc.tensor = np.array(images[i])

Imports

from docarray import DocumentArray
from jina import Executor, requests
import numpy as np

注:Documents 和 DocumentArrays 是 Jina 的原生 IO 格式。

Executor 類

class TextToImage(Executor):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        import torch
        from diffusers import StableDiffusionPipeline

        self.pipe = StableDiffusionPipeline.from_pretrained(
            "CompVis/stable-diffusion-v1-4", torch_dtype=torch.float16
        ).to("cuda")

所有 Executor 都是從 Jina 的 Executor 類創建的。用戶可定義的參數是方法中定義的參數__init__()。

Requests 裝飾器

@requests
def generate_image(self, docs: DocumentArray, **kwargs):
    # image here is in PIL format
    images = self.pipe(docs.texts).images

    for i, doc in enumerate(docs):
        doc.tensor = np.array(images[i])

當你在一個 Executor 中定義了一個方法,并使用了@requests 裝飾器,那么你就可以通過端點調用這個方法。當你沒有指定端點路徑時,那么這個方法會成為默認處理程序。

這里我們沒有像@requests(on='/foo') 這樣指定端點路徑,只是使用了裸的@requests,所以當調用 Executor 時,generate_image() 方法會成為默認處理程序。

部署我們的微服務

那么,現在我們有了 Executor,下一步當然就是部署啦!通過 Deployment,你可以運行和擴展 Executor,添加 replicas(副本), shards(分片) 和 dynamic batching(動態批處理)。此外,部署到 Kubernetes 或 Docker Compose 也很容易,我們將在本文后面介紹。

1. Deploy via Python API

運行 python deployment.py

from jina import Deployment
from text_to_image import TextToImage

with Deployment(uses=TextToImage, timeout_ready=-1, install_requirements=True) as dep:
    dep.block()

2. Deploy via YAML

使用 CLI 運行 YAML 部署:jina deployment --uses deployment.yml

jtype: Deployment
with:
  port: 12345
  uses: TextToImage
  py_modules:
    - text_to_image.py # name of the module containing Executor
  timeout_ready: -1
install_requirements: True
And run the YAML Deployment with the CLI: jina deployment --uses deployment.yml

無論您運行哪種 Deployment,您都會看到以下輸出:

────────────────────────────────────────  Deployment is ready to serve! ─────────────────────────────────────────
╭──────────────  Endpoint ───────────────╮
│        Protocol                   GRPC │
│          Local          0.0.0.0:12345  │
│        Private      172.28.0.12:12345  │
│         Public    35.230.97.208:12345  │
╰──────────────────────────────────────────╯

與我們的微服務通信

我們可以使用 Jina Client 通過 gRPC 向我們的服務發送請求。如前所述,我們使用 Document 作為基本的 IO 格式:

運行 client.py 獲得我們的夢中精靈貓。

from docarray import Document
from jina import Client

image_text = Document(text='rainbow unicorn butterfly kitten')

client = Client(port=12345)  # use port from output above
response = client.post(on='/', inputs=[image_text])

response[0].display()

擴展我們的微服務

Jina 有開箱即用的可擴展功能,如副本、分片和動態批處理。這使您可以輕松增加應用程序的吞吐量。

讓我們部署 Deployment,并使用副本和動態批處理對其進行擴展。我們將:

創建兩個副本,每個副本分配一個 GPU。

啟用動態批處理以并行處理傳入同一模型的請求。

dda296fc-cb54-11ed-bfe3-dac502259ad0.png

這是 Deployment 的原始(未擴展)deployment.yml:

jtype: Deployment
with:
  timeout_ready: -1
  uses: jinaai://jina-ai/TextToImage
  install_requirements: true

現在讓我們擴大規模:

jtype: Deployment
with:
  timeout_ready: -1
  uses: jinaai://jina-ai/TextToImage
  install_requirements: true
  env:
   CUDA_VISIBLE_DEVICES: RR
  replicas: 2
  uses_dynamic_batching: # configure dynamic batching
    /default:
      preferred_batch_size: 10
      timeout: 200

我們通過 CUDA_VISIBLE_DEVICES添加了 GPU 支持,使用了兩個副本(每個副本分配一個 GPU)和動態批處理,可以累積并批處理請求,再發送到 Executor。

假設您的機器有兩個 GPU,使用擴展后的 Deployment YAML 會比普通部署獲得更高的吞吐量。

感謝 YAML 語法,你可以直接注入部署配置,不用修改 Executor 代碼。當然了,所有這些也可以通過 Python API 完成。

Kubernetes, Docker Compose andOpenTelemetry

使用 Kubernetes 和 Jina 很容易

jina export kubernetes deployment.yml ./my-k8s
kubectl apply -R -f my-k8s

同樣的,Docker Compose 也很容易

jina export docker-compose deployment.yml docker-compose.yml
docker-compose up

甚至,使用 OpenTelemetry 進行 tracing(跟蹤) 和 monitoring (監視) 也很簡單。

from docarray import DocumentArray
from jina import Executor, requests

class Encoder(Executor):
    @requests
    def encode(self, docs: DocumentArray, **kwargs):
        with self.tracer.start_as_current_span(
            'encode', context=tracing_context
        ) as span:
            with self.monitor(
                'preprocessing_seconds', 'Time preprocessing the requests'
            ):
                docs.tensors = preprocessing(docs)
            with self.monitor(
                'model_inference_seconds', 'Time doing inference the requests'
            ):
                docs.embedding = model_inference(docs.tensors)

您可以集成 Jaeger 或任何其他分布式跟蹤工具,來收集和可視化請求級別和應用級別的服務操作屬性。這有助于分析請求-響應生命周期、應用程序行為和性能。要使用 Grafana,你可以下載這個 JSON 文件并導入 Grafana:

ddd1681a-cb54-11ed-bfe3-dac502259ad0.png

共享你的 Executor

使用 Executor Hub 共享你的 Executors 或使用公共/私有 Executors,幾乎不需要擔心依賴關系。

ddf4398a-cb54-11ed-bfe3-dac502259ad0.png

創建 Hub-ready Executor:

jina hub new

將其推送到 Executor Hub:

jina hub push

您可以通過 Python 在 Deployment 中使用 Hub Executor:

Deployment(uses='jinaai://jina-ai/TextToImage', install_requirements=True)  # download and run locally
Deployment(uses='jinaai+docker://jina-ai/TextToImage')  # run in Docker container
Deployment(uses='jinaai+sandbox://jina-ai/TextToImage')  # run in hosted sandbox

或者 YAML:

uses: jinaai://jina-ai/TextToImage  # download and run locally
install_requirements: true

uses: jinaai+docker://jina-ai/TextToImage  # run in Docker container
uses: jinaai+sandbox://jina-ai/TextToImage  # run in hosted sandbox

Executor Hub 管理后端的所有內容,包括:

云端自動構建;

高效且經濟地存儲、部署和交付 Executor;

自動解決版本沖突和依賴;

通過 Sandbox 即時交付任何 Executor,而無需將任何內容 pull 到本地;

將微服務串聯成pipeline 中

有時你可能希望將微服務串聯成一個 pipeline。這就是 Flow 的用武之地。我們將在以后的博客中更深入地介紹如何構建 Flow,目前您可以查看我們的 README。

Readme: get.jina.ai

總結

正如用 Executor 和 Deployment 包裝微服務或模型一樣,我們也必須總結這篇文章??偨Y一下我們所涵蓋的內容:

使用 Jina,你可以將模型包裝為 Executor,通過 Deployment 可以直接部署這些 Executor,或者將他們串聯成 pipeline 作為 Flow 去部署。

Jina 與 Kubernetes、Docker Compose 和 OpenTelemetry 集成輕而易舉。

你可以在 Executor Hub 輕松找到和共享所有內容。

如果您想繼續深入了解,請查看我們的文檔以獲取有關 Executors 和 Deployments 的更多信息,或者使用 Jina Flows 查看 pipeline。您還可以聯系我們的 Slack 社區jina.ai/community。

多多和我們互動吧!這樣我們才更加有動力分享出更多好文章,未來我們將發布更多文章深入探討作為人人可用的多模態數據平臺,如何利用 Jina 地云原生,MLOps 和 LMOps 技術,讓每個企業和開發者都能享受到最好的搜索和生成技術。

Jina 吉祥物之彩虹獨角獸蝴蝶小貓排行榜

像所有圖像生成一樣,我們花了很長時間才生成一只完美的可愛小貓。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • gpu
    gpu
    +關注

    關注

    28

    文章

    4743

    瀏覽量

    128985
  • 執行器
    +關注

    關注

    5

    文章

    378

    瀏覽量

    19368
  • CLI
    CLI
    +關注

    關注

    1

    文章

    79

    瀏覽量

    8564
  • YAML
    +關注

    關注

    0

    文章

    21

    瀏覽量

    2332

原文標題:如何用 Jina 部署深度學習模型

文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    借助谷歌Gemini和Imagen模型生成高質量圖像

    以獲得卓越的視覺效果。這個過程并不止于此;圖像生成,Imagen 2 可以進步優化以滿足特定需求,從而創建
    的頭像 發表于 01-03 10:38 ?92次閱讀
    借助谷歌Gemini和Imagen模型<b class='flag-5'>生成</b>高質量<b class='flag-5'>圖像</b>

    如何開啟Stable Diffusion WebUI模型推理部署

    如何開啟Stable Diffusion WebUI模型推理部署
    的頭像 發表于 12-11 20:13 ?111次閱讀
    如何開啟<b class='flag-5'>Stable</b> <b class='flag-5'>Diffusion</b> WebUI模型推理部署

    Freepik攜手Magnific AI推出AI圖像生成

    近日,設計資源巨頭Freepik攜手Magnific AI,共同推出了革命性的AI圖像生成器——Freepik Mystic,這里程碑式的發布標志著AI圖像創作領域邁入了
    的頭像 發表于 08-30 16:23 ?1144次閱讀

    實操: 如何在AirBox上跑Stable Diffusion 3

    StableDiffusion3Medium是種多模態擴散變換器(MMDiT)文本到圖像模型,在圖像質量、排版、復雜提示理解和資源效率方面具有顯著提升的性能。目前瑞莎團隊
    的頭像 發表于 07-23 08:34 ?259次閱讀
    實操: 如何在AirBox上跑<b class='flag-5'>Stable</b> <b class='flag-5'>Diffusion</b> 3

    微信大模型擴容并開源,推出首個中英雙語文生圖模型,參數規模達15億

    基于Diffusion Transformer的混元DiT是種文本到圖像生成模塊,具備中英細粒度理解能力,能與用戶進行多輪對話,根據上下文生成
    的頭像 發表于 05-14 17:10 ?739次閱讀

    OpenAI發布圖像檢測分類器,可區分AI生成圖像與實拍照片

    據OpenAI介紹,初步測試結果表明,該分類器在辨別非AI生成圖像與DALL·E 3生成圖像時,成功率高達近98%,僅有不到0.5%的非AI圖像
    的頭像 發表于 05-09 09:57 ?473次閱讀

    UL Procyon AI 發布圖像生成基準測試,基于Stable Diffusion

    UL去年發布的首個Windows版Procyon AI推理基準測試,以計算機視覺工作負載評估AI推理性能。新推出的圖像生成測試將提供統、精確且易于理解的工作負載,用以保證各支持硬件間公平、可比的性能表現。
    的頭像 發表于 03-25 16:16 ?895次閱讀

    Stability AI推出全新Stable Video 3D模型

    近日,Stability AI 推出了全新的 Stable Video 3D 模型,該模型以其獨特的功能吸引了眾多關注。此模型具備從單張圖像生成多視圖3D視頻的能力,為視頻制作領域帶來了革命性的突破。
    的頭像 發表于 03-22 10:30 ?863次閱讀

    KOALA人工智能圖像生成模型問世

    近日,韓國科學團隊宣布研發出名為 KOALA 的新型人工智能圖像生成模型,該模型在速度和質量上均實現了顯著突破。KOALA 能夠在短短 2 秒內生成高質量圖片,同時大幅降低了對硬件的需求,為
    的頭像 發表于 03-05 10:46 ?794次閱讀

    韓國科研團隊發布新型AI圖像生成模型KOALA,大幅優化硬件需求

    由此模型的核心在于其運用了“知識蒸餾”(knowledge distillation)技術,這使得開源圖像生成工具Stable Diffusion XL可大幅縮小其規模。原
    的頭像 發表于 03-01 14:10 ?641次閱讀

    聯發科天璣又領先步!強悍AI手機芯片就看天璣!

    應用,該演示充分發揮了天璣 9300和8300芯片的獨立AI處理器APU,在硬件加速引擎的加持下,可以在終端側生成文章和摘要。 聯發科還重點展出了支持SDXL Turbo(Stable Diffusion
    的頭像 發表于 02-27 13:46 ?531次閱讀
    聯發科天璣又領先<b class='flag-5'>一</b>步!強悍AI手機芯片就看天璣!

    OpenAI視頻模型Sora的架構及應用場景

    LDM 就是 Stable Diffusion 使用的模型架構。擴散模型的大問題是計算需求大,難以擬合高分辨率圖像。為了解決這問題,實現
    發表于 02-20 15:13 ?654次閱讀
    OpenAI視頻模型Sora的架構及應用場景

    Stability AI試圖通過新的圖像生成人工智能模型保持領先地位

    Stability AI的最新圖像生成模型Stable Cascade承諾比其業界領先的前身Stable Diffusion更快、更強大,而
    的頭像 發表于 02-19 16:03 ?951次閱讀
    Stability AI試圖通過新的<b class='flag-5'>圖像</b><b class='flag-5'>生成</b>人工智能模型保持領先地位

    谷歌推出圖像生成新工具ImageFX,提升圖像質量

    作為實驗室的新興工具,ImageFX 允許用戶借助簡潔的文字指令創作圖像。經過前期試驗,該團隊認為對生成型人工智能工具來說最關鍵的是如何啟發并鼓勵用戶挖掘和實踐創意想法。
    的頭像 發表于 02-02 14:18 ?685次閱讀

    實現圖像識別神經網絡的步驟

    我們的下一個任務是使用先前標記的圖像訓練神經網絡,以對新的測試圖像進行分類。因此,我們將使用nn模塊
    的頭像 發表于 01-22 10:01 ?1042次閱讀
    實現<b class='flag-5'>圖像</b>識別神經網絡的步驟
    主站蜘蛛池模板: 亚洲AV 无码AV 中文字幕| 日本久久久久亚洲中字幕| 超碰在线视频公开| 中文字幕在线视频观看| 亚洲一区自拍高清亚洲精品| 翁公吮她的花蒂和奶水| 色婷婷五月综合久久中文字幕| 青青草伊人网| 日本阿v在线资源无码免费| 欧美熟妇VIVOE精品| 美女国产毛片A区内射| 就去色电影| 牢记永久免费网址| 毛片手机在线看| 免费看黄的片多多APP下载| 快播金瓶梅| 萝莉御姐被吸奶| 嗯啊…嗯np男男双性总受| 猫咪www958ii| 美女18黄| 欧美 另类 美腿 亚洲 无码| 女教师二十三歳| 任你懆视频 这里只有精品| 人妻免费视频公开上传| 日本精品卡一卡2卡3卡四卡三卡| 日本一卡精品视频免费| 视频一区精品自拍亚洲| 偷柏自拍亚洲综合在线| 亚洲AV成人无码网天堂| 亚洲欧美韩国综合色| 一个人在线观看免费视频| 岳打开双腿开始配合日韩视频| 中文字幕高清在线观看| av在线色| 国产不卡视频在线观看| 国产精品久久久久久人妻精品蜜桃| 国产人妻系列无码专区97SS| 极品色αv影院| 免费人妻无码AV不卡在线| 人人干人人插| 午夜伦伦电影理论片费看|