Commit 0fc002df authored by huchen's avatar huchen
Browse files

init the dlexamples new

parent 0e04b692
from __future__ import print_function
from collections import defaultdict, deque
import datetime
import pickle
import time
import torch
import torch.distributed as dist
import errno
import os
class SmoothedValue(object):
"""Track a series of values and provide access to smoothed values over a
window or the global series average.
"""
def __init__(self, window_size=20, fmt=None):
if fmt is None:
fmt = "{median:.4f} ({global_avg:.4f})"
self.deque = deque(maxlen=window_size)
self.total = 0.0
self.count = 0
self.fmt = fmt
def update(self, value, n=1):
self.deque.append(value)
self.count += n
self.total += value * n
def synchronize_between_processes(self):
"""
Warning: does not synchronize the deque!
"""
if not is_dist_avail_and_initialized():
return
t = torch.tensor([self.count, self.total], dtype=torch.float64, device='cuda')
dist.barrier()
dist.all_reduce(t)
t = t.tolist()
self.count = int(t[0])
self.total = t[1]
@property
def median(self):
d = torch.tensor(list(self.deque))
return d.median().item()
@property
def avg(self):
d = torch.tensor(list(self.deque), dtype=torch.float32)
return d.mean().item()
@property
def global_avg(self):
return self.total / self.count
@property
def max(self):
return max(self.deque)
@property
def value(self):
return self.deque[-1]
def __str__(self):
return self.fmt.format(
median=self.median,
avg=self.avg,
global_avg=self.global_avg,
max=self.max,
value=self.value)
def all_gather(data):
"""
Run all_gather on arbitrary picklable data (not necessarily tensors)
Args:
data: any picklable object
Returns:
list[data]: list of data gathered from each rank
"""
world_size = get_world_size()
if world_size == 1:
return [data]
# serialized to a Tensor
buffer = pickle.dumps(data)
storage = torch.ByteStorage.from_buffer(buffer)
tensor = torch.ByteTensor(storage).to("cuda")
# obtain Tensor size of each rank
local_size = torch.tensor([tensor.numel()], device="cuda")
size_list = [torch.tensor([0], device="cuda") for _ in range(world_size)]
dist.all_gather(size_list, local_size)
size_list = [int(size.item()) for size in size_list]
max_size = max(size_list)
# receiving Tensor from all ranks
# we pad the tensor because torch all_gather does not support
# gathering tensors of different shapes
tensor_list = []
for _ in size_list:
tensor_list.append(torch.empty((max_size,), dtype=torch.uint8, device="cuda"))
if local_size != max_size:
padding = torch.empty(size=(max_size - local_size,), dtype=torch.uint8, device="cuda")
tensor = torch.cat((tensor, padding), dim=0)
dist.all_gather(tensor_list, tensor)
data_list = []
for size, tensor in zip(size_list, tensor_list):
buffer = tensor.cpu().numpy().tobytes()[:size]
data_list.append(pickle.loads(buffer))
return data_list
def reduce_dict(input_dict, average=True):
"""
Args:
input_dict (dict): all the values will be reduced
average (bool): whether to do average or sum
Reduce the values in the dictionary from all processes so that all processes
have the averaged results. Returns a dict with the same fields as
input_dict, after reduction.
"""
world_size = get_world_size()
if world_size < 2:
return input_dict
with torch.no_grad():
names = []
values = []
# sort the keys so that they are consistent across processes
for k in sorted(input_dict.keys()):
names.append(k)
values.append(input_dict[k])
values = torch.stack(values, dim=0)
dist.all_reduce(values)
if average:
values /= world_size
reduced_dict = {k: v for k, v in zip(names, values)}
return reduced_dict
class MetricLogger(object):
def __init__(self, delimiter="\t"):
self.meters = defaultdict(SmoothedValue)
self.delimiter = delimiter
def update(self, **kwargs):
for k, v in kwargs.items():
if isinstance(v, torch.Tensor):
v = v.item()
assert isinstance(v, (float, int))
self.meters[k].update(v)
def __getattr__(self, attr):
if attr in self.meters:
return self.meters[attr]
if attr in self.__dict__:
return self.__dict__[attr]
raise AttributeError("'{}' object has no attribute '{}'".format(
type(self).__name__, attr))
def __str__(self):
loss_str = []
for name, meter in self.meters.items():
loss_str.append(
"{}: {}".format(name, str(meter))
)
return self.delimiter.join(loss_str)
def synchronize_between_processes(self):
for meter in self.meters.values():
meter.synchronize_between_processes()
def add_meter(self, name, meter):
self.meters[name] = meter
def log_every(self, iterable, print_freq, header=None):
i = 0
if not header:
header = ''
start_time = time.time()
end = time.time()
iter_time = SmoothedValue(fmt='{avg:.4f}')
data_time = SmoothedValue(fmt='{avg:.4f}')
space_fmt = ':' + str(len(str(len(iterable)))) + 'd'
if torch.cuda.is_available():
log_msg = self.delimiter.join([
header,
'[{0' + space_fmt + '}/{1}]',
'eta: {eta}',
'{meters}',
'time: {time}',
'data: {data}',
'max mem: {memory:.0f}'
])
else:
log_msg = self.delimiter.join([
header,
'[{0' + space_fmt + '}/{1}]',
'eta: {eta}',
'{meters}',
'time: {time}',
'data: {data}'
])
MB = 1024.0 * 1024.0
for obj in iterable:
data_time.update(time.time() - end)
yield obj
iter_time.update(time.time() - end)
if i % print_freq == 0 or i == len(iterable) - 1:
eta_seconds = iter_time.global_avg * (len(iterable) - i)
eta_string = str(datetime.timedelta(seconds=int(eta_seconds)))
if torch.cuda.is_available():
print(log_msg.format(
i, len(iterable), eta=eta_string,
meters=str(self),
time=str(iter_time), data=str(data_time),
memory=torch.cuda.max_memory_allocated() / MB))
else:
print(log_msg.format(
i, len(iterable), eta=eta_string,
meters=str(self),
time=str(iter_time), data=str(data_time)))
i += 1
end = time.time()
total_time = time.time() - start_time
total_time_str = str(datetime.timedelta(seconds=int(total_time)))
print('{} Total time: {} ({:.4f} s / it)'.format(
header, total_time_str, total_time / len(iterable)))
def collate_fn(batch):
return tuple(zip(*batch))
def warmup_lr_scheduler(optimizer, warmup_iters, warmup_factor):
def f(x):
if x >= warmup_iters:
return 1
alpha = float(x) / warmup_iters
return warmup_factor * (1 - alpha) + alpha
return torch.optim.lr_scheduler.LambdaLR(optimizer, f)
def mkdir(path):
try:
os.makedirs(path)
except OSError as e:
if e.errno != errno.EEXIST:
raise
def setup_for_distributed(is_master):
"""
This function disables printing when not in master process
"""
import builtins as __builtin__
builtin_print = __builtin__.print
def print(*args, **kwargs):
force = kwargs.pop('force', False)
if is_master or force:
builtin_print(*args, **kwargs)
__builtin__.print = print
def is_dist_avail_and_initialized():
if not dist.is_available():
return False
if not dist.is_initialized():
return False
return True
def get_world_size():
if not is_dist_avail_and_initialized():
return 1
return dist.get_world_size()
def get_rank():
if not is_dist_avail_and_initialized():
return 0
return dist.get_rank()
def is_main_process():
return get_rank() == 0
def save_on_master(*args, **kwargs):
if is_main_process():
torch.save(*args, **kwargs)
def init_distributed_mode(args):
if 'RANK' in os.environ and 'WORLD_SIZE' in os.environ:
print("os rank")
args.rank = int(os.environ["RANK"])
args.world_size = int(os.environ['WORLD_SIZE'])
args.gpu = int(os.environ['LOCAL_RANK'])
#elif 'SLURM_PROCID' in os.environ:
# print("SLURM_PROCID")
# args.rank = int(os.environ['SLURM_PROCID'])
# args.gpu = args.rank % torch.cuda.device_count()
elif (args.rank != -1):
args.distributed = True
else:
print('Not using distributed mode')
args.distributed = False
return
####aiss debug
#else:
# print("no os rank and no slurm_pro")
args.gpu = args.rank % torch.cuda.device_count()
args.distributed = True
torch.cuda.set_device(args.gpu)
args.dist_backend = 'nccl'
print('| distributed init (rank {}): {}'.format(
args.rank, args.dist_url), flush=True)
torch.distributed.init_process_group(backend=args.dist_backend, init_method=args.dist_url,
world_size=args.world_size, rank=args.rank)
torch.distributed.barrier()
setup_for_distributed(args.rank == 0)
version: 2.1
# How to test the Linux jobs:
# - Install CircleCI local CLI: https://circleci.com/docs/2.0/local-cli/
# - circleci config process .circleci/config.yml > gen.yml && circleci local execute -c gen.yml --job binary_linux_wheel_py3.7
# - Replace binary_linux_wheel_py3.7 with the name of the job you want to test.
# Job names are 'name:' key.
executors:
windows-cpu:
machine:
resource_class: windows.xlarge
image: windows-server-2019-vs2019:stable
shell: bash.exe
windows-gpu:
machine:
resource_class: windows.gpu.nvidia.medium
image: windows-server-2019-nvidia:stable
shell: bash.exe
commands:
checkout_merge:
description: "checkout merge branch"
steps:
- checkout
# - run:
# name: Checkout merge branch
# command: |
# set -ex
# BRANCH=$(git rev-parse --abbrev-ref HEAD)
# if [[ "$BRANCH" != "master" ]]; then
# git fetch --force origin ${CIRCLE_BRANCH}/merge:merged/${CIRCLE_BRANCH}
# git checkout "merged/$CIRCLE_BRANCH"
# fi
designate_upload_channel:
description: "inserts the correct upload channel into ${BASH_ENV}"
steps:
- run:
name: adding UPLOAD_CHANNEL to BASH_ENV
command: |
our_upload_channel=nightly
# On tags upload to test instead
if [[ -n "${CIRCLE_TAG}" ]]; then
our_upload_channel=test
fi
echo "export UPLOAD_CHANNEL=${our_upload_channel}" >> ${BASH_ENV}
binary_common: &binary_common
parameters:
# Edit these defaults to do a release`
build_version:
description: "version number of release binary; by default, build a nightly"
type: string
default: ""
pytorch_version:
description: "PyTorch version to build against; by default, use a nightly"
type: string
default: ""
# Don't edit these
python_version:
description: "Python version to build against (e.g., 3.7)"
type: string
cu_version:
description: "CUDA version to build against, in CU format (e.g., cpu or cu100)"
type: string
default: "cpu"
unicode_abi:
description: "Python 2.7 wheel only: whether or not we are cp27mu (default: no)"
type: string
default: ""
wheel_docker_image:
description: "Wheel only: what docker image to use"
type: string
default: "pytorch/manylinux-cuda101"
environment:
PYTHON_VERSION: << parameters.python_version >>
PYTORCH_VERSION: << parameters.pytorch_version >>
UNICODE_ABI: << parameters.unicode_abi >>
CU_VERSION: << parameters.cu_version >>
smoke_test_common: &smoke_test_common
<<: *binary_common
docker:
- image: torchvision/smoke_test:latest
jobs:
circleci_consistency:
docker:
- image: circleci/python:3.7
steps:
- checkout
- run:
command: |
pip install --user --progress-bar off jinja2 pyyaml
python .circleci/regenerate.py
git diff --exit-code || (echo ".circleci/config.yml not in sync with config.yml.in! Run .circleci/regenerate.py to update config"; exit 1)
python_lint:
docker:
- image: circleci/python:3.7
steps:
- checkout
- run:
command: |
pip install --user --progress-bar off flake8 typing
flake8 --config=setup.cfg .
python_type_check:
docker:
- image: circleci/python:3.7
steps:
- checkout
- run:
command: |
sudo apt-get update -y
sudo apt install -y libturbojpeg-dev
pip install --user --progress-bar off numpy mypy
pip install --user --progress-bar off --pre torch -f https://download.pytorch.org/whl/nightly/cpu/torch_nightly.html
pip install --user --progress-bar off --editable .
mypy --config-file mypy.ini
clang_format:
docker:
- image: circleci/python:3.7
steps:
- checkout
- run:
command: |
curl https://oss-clang-format.s3.us-east-2.amazonaws.com/linux64/clang-format-linux64 -o clang-format
chmod +x clang-format
sudo mv clang-format /opt/clang-format
./travis-scripts/run-clang-format/run-clang-format.py -r torchvision/csrc --clang-format-executable /opt/clang-format
binary_linux_wheel:
<<: *binary_common
docker:
- image: << parameters.wheel_docker_image >>
resource_class: 2xlarge+
steps:
- checkout_merge
- designate_upload_channel
- run: packaging/build_wheel.sh
- store_artifacts:
path: dist
- persist_to_workspace:
root: dist
paths:
- "*"
binary_linux_conda:
<<: *binary_common
docker:
- image: "pytorch/conda-cuda"
resource_class: 2xlarge+
steps:
- checkout_merge
- designate_upload_channel
- run: packaging/build_conda.sh
- store_artifacts:
path: /opt/conda/conda-bld/linux-64
- persist_to_workspace:
root: /opt/conda/conda-bld/linux-64
paths:
- "*"
- store_test_results:
path: build_results/
binary_win_conda:
<<: *binary_common
executor: windows-cpu
steps:
- checkout_merge
- designate_upload_channel
- run:
name: Build conda packages
command: |
set -ex
source packaging/windows/internal/vc_install_helper.sh
packaging/windows/internal/cuda_install.bat
eval "$('/C/tools/miniconda3/Scripts/conda.exe' 'shell.bash' 'hook')"
conda activate base
conda install -yq conda-build "conda-package-handling!=1.5.0"
packaging/build_conda.sh
rm /C/tools/miniconda3/conda-bld/win-64/vs${VC_YEAR}*.tar.bz2
- store_artifacts:
path: C:/tools/miniconda3/conda-bld/win-64
- persist_to_workspace:
root: C:/tools/miniconda3/conda-bld/win-64
paths:
- "*"
- store_test_results:
path: build_results/
binary_win_wheel:
<<: *binary_common
executor: windows-cpu
steps:
- checkout_merge
- designate_upload_channel
- run:
name: Build wheel packages
command: |
set -ex
source packaging/windows/internal/vc_install_helper.sh
packaging/windows/internal/cuda_install.bat
packaging/build_wheel.sh
- store_artifacts:
path: dist
- persist_to_workspace:
root: dist
paths:
- "*"
- store_test_results:
path: build_results/
binary_macos_wheel:
<<: *binary_common
macos:
xcode: "9.4.1"
steps:
- checkout_merge
- designate_upload_channel
- run:
# Cannot easily deduplicate this as source'ing activate
# will set environment variables which we need to propagate
# to build_wheel.sh
command: |
curl -o conda.sh https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
sh conda.sh -b
source $HOME/miniconda3/bin/activate
packaging/build_wheel.sh
- store_artifacts:
path: dist
- persist_to_workspace:
root: dist
paths:
- "*"
binary_macos_conda:
<<: *binary_common
macos:
xcode: "9.4.1"
steps:
- checkout_merge
- designate_upload_channel
- run:
command: |
curl -o conda.sh https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
sh conda.sh -b
source $HOME/miniconda3/bin/activate
conda install -yq conda-build
packaging/build_conda.sh
- store_artifacts:
path: /Users/distiller/miniconda3/conda-bld/osx-64
- persist_to_workspace:
root: /Users/distiller/miniconda3/conda-bld/osx-64
paths:
- "*"
- store_test_results:
path: build_results/
# Requires org-member context
binary_conda_upload:
docker:
- image: continuumio/miniconda
steps:
- attach_workspace:
at: ~/workspace
- designate_upload_channel
- run:
command: |
# Prevent credential from leaking
conda install -yq anaconda-client
set -x
anaconda -t "${CONDA_PYTORCHBOT_TOKEN}" upload ~/workspace/*.tar.bz2 -u "pytorch-${UPLOAD_CHANNEL}" --label main --no-progress --force
# Requires org-member context
binary_wheel_upload:
parameters:
subfolder:
description: "What whl subfolder to upload to, e.g., blank or cu100/ (trailing slash is important)"
type: string
docker:
- image: circleci/python:3.7
steps:
- attach_workspace:
at: ~/workspace
- designate_upload_channel
- checkout
- run:
command: |
pip install --user awscli
export PATH="$HOME/.local/bin:$PATH"
# Prevent credential from leaking
set +x
export AWS_ACCESS_KEY_ID="${PYTORCH_BINARY_AWS_ACCESS_KEY_ID}"
export AWS_SECRET_ACCESS_KEY="${PYTORCH_BINARY_AWS_SECRET_ACCESS_KEY}"
set -x
for pkg in ~/workspace/*.whl; do
aws s3 cp "$pkg" "s3://pytorch/whl/${UPLOAD_CHANNEL}/<< parameters.subfolder >>" --acl public-read
done
smoke_test_linux_conda:
<<: *smoke_test_common
steps:
- attach_workspace:
at: ~/workspace
- designate_upload_channel
- run:
name: install binaries
command: |
set -x
source /usr/local/etc/profile.d/conda.sh && conda activate python${PYTHON_VERSION}
conda install -v -y -c pytorch-nightly pytorch
conda install -v -y $(ls ~/workspace/torchvision*.tar.bz2)
- run:
name: smoke test
command: |
source /usr/local/etc/profile.d/conda.sh && conda activate python${PYTHON_VERSION}
python -c "import torchvision"
smoke_test_linux_pip:
<<: *smoke_test_common
steps:
- attach_workspace:
at: ~/workspace
- designate_upload_channel
- run:
name: install binaries
command: |
set -x
source /usr/local/etc/profile.d/conda.sh && conda activate python${PYTHON_VERSION}
pip install $(ls ~/workspace/torchvision*.whl) --pre -f https://download.pytorch.org/whl/nightly/torch_nightly.html
- run:
name: smoke test
command: |
source /usr/local/etc/profile.d/conda.sh && conda activate python${PYTHON_VERSION}
python -c "import torchvision"
smoke_test_docker_image_build:
machine:
image: ubuntu-1604:201903-01
resource_class: large
environment:
image_name: torchvision/smoke_test
steps:
- checkout
- designate_upload_channel
- run:
name: Build and push Docker image
no_output_timeout: "1h"
command: |
set +x
echo "${DOCKER_HUB_TOKEN}" | docker login --username "${DOCKER_HUB_USERNAME}" --password-stdin
set -x
cd .circleci/smoke_test/docker && docker build . -t ${image_name}:${CIRCLE_WORKFLOW_ID}
docker tag ${image_name}:${CIRCLE_WORKFLOW_ID} ${image_name}:latest
docker push ${image_name}:${CIRCLE_WORKFLOW_ID}
docker push ${image_name}:latest
smoke_test_win_conda:
<<: *binary_common
executor:
name: windows-cpu
steps:
- attach_workspace:
at: ~/workspace
- designate_upload_channel
- run:
name: install binaries
command: |
set -x
eval "$('/C/tools/miniconda3/Scripts/conda.exe' 'shell.bash' 'hook')"
conda env remove -n python${PYTHON_VERSION} || true
conda create -yn python${PYTHON_VERSION} python=${PYTHON_VERSION}
conda activate python${PYTHON_VERSION}
conda install Pillow
conda install -v -y -c pytorch-nightly pytorch
conda install -v -y $(ls ~/workspace/torchvision*.tar.bz2)
- run:
name: smoke test
command: |
eval "$('/C/tools/miniconda3/Scripts/conda.exe' 'shell.bash' 'hook')"
conda activate python${PYTHON_VERSION}
python -c "import torchvision"
smoke_test_win_pip:
<<: *binary_common
executor:
name: windows-cpu
steps:
- attach_workspace:
at: ~/workspace
- designate_upload_channel
- run:
name: install binaries
command: |
set -x
eval "$('/C/tools/miniconda3/Scripts/conda.exe' 'shell.bash' 'hook')"
conda env remove -n python${PYTHON_VERSION} || true
conda create -yn python${PYTHON_VERSION} python=${PYTHON_VERSION}
conda activate python${PYTHON_VERSION}
pip install $(ls ~/workspace/torchvision*.whl) --pre -f https://download.pytorch.org/whl/nightly/torch_nightly.html
- run:
name: smoke test
command: |
eval "$('/C/tools/miniconda3/Scripts/conda.exe' 'shell.bash' 'hook')"
conda activate python${PYTHON_VERSION}
python -c "import torchvision"
unittest_linux_cpu:
<<: *binary_common
docker:
- image: "pytorch/manylinux-cuda102"
resource_class: 2xlarge+
steps:
- checkout
- designate_upload_channel
- run:
name: Generate cache key
# This will refresh cache on Sundays, nightly build should generate new cache.
command: echo "$(date +"%Y-%U")" > .circleci-weekly
- restore_cache:
keys:
- env-v2-linux-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/linux/scripts/environment.yml" }}-{{ checksum ".circleci-weekly" }}
- run:
name: Setup
command: .circleci/unittest/linux/scripts/setup_env.sh
- save_cache:
key: env-v2-linux-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/linux/scripts/environment.yml" }}-{{ checksum ".circleci-weekly" }}
paths:
- conda
- env
- run:
name: Install torchvision
command: .circleci/unittest/linux/scripts/install.sh
- run:
name: Run tests
command: .circleci/unittest/linux/scripts/run_test.sh
- run:
name: Post process
command: .circleci/unittest/linux/scripts/post_process.sh
- store_test_results:
path: test-results
unittest_linux_gpu:
<<: *binary_common
machine:
image: ubuntu-1604-cuda-10.1:201909-23
resource_class: gpu.small
environment:
image_name: "pytorch/manylinux-cuda101"
steps:
- checkout
- designate_upload_channel
- run:
name: Generate cache key
# This will refresh cache on Sundays, nightly build should generate new cache.
command: echo "$(date +"%Y-%U")" > .circleci-weekly
- restore_cache:
keys:
- env-v2-linux-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/linux/scripts/environment.yml" }}-{{ checksum ".circleci-weekly" }}
- run:
name: Setup
command: docker run -t --gpus all -v $PWD:$PWD -w $PWD "${image_name}" .circleci/unittest/linux/scripts/setup_env.sh
- save_cache:
key: env-v2-linux-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/linux/scripts/environment.yml" }}-{{ checksum ".circleci-weekly" }}
paths:
- conda
- env
- run:
name: Install torchvision
command: docker run -t --gpus all -v $PWD:$PWD -w $PWD -e UPLOAD_CHANNEL "${image_name}" .circleci/unittest/linux/scripts/install.sh
- run:
name: Run tests
command: docker run -t --gpus all -v $PWD:$PWD -w $PWD "${image_name}" .circleci/unittest/linux/scripts/run_test.sh
- run:
name: Post Process
command: docker run -t --gpus all -v $PWD:$PWD -w $PWD "${image_name}" .circleci/unittest/linux/scripts/post_process.sh
- store_test_results:
path: test-results
unittest_windows_cpu:
<<: *binary_common
executor:
name: windows-cpu
steps:
- checkout
- designate_upload_channel
- run:
name: Generate cache key
# This will refresh cache on Sundays, nightly build should generate new cache.
command: echo "$(date +"%Y-%U")" > .circleci-weekly
- restore_cache:
keys:
- env-v2-windows-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/windows/scripts/environment.yml" }}-{{ checksum ".circleci-weekly" }}
- run:
name: Setup
command: .circleci/unittest/windows/scripts/setup_env.sh
- save_cache:
key: env-v2-windows-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/windows/scripts/environment.yml" }}-{{ checksum ".circleci-weekly" }}
paths:
- conda
- env
- run:
name: Install torchvision
command: .circleci/unittest/windows/scripts/install.sh
- run:
name: Run tests
command: .circleci/unittest/windows/scripts/run_test.sh
- run:
name: Post process
command: .circleci/unittest/windows/scripts/post_process.sh
- store_test_results:
path: test-results
unittest_windows_gpu:
<<: *binary_common
executor:
name: windows-gpu
environment:
CUDA_VERSION: "10.1"
steps:
- checkout
- designate_upload_channel
- run:
name: Generate cache key
# This will refresh cache on Sundays, nightly build should generate new cache.
command: echo "$(date +"%Y-%U")" > .circleci-weekly
- restore_cache:
keys:
- env-v1-windows-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/windows/scripts/environment.yml" }}-{{ checksum ".circleci-weekly" }}
- run:
name: Setup
command: .circleci/unittest/windows/scripts/setup_env.sh
- save_cache:
key: env-v1-windows-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/windows/scripts/environment.yml" }}-{{ checksum ".circleci-weekly" }}
paths:
- conda
- env
- run:
name: Install torchvision
command: .circleci/unittest/windows/scripts/install.sh
- run:
name: Run tests
command: .circleci/unittest/windows/scripts/run_test.sh
- run:
name: Post process
command: .circleci/unittest/windows/scripts/post_process.sh
- store_test_results:
path: test-results
unittest_macos_cpu:
<<: *binary_common
macos:
xcode: "9.4.1"
resource_class: large
steps:
- checkout
- designate_upload_channel
- run:
name: Install wget
command: HOMEBREW_NO_AUTO_UPDATE=1 brew install wget
# Disable brew auto update which is very slow
- run:
name: Generate cache key
# This will refresh cache on Sundays, nightly build should generate new cache.
command: echo "$(date +"%Y-%U")" > .circleci-weekly
- restore_cache:
keys:
- env-v3-macos-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/linux/scripts/environment.yml" }}-{{ checksum ".circleci-weekly" }}
- run:
name: Setup
command: .circleci/unittest/linux/scripts/setup_env.sh
- save_cache:
key: env-v3-macos-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/linux/scripts/environment.yml" }}-{{ checksum ".circleci-weekly" }}
paths:
- conda
- env
- run:
name: Install torchvision
command: .circleci/unittest/linux/scripts/install.sh
- run:
name: Run tests
command: .circleci/unittest/linux/scripts/run_test.sh
- run:
name: Post process
command: .circleci/unittest/linux/scripts/post_process.sh
- store_test_results:
path: test-results
cmake_linux_cpu:
<<: *binary_common
docker:
- image: "pytorch/manylinux-cuda102"
resource_class: 2xlarge+
steps:
- checkout_merge
- designate_upload_channel
- run:
name: Setup conda
command: .circleci/unittest/linux/scripts/setup_env.sh
- run: packaging/build_cmake.sh
cmake_linux_gpu:
<<: *binary_common
machine:
image: ubuntu-1604-cuda-10.1:201909-23
resource_class: gpu.small
environment:
PYTHON_VERSION: << parameters.python_version >>
PYTORCH_VERSION: << parameters.pytorch_version >>
UNICODE_ABI: << parameters.unicode_abi >>
CU_VERSION: << parameters.cu_version >>
steps:
- checkout_merge
- designate_upload_channel
- run:
name: Setup conda
command: docker run -e CU_VERSION -e PYTHON_VERSION -e UNICODE_ABI -e PYTORCH_VERSION -t --gpus all -v $PWD:$PWD -w $PWD << parameters.wheel_docker_image >> .circleci/unittest/linux/scripts/setup_env.sh
- run:
name: Build torchvision C++ distribution and test
command: docker run -e CU_VERSION -e PYTHON_VERSION -e UNICODE_ABI -e PYTORCH_VERSION -e UPLOAD_CHANNEL -t --gpus all -v $PWD:$PWD -w $PWD << parameters.wheel_docker_image >> packaging/build_cmake.sh
cmake_macos_cpu:
<<: *binary_common
macos:
xcode: "9.4.1"
steps:
- checkout_merge
- designate_upload_channel
- run:
command: |
curl -o conda.sh https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
sh conda.sh -b
source $HOME/miniconda3/bin/activate
conda install -yq conda-build cmake
packaging/build_cmake.sh
cmake_windows_cpu:
<<: *binary_common
executor:
name: windows-cpu
steps:
- checkout_merge
- designate_upload_channel
- run:
command: |
set -ex
source packaging/windows/internal/vc_install_helper.sh
packaging/build_cmake.sh
cmake_windows_gpu:
<<: *binary_common
executor:
name: windows-gpu
steps:
- checkout_merge
- designate_upload_channel
- run:
command: |
set -ex
source packaging/windows/internal/vc_install_helper.sh
packaging/windows/internal/cuda_install.bat
packaging/build_cmake.sh
workflows:
build:
jobs:
- circleci_consistency
- binary_linux_wheel:
cu_version: cpu
name: binary_linux_wheel_py3.6_cpu
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_linux_wheel:
cu_version: cu92
name: binary_linux_wheel_py3.6_cu92
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda92
- binary_linux_wheel:
cu_version: cu101
name: binary_linux_wheel_py3.6_cu101
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda101
- binary_linux_wheel:
cu_version: cu102
name: binary_linux_wheel_py3.6_cu102
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_linux_wheel:
cu_version: cu110
name: binary_linux_wheel_py3.6_cu110
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda110
- binary_linux_wheel:
cu_version: cpu
name: binary_linux_wheel_py3.7_cpu
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_linux_wheel:
cu_version: cu92
name: binary_linux_wheel_py3.7_cu92
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda92
- binary_linux_wheel:
cu_version: cu101
name: binary_linux_wheel_py3.7_cu101
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda101
- binary_linux_wheel:
cu_version: cu102
name: binary_linux_wheel_py3.7_cu102
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_linux_wheel:
cu_version: cu110
name: binary_linux_wheel_py3.7_cu110
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda110
- binary_linux_wheel:
cu_version: cpu
name: binary_linux_wheel_py3.8_cpu
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_linux_wheel:
cu_version: cu92
name: binary_linux_wheel_py3.8_cu92
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda92
- binary_linux_wheel:
cu_version: cu101
name: binary_linux_wheel_py3.8_cu101
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda101
- binary_linux_wheel:
cu_version: cu102
name: binary_linux_wheel_py3.8_cu102
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_linux_wheel:
cu_version: cu110
name: binary_linux_wheel_py3.8_cu110
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda110
- binary_macos_wheel:
cu_version: cpu
name: binary_macos_wheel_py3.6_cpu
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_macos_wheel:
cu_version: cpu
name: binary_macos_wheel_py3.7_cpu
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_macos_wheel:
cu_version: cpu
name: binary_macos_wheel_py3.8_cpu
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_win_wheel:
cu_version: cpu
filters:
branches:
only: master
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: binary_win_wheel_py3.6_cpu
python_version: '3.6'
- binary_win_wheel:
cu_version: cu101
filters:
branches:
only: master
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: binary_win_wheel_py3.6_cu101
python_version: '3.6'
- binary_win_wheel:
cu_version: cu102
filters:
branches:
only: master
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: binary_win_wheel_py3.6_cu102
python_version: '3.6'
- binary_win_wheel:
cu_version: cu110
filters:
branches:
only: master
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: binary_win_wheel_py3.6_cu110
python_version: '3.6'
- binary_win_wheel:
cu_version: cpu
filters:
branches:
only: master
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: binary_win_wheel_py3.7_cpu
python_version: '3.7'
- binary_win_wheel:
cu_version: cu101
filters:
branches:
only: master
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: binary_win_wheel_py3.7_cu101
python_version: '3.7'
- binary_win_wheel:
cu_version: cu102
filters:
branches:
only: master
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: binary_win_wheel_py3.7_cu102
python_version: '3.7'
- binary_win_wheel:
cu_version: cu110
filters:
branches:
only: master
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: binary_win_wheel_py3.7_cu110
python_version: '3.7'
- binary_win_wheel:
cu_version: cpu
name: binary_win_wheel_py3.8_cpu
python_version: '3.8'
- binary_win_wheel:
cu_version: cu101
filters:
branches:
only: master
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: binary_win_wheel_py3.8_cu101
python_version: '3.8'
- binary_win_wheel:
cu_version: cu102
filters:
branches:
only: master
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: binary_win_wheel_py3.8_cu102
python_version: '3.8'
- binary_win_wheel:
cu_version: cu110
name: binary_win_wheel_py3.8_cu110
python_version: '3.8'
- binary_linux_conda:
cu_version: cpu
name: binary_linux_conda_py3.6_cpu
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_linux_conda:
cu_version: cu92
name: binary_linux_conda_py3.6_cu92
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda92
- binary_linux_conda:
cu_version: cu101
name: binary_linux_conda_py3.6_cu101
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda101
- binary_linux_conda:
cu_version: cu102
name: binary_linux_conda_py3.6_cu102
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_linux_conda:
cu_version: cu110
name: binary_linux_conda_py3.6_cu110
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda110
- binary_linux_conda:
cu_version: cpu
name: binary_linux_conda_py3.7_cpu
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_linux_conda:
cu_version: cu92
name: binary_linux_conda_py3.7_cu92
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda92
- binary_linux_conda:
cu_version: cu101
name: binary_linux_conda_py3.7_cu101
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda101
- binary_linux_conda:
cu_version: cu102
name: binary_linux_conda_py3.7_cu102
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_linux_conda:
cu_version: cu110
name: binary_linux_conda_py3.7_cu110
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda110
- binary_linux_conda:
cu_version: cpu
name: binary_linux_conda_py3.8_cpu
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_linux_conda:
cu_version: cu92
name: binary_linux_conda_py3.8_cu92
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda92
- binary_linux_conda:
cu_version: cu101
name: binary_linux_conda_py3.8_cu101
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda101
- binary_linux_conda:
cu_version: cu102
name: binary_linux_conda_py3.8_cu102
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_linux_conda:
cu_version: cu110
name: binary_linux_conda_py3.8_cu110
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda110
- binary_macos_conda:
cu_version: cpu
name: binary_macos_conda_py3.6_cpu
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_macos_conda:
cu_version: cpu
name: binary_macos_conda_py3.7_cpu
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_macos_conda:
cu_version: cpu
name: binary_macos_conda_py3.8_cpu
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_win_conda:
cu_version: cpu
filters:
branches:
only: master
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: binary_win_conda_py3.6_cpu
python_version: '3.6'
- binary_win_conda:
cu_version: cu101
filters:
branches:
only: master
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: binary_win_conda_py3.6_cu101
python_version: '3.6'
- binary_win_conda:
cu_version: cu102
filters:
branches:
only: master
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: binary_win_conda_py3.6_cu102
python_version: '3.6'
- binary_win_conda:
cu_version: cu110
filters:
branches:
only: master
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: binary_win_conda_py3.6_cu110
python_version: '3.6'
- binary_win_conda:
cu_version: cpu
filters:
branches:
only: master
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: binary_win_conda_py3.7_cpu
python_version: '3.7'
- binary_win_conda:
cu_version: cu101
filters:
branches:
only: master
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: binary_win_conda_py3.7_cu101
python_version: '3.7'
- binary_win_conda:
cu_version: cu102
filters:
branches:
only: master
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: binary_win_conda_py3.7_cu102
python_version: '3.7'
- binary_win_conda:
cu_version: cu110
filters:
branches:
only: master
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: binary_win_conda_py3.7_cu110
python_version: '3.7'
- binary_win_conda:
cu_version: cpu
name: binary_win_conda_py3.8_cpu
python_version: '3.8'
- binary_win_conda:
cu_version: cu101
filters:
branches:
only: master
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: binary_win_conda_py3.8_cu101
python_version: '3.8'
- binary_win_conda:
cu_version: cu102
filters:
branches:
only: master
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: binary_win_conda_py3.8_cu102
python_version: '3.8'
- binary_win_conda:
cu_version: cu110
name: binary_win_conda_py3.8_cu110
python_version: '3.8'
- python_lint
- python_type_check
- clang_format
unittest:
jobs:
- unittest_linux_cpu:
cu_version: cpu
name: unittest_linux_cpu_py3.6
python_version: '3.6'
- unittest_linux_cpu:
cu_version: cpu
name: unittest_linux_cpu_py3.7
python_version: '3.7'
- unittest_linux_cpu:
cu_version: cpu
name: unittest_linux_cpu_py3.8
python_version: '3.8'
- unittest_linux_gpu:
cu_version: cu101
filters:
branches:
only:
- master
- nightly
name: unittest_linux_gpu_py3.6
python_version: '3.6'
- unittest_linux_gpu:
cu_version: cu101
filters:
branches:
only:
- master
- nightly
name: unittest_linux_gpu_py3.7
python_version: '3.7'
- unittest_linux_gpu:
cu_version: cu101
name: unittest_linux_gpu_py3.8
python_version: '3.8'
- unittest_windows_cpu:
cu_version: cpu
name: unittest_windows_cpu_py3.6
python_version: '3.6'
- unittest_windows_cpu:
cu_version: cpu
name: unittest_windows_cpu_py3.7
python_version: '3.7'
- unittest_windows_cpu:
cu_version: cpu
name: unittest_windows_cpu_py3.8
python_version: '3.8'
- unittest_windows_gpu:
cu_version: cu101
filters:
branches:
only:
- master
- nightly
name: unittest_windows_gpu_py3.6
python_version: '3.6'
- unittest_windows_gpu:
cu_version: cu101
filters:
branches:
only:
- master
- nightly
name: unittest_windows_gpu_py3.7
python_version: '3.7'
- unittest_windows_gpu:
cu_version: cu101
name: unittest_windows_gpu_py3.8
python_version: '3.8'
- unittest_macos_cpu:
cu_version: cpu
name: unittest_macos_cpu_py3.6
python_version: '3.6'
- unittest_macos_cpu:
cu_version: cpu
name: unittest_macos_cpu_py3.7
python_version: '3.7'
- unittest_macos_cpu:
cu_version: cpu
name: unittest_macos_cpu_py3.8
python_version: '3.8'
cmake:
jobs:
- cmake_linux_cpu:
cu_version: cpu
name: cmake_linux_cpu
python_version: '3.8'
- cmake_linux_gpu:
cu_version: cu101
name: cmake_linux_gpu
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda101
- cmake_windows_cpu:
cu_version: cpu
name: cmake_windows_cpu
python_version: '3.8'
- cmake_windows_gpu:
cu_version: cu101
name: cmake_windows_gpu
python_version: '3.8'
- cmake_macos_cpu:
cu_version: cpu
name: cmake_macos_cpu
python_version: '3.8'
nightly:
jobs:
- circleci_consistency
- python_lint
- python_type_check
- clang_format
- binary_linux_wheel:
cu_version: cpu
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.6_cpu
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.6_cpu_upload
requires:
- nightly_binary_linux_wheel_py3.6_cpu
subfolder: cpu/
- smoke_test_linux_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_wheel_py3.6_cpu_smoke_test_pip
python_version: '3.6'
requires:
- nightly_binary_linux_wheel_py3.6_cpu_upload
- binary_linux_wheel:
cu_version: cu92
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.6_cu92
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda92
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.6_cu92_upload
requires:
- nightly_binary_linux_wheel_py3.6_cu92
subfolder: cu92/
- smoke_test_linux_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_wheel_py3.6_cu92_smoke_test_pip
python_version: '3.6'
requires:
- nightly_binary_linux_wheel_py3.6_cu92_upload
- binary_linux_wheel:
cu_version: cu101
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.6_cu101
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda101
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.6_cu101_upload
requires:
- nightly_binary_linux_wheel_py3.6_cu101
subfolder: cu101/
- smoke_test_linux_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_wheel_py3.6_cu101_smoke_test_pip
python_version: '3.6'
requires:
- nightly_binary_linux_wheel_py3.6_cu101_upload
- binary_linux_wheel:
cu_version: cu102
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.6_cu102
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.6_cu102_upload
requires:
- nightly_binary_linux_wheel_py3.6_cu102
subfolder: cu102/
- smoke_test_linux_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_wheel_py3.6_cu102_smoke_test_pip
python_version: '3.6'
requires:
- nightly_binary_linux_wheel_py3.6_cu102_upload
- binary_linux_wheel:
cu_version: cu110
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.6_cu110
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda110
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.6_cu110_upload
requires:
- nightly_binary_linux_wheel_py3.6_cu110
subfolder: cu110/
- smoke_test_linux_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_wheel_py3.6_cu110_smoke_test_pip
python_version: '3.6'
requires:
- nightly_binary_linux_wheel_py3.6_cu110_upload
- binary_linux_wheel:
cu_version: cpu
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.7_cpu
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.7_cpu_upload
requires:
- nightly_binary_linux_wheel_py3.7_cpu
subfolder: cpu/
- smoke_test_linux_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_wheel_py3.7_cpu_smoke_test_pip
python_version: '3.7'
requires:
- nightly_binary_linux_wheel_py3.7_cpu_upload
- binary_linux_wheel:
cu_version: cu92
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.7_cu92
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda92
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.7_cu92_upload
requires:
- nightly_binary_linux_wheel_py3.7_cu92
subfolder: cu92/
- smoke_test_linux_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_wheel_py3.7_cu92_smoke_test_pip
python_version: '3.7'
requires:
- nightly_binary_linux_wheel_py3.7_cu92_upload
- binary_linux_wheel:
cu_version: cu101
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.7_cu101
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda101
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.7_cu101_upload
requires:
- nightly_binary_linux_wheel_py3.7_cu101
subfolder: cu101/
- smoke_test_linux_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_wheel_py3.7_cu101_smoke_test_pip
python_version: '3.7'
requires:
- nightly_binary_linux_wheel_py3.7_cu101_upload
- binary_linux_wheel:
cu_version: cu102
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.7_cu102
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.7_cu102_upload
requires:
- nightly_binary_linux_wheel_py3.7_cu102
subfolder: cu102/
- smoke_test_linux_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_wheel_py3.7_cu102_smoke_test_pip
python_version: '3.7'
requires:
- nightly_binary_linux_wheel_py3.7_cu102_upload
- binary_linux_wheel:
cu_version: cu110
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.7_cu110
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda110
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.7_cu110_upload
requires:
- nightly_binary_linux_wheel_py3.7_cu110
subfolder: cu110/
- smoke_test_linux_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_wheel_py3.7_cu110_smoke_test_pip
python_version: '3.7'
requires:
- nightly_binary_linux_wheel_py3.7_cu110_upload
- binary_linux_wheel:
cu_version: cpu
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.8_cpu
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.8_cpu_upload
requires:
- nightly_binary_linux_wheel_py3.8_cpu
subfolder: cpu/
- smoke_test_linux_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_wheel_py3.8_cpu_smoke_test_pip
python_version: '3.8'
requires:
- nightly_binary_linux_wheel_py3.8_cpu_upload
- binary_linux_wheel:
cu_version: cu92
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.8_cu92
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda92
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.8_cu92_upload
requires:
- nightly_binary_linux_wheel_py3.8_cu92
subfolder: cu92/
- smoke_test_linux_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_wheel_py3.8_cu92_smoke_test_pip
python_version: '3.8'
requires:
- nightly_binary_linux_wheel_py3.8_cu92_upload
- binary_linux_wheel:
cu_version: cu101
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.8_cu101
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda101
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.8_cu101_upload
requires:
- nightly_binary_linux_wheel_py3.8_cu101
subfolder: cu101/
- smoke_test_linux_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_wheel_py3.8_cu101_smoke_test_pip
python_version: '3.8'
requires:
- nightly_binary_linux_wheel_py3.8_cu101_upload
- binary_linux_wheel:
cu_version: cu102
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.8_cu102
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.8_cu102_upload
requires:
- nightly_binary_linux_wheel_py3.8_cu102
subfolder: cu102/
- smoke_test_linux_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_wheel_py3.8_cu102_smoke_test_pip
python_version: '3.8'
requires:
- nightly_binary_linux_wheel_py3.8_cu102_upload
- binary_linux_wheel:
cu_version: cu110
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.8_cu110
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda110
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_wheel_py3.8_cu110_upload
requires:
- nightly_binary_linux_wheel_py3.8_cu110
subfolder: cu110/
- smoke_test_linux_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_wheel_py3.8_cu110_smoke_test_pip
python_version: '3.8'
requires:
- nightly_binary_linux_wheel_py3.8_cu110_upload
- binary_macos_wheel:
cu_version: cpu
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_macos_wheel_py3.6_cpu
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_macos_wheel_py3.6_cpu_upload
requires:
- nightly_binary_macos_wheel_py3.6_cpu
subfolder: ''
- binary_macos_wheel:
cu_version: cpu
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_macos_wheel_py3.7_cpu
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_macos_wheel_py3.7_cpu_upload
requires:
- nightly_binary_macos_wheel_py3.7_cpu
subfolder: ''
- binary_macos_wheel:
cu_version: cpu
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_macos_wheel_py3.8_cpu
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_macos_wheel_py3.8_cpu_upload
requires:
- nightly_binary_macos_wheel_py3.8_cpu
subfolder: ''
- binary_win_wheel:
cu_version: cpu
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.6_cpu
python_version: '3.6'
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.6_cpu_upload
requires:
- nightly_binary_win_wheel_py3.6_cpu
subfolder: cpu/
- smoke_test_win_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_win_wheel_py3.6_cpu_smoke_test_pip
python_version: '3.6'
requires:
- nightly_binary_win_wheel_py3.6_cpu_upload
- binary_win_wheel:
cu_version: cu101
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.6_cu101
python_version: '3.6'
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.6_cu101_upload
requires:
- nightly_binary_win_wheel_py3.6_cu101
subfolder: cu101/
- smoke_test_win_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_win_wheel_py3.6_cu101_smoke_test_pip
python_version: '3.6'
requires:
- nightly_binary_win_wheel_py3.6_cu101_upload
- binary_win_wheel:
cu_version: cu102
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.6_cu102
python_version: '3.6'
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.6_cu102_upload
requires:
- nightly_binary_win_wheel_py3.6_cu102
subfolder: cu102/
- smoke_test_win_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_win_wheel_py3.6_cu102_smoke_test_pip
python_version: '3.6'
requires:
- nightly_binary_win_wheel_py3.6_cu102_upload
- binary_win_wheel:
cu_version: cu110
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.6_cu110
python_version: '3.6'
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.6_cu110_upload
requires:
- nightly_binary_win_wheel_py3.6_cu110
subfolder: cu110/
- smoke_test_win_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_win_wheel_py3.6_cu110_smoke_test_pip
python_version: '3.6'
requires:
- nightly_binary_win_wheel_py3.6_cu110_upload
- binary_win_wheel:
cu_version: cpu
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.7_cpu
python_version: '3.7'
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.7_cpu_upload
requires:
- nightly_binary_win_wheel_py3.7_cpu
subfolder: cpu/
- smoke_test_win_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_win_wheel_py3.7_cpu_smoke_test_pip
python_version: '3.7'
requires:
- nightly_binary_win_wheel_py3.7_cpu_upload
- binary_win_wheel:
cu_version: cu101
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.7_cu101
python_version: '3.7'
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.7_cu101_upload
requires:
- nightly_binary_win_wheel_py3.7_cu101
subfolder: cu101/
- smoke_test_win_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_win_wheel_py3.7_cu101_smoke_test_pip
python_version: '3.7'
requires:
- nightly_binary_win_wheel_py3.7_cu101_upload
- binary_win_wheel:
cu_version: cu102
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.7_cu102
python_version: '3.7'
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.7_cu102_upload
requires:
- nightly_binary_win_wheel_py3.7_cu102
subfolder: cu102/
- smoke_test_win_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_win_wheel_py3.7_cu102_smoke_test_pip
python_version: '3.7'
requires:
- nightly_binary_win_wheel_py3.7_cu102_upload
- binary_win_wheel:
cu_version: cu110
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.7_cu110
python_version: '3.7'
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.7_cu110_upload
requires:
- nightly_binary_win_wheel_py3.7_cu110
subfolder: cu110/
- smoke_test_win_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_win_wheel_py3.7_cu110_smoke_test_pip
python_version: '3.7'
requires:
- nightly_binary_win_wheel_py3.7_cu110_upload
- binary_win_wheel:
cu_version: cpu
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.8_cpu
python_version: '3.8'
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.8_cpu_upload
requires:
- nightly_binary_win_wheel_py3.8_cpu
subfolder: cpu/
- smoke_test_win_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_win_wheel_py3.8_cpu_smoke_test_pip
python_version: '3.8'
requires:
- nightly_binary_win_wheel_py3.8_cpu_upload
- binary_win_wheel:
cu_version: cu101
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.8_cu101
python_version: '3.8'
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.8_cu101_upload
requires:
- nightly_binary_win_wheel_py3.8_cu101
subfolder: cu101/
- smoke_test_win_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_win_wheel_py3.8_cu101_smoke_test_pip
python_version: '3.8'
requires:
- nightly_binary_win_wheel_py3.8_cu101_upload
- binary_win_wheel:
cu_version: cu102
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.8_cu102
python_version: '3.8'
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.8_cu102_upload
requires:
- nightly_binary_win_wheel_py3.8_cu102
subfolder: cu102/
- smoke_test_win_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_win_wheel_py3.8_cu102_smoke_test_pip
python_version: '3.8'
requires:
- nightly_binary_win_wheel_py3.8_cu102_upload
- binary_win_wheel:
cu_version: cu110
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.8_cu110
python_version: '3.8'
- binary_wheel_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_wheel_py3.8_cu110_upload
requires:
- nightly_binary_win_wheel_py3.8_cu110
subfolder: cu110/
- smoke_test_win_pip:
filters:
branches:
only:
- nightly
name: nightly_binary_win_wheel_py3.8_cu110_smoke_test_pip
python_version: '3.8'
requires:
- nightly_binary_win_wheel_py3.8_cu110_upload
- binary_linux_conda:
cu_version: cpu
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.6_cpu
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.6_cpu_upload
requires:
- nightly_binary_linux_conda_py3.6_cpu
- smoke_test_linux_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_conda_py3.6_cpu_smoke_test_conda
python_version: '3.6'
requires:
- nightly_binary_linux_conda_py3.6_cpu_upload
- binary_linux_conda:
cu_version: cu92
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.6_cu92
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda92
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.6_cu92_upload
requires:
- nightly_binary_linux_conda_py3.6_cu92
- smoke_test_linux_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_conda_py3.6_cu92_smoke_test_conda
python_version: '3.6'
requires:
- nightly_binary_linux_conda_py3.6_cu92_upload
- binary_linux_conda:
cu_version: cu101
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.6_cu101
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda101
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.6_cu101_upload
requires:
- nightly_binary_linux_conda_py3.6_cu101
- smoke_test_linux_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_conda_py3.6_cu101_smoke_test_conda
python_version: '3.6'
requires:
- nightly_binary_linux_conda_py3.6_cu101_upload
- binary_linux_conda:
cu_version: cu102
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.6_cu102
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.6_cu102_upload
requires:
- nightly_binary_linux_conda_py3.6_cu102
- smoke_test_linux_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_conda_py3.6_cu102_smoke_test_conda
python_version: '3.6'
requires:
- nightly_binary_linux_conda_py3.6_cu102_upload
- binary_linux_conda:
cu_version: cu110
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.6_cu110
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda110
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.6_cu110_upload
requires:
- nightly_binary_linux_conda_py3.6_cu110
- smoke_test_linux_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_conda_py3.6_cu110_smoke_test_conda
python_version: '3.6'
requires:
- nightly_binary_linux_conda_py3.6_cu110_upload
- binary_linux_conda:
cu_version: cpu
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.7_cpu
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.7_cpu_upload
requires:
- nightly_binary_linux_conda_py3.7_cpu
- smoke_test_linux_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_conda_py3.7_cpu_smoke_test_conda
python_version: '3.7'
requires:
- nightly_binary_linux_conda_py3.7_cpu_upload
- binary_linux_conda:
cu_version: cu92
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.7_cu92
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda92
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.7_cu92_upload
requires:
- nightly_binary_linux_conda_py3.7_cu92
- smoke_test_linux_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_conda_py3.7_cu92_smoke_test_conda
python_version: '3.7'
requires:
- nightly_binary_linux_conda_py3.7_cu92_upload
- binary_linux_conda:
cu_version: cu101
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.7_cu101
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda101
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.7_cu101_upload
requires:
- nightly_binary_linux_conda_py3.7_cu101
- smoke_test_linux_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_conda_py3.7_cu101_smoke_test_conda
python_version: '3.7'
requires:
- nightly_binary_linux_conda_py3.7_cu101_upload
- binary_linux_conda:
cu_version: cu102
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.7_cu102
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.7_cu102_upload
requires:
- nightly_binary_linux_conda_py3.7_cu102
- smoke_test_linux_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_conda_py3.7_cu102_smoke_test_conda
python_version: '3.7'
requires:
- nightly_binary_linux_conda_py3.7_cu102_upload
- binary_linux_conda:
cu_version: cu110
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.7_cu110
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda110
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.7_cu110_upload
requires:
- nightly_binary_linux_conda_py3.7_cu110
- smoke_test_linux_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_conda_py3.7_cu110_smoke_test_conda
python_version: '3.7'
requires:
- nightly_binary_linux_conda_py3.7_cu110_upload
- binary_linux_conda:
cu_version: cpu
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.8_cpu
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.8_cpu_upload
requires:
- nightly_binary_linux_conda_py3.8_cpu
- smoke_test_linux_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_conda_py3.8_cpu_smoke_test_conda
python_version: '3.8'
requires:
- nightly_binary_linux_conda_py3.8_cpu_upload
- binary_linux_conda:
cu_version: cu92
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.8_cu92
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda92
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.8_cu92_upload
requires:
- nightly_binary_linux_conda_py3.8_cu92
- smoke_test_linux_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_conda_py3.8_cu92_smoke_test_conda
python_version: '3.8'
requires:
- nightly_binary_linux_conda_py3.8_cu92_upload
- binary_linux_conda:
cu_version: cu101
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.8_cu101
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda101
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.8_cu101_upload
requires:
- nightly_binary_linux_conda_py3.8_cu101
- smoke_test_linux_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_conda_py3.8_cu101_smoke_test_conda
python_version: '3.8'
requires:
- nightly_binary_linux_conda_py3.8_cu101_upload
- binary_linux_conda:
cu_version: cu102
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.8_cu102
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.8_cu102_upload
requires:
- nightly_binary_linux_conda_py3.8_cu102
- smoke_test_linux_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_conda_py3.8_cu102_smoke_test_conda
python_version: '3.8'
requires:
- nightly_binary_linux_conda_py3.8_cu102_upload
- binary_linux_conda:
cu_version: cu110
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.8_cu110
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda110
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_linux_conda_py3.8_cu110_upload
requires:
- nightly_binary_linux_conda_py3.8_cu110
- smoke_test_linux_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_linux_conda_py3.8_cu110_smoke_test_conda
python_version: '3.8'
requires:
- nightly_binary_linux_conda_py3.8_cu110_upload
- binary_macos_conda:
cu_version: cpu
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_macos_conda_py3.6_cpu
python_version: '3.6'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_macos_conda_py3.6_cpu_upload
requires:
- nightly_binary_macos_conda_py3.6_cpu
- binary_macos_conda:
cu_version: cpu
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_macos_conda_py3.7_cpu
python_version: '3.7'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_macos_conda_py3.7_cpu_upload
requires:
- nightly_binary_macos_conda_py3.7_cpu
- binary_macos_conda:
cu_version: cpu
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_macos_conda_py3.8_cpu
python_version: '3.8'
wheel_docker_image: pytorch/manylinux-cuda102
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_macos_conda_py3.8_cpu_upload
requires:
- nightly_binary_macos_conda_py3.8_cpu
- binary_win_conda:
cu_version: cpu
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.6_cpu
python_version: '3.6'
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.6_cpu_upload
requires:
- nightly_binary_win_conda_py3.6_cpu
- smoke_test_win_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_win_conda_py3.6_cpu_smoke_test_conda
python_version: '3.6'
requires:
- nightly_binary_win_conda_py3.6_cpu_upload
- binary_win_conda:
cu_version: cu101
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.6_cu101
python_version: '3.6'
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.6_cu101_upload
requires:
- nightly_binary_win_conda_py3.6_cu101
- smoke_test_win_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_win_conda_py3.6_cu101_smoke_test_conda
python_version: '3.6'
requires:
- nightly_binary_win_conda_py3.6_cu101_upload
- binary_win_conda:
cu_version: cu102
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.6_cu102
python_version: '3.6'
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.6_cu102_upload
requires:
- nightly_binary_win_conda_py3.6_cu102
- smoke_test_win_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_win_conda_py3.6_cu102_smoke_test_conda
python_version: '3.6'
requires:
- nightly_binary_win_conda_py3.6_cu102_upload
- binary_win_conda:
cu_version: cu110
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.6_cu110
python_version: '3.6'
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.6_cu110_upload
requires:
- nightly_binary_win_conda_py3.6_cu110
- smoke_test_win_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_win_conda_py3.6_cu110_smoke_test_conda
python_version: '3.6'
requires:
- nightly_binary_win_conda_py3.6_cu110_upload
- binary_win_conda:
cu_version: cpu
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.7_cpu
python_version: '3.7'
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.7_cpu_upload
requires:
- nightly_binary_win_conda_py3.7_cpu
- smoke_test_win_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_win_conda_py3.7_cpu_smoke_test_conda
python_version: '3.7'
requires:
- nightly_binary_win_conda_py3.7_cpu_upload
- binary_win_conda:
cu_version: cu101
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.7_cu101
python_version: '3.7'
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.7_cu101_upload
requires:
- nightly_binary_win_conda_py3.7_cu101
- smoke_test_win_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_win_conda_py3.7_cu101_smoke_test_conda
python_version: '3.7'
requires:
- nightly_binary_win_conda_py3.7_cu101_upload
- binary_win_conda:
cu_version: cu102
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.7_cu102
python_version: '3.7'
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.7_cu102_upload
requires:
- nightly_binary_win_conda_py3.7_cu102
- smoke_test_win_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_win_conda_py3.7_cu102_smoke_test_conda
python_version: '3.7'
requires:
- nightly_binary_win_conda_py3.7_cu102_upload
- binary_win_conda:
cu_version: cu110
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.7_cu110
python_version: '3.7'
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.7_cu110_upload
requires:
- nightly_binary_win_conda_py3.7_cu110
- smoke_test_win_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_win_conda_py3.7_cu110_smoke_test_conda
python_version: '3.7'
requires:
- nightly_binary_win_conda_py3.7_cu110_upload
- binary_win_conda:
cu_version: cpu
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.8_cpu
python_version: '3.8'
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.8_cpu_upload
requires:
- nightly_binary_win_conda_py3.8_cpu
- smoke_test_win_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_win_conda_py3.8_cpu_smoke_test_conda
python_version: '3.8'
requires:
- nightly_binary_win_conda_py3.8_cpu_upload
- binary_win_conda:
cu_version: cu101
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.8_cu101
python_version: '3.8'
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.8_cu101_upload
requires:
- nightly_binary_win_conda_py3.8_cu101
- smoke_test_win_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_win_conda_py3.8_cu101_smoke_test_conda
python_version: '3.8'
requires:
- nightly_binary_win_conda_py3.8_cu101_upload
- binary_win_conda:
cu_version: cu102
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.8_cu102
python_version: '3.8'
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.8_cu102_upload
requires:
- nightly_binary_win_conda_py3.8_cu102
- smoke_test_win_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_win_conda_py3.8_cu102_smoke_test_conda
python_version: '3.8'
requires:
- nightly_binary_win_conda_py3.8_cu102_upload
- binary_win_conda:
cu_version: cu110
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.8_cu110
python_version: '3.8'
- binary_conda_upload:
context: org-member
filters:
branches:
only: nightly
tags:
only: /v[0-9]+(\.[0-9]+)*-rc[0-9]+/
name: nightly_binary_win_conda_py3.8_cu110_upload
requires:
- nightly_binary_win_conda_py3.8_cu110
- smoke_test_win_conda:
filters:
branches:
only:
- nightly
name: nightly_binary_win_conda_py3.8_cu110_smoke_test_conda
python_version: '3.8'
requires:
- nightly_binary_win_conda_py3.8_cu110_upload
docker_build:
triggers:
- schedule:
cron: "0 10 * * 0"
filters:
branches:
only:
- master
jobs:
- smoke_test_docker_image_build:
context: org-member
\ No newline at end of file
version: 2.1
# How to test the Linux jobs:
# - Install CircleCI local CLI: https://circleci.com/docs/2.0/local-cli/
# - circleci config process .circleci/config.yml > gen.yml && circleci local execute -c gen.yml --job binary_linux_wheel_py3.7
# - Replace binary_linux_wheel_py3.7 with the name of the job you want to test.
# Job names are 'name:' key.
executors:
windows-cpu:
machine:
resource_class: windows.xlarge
image: windows-server-2019-vs2019:stable
shell: bash.exe
windows-gpu:
machine:
resource_class: windows.gpu.nvidia.medium
image: windows-server-2019-nvidia:stable
shell: bash.exe
commands:
checkout_merge:
description: "checkout merge branch"
steps:
- checkout
# - run:
# name: Checkout merge branch
# command: |
# set -ex
# BRANCH=$(git rev-parse --abbrev-ref HEAD)
# if [[ "$BRANCH" != "master" ]]; then
# git fetch --force origin ${CIRCLE_BRANCH}/merge:merged/${CIRCLE_BRANCH}
# git checkout "merged/$CIRCLE_BRANCH"
# fi
designate_upload_channel:
description: "inserts the correct upload channel into ${BASH_ENV}"
steps:
- run:
name: adding UPLOAD_CHANNEL to BASH_ENV
command: |
our_upload_channel=nightly
# On tags upload to test instead
if [[ -n "${CIRCLE_TAG}" ]]; then
our_upload_channel=test
fi
echo "export UPLOAD_CHANNEL=${our_upload_channel}" >> ${BASH_ENV}
binary_common: &binary_common
parameters:
# Edit these defaults to do a release`
build_version:
description: "version number of release binary; by default, build a nightly"
type: string
default: ""
pytorch_version:
description: "PyTorch version to build against; by default, use a nightly"
type: string
default: ""
# Don't edit these
python_version:
description: "Python version to build against (e.g., 3.7)"
type: string
cu_version:
description: "CUDA version to build against, in CU format (e.g., cpu or cu100)"
type: string
default: "cpu"
unicode_abi:
description: "Python 2.7 wheel only: whether or not we are cp27mu (default: no)"
type: string
default: ""
wheel_docker_image:
description: "Wheel only: what docker image to use"
type: string
default: "pytorch/manylinux-cuda101"
environment:
PYTHON_VERSION: << parameters.python_version >>
PYTORCH_VERSION: << parameters.pytorch_version >>
UNICODE_ABI: << parameters.unicode_abi >>
CU_VERSION: << parameters.cu_version >>
smoke_test_common: &smoke_test_common
<<: *binary_common
docker:
- image: torchvision/smoke_test:latest
jobs:
circleci_consistency:
docker:
- image: circleci/python:3.7
steps:
- checkout
- run:
command: |
pip install --user --progress-bar off jinja2 pyyaml
python .circleci/regenerate.py
git diff --exit-code || (echo ".circleci/config.yml not in sync with config.yml.in! Run .circleci/regenerate.py to update config"; exit 1)
python_lint:
docker:
- image: circleci/python:3.7
steps:
- checkout
- run:
command: |
pip install --user --progress-bar off flake8 typing
flake8 --config=setup.cfg .
python_type_check:
docker:
- image: circleci/python:3.7
steps:
- checkout
- run:
command: |
sudo apt-get update -y
sudo apt install -y libturbojpeg-dev
pip install --user --progress-bar off numpy mypy
pip install --user --progress-bar off --pre torch -f https://download.pytorch.org/whl/nightly/cpu/torch_nightly.html
pip install --user --progress-bar off --editable .
mypy --config-file mypy.ini
clang_format:
docker:
- image: circleci/python:3.7
steps:
- checkout
- run:
command: |
curl https://oss-clang-format.s3.us-east-2.amazonaws.com/linux64/clang-format-linux64 -o clang-format
chmod +x clang-format
sudo mv clang-format /opt/clang-format
./travis-scripts/run-clang-format/run-clang-format.py -r torchvision/csrc --clang-format-executable /opt/clang-format
binary_linux_wheel:
<<: *binary_common
docker:
- image: << parameters.wheel_docker_image >>
resource_class: 2xlarge+
steps:
- checkout_merge
- designate_upload_channel
- run: packaging/build_wheel.sh
- store_artifacts:
path: dist
- persist_to_workspace:
root: dist
paths:
- "*"
binary_linux_conda:
<<: *binary_common
docker:
- image: "pytorch/conda-cuda"
resource_class: 2xlarge+
steps:
- checkout_merge
- designate_upload_channel
- run: packaging/build_conda.sh
- store_artifacts:
path: /opt/conda/conda-bld/linux-64
- persist_to_workspace:
root: /opt/conda/conda-bld/linux-64
paths:
- "*"
- store_test_results:
path: build_results/
binary_win_conda:
<<: *binary_common
executor: windows-cpu
steps:
- checkout_merge
- designate_upload_channel
- run:
name: Build conda packages
command: |
set -ex
source packaging/windows/internal/vc_install_helper.sh
packaging/windows/internal/cuda_install.bat
eval "$('/C/tools/miniconda3/Scripts/conda.exe' 'shell.bash' 'hook')"
conda activate base
conda install -yq conda-build "conda-package-handling!=1.5.0"
packaging/build_conda.sh
rm /C/tools/miniconda3/conda-bld/win-64/vs${VC_YEAR}*.tar.bz2
- store_artifacts:
path: C:/tools/miniconda3/conda-bld/win-64
- persist_to_workspace:
root: C:/tools/miniconda3/conda-bld/win-64
paths:
- "*"
- store_test_results:
path: build_results/
binary_win_wheel:
<<: *binary_common
executor: windows-cpu
steps:
- checkout_merge
- designate_upload_channel
- run:
name: Build wheel packages
command: |
set -ex
source packaging/windows/internal/vc_install_helper.sh
packaging/windows/internal/cuda_install.bat
packaging/build_wheel.sh
- store_artifacts:
path: dist
- persist_to_workspace:
root: dist
paths:
- "*"
- store_test_results:
path: build_results/
binary_macos_wheel:
<<: *binary_common
macos:
xcode: "9.4.1"
steps:
- checkout_merge
- designate_upload_channel
- run:
# Cannot easily deduplicate this as source'ing activate
# will set environment variables which we need to propagate
# to build_wheel.sh
command: |
curl -o conda.sh https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
sh conda.sh -b
source $HOME/miniconda3/bin/activate
packaging/build_wheel.sh
- store_artifacts:
path: dist
- persist_to_workspace:
root: dist
paths:
- "*"
binary_macos_conda:
<<: *binary_common
macos:
xcode: "9.4.1"
steps:
- checkout_merge
- designate_upload_channel
- run:
command: |
curl -o conda.sh https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
sh conda.sh -b
source $HOME/miniconda3/bin/activate
conda install -yq conda-build
packaging/build_conda.sh
- store_artifacts:
path: /Users/distiller/miniconda3/conda-bld/osx-64
- persist_to_workspace:
root: /Users/distiller/miniconda3/conda-bld/osx-64
paths:
- "*"
- store_test_results:
path: build_results/
# Requires org-member context
binary_conda_upload:
docker:
- image: continuumio/miniconda
steps:
- attach_workspace:
at: ~/workspace
- designate_upload_channel
- run:
command: |
# Prevent credential from leaking
conda install -yq anaconda-client
set -x
anaconda -t "${CONDA_PYTORCHBOT_TOKEN}" upload ~/workspace/*.tar.bz2 -u "pytorch-${UPLOAD_CHANNEL}" --label main --no-progress --force
# Requires org-member context
binary_wheel_upload:
parameters:
subfolder:
description: "What whl subfolder to upload to, e.g., blank or cu100/ (trailing slash is important)"
type: string
docker:
- image: circleci/python:3.7
steps:
- attach_workspace:
at: ~/workspace
- designate_upload_channel
- checkout
- run:
command: |
pip install --user awscli
export PATH="$HOME/.local/bin:$PATH"
# Prevent credential from leaking
set +x
export AWS_ACCESS_KEY_ID="${PYTORCH_BINARY_AWS_ACCESS_KEY_ID}"
export AWS_SECRET_ACCESS_KEY="${PYTORCH_BINARY_AWS_SECRET_ACCESS_KEY}"
set -x
for pkg in ~/workspace/*.whl; do
aws s3 cp "$pkg" "s3://pytorch/whl/${UPLOAD_CHANNEL}/<< parameters.subfolder >>" --acl public-read
done
smoke_test_linux_conda:
<<: *smoke_test_common
steps:
- attach_workspace:
at: ~/workspace
- designate_upload_channel
- run:
name: install binaries
command: |
set -x
source /usr/local/etc/profile.d/conda.sh && conda activate python${PYTHON_VERSION}
conda install -v -y -c pytorch-nightly pytorch
conda install -v -y $(ls ~/workspace/torchvision*.tar.bz2)
- run:
name: smoke test
command: |
source /usr/local/etc/profile.d/conda.sh && conda activate python${PYTHON_VERSION}
python -c "import torchvision"
smoke_test_linux_pip:
<<: *smoke_test_common
steps:
- attach_workspace:
at: ~/workspace
- designate_upload_channel
- run:
name: install binaries
command: |
set -x
source /usr/local/etc/profile.d/conda.sh && conda activate python${PYTHON_VERSION}
pip install $(ls ~/workspace/torchvision*.whl) --pre -f https://download.pytorch.org/whl/nightly/torch_nightly.html
- run:
name: smoke test
command: |
source /usr/local/etc/profile.d/conda.sh && conda activate python${PYTHON_VERSION}
python -c "import torchvision"
smoke_test_docker_image_build:
machine:
image: ubuntu-1604:201903-01
resource_class: large
environment:
image_name: torchvision/smoke_test
steps:
- checkout
- designate_upload_channel
- run:
name: Build and push Docker image
no_output_timeout: "1h"
command: |
set +x
echo "${DOCKER_HUB_TOKEN}" | docker login --username "${DOCKER_HUB_USERNAME}" --password-stdin
set -x
cd .circleci/smoke_test/docker && docker build . -t ${image_name}:${CIRCLE_WORKFLOW_ID}
docker tag ${image_name}:${CIRCLE_WORKFLOW_ID} ${image_name}:latest
docker push ${image_name}:${CIRCLE_WORKFLOW_ID}
docker push ${image_name}:latest
smoke_test_win_conda:
<<: *binary_common
executor:
name: windows-cpu
steps:
- attach_workspace:
at: ~/workspace
- designate_upload_channel
- run:
name: install binaries
command: |
set -x
eval "$('/C/tools/miniconda3/Scripts/conda.exe' 'shell.bash' 'hook')"
conda env remove -n python${PYTHON_VERSION} || true
conda create -yn python${PYTHON_VERSION} python=${PYTHON_VERSION}
conda activate python${PYTHON_VERSION}
conda install Pillow
conda install -v -y -c pytorch-nightly pytorch
conda install -v -y $(ls ~/workspace/torchvision*.tar.bz2)
- run:
name: smoke test
command: |
eval "$('/C/tools/miniconda3/Scripts/conda.exe' 'shell.bash' 'hook')"
conda activate python${PYTHON_VERSION}
python -c "import torchvision"
smoke_test_win_pip:
<<: *binary_common
executor:
name: windows-cpu
steps:
- attach_workspace:
at: ~/workspace
- designate_upload_channel
- run:
name: install binaries
command: |
set -x
eval "$('/C/tools/miniconda3/Scripts/conda.exe' 'shell.bash' 'hook')"
conda env remove -n python${PYTHON_VERSION} || true
conda create -yn python${PYTHON_VERSION} python=${PYTHON_VERSION}
conda activate python${PYTHON_VERSION}
pip install $(ls ~/workspace/torchvision*.whl) --pre -f https://download.pytorch.org/whl/nightly/torch_nightly.html
- run:
name: smoke test
command: |
eval "$('/C/tools/miniconda3/Scripts/conda.exe' 'shell.bash' 'hook')"
conda activate python${PYTHON_VERSION}
python -c "import torchvision"
unittest_linux_cpu:
<<: *binary_common
docker:
- image: "pytorch/manylinux-cuda102"
resource_class: 2xlarge+
steps:
- checkout
- designate_upload_channel
- run:
name: Generate cache key
# This will refresh cache on Sundays, nightly build should generate new cache.
command: echo "$(date +"%Y-%U")" > .circleci-weekly
- restore_cache:
{% raw %}
keys:
- env-v2-linux-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/linux/scripts/environment.yml" }}-{{ checksum ".circleci-weekly" }}
{% endraw %}
- run:
name: Setup
command: .circleci/unittest/linux/scripts/setup_env.sh
- save_cache:
{% raw %}
key: env-v2-linux-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/linux/scripts/environment.yml" }}-{{ checksum ".circleci-weekly" }}
{% endraw %}
paths:
- conda
- env
- run:
name: Install torchvision
command: .circleci/unittest/linux/scripts/install.sh
- run:
name: Run tests
command: .circleci/unittest/linux/scripts/run_test.sh
- run:
name: Post process
command: .circleci/unittest/linux/scripts/post_process.sh
- store_test_results:
path: test-results
unittest_linux_gpu:
<<: *binary_common
machine:
image: ubuntu-1604-cuda-10.1:201909-23
resource_class: gpu.small
environment:
image_name: "pytorch/manylinux-cuda101"
steps:
- checkout
- designate_upload_channel
- run:
name: Generate cache key
# This will refresh cache on Sundays, nightly build should generate new cache.
command: echo "$(date +"%Y-%U")" > .circleci-weekly
- restore_cache:
{% raw %}
keys:
- env-v2-linux-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/linux/scripts/environment.yml" }}-{{ checksum ".circleci-weekly" }}
{% endraw %}
- run:
name: Setup
command: docker run -t --gpus all -v $PWD:$PWD -w $PWD "${image_name}" .circleci/unittest/linux/scripts/setup_env.sh
- save_cache:
{% raw %}
key: env-v2-linux-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/linux/scripts/environment.yml" }}-{{ checksum ".circleci-weekly" }}
{% endraw %}
paths:
- conda
- env
- run:
name: Install torchvision
command: docker run -t --gpus all -v $PWD:$PWD -w $PWD -e UPLOAD_CHANNEL "${image_name}" .circleci/unittest/linux/scripts/install.sh
- run:
name: Run tests
command: docker run -t --gpus all -v $PWD:$PWD -w $PWD "${image_name}" .circleci/unittest/linux/scripts/run_test.sh
- run:
name: Post Process
command: docker run -t --gpus all -v $PWD:$PWD -w $PWD "${image_name}" .circleci/unittest/linux/scripts/post_process.sh
- store_test_results:
path: test-results
unittest_windows_cpu:
<<: *binary_common
executor:
name: windows-cpu
steps:
- checkout
- designate_upload_channel
- run:
name: Generate cache key
# This will refresh cache on Sundays, nightly build should generate new cache.
command: echo "$(date +"%Y-%U")" > .circleci-weekly
- restore_cache:
{% raw %}
keys:
- env-v2-windows-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/windows/scripts/environment.yml" }}-{{ checksum ".circleci-weekly" }}
{% endraw %}
- run:
name: Setup
command: .circleci/unittest/windows/scripts/setup_env.sh
- save_cache:
{% raw %}
key: env-v2-windows-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/windows/scripts/environment.yml" }}-{{ checksum ".circleci-weekly" }}
{% endraw %}
paths:
- conda
- env
- run:
name: Install torchvision
command: .circleci/unittest/windows/scripts/install.sh
- run:
name: Run tests
command: .circleci/unittest/windows/scripts/run_test.sh
- run:
name: Post process
command: .circleci/unittest/windows/scripts/post_process.sh
- store_test_results:
path: test-results
unittest_windows_gpu:
<<: *binary_common
executor:
name: windows-gpu
environment:
CUDA_VERSION: "10.1"
steps:
- checkout
- designate_upload_channel
- run:
name: Generate cache key
# This will refresh cache on Sundays, nightly build should generate new cache.
command: echo "$(date +"%Y-%U")" > .circleci-weekly
- restore_cache:
{% raw %}
keys:
- env-v1-windows-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/windows/scripts/environment.yml" }}-{{ checksum ".circleci-weekly" }}
{% endraw %}
- run:
name: Setup
command: .circleci/unittest/windows/scripts/setup_env.sh
- save_cache:
{% raw %}
key: env-v1-windows-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/windows/scripts/environment.yml" }}-{{ checksum ".circleci-weekly" }}
{% endraw %}
paths:
- conda
- env
- run:
name: Install torchvision
command: .circleci/unittest/windows/scripts/install.sh
- run:
name: Run tests
command: .circleci/unittest/windows/scripts/run_test.sh
- run:
name: Post process
command: .circleci/unittest/windows/scripts/post_process.sh
- store_test_results:
path: test-results
unittest_macos_cpu:
<<: *binary_common
macos:
xcode: "9.4.1"
resource_class: large
steps:
- checkout
- designate_upload_channel
- run:
name: Install wget
command: HOMEBREW_NO_AUTO_UPDATE=1 brew install wget
# Disable brew auto update which is very slow
- run:
name: Generate cache key
# This will refresh cache on Sundays, nightly build should generate new cache.
command: echo "$(date +"%Y-%U")" > .circleci-weekly
- restore_cache:
{% raw %}
keys:
- env-v3-macos-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/linux/scripts/environment.yml" }}-{{ checksum ".circleci-weekly" }}
{% endraw %}
- run:
name: Setup
command: .circleci/unittest/linux/scripts/setup_env.sh
- save_cache:
{% raw %}
key: env-v3-macos-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/linux/scripts/environment.yml" }}-{{ checksum ".circleci-weekly" }}
{% endraw %}
paths:
- conda
- env
- run:
name: Install torchvision
command: .circleci/unittest/linux/scripts/install.sh
- run:
name: Run tests
command: .circleci/unittest/linux/scripts/run_test.sh
- run:
name: Post process
command: .circleci/unittest/linux/scripts/post_process.sh
- store_test_results:
path: test-results
cmake_linux_cpu:
<<: *binary_common
docker:
- image: "pytorch/manylinux-cuda102"
resource_class: 2xlarge+
steps:
- checkout_merge
- designate_upload_channel
- run:
name: Setup conda
command: .circleci/unittest/linux/scripts/setup_env.sh
- run: packaging/build_cmake.sh
cmake_linux_gpu:
<<: *binary_common
machine:
image: ubuntu-1604-cuda-10.1:201909-23
resource_class: gpu.small
environment:
PYTHON_VERSION: << parameters.python_version >>
PYTORCH_VERSION: << parameters.pytorch_version >>
UNICODE_ABI: << parameters.unicode_abi >>
CU_VERSION: << parameters.cu_version >>
steps:
- checkout_merge
- designate_upload_channel
- run:
name: Setup conda
command: docker run -e CU_VERSION -e PYTHON_VERSION -e UNICODE_ABI -e PYTORCH_VERSION -t --gpus all -v $PWD:$PWD -w $PWD << parameters.wheel_docker_image >> .circleci/unittest/linux/scripts/setup_env.sh
- run:
name: Build torchvision C++ distribution and test
command: docker run -e CU_VERSION -e PYTHON_VERSION -e UNICODE_ABI -e PYTORCH_VERSION -e UPLOAD_CHANNEL -t --gpus all -v $PWD:$PWD -w $PWD << parameters.wheel_docker_image >> packaging/build_cmake.sh
cmake_macos_cpu:
<<: *binary_common
macos:
xcode: "9.4.1"
steps:
- checkout_merge
- designate_upload_channel
- run:
command: |
curl -o conda.sh https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
sh conda.sh -b
source $HOME/miniconda3/bin/activate
conda install -yq conda-build cmake
packaging/build_cmake.sh
cmake_windows_cpu:
<<: *binary_common
executor:
name: windows-cpu
steps:
- checkout_merge
- designate_upload_channel
- run:
command: |
set -ex
source packaging/windows/internal/vc_install_helper.sh
packaging/build_cmake.sh
cmake_windows_gpu:
<<: *binary_common
executor:
name: windows-gpu
steps:
- checkout_merge
- designate_upload_channel
- run:
command: |
set -ex
source packaging/windows/internal/vc_install_helper.sh
packaging/windows/internal/cuda_install.bat
packaging/build_cmake.sh
workflows:
build:
{%- if True %}
jobs:
- circleci_consistency
{{ build_workflows(windows_latest_only=True) }}
- python_lint
- python_type_check
- clang_format
unittest:
jobs:
{{ unittest_workflows() }}
cmake:
jobs:
{{ cmake_workflows() }}
nightly:
{%- endif %}
jobs:
- circleci_consistency
- python_lint
- python_type_check
- clang_format
{{ build_workflows(prefix="nightly_", filter_branch="nightly", upload=True) }}
docker_build:
triggers:
- schedule:
cron: "0 10 * * 0"
filters:
branches:
only:
- master
jobs:
- smoke_test_docker_image_build:
context: org-member
#!/usr/bin/env python3
"""
This script should use a very simple, functional programming style.
Avoid Jinja macros in favor of native Python functions.
Don't go overboard on code generation; use Python only to generate
content that can't be easily declared statically using CircleCI's YAML API.
Data declarations (e.g. the nested loops for defining the configuration matrix)
should be at the top of the file for easy updating.
See this comment for design rationale:
https://github.com/pytorch/vision/pull/1321#issuecomment-531033978
"""
import jinja2
import yaml
import os.path
PYTHON_VERSIONS = ["3.6", "3.7", "3.8"]
def build_workflows(prefix='', filter_branch=None, upload=False, indentation=6, windows_latest_only=False):
w = []
for btype in ["wheel", "conda"]:
for os_type in ["linux", "macos", "win"]:
python_versions = PYTHON_VERSIONS
cu_versions_dict = {"linux": ["cpu", "cu92", "cu101", "cu102", "cu110"],
"win": ["cpu", "cu101", "cu102", "cu110"],
"macos": ["cpu"]}
cu_versions = cu_versions_dict[os_type]
for python_version in python_versions:
for cu_version in cu_versions:
for unicode in ([False, True] if btype == "wheel" and python_version == "2.7" else [False]):
fb = filter_branch
if windows_latest_only and os_type == "win" and filter_branch is None and \
(python_version != python_versions[-1] or
(cu_version not in [cu_versions[0], cu_versions[-1]])):
fb = "master"
w += workflow_pair(
btype, os_type, python_version, cu_version,
unicode, prefix, upload, filter_branch=fb)
return indent(indentation, w)
def workflow_pair(btype, os_type, python_version, cu_version, unicode, prefix='', upload=False, *, filter_branch=None):
w = []
unicode_suffix = "u" if unicode else ""
base_workflow_name = f"{prefix}binary_{os_type}_{btype}_py{python_version}{unicode_suffix}_{cu_version}"
w.append(generate_base_workflow(
base_workflow_name, python_version, cu_version,
unicode, os_type, btype, filter_branch=filter_branch))
if upload:
w.append(generate_upload_workflow(base_workflow_name, os_type, btype, cu_version, filter_branch=filter_branch))
if filter_branch == 'nightly' and os_type in ['linux', 'win']:
pydistro = 'pip' if btype == 'wheel' else 'conda'
w.append(generate_smoketest_workflow(pydistro, base_workflow_name, filter_branch, python_version, os_type))
return w
manylinux_images = {
"cu92": "pytorch/manylinux-cuda92",
"cu101": "pytorch/manylinux-cuda101",
"cu102": "pytorch/manylinux-cuda102",
"cu110": "pytorch/manylinux-cuda110",
}
def get_manylinux_image(cu_version):
cu_suffix = "102"
if cu_version.startswith('cu'):
cu_suffix = cu_version[len('cu'):]
return f"pytorch/manylinux-cuda{cu_suffix}"
def generate_base_workflow(base_workflow_name, python_version, cu_version,
unicode, os_type, btype, *, filter_branch=None):
d = {
"name": base_workflow_name,
"python_version": python_version,
"cu_version": cu_version,
}
if os_type != "win" and unicode:
d["unicode_abi"] = '1'
if os_type != "win":
d["wheel_docker_image"] = get_manylinux_image(cu_version)
if filter_branch is not None:
d["filters"] = {
"branches": {
"only": filter_branch
},
"tags": {
# Using a raw string here to avoid having to escape
# anything
"only": r"/v[0-9]+(\.[0-9]+)*-rc[0-9]+/"
}
}
w = f"binary_{os_type}_{btype}"
return {w: d}
def gen_filter_branch_tree(*branches):
return {"branches": {"only": [b for b in branches]}}
def generate_upload_workflow(base_workflow_name, os_type, btype, cu_version, *, filter_branch=None):
d = {
"name": f"{base_workflow_name}_upload",
"context": "org-member",
"requires": [base_workflow_name],
}
if btype == 'wheel':
d["subfolder"] = "" if os_type == 'macos' else cu_version + "/"
if filter_branch is not None:
d["filters"] = {
"branches": {
"only": filter_branch
},
"tags": {
# Using a raw string here to avoid having to escape
# anything
"only": r"/v[0-9]+(\.[0-9]+)*-rc[0-9]+/"
}
}
return {f"binary_{btype}_upload": d}
def generate_smoketest_workflow(pydistro, base_workflow_name, filter_branch, python_version, os_type):
required_build_suffix = "_upload"
required_build_name = base_workflow_name + required_build_suffix
smoke_suffix = f"smoke_test_{pydistro}"
d = {
"name": f"{base_workflow_name}_{smoke_suffix}",
"requires": [required_build_name],
"python_version": python_version,
}
if filter_branch:
d["filters"] = gen_filter_branch_tree(filter_branch)
return {"smoke_test_{os_type}_{pydistro}".format(os_type=os_type, pydistro=pydistro): d}
def indent(indentation, data_list):
return ("\n" + " " * indentation).join(
yaml.dump(data_list, default_flow_style=False).splitlines())
def unittest_workflows(indentation=6):
jobs = []
for os_type in ["linux", "windows", "macos"]:
for device_type in ["cpu", "gpu"]:
if os_type == "macos" and device_type == "gpu":
continue
for i, python_version in enumerate(PYTHON_VERSIONS):
job = {
"name": f"unittest_{os_type}_{device_type}_py{python_version}",
"python_version": python_version,
}
if device_type == 'gpu':
if python_version != "3.8":
job['filters'] = gen_filter_branch_tree('master', 'nightly')
job['cu_version'] = 'cu101'
else:
job['cu_version'] = 'cpu'
jobs.append({f"unittest_{os_type}_{device_type}": job})
return indent(indentation, jobs)
def cmake_workflows(indentation=6):
jobs = []
python_version = '3.8'
for os_type in ['linux', 'windows', 'macos']:
# Skip OSX CUDA
device_types = ['cpu', 'gpu'] if os_type != 'macos' else ['cpu']
for device in device_types:
job = {
'name': f'cmake_{os_type}_{device}',
'python_version': python_version
}
job['cu_version'] = 'cu101' if device == 'gpu' else 'cpu'
if device == 'gpu' and os_type == 'linux':
job['wheel_docker_image'] = 'pytorch/manylinux-cuda101'
jobs.append({f'cmake_{os_type}_{device}': job})
return indent(indentation, jobs)
if __name__ == "__main__":
d = os.path.dirname(__file__)
env = jinja2.Environment(
loader=jinja2.FileSystemLoader(d),
lstrip_blocks=True,
autoescape=False,
)
with open(os.path.join(d, 'config.yml'), 'w') as f:
f.write(env.get_template('config.yml.in').render(
build_workflows=build_workflows,
unittest_workflows=unittest_workflows,
cmake_workflows=cmake_workflows,
))
# this Dockerfile is for torchvision smoke test, it will be created periodically via CI system
# if you need to do it locally, follow below steps once you have Docker installed
# assuming you're within the directory where this Dockerfile located
# $ docker build . -t torchvision/smoketest
# if you want to push to aws ecr, make sure you have the rights to write to ECR, then run
# $ eval $(aws ecr get-login --region us-east-1 --no-include-email)
# $ export MYTAG=localbuild ## you can choose whatever tag you like
# $ docker tag torchvision/smoketest 308535385114.dkr.ecr.us-east-1.amazonaws.com/torchvision/smoke_test:${MYTAG}
# $ docker push 308535385114.dkr.ecr.us-east-1.amazonaws.com/torchvision/smoke_test:${MYTAG}
FROM ubuntu:latest
RUN apt-get -qq update && apt-get -qq -y install curl bzip2 libsox-fmt-all \
&& curl -sSL https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -o /tmp/miniconda.sh \
&& bash /tmp/miniconda.sh -bfp /usr/local \
&& rm -rf /tmp/miniconda.sh \
&& conda install -y python=3 \
&& conda update conda \
&& apt-get -qq -y remove curl bzip2 \
&& apt-get -qq -y autoremove \
&& apt-get autoclean \
&& rm -rf /var/lib/apt/lists/* /var/log/dpkg.log \
&& conda clean --all --yes
ENV PATH /opt/conda/bin:$PATH
RUN conda create -y --name python3.6 python=3.6
RUN conda create -y --name python3.7 python=3.7
RUN conda create -y --name python3.8 python=3.8
SHELL [ "/bin/bash", "-c" ]
RUN echo "source /usr/local/etc/profile.d/conda.sh" >> ~/.bashrc
RUN source /usr/local/etc/profile.d/conda.sh && conda activate python3.6 && conda install -y numpy Pillow
RUN source /usr/local/etc/profile.d/conda.sh && conda activate python3.7 && conda install -y numpy Pillow
RUN source /usr/local/etc/profile.d/conda.sh && conda activate python3.8 && conda install -y numpy Pillow
CMD [ "/bin/bash"]
channels:
- pytorch
- defaults
dependencies:
- numpy
- pytest
- pytest-cov
- codecov
- pip
- libpng
- jpeg
- ffmpeg=4.2
- ca-certificates
- pip:
- future
- pillow>=4.1.1
- scipy
- av
\ No newline at end of file
#!/usr/bin/env bash
unset PYTORCH_VERSION
# For unittest, nightly PyTorch is used as the following section,
# so no need to set PYTORCH_VERSION.
# In fact, keeping PYTORCH_VERSION forces us to hardcode PyTorch version in config.
set -e
eval "$(./conda/bin/conda shell.bash hook)"
conda activate ./env
if [ "${CU_VERSION:-}" == cpu ] ; then
cudatoolkit="cpuonly"
else
if [[ ${#CU_VERSION} -eq 4 ]]; then
CUDA_VERSION="${CU_VERSION:2:1}.${CU_VERSION:3:1}"
elif [[ ${#CU_VERSION} -eq 5 ]]; then
CUDA_VERSION="${CU_VERSION:2:2}.${CU_VERSION:4:1}"
fi
echo "Using CUDA $CUDA_VERSION as determined by CU_VERSION"
version="$(python -c "print('.'.join(\"${CUDA_VERSION}\".split('.')[:2]))")"
cudatoolkit="cudatoolkit=${version}"
fi
printf "Installing PyTorch with %s\n" "${cudatoolkit}"
conda install -y -c "pytorch-${UPLOAD_CHANNEL}" pytorch "${cudatoolkit}"
printf "* Installing torchvision\n"
python setup.py develop
#!/usr/bin/env bash
set -e
eval "$(./conda/bin/conda shell.bash hook)"
conda activate ./env
codecov
\ No newline at end of file
#!/usr/bin/env bash
set -e
eval "$(./conda/bin/conda shell.bash hook)"
conda activate ./env
python -m torch.utils.collect_env
pytest --cov=torchvision --junitxml=test-results/junit.xml -v --durations 20 test --ignore=test/test_datasets_download.py
\ No newline at end of file
#!/usr/bin/env bash
# This script is for setting up environment in which unit test is ran.
# To speed up the CI time, the resulting environment is cached.
#
# Do not install PyTorch and torchvision here, otherwise they also get cached.
set -e
this_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
root_dir="$(git rev-parse --show-toplevel)"
conda_dir="${root_dir}/conda"
env_dir="${root_dir}/env"
cd "${root_dir}"
case "$(uname -s)" in
Darwin*) os=MacOSX;;
*) os=Linux
esac
# 1. Install conda at ./conda
if [ ! -d "${conda_dir}" ]; then
printf "* Installing conda\n"
wget -O miniconda.sh "http://repo.continuum.io/miniconda/Miniconda3-latest-${os}-x86_64.sh"
bash ./miniconda.sh -b -f -p "${conda_dir}"
fi
eval "$(${conda_dir}/bin/conda shell.bash hook)"
# 2. Create test environment at ./env
if [ ! -d "${env_dir}" ]; then
printf "* Creating a test environment\n"
conda create --prefix "${env_dir}" -y python="$PYTHON_VERSION"
fi
conda activate "${env_dir}"
# 3. Install Conda dependencies
printf "* Installing dependencies (except PyTorch)\n"
conda env update --file "${this_dir}/environment.yml" --prune
channels:
- pytorch
- defaults
dependencies:
- numpy
- pytest
- pytest-cov
- codecov
- pip
- libpng
- jpeg
- ca-certificates
- pip:
- future
- pillow>=4.1.1
- scipy==1.4.1
- av
- dataclasses
#!/usr/bin/env bash
unset PYTORCH_VERSION
# For unittest, nightly PyTorch is used as the following section,
# so no need to set PYTORCH_VERSION.
# In fact, keeping PYTORCH_VERSION forces us to hardcode PyTorch version in config.
set -e
this_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
eval "$(./conda/Scripts/conda.exe 'shell.bash' 'hook')"
conda activate ./env
if [ "${CU_VERSION:-}" == cpu ] ; then
cudatoolkit="cpuonly"
else
if [[ ${#CU_VERSION} -eq 4 ]]; then
CUDA_VERSION="${CU_VERSION:2:1}.${CU_VERSION:3:1}"
elif [[ ${#CU_VERSION} -eq 5 ]]; then
CUDA_VERSION="${CU_VERSION:2:2}.${CU_VERSION:4:1}"
fi
echo "Using CUDA $CUDA_VERSION as determined by CU_VERSION"
version="$(python -c "print('.'.join(\"${CUDA_VERSION}\".split('.')[:2]))")"
cudatoolkit="cudatoolkit=${version}"
fi
printf "Installing PyTorch with %s\n" "${cudatoolkit}"
conda install -y -c "pytorch-${UPLOAD_CHANNEL}" pytorch "${cudatoolkit}"
printf "* Installing torchvision\n"
"$this_dir/vc_env_helper.bat" python setup.py develop
start /wait "" "%miniconda_exe%" /S /InstallationType=JustMe /RegisterPython=0 /AddToPath=0 /D=%tmp_conda%
\ No newline at end of file
#!/usr/bin/env bash
set -e
eval "$(./conda/Scripts/conda.exe 'shell.bash' 'hook')"
conda activate ./env
codecov
#!/usr/bin/env bash
set -e
eval "$(./conda/Scripts/conda.exe 'shell.bash' 'hook')"
conda activate ./env
python -m torch.utils.collect_env
pytest --cov=torchvision --junitxml=test-results/junit.xml -v --durations 20 test --ignore=test/test_datasets_download.py
\ No newline at end of file
#!/usr/bin/env bash
# This script is for setting up environment in which unit test is ran.
# To speed up the CI time, the resulting environment is cached.
#
# Do not install PyTorch and torchvision here, otherwise they also get cached.
set -e
this_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
root_dir="$(git rev-parse --show-toplevel)"
conda_dir="${root_dir}/conda"
env_dir="${root_dir}/env"
cd "${root_dir}"
# 1. Install conda at ./conda
if [ ! -d "${conda_dir}" ]; then
printf "* Installing conda\n"
export tmp_conda="$(echo $conda_dir | tr '/' '\\')"
export miniconda_exe="$(echo $root_dir | tr '/' '\\')\\miniconda.exe"
curl --output miniconda.exe https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe -O
"$this_dir/install_conda.bat"
unset tmp_conda
unset miniconda_exe
fi
eval "$(${conda_dir}/Scripts/conda.exe 'shell.bash' 'hook')"
# 2. Create test environment at ./env
if [ ! -d "${env_dir}" ]; then
printf "* Creating a test environment\n"
conda create --prefix "${env_dir}" -y python="$PYTHON_VERSION"
fi
conda activate "${env_dir}"
# 3. Install Conda dependencies
printf "* Installing dependencies (except PyTorch)\n"
conda env update --file "${this_dir}/environment.yml" --prune
\ No newline at end of file
@echo on
set VC_VERSION_LOWER=16
set VC_VERSION_UPPER=17
for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -legacy -products * -version [%VC_VERSION_LOWER%^,%VC_VERSION_UPPER%^) -property installationPath`) do (
if exist "%%i" if exist "%%i\VC\Auxiliary\Build\vcvarsall.bat" (
set "VS15INSTALLDIR=%%i"
set "VS15VCVARSALL=%%i\VC\Auxiliary\Build\vcvarsall.bat"
goto vswhere
)
)
:vswhere
if "%VSDEVCMD_ARGS%" == "" (
call "%VS15VCVARSALL%" x64 || exit /b 1
) else (
call "%VS15VCVARSALL%" x64 %VSDEVCMD_ARGS% || exit /b 1
)
@echo on
set DISTUTILS_USE_SDK=1
set args=%1
shift
:start
if [%1] == [] goto done
set args=%args% %1
shift
goto start
:done
if "%args%" == "" (
echo Usage: vc_env_helper.bat [command] [args]
echo e.g. vc_env_helper.bat cl /c test.cpp
)
%args% || exit /b 1
---
AccessModifierOffset: -1
AlignAfterOpenBracket: AlwaysBreak
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlinesLeft: true
AlignOperands: false
AlignTrailingComments: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: true
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
AfterClass: false
AfterControlStatement: false
AfterEnum: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Attach
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: false
ColumnLimit: 80
CommentPragmas: '^ IWYU pragma:'
#CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
ForEachMacros: [ FOR_EACH_RANGE, FOR_EACH, ]
IncludeCategories:
- Regex: '^<.*\.h(pp)?>'
Priority: 1
- Regex: '^<.*'
Priority: 2
- Regex: '.*'
Priority: 3
IndentCaseLabels: true
IndentWidth: 2
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: false
PenaltyBreakBeforeFirstCallParameter: 1
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 2000000
PointerAlignment: Left
ReflowComments: true
SortIncludes: true
SpaceAfterCStyleCast: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 8
UseTab: Never
...
[run]
branch = True
[paths]
source =
torchvision
/**/site-packages/torchvision
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment