Build Your Own Stable Diffusion API - Deploy It as a Service
Table of Contents
- Introduction
- Setting Up Stable Diffusion API
2.1. Installing the Diffusers Library
2.2. Setting Environmental Variables
2.3. Running the Diffusers API
- Accessing the Diffusers API
3.1. Accessing the API Documentation
3.2. Making a Text to Image API Call
3.3. Base64 Encoding and Decoding
- Demo: Using the Diffusers API on External Machine
- Conclusion
Setting Up Stable Diffusion API
Are You interested in using Stable Diffusion API within your own application? If so, there are several ways to implement it, with the preferred method being the use of an API service. In this tutorial, we will explore the easiest way to Create a Stable Diffusion API using the diffusers library. This library, created by Abhishek Thakur, offers a simple user interface for various tasks such as text to image conversion and image inpainting. By following the steps outlined here, you'll be able to easily set up and host your own Stable Diffusion API.
Installing the Diffusers Library
Before we can create a Stable Diffusion API, we need to install the diffusers library. To do this, open a Google Colab notebook (or use a GPU if available) and run the command !pip install diffusers
to install the library and its dependencies. Once the installation is successful, verify it by running !diffusers --help
in the command line. This command will provide a list of available arguments for running the diffusers API.
Setting Environmental Variables
To successfully invoke the diffusers API, it is necessary to set two important environment variables. The first variable is X2_IMG_MODEL
, which specifies the model to be downloaded from the Hugging Face Model Hub. This allows you to use different models Based on your requirements. The Second variable is DEVICE
, which specifies the device you are using (e.g., GPU, CPU, MPS). Depending on your system, set these variables using the appropriate method (e.g., %env
in Google Colab, export
in MacOS).
Running the Diffusers API
Once the necessary environmental variables are set, you can start running the diffusers API. Simply enter the command !diffusers API --port YOUR_PORT_NUMBER
to start the server on your desired port. If you are running it on Google Colab without a GPU, you will need to tunnel the server using a service like ngrok or the built-in localtunnel. Tunneling allows you to access the API from external machines. Once the server is running, you will be provided with a URL that can be used to access and Interact with the API.
Accessing the Diffusers API
After setting up the Stable Diffusion API, you can access it through its API endpoint. This section will guide you on accessing the API documentation and making API calls for tasks like text to image conversion.
Accessing the API Documentation
To access the API documentation, append /docs
to the API endpoint URL. This will open the Swagger UI, a popular interface for exploring and interacting with APIs. The documentation provides details on the required request body, parameters, and available endpoints.
Making a Text to Image API Call
To make a text to image API call, you need to provide the necessary parameters in the request body. These may include a prompt, negative prompt, scheduler, image Height, image width, number of images, guidance Scale, number of steps, and seed value. Once you have provided the required parameters, execute the API call. The API will process the request and return a response containing the generated image. It is important to note that the API may take some time to generate the image, depending on the complexity of the task.
Base64 Encoding and Decoding
When you receive a response from the API, the image will be encoded in Base64 format. To decode this image, you can use various methods, including online Base64 decoding websites or programmatic approaches. By decoding the Base64 STRING, you can obtain the final image generated by the API.
Demo: Using the Diffusers API on External Machine
The Stable Diffusion API is not limited to Google Colab. It can be used on any external machine as well. In this demo, we will Show you how to make API calls using the diffusers API on an external machine. We will use a Website called "Hopscotch" to make the API request and decode the resulting image. By following these steps, you can use the diffusers API in your own applications, whether you are building a React application or developing for Android or iOS.
Conclusion
In this tutorial, we covered the process of setting up and using the Stable Diffusion API using the diffusers library. We explored the installation process, setting of environmental variables, and running the API. Additionally, we discussed accessing the API documentation and making API calls for text to image conversion. Finally, we demonstrated how the API can be used on an external machine and decoded to obtain the generated image. With this knowledge, you can harness the power of Stable Diffusion and create unique applications that leverage this cutting-edge technology.