Manusia-in-loop ? alur kerja untuk membuat gambar HD dari teks
Dall · E Flow adalah alur kerja interaktif untuk menghasilkan gambar definisi tinggi dari Prompt Teks. Pertama, ia memanfaatkan Dall · E-Mega, Glid-3 XL, dan difusi stabil untuk menghasilkan kandidat gambar, dan kemudian memanggil clip-as-service untuk memberi peringkat kandidat WRT prompt. Kandidat yang disukai diumpankan ke Glid-3 XL untuk difusi, yang sering memperkaya tekstur dan latar belakang. Akhirnya, kandidat ditingkatkan menjadi 1024x1024 melalui Swinir.
Dall · E Flow dibangun dengan Jina dalam arsitektur klien-server, yang memberikan skalabilitas tinggi, streaming non-blocking, dan antarmuka pythonic modern. Klien dapat berinteraksi dengan server melalui GRPC/WebSocket/HTTP dengan TLS.
Mengapa manusia-in-loop? Seni generatif adalah proses kreatif. Sementara kemajuan terbaru dari Dall · e melepaskan kreativitas orang, memiliki output-output-output tunggal UX/UI mengunci imajinasi ke satu kemungkinan, yang buruk tidak peduli seberapa baik hasil tunggal ini. Aliran Dall · E adalah alternatif dari satu-liner, dengan memformalkan seni generatif sebagai prosedur berulang.
Dall · E Alur berada dalam arsitektur klien-server.
jina >= v3.11.0
as-serst grpcs://api.clip.jina.ai:2096
Lihat Gunakan Clip-as-Service untuk lebih jelasnya.flow_parser.py
.grpcs://dalle-flow.dev.jina.ai
. Semua koneksi sekarang dengan enkripsi TLS, harap buka kembali notebook di Google Colab.p2.x8large
.ViT-L/14@336px
dari clip-as-service, steps 100->200
.Menggunakan klien sangat mudah. Langkah -langkah berikut paling baik dijalankan di Jupyter Notebook atau Google Colab.
Anda perlu menginstal Docarray dan Jina terlebih dahulu:
pip install " docarray[common]>=0.13.5 " jina
Kami telah menyediakan server demo untuk Anda mainkan:
️ Karena permintaan besar -besaran, server kami mungkin menunda respons. Namun kami sangat percaya diri menjaga uptime tetap tinggi. Anda juga dapat menggunakan server Anda sendiri dengan mengikuti instruksi di sini.
server_url = 'grpcs://dalle-flow.dev.jina.ai'
Sekarang mari kita tentukan prompt:
prompt = 'an oil painting of a humanoid robot playing chess in the style of Matisse'
Mari kita kirimkan ke server dan visualisasikan hasilnya:
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 )
Di sini kami menghasilkan 24 kandidat, 8 dari Dalle-Mega, 8 dari Glid3 XL, dan 8 dari difusi stabil, ini sebagaimana didefinisikan dalam num_images
, yang membutuhkan waktu sekitar ~ 2 menit. Anda dapat menggunakan nilai yang lebih kecil jika terlalu lama untuk Anda.
24 kandidat diurutkan berdasarkan klip-as-service, dengan indeks- 0
sebagai kandidat terbaik yang dinilai berdasarkan klip. Tentu saja, Anda mungkin berpikir secara berbeda. Perhatikan nomor di sudut kiri atas? Pilih yang paling Anda sukai dan dapatkan tampilan yang lebih baik:
fav_id = 3
fav = da [ fav_id ]
fav . embedding = doc . embedding
fav . display ()
Sekarang mari kita kirimkan kandidat yang dipilih ke server untuk difusi.
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 )
Ini akan memberikan 36 gambar berdasarkan gambar yang dipilih. Anda dapat mengizinkan model untuk lebih berimprovisasi dengan memberikan nilai skip_rate
yang hampir nol, atau nilai yang hampir satu untuk memaksa kedekatannya dengan gambar yang diberikan. Seluruh prosedur memakan waktu sekitar 2 menit.
Pilih gambar yang paling Anda sukai, dan lihat lebih dekat:
dfav_id = 34
fav = diffused [ dfav_id ]
fav . display ()
Akhirnya, kirim ke server untuk langkah terakhir: naik ke 1024 x 1024px.
fav = fav . post ( f' { server_url } /upscale' )
fav . display ()
Itu saja! Itu satu -satunya . Jika tidak puas, silakan ulangi prosedur ini.
BTW, DocArray adalah struktur data yang kuat dan mudah digunakan untuk data yang tidak terstruktur. Ini sangat produktif bagi para ilmuwan data yang bekerja dalam domain lintas/multi-modal. Untuk mempelajari lebih lanjut tentang Docarray, silakan periksa dokumen.
Anda dapat meng -host server Anda sendiri dengan mengikuti instruksi di bawah ini.
Dall · E Alur membutuhkan satu GPU dengan 21GB VRAM pada puncaknya. Semua layanan diperas ke dalam GPU yang satu ini, ini termasuk (kira -kira)
config.yml
, 512x512)Trik yang masuk akal berikut dapat digunakan untuk mengurangi VRAM lebih lanjut:
Ini membutuhkan setidaknya 50GB ruang kosong di hard drive, sebagian besar untuk mengunduh model pretrained.
Diperlukan internet berkecepatan tinggi. Internet yang lambat/tidak stabil dapat membuat batas waktu yang membuat frustrasi saat mengunduh model.
Lingkungan khusus CPU tidak diuji dan kemungkinan tidak akan berhasil. Google Colab kemungkinan melempar OOM karena itu juga tidak akan berhasil.
Jika Anda telah menginstal Jina, diagram alur di atas dapat dihasilkan melalui:
# pip install jina
jina export flowchart flow.yml flow.svg
Jika Anda ingin menggunakan difusi yang stabil, pertama -tama Anda harus mendaftarkan akun di situs web Huggingface dan menyetujui syarat dan ketentuan untuk model tersebut. Setelah masuk, Anda dapat menemukan versi model yang diperlukan dengan pergi ke sini:
Compvis / sd-v1-5-inpainting.ckpt
Di bawah bagian Unduh Bobot , klik tautan untuk sd-v1-x.ckpt
. Bobot terbaru pada saat penulisan adalah sd-v1-5.ckpt
.
Pengguna Docker : Masukkan file ini ke dalam folder bernama ldm/stable-diffusion-v1
dan ganti namanya model.ckpt
. Ikuti instruksi di bawah ini dengan hati -hati karena SD tidak diaktifkan secara default.
Pengguna Asli : Masukkan file ini ke dalam dalle/stable-diffusion/models/ldm/stable-diffusion-v1/model.ckpt
Setelah menyelesaikan sisa langkah di bawah "Run Natively". Ikuti instruksi di bawah ini dengan hati -hati karena SD tidak diaktifkan secara default.
Kami telah menyediakan gambar Docker prebuilt yang dapat ditarik secara langsung.
docker pull jinaai/dalle-flow:latest
Kami telah menyediakan DockerFile yang memungkinkan Anda menjalankan server di luar kotak.
DockerFile kami menggunakan CUDA 11.6 sebagai gambar dasar, Anda mungkin ingin menyesuaikannya sesuai dengan sistem Anda.
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 .
Bangunan ini akan memakan waktu 10 menit dengan kecepatan internet rata -rata, yang menghasilkan gambar Docker 18GB.
Untuk menjalankannya, cukup lakukan:
docker run -p 51005:51005
-it
-v $HOME /.cache:/home/dalle/.cache
--gpus all
jinaai/dalle-flow
Atau, Anda juga dapat menjalankan dengan beberapa alur kerja yang diaktifkan atau dinonaktifkan untuk mencegah kecelakaan di luar memori. Untuk melakukan itu, lulus salah satu variabel lingkungan ini:
DISABLE_DALLE_MEGA
DISABLE_GLID3XL
DISABLE_SWINIR
ENABLE_STABLE_DIFFUSION
ENABLE_CLIPSEG
ENABLE_REALESRGAN
Misalnya, jika Anda ingin menonaktifkan alur kerja GLID3XL, jalankan:
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
menghindari pengunduhan model berulang pada setiap pelabuhan Docker.-p 51005:51005
adalah pelabuhan publik host Anda. Pastikan orang dapat mengakses port ini jika Anda melayani di depan umum. Par kedua dari itu adalah port yang didefinisikan dalam flow.yml.ENABLE_STABLE_DIFFUSION
.ENABLE_CLIPSEG
.ENABLE_REALESRGAN
. Difusi yang stabil hanya dapat diaktifkan jika Anda telah mengunduh bobot dan membuatnya tersedia sebagai volume virtual sambil mengaktifkan bendera lingkungan ( ENABLE_STABLE_DIFFUSION
) untuk SD .
Anda seharusnya sebelumnya memasukkan bobot ke dalam folder bernama ldm/stable-diffusion-v1
dan memberi label mereka model.ckpt
. Ganti YOUR_MODEL_PATH/ldm
di bawah ini dengan jalur pada sistem Anda sendiri untuk menyalurkan bobot ke dalam gambar 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
Anda harus melihat layar seperti mengikuti setelah berjalan:
Perhatikan bahwa tidak seperti berjalan secara asli, berjalan di dalam Docker dapat memberikan progresbar yang lebih jelas, log warna, dan cetakan. Hal ini disebabkan oleh keterbatasan terminal dalam wadah Docker. Itu tidak mempengaruhi penggunaan yang sebenarnya.
Berlari secara asli membutuhkan beberapa langkah manual, tetapi seringkali lebih mudah untuk debug.
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
Anda harus memiliki struktur folder berikut:
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 -
Ada beberapa model yang perlu kami unduh untuk GLID-3-XL jika Anda menggunakannya:
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 -
Baik clipseg
dan RealESRGAN
mengharuskan Anda untuk mengatur jalur folder cache yang benar, biasanya sesuatu seperti $ home/.
cd dalle-flow
pip install -r requirements.txt
pip install jax~=0.3.24
Sekarang Anda berada di bawah dalle-flow/
, jalankan perintah berikut:
# 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
Anda harus segera melihat layar ini:
Pada awal pertama akan memakan waktu ~ 8 menit untuk mengunduh model Dall · E Mega dan model yang diperlukan lainnya. Berjalan seharusnya hanya memakan waktu ~ 1 menit untuk mencapai pesan keberhasilan.
Saat semuanya siap, Anda akan melihat:
Selamat! Sekarang Anda harus dapat menjalankan klien.
Anda dapat memodifikasi dan memperluas aliran server sesuka Anda, misalnya mengubah model, menambahkan kegigihan, atau bahkan memposting otomatis ke Instagram/OpenSea. Dengan Jina dan Docarray, Anda dapat dengan mudah membuat dall · e aliran cloud-asli dan siap untuk diproduksi.
Untuk mengurangi penggunaan VRAM, Anda dapat menggunakan CLIP-as-service
sebagai pelaksana eksternal yang tersedia secara bebas di grpcs://api.clip.jina.ai:2096
.
Pertama, pastikan Anda telah membuat token akses dari situs web konsol, atau CLI sebagai berikut
jina auth token create < name of PAT > -e < expiration days >
Kemudian, Anda perlu mengubah konfigurasi terkait pelaksana ( host
, port
, external
, tls
dan grpc_metadata
) dari flow.yml
.
...
- 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]
Anda juga dapat menggunakan flow_parser.py
untuk secara otomatis menghasilkan dan menjalankan aliran dengan menggunakan CLIP-as-service
sebagai pelaksana eksternal:
python flow_parser.py --cas-token " <your access token>'
jina flow --uses flow.tmp.yml
️ grpc_metadata
hanya tersedia setelah Jinav3.11.0
. Jika Anda menggunakan versi yang lebih lama, silakan tingkatkan ke versi terbaru.
Sekarang, Anda dapat menggunakan CLIP-as-service
gratis dalam aliran Anda.
Dall · E Flow didukung oleh Jina AI dan dilisensikan di bawah Apache-2.0. Kami secara aktif mempekerjakan insinyur AI, insinyur solusi untuk membangun ekosistem pencarian saraf berikutnya dalam sumber terbuka.