Seseorang juga dapat menghasilkan kode Python yang dapat dijalankan langsung dari konfigurasi:
from discoart . config import export_python
export_python ( da )
Jika Anda adalah pengguna Google Colab tingkat gratis, satu hal yang mengganggu adalah hilangnya sesi dari waktu ke waktu. Atau terkadang Anda menghentikan proses lebih awal karena gambar pertama tidak cukup bagus, dan interupsi keyboard akan mencegah .create()
mengembalikan hasil apa pun. Apa pun kasusnya, Anda dapat dengan mudah memulihkan hasilnya dengan menarik ID sesi terakhir.
Temukan ID sesi. Itu muncul di atas gambar.
Tarik hasilnya melalui ID tersebut di mesin mana pun kapan saja , tidak harus di Google Colab:
from docarray import DocumentArray
da = DocumentArray . pull ( 'discoart-3205998582' )
Pertimbangkan Dokumen sebagai data mandiri dengan konfigurasi dan gambar, seseorang dapat menggunakannya sebagai status awal untuk proses selanjutnya. .tags
akan digunakan sebagai parameter awal; .uri
jika disajikan akan digunakan sebagai gambar awal.
from discoart import create
from docarray import DocumentArray
da = DocumentArray . pull ( 'discoart-3205998582' )
create (
init_document = da [ 0 ],
cut_ic_pow = 0.5 ,
tv_scale = 600 ,
cut_overview = '[12]*1000' ,
cut_innercut = '[12]*1000' ,
use_secondary_model = False ,
)
Jika Anda hanya ingin menginisialisasi dari ID DocArray yang dikenal, cukup:
from discoart import create
create ( init_document = 'discoart-3205998582' )
Anda dapat mengatur variabel lingkungan untuk mengontrol perilaku meta DiscoArt. Variabel lingkungan harus disetel sebelum mengimpor DiscoArt, baik dalam Bash atau Python melalui os.environ
.
DISCOART_LOG_LEVEL= ' DEBUG ' # more verbose logs
DISCOART_OPTOUT_CLOUD_BACKUP= ' 1 ' # opt-out from cloud backup
DISCOART_DISABLE_IPYTHON= ' 1 ' # disable ipython dependency
DISCOART_DISABLE_RESULT_SUMMARY= ' 1 ' # disable result summary after the run ends
DISCOART_DEFAULT_PARAMETERS_YAML= ' path/to/your-default.yml ' # use a custom default parameters file
DISCOART_CUT_SCHEDULES_YAML= ' path/to/your-schedules.yml ' # use a custom cut schedules file
DISCOART_MODELS_YAML= ' path/to/your-models.yml ' # use a custom list of models file
DISCOART_OUTPUT_DIR= ' path/to/your-output-dir ' # use a custom output directory for all images and results
DISCOART_CACHE_DIR= ' path/to/your-cache-dir ' # use a custom cache directory for models and downloads
DISCOART_DISABLE_REMOTE_MODELS= ' 1 ' # disable the listing of diffusion models on Github, remote diffusion models allows user to use latest models without updating the codebase.
DISCOART_REMOTE_MODELS_URL= ' https://yourdomain/models.yml ' # use a custom remote URL for fetching models list
DISCOART_DISABLE_CHECK_MODEL_SHA= ' 1 ' # disable checking local model SHA matches the remote model SHA
DISCOART_DISABLE_TQDM= ' 1 ' # disable tqdm progress bar on diffusion
DiscoArt menyediakan dua perintah create
dan config
yang memungkinkan Anda menjalankan DiscoArt dari CLI.
python -m discoart create my.yml
yang membuat karya seni dari file konfigurasi YAML my.yml
. Anda juga dapat melakukan:
cat config.yml | python -m discoart create
Jadi bagaimana saya bisa memiliki my.yml
saya sendiri dan seperti apa tampilannya? Itu perintah kedua:
python -m discoart config my.yml
yang membagi konfigurasi YAML default dan mengekspornya ke my.yml
. Sekarang Anda dapat memodifikasinya dan menjalankannya dengan perintah python -m discoart create
.
Jika tidak ada jalur keluaran yang ditentukan, maka python -m discoart config
akan mencetak konfigurasi default ke stdout.
Untuk mendapatkan bantuan pada suatu perintah, tambahkan --help
di akhir, misalnya:
python -m discoart create --help
usage: python -m discoart create [-h] [YAML_CONFIG_FILE]
positional arguments:
YAML_CONFIG_FILE The YAML config file to use, default is stdin.
optional arguments:
-h, --help show this help message and exit
Melayani DiscoArt sangat mudah. Cukup jalankan perintah berikut:
python -m discoart serve
Anda akan melihat:
Sekarang kirim permintaan ke server melalui curl/Javascript, misalnya
curl
-X POST http://0.0.0.0:51001/post
-H ' Content-Type: application/json '
-d ' {"execEndpoint":"/create", "parameters": {"text_prompts": ["A beautiful painting of a singular lighthouse", "yellow color scheme"]}} '
Itu saja.
Anda tentu saja dapat meneruskan semua parameter yang diterima oleh fungsi create()
di JSON.
Kita sudah tahu bahwa fungsi create
lambat bahkan pada GPU yang memerlukan waktu 10 menit untuk menyelesaikan sebuah karya seni. Artinya, setelah mengirimkan permintaan di atas, klien harus menunggu 10 menit untuk mendapatkan tanggapan. Tidak ada yang salah dengan perilaku ini mengingat semuanya berjalan secara sinkron. Namun, dalam praktiknya, klien mungkin mengharapkan kemajuan atau hasil antara di tengah-tengah daripada menunggu akhir.
/result
endpoint dirancang untuk tujuan ini. Ini akan mengembalikan hasil antara segera setelah tersedia. Yang Anda perlukan hanyalah menentukan name_docarray
dalam parameter permintaan seperti yang Anda tentukan di /create
titik akhir. Berikut ini contohnya:
Mari buat mydisco-123
dengan mengirimkan permintaan berikut ke /create
endpoint:
curl
-X POST http://0.0.0.0:51001/post
-H ' Content-Type: application/json '
-d ' {"execEndpoint":"/create", "parameters": {"name_docarray": "mydisco-123", "text_prompts": ["A beautiful painting of a singular lighthouse", "yellow color scheme"]}} '
Sekarang permintaan di atas sedang diproses di server, Anda dapat memeriksa kemajuan mydisco-123
secara berkala dengan mengirimkan permintaan berikut ke titik akhir /result
:
curl
-X POST http://0.0.0.0:51001/post
-H ' Content-Type: application/json '
-d ' {"execEndpoint":"/result", "parameters": {"name_docarray": "mydisco-123"}} '
JSON akan dikembalikan dengan kemajuan terkini, dengan gambar sebagai DataURI, kehilangan, langkah, dll. Skema JSON dari Document/DocumentArray dijelaskan di sini.
Catatan, /result
tidak akan diblokir oleh /create
berkat perutean cerdas Jina Gateway. Untuk mempelajari/memainkan lebih lanjut tentang titik akhir tersebut, Anda dapat memeriksa ReDoc atau UI Swagger yang tertanam di server.
Kirim ke /skip
, untuk melewati proses saat ini dan melanjutkan ke proses berikutnya seperti yang ditentukan dalam n_batches
:
curl
-X POST http://0.0.0.0:51001/post
-H ' Content-Type: application/json '
-d ' {"execEndpoint":"/skip"} '
Kirim ke /stop
, untuk menghentikan proses saat ini, batalkan semua proses n_batches
:
curl
-X POST http://0.0.0.0:51001/post
-H ' Content-Type: application/json '
-d ' {"execEndpoint":"/stop"} '
/create
permintaan Dimungkinkan untuk memiliki titik akhir /create
yang tidak diblokir: permintaan klien ke /create
akan segera dikembalikan, tanpa menunggu hasilnya selesai. Anda sekarang harus sepenuhnya mengandalkan /result
untuk melakukan polling terhadap hasilnya.
Untuk mengaktifkan fitur ini:
flow.yml
default ke myflow.yml
;floating: false
menjadi floating: true
di bawah bagian eksekutor discoart
;python -m discoart serve myflow.yml
Berhati-hatilah karena kecepatan permintaan kini berada di bawah kendali Anda . Artinya, jika klien mengirimkan 10 permintaan /create
dalam satu detik, maka server akan memulai 10 create()
secara paralel! Hal ini dapat dengan mudah menyebabkan OOM. Oleh karena itu, disarankan untuk mengaktifkan fitur ini hanya jika Anda yakin klien tidak mengirimkan terlalu banyak permintaan, misalnya Anda mengontrol laju permintaan klien; atau Anda menggunakan DiscoArt di belakang BFF (backend untuk frontend).
Jika Anda memiliki beberapa GPU dan ingin menjalankan beberapa instans DiscoArt secara paralel dengan memanfaatkan GPU secara multipleks waktu, Anda dapat menyalin-menempelkan file flow.yml
default dan memodifikasinya sebagai berikut:
jtype : Flow
with :
protocol : http
monitoring : true
port : 51001
port_monitoring : 51002 # prometheus monitoring port
env :
JINA_LOG_LEVEL : debug
DISCOART_DISABLE_IPYTHON : 1
DISCOART_DISABLE_RESULT_SUMMARY : 1
executors :
- name : discoart
uses : DiscoArtExecutor
env :
CUDA_VISIBLE_DEVICES : RR0:3 # change this if you have multiple GPU
replicas : 3 # change this if you have larger VRAM
- name : poller
uses : ResultPoller
Berikut replicas: 3
mengatakan pemijahan tiga instance DiscoArt, CUDA_VISIBLE_DEVICES: RR0:3
memastikan mereka menggunakan tiga GPU pertama secara round-robin.
Beri nama sebagai myflow.yml
lalu jalankan
python -m discoart serve myflow.yml
Berkat Jina, ada banyak hal yang bisa kamu sesuaikan! Anda dapat mengubah nomor port; mengubah protokol ke gRPC/Websockets; tambahkan enkripsi TLS; mengaktifkan/menonaktifkan pemantauan Prometheus; Anda juga dapat mengekspornya ke paket penerapan Kubernetes hanya melalui:
jina export kubernetes myflow.yml
Untuk fitur lebih lanjut dan konfigurasi YAML, silakan lihat dokumen Jina.
Cara beralih dari gateway HTTP ke gRPC sangatlah mudah:
jtype : Flow
with :
protocol : grpc
...
lalu restart servernya.
Ada beberapa keuntungan menggunakan gateway gRPC:
Secara umum, jika Anda menggunakan server DiscoArt di belakang BFF (backend untuk frontend), atau server DiscoArt Anda tidak secara langsung melayani lalu lintas HTTP dari pengguna akhir, maka Anda harus menggunakan protokol gRPC.
Untuk berkomunikasi dengan server gRPC DiscoArt, seseorang dapat menggunakan Klien Jina:
# !pip install jina
from jina import Client
c = Client ( host = 'grpc://0.0.0.0:51001' )
da = c . post (
'/create' ,
parameters = {
'name_docarray' : 'mydisco-123' ,
'text_prompts' : [
'A beautiful painting of a singular lighthouse' ,
'yellow color scheme' ,
],
},
)
# check intermediate results
da = c . post ( '/result' , parameters = { 'name_docarray' : 'mydisco-123' })
Untuk menggunakan Dokumen/DocumentArray yang ada sebagai Dokumen awal untuk create
:
from jina import Client
c = Client ( host = 'grpc://0.0.0.0:51001' )
old_da = create (...)
da = c . post (
'/create' ,
old_da , # this can be a DocumentArray or a single Document
parameters = {
'width_height' : [ 1024 , 768 ],
},
)
Ini sama dengan menjalankan create(init_document=old_da, width_height=[1024, 768])
di server. Catatan:
init_document
.init_document
adalah DocumentArray, maka Dokumen pertama dalam array akan digunakan sebagai Dokumen init.Meskipun tidak disarankan, Google Colab juga dapat digunakan untuk menghosting server DiscoArt. Silakan lihat tutorial berikut:
Kami menyediakan image Docker bawaan untuk menjalankan DiscoArt secara langsung. Untuk memperbarui image Docker ke versi terbaru:
docker pull jinaai/discoart:latest
Titik masuk default adalah memulai notebook Jupyter
# docker build . -t jinaai/discoart # if you want to build yourself
docker run -p 51000:8888 -v $( pwd ) :/home/jovyan/ -v $HOME /.cache:/root/.cache --gpus all jinaai/discoart
Sekarang Anda dapat mengunjungi http://127.0.0.1:51000
untuk mengakses notebook
Anda dapat menggunakannya di Subsistem Windows untuk Linux (WSL), Periksa panduan resminya di sini.
# Make sure you install Windows 11 or Windows 10, version 21H2
docker run -p 8888:8888 -v $HOME /.cache:/root/.cache --gpus all jinaai/discoart
# docker build . -t jinaai/discoart # if you want to build yourself
docker run --entrypoint " python " -p 51001:51001 -v $( pwd ) :/home/jovyan/ -v $HOME /.cache:/root/.cache --gpus all jinaai/discoart -m discoart serve
Server DiscoArt Anda sekarang berjalan di http://127.0.0.1:51001
.
Gambar Docker dibuat pada setiap rilis, sehingga seseorang dapat menguncinya ke versi tertentu, misalnya 0.5.1
:
docker run -p 51000:8888 -v $( pwd ) :/home/jovyan/ -v $HOME /.cache:/root/.cache --gpus all jinaai/discoart:0.5.1
Berikutnya adalah membuat.
? Jika Anda sudah menjadi pengguna DD : Anda siap berangkat! Tidak ada pembelajaran tambahan, DiscoArt menghormati semantik parameter yang sama seperti DD5.6. Jadi, keluarkan saja kreativitas Anda! Baca lebih lanjut tentang perbedaannya di sini.
Anda selalu dapat melakukannya from discoart import cheatsheet; cheatsheet()
untuk memeriksa semua parameter baru/dimodifikasi.
? Jika Anda adalah DALL·E Flow atau pengguna baru : Anda mungkin ingin mengambil langkah demi langkah, karena Disco Diffusion bekerja dengan cara yang sangat berbeda dari DALL·E. Ini jauh lebih maju dan kuat: misalnya Disco Diffusion dapat mengambil perintah teks yang berbobot & terstruktur; itu dapat diinisialisasi dari gambar dengan noise yang terkontrol; dan masih banyak lagi parameter yang dapat diubah. Perintah yang tidak sabar seperti "armchair avocado"
tidak akan memberi Anda apa-apa selain kebingungan dan frustrasi. Saya sangat menyarankan Anda untuk memeriksa sumber daya berikut sebelum mencoba perintah Anda sendiri:
DiscoArt didukung oleh Jina AI dan dilisensikan di bawah Lisensi MIT. Kami secara aktif merekrut insinyur AI, insinyur solusi untuk membangun ekosistem pencarian saraf berikutnya dalam sumber terbuka.