人類在線?從文本創建高清圖像的工作流程
dall·e流是一種交互式工作流程,用於從文本提示中生成高清圖像。首先,它利用dall·e-mega,Glid-3 XL和穩定的擴散來生成像徵候選者,然後調用剪輯 - 服務以對候選者的提示進行排名。首選的候選者被餵入GLID-3 XL進行擴散,這通常會豐富質地和背景。最後,候選人通過Swinir將候選人提升到1024x1024。
DALL·E流是用Jina在客戶端服務器體系結構中構建的,這使其具有很高的可擴展性,非阻滯流和現代的Pythonic界面。客戶端可以通過TLS通過GRPC/WebSocket/HTTP與服務器進行交互。
為什麼要在循環中?生成藝術是一個創造過程。儘管達爾·e釋放了人們的創造力的最新進展,但擁有單個單獨的輸出UX/UI將想像力鎖定在單一可能性上,無論這個單一的結果多麼好,這都是不好的。通過將生成藝術形式化為迭代程序,dall·e流是單線的替代方法。
dall·e流在客戶端服務器體系結構中。
grpcs://api.clip.jina.ai:2096
(需要jina >= v3.11.0
),您需要首先從這裡獲得訪問權限。有關更多詳細信息,請參閱使用剪貼即服務。flow_parser.py
中啟用標誌。grpcs://dalle-flow.dev.jina.ai
。現在,所有連接都使用TLS加密,請重新打開Google Colab中的筆記本。p2.x8large
實例上可以再現。ViT-L/14@336px
, steps 100->200
。使用客戶非常容易。以下步驟最好在Jupyter Notebook或Google Colab中運行。
您需要先安裝Docarray和Jina:
pip install " docarray[common]>=0.13.5 " jina
我們為您提供了一台演示服務器:
配x 由於大量要求,我們的服務器可能會延遲響應。但是,我們對保持正常運行時間的高度有信心。您還可以在此處遵循指令來部署自己的服務器。
server_url = 'grpcs://dalle-flow.dev.jina.ai'
現在,讓我們定義提示:
prompt = 'an oil painting of a humanoid robot playing chess in the style of Matisse'
讓我們將其提交給服務器並可視化結果:
from docarray import Document
doc = Document ( text = prompt ). post ( server_url , parameters = { 'num_images' : 8 })
da = doc . matches
da . plot_image_sprites ( fig_size = ( 10 , 10 ), show_index = True )
在這裡,我們生成了24個候選者,從達勒 - 梅加(Dalle-Mega)產生了8個候選者,8個來自GLID3 XL的候選者,以及穩定擴散的8個候選者,這是在num_images
中定義的,大約需要約2分鐘。如果對您來說太長,則可以使用較小的值。
24個候選人用剪貼畫和服務對象進行排序,索引0
是由Clip評判的最佳候選人。當然,您可能會有所不同。注意左上角的數字嗎?選擇您最喜歡的一個並獲得更好的視圖:
fav_id = 3
fav = da [ fav_id ]
fav . embedding = doc . embedding
fav . display ()
現在,讓我們將選定的候選物提交到服務器以進行擴散。
diffused = fav . post ( f' { server_url } ' , parameters = { 'skip_rate' : 0.5 , 'num_images' : 36 }, target_executor = 'diffusion' ). matches
diffused . plot_image_sprites ( fig_size = ( 10 , 10 ), show_index = True )
這將根據所選圖像提供36張圖像。您可以通過給skip_rate
一個接近零值或接近一個值來迫使其接近給定圖像來使模型更具即興創作。整個過程大約需要約2分鐘。
選擇您最喜歡的圖像,然後仔細觀察:
dfav_id = 34
fav = diffused [ dfav_id ]
fav . display ()
最後,提交到最後一步的服務器:將其提升到1024 x 1024px。
fav = fav . post ( f' { server_url } /upscale' )
fav . display ()
就是這樣!這是一個。如果不滿意,請重複該程序。
順便說一句,docarray是一個強大且易於使用的數據結構,用於非結構化數據。對於在跨/多模式域工作的數據科學家來說,它是超級富有成效的。要了解有關docarray的更多信息,請查看文檔。
您可以按照以下說明託管自己的服務器。
dall·e流在其峰值處需要一個帶有21GB VRAM的GPU。所有服務都被擠進了這個GPU,其中包括(大致)
config.yml
,512x512)以下合理的技巧可用於進一步降低VRAM:
它需要在硬盤驅動器上至少有50GB的空間,主要用於下載驗證的型號。
需要高速互聯網。下載模型時,慢速/不穩定的互聯網可能會引起令人沮喪的超時。
僅測試CPU的環境,可能無法正常工作。 Google Colab可能會投擲OOM,因此也無法正常工作。
如果您已經安裝了Jina,則可以通過以下方式生成以上流程圖:
# pip install jina
jina export flowchart flow.yml flow.svg
如果您想使用穩定的擴散,則首先需要在網站上註冊一個帳戶,並同意模型的條款和條件。登錄後,您可以找到通往此處所需的模型的版本:
compvis / sd-v1-5 inpainting.ckpt
在下載“權重”部分下,單擊sd-v1-x.ckpt
的鏈接。寫作時的最新權重為sd-v1-5.ckpt
。
DOCKER用戶:將此文件放入名為ldm/stable-diffusion-v1
的文件夾中,並重命名IT model.ckpt
。仔細按照以下說明進行操作,因為默認情況下未啟用SD。
本地用戶:將此文件放入dalle/stable-diffusion/models/ldm/stable-diffusion-v1/model.ckpt
中,完成“本地運行”下的其餘步驟後。仔細按照以下說明進行操作,因為默認情況下未啟用SD。
我們提供了可以直接拉動的預製碼頭圖像。
docker pull jinaai/dalle-flow:latest
我們提供了一個Dockerfile,該碼頭使您可以將服務器從框中運行。
我們的Dockerfile將CUDA 11.6用作基本圖像,您可能需要根據系統進行調整。
git clone https://github.com/jina-ai/dalle-flow.git
cd dalle-flow
docker build --build-arg GROUP_ID= $( id -g ${USER} ) --build-arg USER_ID= $( id -u ${USER} ) -t jinaai/dalle-flow .
該建築將需要10分鐘的平均互聯網速度,這將導致18GB Docker的圖像。
要運行它,只需做:
docker run -p 51005:51005
-it
-v $HOME /.cache:/home/dalle/.cache
--gpus all
jinaai/dalle-flow
另外,您也可以使用一些啟用或禁用的工作流程運行,以防止內存外崩潰。為此,通過以下環境變量之一:
DISABLE_DALLE_MEGA
DISABLE_GLID3XL
DISABLE_SWINIR
ENABLE_STABLE_DIFFUSION
ENABLE_CLIPSEG
ENABLE_REALESRGAN
例如,如果您想禁用GLID3XL工作流,請運行:
docker run -e DISABLE_GLID3XL= ' 1 '
-p 51005:51005
-it
-v $HOME /.cache:/home/dalle/.cache
--gpus all
jinaai/dalle-flow
-v $HOME/.cache:/root/.cache
避免在每個Docker運行中下載重複的模型。-p 51005:51005
的第一部分是您的主機公共端口。如果您公開服務,請確保人們可以訪問此端口。其第二個標準桿是Flow.yml中定義的端口。ENABLE_STABLE_DIFFUSION
手動啟用它。ENABLE_CLIPSEG
手動啟用它。ENABLE_REALESRGAN
手動啟用它。 穩定的擴散只有在您下載了權重並使它們作為虛擬卷中提供時,才能啟用穩定的擴散,同時為SD啟用環境標誌( ENABLE_STABLE_DIFFUSION
) 。
您應該以前將權重放入名為ldm/stable-diffusion-v1
的文件夾中,並將其標記為model.ckpt
。在下面的YOUR_MODEL_PATH/ldm
上替換您的系統中的路徑,以將權重輸送到Docker映像中。
docker run -e ENABLE_STABLE_DIFFUSION= " 1 "
-e DISABLE_DALLE_MEGA= " 1 "
-e DISABLE_GLID3XL= " 1 "
-p 51005:51005
-it
-v YOUR_MODEL_PATH/ldm:/dalle/stable-diffusion/models/ldm/
-v $HOME /.cache:/home/dalle/.cache
--gpus all
jinaai/dalle-flow
您應該在運行後像以下內容一樣看到屏幕:
請注意,與本地運行不同,在Docker內部運行可能會提供更少的生動進度鍵,顏色日誌和打印。這是由於碼頭容器中終端的局限性。它不會影響實際用法。
本地運行需要一些手動步驟,但通常更容易調試。
mkdir dalle && cd dalle
git clone https://github.com/jina-ai/dalle-flow.git
git clone https://github.com/jina-ai/SwinIR.git
git clone --branch v0.0.15 https://github.com/AmericanPresidentJimmyCarter/stable-diffusion.git
git clone https://github.com/CompVis/latent-diffusion.git
git clone https://github.com/jina-ai/glid-3-xl.git
git clone https://github.com/timojl/clipseg.git
您應該具有以下文件夾結構:
dalle/
|
|-- Real-ESRGAN/
|-- SwinIR/
|-- clipseg/
|-- dalle-flow/
|-- glid-3-xl/
|-- latent-diffusion/
|-- stable-diffusion/
cd dalle-flow
python3 -m virtualenv env
source env/bin/activate && cd -
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116
pip install numpy tqdm pytorch_lightning einops numpy omegaconf
pip install https://github.com/crowsonkb/k-diffusion/archive/master.zip
pip install git+https://github.com/AmericanPresidentJimmyCarter/[email protected]
pip install basicsr facexlib gfpgan
pip install realesrgan
pip install https://github.com/AmericanPresidentJimmyCarter/xformers-builds/raw/master/cu116/xformers-0.0.14.dev0-cp310-cp310-linux_x86_64.whl &&
cd latent-diffusion && pip install -e . && cd -
cd stable-diffusion && pip install -e . && cd -
cd SwinIR && pip install -e . && cd -
cd glid-3-xl && pip install -e . && cd -
cd clipseg && pip install -e . && cd -
如果您使用的話,我們需要下載幾個型號:GLID-3-XL:
cd glid-3-xl
wget https://dall-3.com/models/glid-3-xl/bert.pt
wget https://dall-3.com/models/glid-3-xl/kl-f8.pt
wget https://dall-3.com/models/glid-3-xl/finetune.pt
cd -
clipseg
和RealESRGAN
都要求您設置正確的緩存文件夾路徑,通常是$ HOME/。
cd dalle-flow
pip install -r requirements.txt
pip install jax~=0.3.24
現在,您在dalle-flow/
下,運行以下命令:
# Optionally disable some generative models with the following flags when
# using flow_parser.py:
# --disable-dalle-mega
# --disable-glid3xl
# --disable-swinir
# --enable-stable-diffusion
python flow_parser.py
jina flow --uses flow.tmp.yml
您應該立即看到此屏幕:
首先,下載DALL·E Mega型號和其他必要型號將需要〜8分鐘。程序運行只需大約1分鐘即可傳達成功消息。
當一切準備就緒時,您會看到:
恭喜!現在,您應該能夠運行客戶端。
您可以根據需要修改和擴展服務器流量,例如更改模型,添加持久性,甚至自動啟動到Instagram/opensea。使用Jina和Docarray,您可以輕鬆地製作dall·e Flow Cloud-native並準備生產。
為了減少VRAM的使用情況,您可以將CLIP-as-service
用作外部執行程序,可在grpcs://api.clip.jina.ai:2096
。
首先,確保您從控制台網站或CLI創建了一個訪問令牌,如下
jina auth token create < name of PAT > -e < expiration days >
然後,您需要從flow.yml
更改執行者相關的配置( host
, port
, external
, tls
和grpc_metadata
)。
...
- name : clip_encoder
uses : jinahub+docker://CLIPTorchEncoder/latest-gpu
host : ' api.clip.jina.ai '
port : 2096
tls : true
external : true
grpc_metadata :
authorization : " <your access token> "
needs : [gateway]
...
- name : rerank
uses : jinahub+docker://CLIPTorchEncoder/latest-gpu
host : ' api.clip.jina.ai '
port : 2096
uses_requests :
' / ' : rank
tls : true
external : true
grpc_metadata :
authorization : " <your access token> "
needs : [dalle, diffusion]
您也可以使用flow_parser.py
自動生成並使用CLIP-as-service
作為外部執行程序來生成和運行流程:
python flow_parser.py --cas-token " <your access token>'
jina flow --uses flow.tmp.yml
配x grpc_metadata
僅在Jinav3.11.0
之後可用。如果您使用的是舊版本,請升級到最新版本。
現在,您可以在流中使用免費的CLIP-as-service
。
DALL·E流由Jina AI支持,並在Apache-2.0下獲得許可。我們正在積極僱用AI工程師,解決方案工程師,以開放源代碼構建下一個神經搜索生態系統。