mirror of
https://github.com/gryf/coach.git
synced 2025-12-17 11:10:20 +01:00
143 lines
4.3 KiB
Makefile
143 lines
4.3 KiB
Makefile
REGISTRY=gcr.io
|
|
REGISTRY=docker.io
|
|
ORGANIZATION=nervana
|
|
|
|
CONTEXT = $(realpath ..)
|
|
|
|
BUILD_ARGUMENTS=
|
|
RUN_ARGUMENTS=
|
|
ifdef http_proxy
|
|
BUILD_ARGUMENTS+=--build-arg http_proxy=$(http_proxy)
|
|
endif
|
|
|
|
ifdef https_proxy
|
|
BUILD_ARGUMENTS+=--build-arg https_proxy=$(https_proxy)
|
|
endif
|
|
|
|
ifndef MUJOCO_KEY
|
|
KEY_NAME=${CONTEXT}/mjkey.txt
|
|
ifneq ("$(wildcard ${KEY_NAME})", "")
|
|
UNAME_S := $(shell uname -s)
|
|
ifeq ($(UNAME_S),Linux)
|
|
MUJOCO_KEY:=$(shell cat ${KEY_NAME} | base64 -w 0)
|
|
endif
|
|
ifeq ($(UNAME_S),Darwin)
|
|
MUJOCO_KEY:=$(shell cat ${KEY_NAME} | base64)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifdef MUJOCO_KEY
|
|
BUILD_ARGUMENTS+=--build-arg MUJOCO_KEY=$(MUJOCO_KEY)
|
|
endif
|
|
|
|
RUN_ARGUMENTS+=--rm
|
|
RUN_ARGUMENTS+=--net host
|
|
RUN_ARGUMENTS+=-v /tmp/checkpoint:/checkpoint
|
|
|
|
UNIT_TESTS=python3 -m pytest rl_coach/tests -m unit_test
|
|
INTEGRATION_TESTS=python3 -m pytest rl_coach/tests -m integration_test --tb=short
|
|
|
|
# Functional Tests
|
|
ifdef FUNCTIONAL_PRESETS
|
|
FUNCTIONAL_PRESETS:=-k "${FUNCTIONAL_PRESETS}"
|
|
endif
|
|
ifndef FUNCTIONAL_PRESETS
|
|
FUNCTIONAL_PRESETS=
|
|
endif
|
|
FUNCTIONAL_TESTS=python3 -m pytest rl_coach/tests -s -v ${FUNCTIONAL_PRESETS} -m functional_test
|
|
|
|
# Golden Tests
|
|
ifdef GOLDEN_PRESETS
|
|
GOLDEN_PRESETS:=-k "${GOLDEN_PRESETS}"
|
|
endif
|
|
ifndef GOLDEN_PRESETS
|
|
GOLDEN_PRESETS=
|
|
endif
|
|
GOLDEN_TESTS=python3 -m pytest rl_coach/tests -m golden_test -v ${GOLDEN_PRESETS}
|
|
# example specifying a couple presets:
|
|
# GOLDEN_TESTS=python3 -m pytest rl_coach/tests -m golden_test -v -k "Mujoco_NAF or Doom_Basic_DQN"
|
|
# example specifying all golden tests using the mujoco environment
|
|
# GOLDEN_TESTS=python3 -m pytest rl_coach/tests -m golden_test -v -k "Mujoco"
|
|
|
|
# Trace Tests
|
|
ifdef TRACE_PRESETS
|
|
TRACE_PRESETS := -p $(TRACE_PRESETS)
|
|
else
|
|
TRACE_PRESETS :=
|
|
endif
|
|
TRACE_TESTS=python3 rl_coach/tests/trace_tests.py -prl ${TRACE_PRESETS}
|
|
|
|
ifndef DOCKER
|
|
DOCKER = docker
|
|
endif
|
|
|
|
build_base:
|
|
${DOCKER} build -f=Dockerfile.base -t=${IMAGE}-base:master ${BUILD_ARGUMENTS} ${CONTEXT}
|
|
|
|
build: build_base
|
|
${DOCKER} build -f=Dockerfile -t=${IMAGE} ${BUILD_ARGUMENTS} ${CONTEXT}
|
|
mkdir -p /tmp/checkpoint
|
|
rm -rf /tmp/checkpoint/*
|
|
|
|
shell: build
|
|
${DOCKER} run ${RUN_ARGUMENTS} -it ${IMAGE} /bin/bash
|
|
|
|
unit_tests: build
|
|
${DOCKER} run ${RUN_ARGUMENTS} -it ${IMAGE} ${UNIT_TESTS}
|
|
|
|
integration_tests: build
|
|
${DOCKER} run ${RUN_ARGUMENTS} -it ${IMAGE} ${INTEGRATION_TESTS}
|
|
|
|
functional_tests: build
|
|
${DOCKER} run ${RUN_ARGUMENTS} -it ${IMAGE} ${FUNCTIONAL_TESTS}
|
|
|
|
golden_tests: build
|
|
${DOCKER} run ${RUN_ARGUMENTS} -it ${IMAGE} ${GOLDEN_TESTS}
|
|
|
|
trace_tests: build
|
|
${DOCKER} run ${RUN_ARGUMENTS} -it ${IMAGE} ${TRACE_TESTS}
|
|
|
|
run: build
|
|
${DOCKER} run ${RUN_ARGUMENTS} -it ${IMAGE}
|
|
|
|
run_training_worker: build
|
|
${DOCKER} run ${RUN_ARGUMENTS} -it ${IMAGE} python3 rl_coach/training_worker.py --preset CartPole_DQN_distributed
|
|
|
|
run_rollout_worker: build
|
|
${DOCKER} run ${RUN_ARGUMENTS} -it ${IMAGE} python3 rl_coach/rollout_worker.py --preset CartPole_DQN_distributed
|
|
|
|
bootstrap_kubernetes: build push
|
|
kubectl run -i --tty --attach --image=${REGISTRY}/${IMAGE} --restart=Never distributed-coach -- python3 rl_coach/orchestrators/start_training.py --preset CartPole_DQN_distributed --image ${IMAGE} -ns 10.63.249.182 -np /
|
|
|
|
stop_kubernetes:
|
|
kubectl get deployments | grep redis-server | awk "{print $$1}" | xargs kubectl delete deployments --ignore-not-found | true
|
|
kubectl get services | grep redis-service | awk "{print $$1}" | xargs kubectl delete services --ignore-not-found | true
|
|
kubectl get jobs | grep train | awk "{print $$1}" | xargs kubectl delete jobs --ignore-not-found | true
|
|
kubectl get jobs | grep worker | awk "{print $$1}" | xargs kubectl delete jobs --ignore-not-found | true
|
|
|
|
kubernetes: stop_kubernetes
|
|
python3 ${CONTEXT}/rl_coach/orchestrators/start_training.py --preset CartPole_DQN_distributed --image ${IMAGE} -ns 10.63.249.182 -np /
|
|
|
|
distributed: build push stop_kubernetes
|
|
python3 ${CONTEXT}/rl_coach/coach.py -p Mujoco_PPO -lvl humanoid --distributed_coach --distributed_coach_config_path ${CONTEXT}/distributed-coach.config -e stop_asking --num_workers 8
|
|
|
|
push: build
|
|
${DOCKER} tag ${IMAGE} ${REGISTRY}/${ORGANIZATION}/${IMAGE}
|
|
${DOCKER} push ${REGISTRY}/${ORGANIZATION}/${IMAGE}
|
|
|
|
unit_tests_without_docker:
|
|
cd .. && ${UNIT_TESTS}
|
|
|
|
integration_tests_without_docker:
|
|
cd .. && ${INTEGRATION_TESTS}
|
|
|
|
functional_tests_without_docker:
|
|
cd .. && ${FUNCTIONAL_TESTS}
|
|
|
|
golden_tests_without_docker:
|
|
cd .. && ${GOLDEN_TESTS}
|
|
|
|
trace_tests_without_docker:
|
|
cd .. && ${TRACE_TESTS}
|