Open Prompts is the dataset used to build krea.ai. The data comes from the Stability AI Discord and includes around 10M images from 2M prompts. You can use it for creating semantic search engines of prompts, training LLMs, fine-tuning image-to-text models like BLIP, or extracting insights from the data—like the most common combinations of modifiers.
Great work! If anyone’s planning to use AI generated artwork in their projects, I’ve added an image search API to Lexica, similar to Unsplash. All the images are licensed CC0 and millions more are being added every few weeks.
Been using Lexica quite a bit for prompt analysis, thanks for the work.
General browsing is heavily dominated by portraits though. I was wondering if it would be worth having a face detected flag on images so you could filter portraits.
Last month Lexica served a little over 1 billion images and the Cloudflare bill (I'm using R2 + workers) was a little over $5k. I've since gotten it down to a more reasonable amount after spending some time to re-encode the images to reduce our bandwidth usage significantly. If Lexica were running on AWS/S3 I imagine our first month's bill would be closer to $100k rather than $5k. This is only image serving, so not including costs to run the beefy CPU servers to run CLIP search, frontend, DB, backend, etc.
Why not go with a server or two or some VMs on Hetzner/Kimsufi/OVH/Netcup/BuyVM etc where they have very generous included transfer or even unmetered (BuyVM) ?
I get it that everyone wants to use the trendy newest tech (workers etc or whatever the latest is), but your bill could easily be 20% (or less) of the $5k kind of numbers you are mentioning.
I guess if those kind of numbers are just water under the bridge for you than you may as well go with the easier cloud setup/infra though.
Having used many different providers (though not all of the ones on your list), be very careful with suspiciously generous or unmetered anything. More often than not, you'll hit a soft limit where your performance will degrade and/or you'll get kicked for ToS violations.
Most apps never hit those limits, but once you get to multi-thousands/mo in cloud bills, there's benefits in pay-as-you-go billing where the provider is incentivized to let you use as much as you want to pay for.
> More often than not, you'll hit a soft limit where your performance will degrade and/or you'll get kicked for ToS violations.
Hetzner does have truly unmetered root servers, been using it myself for years. If you're doing Tor, Torrents or commercial CDN traffic, they might kick you out, but for other "normal" things, they seem to have no issues with handling it as they say they will.
What is the bandwidth like? I guess something in the order of a few 100 TB? Perhaps you can host this from a an "unmetered" server for $50 per month. Not sure how high your peak loads are though.
I already knew your site. I don’t recall where I saw it. I shared it with Victor right away because of the sheer amount of content! Insane!
In fact, I think thought for a while about how to potentially integrate it with Krea somehow. But I came up empty. If you have any ideas, please reach out via twitter!
This is fantastic. A few days ago I was checking PromptBase [0] and thought it was a really good idea. Yours just took it to the next level being free with massive amount of data.
Thanks! Prompts can be hard to create, we hope that having access to these kinds of datasets we will be able to create tools and conduct studies that help us create better images and understand better the possibilities of AI models like stable diffusion.
I have a negative emotional reaction to PromptBase. Stable diffusion is free and someone tries to make a business out of adding little value on top of it? It's not wrong or anything, I just don't like it...
This is wild to me. Now we have meta-ai that is surrounding other forms of ai, analyzing the user submitted input as well as the image output, using ai to infer intent, identify nouns etc... and yet all of this is stipulated on the initial datasets that these initial text->img robots were trained on which may or may not be a true representation of our actual culture. So we are lava/magma layering all of these approximations on top of each other and gluing them with scrambled eggs. I think this is all really cool, for the record, it's just something I have been thinking about. For art, I love it, for a self-driving vehicle, lmao.
If you enjoy thinking about how the future of this field might look like, I highly recommend watching the interview between Yannic Kilcher and Sebastian Risi (https://www.youtube.com/watch?v=_7xpGve9QEE).
I was mind-blown after hearing it. It was a long time since I didn't hear such an interesting conversation. It's crazy how Risi's ideas correlate so well with the way how complex systems emerge in nature (optimizing locally), and the idea of self-organizing systems is just amazing.
This is fantastic, thanks for publishing it. I'm glad many players in the Stable Diffusion ecosystem is striving for openness (not only of the model itself but there are also open source frontends and related tooling)
Lexica is a search engine (like krea.ai), but it doesn’t allow you to create collections or like generations.
Regarding the API, both have public APIs although I’m not sure if you can paginate through several search results using the public Lexica API. In the Krea Prompts API, you can do cursor-based pagination.
Finally, Lexica API allows you to do CLIP-based search, but with Krea we are using PostgreSQL full-text search (for now). However, the code to do CLIP search with the dataset (including reverse image search) is in the repository.
(edit: also, nor Lexica nor other search engines or similar products are offering the dataset afaik.)
Is there any effort being done in rating prompts in regard to the image the model output and/or what the user chose as being a satisfactory image?
I could (probably naively) imagine that this would be the next step in making these models even more pleasing to humans.
Or at least in creating a GPT-based "companion" model that would suggest, from an initial subpar prompt, a prompt yielding better results.
Well, we have a like + collection system at krea.ai.
We may use the data from there to train custom models. Kind of the same that MidJourney has, where they ask people to rate images in exchange for GPU hours as prizes.
One of the main things were learning from the current trajectory of large models is that this kind of supervision isn't necessary. It's better to focus on bigger models, more data, and better datasets. Models will improve faster than we can come up with clever ways to add this supervision.
The site is using Svelte + SvelteKit and I couldn’t find amazing Masonry components (like Masonic from React) that allow me to save and restore the scroll position easily. I can do it using hacky ways but there’s more important things to do.
I’m also still trying to figure out why Back Forward Cache is not working right away with my current implementation. I would make the site snappier and also address the issue you’re bringing.
Perhaps open-sourcing the code and figuring it out all together is the way…
I'm curious, I've seen a few sites like this which grab from the Stability Discord. Is there a way to quickly scrape this amount of data from a Discord server?
There’s many ways. We actually did a basic script because we didn’t want to saturate Discord servers. You know, the classic politeness rules for scrapers…
But scraping data quickly and doing a (D)DOS is almost a synonym.
Hey, was the specific Stable Diffusion version used to generate each image recorded anywhere in the dataset?
In krea.ai, it doesn't say which version of the model was used to generate each image
It appears that later versions are better in generating faces or something. Like, Stable Diffusion 1.5 vs 1.4 (I'm not sure but there's a great variability nonetheless and I wanted to know if the version of the model accounted for this)
Oh that discussion thats been going on in the last few day is so silly. The vae is hardly any kind of bottleneck. You barely gain anything by working with the latents directly
Nice. Another meta thing I would like to do, is to generate a bunch of prompts around a topic, mashed up with related or unrelated other topics. So that I can get a bunch of images and just be able to review/curate them all in one go. Does anyone know of tooling in that direction?
You can use the code in https://github.com/krea-ai/prompt-search to do so. You first want to compute the CLIP embeddings of each prompt, index them using something like K-Nearest Neighbors (so you can get search for similarities fast), and then, given an input prompt, you will be able to find other indexed prompts that share their semantics.
This is a very interesting point. It's like using Fourier Transforms/Laplace Transforms to do operations or comparisons that are way easier in those spaces.
I'm very much looking forward to how collections like this influence the second generation AI models, which will include data like this and tend to rank it highly on alt-text/clip embedding alignment.
We do not have a continuous system, the data is a mix between our own crawled generations and the dataset published by Dave Caruso (https://github.com/paperdave). With our crawler, we were able to get about 100k generations per day.
Docs here: https://lexica.art/docs