Go back

Step by step guide to setup Stable Diffusion on GCP

This section describes how to launch and connect to Techlatest Stable Diffusion with API and AUTOMATIC1111 Web Interface in a Google Compute environment using the available Cloud Launcher offering.

  1. Open Techlatest Stable Diffusion with API & AUTOMATIC1111 listing on GCP Marketplace
  2. Click Launch. /img/gcp/stable-diffusion/marketplace-2.png
  • It will take you to the agreement page. On this page, you can change the project from the project selector on top navigator bar as shown in the below screenshot.

  • Accept the Terms and agreements by ticking the checkbox and clicking on the AGREE button. /img/common/gcp_agreement_page.png

  • It will show you the successfully agreed popup page. Click on Deploy. /img/common/gcp_agreement_accept_page.png

  • Select a zone where you want to launch the VM. (such as us-east1-)

  • Optionally change the number of cores and amount of memory. ( This defaults to 4 vCPUs and 15 GB ram)

  • For optimal performance, Stable Diffusion requires significant processing power, which is best achieved with a GPU instance. However, if the cost of a GPU instance is prohibitive, a CPU instance with higher processing capacity may be used as an alternative.

Below are the recommended VM configuration:

  • GPU VM : NVIDIA T4 with 1 GPU with n1-standard-4 (4 vcpu 15GB memory) configuration
  • CPU VM : e2-standard-4 (4vcpu, 16gb ram)

For CPU, its the minimum spec but more cpu is preferred.

/img/gcp/stable-diffusion/gpu-instance.png

/img/gcp/stable-diffusion/cpu-instance.png

  • Optionally change the boot disk type and size. (This defaults to ‘Standard Persistent Disk’ and 60 GB respectively)
  • Select the default Networking configuration. Default Networking configuration comes with the ports 22 (for ssh), 3389 (for RDP) and 80 (for HTTP) exposed.
  • Click Deploy when you are done.
  • Techlatest Stable Diffusion with API and AUTOMATIC1111 Web Interface will begin deploying.

/img/gcp/stable-diffusion/deployed.png

  1. A summary page displays when the compute engine is successfully deployed. Click on the Instance link. It will open an overview page of virtual machine. .

/img/gcp/stable-diffusion/summary-page.png

  1. After VM launch for the first time, GPU instances will take 5-10 minutes and CPU instances will take 15-30 minutes to launch the app in the browser.

Wait for 5-10 or 15-30 minutes depending on if your VM is GPU or CPU based and then access the Stable Diffusion GUI via browser by copying the public IP of the VM from the VM’s overview page and paste it in the browser and then hit enter.

Note: Please use http and not https in the URL when accessing AUTOMATIC1111 interface in GUI, for eg. http://vm_public_ip.

/img/gcp/stable-diffusion/external-ip.png

  1. The Stable Diffusion GUI comes with lots of options and settings. The first window shows text to image page. Provide the Prompt and click on Generate button and wait till it finishes.

/img/azure/stable-diffusion/stable-diffusion-gui-2.png

  1. Output Images can be seen in the Image Browser tab. Click on Image browser and click on first page to load the images.

/img/azure/stable-diffusion/image-browser-gallery-2.png

  1. In Image Browser, click on any image to see the details of it.

/img/azure/stable-diffusion/image-browser-2.png

  1. To change any settings, go to Settings tab.

/img/azure/stable-diffusion/settings-2.png

  1. Web UI also provides you the option to add extensions. Navigate to extensions tab, go to available and select load from URL. It will list all the available extensions.

/img/azure/stable-diffusion/extensions-2.png

  1. You can also see the list of installed extensions under installed tab. /img/azure/stable-diffusion/extensions-installed.png

  2. For more information on how to use the GUI, Go to Stable Diffusion Web UI

  3. The images created from GUI are stored under /home/ubuntu/stable-diffusion/output/ directory on the VM. To access this directory, follow below steps: /img/azure/stable-diffusion/output-directory.png

  4. To access the VM’s Desktop environment, first you need to SSH to this instance. For that, On the instance page, click on the “SSH” button, select “Open in browser window”

/img/gcp/puppet-support/ssh-option.png

  1. This will open SSH window in a browser.
  2. Run below command to set the password for “ubuntu” user
sudo passwd ubuntu

/img/gcp/jupyter-python-notebook/ssh-passwd.png

  1. Now the password for ubuntu user is set, you can connect to the VM’s desktop environment from any local windows machine using RDP or linux machine using Remmina.
  2. To connect using RDP via Windows machine, first note the external IP of the VM from VM details page
  3. In the “Remote Desktop connection” wizard, paste the external ip and click connect

/img/gcp/jupyter-python-notebook/rdp.png

  1. This will connect you to the VM’s desktop environment. Provide “ubuntu” as the userid and the password set in the above step to authenticate. Click OK

/img/gcp/puppet-support/rdp-login.png

  1. Now you are connected to out of box Techlatest Stable Diffusion with API & AUTOMATIC1111 environment via Windows machines.

/img/gcp/puppet-support/rdp-desktop.png

  1. To connect using RDP via Linux machine, first note the external IP of the VM from VM details page,then from your local Linux machine, goto menu, in the search box type and select “Remmina”.

    Note: If you don’t have Remmina installed on your Linux machine, firstInstall Remmina as per your linux distribution.

/img/gcp/common/remmina-search.png

  1. In the “Remmina Remote Desktop Client” wizard, select the RDP option from dropdown and paste the external ip and click enter.

/img/gcp/common/remmina-external-ip.png

  1. This will connect you to the VM’s desktop environment. Provide “ubuntu” as the userid and the password set in the above steps to authenticate. Click OK

/img/gcp/common/remmina-rdp-login.png

  1. Now you are connected to out of box Techlatest Stable Diffusion with API & AUTOMATIC1111 environment via Linux machine.

/img/gcp/puppet-support/rdp-desktop.png

  1. From VM’s Desktop, you can access the Output Images by navigating to /home/ubuntu/stable-diffusion/outputs/ directory.

/img/azure/stable-diffusion/output-directory.png

  1. You can also access the sourcecode of the Stable Diffusion. It is available under sourcecode folder on Desktop.

/img/gcp/stable-diffusion/source-code-folder-on-desktop.png

/img/gcp/stable-diffusion/source-code.png

  1. This VM is pre-configured for Stable Diffusion with an enabled API (Application Programming Interface). To access the preinstalled API’s, follow below steps:
  • open VM’s url using http://vmip/docs. Here you can find the list of API’s.

/img/azure/stable-diffusion/docs.png

  • Search for txt2img API, then click on the arrow at the right end of the searched api line, it gives an example of a payload to send to the API. Click on the try it out button.

/img/azure/stable-diffusion/txt2imgapi.png

  • This will enable the Request Body and Execute button. Try with the below code snippet in request body and click on Execute button.

e.g

{
“prompt”: “duck flying in sky”,
“steps”: 5
}

/img/azure/stable-diffusion/execute-api.png

  • After clicing on “Execute” button, You can observe the progress in the terminal by running-
tail -f /var/log/cloud-init-output.log

/img/azure/stable-diffusion/api-logs.png

  • Once image processing is complete, in the API webconsole, it will show “200” as response code and the response field will have response in json format with image in “images:” field of json. /img/azure/stable-diffusion/response.png
  1. Please note that APIs are exposed on public internet and you must add necessary security controls to secure the API.
  2. If you want to disable the API or want to make any further configuration changes then please update line 20 and line 23 of /var/lib/cloud/scripts/per-boot/sd-per-boot.sh file as per the Stable Diffusion Wiki documentation.
sudo vi /var/lib/cloud/scripts/per-boot/sd-per-boot.sh

/img/azure/stable-diffusion/update-sd-per-boot.png

Credits:

https://github.com/CompVis/stable-diffusion.git
https://github.com/AbdBarho/stable-diffusion-webui-docker
https://github.com/AUTOMATIC1111/stable-diffusion-webui
https://github.com/Sygil-Dev/sygil-webui
https://github.com/invoke-ai/InvokeAI

Go back