Skip to content

Commit

Permalink
Add github workflow for a build with pytorch nightly.
Browse files Browse the repository at this point in the history
  • Loading branch information
comfyanonymous committed Mar 13, 2023
1 parent 83f23f8 commit c672000
Show file tree
Hide file tree
Showing 8 changed files with 156 additions and 0 deletions.
65 changes: 65 additions & 0 deletions .ci/nightly/update_windows/update.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
import pygit2
from datetime import datetime
import sys

def pull(repo, remote_name='origin', branch='master'):
for remote in repo.remotes:
if remote.name == remote_name:
remote.fetch()
remote_master_id = repo.lookup_reference('refs/remotes/origin/%s' % (branch)).target
merge_result, _ = repo.merge_analysis(remote_master_id)
# Up to date, do nothing
if merge_result & pygit2.GIT_MERGE_ANALYSIS_UP_TO_DATE:
return
# We can just fastforward
elif merge_result & pygit2.GIT_MERGE_ANALYSIS_FASTFORWARD:
repo.checkout_tree(repo.get(remote_master_id))
try:
master_ref = repo.lookup_reference('refs/heads/%s' % (branch))
master_ref.set_target(remote_master_id)
except KeyError:
repo.create_branch(branch, repo.get(remote_master_id))
repo.head.set_target(remote_master_id)
elif merge_result & pygit2.GIT_MERGE_ANALYSIS_NORMAL:
repo.merge(remote_master_id)

if repo.index.conflicts is not None:
for conflict in repo.index.conflicts:
print('Conflicts found in:', conflict[0].path)
raise AssertionError('Conflicts, ahhhhh!!')

user = repo.default_signature
tree = repo.index.write_tree()
commit = repo.create_commit('HEAD',
user,
user,
'Merge!',
tree,
[repo.head.target, remote_master_id])
# We need to do this or git CLI will think we are still merging.
repo.state_cleanup()
else:
raise AssertionError('Unknown merge analysis result')


repo = pygit2.Repository(str(sys.argv[1]))
ident = pygit2.Signature('comfyui', 'comfy@ui')
try:
print("stashing current changes")
repo.stash(ident)
except KeyError:
print("nothing to stash")
backup_branch_name = 'backup_branch_{}'.format(datetime.today().strftime('%Y-%m-%d_%H_%M_%S'))
print("creating backup branch: {}".format(backup_branch_name))
repo.branches.local.create(backup_branch_name, repo.head.peel())

print("checking out master branch")
branch = repo.lookup_branch('master')
ref = repo.lookup_reference(branch.name)
repo.checkout(ref)

print("pulling latest changes")
pull(repo)

print("Done!")

3 changes: 3 additions & 0 deletions .ci/nightly/update_windows/update_all.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
..\python_embeded\python.exe .\update.py ..\ComfyUI\
..\python_embeded\python.exe -s -m pip install --upgrade --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu118 -r ../ComfyUI/requirements.txt pygit2
pause
2 changes: 2 additions & 0 deletions .ci/nightly/update_windows/update_comfyui_only.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
..\python_embeded\python.exe .\update.py ..\ComfyUI\
pause
22 changes: 22 additions & 0 deletions .ci/nightly/windows_base_files/README_VERY_IMPORTANT.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
HOW TO RUN:

if you have a NVIDIA gpu:

run_nvidia_gpu.bat



To run it in slow CPU mode:

run_cpu.bat



IF YOU GET A RED ERROR IN THE UI MAKE SURE YOU HAVE A MODEL/CHECKPOINT IN: ComfyUI\models\checkpoints

You can download the stable diffusion 1.5 one from: https://huggingface.co/runwayml/stable-diffusion-v1-5/blob/main/v1-5-pruned-emaonly.ckpt



To update only the ComfyUI code: update\update_comfyui_only.bat
To update ComfyUI with the python dependencies: update\update_all.bat
2 changes: 2 additions & 0 deletions .ci/nightly/windows_base_files/run_cpu.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
.\python_embeded\python.exe -s ComfyUI\main.py --cpu --windows-standalone-build
pause
2 changes: 2 additions & 0 deletions .ci/nightly/windows_base_files/run_nvidia_gpu.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
.\python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build --use-pytorch-cross-attention
pause
26 changes: 26 additions & 0 deletions .ci/setup_windows_zip_nightly_pytorch.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
Invoke-WebRequest -URI https://www.python.org/ftp/python/3.10.9/python-3.10.9-embed-amd64.zip -O python_embeded.zip
Expand-Archive python_embeded.zip
rm python_embeded.zip
cd python_embeded
Add-Content -Path .\python310._pth -Value 'import site'
Invoke-WebRequest -Uri https://bootstrap.pypa.io/get-pip.py -OutFile get-pip.py
.\python.exe get-pip.py
.\python.exe -s -m pip install torch torchvision torchaudio --pre --extra-index-url https://download.pytorch.org/whl/nightly/cu118 -r ../ComfyUI/requirements.txt pygit2
"../ComfyUI`n" + (Get-Content .\python310._pth -Raw) | Set-Content .\python310._pth
cd ..


mkdir ComfyUI_windows_portable
mv python_embeded ComfyUI_windows_portable_nightly_pytorch
mv ComfyUI_copy ComfyUI_windows_portable_nightly_pytorch/ComfyUI

cd ComfyUI_windows_portable_nightly_pytorch

mkdir update
cp ComfyUI/.ci/nightly/update_windows/* ./update/
cp ComfyUI/.ci/nightly/windows_base_files/* ./

cd ..

& "C:\Program Files\7-Zip\7z.exe" a -t7z -m0=lzma -mx=8 -mfb=64 -md=32m -ms=on ComfyUI_windows_portable_nightly_pytorch.7z ComfyUI_windows_portable_nightly_pytorch
mv ComfyUI_windows_portable_nightly_pytorch.7z ComfyUI/ComfyUI_windows_portable_nvidia_or_cpu_nightly_pytorch.7z
34 changes: 34 additions & 0 deletions .github/workflows/windows_release_nightly_pytorch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: "Windows Release Nightly pytorch"

on:
workflow_dispatch:
# push:
# branches:
# - master

jobs:
build:
permissions:
contents: "write"
packages: "write"
pull-requests: "read"
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0

- run: |
cd ..
cp ComfyUI/.ci/setup_windows_zip_nightly_pytorch.ps1 ./
cp -r ComfyUI ComfyUI_copy
.\setup_windows_zip_nightly_pytorch.ps1
ls
- name: Upload binaries to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ComfyUI_windows_portable_nvidia_or_cpu_nightly_pytorch.7z
tag: "latest"
overwrite: true

0 comments on commit c672000

Please sign in to comment.