إنسان في الحلقة ؟ سير العمل لإنشاء صور عالية الدقة من النص
Dall · E Flow هو سير عمل تفاعلي لإنشاء صور عالية الدقة من موجه النص. أولاً ، إنه يعزز Dall · e-mega ، Glid-3 XL ، وانتشار مستقر لإنشاء مرشحين للصور ، ثم يستدعي Clip-as-service لتصنيف المرشحين على المطالبة. يتم تغذية المرشح المفضل إلى Glid-3 XL للانتشار ، والذي غالبًا ما يثري الملمس والخلفية. أخيرًا ، تم رفع المرشح إلى 1024 × 1024 عبر Swinir.
تم تصميم Dall · E تدفق مع Jina في بنية خادم العميل ، مما يمنحه قابلية التوسع العالية ، وتدفق غير محظور ، وواجهة بيثون الحديثة. يمكن للعميل التفاعل مع الخادم عبر GRPC/WebSocket/HTTP مع TLS.
لماذا الإنسان في الحلقة؟ الفن التوليدي هو عملية إبداعية. على الرغم من أن التطورات الحديثة لإبداع Dall · e تطلق إبداع الناس ، فإن وجود UX/UI-out-out-out-single-single-single-outs يمنع الخيال لإمكانية واحدة ، وهو أمر سيء بغض النظر عن مدى غرابة هذه النتيجة الفردية. تدفق 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
من Clip-As-Service ، steps 100->200
.استخدام العميل سهل للغاية. من الأفضل تشغيل الخطوات التالية في دفتر Jupyter أو 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 مرشحًا ، 8 من Dalle-Mega ، 8 من Glid3 XL ، و 8 من الانتشار المستقر ، وهذا هو كما هو محدد في num_images
، والذي يستغرق حوالي دقيقتين تقريبًا. يمكنك استخدام قيمة أصغر إذا كانت طويلة جدًا بالنسبة لك.
يتم فرز المرشحين الـ 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
قيمة شبه صفرية ، أو قيمة شبه واحدة لإجباره على تقاربه على الصورة المحددة. يستغرق الإجراء بأكمله حوالي 2 دقيقة.
حدد الصورة التي تحبها أكثر ، وأعطها نظرة فاحصة:
dfav_id = 34
fav = diffused [ dfav_id ]
fav . display ()
أخيرًا ، أرسل إلى الخادم للخطوة الأخيرة: الارتفاع إلى 1024 × 1024px.
fav = fav . post ( f' { server_url } /upscale' )
fav . display ()
هذا كل شيء! هذا هو واحد . إذا لم تكن راضية ، يرجى تكرار الإجراء.
راجع للشغل ، DocArray هي بنية بيانات قوية وسهلة الاستخدام للبيانات غير المهيكلة. إنه أمر منتظم للغاية لعلماء البيانات الذين يعملون في مجال عبر/متعدد الوسائط. لمعرفة المزيد حول Docarray ، يرجى مراجعة المستندات.
يمكنك استضافة الخادم الخاص بك باتباع التعليمات أدناه.
يحتاج Dall · E Flow إلى وحدة معالجة الرسومات مع 21 جيجابايت VRAM في ذروته. يتم الضغط على جميع الخدمات في وحدة معالجة الرسومات هذا ، وهذا يشمل (تقريبًا)
config.yml
، 512x512)يمكن استخدام الحيل المعقولة التالية لتقليل VRAM:
يتطلب مساحة خالية على الأقل 50 جيجابايت على القرص الصلب ، معظمها لتنزيل النماذج المسبقة.
مطلوب الإنترنت عالية السرعة. قد يرمي الإنترنت البطيء/غير المستقر المهلة المحبطة عند تنزيل النماذج.
لم يتم اختبار بيئة وحدة المعالجة المركزية فقط ومن المحتمل ألا تعمل. من المحتمل أن تقوم 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
بعد الانتهاء من بقية الخطوات تحت "run ninial". اتبع الإرشادات أدناه بعناية لأن SD لم يتم تمكينه افتراضيًا.
لقد قدمنا صورة Docker مسبقة تم إنشاؤها يمكن سحبها مباشرة.
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 دقائق بمتوسط سرعة الإنترنت ، مما يؤدي إلى صورة مترو 18 جيجا بايت.
لتشغيله ، ببساطة افعل:
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
هو المنفذ العام المضيف الخاص بك. تأكد من أن الناس يمكنهم الوصول إلى هذا المنفذ إذا كنت تخدم علنًا. المساواة الثانية منه هو المنفذ المحدد في التدفق.ENABLE_STABLE_DIFFUSION
.ENABLE_CLIPSEG
.ENABLE_REALESRGAN
. لا يمكن تمكين الانتشار المستقر إلا إذا قمت بتنزيل الأوزان وجعلها متوفرة كمؤشر افتراضي مع تمكين العلامة البيئية ( ENABLE_STABLE_DIFFUSION
) لـ SD .
يجب أن تكون قد وضعت الأوزان سابقًا في مجلد يدعى 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
يجب أن ترى هذه الشاشة على الفور:
في البداية الأولى ، سيستغرق الأمر حوالي 8 دقائق لتنزيل نموذج Dall · E Mega والموديلات الضرورية الأخرى. يجب أن يستغرق تشغيل الإجراءات حوالي دقيقة واحدة فقط للوصول إلى رسالة النجاح.
عندما يكون كل شيء جاهزًا ، سترى:
تهاني! الآن يجب أن تكون قادرًا على تشغيل العميل.
يمكنك تعديل وتوسيع تدفق الخادم كما تريد ، على سبيل المثال تغيير النموذج ، إضافة الثبات ، أو حتى النشر التلقائي إلى Instagram/Opensea. مع Jina و DocArray ، يمكنك بسهولة جعل Dall · E Flow Cloud-Native و Gready للإنتاج.
لتقليل استخدام VRAM ، يمكنك استخدام CLIP-as-service
كمنفذ خارجي متوفر بحرية على grpcs://api.clip.jina.ai:2096
.
أولاً ، تأكد من أنك قمت بإنشاء رمز الوصول من موقع Console أو CLI على النحو التالي
jina auth token create < name of PAT > -e < expiration days >
بعد ذلك ، تحتاج إلى تغيير التكوينات المتعلقة بالمنفذ ( host
، port
، external
، tls
و grpc_metadata
) من 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]
يمكنك أيضًا استخدام 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 Flow بواسطة Jina AI ومرخصة بموجب Apache-2.0. نحن نستند بنشاط مهندسي الذكاء الاصطناعى ، ومهندسي الحلول لبناء النظام البيئي للبحث العصبي التالي في مفتوح المصدر.