New Features
1. **:package: Export for inference APIs**
Train with Composer and deploy anywhere! We have added a dedicated [export API](https://docs.mosaicml.com/en/v0.9.0/api_reference/composer.utils.inference.html) as well as an [export training callback](https://docs.mosaicml.com/en/v0.9.0/api_reference/composer.callbacks.export_for_inference.html) to allow you to export Composer-trained models for inference, supporting popular formats such as [torchscript](https://pytorch.org/docs/stable/jit.html) and [ONNX](https://onnx.ai/).
For example, hereโs how to export a model in torchscript format:
python
from composer.utils import export_for_inference
Invoking export with a trained model
export_for_inference(model=model,
save_format='torchscript',
save_path=model_save_path)
Hereโs an example of using the training callback, which automatically exports the model at the end of training to ONNX format:
python
from composer.callbacks import ExportForInferenceCallback
Initializing Trainer with the export callback
callback = ExportForInferenceCallback(save_format='onnx',
save_path=model_save_path)
trainer = Trainer(model=model,
callbacks=callback,
train_dataloader=dataloader,
max_duration='10ep')
Model will be exported at the end of training
trainer.fit()
Please see our [Exporting for Inference](https://docs.mosaicml.com/en/stable/examples/exporting_for_inference.html) notebook for more information.
1. **:chart_with_upwards_trend: ALiBi support for BERT training**
You can now use ALiBi (**A**ttention with **Li**near **Bi**ases; [Press et al., 2021](https://arxiv.org/abs/2108.12409)) when training BERT models with Composer, delivering faster training and higher accuracy by leveraging shorter sequence lengths.
ALiBi improves the quality of BERT pre-training, especially when pre-training uses shorter sequence lengths than the downstream (fine-tuning) task. This allows models with ALiBi to reach higher downstream accuracy with less pre-training time.
Example of using ALiBi as an algorithm with the Composer Trainer:
python
Create an instance of a BERT masked language model
model = composer.models.create_bert_mlm()
Apply ALiBi (when training is initialized)
alibi = composer.algorithms.alibi(max_sequence_length=1024)
Train with ALiBi
trainer = composer.trainer.Trainer(
model=model,
train_dataloader=train_dataloader,
algorithms=[alibi]
)
trainer.fit()
Example using the Composer Functional API:
python
import composer.functional as cf
Create an instance of a BERT masked language model
model = composer.models.create_bert_mlm()
Apply ALiBi and expand the model's maximum sequence length to 1024
cf.apply_alibi(model=model, max_sequence_length=1024)
AliBi can also now be extended to work with custom models by registering your attention and embedding layers. Please see our [ALiBi method card](https://docs.mosaicml.com/en/stable/method_cards/alibi.html) for more information.
1. **๐ง Entry point for GLUE tasks pre-training and fine-tuning**
You can now easily pre-train and fine-tune NLP models across all [GLUE](https://gluebenchmark.com/) (General Language Understanding Evaluation) tasks through one simple entry point! The entry point handles model saving and loading, spawns GLUE tasks in parallel across all available GPUs, and delivers a highly efficient evaluation of model performance.
Example of launching the entrypoint:
bash
This runs pre-training followed by fine-tuning.
--training_scheme can take either pretrain, finetune, or all depending on the task!
python run_glue_trainer.py -f glue_example.yaml --training_scheme all
Please see our [GLUE entrypoint notebook](https://docs.mosaicml.com/en/v0.9.0/examples/glue/glue_entrypoint.html) for more information.
1. **๐ค TPU support (in beta)**
You can now use Composer to train your models on TPUs! Support is now available in Beta, and currently only supports single-core TPU training. Try it out, explore optimizations, and share your feedback and feature requests with us so we can make it better for you and for the community.
To use TPUs with Composer, simply specify a `tpu` device:
python
Set device to `tpu`
trainer = composer.trainer.Trainer(
model=model,
train_dataloader=train_dataloader,
max_duration=train_epochs,
device='tpu')
Run fit
trainer.fit()
Please see our [Training with TPUs notebook](https://docs.mosaicml.com/en/v0.9.0/examples/TPU_Training_in_composer.html) for more information.
1. **:apple: Apple Silicon support (beta)**
Leverage Apple Silicon chips to train your models with Composer by providing the `device='mps'` argument:
python
trainer = Trainer(
...,
device='mps'
)
We use the latest PyTorch MPS backend to execute the training. This requires torch version โฅ1.12, and Max OSX 12.3+.
For more information on training with Apple M chips, see the [PyTorch 1.12 blog](https://pytorch.org/blog/pytorch-1.12-released/#prototype-introducing-accelerated-pytorch-training-on-mac) and our [API Reference](https://docs.mosaicml.com/en/v0.9.0/api_reference/composer.trainer.devices.device_mps.html) for Composer specific details.
1. **:construction: Contrib repository**
Got a new method idea, or published a paper and want those methods to be easily accessible? Weโve created the [`mcontrib` repository](https://github.com/mosaicml/mcontrib), with a lightweight process to contribute new algorithms. Weโre happy to work directly with you to benchmark these methods and eventually โpromoteโ them to Composer for use by end customers.
Please checkout the [README](https://github.com/mosaicml/mcontrib#adding-algorithms) for details on how to contribute a new algorithm. For more details on how to write speed-up methods, see our notebook on [custom speed-up methods](https://docs.mosaicml.com/en/v0.9.0/examples/custom_speedup_methods.html).
Additional API Changes
1. **:1234: Passes Module**
The order in which algorithms are run matters significantly during composition. With this release we refactored algorithm passes into their own [`passes` module](https://docs.mosaicml.com/en/v0.9.0/api_reference/composer.core.passes.html). Users can now register custom passes (for custom algorithms) with the Engine. Please see #1377 for more information.
1. **:file_cabinet: Default Checkpoint Extension**
The CheckpointSaver now defaults to using the `*.pt` extension for checkpoint fienames. Please see 1370 for more information.
1. **:eye: Models Refactor**
Most vision models (ResNet, MNIST, ViT, EfficientNet) have been refactored from classes to a factory function. For example `ComposerResNet` -> `composer_resnet`.
python
before
from composer.models import ComposerResNet
model = ComposerResNet(..)
from composer.models import composer_resnet after
model = composer_resnet(..)
The same refactor has been done for NLP as well, e.g. `BERTModel` -> `create_bert_mlm` and `create_bert_classification`.
See 1227 (vision) and 1130 (NLP) for more details.
1. **:heavy_plus_sign: Misc API Changes**
* `BreakEpochException` has been removed.
* `state.is_model_deepspeed` has been moved to `composer.utils.is_model_deepspeed`.
* Helper function `monitored_barrier` has been added to `composer` distributed.
Bug Fixes
* Add informative error for infer batch size issues (1401)
* Fix ImagenetDatasetHparams bug (1392), resolves 1111
* Fix hparams error condition checking (1394)
* Fix AMP resumption with grad scaler (1376)
* Auto Grad Accum Cache Clearing (1380), fixes issue reported in 1331
* Fix default precision (1369)
* Fix the profiler on multi-node training (1358), resolves 1270
* Retry SFTP on Size Mismatch (1300)
* Fix scheduler edge cases (1350), resolves 1077
* Fix a race condition in the object store logger (1328)
* Fix WandB load from checkpoint (1326)
* Fix Notebook Progress Bars (1313)
Commits
What's Changed
* Fix DeepSpeed typo in docstring by abhi-mosaic in https://github.com/mosaicml/composer/pull/1188
* Move grad_accum logging to every step by coryMosaicML in https://github.com/mosaicml/composer/pull/1187
* Update STYLE_GUIDE with details on Documentation by bandish-shah in https://github.com/mosaicml/composer/pull/1183
* ProgressBar Units by hanlint in https://github.com/mosaicml/composer/pull/1190
* Added Xavier Normal initializer by vladd-i in https://github.com/mosaicml/composer/pull/1196
* Updated cost figure by nqn in https://github.com/mosaicml/composer/pull/1180
* Remove algorithm yamls by hanlint in https://github.com/mosaicml/composer/pull/1193
* Fix the Composer Launch Script for the Composer Dockerimage; Default `nproc = torch.cuda.device_count()` if not specified via env by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1195
* Bert model card by A-Jacobson in https://github.com/mosaicml/composer/pull/1198
* Add Notes on Early Stopping by anisehsani in https://github.com/mosaicml/composer/pull/1182
* Stochastic depth that preserves weights by Landanjs in https://github.com/mosaicml/composer/pull/1085
* Adding Gated Linear Units as an algorithm by moinnadeem in https://github.com/mosaicml/composer/pull/1192
* A utility to fuse parallel linear layers in FX-traced models by dskhudia in https://github.com/mosaicml/composer/pull/1189
* Build+push Composer dockerimages to `mosaicml/composer_staging` by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1197
* Fix the SFTP Object Store by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1202
* Bert emoji by A-Jacobson in https://github.com/mosaicml/composer/pull/1205
* Adding a constant warmup scheduler by linden-li in https://github.com/mosaicml/composer/pull/1203
* Fix multi-GPU conflicts when downloading `torchvision` datasets by abhi-mosaic in https://github.com/mosaicml/composer/pull/1201
* Add caveats about automatic gradient accumulation by hanlint in https://github.com/mosaicml/composer/pull/1207
* Remove the `composer_train` entrypoint; put it back in `examples` by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1211
* Fix Composer staging dockerimages by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1210
* Set SFTP Object Store Private Key Filepath from an Environ by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1212
* [xs] Fix progress bars in `get_file` by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1216
* Cleanup SFTP url parsing for StreamingDataset by abhi-mosaic in https://github.com/mosaicml/composer/pull/1217
* Fix Symlinks on Non-Libcloud Object Stores by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1209
* Fix the ObjectStoreLogger with Overwrite=True by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1208
* Throughput metrics by linden-li in https://github.com/mosaicml/composer/pull/1215
* Fix module surgery for training resumptions with optimizers that save state by dskhudia in https://github.com/mosaicml/composer/pull/1200
* Update bert-base.yaml by moinnadeem in https://github.com/mosaicml/composer/pull/1219
* StreamingDataset: make remote optional, attempt to prettify docstrings. by knighton in https://github.com/mosaicml/composer/pull/1220
* Update vision-style `StreamingDataset`s to subclass `VisionDataset` by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1223
* Improve docstrings. by knighton in https://github.com/mosaicml/composer/pull/1222
* shardwise zip streaming datasets by milocress in https://github.com/mosaicml/composer/pull/1177
* updated mosaic logos to composer logos in docs by ejyuen in https://github.com/mosaicml/composer/pull/1221
* Add `COMPOSER_KNOWN_HOSTS_FILENAME` for setting the sftp known hosts file environ by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1224
* StreamingDataset: correctly handle exceptions in child download thread. by knighton in https://github.com/mosaicml/composer/pull/1228
* hot fix compression 404 by milocress in https://github.com/mosaicml/composer/pull/1229
* Treat any dropped SSH/SFTP connection as a transient error by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1225
* refactor bert and gpt by A-Jacobson in https://github.com/mosaicml/composer/pull/1130
* Hotfix for S3 `FileNotFoundError` by abhi-mosaic in https://github.com/mosaicml/composer/pull/1233
* Fix StreamingDataset compression with multi-rank by milocress in https://github.com/mosaicml/composer/pull/1231
* Refactor vision models by Landanjs in https://github.com/mosaicml/composer/pull/1227
* Update resnet50_medium.yaml by lupesko in https://github.com/mosaicml/composer/pull/1235
* Increase default timeout for `StreamingC4` to 120s by abhi-mosaic in https://github.com/mosaicml/composer/pull/1234
* Add Debug Log Statements; Fix Pyright by hanlint in https://github.com/mosaicml/composer/pull/1218
* Hotfix deeplabv3 by Landanjs in https://github.com/mosaicml/composer/pull/1238
* Add Tensorboard Logger by eracah in https://github.com/mosaicml/composer/pull/1194
* Move the model and optimizers to the device before `Event.INIT` by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1084
* Fix bug in streaming iteration/downloading, refactor by knighton in https://github.com/mosaicml/composer/pull/1239
* Support sequence of losses in backwards pass by Landanjs in https://github.com/mosaicml/composer/pull/1240
* Add device_id param to DeviceGPU by ishanashastri in https://github.com/mosaicml/composer/pull/1244
* Update CutMix to work with segmentation style labels by coryMosaicML in https://github.com/mosaicml/composer/pull/1230
* Catching ChannelErrors on SFTP Failures by moinnadeem in https://github.com/mosaicml/composer/pull/1245
* Make `StreamingDataset` compression file easier to write/read by abhi-mosaic in https://github.com/mosaicml/composer/pull/1246
* [XS] Updating console progress_bar logger to use max_duration units by moinnadeem in https://github.com/mosaicml/composer/pull/1243
* Catch botocore ClientError 403 by abhi-mosaic in https://github.com/mosaicml/composer/pull/1249
* Tensorboard Notebook + Tutorial by eracah in https://github.com/mosaicml/composer/pull/1250
* Fix repeated words in event.py by isaac0804 in https://github.com/mosaicml/composer/pull/1254
* Make progressive resizing quieter by coryMosaicML in https://github.com/mosaicml/composer/pull/1255
* fix typo in example by xloem in https://github.com/mosaicml/composer/pull/1259
* Create a new `boto3.Session()` per `S3ObjectStore` instance by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1260
* Fix recipe yamls for `v0.8`, add testing by hanlint in https://github.com/mosaicml/composer/pull/1257
* Automatic Stochastic depth on residual blocks by dskhudia in https://github.com/mosaicml/composer/pull/1253
* Sequence length warmup update and tests by alextrott16 in https://github.com/mosaicml/composer/pull/1199
* ProgressBarLogger UX Enhancements by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1264
* Update to latest pytorch by mvpatel2000 in https://github.com/mosaicml/composer/pull/1262
* Add packaging to `meta.yaml`; add `py-cpuinfo` max version by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1271
* Fix Flaky Tests by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1272
* Add callback for visualizing image inputs and outputs by coryMosaicML in https://github.com/mosaicml/composer/pull/1266
* Add `scale_warmup` argument to schedulers by hanlint in https://github.com/mosaicml/composer/pull/1268
* Switch Jenkins to r1z3 by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1277
* BERT and C4 updates by abhi-mosaic in https://github.com/mosaicml/composer/pull/1252
* Default to `allow_tf32=True` for GPU Devices by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1275
* Fix grad accum parsing in hparams by hanlint in https://github.com/mosaicml/composer/pull/1256
* Fix issue with doctest format in some docstring examples by Landanjs in https://github.com/mosaicml/composer/pull/1269
* Adds S3ObjectStore import to util __init__.py by codestar12 in https://github.com/mosaicml/composer/pull/1274
* Add tutorial on exporting for inference by hanlint in https://github.com/mosaicml/composer/pull/1276
* HTTPS downloads for streaming datasets by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1258
* object stores for streaming datasets by milocress in https://github.com/mosaicml/composer/pull/1248
* Allow object name prefix for S3ObjectStore by abhi-mosaic in https://github.com/mosaicml/composer/pull/1278
* Hotfix CO-658 by milocress in https://github.com/mosaicml/composer/pull/1273
* Fix S3 remote paths for StreamingDataset download by abhi-mosaic in https://github.com/mosaicml/composer/pull/1280
* Add combo loss to DeepLabv3+ by Landanjs in https://github.com/mosaicml/composer/pull/1265
* Checkpoint backwards compatibility for ProgressBar by hanlint in https://github.com/mosaicml/composer/pull/1287
* Add missing callbacks by hanlint in https://github.com/mosaicml/composer/pull/1286
* Fix S3 prefix upload/download by abhi-mosaic in https://github.com/mosaicml/composer/pull/1288
* Fix device inference in module surgery by hanlint in https://github.com/mosaicml/composer/pull/1290
* Actual fix to backwards compatibility by hanlint in https://github.com/mosaicml/composer/pull/1289
* Bugs in getting_started.ipynb by rahulvigneswaran in https://github.com/mosaicml/composer/pull/1285
* Add pytorch 1.12.0 docker image by linden-li in https://github.com/mosaicml/composer/pull/1247
* Fix TB Logger + ObjectStore quadratic complexity issue by doing 1 file per flush by eracah in https://github.com/mosaicml/composer/pull/1283
* Enable README Doctests with GPUs by mvpatel2000 in https://github.com/mosaicml/composer/pull/1279
* Fix logging of hparams to object stores by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1297
* [xs] Reformat the Composer Version String by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1301
* Add monitored barrier for autograd accum by mvpatel2000 in https://github.com/mosaicml/composer/pull/1295
* [xs] Notebook Fixes by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1299
* [xs] Store the Composer version in one place. by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1302
* model export for inference. Functional API by dskhudia in https://github.com/mosaicml/composer/pull/1294
* Add a `return_outputs` flag to `predict()` by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1307
* Integration Testing by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1305
* Fix `get_file_artifact` in the WandBLogger to work on all ranks by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1304
* Add documentation about `run_name` to Composer by eracah in https://github.com/mosaicml/composer/pull/1298
* Enforce FusedLayerNorm is ordered last by alextrott16 in https://github.com/mosaicml/composer/pull/1309
* Revert monitored barrier by mvpatel2000 in https://github.com/mosaicml/composer/pull/1311
* [xs] Build the Composer Docker Image only on `dev` branch merges by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1308
* Fix Notebook Progress Bars by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1313
* Remove `pytest-timeout` by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1317
* [Minor] Inference API parameter name change by dskhudia in https://github.com/mosaicml/composer/pull/1315
* Matthew/swa readme by growlix in https://github.com/mosaicml/composer/pull/1292
* Enable gloo backend by mvpatel2000 in https://github.com/mosaicml/composer/pull/1321
* [xs] Fix pytest test filtering; Bump the minimum pytorch version to 1.10 by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1320
* revert gloo by mvpatel2000 in https://github.com/mosaicml/composer/pull/1324
* Fix WandB load from checkpoint by abhi-mosaic in https://github.com/mosaicml/composer/pull/1326
* ALiBi for BERT and ALiBi testing by alextrott16 in https://github.com/mosaicml/composer/pull/1267
* Update HF example with read of model eval accuracy by lupesko in https://github.com/mosaicml/composer/pull/1332
* Cleanup API Reference Titles by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1336
* Fix a race condition in the object store logger by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1328
* Auto Grad Accum Change to Warning by mvpatel2000 in https://github.com/mosaicml/composer/pull/1338
* Add export for inference callback by nik-mosaic in https://github.com/mosaicml/composer/pull/1323
* Add save fine-tune model to HuggingFace example by lupesko in https://github.com/mosaicml/composer/pull/1333
* Update DWD optimizers by abhi-mosaic in https://github.com/mosaicml/composer/pull/1339
* Cap Numpy Version by mvpatel2000 in https://github.com/mosaicml/composer/pull/1345
* Update slack link by hanlint in https://github.com/mosaicml/composer/pull/1344
* Fix scheduler edge cases by abhi-mosaic in https://github.com/mosaicml/composer/pull/1350
* Integration Tests for Object Stores and Loggers by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1322
* Retry SFTP on Size Mismatch by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1300
* [xs] Restore the dataloader and training properties in `predict()` by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1352
* Add Precision Contexts by mvpatel2000 in https://github.com/mosaicml/composer/pull/1347
* Update GLU logging strings by moinnadeem in https://github.com/mosaicml/composer/pull/1348
* Add domain-specific codeowners by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1354
* fix marker by mvpatel2000 in https://github.com/mosaicml/composer/pull/1359
* Fix the profiler on multi-node training by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1358
* Glue Entrypoint by ishanashastri in https://github.com/mosaicml/composer/pull/1263
* Yahp v0.1.3 by mvpatel2000 in https://github.com/mosaicml/composer/pull/1346
* Move metrics to context by mvpatel2000 in https://github.com/mosaicml/composer/pull/1361
* Refactor multiple losses to support dictionaries and fix discrepancies by Landanjs in https://github.com/mosaicml/composer/pull/1349
* Fix Coverage Reports on Jenkins by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1114
* JSON Schemas by mvpatel2000 in https://github.com/mosaicml/composer/pull/1371
* add filename extension by mvpatel2000 in https://github.com/mosaicml/composer/pull/1370
* JSON Schemas pt 2 by mvpatel2000 in https://github.com/mosaicml/composer/pull/1373
* Update Export for Inference methods by nik-mosaic in https://github.com/mosaicml/composer/pull/1355
* Fix default precision by A-Jacobson in https://github.com/mosaicml/composer/pull/1369
* Clean up unused exception by mvpatel2000 in https://github.com/mosaicml/composer/pull/1368
* Revert "Clean up unused exception" by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1378
* Remove Unused Exception by mvpatel2000 in https://github.com/mosaicml/composer/pull/1379
* Auto Grad Accum Cache Clearing by mvpatel2000 in https://github.com/mosaicml/composer/pull/1380
* Add ability to register algorithm passes by hanlint in https://github.com/mosaicml/composer/pull/1377
* Fix AMP resumption with grad scaler by hanlint in https://github.com/mosaicml/composer/pull/1376
* Update CUDA and remove NCCL downgrade from Dockerfile by abhi-mosaic in https://github.com/mosaicml/composer/pull/1362
* Add Notes on Artifact Logging by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1381
* Print the microbatch size when using Adaptive Gradient Accumulation by hanlint in https://github.com/mosaicml/composer/pull/1387
* Cleaner API reference part 1: references with minimal import paths by dblalock in https://github.com/mosaicml/composer/pull/1385
* Add Event.BEFORE_DATALOADER by mvpatel2000 in https://github.com/mosaicml/composer/pull/1388
* remove private s3 paths by A-Jacobson in https://github.com/mosaicml/composer/pull/1389
* Tutorial on training without Local Storage by ravi-mosaicml in https://github.com/mosaicml/composer/pull/1351
* [inference] Update export_for_inference notebook with new APIs by dskhudia in https://github.com/mosaicml/composer/pull/1360
* Fix resnet warnings criteria by mvpatel2000 in https://github.com/mosaicml/composer/pull/1395
* Fix hparams error by mvpatel2000 in https://github.com/mosaicml/composer/pull/1394
* Add knighton to codeowners for datasets by knighton in https://github.com/mosaicml/composer/pull/1397
* Fix ImagenetDatasetHparams bug by nik-mosaic in https://github.com/mosaicml/composer/pull/1392
* Decouple GLUE entry point saving and loading logic by ishanashastri in https://github.com/mosaicml/composer/pull/1390
* Glue example notebook by ishanashastri in https://github.com/mosaicml/composer/pull/1383
* Add informative error for infer batch size issues by hanlint in https://github.com/mosaicml/composer/pull/1401
* Only sync batchnorm statistics within a node for deeplab by Landanjs in https://github.com/mosaicml/composer/pull/1391
* Update DeepLabv3 pretrained weight interface to work with PyTorch 1.12 by Landanjs in https://github.com/mosaicml/composer/pull/1399
* tpu single core by florescl in https://github.com/mosaicml/composer/pull/1400
* Add support for Apple M chips by hanlint in https://github.com/mosaicml/composer/pull/1405
* [xs] Add `mps` and `tpu` device to Trainer docstrings by hanlint in https://github.com/mosaicml/composer/pull/1410
**Full Changelog**: https://github.com/mosaicml/composer/compare/v0.8.2...v0.9.0
New Contributors
* vladd-i made their first contribution in https://github.com/mosaicml/composer/pull/1196
* linden-li made their first contribution in https://github.com/mosaicml/composer/pull/1203
* ejyuen made their first contribution in https://github.com/mosaicml/composer/pull/1221
* lupesko made their first contribution in https://github.com/mosaicml/composer/pull/1235
* isaac0804 made their first contribution in https://github.com/mosaicml/composer/pull/1254
* xloem made their first contribution in https://github.com/mosaicml/composer/pull/1259
* alextrott16 made their first contribution in https://github.com/mosaicml/composer/pull/1199
* codestar12 made their first contribution in https://github.com/mosaicml/composer/pull/1274
* rahulvigneswaran made their first contribution in https://github.com/mosaicml/composer/pull/1285
* nik-mosaic made their first contribution in https://github.com/mosaicml/composer/pull/1323