H2OTest / Makefile
elineve's picture
Upload 301 files
07423df
PYTHON_VERSION ?= 3.10
PYTHON ?= python$(PYTHON_VERSION)
PIP ?= $(PYTHON) -m pip
PIPENV ?= $(PYTHON) -m pipenv
PIPENV_PYTHON = $(PIPENV) run python
PIPENV_PIP = $(PIPENV_PYTHON) -m pip
PWD = $(shell pwd)
DOCKER_IMAGE ?= gcr.io/vorvan/h2oai/h2o-llmstudio:nightly
ifeq ($(origin H2O_LLM_STUDIO_WORKDIR), environment)
WORKDIR := $(H2O_LLM_STUDIO_WORKDIR)
else
WORKDIR := $(shell pwd)
endif
ifeq ($(LOG_LEVEL), $(filter $(LOG_LEVEL), debug trace))
PW_DEBUG = DEBUG=pw:api
else
PW_DEBUG =
endif
PHONY: pipenv
pipenv:
$(PIP) install pip==24.0
$(PIP) install pipenv==2023.12.1
.PHONY: setup
setup: pipenv
$(PIPENV) install --verbose --python $(PYTHON_VERSION)
-$(PIPENV_PIP) install flash-attn==2.5.5 --no-build-isolation --upgrade --no-cache-dir
.PHONY: setup-dev
setup-dev: pipenv
$(PIPENV) install --verbose --dev --python $(PYTHON_VERSION)
- $(PIPENV_PIP) install flash-attn==2.5.5 --no-build-isolation --upgrade --no-cache-dir
$(PIPENV) run playwright install
.PHONY: setup-no-flash
setup-no-flash: pipenv
$(PIPENV) install --verbose --python $(PYTHON_VERSION)
setup-ui: pipenv
$(PIPENV) install --verbose --categories=dev-packages --python $(PYTHON_VERSION)
$(PIPENV) run playwright install
.PHONY: export-requirements
export-requirements: pipenv
$(PIPENV) requirements > requirements.txt
clean-env:
$(PIPENV) --rm
clean-data:
rm -rf data
clean-output:
rm -rf output
reports:
mkdir -p reports
.PHONY: style
style: reports pipenv
@echo -n > reports/flake8_errors.log
@echo -n > reports/mypy_errors.log
@echo -n > reports/mypy.log
@echo
-$(PIPENV) run flake8 | tee -a reports/flake8_errors.log
@if [ -s reports/flake8_errors.log ]; then exit 1; fi
-$(PIPENV) run mypy . --check-untyped-defs | tee -a reports/mypy.log
@if ! grep -Eq "Success: no issues found in [0-9]+ source files" reports/mypy.log ; then exit 1; fi
.PHONY: format
format: pipenv
$(PIPENV) run isort .
$(PIPENV) run black .
.PHONY: isort
isort: pipenv
$(PIPENV) run isort .
.PHONY: black
black: pipenv
$(PIPENV) run black .
.PHONY: test
test: reports
@bash -c 'set -o pipefail; export PYTHONPATH=$(PWD); \
$(PIPENV) run pytest -v --junitxml=reports/junit.xml \
--import-mode importlib \
--html=./reports/pytest.html \
--cov=llm_studio \
--cov-report term \
--cov-report html:./reports/coverage.html \
-o log_cli=true -o log_level=INFO -o log_file=reports/tests.log \
tests/* 2>&1 | tee reports/tests.log'
.PHONY: test-ui
test-ui: reports setup-ui
$(PW_DEBUG) $(PIPENV) run pytest \
-v \
--junitxml=reports/junit_ui.xml \
--html=./reports/pytest_ui.html \
-o log_cli=true \
-o log_level=$(LOG_LEVEL) \
-o log_file=reports/tests_ui.log \
tests/ui/test.py 2>&1 | tee reports/tests_ui.log
.PHONY: test-ui-headed
test-ui-headed: setup-ui
$(PW_DEBUG) $(PIPENV) run pytest \
-vvs \
--headed \
--video=on \
--screenshot=on \
--slowmo=100 \
tests/ui/test.py 2>&1 | tee reports/tests.log
.PHONY: wave
wave:
HF_HUB_ENABLE_HF_TRANSFER=True \
H2O_WAVE_APP_ADDRESS=http://127.0.0.1:8756 \
H2O_WAVE_MAX_REQUEST_SIZE=25MB \
H2O_WAVE_NO_LOG=true \
H2O_WAVE_PRIVATE_DIR="/download/@$(WORKDIR)/output/download" \
$(PIPENV) run wave run app
.PHONY: llmstudio
llmstudio:
H2O_WAVE_APP_ADDRESS=http://127.0.0.1:8756 \
H2O_WAVE_MAX_REQUEST_SIZE=25MB \
H2O_WAVE_NO_LOG=true \
H2O_WAVE_PRIVATE_DIR="/download/@$(WORKDIR)/output/download" \
$(PIPENV) run wave run --no-reload app
.PHONY: docker-build-nightly
docker-build-nightly:
docker build -t $(DOCKER_IMAGE) .
.PHONY: docker-run-nightly
docker-run-nightly:
ifeq (,$(wildcard ./data))
mkdir data
endif
ifeq (,$(wildcard ./output))
mkdir output
endif
docker run \
--runtime=nvidia \
--shm-size=64g \
--init \
--rm \
-u `id -u`:`id -g` \
-p 10101:10101 \
-v `pwd`/data:/workspace/data \
-v `pwd`/output:/workspace/output \
$(DOCKER_IMAGE)
.PHONY: docker-clean-all
docker-clean-all:
@CONTAINERS=$$(docker ps -a -q --filter ancestor=$(DOCKER_IMAGE)); \
if [ -n "$$CONTAINERS" ]; then \
docker stop $$CONTAINERS; \
docker rm $$CONTAINERS; \
fi
docker rmi $(DOCKER_IMAGE)
.PHONY: shell
shell:
$(PIPENV) shell
setup-doc: # Install documentation dependencies
cd documentation && npm install
run-doc: # Run the doc locally
cd documentation && npm start
update-documentation-infrastructure:
cd documentation && npm update @h2oai/makersaurus
cd documentation && npm ls
build-doc-locally: # Bundles your website into static files for production
cd documentation && npm run build
serve-doc-locally: # Serves the built website locally
cd documentation && npm run serve