pytorch
/
docker.Makefile
100 строк · 3.4 Кб
1DOCKER_REGISTRY ?= docker.io
2DOCKER_ORG ?= $(shell docker info 2>/dev/null | sed '/Username:/!d;s/.* //')
3DOCKER_IMAGE ?= pytorch
4DOCKER_FULL_NAME = $(DOCKER_REGISTRY)/$(DOCKER_ORG)/$(DOCKER_IMAGE)
5
6ifeq ("$(DOCKER_ORG)","")
7$(warning WARNING: No docker user found using results from whoami)
8DOCKER_ORG = $(shell whoami)
9endif
10
11CUDA_VERSION_SHORT ?= 12.1
12CUDA_VERSION ?= 12.1.1
13CUDNN_VERSION ?= 8
14BASE_RUNTIME = ubuntu:22.04
15BASE_DEVEL = nvidia/cuda:$(CUDA_VERSION)-cudnn$(CUDNN_VERSION)-devel-ubuntu22.04
16CMAKE_VARS ?=
17
18# The conda channel to use to install cudatoolkit
19CUDA_CHANNEL = nvidia
20# The conda channel to use to install pytorch / torchvision
21INSTALL_CHANNEL ?= pytorch
22
23PYTHON_VERSION ?= 3.10
24# Match versions that start with v followed by a number, to avoid matching with tags like ciflow
25PYTORCH_VERSION ?= $(shell git describe --tags --always --match "v[1-9]*.*")
26# Can be either official / dev
27BUILD_TYPE ?= dev
28BUILD_PROGRESS ?= auto
29# Intentionally left blank
30TRITON_VERSION ?=
31BUILD_ARGS = --build-arg BASE_IMAGE=$(BASE_IMAGE) \
32--build-arg PYTHON_VERSION=$(PYTHON_VERSION) \
33--build-arg CUDA_VERSION=$(CUDA_VERSION) \
34--build-arg CUDA_CHANNEL=$(CUDA_CHANNEL) \
35--build-arg PYTORCH_VERSION=$(PYTORCH_VERSION) \
36--build-arg INSTALL_CHANNEL=$(INSTALL_CHANNEL) \
37--build-arg TRITON_VERSION=$(TRITON_VERSION) \
38--build-arg CMAKE_VARS="$(CMAKE_VARS)"
39EXTRA_DOCKER_BUILD_FLAGS ?=
40
41BUILD ?= build
42# Intentionally left blank
43PLATFORMS_FLAG ?=
44PUSH_FLAG ?=
45USE_BUILDX ?=
46BUILD_PLATFORMS ?=
47WITH_PUSH ?= false
48# Setup buildx flags
49ifneq ("$(USE_BUILDX)","")
50BUILD = buildx build
51ifneq ("$(BUILD_PLATFORMS)","")
52PLATFORMS_FLAG = --platform="$(BUILD_PLATFORMS)"
53endif
54# Only set platforms flags if using buildx
55ifeq ("$(WITH_PUSH)","true")
56PUSH_FLAG = --push
57endif
58endif
59
60DOCKER_BUILD = DOCKER_BUILDKIT=1 \
61docker $(BUILD) \
62--progress=$(BUILD_PROGRESS) \
63$(EXTRA_DOCKER_BUILD_FLAGS) \
64$(PLATFORMS_FLAG) \
65$(PUSH_FLAG) \
66--target $(BUILD_TYPE) \
67-t $(DOCKER_FULL_NAME):$(DOCKER_TAG) \
68$(BUILD_ARGS) .
69DOCKER_PUSH = docker push $(DOCKER_FULL_NAME):$(DOCKER_TAG)
70
71.PHONY: all
72all: devel-image
73
74.PHONY: devel-image
75devel-image: BASE_IMAGE := $(BASE_DEVEL)
76devel-image: DOCKER_TAG := $(PYTORCH_VERSION)-cuda$(CUDA_VERSION_SHORT)-cudnn$(CUDNN_VERSION)-devel
77devel-image:
78$(DOCKER_BUILD)
79
80.PHONY: devel-push
81devel-push: BASE_IMAGE := $(BASE_DEVEL)
82devel-push: DOCKER_TAG := $(PYTORCH_VERSION)-cuda$(CUDA_VERSION_SHORT)-cudnn$(CUDNN_VERSION)-devel
83devel-push:
84$(DOCKER_PUSH)
85
86.PHONY: runtime-image
87runtime-image: BASE_IMAGE := $(BASE_RUNTIME)
88runtime-image: DOCKER_TAG := $(PYTORCH_VERSION)-cuda$(CUDA_VERSION_SHORT)-cudnn$(CUDNN_VERSION)-runtime
89runtime-image:
90$(DOCKER_BUILD)
91
92.PHONY: runtime-push
93runtime-push: BASE_IMAGE := $(BASE_RUNTIME)
94runtime-push: DOCKER_TAG := $(PYTORCH_VERSION)-cuda$(CUDA_VERSION_SHORT)-cudnn$(CUDNN_VERSION)-runtime
95runtime-push:
96$(DOCKER_PUSH)
97
98.PHONY: clean
99clean:
100-docker rmi -f $(shell docker images -q $(DOCKER_FULL_NAME))
101