GHA: use OpenVINO provider for SD (#1386) #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: lcm_dreamshaper | |
on: | |
workflow_dispatch: | |
pull_request: | |
merge_group: | |
push: | |
branches: | |
- master | |
- 'releases/**' | |
permissions: read-all # Required by https://github.com/ossf/scorecard/blob/e23b8ad91fd6a64a0a971ca4fc0a4d1650725615/docs/checks.md#token-permissions | |
concurrency: | |
# github.ref is not unique in post-commit | |
group: ${{ github.event_name == 'push' && github.run_id || github.ref }}-lcm-dreamshaper-cpp | |
cancel-in-progress: true | |
env: | |
PYTHON_VERSION: '3.9' | |
LINUX_OV_ARCHIVE_URL: https://storage.openvinotoolkit.org/repositories/openvino/packages/nightly/2025.0.0-17539-6abe2e39391/l_openvino_toolkit_ubuntu22_2025.0.0.dev20241205_x86_64.tgz | |
WINDOWS_OV_ARCHIVE_URL: https://storage.openvinotoolkit.org/repositories/openvino/packages/nightly/2025.0.0-17539-6abe2e39391/w_openvino_toolkit_windows_2025.0.0.dev20241205_x86_64.zip | |
OV_INSTALL_DIR: ${{ github.workspace }}/ov | |
jobs: | |
lcm_dreamshaper_v7_cpp-linux: | |
runs-on: ubuntu-22.04 | |
defaults: | |
run: | |
shell: bash -l {0} | |
env: | |
build_dir: ${{ github.workspace }}//build | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Download OpenVINO archive | |
run: | | |
wget ${{ env.LINUX_OV_ARCHIVE_URL}} --progress=bar:force:noscroll -O openvino_package.tar.gz | |
mkdir ${{ env.OV_INSTALL_DIR }} | |
tar -xzf openvino_package.tar.gz -C ${{ env.OV_INSTALL_DIR }} --strip-components=1 | |
- name: Setup Python ${{ env.PYTHON_VERSION }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
cache: 'pip' | |
- name: Build apps | |
run: | | |
source ${{ env.OV_INSTALL_DIR }}/setupvars.sh | |
cmake -DCMAKE_BUILD_TYPE=Release -S ./ -B ${{ env.build_dir }} | |
cmake --build ${{ env.build_dir }} --config Release --target text2image image2image inpainting heterogeneous_stable_diffusion lora_text2image py_openvino_genai --parallel | |
- name: Create virtual environment | |
run: python3 -m venv openvino_lcm_cpp | |
- name: Install python dependencies | |
run: | | |
source openvino_lcm_cpp/bin/activate | |
python -m pip install ./thirdparty/openvino_tokenizers/[transformers] --extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightly | |
python -m pip install -r ./samples/requirements.txt | |
- name: Download models | |
run: | | |
source openvino_lcm_cpp/bin/activate | |
huggingface-cli download OpenVINO/LCM_Dreamshaper_v7-int8-ov --local-dir models/lcm_dreamshaper_v7 | |
wget -O ./image.png https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png | |
wget -O ./mask_image.png https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png | |
- name: Run heterogeneous_stable_diffusion | |
run: | | |
source ${{ env.OV_INSTALL_DIR }}/setupvars.sh | |
${{ env.build_dir }}/samples/cpp/image_generation/heterogeneous_stable_diffusion ./models/lcm_dreamshaper_v7 "cyberpunk cityscape like Tokyo New York with tall buildings at dusk golden hour cinematic lighting" | |
- name: Run heterogeneous_stable_diffusion.py | |
run: | | |
source openvino_lcm_cpp/bin/activate | |
source ./ov/setupvars.sh | |
python ./samples/python/image_generation/heterogeneous_stable_diffusion.py ./models/lcm_dreamshaper_v7 "cyberpunk cityscape like Tokyo New York with tall buildings at dusk golden hour cinematic lighting" | |
env: | |
PYTHONPATH: ${{ env.build_dir }} | |
- name: Run image2image | |
run: | | |
source ./ov/setupvars.sh | |
${{ env.build_dir }}/samples/cpp/image_generation/image2image ./models/lcm_dreamshaper_v7 "cyberpunk cityscape like Tokyo New York with tall buildings at dusk golden hour cinematic lighting" ./image.png | |
- name: Run inpainting | |
run: | | |
source ./ov/setupvars.sh | |
${{ env.build_dir }}/samples/cpp/image_generation/inpainting ./models/lcm_dreamshaper_v7 "cyberpunk cityscape like Tokyo New York with tall buildings at dusk golden hour cinematic lighting" ./image.png ./mask_image.png | |
lcm_dreamshaper_v7_cpp-windows: | |
runs-on: windows-2019 | |
defaults: | |
run: | |
shell: pwsh | |
env: | |
build_dir: ${{ github.workspace }}//build | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Download OpenVINO archive | |
run: | | |
mkdir ${{ env.OV_INSTALL_DIR }} | |
pushd ${{ env.OV_INSTALL_DIR }} | |
Invoke-WebRequest "${{ env.WINDOWS_OV_ARCHIVE_URL}}" -OutFile "openvino_package.zip" | |
Expand-Archive openvino_package.zip -DestinationPath ./tmp | |
mv ./tmp/*/* . | |
popd | |
- name: Setup Python ${{ env.PYTHON_VERSION }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
cache: 'pip' | |
- name: Create virtual environment | |
run: python -m venv openvino_lcm_cpp | |
- name: Build apps | |
run: | | |
. "${{ env.OV_INSTALL_DIR }}/setupvars.ps1" | |
cmake -DCMAKE_BUILD_TYPE=Release -S ./ -B ${{ env.build_dir }} | |
cmake --build ${{ env.build_dir }} --config Release --target text2image image2image inpainting heterogeneous_stable_diffusion lora_text2image py_openvino_genai --parallel | |
- name: Install python dependencies | |
run: | | |
. "./openvino_lcm_cpp/Scripts/Activate.ps1" | |
python -m pip install ./thirdparty/openvino_tokenizers/[transformers] --extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightly | |
python -m pip install -r ./samples/requirements.txt | |
- name: Download models | |
run: | | |
. "./openvino_lcm_cpp/Scripts/Activate.ps1" | |
huggingface-cli download OpenVINO/LCM_Dreamshaper_v7-int8-ov --local-dir models/lcm_dreamshaper_v7 | |
Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png' -OutFile 'image.png' | |
Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png' -OutFile 'mask_image.png' | |
- name: Run heterogeneous_stable_diffusion | |
run: > | |
. "${{ env.OV_INSTALL_DIR }}/setupvars.ps1" | |
& "${{ env.build_dir }}/samples/cpp/image_generation/Release/heterogeneous_stable_diffusion.exe ./models/lcm_dreamshaper_v7 'cyberpunk cityscape like Tokyo New York with tall buildings at dusk golden hour cinematic lighting'" | |
- name: Run heterogeneous_stable_diffusion.py | |
run: | | |
. "./openvino_lcm_cpp/Scripts/Activate.ps1" | |
. "${{ env.OV_INSTALL_DIR }}/setupvars.ps1" | |
$env:Path += "${{ env.build_dir }}\openvino_genai" | |
python .\samples\python\image_generation\heterogeneous_stable_diffusion.py .\models\lcm_dreamshaper_v7 "cyberpunk cityscape like Tokyo New York with tall buildings at dusk golden hour cinematic lighting" | |
env: | |
PYTHONPATH: ${{ env.build_dir }} | |
- name: Run image2image.py | |
run: | | |
. "./openvino_lcm_cpp/Scripts/Activate.ps1" | |
. "${{ env.OV_INSTALL_DIR }}/setupvars.ps1" | |
$env:Path += "${{ env.build_dir }}\openvino_genai" | |
python .\samples\python\image_generation\image2image.py .\models\lcm_dreamshaper_v7 "cyberpunk cityscape like Tokyo New York with tall buildings at dusk golden hour cinematic lighting" .\image.png | |
env: | |
PYTHONPATH: ${{ env.build_dir }} | |
- name: Run inpainting.py | |
run: | | |
. "./openvino_lcm_cpp/Scripts/Activate.ps1" | |
. "${{ env.OV_INSTALL_DIR }}/setupvars.ps1" | |
$env:Path += "${{ env.build_dir }}\openvino_genai" | |
python .\samples\python\image_generation\inpainting.py .\models\lcm_dreamshaper_v7 "cyberpunk cityscape like Tokyo New York with tall buildings at dusk golden hour cinematic lighting" .\image.png .\mask_image.png | |
env: | |
PYTHONPATH: ${{ env.build_dir }} | |
Overall_Status: | |
name: ci/gha_overall_status_lcm | |
needs: [lcm_dreamshaper_v7_cpp-linux, lcm_dreamshaper_v7_cpp-windows] | |
if: ${{ always() }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check status of all jobs | |
if: >- | |
${{ | |
contains(needs.*.result, 'failure') || | |
contains(needs.*.result, 'cancelled') | |
}} | |
run: exit 1 |