Initialize CI for code quality and testing (#256)
* Init CI * clarify cpu * style * Check scripts quality too * Drop smi for cpu tests * Run PR tests on cpu docker envs * Update .github/workflows/push_tests.yml Co-authored-by: Patrick von Platen <patrick.v.platen@gmail.com> * Try minimal python container * Print env, install stable GPU torch * Manual torch install * remove deprecated platform.dist() Co-authored-by: Patrick von Platen <patrick.v.platen@gmail.com>
This commit is contained in:
parent
bb4d605dfc
commit
11133dcca1
|
@ -0,0 +1,29 @@
|
||||||
|
name: Run code quality checks
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check_code_quality:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: "3.7"
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install .[quality]
|
||||||
|
- name: Check quality
|
||||||
|
run: |
|
||||||
|
black --check --preview examples tests src utils scripts
|
||||||
|
isort --check-only examples tests src utils scripts
|
||||||
|
flake8 examples tests src utils scripts
|
||||||
|
doc-builder style src/diffusers docs/source --max_len 119 --check_only --path_to_docs docs/source
|
|
@ -0,0 +1,40 @@
|
||||||
|
name: Run non-slow tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
env:
|
||||||
|
HF_HOME: /mnt/cache
|
||||||
|
OMP_NUM_THREADS: 8
|
||||||
|
MKL_NUM_THREADS: 8
|
||||||
|
PYTEST_TIMEOUT: 60
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
run_tests_cpu:
|
||||||
|
name: Diffusers tests
|
||||||
|
runs-on: [ self-hosted, docker-gpu ]
|
||||||
|
container:
|
||||||
|
image: python:3.7
|
||||||
|
options: --shm-size "16gb" --ipc host -v /mnt/cache/.cache/huggingface:/mnt/cache/
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout diffusers
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
fetch-depth: 2
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
python -m pip install torch --extra-index-url https://download.pytorch.org/whl/cpu
|
||||||
|
python -m pip install -e .[quality,test]
|
||||||
|
|
||||||
|
- name: Environment
|
||||||
|
run: |
|
||||||
|
python utils/print_env.py
|
||||||
|
|
||||||
|
- name: Run all non-slow selected tests on CPU
|
||||||
|
run: |
|
||||||
|
python -m pytest -n 2 --max-worker-restart=0 --dist=loadfile -s tests/
|
|
@ -0,0 +1,51 @@
|
||||||
|
name: Run all tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
env:
|
||||||
|
HF_HOME: /mnt/cache
|
||||||
|
OMP_NUM_THREADS: 8
|
||||||
|
MKL_NUM_THREADS: 8
|
||||||
|
PYTEST_TIMEOUT: 1000
|
||||||
|
RUN_SLOW: yes
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
run_tests_single_gpu:
|
||||||
|
name: Diffusers tests
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
machine_type: [ single-gpu ]
|
||||||
|
runs-on: [ self-hosted, docker-gpu, '${{ matrix.machine_type }}' ]
|
||||||
|
container:
|
||||||
|
image: nvcr.io/nvidia/pytorch:22.07-py3
|
||||||
|
options: --gpus 0 --shm-size "16gb" --ipc host -v /mnt/cache/.cache/huggingface:/mnt/cache/
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout diffusers
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
fetch-depth: 2
|
||||||
|
|
||||||
|
- name: NVIDIA-SMI
|
||||||
|
run: |
|
||||||
|
nvidia-smi
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
python -m pip uninstall -y torch torchvision torchtext
|
||||||
|
python -m pip install torch --extra-index-url https://download.pytorch.org/whl/cu116
|
||||||
|
python -m pip install -e .[quality,test]
|
||||||
|
python -m pip install scipy transformers
|
||||||
|
|
||||||
|
- name: Environment
|
||||||
|
run: |
|
||||||
|
python utils/print_env.py
|
||||||
|
|
||||||
|
- name: Run all (incl. slow) tests on GPU
|
||||||
|
run: |
|
||||||
|
python -m pytest -n 2 --max-worker-restart=0 --dist=loadfile -s tests/
|
|
@ -1,38 +0,0 @@
|
||||||
name: Run Tests
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ $default-branch ]
|
|
||||||
pull_request:
|
|
||||||
branches: [ $default-branch ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
python-version: ["3.8", "3.9", "3.10"]
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Set up Python ${{ matrix.python-version }}
|
|
||||||
uses: actions/setup-python@v3
|
|
||||||
with:
|
|
||||||
python-version: ${{ matrix.python-version }}
|
|
||||||
cache: 'pip' # caching pip dependencies
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
python -m pip install --upgrade pip
|
|
||||||
python -m pip install flake8 pytest
|
|
||||||
python -m pip install -e .
|
|
||||||
- name: Lint with flake8
|
|
||||||
run: |
|
|
||||||
# stop the build if there are Python syntax errors or undefined names
|
|
||||||
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
|
|
||||||
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
|
|
||||||
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
|
|
||||||
- name: Test with pytest
|
|
||||||
run: |
|
|
||||||
pytest
|
|
6
setup.py
6
setup.py
|
@ -89,6 +89,8 @@ _deps = [
|
||||||
"modelcards==0.1.4",
|
"modelcards==0.1.4",
|
||||||
"numpy",
|
"numpy",
|
||||||
"pytest",
|
"pytest",
|
||||||
|
"pytest-timeout",
|
||||||
|
"pytest-xdist",
|
||||||
"regex!=2019.12.17",
|
"regex!=2019.12.17",
|
||||||
"requests",
|
"requests",
|
||||||
"tensorboard",
|
"tensorboard",
|
||||||
|
@ -163,10 +165,10 @@ extras = {}
|
||||||
|
|
||||||
|
|
||||||
extras = {}
|
extras = {}
|
||||||
extras["quality"] = ["black==22.3", "isort >= 5.5.4", "flake8 >= 3.8.3"]
|
extras["quality"] = ["black==22.3", "isort>=5.5.4", "flake8>=3.8.3", "hf-doc-builder"]
|
||||||
extras["docs"] = ["hf-doc-builder"]
|
extras["docs"] = ["hf-doc-builder"]
|
||||||
extras["training"] = ["accelerate", "datasets", "tensorboard", "modelcards"]
|
extras["training"] = ["accelerate", "datasets", "tensorboard", "modelcards"]
|
||||||
extras["test"] = ["pytest"]
|
extras["test"] = ["pytest", "pytest-timeout", "pytest-xdist"]
|
||||||
extras["dev"] = extras["quality"] + extras["test"] + extras["training"] + extras["docs"]
|
extras["dev"] = extras["quality"] + extras["test"] + extras["training"] + extras["docs"]
|
||||||
|
|
||||||
install_requires = [
|
install_requires = [
|
||||||
|
|
|
@ -15,6 +15,8 @@ deps = {
|
||||||
"modelcards": "modelcards==0.1.4",
|
"modelcards": "modelcards==0.1.4",
|
||||||
"numpy": "numpy",
|
"numpy": "numpy",
|
||||||
"pytest": "pytest",
|
"pytest": "pytest",
|
||||||
|
"pytest-timeout": "pytest-timeout",
|
||||||
|
"pytest-xdist": "pytest-xdist",
|
||||||
"regex": "regex!=2019.12.17",
|
"regex": "regex!=2019.12.17",
|
||||||
"requests": "requests",
|
"requests": "requests",
|
||||||
"tensorboard": "tensorboard",
|
"tensorboard": "tensorboard",
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
# coding=utf-8
|
||||||
|
# Copyright 2022 The HuggingFace Inc. team.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# this script dumps information about the environment
|
||||||
|
|
||||||
|
import os
|
||||||
|
import platform
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "3"
|
||||||
|
|
||||||
|
print("Python version:", sys.version)
|
||||||
|
|
||||||
|
print("OS platform:", platform.platform())
|
||||||
|
print("OS architecture:", platform.machine())
|
||||||
|
|
||||||
|
try:
|
||||||
|
import torch
|
||||||
|
|
||||||
|
print("Torch version:", torch.__version__)
|
||||||
|
print("Cuda available:", torch.cuda.is_available())
|
||||||
|
print("Cuda version:", torch.version.cuda)
|
||||||
|
print("CuDNN version:", torch.backends.cudnn.version())
|
||||||
|
print("Number of GPUs available:", torch.cuda.device_count())
|
||||||
|
except ImportError:
|
||||||
|
print("Torch version:", None)
|
||||||
|
|
||||||
|
try:
|
||||||
|
import transformers
|
||||||
|
|
||||||
|
print("transformers version:", transformers.__version__)
|
||||||
|
except ImportError:
|
||||||
|
print("transformers version:", None)
|
Loading…
Reference in New Issue