인간의 루프 ? 텍스트에서 HD 이미지를 만들기위한 워크 플로
Dall · E Flow는 텍스트 프롬프트에서 고화질 이미지를 생성하기위한 대화식 워크 플로입니다. 먼저, Dall · e-Mega, GLID-3 XL 및 안정적인 확산을 활용하여 이미지 후보를 생성 한 다음 클립-서비스를 호출하여 후보자가 프롬프트를 순위에 올랐습니다. 선호되는 후보는 확산을 위해 GLID-3 XL에 공급되며, 이는 종종 질감과 배경을 풍부하게 만듭니다. 마지막으로 후보자는 Swinir를 통해 1024x1024로 고급됩니다.
Dall · e 흐름은 클라이언트-서버 아키텍처에서 Jina와 함께 구축되어 확장 성, 비 블로킹 스트리밍 및 최신 Pythonic 인터페이스를 제공합니다. 클라이언트는 TLS를 사용하여 GRPC/WebSocket/HTTP를 통해 서버와 상호 작용할 수 있습니다.
왜 인간의 루프인가? 생성 예술은 창의적인 과정입니다. Dall · e의 최근 발전은 사람들의 창의성을 불러 일으키지 만, 단일 프롬프트-싱글 출력 UX/UI를 갖는 것은 상상력을 단일 가능성에 잠그는 것입니다. Dall · e 흐름은 생성 예술을 반복적 인 절차로 공식화함으로써 1 라이너의 대안입니다.
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
우리는 당신이 플레이 할 수있는 데모 서버를 제공했습니다.
켈 대규모 요청으로 인해 서버가 응답이 지연 될 수 있습니다. 그러나 우리는 가동 시간을 높게 유지할 것이라고 확신 합니다. 여기에서 명령에 따라 자신의 서버를 배포 할 수도 있습니다.
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 명, Glid3 XL에서 8 명, 안정 확산에서 8 개를 생성합니다. 이는 num_images
에 정의되어 약 ~ 2 분이 걸립니다. 너무 길면 더 작은 값을 사용할 수 있습니다.
24 명의 후보자는 클립 서비스로 정렬되며 인덱스 0
은 클립으로 판단 된 최고의 후보자입니다. 물론, 당신은 다르게 생각할 수 있습니다. 왼쪽 상단 코너의 번호를 주목하십니까? 가장 좋아하는 것을 선택하고 더 나은 견해를 얻으십시오.
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
거의 0 값을 제공하거나 주어진 이미지와의 친밀감을 강요하기 위해 거의 1 값을 제공함으로써 모델이 더욱 발전 할 수 있습니다. 전체 절차는 약 ~ 2 분이 걸립니다.
가장 좋아하는 이미지를 선택하고 자세히 살펴보십시오.
dfav_id = 34
fav = diffused [ dfav_id ]
fav . display ()
마지막으로 마지막 단계를 위해 서버에 제출하십시오. 1024 x 1024px로 업 스케일링하십시오.
fav = fav . post ( f' { server_url } /upscale' )
fav . display ()
그게 다야! 그것은 하나 입니다. 만족하지 않으면 절차를 반복하십시오.
BTW, Docarray는 구조화되지 않은 데이터를위한 강력하고 사용하기 쉬운 데이터 구조입니다. 교차/다중 모달 영역에서 일하는 데이터 과학자에게는 매우 생산적입니다. docarray에 대한 자세한 내용은 문서를 확인하십시오.
아래 명령에 따라 자신의 서버를 호스팅 할 수 있습니다.
Dall · e 흐름에는 21GB VRAM이 피크에 1 개의 GPU가 필요합니다. 모든 서비스는이 GPU에 압박됩니다. 여기에는 (대략)
config.yml
, 512x512의 batch_size = 4)VRAM을 추가로 줄이기 위해 다음과 같은 합리적인 트릭을 사용할 수 있습니다.
하드 드라이브에서 최소 50GB의 여유 공간이 필요하며, 주로 사기가 발생한 모델을 다운로드하기위한 것이 필요합니다.
고속 인터넷이 필요합니다. 느린/불안정한 인터넷은 모델을 다운로드 할 때 실망스러운 시간 초과를 던질 수 있습니다.
CPU 전용 환경은 테스트되지 않았으며 작동하지 않을 수 있습니다. Google Colab은 OOM을 던질 가능성이 높습니다.
Jina를 설치 한 경우 위의 흐름도는 다음을 통해 생성 할 수 있습니다.
# pip install jina
jina export flowchart flow.yml flow.svg
안정적인 확산을 사용하려면 먼저 웹 사이트 Huggingface에 계정을 등록하고 모델의 이용 약관에 동의해야합니다. 로그인 한 후 여기로 이동하여 필요한 모델 버전을 찾을 수 있습니다.
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 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 내부에서 실행되면 덜 생생한 진행 막대, 색상 로그 및 인쇄물이 제공 될 수 있습니다. 이것은 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 메가 모델 및 기타 필요한 모델을 다운로드하는 데 ~ 8 분이 걸립니다. 절차 실행은 성공 메시지에 도달하는 데 ~ 1 분 밖에 걸리지 않아야합니다.
모든 것이 준비되면 다음을 볼 수 있습니다.
축하해요! 이제 클라이언트를 실행할 수 있어야합니다.
예를 들어 모델 변경, 끈기를 추가하거나 Instagram/Opensea에 자동 포스트를 추가하는 데 원하는대로 서버 흐름을 수정하고 확장 할 수 있습니다. Jina와 Docarray를 사용하면 Dall · e 흐름 구름 신용을 쉽게 만들고 생산 준비를 할 수 있습니다.
VRAM의 사용을 줄이기 위해 CLIP-as-service
grpcs://api.clip.jina.ai:2096
에서 자유롭게 사용할 수있는 외부 집행자로 사용할 수 있습니다.
먼저 Console 웹 사이트 또는 CLI에서 액세스 토큰을 다음과 같이 생성했는지 확인하십시오.
jina auth token create < name of PAT > -e < expiration days >
그런 다음 flow.yml
에서 Executor 관련 구성 ( 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
켈 grpc_metadata
는 Jinav3.11.0
이후에만 사용할 수 있습니다. 이전 버전을 사용하는 경우 최신 버전으로 업그레이드하십시오.
이제 흐름에서 무료 CLIP-as-service
사용할 수 있습니다.
Dall · E 흐름은 Jina AI에 의해 뒷받침되고 Apache-2.0에 따라 라이센스가 부여됩니다. 우리는 AI 엔지니어, 솔루션 엔지니어를 적극적으로 고용하여 Open-Source에서 다음 신경 검색 생태계를 구축하고 있습니다.