Skip to content

Commit 34907c5

Browse files
authored
Merge branch 'master' into automated_fixup_code_of_conduct_file_exists
2 parents 47afddd + 2cfac4a commit 34907c5

File tree

171 files changed

+16496
-4651
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

171 files changed

+16496
-4651
lines changed

.circleci/config.yml

+113-14
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ pytorch_tutorial_build_defaults: &pytorch_tutorial_build_defaults
106106
sudo pip -q install awscli==1.16.35
107107
108108
if [ -n "${CUDA_VERSION}" ]; then
109-
DRIVER_FN="NVIDIA-Linux-x86_64-440.59.run"
109+
DRIVER_FN="NVIDIA-Linux-x86_64-460.39.run"
110110
wget "https://s3.amazonaws.com/ossci-linux/nvidia_driver/$DRIVER_FN"
111111
sudo /bin/bash "$DRIVER_FN" -s --no-drm || (sudo cat /var/log/nvidia-installer.log && false)
112112
nvidia-smi
@@ -116,13 +116,15 @@ pytorch_tutorial_build_defaults: &pytorch_tutorial_build_defaults
116116
export AWS_ACCESS_KEY_ID=${CIRCLECI_AWS_ACCESS_KEY_FOR_ECR_READ_ONLY}
117117
export AWS_SECRET_ACCESS_KEY=${CIRCLECI_AWS_SECRET_KEY_FOR_ECR_READ_ONLY}
118118
eval $(aws ecr get-login --region us-east-1 --no-include-email)
119+
- restore_cache:
120+
key: v1.0-tutorial-{{ .Environment.CIRCLE_JOB }}
119121
- run:
120122
name: Build
121123
no_output_timeout: "20h"
122124
command: |
123125
set -e
124126
125-
export pyTorchDockerImageTag=291
127+
export pyTorchDockerImageTag=9de29bef4a5dc0dd1dd19428d83e5a66a44a1ed2
126128
echo "PyTorchDockerImageTag: "${pyTorchDockerImageTag}
127129
128130
cat >/home/circleci/project/ci_build_script.sh \<<EOL
@@ -164,25 +166,49 @@ pytorch_tutorial_build_defaults: &pytorch_tutorial_build_defaults
164166
fi
165167
set -x
166168
169+
# This also copies the cached build to docker.
167170
docker cp /home/circleci/project/. "$id:/var/lib/jenkins/workspace"
168171
169172
export COMMAND='((echo "source ./workspace/env" && echo "sudo chown -R jenkins workspace && cd workspace && ./ci_build_script.sh") | docker exec -u jenkins -i "$id" bash) 2>&1'
170173
echo ${COMMAND} > ./command.sh && unbuffer bash ./command.sh | ts
171174
175+
# Copy the last build from docker
176+
docker cp "$id:/var/lib/jenkins/workspace/_build" /home/circleci/project
177+
docker cp "$id:/var/lib/jenkins/workspace/docs" /home/circleci/project
178+
docker cp "$id:/var/lib/jenkins/workspace/advanced" /home/circleci/project
179+
docker cp "$id:/var/lib/jenkins/workspace/beginner" /home/circleci/project
180+
docker cp "$id:/var/lib/jenkins/workspace/intermediate" /home/circleci/project
181+
docker cp "$id:/var/lib/jenkins/workspace/prototype" /home/circleci/project
182+
docker cp "$id:/var/lib/jenkins/workspace/recipes" /home/circleci/project
183+
docker cp "$id:/var/lib/jenkins/workspace/src" /home/circleci/project
184+
185+
- save_cache:
186+
# Save to cache for incremental build
187+
key: v1.0-tutorial-{{ .Environment.CIRCLE_JOB }}
188+
paths:
189+
- /home/circleci/project/_build
190+
- /home/circleci/project/docs
191+
- /home/circleci/project/advanced
192+
- /home/circleci/project/beginner
193+
- /home/circleci/project/intermediate
194+
- /home/circleci/project/prototype
195+
- /home/circleci/project/recipes
196+
- /home/circleci/project/src
197+
172198
pytorch_tutorial_build_worker_defaults: &pytorch_tutorial_build_worker_defaults
173199
environment:
174-
DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda9-cudnn7-py3"
200+
DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7"
175201
CUDA_VERSION: "9"
176202
resource_class: gpu.medium
177203
<<: *pytorch_tutorial_build_defaults
178204

179205
pytorch_tutorial_build_manager_defaults: &pytorch_tutorial_build_manager_defaults
180206
environment:
181-
DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda9-cudnn7-py3"
207+
DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7"
182208
resource_class: medium
183209
<<: *pytorch_tutorial_build_defaults
184210

185-
pytorch_windows_build: &pytorch_windows_build
211+
pytorch_windows_build_worker: &pytorch_windows_build_worker
186212
executor: windows-with-nvidia-gpu
187213
steps:
188214
- checkout
@@ -191,10 +217,25 @@ pytorch_windows_build: &pytorch_windows_build
191217
no_output_timeout: 30m
192218
command: |
193219
.circleci/scripts/windows_cuda_install.sh
220+
- run:
221+
name: Generate cache key
222+
# This will refresh cache on Sundays, build should generate new cache.
223+
command: echo "$(date +"%Y-%U")" > .circleci-weekly
224+
- restore_cache:
225+
keys:
226+
- data-{{ checksum "Makefile" }}-{{ checksum ".circleci-weekly" }}
194227
- run:
195228
name: test
229+
no_output_timeout: "1h"
196230
command: |
197231
.circleci/scripts/build_for_windows.sh
232+
- save_cache:
233+
key: data-{{ checksum "Makefile" }}-{{ checksum ".circleci-weekly" }}
234+
paths:
235+
- advanced_source/data
236+
- beginner_source/data
237+
- intermediate_source/data
238+
- prototype_source/data
198239

199240
jobs:
200241
pytorch_tutorial_pr_build_worker_0:
@@ -323,8 +364,29 @@ jobs:
323364
pytorch_tutorial_master_build_manager:
324365
<<: *pytorch_tutorial_build_manager_defaults
325366

326-
pytorch_windows_build_worker:
327-
<<: *pytorch_windows_build
367+
pytorch_tutorial_windows_pr_build_worker_0:
368+
<<: *pytorch_windows_build_worker
369+
370+
pytorch_tutorial_windows_pr_build_worker_1:
371+
<<: *pytorch_windows_build_worker
372+
373+
pytorch_tutorial_windows_pr_build_worker_2:
374+
<<: *pytorch_windows_build_worker
375+
376+
pytorch_tutorial_windows_pr_build_worker_3:
377+
<<: *pytorch_windows_build_worker
378+
379+
pytorch_tutorial_windows_master_build_worker_0:
380+
<<: *pytorch_windows_build_worker
381+
382+
pytorch_tutorial_windows_master_build_worker_1:
383+
<<: *pytorch_windows_build_worker
384+
385+
pytorch_tutorial_windows_master_build_worker_2:
386+
<<: *pytorch_windows_build_worker
387+
388+
pytorch_tutorial_windows_master_build_worker_3:
389+
<<: *pytorch_windows_build_worker
328390

329391
workflows:
330392
build:
@@ -562,11 +624,48 @@ workflows:
562624
branches:
563625
only:
564626
- master
565-
# - pytorch_windows_build_worker:
566-
# name: win_test_worker
567-
# type: approval
568-
# filters:
569-
# branches:
570-
# only:
571-
# - master
627+
- pytorch_tutorial_windows_pr_build_worker_0:
628+
filters:
629+
branches:
630+
ignore:
631+
- master
632+
- pytorch_tutorial_windows_pr_build_worker_1:
633+
filters:
634+
branches:
635+
ignore:
636+
- master
637+
- pytorch_tutorial_windows_pr_build_worker_2:
638+
filters:
639+
branches:
640+
ignore:
641+
- master
642+
- pytorch_tutorial_windows_pr_build_worker_3:
643+
filters:
644+
branches:
645+
ignore:
646+
- master
647+
- pytorch_tutorial_windows_master_build_worker_0:
648+
context: org-member
649+
filters:
650+
branches:
651+
only:
652+
- master
653+
- pytorch_tutorial_windows_master_build_worker_1:
654+
context: org-member
655+
filters:
656+
branches:
657+
only:
658+
- master
659+
- pytorch_tutorial_windows_master_build_worker_2:
660+
context: org-member
661+
filters:
662+
branches:
663+
only:
664+
- master
665+
- pytorch_tutorial_windows_master_build_worker_3:
666+
context: org-member
667+
filters:
668+
branches:
669+
only:
670+
- master
572671

.circleci/scripts/build_for_windows.sh

+42-12
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ mingw32/bin/mingw-get.exe install mingw32-make
1616
mingw32/bin/mingw-get.exe install msys-findutils
1717
mv mingw32/bin/mingw32-make.exe mingw32/bin/make.exe
1818
curl -k https://eternallybored.org/misc/wget/1.20.3/64/wget.exe -o mingw32/bin/wget.exe
19-
export PATH="${SOURCE_DIR}/mingw32/bin:$PATH"
19+
export PATH="${SOURCE_DIR}/mingw32/bin:${SOURCE_DIR}/mingw32/msys/1.0/bin:$PATH"
2020

2121
#install anaconda3
2222
export CONDA_HOME="${SOURCE_DIR}/conda"
@@ -31,19 +31,49 @@ eval "$(conda shell.bash hook)"
3131
conda create -qyn testenv python=3.7
3232
conda activate testenv
3333

34-
conda install sphinx
35-
pip install sphinx_gallery==0.3.1 flask pandas spacy ipython scipy pySoundFile scikit-image
36-
pip install -e git+git://github.com/pytorch/pytorch_sphinx_theme.git#egg=pytorch_sphinx_theme
37-
conda install -yq -c pytorch "cudatoolkit=10.1" pytorch torchvision torchtext
38-
conda install torchaudio -c pytorch-test
34+
REQUIREMENTS="$(grep -v '^ *#\|^torch\|^torchaudio\|^torchvision|^torchtext' $PROJECT_DIR/requirements.txt | grep .)"
35+
echo $REQUIREMENTS > requirements.txt
36+
pip install -r requirements.txt
37+
pip install pySoundFile
38+
# Force uninstall torch & related packages, we'll install them using conda later.
39+
pip uninstall -y torch torchvision torchtext
40+
conda install -yq -c pytorch "cudatoolkit=10.1" pytorch torchvision torchtext torchaudio
3941
python -m spacy download de
4042
python -m spacy download en
4143
pushd ${PROJECT_DIR}
4244
DIR=.jenkins
43-
python $DIR/remove_runnable_code.py beginner_source/aws_distributed_training_tutorial.py beginner_source/aws_distributed_training_tutorial.py || true
44-
python $DIR/remove_runnable_code.py beginner_source/data_loading_tutorial.py beginner_source/data_loading_tutorial.py || true
45-
python $DIR/remove_runnable_code.py beginner_source/dcgan_faces_tutorial.py beginner_source/dcgan_faces_tutorial.py || true
46-
python $DIR/remove_runnable_code.py intermediate_source/model_parallel_tutorial.py intermediate_source/model_parallel_tutorial.py || true
47-
python $DIR/remove_runnable_code.py intermediate_source/memory_format_tutorial.py intermediate_source/memory_format_tutorial.py || true
45+
export NUM_WORKERS=4
4846

49-
make docs
47+
if [[ "${CIRCLE_JOB}" == *worker_* ]]; then
48+
python $DIR/remove_runnable_code.py intermediate_source/model_parallel_tutorial.py intermediate_source/model_parallel_tutorial.py || true
49+
python $DIR/remove_runnable_code.py advanced_source/static_quantization_tutorial.py advanced_source/static_quantization_tutorial.py || true
50+
python $DIR/remove_runnable_code.py beginner_source/hyperparameter_tuning_tutorial.py beginner_source/hyperparameter_tuning_tutorial.py || true
51+
python $DIR/remove_runnable_code.py beginner_source/audio_preprocessing_tutorial.py beginner_source/audio_preprocessing_tutorial.py || true
52+
python $DIR/remove_runnable_code.py beginner_source/dcgan_faces_tutorial.py beginner_source/dcgan_faces_tutorial.py || true
53+
python $DIR/remove_runnable_code.py intermediate_source/tensorboard_profiler_tutorial.py intermediate_source/tensorboard_profiler_tutorial.py || true
54+
# Temp remove for mnist download issue. (Re-enabled for 1.8.1)
55+
# python $DIR/remove_runnable_code.py beginner_source/fgsm_tutorial.py beginner_source/fgsm_tutorial.py || true
56+
57+
export WORKER_ID=$(echo "${CIRCLE_JOB}" | tr -dc '0-9')
58+
count=0
59+
FILES_TO_RUN=()
60+
for work_directory in beginner_source intermediate_source advanced_source recipes_source prototype_source; do
61+
for filename in $(find $work_directory -name '\*.py' -not -path '\*/data/\*'); do
62+
if [ $(($count % $NUM_WORKERS)) != $WORKER_ID ]; then
63+
echo "Removing runnable code from "$filename
64+
python $DIR/remove_runnable_code.py $filename $filename
65+
else
66+
echo "Keeping "$filename
67+
FILES_TO_RUN+=($(basename $filename .py))
68+
fi
69+
count=$((count+1))
70+
done
71+
done
72+
echo "FILES_TO_RUN: " ${FILES_TO_RUN[@]}
73+
fi
74+
75+
if [[ ! -d advanced_source/data || ! -d beginner_source/data || ! -d intermediate_source/data || ! -d prototype_source/data ]];then
76+
make download
77+
fi
78+
79+
make html

.devcontainer/Dockerfile

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
FROM mcr.microsoft.com/vscode/devcontainers/python:3.8
2+
3+
COPY requirements.txt /tmp/pip-tmp/
4+
5+
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
6+
&& apt-get install git gcc unzip make -y \
7+
&& pip3 install --disable-pip-version-check --no-cache-dir -r /tmp/pip-tmp/requirements.txt \
8+
&& rm -rf /tmp/pip-tmp

.devcontainer/devcontainer.json

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"name": "PyTorch Tutorials",
3+
"build": {
4+
"context": "..",
5+
"dockerfile": "Dockerfile",
6+
"args": {}
7+
},
8+
"settings": {
9+
"terminal.integrated.shell.linux": "/bin/bash",
10+
"workbench.startupEditor": "none",
11+
"files.autoSave": "afterDelay",
12+
"python.dataScience.enabled": true,
13+
"python.dataScience.alwaysTrustNotebooks": true,
14+
"python.insidersChannel": "weekly",
15+
"python.showStartPage": false
16+
},
17+
"extensions": ["ms-python.python", "lextudio.restructuredtext"]
18+
}

.devcontainer/requirements.txt

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Refer to ./jenkins/build.sh for tutorial build instructions
2+
3+
sphinx==1.8.2
4+
sphinx-gallery==0.3.1
5+
tqdm
6+
numpy
7+
matplotlib
8+
torch
9+
torchvision
10+
torchtext
11+
torchaudio
12+
PyHamcrest
13+
bs4
14+
awscli==1.16.35
15+
flask
16+
spacy
17+
ray[tune]
18+
19+
# PyTorch Theme
20+
-e git+git://github.com/pytorch/pytorch_sphinx_theme.git#egg=pytorch_sphinx_theme
21+
22+
ipython
23+
24+
# to run examples
25+
pandas
26+
scikit-image
27+
pillow==8.1.1
28+
wget
29+
30+
# for codespaces env
31+
pylint

.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -120,4 +120,4 @@ cleanup.sh
120120
*.swp
121121

122122
# PyTorch things
123-
*.pt
123+
*.pt

.jenkins/build.sh

+16-3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ else
66
export BUCKET_NAME=pytorch-tutorial-build-pull-request
77
fi
88

9+
# set locale for click dependency in spacy
10+
export LC_ALL=C.UTF-8
11+
export LANG=C.UTF-8
12+
913
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
1014

1115
sudo apt-get update
@@ -18,6 +22,12 @@ pip install -r $DIR/../requirements.txt
1822
# export PATH=/opt/conda/bin:$PATH
1923
# pip install sphinx==1.8.2 pandas
2024

25+
#Install PyTorch Nightly for test.
26+
# Nightly - pip install --pre torch torchvision torchaudio -f https://download.pytorch.org/whl/nightly/cu102/torch_nightly.html
27+
# RC Link
28+
# pip uninstall -y torch torchvision torchaudio torchtext
29+
# pip install -f https://download.pytorch.org/whl/test/cu102/torch_test.html torch torchvision torchaudio torchtext
30+
2131
# For Tensorboard. Until 1.14 moves to the release channel.
2232
pip install tb-nightly
2333

@@ -28,9 +38,7 @@ python -m spacy download de
2838
# PyTorch Theme
2939
rm -rf src
3040
pip install -e git+git://github.com/pytorch/pytorch_sphinx_theme.git#egg=pytorch_sphinx_theme
31-
# pillow >= 4.2 will throw error when trying to write mode RGBA as JPEG,
32-
# this is a workaround to the issue.
33-
pip install sphinx-gallery==0.3.1 tqdm matplotlib ipython pillow==4.1.1
41+
pip install sphinx-gallery==0.3.1 tqdm matplotlib ipython pillow==8.1.0
3442

3543
aws configure set default.s3.multipart_threshold 5120MB
3644

@@ -39,6 +47,11 @@ export NUM_WORKERS=20
3947
if [[ "${JOB_BASE_NAME}" == *worker_* ]]; then
4048
# Step 1: Remove runnable code from tutorials that are not supposed to be run
4149
python $DIR/remove_runnable_code.py beginner_source/aws_distributed_training_tutorial.py beginner_source/aws_distributed_training_tutorial.py || true
50+
# python $DIR/remove_runnable_code.py advanced_source/ddp_pipeline_tutorial.py advanced_source/ddp_pipeline_tutorial.py || true
51+
# Temp remove for mnist download issue. (Re-enabled for 1.8.1)
52+
# python $DIR/remove_runnable_code.py beginner_source/fgsm_tutorial.py beginner_source/fgsm_tutorial.py || true
53+
# python $DIR/remove_runnable_code.py intermediate_source/spatial_transformer_tutorial.py intermediate_source/spatial_transformer_tutorial.py || true
54+
4255
# TODO: Fix bugs in these tutorials to make them runnable again
4356
# python $DIR/remove_runnable_code.py beginner_source/audio_classifier_tutorial.py beginner_source/audio_classifier_tutorial.py || true
4457

.jenkins/remove_runnable_code.py

+8
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,17 @@
1616
if line.startswith('#'):
1717
ret_lines.append(line)
1818
state = STATE_NORMAL
19+
elif ((line.startswith('"""') or line.startswith('r"""')) and
20+
line.endswith('"""')):
21+
ret_lines.append(line)
22+
state = STATE_NORMAL
1923
elif line.startswith('"""') or line.startswith('r"""'):
2024
ret_lines.append(line)
2125
state = STATE_IN_MULTILINE_COMMENT_BLOCK_DOUBLE_QUOTE
26+
elif ((line.startswith("'''") or line.startswith("r'''")) and
27+
line.endswith("'''")):
28+
ret_lines.append(line)
29+
state = STATE_NORMAL
2230
elif line.startswith("'''") or line.startswith("r'''"):
2331
ret_lines.append(line)
2432
state = STATE_IN_MULTILINE_COMMENT_BLOCK_SINGLE_QUOTE

0 commit comments

Comments
 (0)