Skip to content

Commit 9333812

Browse files
authored
Merge branch 'main' into add_device_mesh_recipe
2 parents faf5af2 + e77fc43 commit 9333812

31 files changed

+1426
-869
lines changed

.jenkins/build.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ pip install --progress-bar off -r $DIR/../requirements.txt
2424

2525
#Install PyTorch Nightly for test.
2626
# Nightly - pip install --pre torch torchvision torchaudio -f https://download.pytorch.org/whl/nightly/cu102/torch_nightly.html
27-
# Install 2.1 for testing
28-
# pip uninstall -y torch torchvision torchaudio torchtext torchdata
29-
# pip3 install torch torchvision torchaudio --no-cache-dir --index-url https://download.pytorch.org/whl/test/cu121
30-
# pip3 install torchdata torchtext --index-url https://download.pytorch.org/whl/test/cpu
27+
# Install 2.2 for testing
28+
pip uninstall -y torch torchvision torchaudio torchtext torchdata
29+
pip3 install torch==2.2.0 torchvision torchaudio --no-cache-dir --index-url https://download.pytorch.org/whl/test/cu121
30+
pip3 install torchdata torchtext --index-url https://download.pytorch.org/whl/test/cpu
3131

3232
# Install two language tokenizers for Translation with TorchText tutorial
3333
python -m spacy download en_core_web_sm

.jenkins/validate_tutorials_built.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
"intermediate_source/_torch_export_nightly_tutorial", # does not work on release
3030
"advanced_source/super_resolution_with_onnxruntime",
3131
"advanced_source/ddp_pipeline", # requires 4 gpus
32+
"advanced_source/usb_semisup_learn", # in the current form takes 140+ minutes to build - can be enabled when the build time is reduced
3233
"prototype_source/fx_graph_mode_ptq_dynamic",
3334
"prototype_source/vmap_recipe",
3435
"prototype_source/torchscript_freezing",

.pyspelling.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ matrix:
4545
- open: '\.\. (code-block|math)::.*$\n*'
4646
content: '(?P<first>(^(?P<indent>[ ]+).*$\n))(?P<other>(^([ \t]+.*|[ \t]*)$\n)*)'
4747
close: '(^(?![ \t]+.*$))'
48+
# Ignore references like "[1] Author: Title"
49+
- open: '\[\d\]'
50+
close: '\n'
4851
- pyspelling.filters.markdown:
4952
- pyspelling.filters.html:
5053
ignores:

Makefile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ download:
8686
wget -nv -N https://www.manythings.org/anki/deu-eng.zip -P $(DATADIR)
8787
unzip -o $(DATADIR)/deu-eng.zip -d beginner_source/data/
8888

89+
# Download PennFudanPed dataset for intermediate_source/torchvision_tutorial.py
90+
wget https://www.cis.upenn.edu/~jshi/ped_html/PennFudanPed.zip -P $(DATADIR)
91+
unzip -o $(DATADIR)/PennFudanPed.zip -d intermediate_source/data/
8992

9093
docs:
9194
make download
@@ -103,3 +106,5 @@ html-noplot:
103106
clean-cache:
104107
make clean
105108
rm -rf advanced beginner intermediate recipes
109+
# remove additional python files downloaded for torchvision_tutorial.py
110+
rm -rf intermediate_source/engine.py intermediate_source/utils.py intermediate_source/transforms.py intermediate_source/coco_eval.py intermediate_source/coco_utils.py

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ If you have a question about a tutorial, post in https://dev-discuss.pytorch.org
1414
You can submit the following types of issues:
1515

1616
* Feature request - request a new tutorial to be added. Please explain why this tutorial is needed and how it demonstrates PyTorch value.
17-
* Bug report - report a failiure or outdated information in an existing tutorial. When submitting a bug report, please run: `python3 -m torch.utils.collect_env` to get information about your environment and add the output to the bug report.
17+
* Bug report - report a failure or outdated information in an existing tutorial. When submitting a bug report, please run: `python3 -m torch.utils.collect_env` to get information about your environment and add the output to the bug report.
1818

1919
# Contributing
2020

_static/css/custom2.css

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/* Survey banner .css */
2+
3+
.survey-banner {
4+
margin-top: 10px;
5+
background-color: #f3f4f7;
6+
padding-top: 15px;
7+
padding-left: 10px;
8+
padding-bottom: 1px;
9+
}
10+
11+
@media screen and (max-width: 600px) {
12+
.survey-banner {
13+
padding-top: 5px;
14+
padding-left: 5px;
15+
padding-bottom: -1px;
16+
font-size: 12px;
17+
margin-bottom: 5px;
18+
}
19+
}
Loading
Binary file not shown.
Loading
Loading
Loading
Loading
Loading
-612 KB
Binary file not shown.
-12.4 KB
Binary file not shown.
-418 KB
Binary file not shown.
-849 KB
Binary file not shown.

_static/tiatoolbox_tutorial.ipynb

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

_templates/layout.html

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
{% extends "!layout.html" %}
22

3-
43
{%- block content %}
54
{{ super() }}
65
<script>
@@ -17,7 +16,9 @@
1716
{{ super() }}
1817
<script>
1918

20-
19+
// Helper function to make it easier to call dataLayer.push()
20+
function gtag(){window.dataLayer.push(arguments);}
21+
2122
//add microsoft link
2223

2324
if(window.location.href.indexOf("/beginner/basics/")!= -1)
@@ -111,4 +112,14 @@
111112
</script>
112113

113114
<img height="1" width="1" style="border-style:none;" alt="" src="https://www.googleadservices.com/pagead/conversion/795629140/?label=txkmCPmdtosBENSssfsC&amp;guid=ON&amp;script=0"/>
115+
116+
//temporarily add a link to survey
117+
<script>
118+
var survey = '<div class="survey-banner"><p><i class="fas fa-poll" aria-hidden="true">&nbsp </i> Take the annual <a href="https://forms.gle/jdNexNU6eZ8mCGDY7">PyTorch Tutorials survey</a>.</p></div>'
119+
if ($(".pytorch-call-to-action-links").length) {
120+
$(".pytorch-call-to-action-links").before(survey);
121+
} else {
122+
$("#pytorch-article").prepend(survey);
123+
}
124+
</script>
114125
{% endblock %}

advanced_source/static_quantization_tutorial.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,9 @@ values to floats - and then back to ints - between every operation, resulting in
435435
436436
# Convert to quantized model
437437
torch.ao.quantization.convert(myModel, inplace=True)
438+
# You may see a user warning about needing to calibrate the model. This warning can be safely ignored.
439+
# This warning occurs because not all modules are run in each model runs, so some
440+
# modules may not be calibrated.
438441
print('Post Training Quantization: Convert done')
439442
print('\n Inverted Residual Block: After fusion and quantization, note fused modules: \n\n',myModel.features[1].conv)
440443

advanced_source/usb_semisup_learn.py

Lines changed: 73 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,88 @@
11
"""
22
Semi-Supervised Learning using USB built upon PyTorch
3-
=============================
4-
3+
=====================================================
54
65
**Author**: `Hao Chen <https://github.com/Hhhhhhao>`_
7-
8-
9-
Introduction
10-
------------
116
12-
USB is a semi-supervised learning framework built upon PyTorch.
13-
Based on Datasets and Modules provided by PyTorch, USB becomes a flexible, modular, and easy-to-use framework for semi-supervised learning.
14-
It supports a variety of semi-supervised learning algorithms, including FixMatch, FreeMatch, DeFixMatch, SoftMatch, etc.
7+
Unified Semi-supervised learning Benchmark (USB) is a semi-supervised
8+
learning framework built upon PyTorch.
9+
Based on Datasets and Modules provided by PyTorch, USB becomes a flexible,
10+
modular, and easy-to-use framework for semi-supervised learning.
11+
It supports a variety of semi-supervised learning algorithms, including
12+
``FixMatch``, ``FreeMatch``, ``DeFixMatch``, ``SoftMatch``, and so on.
1513
It also supports a variety of imbalanced semi-supervised learning algorithms.
16-
The benchmark results across different datasets of computer vision, natural language processing, and speech processing are included in USB.
14+
The benchmark results across different datasets of computer vision, natural
15+
language processing, and speech processing are included in USB.
16+
17+
This tutorial will walk you through the basics of using the USB lighting
18+
package.
19+
Let's get started by training a ``FreeMatch``/``SoftMatch`` model on
20+
CIFAR-10 using pretrained ViT!
21+
And we will show it is easy to change the semi-supervised algorithm and train
22+
on imbalanced datasets.
1723
18-
This tutorial will walk you through the basics of using the usb lighting package.
19-
Let's get started by training a FreeMatch/SoftMatch model on CIFAR-10 using pre-trained ViT!
20-
And we will show it is easy to change the semi-supervised algorithm and train on imbalanced datasets.
2124
22-
2325
.. figure:: /_static/img/usb_semisup_learn/code.png
2426
:alt: USB framework illustration
2527
"""
2628

2729

2830
######################################################################
29-
# Introduction to FreeMatch and SoftMatch in Semi-Supervised Learning
30-
# --------------------
31-
# Here we provide a brief introduction to FreeMatch and SoftMatch.
32-
# First we introduce a famous baseline for semi-supervised learning called FixMatch.
33-
# FixMatch is a very simple framework for semi-supervised learning, where it utilizes a strong augmentation to generate pseudo labels for unlabeled data.
34-
# It adopts a confidence thresholding strategy to filter out the low-confidence pseudo labels with a fixed threshold set.
35-
# FreeMatch and SoftMatch are two algorithms that improve upon FixMatch.
36-
# FreeMatch proposes adaptive thresholding strategy to replace the fixed thresholding strategy in FixMatch.
37-
# The adaptive thresholding progressively increases the threshold according to the learning status of the model on each class.
38-
# SoftMatch absorbs the idea of confidence thresholding as an weighting mechanism.
39-
# It proposes a Gaussian weighting mechanism to overcome the quantity-quality trade-off in pseudo-labels.
40-
# In this tutorial, we will use USB to train FreeMatch and SoftMatch.
31+
# Introduction to ``FreeMatch`` and ``SoftMatch`` in Semi-Supervised Learning
32+
# ---------------------------------------------------------------------------
33+
#
34+
# Here we provide a brief introduction to ``FreeMatch`` and ``SoftMatch``.
35+
# First, we introduce a famous baseline for semi-supervised learning called ``FixMatch``.
36+
# ``FixMatch`` is a very simple framework for semi-supervised learning, where it
37+
# utilizes a strong augmentation to generate pseudo labels for unlabeled data.
38+
# It adopts a confidence thresholding strategy to filter out the low-confidence
39+
# pseudo labels with a fixed threshold set.
40+
# ``FreeMatch`` and ``SoftMatch`` are two algorithms that improve upon ``FixMatch``.
41+
# ``FreeMatch`` proposes adaptive thresholding strategy to replace the fixed
42+
# thresholding strategy in ``FixMatch``. The adaptive thresholding progressively
43+
# increases the threshold according to the learning status of the model on each
44+
# class. ``SoftMatch`` absorbs the idea of confidence thresholding as an
45+
# weighting mechanism. It proposes a Gaussian weighting mechanism to overcome
46+
# the quantity-quality trade-off in pseudo-labels. In this tutorial, we will
47+
# use USB to train ``FreeMatch`` and ``SoftMatch``.
4148

4249

4350
######################################################################
44-
# Use USB to Train FreeMatch/SoftMatch on CIFAR-10 with only 40 labels
45-
# --------------------
46-
# USB is a Pytorch-based Python package for Semi-Supervised Learning (SSL).
47-
# It is easy-to-use/extend, affordable to small groups, and comprehensive for developing and evaluating SSL algorithms.
48-
# USB provides the implementation of 14 SSL algorithms based on Consistency Regularization, and 15 tasks for evaluation from CV, NLP, and Audio domain.
49-
# It has a modular design that allows users to easily extend the package by adding new algorithms and tasks.
50-
# It also supports a python api for easier adaptation to different SSL algorithms on new data.
51-
#
52-
#
53-
# Now, let's use USB to train FreeMatch and SoftMatch on CIFAR-10.
54-
# First, we need to install USB package ``semilearn`` and import necessary api functions from USB.
51+
# Use USB to Train ``FreeMatch``/``SoftMatch`` on CIFAR-10 with only 40 labels
52+
# ----------------------------------------------------------------------------
53+
#
54+
# USB is easy to use and extend, affordable to small groups, and comprehensive
55+
# for developing and evaluating SSL algorithms.
56+
# USB provides the implementation of 14 SSL algorithms based on Consistency
57+
# Regularization, and 15 tasks for evaluation from CV, NLP, and Audio domain.
58+
# It has a modular design that allows users to easily extend the package by
59+
# adding new algorithms and tasks.
60+
# It also supports a Python API for easier adaptation to different SSL
61+
# algorithms on new data.
62+
#
63+
#
64+
# Now, let's use USB to train ``FreeMatch`` and ``SoftMatch`` on CIFAR-10.
65+
# First, we need to install USB package ``semilearn`` and import necessary API
66+
# functions from USB.
5567
# Below is a list of functions we will use from ``semilearn``:
68+
#
5669
# - ``get_dataset`` to load dataset, here we use CIFAR-10
57-
# - ``get_data_loader`` to create train (labeled and unlabeled) and test data loaders, the train unlabeled loaders will provide both strong and weak augmentation of unlabeled data
58-
# - ``get_net_builder`` to create a model, here we use pre-trained ViT
59-
# - ``get_algorithm`` to create the semi-supervised learning algorithm, here we use FreeMatch and SoftMatch
70+
# - ``get_data_loader`` to create train (labeled and unlabeled) and test data
71+
# loaders, the train unlabeled loaders will provide both strong and weak
72+
# augmentation of unlabeled data
73+
# - ``get_net_builder`` to create a model, here we use pretrained ViT
74+
# - ``get_algorithm`` to create the semi-supervised learning algorithm,
75+
# here we use ``FreeMatch`` and ``SoftMatch``
6076
# - ``get_config``: to get default configuration of the algorithm
61-
# - ``Trainer``: a Trainer class for training and evaluating the algorithm on dataset
77+
# - ``Trainer``: a Trainer class for training and evaluating the
78+
# algorithm on dataset
6279
#
6380
import semilearn
6481
from semilearn import get_dataset, get_data_loader, get_net_builder, get_algorithm, get_config, Trainer
6582

6683
######################################################################
67-
# After importing necessary functions, we first set the hyper-parameters of the algorithm.
84+
# After importing necessary functions, we first set the hyper-parameters of the
85+
# algorithm.
6886
#
6987
config = {
7088
'algorithm': 'freematch',
@@ -122,27 +140,31 @@
122140

123141

124142
######################################################################
125-
# We can start Train the algorithms on CIFAR-10 with 40 labels now.
143+
# We can start training the algorithms on CIFAR-10 with 40 labels now.
126144
# We train for 4000 iterations and evaluate every 500 iterations.
127145
#
128146
trainer = Trainer(config, algorithm)
129147
trainer.fit(train_lb_loader, train_ulb_loader, eval_loader)
130148

131149

132150
######################################################################
133-
# Finally, let's evaluate the trained model on validation set.
134-
# After training 4000 iterations with FreeMatch on only 40 labels of CIFAR-10, we obtain a classifier that achieves above 93 accuracy on validation set.
151+
# Finally, let's evaluate the trained model on the validation set.
152+
# After training 4000 iterations with ``FreeMatch`` on only 40 labels of
153+
# CIFAR-10, we obtain a classifier that achieves above 93 accuracy on the validation set.
135154
trainer.evaluate(eval_loader)
136155

137156

138157

139158
######################################################################
140-
# Use USB to Train SoftMatch with specific imbalanced algorithm on imbalanced CIFAR-10
141-
# --------------------
159+
# Use USB to Train ``SoftMatch`` with specific imbalanced algorithm on imbalanced CIFAR-10
160+
# ------------------------------------------------------------------------------------
142161
#
143-
# Now let's say we have imbalanced labeled set and unlabeled set of CIFAR-10, and we want to train a SoftMatch model on it.
144-
# We create an imbalanced labeled set and imbalanced unlabeled set of CIFAR-10, by setting the ``lb_imb_ratio`` and ``ulb_imb_ratio`` to 10.
145-
# Also we replace the ``algorithm`` with ``softmatch`` and set the ``imbalanced`` to ``True``.
162+
# Now let's say we have imbalanced labeled set and unlabeled set of CIFAR-10,
163+
# and we want to train a ``SoftMatch`` model on it.
164+
# We create an imbalanced labeled set and imbalanced unlabeled set of CIFAR-10,
165+
# by setting the ``lb_imb_ratio`` and ``ulb_imb_ratio`` to 10.
166+
# Also, we replace the ``algorithm`` with ``softmatch`` and set the ``imbalanced``
167+
# to ``True``.
146168
#
147169
config = {
148170
'algorithm': 'softmatch',
@@ -210,7 +232,7 @@
210232

211233

212234
######################################################################
213-
# Finally, let's evaluate the trained model on validation set.
235+
# Finally, let's evaluate the trained model on the validation set.
214236
#
215237
trainer.evaluate(eval_loader)
216238

conf.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,8 @@ def reset_seeds(gallery_conf, fname):
285285

286286
html_css_files = [
287287
'https://cdn.jsdelivr.net/npm/katex@0.10.0-beta/dist/katex.min.css',
288-
'css/custom.css'
288+
'css/custom.css',
289+
'css/custom2.css'
289290
]
290291

291292
def setup(app):

0 commit comments

Comments
 (0)