A project to create children's stories using the latest in generative AI. The development is broken down into episodes, and each episode has its own branch, as well as a PR to the main branch.
Episodes:
To get started, you'll need to have the following on your machine:
Clone the repository and run the commands listed below.
Install the node dependencies:
npm ci
Initialize the ComfyUI project dependency:
npm run init:comfy
Initialize a Conda environment for ComfyUI and install its dependencies:
cd comfy-ui-headless/src
conda create --name childrens-stories-ai-comfy python=3.10.9
conda activate childrens-stories-ai-comfy
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu118 xformers
pip install -r requirements.txt
The deployment is done using the open-source IaC tool Pulumi.
There are multiple ways to deploy, but the easiest I found is an S3 bucket and the Pulumi CLI. Log in to your AWS account and create an S3 bucket to store the Pulumi state. Also, make sure you have access to your bucket from your local terminal through the AWS CLI.
Use the bucket as the Pulumi state store:
pulumi login s3://your-bucket-name
Navigate to the pulumi/comfy-ui-headless
directory.
Create your own Pulumi stack:
pulumi stack init <YOUR_STACK_NAME>
Copy the config
section of the Pulumi.dev-comfy-ui-headless.yaml
file into your own stack config.
Deploy the stack by running:
pulumi up
Repeat the process for the Pulumi.dev-childrens-stories.yaml
stack file in the pulumi/childrens-stories
directory, and update the config
section values as needed.
The childrens-stories stack has the following dependencies:
childrens-stories:keyPairName
- Create a Key Pair in your AWS EC2 console and set set the name as the value for this stack config variable.
The childrens-stories stack has the following secret dependencies:
childrens-stories:apiKey
- Any random string will do the job or even an empty string.childrens-stories:vpcId
- This is the VPC ID of your AWS account.
Example commands:
pulumi config set --secret childrens-books:apiKey yourSecretApiKey
pulumi config set --secret childrens-books:vpcId vpc-YOUR-VPC-ID
This solution is designed to run on AWS and expects certain configurations to be present in your account. Please follow the steps below to get up and running.
If you don’t already have one, you should create an AWS account. Ideally, you would sign up through an offer that gives you free credits, but I haven’t found any recently.
We also need an IAM user with programmatic access. If you don’t know what you’re doing, just attach the AdministratorAccess
policy directly, and you should be good to go.
We're using g4dn.xlarge
instances for inference, which need 4 vCPU per instance, but the quota should be increased to at least 8 vCPU so that we can see the autoscaling in action between 0 and 2 instances.
The limit is called Running On-Demand G and VT instances, and you can check your current limit on your service quotas dashboard.
For more information about quota increases, click here.
If you're going to use your own virtual private cloud (VPC), make sure to tag your public subnets with key: Tier
and value: Public
.
If you don't have your own, there's a default VPC in the account anyway, so we can simply use that. Go to the VPC dashboard, click Subnets in the menu, and tag your subnets with the key: Tier
and value: Public
.