Tamerstito commited on
Commit
a79b400
·
verified ·
1 Parent(s): 8efba52

Delete NeMo-2.2.0

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. NeMo-2.2.0/CITATION.cff +0 -41
  2. NeMo-2.2.0/CONTRIBUTING.md +0 -79
  3. NeMo-2.2.0/Dockerfile.ci +0 -86
  4. NeMo-2.2.0/Dockerfile.speech +0 -190
  5. NeMo-2.2.0/LICENSE +0 -201
  6. NeMo-2.2.0/MANIFEST.in +0 -1
  7. NeMo-2.2.0/README.md +0 -723
  8. NeMo-2.2.0/codecov.yml +0 -7
  9. NeMo-2.2.0/docs/Makefile +0 -216
  10. NeMo-2.2.0/docs/source/_static/css/custom.css +0 -372
  11. NeMo-2.2.0/docs/source/_static/js/pk_scripts.js +0 -19
  12. NeMo-2.2.0/docs/source/_templates/layout.html +0 -14
  13. NeMo-2.2.0/docs/source/apis.rst +0 -49
  14. NeMo-2.2.0/docs/source/asr/all_chkpt.rst +0 -236
  15. NeMo-2.2.0/docs/source/asr/api.rst +0 -343
  16. NeMo-2.2.0/docs/source/asr/asr_all.bib +0 -1043
  17. NeMo-2.2.0/docs/source/asr/asr_language_modeling_and_customization.rst +0 -663
  18. NeMo-2.2.0/docs/source/asr/configs.rst +0 -1122
  19. NeMo-2.2.0/docs/source/asr/data/asrlm_results.csv +0 -2
  20. NeMo-2.2.0/docs/source/asr/data/benchmark_by.csv +0 -4
  21. NeMo-2.2.0/docs/source/asr/data/benchmark_ca.csv +0 -3
  22. NeMo-2.2.0/docs/source/asr/data/benchmark_canary.csv +0 -2
  23. NeMo-2.2.0/docs/source/asr/data/benchmark_cn.csv +0 -3
  24. NeMo-2.2.0/docs/source/asr/data/benchmark_code_switching.csv +0 -3
  25. NeMo-2.2.0/docs/source/asr/data/benchmark_cs.csv +0 -4
  26. NeMo-2.2.0/docs/source/asr/data/benchmark_de.csv +0 -9
  27. NeMo-2.2.0/docs/source/asr/data/benchmark_en.csv +0 -37
  28. NeMo-2.2.0/docs/source/asr/data/benchmark_eo.csv +0 -3
  29. NeMo-2.2.0/docs/source/asr/data/benchmark_es.csv +0 -11
  30. NeMo-2.2.0/docs/source/asr/data/benchmark_fa.csv +0 -2
  31. NeMo-2.2.0/docs/source/asr/data/benchmark_fastconformer_hybrid.csv +0 -16
  32. NeMo-2.2.0/docs/source/asr/data/benchmark_fr.csv +0 -11
  33. NeMo-2.2.0/docs/source/asr/data/benchmark_hi.csv +0 -2
  34. NeMo-2.2.0/docs/source/asr/data/benchmark_hr.csv +0 -5
  35. NeMo-2.2.0/docs/source/asr/data/benchmark_it.csv +0 -6
  36. NeMo-2.2.0/docs/source/asr/data/benchmark_jp.csv +0 -2
  37. NeMo-2.2.0/docs/source/asr/data/benchmark_ka.csv +0 -3
  38. NeMo-2.2.0/docs/source/asr/data/benchmark_kab.csv +0 -2
  39. NeMo-2.2.0/docs/source/asr/data/benchmark_kz.csv +0 -2
  40. NeMo-2.2.0/docs/source/asr/data/benchmark_mr.csv +0 -2
  41. NeMo-2.2.0/docs/source/asr/data/benchmark_multilingual.csv +0 -5
  42. NeMo-2.2.0/docs/source/asr/data/benchmark_nl.csv +0 -2
  43. NeMo-2.2.0/docs/source/asr/data/benchmark_parakeet.csv +0 -7
  44. NeMo-2.2.0/docs/source/asr/data/benchmark_pl.csv +0 -4
  45. NeMo-2.2.0/docs/source/asr/data/benchmark_ru.csv +0 -7
  46. NeMo-2.2.0/docs/source/asr/data/benchmark_rw.csv +0 -3
  47. NeMo-2.2.0/docs/source/asr/data/benchmark_ua.csv +0 -4
  48. NeMo-2.2.0/docs/source/asr/data/benchmark_uz.csv +0 -2
  49. NeMo-2.2.0/docs/source/asr/data/benchmark_zh.csv +0 -4
  50. NeMo-2.2.0/docs/source/asr/data/scores/be/conformer_be.csv +0 -3
NeMo-2.2.0/CITATION.cff DELETED
@@ -1,41 +0,0 @@
1
- cff-version: 1.2.0
2
- message: "If you use this software, please cite it as below."
3
- title: "NeMo: a toolkit for Conversational AI and Large Language Models"
4
- url: https://nvidia.github.io/NeMo/
5
- repository-code: https://github.com/NVIDIA/NeMo
6
- authors:
7
- - family-names: Harper
8
- given-names: Eric
9
- - family-names: Majumdar
10
- given-names: Somshubra
11
- - family-names: Kuchaiev
12
- given-names: Oleksii
13
- - family-names: Jason
14
- given-names: Li
15
- - family-names: Zhang
16
- given-names: Yang
17
- - family-names: Bakhturina
18
- given-names: Evelina
19
- - family-names: Noroozi
20
- given-names: Vahid
21
- - family-names: Subramanian
22
- given-names: Sandeep
23
- - family-names: Nithin
24
- given-names: Koluguri
25
- - family-names: Jocelyn
26
- given-names: Huang
27
- - family-names: Jia
28
- given-names: Fei
29
- - family-names: Balam
30
- given-names: Jagadeesh
31
- - family-names: Yang
32
- given-names: Xuesong
33
- - family-names: Livne
34
- given-names: Micha
35
- - family-names: Dong
36
- given-names: Yi
37
- - family-names: Naren
38
- given-names: Sean
39
- - family-names: Ginsburg
40
- given-names: Boris
41
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
NeMo-2.2.0/CONTRIBUTING.md DELETED
@@ -1,79 +0,0 @@
1
- # Contributions are welcome!
2
-
3
- We do all of NeMo's development in the open. Contributions from NeMo community are welcome.
4
-
5
-
6
- # Pull Requests (PR) Guidelines
7
-
8
- **Send your PRs to the `main` branch**
9
-
10
- 1) Make sure your PR does one thing. Have a clear answer to "What does this PR do?".
11
- 2) Read General Principles and style guide below
12
- 3) Make sure you sign your commits. E.g. use ``git commit -s`` when before your commit
13
- 4) Make sure all unittests finish successfully before sending PR ``pytest`` or (if yor dev box does not have GPU) ``pytest --cpu`` from NeMo's root folder
14
- 5) Send your PR and request a review
15
-
16
- ## Unit tests
17
- Quick tests (locally, while developing)
18
- ```
19
- pytest
20
- # If you don't have NVIDIA GPU do:
21
- # pytest --cpu
22
- ```
23
- Full tests, including pre-trained model downloads
24
- ```
25
- pytest --with_downloads
26
- ```
27
-
28
- ## Whom should you ask for review:
29
- 1. For changes to NeMo's core: @ericharper, @titu1994, @blisc, or @okuchaiev
30
- 1. For changes to NeMo's ASR collection: @titu1994, @redoctopus, @jbalam-nv, or @okuchaiev
31
- 1. For changes to NeMo's NLP collection: @MaximumEntropy, @ericharper, @ekmb, @yzhang123, @VahidooX, @vladgets, or @okuchaiev
32
- 1. For changes to NeMo's TTS collection: @blisc, or @okuchaiev
33
-
34
- Note that some people may self-assign to review your PR - in which case, please wait for them to add a review.
35
-
36
- Your pull requests must pass all checks and peer-review before they can be merged.
37
-
38
- # General principles
39
- 1. **User-oriented**: make it easy for end users, even at the cost of writing more code in the background
40
- 1. **Robust**: make it hard for users to make mistakes.
41
- 1. **Well-tested**: please add simple, fast unittests. Consider adding CI tests for end-to-end functionality.
42
- 1. **Reusable**: for every piece of code, think about how it can be reused in the future and make it easy to be reused.
43
- 1. **Readable**: code should be easier to read.
44
- 1. **Legal**: if you copy even one line of code from the Internet, make sure that the code allows the license that NeMo supports. Give credit and link back to the code.
45
- 1. **Sensible**: code should make sense. If you think a piece of code might be confusing, write comments.
46
-
47
- ## Class naming conventions
48
- * No “I”, “Interface”, “NM” nor “NeMo” pre/postfixes anywhere
49
- * Core interfaces have simple names: Typing, Cloud, Serialization, FileIO*
50
- * Core classes have the simplest names ever: NeuralModule, Model, Graph, Dataset, Loss, Module*
51
- * Abstract classes in the Model hierarchy have Model postfix
52
- * A config class for MyModel should be called MyModelConfig
53
- * Leaf Neural Module classes have simple names without any postfixes (e.g. AudioPreprocess)
54
- * Leaf Datasets have Dataset postfix (e.g. AudioToSpeechLabelDataset)
55
- * Leaf Losses have Loss postfix (e.g. CTCLoss)
56
- * Leaf Models do not have any postfix, just name (e.g. QuartzNet)
57
-
58
- ## Python style
59
- We use ``black`` as our style guide. To check whether your code will pass style check (from the NeMo's repo folder) run:
60
- ``python setup.py style`` and if it does not pass run ``python setup.py style --fix``.
61
-
62
- 1. Include docstrings for every class and method exposed to the user.
63
- 1. Use Python 3 type hints for every class and method exposed to the user.
64
- 1. Avoid wild import: ``from X import *`` unless in ``X.py``, ``__all__`` is defined.
65
- 1. Minimize the use of ``**kwargs``.
66
- 1. ``RaiseError`` is preferred to ``assert``. Write: ```if X: raise Error``` instead of ```assert X```.
67
- 1. Classes are preferred to standalone methods.
68
- 1. Methods should be atomic. A method shouldn't be longer than 75 lines, e.g. can be fit into the computer screen without scrolling.
69
- 1. If a method has arguments that don't fit into one line, each argument should be in its own line for readability.
70
- 1. Add ``__init__.py`` for every folder.
71
- 1. F-strings are prefered to formatted strings.
72
- 1. Loggers are preferred to print. In NeMo, you can use logger from ``from nemo.utils import logging``
73
- 1. Private functions (functions start with ``_``) shouldn't be called outside its host file.
74
- 1. If a comment lasts multiple lines, use ``'''`` instead of ``#``.
75
-
76
- # Collections
77
- Collection is a logical grouping of related Neural Modules. It is a grouping of modules that share a domain area or semantics.
78
- When contributing module to a collection, please make sure it belongs to that category.
79
- If you would like to start a new one and contribute back to the platform, you are very welcome to do so.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
NeMo-2.2.0/Dockerfile.ci DELETED
@@ -1,86 +0,0 @@
1
- # syntax=docker/dockerfile:1-labs
2
-
3
- # Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved.
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
-
17
- ARG BASE_IMAGE=nvcr.io/nvidia/pytorch:24.07-py3
18
-
19
- FROM ${BASE_IMAGE} as nemo-bump
20
- ARG NEMO_TAG
21
- WORKDIR /opt
22
- # NeMo
23
- RUN <<"EOF" bash -exu
24
- if [[ ! -d NeMo ]]; then
25
- git clone https://github.com/NVIDIA/NeMo.git
26
- fi
27
- cd NeMo/
28
- git fetch origin '+refs/pull/*/merge:refs/remotes/pull/*/merge'
29
- git fetch origin $NEMO_TAG
30
- git checkout -f $NEMO_TAG
31
- EOF
32
-
33
- FROM ${BASE_IMAGE}
34
- ARG IMAGE_LABEL
35
- LABEL "nemo.library"=${IMAGE_LABEL}
36
-
37
- ENV TRANSFORMERS_OFFLINE=0
38
- ENV HYDRA_FULL_ERROR=1
39
- ENV PYTHONUNBUFFERED=1
40
-
41
- # APT packages
42
- RUN <<"EOF" bash -ex
43
- apt-get update
44
- apt-get install -y bc libsox-fmt-all -y
45
- apt-get clean
46
- EOF
47
-
48
- ARG MLM_REPO
49
- ARG MLM_TAG
50
- RUN --mount=type=bind,from=nemo-bump,source=/opt/NeMo/reinstall.sh,target=/opt/NeMo/reinstall.sh \
51
- bash /opt/NeMo/reinstall.sh --library mcore --mode build && \
52
- ls -al /opt/Megatron-LM || true
53
-
54
- WORKDIR /workspace
55
- RUN \
56
- --mount=type=bind,from=nemo-bump,source=/opt/NeMo/requirements,target=/tmp/NeMo/requirements \
57
- --mount=type=bind,from=nemo-bump,source=/opt/NeMo/tools/ctc_segmentation/requirements.txt,target=/tmp/NeMo/tools/ctc_segmentation/requirements.txt \
58
- --mount=type=bind,from=nemo-bump,source=/opt/NeMo/reinstall.sh,target=/tmp/NeMo/reinstall.sh \
59
- --mount=type=bind,from=nemo-bump,source=/opt/NeMo/setup.py,target=/tmp/NeMo/setup.py \
60
- --mount=type=bind,from=nemo-bump,source=/opt/NeMo/README.md,target=/tmp/NeMo/README.md \
61
- --mount=type=bind,from=nemo-bump,source=/opt/NeMo/nemo/package_info.py,target=/tmp/NeMo/nemo/package_info.py \
62
- --mount=type=bind,from=nemo-bump,source=/opt/NeMo/nemo/__init__.py,target=/tmp/NeMo/nemo/__init__.py <<"EOF" bash -ex
63
- export NEMO_DIR=/tmp/NeMo
64
- bash /tmp/NeMo/reinstall.sh --library mcore --mode install
65
- bash /tmp/NeMo/reinstall.sh --library nemo --mode install
66
- rm -rf $NEMO_DIR || true
67
- EOF
68
-
69
- # Copy over NeMo code
70
- ARG NEMO_REPO
71
- ARG NEMO_TAG
72
- RUN \
73
- --mount=type=bind,from=nemo-bump,source=/opt/NeMo/reinstall.sh,target=/tmp/reinstall.sh <<"EOF" bash -ex
74
- bash /tmp/reinstall.sh --library mcore --mode install
75
- bash /tmp/reinstall.sh --library nemo --mode install
76
-
77
- # Copy into workspace
78
- cp -a /opt/NeMo/. /workspace/
79
- cp -r /opt/Megatron-LM/ /workspace/
80
-
81
- # set permission
82
- chmod 777 -R /workspace
83
- EOF
84
-
85
- ENV PYTHONPATH="${PYTHONPATH}:/workspace/Megatron-LM"
86
- ENV NEMO_HOME="/home/TestData/nemo_home"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
NeMo-2.2.0/Dockerfile.speech DELETED
@@ -1,190 +0,0 @@
1
- # syntax=docker/dockerfile:experimental
2
-
3
- # Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved.
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
-
17
- ARG BASE_IMAGE=nvcr.io/nvidia/pytorch:24.02-py3
18
-
19
- # build an image that includes only the nemo dependencies, ensures that dependencies
20
- # are included first for optimal caching, and useful for building a development
21
- # image (by specifying build target as `nemo-deps`)
22
- FROM ${BASE_IMAGE} as nemo-deps
23
-
24
- # dependency flags; should be declared after FROM
25
- # torchaudio: not required by default
26
- ARG REQUIRE_TORCHAUDIO=false
27
- # k2: not required by default
28
- ARG REQUIRE_K2=false
29
- # ais cli: not required by default, install only if required
30
- ARG REQUIRE_AIS_CLI=false
31
-
32
- # Ensure apt-get won't prompt for selecting options
33
- ENV DEBIAN_FRONTEND=noninteractive
34
- # libavdevice-dev required for latest torchaudio
35
- RUN apt-get update && \
36
- apt-get upgrade -y && \
37
- apt-get install -y \
38
- libsndfile1 sox \
39
- libfreetype6 \
40
- swig \
41
- ffmpeg \
42
- libavdevice-dev && \
43
- rm -rf /var/lib/apt/lists/*
44
-
45
- # libtool, ... , libgts-dev are required for graphviz
46
- # graphviz is required for k2 and pynini visualization
47
- RUN apt-get update && \
48
- apt-get install -y \
49
- libtool \
50
- libltdl-dev \
51
- automake \
52
- autoconf \
53
- bison \
54
- flex \
55
- tcl \
56
- ghostscript \
57
- libgd-dev \
58
- fontconfig \
59
- libcairo2-dev \
60
- libpango1.0-dev \
61
- libgts-dev && \
62
- rm -rf /var/lib/apt/lists/*
63
-
64
- WORKDIR /workspace/
65
-
66
- ARG TE_TAG=7d576ed25266a17a7b651f2c12e8498f67e0baea
67
- ARG MCORE_TAG=338af51452a53982d202e8386db6233adad1ce86
68
- ARG APEX_TAG=810ffae374a2b9cb4b5c5e28eaeca7d7998fca0c
69
- # Install megatron core, this can be removed once 0.3 pip package is released
70
- # We leave it here in case we need to work off of a specific commit in main
71
- RUN git clone https://github.com/NVIDIA/Megatron-LM.git && \
72
- cd Megatron-LM && \
73
- git checkout ${MCORE_TAG} && \
74
- pip install .
75
-
76
- # Performance optimizations for distributed optimizer: https://github.com/NVIDIA/apex/pull/1771
77
- RUN git clone https://github.com/NVIDIA/apex.git && \
78
- cd apex && \
79
- git checkout ${APEX_TAG} && \
80
- pip install -v --no-build-isolation --disable-pip-version-check --no-cache-dir \
81
- --config-settings "--build-option=--cpp_ext --cuda_ext --fast_layer_norm --distributed_adam --deprecated_fused_adam" ./
82
-
83
- # Transformer Engine 1.2.0
84
- RUN git clone https://github.com/NVIDIA/TransformerEngine.git && \
85
- cd TransformerEngine && \
86
- git fetch origin ${TE_TAG} && \
87
- git checkout FETCH_HEAD && \
88
- git submodule init && git submodule update && \
89
- NVTE_FRAMEWORK=pytorch NVTE_WITH_USERBUFFERS=1 MPI_HOME=/usr/local/mpi pip install .
90
-
91
- WORKDIR /tmp/
92
-
93
- # uninstall stuff from base container
94
- RUN pip3 uninstall -y sacrebleu torchtext
95
-
96
- # build torchaudio
97
- WORKDIR /tmp/torchaudio_build
98
- COPY scripts/installers /tmp/torchaudio_build/scripts/installers/
99
- RUN INSTALL_MSG=$(/bin/bash /tmp/torchaudio_build/scripts/installers/install_torchaudio_latest.sh); INSTALL_CODE=$?; \
100
- echo ${INSTALL_MSG}; \
101
- if [ ${INSTALL_CODE} -ne 0 ]; then \
102
- echo "torchaudio installation failed"; \
103
- if [ "${REQUIRE_TORCHAUDIO}" = true ]; then \
104
- exit ${INSTALL_CODE}; \
105
- else echo "Skipping failed torchaudio installation"; fi \
106
- else echo "torchaudio installed successfully"; fi
107
-
108
- COPY scripts /tmp/nemo/scripts/
109
- # install correct graphviz version (k2 and pynini visualization tool), skip if installation fails
110
- RUN INSTALL_MSG=$(/bin/bash /tmp/nemo/scripts/installers/install_graphviz.sh --docker); INSTALL_CODE=$?; \
111
- echo ${INSTALL_MSG}; \
112
- if [ ${INSTALL_CODE} -ne 0 ]; then \
113
- echo "graphviz installation failed"; \
114
- if [ "${REQUIRE_K2}" = true ]; then \
115
- exit ${INSTALL_CODE}; \
116
- else echo "Skipping failed graphviz installation"; fi \
117
- else echo "graphviz installed successfully"; fi
118
-
119
- # install k2, skip if installation fails
120
- COPY scripts /tmp/nemo/scripts/
121
- RUN INSTALL_MSG=$(/bin/bash /tmp/nemo/scripts/installers/install_k2.sh); INSTALL_CODE=$?; \
122
- echo ${INSTALL_MSG}; \
123
- if [ ${INSTALL_CODE} -ne 0 ]; then \
124
- echo "k2 installation failed"; \
125
- if [ "${REQUIRE_K2}" = true ]; then \
126
- exit ${INSTALL_CODE}; \
127
- else echo "Skipping failed k2 installation"; fi \
128
- else echo "k2 installed successfully"; fi
129
-
130
- # install nemo dependencies
131
- WORKDIR /tmp/nemo
132
- ENV LHOTSE_REQUIRE_TORCHAUDIO=0
133
- COPY requirements .
134
- # exclude requirements_vllm.txt, since `vllm==0.5.x` breaks the container due to hardcoded requirements `torch==2.3.0`
135
- RUN for f in $(ls requirements*.txt | grep -v 'requirements_vllm.txt'); do \
136
- pip3 install --disable-pip-version-check --no-cache-dir -r $f; done
137
-
138
- # install flash attention
139
- RUN pip install flash-attn
140
- # install numba for latest containers
141
- RUN pip install numba>=0.57.1
142
-
143
- # copy nemo source into a scratch image
144
- FROM scratch as nemo-src
145
- COPY . .
146
-
147
- # start building the final container
148
- FROM nemo-deps as nemo
149
- ARG NEMO_VERSION=2.0.0
150
-
151
- # Check that NEMO_VERSION is set. Build will fail without this. Expose NEMO and base container
152
- # version information as runtime environment variable for introspection purposes
153
- RUN /usr/bin/test -n "$NEMO_VERSION" && \
154
- /bin/echo "export NEMO_VERSION=${NEMO_VERSION}" >> /root/.bashrc && \
155
- /bin/echo "export BASE_IMAGE=${BASE_IMAGE}" >> /root/.bashrc
156
-
157
- # Install NeMo
158
- RUN --mount=from=nemo-src,target=/tmp/nemo,rw cd /tmp/nemo && pip install ".[all]"
159
-
160
- # Check install
161
- # NB: adjusting LD_LIBRARY_PATH (only here, should not be persistent!) is a temporary hack
162
- # to avoid failure if CUDA is unavailable (`docker build` does not expose GPUs)
163
- # The error is raised in NeMo Core, and the main reason is reinstalled Transformer-Engine;
164
- RUN export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${CUDA_HOME}/compat/lib.real && \
165
- python -c "import nemo.collections.asr as nemo_asr" && \
166
- python -c "import nemo.collections.nlp as nemo_nlp" && \
167
- python -c "import nemo.collections.tts as nemo_tts" && \
168
- python -c "import nemo_text_processing.text_normalization as text_normalization"
169
-
170
-
171
- # copy scripts/examples/tests into container for end user
172
- WORKDIR /workspace/nemo
173
- COPY scripts /workspace/nemo/scripts
174
- COPY examples /workspace/nemo/examples
175
- COPY tests /workspace/nemo/tests
176
- COPY tutorials /workspace/nemo/tutorials
177
- # COPY README.rst LICENSE /workspace/nemo/
178
-
179
- RUN printf "#!/bin/bash\njupyter lab --no-browser --allow-root --ip=0.0.0.0" >> start-jupyter.sh && \
180
- chmod +x start-jupyter.sh
181
-
182
- # If required, install AIS CLI and Python AIS SDK
183
- RUN INSTALL_MSG=$(/bin/bash /tmp/nemo/scripts/installers/install_ais_cli_latest.sh && pip install aistore); INSTALL_CODE=$?; \
184
- echo ${INSTALL_MSG}; \
185
- if [ ${INSTALL_CODE} -ne 0 ]; then \
186
- echo "AIS CLI installation failed"; \
187
- if [ "${REQUIRE_AIS_CLI}" = true ]; then \
188
- exit ${INSTALL_CODE}; \
189
- else echo "Skipping AIS CLI installation"; fi \
190
- else echo "AIS CLI installed successfully"; fi
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
NeMo-2.2.0/LICENSE DELETED
@@ -1,201 +0,0 @@
1
- Apache License
2
- Version 2.0, January 2004
3
- http://www.apache.org/licenses/
4
-
5
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
-
7
- 1. Definitions.
8
-
9
- "License" shall mean the terms and conditions for use, reproduction,
10
- and distribution as defined by Sections 1 through 9 of this document.
11
-
12
- "Licensor" shall mean the copyright owner or entity authorized by
13
- the copyright owner that is granting the License.
14
-
15
- "Legal Entity" shall mean the union of the acting entity and all
16
- other entities that control, are controlled by, or are under common
17
- control with that entity. For the purposes of this definition,
18
- "control" means (i) the power, direct or indirect, to cause the
19
- direction or management of such entity, whether by contract or
20
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
- outstanding shares, or (iii) beneficial ownership of such entity.
22
-
23
- "You" (or "Your") shall mean an individual or Legal Entity
24
- exercising permissions granted by this License.
25
-
26
- "Source" form shall mean the preferred form for making modifications,
27
- including but not limited to software source code, documentation
28
- source, and configuration files.
29
-
30
- "Object" form shall mean any form resulting from mechanical
31
- transformation or translation of a Source form, including but
32
- not limited to compiled object code, generated documentation,
33
- and conversions to other media types.
34
-
35
- "Work" shall mean the work of authorship, whether in Source or
36
- Object form, made available under the License, as indicated by a
37
- copyright notice that is included in or attached to the work
38
- (an example is provided in the Appendix below).
39
-
40
- "Derivative Works" shall mean any work, whether in Source or Object
41
- form, that is based on (or derived from) the Work and for which the
42
- editorial revisions, annotations, elaborations, or other modifications
43
- represent, as a whole, an original work of authorship. For the purposes
44
- of this License, Derivative Works shall not include works that remain
45
- separable from, or merely link (or bind by name) to the interfaces of,
46
- the Work and Derivative Works thereof.
47
-
48
- "Contribution" shall mean any work of authorship, including
49
- the original version of the Work and any modifications or additions
50
- to that Work or Derivative Works thereof, that is intentionally
51
- submitted to Licensor for inclusion in the Work by the copyright owner
52
- or by an individual or Legal Entity authorized to submit on behalf of
53
- the copyright owner. For the purposes of this definition, "submitted"
54
- means any form of electronic, verbal, or written communication sent
55
- to the Licensor or its representatives, including but not limited to
56
- communication on electronic mailing lists, source code control systems,
57
- and issue tracking systems that are managed by, or on behalf of, the
58
- Licensor for the purpose of discussing and improving the Work, but
59
- excluding communication that is conspicuously marked or otherwise
60
- designated in writing by the copyright owner as "Not a Contribution."
61
-
62
- "Contributor" shall mean Licensor and any individual or Legal Entity
63
- on behalf of whom a Contribution has been received by Licensor and
64
- subsequently incorporated within the Work.
65
-
66
- 2. Grant of Copyright License. Subject to the terms and conditions of
67
- this License, each Contributor hereby grants to You a perpetual,
68
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
- copyright license to reproduce, prepare Derivative Works of,
70
- publicly display, publicly perform, sublicense, and distribute the
71
- Work and such Derivative Works in Source or Object form.
72
-
73
- 3. Grant of Patent License. Subject to the terms and conditions of
74
- this License, each Contributor hereby grants to You a perpetual,
75
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
- (except as stated in this section) patent license to make, have made,
77
- use, offer to sell, sell, import, and otherwise transfer the Work,
78
- where such license applies only to those patent claims licensable
79
- by such Contributor that are necessarily infringed by their
80
- Contribution(s) alone or by combination of their Contribution(s)
81
- with the Work to which such Contribution(s) was submitted. If You
82
- institute patent litigation against any entity (including a
83
- cross-claim or counterclaim in a lawsuit) alleging that the Work
84
- or a Contribution incorporated within the Work constitutes direct
85
- or contributory patent infringement, then any patent licenses
86
- granted to You under this License for that Work shall terminate
87
- as of the date such litigation is filed.
88
-
89
- 4. Redistribution. You may reproduce and distribute copies of the
90
- Work or Derivative Works thereof in any medium, with or without
91
- modifications, and in Source or Object form, provided that You
92
- meet the following conditions:
93
-
94
- (a) You must give any other recipients of the Work or
95
- Derivative Works a copy of this License; and
96
-
97
- (b) You must cause any modified files to carry prominent notices
98
- stating that You changed the files; and
99
-
100
- (c) You must retain, in the Source form of any Derivative Works
101
- that You distribute, all copyright, patent, trademark, and
102
- attribution notices from the Source form of the Work,
103
- excluding those notices that do not pertain to any part of
104
- the Derivative Works; and
105
-
106
- (d) If the Work includes a "NOTICE" text file as part of its
107
- distribution, then any Derivative Works that You distribute must
108
- include a readable copy of the attribution notices contained
109
- within such NOTICE file, excluding those notices that do not
110
- pertain to any part of the Derivative Works, in at least one
111
- of the following places: within a NOTICE text file distributed
112
- as part of the Derivative Works; within the Source form or
113
- documentation, if provided along with the Derivative Works; or,
114
- within a display generated by the Derivative Works, if and
115
- wherever such third-party notices normally appear. The contents
116
- of the NOTICE file are for informational purposes only and
117
- do not modify the License. You may add Your own attribution
118
- notices within Derivative Works that You distribute, alongside
119
- or as an addendum to the NOTICE text from the Work, provided
120
- that such additional attribution notices cannot be construed
121
- as modifying the License.
122
-
123
- You may add Your own copyright statement to Your modifications and
124
- may provide additional or different license terms and conditions
125
- for use, reproduction, or distribution of Your modifications, or
126
- for any such Derivative Works as a whole, provided Your use,
127
- reproduction, and distribution of the Work otherwise complies with
128
- the conditions stated in this License.
129
-
130
- 5. Submission of Contributions. Unless You explicitly state otherwise,
131
- any Contribution intentionally submitted for inclusion in the Work
132
- by You to the Licensor shall be under the terms and conditions of
133
- this License, without any additional terms or conditions.
134
- Notwithstanding the above, nothing herein shall supersede or modify
135
- the terms of any separate license agreement you may have executed
136
- with Licensor regarding such Contributions.
137
-
138
- 6. Trademarks. This License does not grant permission to use the trade
139
- names, trademarks, service marks, or product names of the Licensor,
140
- except as required for reasonable and customary use in describing the
141
- origin of the Work and reproducing the content of the NOTICE file.
142
-
143
- 7. Disclaimer of Warranty. Unless required by applicable law or
144
- agreed to in writing, Licensor provides the Work (and each
145
- Contributor provides its Contributions) on an "AS IS" BASIS,
146
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
- implied, including, without limitation, any warranties or conditions
148
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
- PARTICULAR PURPOSE. You are solely responsible for determining the
150
- appropriateness of using or redistributing the Work and assume any
151
- risks associated with Your exercise of permissions under this License.
152
-
153
- 8. Limitation of Liability. In no event and under no legal theory,
154
- whether in tort (including negligence), contract, or otherwise,
155
- unless required by applicable law (such as deliberate and grossly
156
- negligent acts) or agreed to in writing, shall any Contributor be
157
- liable to You for damages, including any direct, indirect, special,
158
- incidental, or consequential damages of any character arising as a
159
- result of this License or out of the use or inability to use the
160
- Work (including but not limited to damages for loss of goodwill,
161
- work stoppage, computer failure or malfunction, or any and all
162
- other commercial damages or losses), even if such Contributor
163
- has been advised of the possibility of such damages.
164
-
165
- 9. Accepting Warranty or Additional Liability. While redistributing
166
- the Work or Derivative Works thereof, You may choose to offer,
167
- and charge a fee for, acceptance of support, warranty, indemnity,
168
- or other liability obligations and/or rights consistent with this
169
- License. However, in accepting such obligations, You may act only
170
- on Your own behalf and on Your sole responsibility, not on behalf
171
- of any other Contributor, and only if You agree to indemnify,
172
- defend, and hold each Contributor harmless for any liability
173
- incurred by, or claims asserted against, such Contributor by reason
174
- of your accepting any such warranty or additional liability.
175
-
176
- END OF TERMS AND CONDITIONS
177
-
178
- APPENDIX: How to apply the Apache License to your work.
179
-
180
- To apply the Apache License to your work, attach the following
181
- boilerplate notice, with the fields enclosed by brackets "[]"
182
- replaced with your own identifying information. (Don't include
183
- the brackets!) The text should be enclosed in the appropriate
184
- comment syntax for the file format. We also recommend that a
185
- file or class name and description of purpose be included on the
186
- same "printed page" as the copyright notice for easier
187
- identification within third-party archives.
188
-
189
- Copyright [yyyy] [name of copyright owner]
190
-
191
- Licensed under the Apache License, Version 2.0 (the "License");
192
- you may not use this file except in compliance with the License.
193
- You may obtain a copy of the License at
194
-
195
- http://www.apache.org/licenses/LICENSE-2.0
196
-
197
- Unless required by applicable law or agreed to in writing, software
198
- distributed under the License is distributed on an "AS IS" BASIS,
199
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
- See the License for the specific language governing permissions and
201
- limitations under the License.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
NeMo-2.2.0/MANIFEST.in DELETED
@@ -1 +0,0 @@
1
- include requirements/*
 
 
NeMo-2.2.0/README.md DELETED
@@ -1,723 +0,0 @@
1
- [![Project Status: Active -- The project has reached a stable, usable state and is being actively developed.](http://www.repostatus.org/badges/latest/active.svg)](http://www.repostatus.org/#active)
2
- [![Documentation](https://readthedocs.com/projects/nvidia-nemo/badge/?version=main)](https://docs.nvidia.com/deeplearning/nemo/user-guide/docs/en/main/)
3
- [![CodeQL](https://github.com/nvidia/nemo/actions/workflows/codeql.yml/badge.svg?branch=main&event=push)](https://github.com/nvidia/nemo/actions/workflows/codeql.yml)
4
- [![NeMo core license and license for collections in this repo](https://img.shields.io/badge/License-Apache%202.0-brightgreen.svg)](https://github.com/NVIDIA/NeMo/blob/master/LICENSE)
5
- [![Release version](https://badge.fury.io/py/nemo-toolkit.svg)](https://badge.fury.io/py/nemo-toolkit)
6
- [![Python version](https://img.shields.io/pypi/pyversions/nemo-toolkit.svg)](https://badge.fury.io/py/nemo-toolkit)
7
- [![PyPi total downloads](https://static.pepy.tech/personalized-badge/nemo-toolkit?period=total&units=international_system&left_color=grey&right_color=brightgreen&left_text=downloads)](https://pepy.tech/project/nemo-toolkit)
8
- [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
9
-
10
- # **NVIDIA NeMo Framework**
11
-
12
- ## Latest News
13
-
14
- <!-- markdownlint-disable -->
15
- <details open>
16
- <summary><b>NeMo 2.0</b></summary>
17
- We've released NeMo 2.0, an update on the NeMo Framework which prioritizes modularity and ease-of-use. Please refer to the <a href=https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/index.html>NeMo Framework User Guide</a> to get started.
18
- </details>
19
- <details open>
20
- <summary><b>New Cosmos World Foundation Models Support</b></summary>
21
- <details>
22
- <summary> <a href="https://developer.nvidia.com/blog/advancing-physical-ai-with-nvidia-cosmos-world-foundation-model-platform">Advancing Physical AI with NVIDIA Cosmos World Foundation Model Platform </a> (2025-01-09)
23
- </summary>
24
- The end-to-end NVIDIA Cosmos platform accelerates world model development for physical AI systems. Built on CUDA, Cosmos combines state-of-the-art world foundation models, video tokenizers, and AI-accelerated data processing pipelines. Developers can accelerate world model development by fine-tuning Cosmos world foundation models or building new ones from the ground up. These models create realistic synthetic videos of environments and interactions, providing a scalable foundation for training complex systems, from simulating humanoid robots performing advanced actions to developing end-to-end autonomous driving models.
25
- <br><br>
26
- </details>
27
- <details>
28
- <summary>
29
- <a href="https://developer.nvidia.com/blog/accelerate-custom-video-foundation-model-pipelines-with-new-nvidia-nemo-framework-capabilities/">
30
- Accelerate Custom Video Foundation Model Pipelines with New NVIDIA NeMo Framework Capabilities
31
- </a> (2025-01-07)
32
- </summary>
33
- The NeMo Framework now supports training and customizing the <a href="https://github.com/NVIDIA/Cosmos">NVIDIA Cosmos</a> collection of world foundation models. Cosmos leverages advanced text-to-world generation techniques to create fluid, coherent video content from natural language prompts.
34
- <br><br>
35
- You can also now accelerate your video processing step using the <a href="https://developer.nvidia.com/nemo-curator-video-processing-early-access">NeMo Curator</a> library, which provides optimized video processing and captioning features that can deliver up to 89x faster video processing when compared to an unoptimized CPU pipeline.
36
- <br><br>
37
- </details>
38
- </details>
39
- <details open>
40
- <summary><b>Large Language Models and Multimodal Models</b></summary>
41
- <details>
42
- <summary>
43
- <a href="https://developer.nvidia.com/blog/state-of-the-art-multimodal-generative-ai-model-development-with-nvidia-nemo/">
44
- State-of-the-Art Multimodal Generative AI Model Development with NVIDIA NeMo
45
- </a> (2024-11-06)
46
- </summary>
47
- NVIDIA recently announced significant enhancements to the NeMo platform, focusing on multimodal generative AI models. The update includes NeMo Curator and the Cosmos tokenizer, which streamline the data curation process and enhance the quality of visual data. These tools are designed to handle large-scale data efficiently, making it easier to develop high-quality AI models for various applications, including robotics and autonomous driving. The Cosmos tokenizers, in particular, efficiently map visual data into compact, semantic tokens, which is crucial for training large-scale generative models. The tokenizer is available now on the <a href=http://github.com/NVIDIA/cosmos-tokenizer/NVIDIA/cosmos-tokenizer>NVIDIA/cosmos-tokenizer</a> GitHub repo and on <a href=https://huggingface.co/nvidia/Cosmos-Tokenizer-CV8x8x8>Hugging Face</a>.
48
- <br><br>
49
- </details>
50
- <details>
51
- <summary>
52
- <a href="https://docs.nvidia.com/nemo-framework/user-guide/latest/llms/llama/index.html#new-llama-3-1-support for more information/">
53
- New Llama 3.1 Support
54
- </a> (2024-07-23)
55
- </summary>
56
- The NeMo Framework now supports training and customizing the Llama 3.1 collection of LLMs from Meta.
57
- <br><br>
58
- </details>
59
- <details>
60
- <summary>
61
- <a href="https://aws.amazon.com/blogs/machine-learning/accelerate-your-generative-ai-distributed-training-workloads-with-the-nvidia-nemo-framework-on-amazon-eks/">
62
- Accelerate your Generative AI Distributed Training Workloads with the NVIDIA NeMo Framework on Amazon EKS
63
- </a> (2024-07-16)
64
- </summary>
65
- NVIDIA NeMo Framework now runs distributed training workloads on an Amazon Elastic Kubernetes Service (Amazon EKS) cluster. For step-by-step instructions on creating an EKS cluster and running distributed training workloads with NeMo, see the GitHub repository <a href="https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/2.nemo-launcher/EKS/"> here.</a>
66
- <br><br>
67
- </details>
68
- <details>
69
- <summary>
70
- <a href="https://developer.nvidia.com/blog/nvidia-nemo-accelerates-llm-innovation-with-hybrid-state-space-model-support/">
71
- NVIDIA NeMo Accelerates LLM Innovation with Hybrid State Space Model Support
72
- </a> (2024/06/17)
73
- </summary>
74
- NVIDIA NeMo and Megatron Core now support pre-training and fine-tuning of state space models (SSMs). NeMo also supports training models based on the Griffin architecture as described by Google DeepMind.
75
- <br><br>
76
- </details>
77
- <details>
78
- <summary>
79
- <a href="https://huggingface.co/models?sort=trending&search=nvidia%2Fnemotron-4-340B">
80
- NVIDIA releases 340B base, instruct, and reward models pretrained on a total of 9T tokens.
81
- </a> (2024-06-18)
82
- </summary>
83
- See documentation and tutorials for SFT, PEFT, and PTQ with
84
- <a href="https://docs.nvidia.com/nemo-framework/user-guide/latest/llms/nemotron/index.html">
85
- Nemotron 340B
86
- </a>
87
- in the NeMo Framework User Guide.
88
- <br><br>
89
- </details>
90
- <details>
91
- <summary>
92
- <a href="https://developer.nvidia.com/blog/nvidia-sets-new-generative-ai-performance-and-scale-records-in-mlperf-training-v4-0/">
93
- NVIDIA sets new generative AI performance and scale records in MLPerf Training v4.0
94
- </a> (2024/06/12)
95
- </summary>
96
- Using NVIDIA NeMo Framework and NVIDIA Hopper GPUs NVIDIA was able to scale to 11,616 H100 GPUs and achieve near-linear performance scaling on LLM pretraining.
97
- NVIDIA also achieved the highest LLM fine-tuning performance and raised the bar for text-to-image training.
98
- <br><br>
99
- </details>
100
- <details>
101
- <summary>
102
- <a href="https://cloud.google.com/blog/products/compute/gke-and-nvidia-nemo-framework-to-train-generative-ai-models">
103
- Accelerate your generative AI journey with NVIDIA NeMo Framework on GKE
104
- </a> (2024/03/16)
105
- </summary>
106
- An end-to-end walkthrough to train generative AI models on the Google Kubernetes Engine (GKE) using the NVIDIA NeMo Framework is available at https://github.com/GoogleCloudPlatform/nvidia-nemo-on-gke.
107
- The walkthrough includes detailed instructions on how to set up a Google Cloud Project and pre-train a GPT model using the NeMo Framework.
108
- <br><br>
109
- </details>
110
- </details>
111
- <details open>
112
- <summary><b>Speech Recognition</b></summary>
113
- <details>
114
- <summary>
115
- <a href="https://developer.nvidia.com/blog/accelerating-leaderboard-topping-asr-models-10x-with-nvidia-nemo/">
116
- Accelerating Leaderboard-Topping ASR Models 10x with NVIDIA NeMo
117
- </a> (2024/09/24)
118
- </summary>
119
- NVIDIA NeMo team released a number of inference optimizations for CTC, RNN-T, and TDT models that resulted in up to 10x inference speed-up.
120
- These models now exceed an inverse real-time factor (RTFx) of 2,000, with some reaching RTFx of even 6,000.
121
- <br><br>
122
- </details>
123
- <details>
124
- <summary>
125
- <a href="https://developer.nvidia.com/blog/new-standard-for-speech-recognition-and-translation-from-the-nvidia-nemo-canary-model/">
126
- New Standard for Speech Recognition and Translation from the NVIDIA NeMo Canary Model
127
- </a> (2024/04/18)
128
- </summary>
129
- The NeMo team just released Canary, a multilingual model that transcribes speech in English, Spanish, German, and French with punctuation and capitalization.
130
- Canary also provides bi-directional translation, between English and the three other supported languages.
131
- <br><br>
132
- </details>
133
- <details>
134
- <summary>
135
- <a href="https://developer.nvidia.com/blog/pushing-the-boundaries-of-speech-recognition-with-nemo-parakeet-asr-models/">
136
- Pushing the Boundaries of Speech Recognition with NVIDIA NeMo Parakeet ASR Models
137
- </a> (2024/04/18)
138
- </summary>
139
- NVIDIA NeMo, an end-to-end platform for the development of multimodal generative AI models at scale anywhere—on any cloud and on-premises—released the Parakeet family of automatic speech recognition (ASR) models.
140
- These state-of-the-art ASR models, developed in collaboration with Suno.ai, transcribe spoken English with exceptional accuracy.
141
- <br><br>
142
- </details>
143
- <details>
144
- <summary>
145
- <a href="https://developer.nvidia.com/blog/turbocharge-asr-accuracy-and-speed-with-nvidia-nemo-parakeet-tdt/">
146
- Turbocharge ASR Accuracy and Speed with NVIDIA NeMo Parakeet-TDT
147
- </a> (2024/04/18)
148
- </summary>
149
- NVIDIA NeMo, an end-to-end platform for developing multimodal generative AI models at scale anywhere—on any cloud and on-premises—recently released Parakeet-TDT.
150
- This new addition to the  NeMo ASR Parakeet model family boasts better accuracy and 64% greater speed over the previously best model, Parakeet-RNNT-1.1B.
151
- <br><br>
152
- </details>
153
- </details>
154
- <!-- markdownlint-enable -->
155
-
156
- ## Introduction
157
-
158
- NVIDIA NeMo Framework is a scalable and cloud-native generative AI
159
- framework built for researchers and PyTorch developers working on Large
160
- Language Models (LLMs), Multimodal Models (MMs), Automatic Speech
161
- Recognition (ASR), Text to Speech (TTS), and Computer Vision (CV)
162
- domains. It is designed to help you efficiently create, customize, and
163
- deploy new generative AI models by leveraging existing code and
164
- pre-trained model checkpoints.
165
-
166
- For technical documentation, please see the [NeMo Framework User
167
- Guide](https://docs.nvidia.com/nemo-framework/user-guide/latest/playbooks/index.html).
168
-
169
- ## What's New in NeMo 2.0
170
-
171
- NVIDIA NeMo 2.0 introduces several significant improvements over its predecessor, NeMo 1.0, enhancing flexibility, performance, and scalability.
172
-
173
- - **Python-Based Configuration** - NeMo 2.0 transitions from YAML files to a Python-based configuration, providing more flexibility and control. This shift makes it easier to extend and customize configurations programmatically.
174
-
175
- - **Modular Abstractions** - By adopting PyTorch Lightning’s modular abstractions, NeMo 2.0 simplifies adaptation and experimentation. This modular approach allows developers to more easily modify and experiment with different components of their models.
176
-
177
- - **Scalability** - NeMo 2.0 seamlessly scaling large-scale experiments across thousands of GPUs using [NeMo-Run](https://github.com/NVIDIA/NeMo-Run), a powerful tool designed to streamline the configuration, execution, and management of machine learning experiments across computing environments.
178
-
179
- Overall, these enhancements make NeMo 2.0 a powerful, scalable, and user-friendly framework for AI model development.
180
-
181
- > [!IMPORTANT]
182
- > NeMo 2.0 is currently supported by the LLM (large language model) and VLM (vision language model) collections.
183
-
184
- ### Get Started with NeMo 2.0
185
-
186
- - Refer to the [Quickstart](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/quickstart.html) for examples of using NeMo-Run to launch NeMo 2.0 experiments locally and on a slurm cluster.
187
- - For more information about NeMo 2.0, see the [NeMo Framework User Guide](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/index.html).
188
- - [NeMo 2.0 Recipes](https://github.com/NVIDIA/NeMo/blob/main/nemo/collections/llm/recipes) contains additional examples of launching large-scale runs using NeMo 2.0 and NeMo-Run.
189
- - For an in-depth exploration of the main features of NeMo 2.0, see the [Feature Guide](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/index.html#feature-guide).
190
- - To transition from NeMo 1.0 to 2.0, see the [Migration Guide](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/migration/index.html#migration-guide) for step-by-step instructions.
191
-
192
- ### Get Started with Cosmos
193
-
194
- NeMo Curator and NeMo Framework support video curation and post-training of the Cosmos World Foundation Models, which are open and available on [NGC](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/cosmos/collections/cosmos) and [Hugging Face](https://huggingface.co/collections/nvidia/cosmos-6751e884dc10e013a0a0d8e6). For more information on video datasets, refer to [NeMo Curator](https://developer.nvidia.com/nemo-curator). To post-train World Foundation Models using the NeMo Framework for your custom physical AI tasks, see the [Cosmos Diffusion models](https://github.com/NVIDIA/Cosmos/blob/main/cosmos1/models/diffusion/nemo/post_training/README.md) and the [Cosmos Autoregressive models](https://github.com/NVIDIA/Cosmos/blob/main/cosmos1/models/autoregressive/nemo/post_training/README.md).
195
-
196
- ## LLMs and MMs Training, Alignment, and Customization
197
-
198
- All NeMo models are trained with
199
- [Lightning](https://github.com/Lightning-AI/lightning). Training is
200
- automatically scalable to 1000s of GPUs. You can check the performance benchmarks using the
201
- latest NeMo Framework container [here](https://docs.nvidia.com/nemo-framework/user-guide/latest/performance/performance_summary.html).
202
-
203
- When applicable, NeMo models leverage cutting-edge distributed training
204
- techniques, incorporating [parallelism
205
- strategies](https://docs.nvidia.com/nemo-framework/user-guide/latest/modeloverview.html)
206
- to enable efficient training of very large models. These techniques
207
- include Tensor Parallelism (TP), Pipeline Parallelism (PP), Fully
208
- Sharded Data Parallelism (FSDP), Mixture-of-Experts (MoE), and Mixed
209
- Precision Training with BFloat16 and FP8, as well as others.
210
-
211
- NeMo Transformer-based LLMs and MMs utilize [NVIDIA Transformer
212
- Engine](https://github.com/NVIDIA/TransformerEngine) for FP8 training on
213
- NVIDIA Hopper GPUs, while leveraging [NVIDIA Megatron
214
- Core](https://github.com/NVIDIA/Megatron-LM/tree/main/megatron/core) for
215
- scaling Transformer model training.
216
-
217
- NeMo LLMs can be aligned with state-of-the-art methods such as SteerLM,
218
- Direct Preference Optimization (DPO), and Reinforcement Learning from
219
- Human Feedback (RLHF). See [NVIDIA NeMo
220
- Aligner](https://github.com/NVIDIA/NeMo-Aligner) for more information.
221
-
222
- In addition to supervised fine-tuning (SFT), NeMo also supports the
223
- latest parameter efficient fine-tuning (PEFT) techniques such as LoRA,
224
- P-Tuning, Adapters, and IA3. Refer to the [NeMo Framework User
225
- Guide](https://docs.nvidia.com/nemo-framework/user-guide/latest/sft_peft/index.html)
226
- for the full list of supported models and techniques.
227
-
228
- ## LLMs and MMs Deployment and Optimization
229
-
230
- NeMo LLMs and MMs can be deployed and optimized with [NVIDIA NeMo
231
- Microservices](https://developer.nvidia.com/nemo-microservices-early-access).
232
-
233
- ## Speech AI
234
-
235
- NeMo ASR and TTS models can be optimized for inference and deployed for
236
- production use cases with [NVIDIA Riva](https://developer.nvidia.com/riva).
237
-
238
- ## NeMo Framework Launcher
239
-
240
- > [!IMPORTANT]
241
- > NeMo Framework Launcher is compatible with NeMo version 1.0 only. [NeMo-Run](https://github.com/NVIDIA/NeMo-Run) is recommended for launching experiments using NeMo 2.0.
242
-
243
- [NeMo Framework
244
- Launcher](https://github.com/NVIDIA/NeMo-Megatron-Launcher) is a
245
- cloud-native tool that streamlines the NeMo Framework experience. It is
246
- used for launching end-to-end NeMo Framework training jobs on CSPs and
247
- Slurm clusters.
248
-
249
- The NeMo Framework Launcher includes extensive recipes, scripts,
250
- utilities, and documentation for training NeMo LLMs. It also includes
251
- the NeMo Framework [Autoconfigurator](https://github.com/NVIDIA/NeMo-Megatron-Launcher#53-using-autoconfigurator-to-find-the-optimal-configuration),
252
- which is designed to find the optimal model parallel configuration for
253
- training on a specific cluster.
254
-
255
- To get started quickly with the NeMo Framework Launcher, please see the
256
- [NeMo Framework
257
- Playbooks](https://docs.nvidia.com/nemo-framework/user-guide/latest/playbooks/index.html).
258
- The NeMo Framework Launcher does not currently support ASR and TTS
259
- training, but it will soon.
260
-
261
- ## Get Started with NeMo Framework
262
-
263
- Getting started with NeMo Framework is easy. State-of-the-art pretrained
264
- NeMo models are freely available on [Hugging Face
265
- Hub](https://huggingface.co/models?library=nemo&sort=downloads&search=nvidia)
266
- and [NVIDIA
267
- NGC](https://catalog.ngc.nvidia.com/models?query=nemo&orderBy=weightPopularDESC).
268
- These models can be used to generate text or images, transcribe audio,
269
- and synthesize speech in just a few lines of code.
270
-
271
- We have extensive
272
- [tutorials](https://docs.nvidia.com/deeplearning/nemo/user-guide/docs/en/stable/starthere/tutorials.html)
273
- that can be run on [Google Colab](https://colab.research.google.com) or
274
- with our [NGC NeMo Framework
275
- Container](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/nemo).
276
- We also have
277
- [playbooks](https://docs.nvidia.com/nemo-framework/user-guide/latest/playbooks/index.html)
278
- for users who want to train NeMo models with the NeMo Framework
279
- Launcher.
280
-
281
- For advanced users who want to train NeMo models from scratch or
282
- fine-tune existing NeMo models, we have a full suite of [example
283
- scripts](https://github.com/NVIDIA/NeMo/tree/main/examples) that support
284
- multi-GPU/multi-node training.
285
-
286
- ## Key Features
287
-
288
- - [Large Language Models](nemo/collections/nlp/README.md)
289
- - [Multimodal](nemo/collections/multimodal/README.md)
290
- - [Automatic Speech Recognition](nemo/collections/asr/README.md)
291
- - [Text to Speech](nemo/collections/tts/README.md)
292
- - [Computer Vision](nemo/collections/vision/README.md)
293
-
294
- ## Requirements
295
-
296
- - Python 3.10 or above
297
- - Pytorch 1.13.1 or above
298
- - NVIDIA GPU (if you intend to do model training)
299
-
300
- ## Developer Documentation
301
-
302
- | Version | Status | Description |
303
- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
304
- | Latest | [![Documentation Status](https://readthedocs.com/projects/nvidia-nemo/badge/?version=main)](https://docs.nvidia.com/deeplearning/nemo/user-guide/docs/en/main/) | [Documentation of the latest (i.e. main) branch.](https://docs.nvidia.com/deeplearning/nemo/user-guide/docs/en/main/) |
305
- | Stable | [![Documentation Status](https://readthedocs.com/projects/nvidia-nemo/badge/?version=stable)](https://docs.nvidia.com/deeplearning/nemo/user-guide/docs/en/stable/) | [Documentation of the stable (i.e. most recent release)](https://docs.nvidia.com/deeplearning/nemo/user-guide/docs/en/stable/) |
306
-
307
- ## Install NeMo Framework
308
-
309
- The NeMo Framework can be installed in a variety of ways, depending on
310
- your needs. Depending on the domain, you may find one of the following
311
- installation methods more suitable.
312
-
313
- - Conda / Pip - Refer to [Conda](#conda) and [Pip](#pip) for
314
- installation instructions.
315
- - This is the recommended method for ASR and TTS domains.
316
- - When using a Nvidia PyTorch container as the base, this is the
317
- recommended method for all domains.
318
- - Docker Containers - Refer to [Docker containers](#docker-containers)
319
- for installation instructions.
320
- - NeMo Framework container -
321
- [nvcr.io/nvidia/nemo:24.05]{.title-ref}
322
- - LLMs and MMs Dependencies - Refer to [LLMs and MMs
323
- Dependencies](#install-llms-and-mms-dependencies) for installation
324
- instructions.
325
-
326
- **Important: We strongly recommended that you start with a base NVIDIA
327
- PyTorch container: nvcr.io/nvidia/pytorch:24.02-py3.**
328
-
329
- ### Conda
330
-
331
- Install NeMo in a fresh Conda environment:
332
-
333
- ```bash
334
- conda create --name nemo python==3.10.12
335
- conda activate nemo
336
- ```
337
-
338
- Install PyTorch using their
339
- [configurator](https://pytorch.org/get-started/locally/):
340
-
341
- ```bash
342
- conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
343
- ```
344
-
345
- The command to install PyTorch may depend on your system. Use the
346
- configurator linked above to find the right command for your system.
347
-
348
- Then, install NeMo via Pip or from Source. We do not provide NeMo on the
349
- conda-forge or any other Conda channel.
350
-
351
- ### Pip
352
-
353
- To install the nemo_toolkit, use the following installation method:
354
-
355
- ```bash
356
- apt-get update && apt-get install -y libsndfile1 ffmpeg
357
- pip install Cython packaging
358
- pip install nemo_toolkit['all']
359
- ```
360
-
361
- Depending on the shell used, you may need to use the
362
- `"nemo_toolkit[all]"` specifier instead in the above command.
363
-
364
- ### Pip from a Specific Domain
365
-
366
- To install a specific domain of NeMo, you must first install the
367
- nemo_toolkit using the instructions listed above. Then, you run the
368
- following domain-specific commands:
369
-
370
- ```bash
371
- pip install nemo_toolkit['asr']
372
- pip install nemo_toolkit['nlp']
373
- pip install nemo_toolkit['tts']
374
- pip install nemo_toolkit['vision']
375
- pip install nemo_toolkit['multimodal']
376
- ```
377
-
378
- ### Pip from a Source Branch
379
-
380
- If you want to work with a specific version of NeMo from a particular
381
- GitHub branch (e.g main), use the following installation method:
382
-
383
- ```bash
384
- apt-get update && apt-get install -y libsndfile1 ffmpeg
385
- pip install Cython packaging
386
- python -m pip install git+https://github.com/NVIDIA/NeMo.git@{BRANCH}#egg=nemo_toolkit[all]
387
- ```
388
-
389
- ### Build from Source
390
-
391
- If you want to clone the NeMo GitHub repository and contribute to NeMo
392
- open-source development work, use the following installation method:
393
-
394
- ```bash
395
- apt-get update && apt-get install -y libsndfile1 ffmpeg
396
- git clone https://github.com/NVIDIA/NeMo
397
- cd NeMo
398
- ./reinstall.sh
399
- ```
400
-
401
- If you only want the toolkit without the additional Conda-based
402
- dependencies, you can replace `reinstall.sh` with `pip install -e .`
403
- when your PWD is the root of the NeMo repository.
404
-
405
- ### Mac Computers with Apple Silicon
406
-
407
- To install NeMo on Mac computers with the Apple M-Series GPU, you need
408
- to create a new Conda environment, install PyTorch 2.0 or higher, and
409
- then install the nemo_toolkit.
410
-
411
- **Important: This method is only applicable to the ASR domain.**
412
-
413
- Run the following code:
414
-
415
- ```shell
416
- # [optional] install mecab using Homebrew, to use sacrebleu for NLP collection
417
- # you can install Homebrew here: https://brew.sh
418
- brew install mecab
419
-
420
- # [optional] install pynini using Conda, to use text normalization
421
- conda install -c conda-forge pynini
422
-
423
- # install Cython manually
424
- pip install cython packaging
425
-
426
- # clone the repo and install in development mode
427
- git clone https://github.com/NVIDIA/NeMo
428
- cd NeMo
429
- pip install 'nemo_toolkit[all]'
430
-
431
- # Note that only the ASR toolkit is guaranteed to work on MacBook - so for MacBook use pip install 'nemo_toolkit[asr]'
432
- ```
433
-
434
- ### Windows Computers
435
-
436
- To install the Windows Subsystem for Linux (WSL), run the following code
437
- in PowerShell:
438
-
439
- ```shell
440
- wsl --install
441
- # [note] If you run wsl --install and see the WSL help text, it means WSL is already installed.
442
- ```
443
-
444
- To learn more about installing WSL, refer to [Microsoft\'s official
445
- documentation](https://learn.microsoft.com/en-us/windows/wsl/install).
446
-
447
- After installing your Linux distribution with WSL, two options are
448
- available:
449
-
450
- **Option 1:** Open the distribution (Ubuntu by default) from the Start
451
- menu and follow the instructions.
452
-
453
- **Option 2:** Launch the Terminal application. Download it from
454
- [Microsoft\'s Windows Terminal
455
- page](https://learn.microsoft.com/en-us/windows/terminal) if not
456
- installed.
457
-
458
- Next, follow the instructions for Linux systems, as provided above. For
459
- example:
460
-
461
- ```bash
462
- apt-get update && apt-get install -y libsndfile1 ffmpeg
463
- git clone https://github.com/NVIDIA/NeMo
464
- cd NeMo
465
- ./reinstall.sh
466
- ```
467
-
468
- ### RNNT
469
-
470
- For optimal performance of a Recurrent Neural Network Transducer (RNNT),
471
- install the Numba package from Conda.
472
-
473
- Run the following code:
474
-
475
- ```bash
476
- conda remove numba
477
- pip uninstall numba
478
- conda install -c conda-forge numba
479
- ```
480
-
481
- ## Install LLMs and MMs Dependencies
482
-
483
- If you work with the LLM and MM domains, three additional dependencies
484
- are required: NVIDIA Apex, NVIDIA Transformer Engine, and NVIDIA
485
- Megatron Core. When working with the [main]{.title-ref} branch, these
486
- dependencies may require a recent commit.
487
-
488
- The most recent working versions of these dependencies are here:
489
-
490
- ```bash
491
- export apex_commit=810ffae374a2b9cb4b5c5e28eaeca7d7998fca0c
492
- export te_commit=bfe21c3d68b0a9951e5716fb520045db53419c5e
493
- export mcore_commit=02871b4df8c69fac687ab6676c4246e936ce92d0
494
- export nv_pytorch_tag=24.02-py3
495
- ```
496
-
497
- When using a released version of NeMo, please refer to the [Software
498
- Component
499
- Versions](https://docs.nvidia.com/nemo-framework/user-guide/latest/softwarecomponentversions.html)
500
- for the correct versions.
501
-
502
- ### PyTorch Container
503
-
504
- We recommended that you start with a base NVIDIA PyTorch container:
505
- nvcr.io/nvidia/pytorch:24.02-py3.
506
-
507
- If starting with a base NVIDIA PyTorch container, you must first launch
508
- the container:
509
-
510
- ```bash
511
- docker run \
512
- --gpus all \
513
- -it \
514
- --rm \
515
- --shm-size=16g \
516
- --ulimit memlock=-1 \
517
- --ulimit stack=67108864 \
518
- nvcr.io/nvidia/pytorch:$nv_pytorch_tag
519
- ```
520
-
521
- Next, you need to install the dependencies.
522
-
523
- ### Apex
524
-
525
- NVIDIA Apex is required for LLM and MM domains. Although Apex is
526
- pre-installed in the NVIDIA PyTorch container, you may need to update it
527
- to a newer version.
528
-
529
- To install Apex, run the following code:
530
-
531
- ```bash
532
- git clone https://github.com/NVIDIA/apex.git
533
- cd apex
534
- git checkout $apex_commit
535
- pip install . -v --no-build-isolation --disable-pip-version-check --no-cache-dir --config-settings "--build-option=--cpp_ext --cuda_ext --fast_layer_norm --distributed_adam --deprecated_fused_adam --group_norm"
536
- ```
537
-
538
- When attempting to install Apex separately from the NVIDIA PyTorch
539
- container, you might encounter an error if the CUDA version on your
540
- system is different from the one used to compile PyTorch. To bypass this
541
- error, you can comment out the relevant line in the setup file located
542
- in the Apex repository on GitHub here:
543
- <https://github.com/NVIDIA/apex/blob/master/setup.py#L32>.
544
-
545
- cuda-nvprof is needed to install Apex. The version should match the CUDA
546
- version that you are using.
547
-
548
- To install cuda-nvprof, run the following code:
549
-
550
- ```bash
551
- conda install -c nvidia cuda-nvprof=11.8
552
- ```
553
-
554
- Finally, install the packaging:
555
-
556
- ```bash
557
- pip install packaging
558
- ```
559
-
560
- To install the most recent versions of Apex locally, it might be
561
- necessary to remove the [pyproject.toml]{.title-ref} file from the Apex
562
- directory.
563
-
564
- ### Transformer Engine
565
-
566
- NVIDIA Transformer Engine is required for LLM and MM domains. Although
567
- the Transformer Engine is pre-installed in the NVIDIA PyTorch container,
568
- you may need to update it to a newer version.
569
-
570
- The Transformer Engine facilitates training with FP8 precision on NVIDIA
571
- Hopper GPUs and introduces many enhancements for the training of
572
- Transformer-based models. Refer to [Transformer Engine](https://docs.nvidia.com/deeplearning/transformer-engine/user-guide/installation.html)
573
- for information.
574
-
575
- To install Transformer Engine, run the following code:
576
-
577
- ```bash
578
- git clone https://github.com/NVIDIA/TransformerEngine.git && \
579
- cd TransformerEngine && \
580
- git checkout $te_commit && \
581
- git submodule init && git submodule update && \
582
- NVTE_FRAMEWORK=pytorch NVTE_WITH_USERBUFFERS=1 MPI_HOME=/usr/local/mpi pip install .
583
- ```
584
-
585
- Transformer Engine requires PyTorch to be built with at least CUDA 11.8.
586
-
587
- ### Megatron Core
588
-
589
- Megatron Core is required for LLM and MM domains. Megatron Core is a
590
- library for scaling large Transformer-based models. NeMo LLMs and MMs
591
- leverage Megatron Core for model parallelism, transformer architectures,
592
- and optimized PyTorch datasets.
593
-
594
- To install Megatron Core, run the following code:
595
-
596
- ```bash
597
- git clone https://github.com/NVIDIA/Megatron-LM.git && \
598
- cd Megatron-LM && \
599
- git checkout $mcore_commit && \
600
- pip install . && \
601
- cd megatron/core/datasets && \
602
- make
603
- ```
604
-
605
- ## NeMo Text Processing
606
-
607
- NeMo Text Processing, specifically Inverse Text Normalization, is now a
608
- separate repository. It is located here:
609
- <https://github.com/NVIDIA/NeMo-text-processing>.
610
-
611
- ## Docker Containers
612
-
613
- NeMo containers are launched concurrently with NeMo version updates.
614
- NeMo Framework now supports LLMs, MMs, ASR, and TTS in a single
615
- consolidated Docker container. You can find additional information about
616
- released containers on the [NeMo releases
617
- page](https://github.com/NVIDIA/NeMo/releases).
618
-
619
- To use a pre-built container, run the following code:
620
-
621
- ```bash
622
- docker pull nvcr.io/nvidia/nemo:24.05
623
- ```
624
-
625
- To build a nemo container with Dockerfile from a branch, run the
626
- following code:
627
-
628
- ```bash
629
- DOCKER_BUILDKIT=1 docker build -f Dockerfile -t nemo:latest
630
- ```
631
-
632
- If you choose to work with the main branch, we recommend using NVIDIA\'s
633
- PyTorch container version 23.10-py3 and then installing from GitHub.
634
-
635
- ```bash
636
- docker run --gpus all -it --rm -v <nemo_github_folder>:/NeMo --shm-size=8g \
637
- -p 8888:8888 -p 6006:6006 --ulimit memlock=-1 --ulimit \
638
- stack=67108864 --device=/dev/snd nvcr.io/nvidia/pytorch:23.10-py3
639
- ```
640
-
641
- ## Future Work
642
-
643
- The NeMo Framework Launcher does not currently support ASR and TTS
644
- training, but it will soon.
645
-
646
- ## Discussions Board
647
-
648
- FAQ can be found on the NeMo [Discussions
649
- board](https://github.com/NVIDIA/NeMo/discussions). You are welcome to
650
- ask questions or start discussions on the board.
651
-
652
- ## Contribute to NeMo
653
-
654
- We welcome community contributions! Please refer to
655
- [CONTRIBUTING.md](https://github.com/NVIDIA/NeMo/blob/stable/CONTRIBUTING.md)
656
- for the process.
657
-
658
- ## Publications
659
-
660
- We provide an ever-growing list of
661
- [publications](https://nvidia.github.io/NeMo/publications/) that utilize
662
- the NeMo Framework.
663
-
664
- To contribute an article to the collection, please submit a pull request
665
- to the `gh-pages-src` branch of this repository. For detailed
666
- information, please consult the README located at the [gh-pages-src
667
- branch](https://github.com/NVIDIA/NeMo/tree/gh-pages-src#readme).
668
-
669
- ## Blogs
670
-
671
- <!-- markdownlint-disable -->
672
- <details open>
673
- <summary><b>Large Language Models and Multimodal Models</b></summary>
674
- <details>
675
- <summary>
676
- <a href="https://blogs.nvidia.com/blog/bria-builds-responsible-generative-ai-using-nemo-picasso/">
677
- Bria Builds Responsible Generative AI for Enterprises Using NVIDIA NeMo, Picasso
678
- </a> (2024/03/06)
679
- </summary>
680
- Bria, a Tel Aviv startup at the forefront of visual generative AI for enterprises now leverages the NVIDIA NeMo Framework.
681
- The Bria.ai platform uses reference implementations from the NeMo Multimodal collection, trained on NVIDIA Tensor Core GPUs, to enable high-throughput and low-latency image generation.
682
- Bria has also adopted NVIDIA Picasso, a foundry for visual generative AI models, to run inference.
683
- <br><br>
684
- </details>
685
- <details>
686
- <summary>
687
- <a href="https://developer.nvidia.com/blog/new-nvidia-nemo-framework-features-and-nvidia-h200-supercharge-llm-training-performance-and-versatility/">
688
- New NVIDIA NeMo Framework Features and NVIDIA H200
689
- </a> (2023/12/06)
690
- </summary>
691
- NVIDIA NeMo Framework now includes several optimizations and enhancements,
692
- including:
693
- 1) Fully Sharded Data Parallelism (FSDP) to improve the efficiency of training large-scale AI models,
694
- 2) Mix of Experts (MoE)-based LLM architectures with expert parallelism for efficient LLM training at scale,
695
- 3) Reinforcement Learning from Human Feedback (RLHF) with TensorRT-LLM for inference stage acceleration, and
696
- 4) up to 4.2x speedups for Llama 2 pre-training on NVIDIA H200 Tensor Core GPUs.
697
- <br><br>
698
- <a href="https://developer.nvidia.com/blog/new-nvidia-nemo-framework-features-and-nvidia-h200-supercharge-llm-training-performance-and-versatility">
699
- <img src="https://github.com/sbhavani/TransformerEngine/blob/main/docs/examples/H200-NeMo-performance.png" alt="H200-NeMo-performance" style="width: 600px;"></a>
700
- <br><br>
701
- </details>
702
- <details>
703
- <summary>
704
- <a href="https://blogs.nvidia.com/blog/nemo-amazon-titan/">
705
- NVIDIA now powers training for Amazon Titan Foundation models
706
- </a> (2023/11/28)
707
- </summary>
708
- NVIDIA NeMo Framework now empowers the Amazon Titan foundation models (FM) with efficient training of large language models (LLMs).
709
- The Titan FMs form the basis of Amazon’s generative AI service, Amazon Bedrock.
710
- The NeMo Framework provides a versatile framework for building, customizing, and running LLMs.
711
- <br><br>
712
- </details>
713
- </details>
714
- <!-- markdownlint-enable -->
715
-
716
- ## Licenses
717
-
718
- - [NeMo GitHub Apache 2.0
719
- license](https://github.com/NVIDIA/NeMo?tab=Apache-2.0-1-ov-file#readme)
720
- - NeMo is licensed under the [NVIDIA AI PRODUCT
721
- AGREEMENT](https://www.nvidia.com/en-us/data-center/products/nvidia-ai-enterprise/eula/).
722
- By pulling and using the container, you accept the terms and
723
- conditions of this license.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
NeMo-2.2.0/codecov.yml DELETED
@@ -1,7 +0,0 @@
1
- comment: false
2
- coverage:
3
- status:
4
- patch: false
5
- project: false
6
- fixes:
7
- - "/workspace/::"
 
 
 
 
 
 
 
 
NeMo-2.2.0/docs/Makefile DELETED
@@ -1,216 +0,0 @@
1
- # Makefile for Sphinx documentation
2
- #
3
-
4
- # You can set these variables from the command line.
5
- SPHINXOPTS =
6
- SPHINXBUILD = sphinx-build
7
- PAPER =
8
- BUILDDIR = build
9
-
10
- # User-friendly check for sphinx-build
11
- ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
12
- $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
13
- endif
14
-
15
- # Internal variables.
16
- PAPEROPT_a4 = -D latex_paper_size=a4
17
- PAPEROPT_letter = -D latex_paper_size=letter
18
- ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
19
- # the i18n builder cannot share the environment and doctrees with the others
20
- I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
21
-
22
- .PHONY: help
23
- help:
24
- @echo "Please use \`make <target>' where <target> is one of"
25
- @echo " html to make standalone HTML files"
26
- @echo " dirhtml to make HTML files named index.html in directories"
27
- @echo " singlehtml to make a single large HTML file"
28
- @echo " pickle to make pickle files"
29
- @echo " json to make JSON files"
30
- @echo " htmlhelp to make HTML files and a HTML help project"
31
- @echo " qthelp to make HTML files and a qthelp project"
32
- @echo " applehelp to make an Apple Help Book"
33
- @echo " devhelp to make HTML files and a Devhelp project"
34
- @echo " epub to make an epub"
35
- @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
36
- @echo " latexpdf to make LaTeX files and run them through pdflatex"
37
- @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
38
- @echo " text to make text files"
39
- @echo " man to make manual pages"
40
- @echo " texinfo to make Texinfo files"
41
- @echo " info to make Texinfo files and run them through makeinfo"
42
- @echo " gettext to make PO message catalogs"
43
- @echo " changes to make an overview of all changed/added/deprecated items"
44
- @echo " xml to make Docutils-native XML files"
45
- @echo " pseudoxml to make pseudoxml-XML files for display purposes"
46
- @echo " linkcheck to check all external links for integrity"
47
- @echo " doctest to run all doctests embedded in the documentation (if enabled)"
48
- @echo " coverage to run coverage check of the documentation (if enabled)"
49
-
50
- .PHONY: clean
51
- clean:
52
- rm -rf $(BUILDDIR)/*
53
-
54
- .PHONY: html
55
- html:
56
- $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
57
- @echo
58
- @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
59
-
60
- .PHONY: dirhtml
61
- dirhtml:
62
- $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
63
- @echo
64
- @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
65
-
66
- .PHONY: singlehtml
67
- singlehtml:
68
- $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
69
- @echo
70
- @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
71
-
72
- .PHONY: pickle
73
- pickle:
74
- $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
75
- @echo
76
- @echo "Build finished; now you can process the pickle files."
77
-
78
- .PHONY: json
79
- json:
80
- $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
81
- @echo
82
- @echo "Build finished; now you can process the JSON files."
83
-
84
- .PHONY: htmlhelp
85
- htmlhelp:
86
- $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
87
- @echo
88
- @echo "Build finished; now you can run HTML Help Workshop with the" \
89
- ".hhp project file in $(BUILDDIR)/htmlhelp."
90
-
91
- .PHONY: qthelp
92
- qthelp:
93
- $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
94
- @echo
95
- @echo "Build finished; now you can run "qcollectiongenerator" with the" \
96
- ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
97
- @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/OpenSeq2Seq.qhcp"
98
- @echo "To view the help file:"
99
- @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/OpenSeq2Seq.qhc"
100
-
101
- .PHONY: applehelp
102
- applehelp:
103
- $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
104
- @echo
105
- @echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
106
- @echo "N.B. You won't be able to view it unless you put it in" \
107
- "~/Library/Documentation/Help or install it in your application" \
108
- "bundle."
109
-
110
- .PHONY: devhelp
111
- devhelp:
112
- $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
113
- @echo
114
- @echo "Build finished."
115
- @echo "To view the help file:"
116
- @echo "# mkdir -p $$HOME/.local/share/devhelp/OpenSeq2Seq"
117
- @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/OpenSeq2Seq"
118
- @echo "# devhelp"
119
-
120
- .PHONY: epub
121
- epub:
122
- $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
123
- @echo
124
- @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
125
-
126
- .PHONY: latex
127
- latex:
128
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
129
- @echo
130
- @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
131
- @echo "Run \`make' in that directory to run these through (pdf)latex" \
132
- "(use \`make latexpdf' here to do that automatically)."
133
-
134
- .PHONY: latexpdf
135
- latexpdf:
136
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
137
- @echo "Running LaTeX files through pdflatex..."
138
- $(MAKE) -C $(BUILDDIR)/latex all-pdf
139
- @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
140
-
141
- .PHONY: latexpdfja
142
- latexpdfja:
143
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
144
- @echo "Running LaTeX files through platex and dvipdfmx..."
145
- $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
146
- @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
147
-
148
- .PHONY: text
149
- text:
150
- $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
151
- @echo
152
- @echo "Build finished. The text files are in $(BUILDDIR)/text."
153
-
154
- .PHONY: man
155
- man:
156
- $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
157
- @echo
158
- @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
159
-
160
- .PHONY: texinfo
161
- texinfo:
162
- $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
163
- @echo
164
- @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
165
- @echo "Run \`make' in that directory to run these through makeinfo" \
166
- "(use \`make info' here to do that automatically)."
167
-
168
- .PHONY: info
169
- info:
170
- $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
171
- @echo "Running Texinfo files through makeinfo..."
172
- make -C $(BUILDDIR)/texinfo info
173
- @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
174
-
175
- .PHONY: gettext
176
- gettext:
177
- $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
178
- @echo
179
- @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
180
-
181
- .PHONY: changes
182
- changes:
183
- $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
184
- @echo
185
- @echo "The overview file is in $(BUILDDIR)/changes."
186
-
187
- .PHONY: linkcheck
188
- linkcheck:
189
- $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
190
- @echo
191
- @echo "Link check complete; look for any errors in the above output " \
192
- "or in $(BUILDDIR)/linkcheck/output.txt."
193
-
194
- .PHONY: doctest
195
- doctest:
196
- $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
197
- @echo "Testing of doctests in the sources finished, look at the " \
198
- "results in $(BUILDDIR)/doctest/output.txt."
199
-
200
- .PHONY: coverage
201
- coverage:
202
- $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
203
- @echo "Testing of coverage in the sources finished, look at the " \
204
- "results in $(BUILDDIR)/coverage/python.txt."
205
-
206
- .PHONY: xml
207
- xml:
208
- $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
209
- @echo
210
- @echo "Build finished. The XML files are in $(BUILDDIR)/xml."
211
-
212
- .PHONY: pseudoxml
213
- pseudoxml:
214
- $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
215
- @echo
216
- @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
NeMo-2.2.0/docs/source/_static/css/custom.css DELETED
@@ -1,372 +0,0 @@
1
- @import url("theme.css");
2
-
3
- body {
4
- font-size: 100%;
5
- font-family: 'NVIDIA Sans', sans-serif;
6
- }
7
-
8
-
9
- /* Width of template */
10
-
11
- .wy-nav-content {
12
- max-width: 1200px !important;
13
- }
14
-
15
-
16
-
17
- /* Standard Text Formatting */
18
-
19
- h1 {
20
- color: #76b900;
21
- text-align: center;
22
- /* background-color: #ffffff; */
23
- }
24
-
25
- h2 {
26
- color: #ffffff;
27
- /* background-color: #ffffff; */
28
- /* #76b900 */
29
- Padding: 5px;
30
- }
31
-
32
- h3 {
33
- padding-top: 0px;
34
- border-top: solid 3px #000000;
35
- /* #76b900 */
36
- border-bottom: solid 3px #000000;
37
- /* #76b900 */
38
- }
39
-
40
- p {
41
- margin-bottom: 24px;
42
- }
43
-
44
- /* Link Colors */
45
- /*
46
- a {
47
- color: #76b900;
48
- }
49
- /*
50
-
51
- /*
52
- a:visited {
53
- color: #218219;
54
- }
55
- */
56
-
57
- .container-xl {
58
- margin-right: unset;
59
- margin-left: unset;
60
- }
61
-
62
- section {
63
- overflow-x: auto;
64
- }
65
-
66
- /* ----------------------------------------------TABLES--------------------------------------- */
67
- section table {
68
- overflow-x: auto;
69
- display: block;
70
- }
71
-
72
- table {
73
- font-size: small;
74
- }
75
-
76
- /* Table head Color */
77
- thead td {
78
- background-color: #333333 !important;
79
- }
80
-
81
- .row-odd p {
82
- /*padding-bottom: 0px;*/
83
- /*margin-bottom: 0px;*/
84
- }
85
-
86
- /* even rows*/
87
-
88
- .row-even tr {
89
- background-color: #e5f1e6 !important;
90
- }
91
-
92
- /* odd rows*/
93
-
94
-
95
- .wy-table-responsive table tr {
96
- background-color: #ffffff !important;
97
- }
98
-
99
-
100
-
101
- .wy-table-responsive table td {
102
- white-space: normal;
103
- }
104
-
105
-
106
- /* Removes bottom margin in tables*/
107
-
108
- .rst-content .line-block {
109
- margin-bottom: 0px;
110
- }
111
-
112
- .wy-table-responsive {
113
- overflow: visible !important;
114
- }
115
-
116
- /* reduces the size of text in multiline table columns. */
117
-
118
- .rst-content table.docutils td {
119
- font-size: 80%;
120
- }
121
-
122
- .rst-content dl:not(.docutils) dt {
123
-
124
- background-color: inherit;
125
- color: #000000;
126
- border-top: solid 0px #000000;
127
-
128
- }
129
-
130
- .rst-content dl:not(.docutils) dt:before {
131
- color: #333333;
132
- }
133
-
134
- .rst-content .line-block {
135
- margin-bottom: 0px;
136
- }
137
-
138
- .wy-side-nav-search,
139
- .wy-nav-top {
140
- background-color: #000000;
141
- padding: 0;
142
- }
143
-
144
- .wy-side-nav-search img {
145
- padding: 0px;
146
- padding: 0px 0px;
147
- margin-bottom: 0;
148
- }
149
-
150
- .wy-side-nav-search input[type=text] {
151
- border-radius: 0px;
152
- }
153
-
154
-
155
- .wy-menu-vertical p.caption {
156
- color: #76b900;
157
- }
158
-
159
-
160
- .wy-side-nav-search>a img.logo,
161
- .wy-side-nav-search .wy-dropdown>a img.logo {
162
- margin: 0px 0px 0px 0px;
163
- }
164
-
165
- .wy-nav-content {
166
- margin: 0;
167
- min-height: 100%;
168
- height: 100%;
169
- background: #ffffff;
170
- }
171
-
172
- /* List (numbered, bulleted) padding Fix */
173
-
174
-
175
- .wy-plain-list-decimal li {
176
- margin-top: -6px;
177
- margin-bottom: -6px;
178
- }
179
-
180
- .rst-content .section ol.loweralpha {
181
- margin-top: -6px;
182
- margin-bottom: 12px;
183
- }
184
-
185
- .wy-plain-list-disc,
186
- .rst-content .toctree-wrapper ul,
187
- article ul {
188
- margin-top: 0px !important;
189
- margin-bottom: 12px;
190
- }
191
-
192
- /* Alert Boxes */
193
- /* Background color of Alert Box Title */
194
-
195
- .rst-content .section ul {
196
- margin-top: -12px;
197
- margin-bottom: 16px;
198
- }
199
-
200
- .wy-alert.wy-alert-info .wy-alert-title,
201
- .rst-content .note .wy-alert-title,
202
- .rst-content .wy-alert-info.attention .wy-alert-title,
203
- .rst-content .wy-alert-info.caution .wy-alert-title,
204
- .rst-content .wy-alert-info.danger .wy-alert-title,
205
- .rst-content .wy-alert-info.error .wy-alert-title,
206
- .rst-content .wy-alert-info.hint .wy-alert-title,
207
- .rst-content .wy-alert-info.important .wy-alert-title,
208
- .rst-content .wy-alert-info.tip .wy-alert-title,
209
- .rst-content .wy-alert-info.warning .wy-alert-title,
210
- .rst-content .seealso .wy-alert-title,
211
- .rst-content .wy-alert-info.admonition-todo .wy-alert-title,
212
- .rst-content .wy-alert-info.admonition .wy-alert-title,
213
- .wy-alert.wy-alert-info .rst-content .admonition-title,
214
- .rst-content .wy-alert.wy-alert-info .admonition-title,
215
- .rst-content .note .admonition-title,
216
- .rst-content .wy-alert-info.attention .admonition-title,
217
- .rst-content .wy-alert-info.caution .admonition-title,
218
- .rst-content .wy-alert-info.danger .admonition-title,
219
- .rst-content .wy-alert-info.error .admonition-title,
220
- .rst-content .wy-alert-info.hint .admonition-title,
221
- .rst-content .wy-alert-info.important .admonition-title,
222
- .rst-content .wy-alert-info.tip .admonition-title,
223
- .rst-content .wy-alert-info.warning .admonition-title,
224
- .rst-content .seealso .admonition-title,
225
- .rst-content .wy-alert-info.admonition-todo .admonition-title,
226
- .rst-content .wy-alert-info.admonition .admonition-title {
227
- background: #76b900;
228
- }
229
-
230
- /* Background and Font Color of Alert Box Main Body*/
231
- .wy-alert.wy-alert-info,
232
- .rst-content .note,
233
- .rst-content .wy-alert-info.attention,
234
- .rst-content .wy-alert-info.caution,
235
- .rst-content .wy-alert-info.danger,
236
- .rst-content .wy-alert-info.error,
237
- .rst-content .wy-alert-info.hint,
238
- .rst-content .wy-alert-info.important,
239
- .rst-content .wy-alert-info.tip,
240
- .rst-content .wy-alert-info.warning,
241
- .rst-content .seealso,
242
- .rst-content .wy-alert-info.admonition-todo,
243
- .rst-content .wy-alert-info.admonition {
244
- background: #333333;
245
- color: #999999;
246
- }
247
-
248
- .section {
249
- margin-top: 50px;
250
- }
251
-
252
- /* Logo */
253
- .navbar-brand-box {
254
- background-color: #ffffff;
255
- }
256
-
257
- /* ---------------------------------------------- Media Queries --------------------------------------- */
258
- @media (min-width: 1200px) {
259
- .container-xl {
260
- max-width: 100%;
261
- }
262
- }
263
-
264
- @media (min-width: none) {
265
- body {
266
- font-size: 18px;
267
- }
268
-
269
- #site-navigation nav ul.nav {
270
- font-size: 18px;
271
- }
272
-
273
- #site-navigation nav.bd-links p {
274
- font-size: 18px;
275
- }
276
-
277
- #site-navigation {
278
- width: 350px;
279
- }
280
-
281
- .toc-h2 {
282
- font-size: 18px;
283
- }
284
-
285
- .toc-h3 {
286
- font-size: 1rem;
287
- }
288
-
289
- .toc-h4 {
290
- font-size: 0.85rem;
291
- }
292
-
293
- .header-article .bd-toc {
294
- font-size: 18px;
295
- }
296
-
297
- #main-content>div {
298
- margin-left: 10%;
299
- margin-right: 10%;
300
- }
301
- }
302
-
303
- /* ---------------------------------------------- NVIDIA Sans --------------------------------------- */
304
-
305
- :root {
306
- --md-text-font: "NVIDIA Sans";
307
- /* --md-code-font: "NVIDIA Sans"; */
308
- }
309
-
310
- @font-face {
311
- font-family: "NVIDIA Sans";
312
- src: url(https://aws1.discourse-cdn.com/nvidia/original/3X/5/2/52891dda673228d54e5d57bf1e4a3880d4b22405.woff2) format("woff2"),
313
- url(https://aws1.discourse-cdn.com/nvidia/original/3X/e/0/e090b7dda7a582522c7f9045c6ce949cce60134f.woff) format("woff");
314
- font-weight: 300;
315
- font-style: normal;
316
- }
317
-
318
- @font-face {
319
- font-family: "NVIDIA Sans";
320
- src: url(https://aws1.discourse-cdn.com/nvidia/original/3X/a/1/a107baabcbf6b241099122336bce7429bcfd377a.woff2) format("woff2"),
321
- url(https://aws1.discourse-cdn.com/nvidia/original/3X/3/a/3a6060a4e3bce70e5552ba0de8af4b22c6cf9144.woff) format("woff");
322
- font-weight: 300;
323
- font-style: italic;
324
- }
325
-
326
- @font-face {
327
- font-family: "NVIDIA Sans";
328
- src: url(https://aws1.discourse-cdn.com/nvidia/original/3X/9/9/9920d2b172b01d92fc9c1c0e521dcf45b59c47c3.woff2) format("woff2"),
329
- url(https://aws1.discourse-cdn.com/nvidia/original/3X/6/c/6c7d947928a7e4ef3e80ed409bef6c243f2148cb.woff) format("woff");
330
- font-weight: 400;
331
- font-style: normal;
332
- }
333
-
334
- @font-face {
335
- font-family: "NVIDIA Sans";
336
- src: url(https://aws1.discourse-cdn.com/nvidia/original/3X/e/8/e8e63fe1244372cd942d957f44a5616a1eba0644.woff2) format("woff2"),
337
- url(https://aws1.discourse-cdn.com/nvidia/original/3X/0/f/0f1fb2af0283ab09d36e7097bb07d895c3228f12.woff) format("woff");
338
- font-weight: 400;
339
- font-style: italic;
340
- }
341
-
342
- @font-face {
343
- font-family: "NVIDIA Sans";
344
- src: url(https://aws1.discourse-cdn.com/nvidia/original/3X/7/9/79d3c513a9cd72c59f65354f39f89ca52dc17dd2.woff2) format("woff2"),
345
- url(https://aws1.discourse-cdn.com/nvidia/original/3X/2/5/2581ac533f5d01f4985d8a7245b0766b4630ced8.woff) format("woff");
346
- font-weight: 500;
347
- font-style: normal;
348
- }
349
-
350
- @font-face {
351
- font-family: "NVIDIA Sans";
352
- src: url(https://aws1.discourse-cdn.com/nvidia/original/3X/3/9/39d9ef1ee9770dd503f19bb2ace2fdb4eff3bb50.woff2) format("woff2"),
353
- url(https://aws1.discourse-cdn.com/nvidia/original/3X/7/b/7bb5d5e2e71b2e13c8098b2e67c0a0ed9258e6c7.woff) format("woff");
354
- font-weight: 500;
355
- font-style: italic;
356
- }
357
-
358
- @font-face {
359
- font-family: "NVIDIA Sans";
360
- src: url(https://aws1.discourse-cdn.com/nvidia/original/3X/0/5/05276a55a43eb3f74981ec1e93252727afcd9d16.woff2) format("woff2"),
361
- url(https://aws1.discourse-cdn.com/nvidia/original/3X/9/c/9cfec7ed941b06564aa4d5ca14610e81542d070f.woff) format("woff");
362
- font-weight: 700;
363
- font-style: normal;
364
- }
365
-
366
- @font-face {
367
- font-family: "NVIDIA Sans";
368
- src: url(https://aws1.discourse-cdn.com/nvidia/original/3X/a/e/aebd14d09ba56f541e1b8735fb051e33710f9ae7.woff2) format("woff2"),
369
- url(https://aws1.discourse-cdn.com/nvidia/original/3X/e/d/edbdabef43acc5c12e84a94baaa5542c9404cfeb.woff) format("woff");
370
- font-weight: 700;
371
- font-style: italic;
372
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
NeMo-2.2.0/docs/source/_static/js/pk_scripts.js DELETED
@@ -1,19 +0,0 @@
1
- document.addEventListener("DOMContentLoaded", function () {
2
- var params = window.location.search.substring(1).split("&").reduce(function (params, param) {
3
- if (!param) {
4
- return params;
5
- }
6
-
7
- var values = param.split("=");
8
- var name = values[0];
9
- var value = values[1];
10
- params[name] = value;
11
- return params;
12
- }, {});
13
-
14
- var form = document.getElementById("feedback-form");
15
- for (var name in params) {
16
- var input = form.querySelector("[name=" + name + "]");
17
- input.value = params[name];
18
- }
19
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
NeMo-2.2.0/docs/source/_templates/layout.html DELETED
@@ -1,14 +0,0 @@
1
- {% extends "!layout.html" %}
2
-
3
- {% block extrahead %}
4
-
5
- <script type="text/javascript"
6
- src="//assets.adobedtm.com/b92787824f2e0e9b68dc2e993f9bd995339fe417/satelliteLib-7ba51e58dc61bcb0e9311aadd02a0108ab24cc6c.js"></script>
7
-
8
- {% endblock %}
9
-
10
- {% block footer %}
11
-
12
- <script type="text/javascript">_satellite.pageBottom();</script>
13
-
14
- {% endblock %}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
NeMo-2.2.0/docs/source/apis.rst DELETED
@@ -1,49 +0,0 @@
1
- =========
2
- NeMo APIs
3
- =========
4
-
5
- You can learn more about the underlying principles of the NeMo codebase in this section.
6
-
7
- The `NeMo Framework codebase <https://github.com/NVIDIA/NeMo>`__ is composed of a `core <https://github.com/NVIDIA/NeMo/tree/main/nemo/core>`__ section which contains the main building blocks of the framework, and various `collections <https://github.com/NVIDIA/NeMo/tree/main/nemo/collections>`__ which help you
8
- build specialized AI models.
9
-
10
- You can learn more about aspects of the NeMo "core" by following the links below:
11
-
12
- .. toctree::
13
- :maxdepth: 1
14
- :name: core
15
- :titlesonly:
16
-
17
- core/core
18
- core/neural_modules
19
- core/exp_manager
20
- core/neural_types
21
- core/export
22
- core/adapters/intro
23
-
24
- You can learn more about aspects of the NeMo APIs by following the links below:
25
-
26
- .. toctree::
27
- :maxdepth: 1
28
- :name: API
29
- :titlesonly:
30
-
31
- core/api
32
- common/intro
33
- nlp/api
34
- multimodal/api
35
- asr/api
36
- tts/api
37
-
38
-
39
- Alternatively, you can jump straight to the documentation for the individual collections:
40
-
41
- * :doc:`Large Language Models (LLMs) <../nlp/nemo_megatron/intro>`
42
-
43
- * :doc:`Automatic Speech Recognition (ASR) <../asr/intro>`
44
-
45
- * :doc:`Multimodal Models (MMs) <../multimodal/mllm/intro>`
46
-
47
- * :doc:`Text-to-Speech (TTS) <../tts/intro>`
48
-
49
- * :doc:`Computer Vision (CV) <../vision/intro>`
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
NeMo-2.2.0/docs/source/asr/all_chkpt.rst DELETED
@@ -1,236 +0,0 @@
1
- All Checkpoints
2
- ===============
3
- English
4
- ^^^^^^^
5
- .. csv-table::
6
- :file: data/benchmark_en.csv
7
- :align: left
8
- :widths: 50,50
9
- :header-rows: 1
10
-
11
- -----------------------------
12
-
13
- German
14
- ^^^^^^
15
- .. csv-table::
16
- :file: data/benchmark_de.csv
17
- :align: left
18
- :widths: 50,50
19
- :header-rows: 1
20
-
21
- -----------------------------
22
-
23
- Spanish
24
- ^^^^^^^
25
- .. csv-table::
26
- :file: data/benchmark_es.csv
27
- :align: left
28
- :widths: 50,50
29
- :header-rows: 1
30
-
31
- -----------------------------
32
-
33
- French
34
- ^^^^^^
35
- .. csv-table::
36
- :file: data/benchmark_fr.csv
37
- :align: left
38
- :widths: 50,50
39
- :header-rows: 1
40
-
41
- -----------------------------
42
-
43
- Russian
44
- ^^^^^^^
45
- .. csv-table::
46
- :file: data/benchmark_ru.csv
47
- :align: left
48
- :widths: 50,50
49
- :header-rows: 1
50
-
51
- -----------------------------
52
-
53
- Japanese
54
- ^^^^^^^^
55
- .. csv-table::
56
- :file: data/benchmark_jp.csv
57
- :align: left
58
- :widths: 50,50
59
- :header-rows: 1
60
-
61
- -----------------------------
62
-
63
- Chinese
64
- ^^^^^^^
65
- .. csv-table::
66
- :file: data/benchmark_cn.csv
67
- :align: left
68
- :widths: 50,50
69
- :header-rows: 1
70
-
71
- -----------------------------
72
-
73
- Georgian
74
- ^^^^^^^^
75
- .. csv-table::
76
- :file: data/benchmark_ka.csv
77
- :align: left
78
- :widths: 50,50
79
- :header-rows: 1
80
-
81
- -----------------------------
82
-
83
- Kazakh
84
- ^^^^^^
85
- .. csv-table::
86
- :file: data/benchmark_kz.csv
87
- :align: left
88
- :widths: 50,50
89
- :header-rows: 1
90
-
91
- -----------------------------
92
-
93
- Persian
94
- ^^^^^^^
95
- .. csv-table::
96
- :file: data/benchmark_fa.csv
97
- :align: left
98
- :widths: 50,50
99
- :header-rows: 1
100
-
101
- -----------------------------
102
-
103
- Uzbek
104
- ^^^^^
105
- .. csv-table::
106
- :file: data/benchmark_uz.csv
107
- :align: left
108
- :widths: 50,50
109
- :header-rows: 1
110
-
111
- -----------------------------
112
-
113
- Ukrainian
114
- ^^^^^^^^^
115
- .. csv-table::
116
- :file: data/benchmark_ua.csv
117
- :align: left
118
- :widths: 50,50
119
- :header-rows: 1
120
-
121
- -----------------------------
122
-
123
- Polish
124
- ^^^^^^
125
- .. csv-table::
126
- :file: data/benchmark_pl.csv
127
- :align: left
128
- :widths: 50,50
129
- :header-rows: 1
130
-
131
- -----------------------------
132
-
133
- Italian
134
- ^^^^^^^
135
- .. csv-table::
136
- :file: data/benchmark_it.csv
137
- :align: left
138
- :widths: 50,50
139
- :header-rows: 1
140
-
141
- -----------------------------
142
-
143
- Belarusian
144
- ^^^^^^^^^^
145
- .. csv-table::
146
- :file: data/benchmark_by.csv
147
- :align: left
148
- :widths: 50,50
149
- :header-rows: 1
150
-
151
- -----------------------------
152
-
153
- Croatian
154
- ^^^^^^^^
155
- .. csv-table::
156
- :file: data/benchmark_hr.csv
157
- :align: left
158
- :widths: 50,50
159
- :header-rows: 1
160
-
161
- -----------------------------
162
-
163
- Esperanto
164
- ^^^^^^^^^
165
- .. csv-table::
166
- :file: data/benchmark_eo.csv
167
- :align: left
168
- :widths: 50,50
169
- :header-rows: 1
170
-
171
- -----------------------------
172
-
173
- Kabyle
174
- ^^^^^^
175
- .. csv-table::
176
- :file: data/benchmark_kab.csv
177
- :align: left
178
- :widths: 50,50
179
- :header-rows: 1
180
-
181
- -----------------------------
182
-
183
- Dutch
184
- ^^^^^
185
- .. csv-table::
186
- :file: data/benchmark_nl.csv
187
- :align: left
188
- :widths: 50,50
189
- :header-rows: 1
190
-
191
- -----------------------------
192
-
193
- Catalan
194
- ^^^^^^^
195
- .. csv-table::
196
- :file: data/benchmark_ca.csv
197
- :align: left
198
- :widths: 50,50
199
- :header-rows: 1
200
-
201
- -----------------------------
202
-
203
- Hindi
204
- ^^^^^^^
205
- .. csv-table::
206
- :file: data/benchmark_hi.csv
207
- :align: left
208
- :widths: 50,50
209
- :header-rows: 1
210
-
211
- -----------------------------
212
- Marathi
213
- ^^^^^^^
214
- .. csv-table::
215
- :file: data/benchmark_mr.csv
216
- :align: left
217
- :widths: 50,50
218
- :header-rows: 1
219
-
220
- -----------------------------
221
-
222
- Mandarin
223
- ^^^^^^^
224
- .. csv-table::
225
- :file: data/benchmark_zh.csv
226
- :align: left
227
- :widths: 50,50
228
- :header-rows: 1
229
-
230
- Kinyarwanda
231
- ^^^^^^^^^^^
232
- .. csv-table::
233
- :file: data/benchmark_rw.csv
234
- :align: left
235
- :widths: 50,50
236
- :header-rows: 1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
NeMo-2.2.0/docs/source/asr/api.rst DELETED
@@ -1,343 +0,0 @@
1
- NeMo ASR API
2
- ============
3
-
4
-
5
- Model Classes
6
- -------------
7
-
8
- .. autoclass:: nemo.collections.asr.models.EncDecCTCModel
9
- :show-inheritance:
10
- :members: transcribe, change_vocabulary, setup_training_data, setup_optimization, setup_validation_data, setup_test_data, register_artifact
11
-
12
-
13
- .. autoclass:: nemo.collections.asr.models.EncDecCTCModelBPE
14
- :show-inheritance:
15
- :members: transcribe, change_vocabulary, setup_training_data, setup_optimization, setup_validation_data, setup_test_data, register_artifact
16
-
17
-
18
- .. autoclass:: nemo.collections.asr.models.EncDecRNNTModel
19
- :show-inheritance:
20
- :members: transcribe, change_vocabulary, setup_training_data, setup_optimization, setup_validation_data, setup_test_data, register_artifact
21
-
22
-
23
- .. autoclass:: nemo.collections.asr.models.EncDecRNNTBPEModel
24
- :show-inheritance:
25
- :members: transcribe, change_vocabulary, setup_training_data, setup_optimization, setup_validation_data, setup_test_data, register_artifact
26
-
27
-
28
- .. autoclass:: nemo.collections.asr.models.EncDecClassificationModel
29
- :show-inheritance:
30
- :members: setup_training_data, setup_optimization, setup_validation_data, setup_test_data, register_artifact
31
-
32
-
33
- .. autoclass:: nemo.collections.asr.models.EncDecSpeakerLabelModel
34
- :show-inheritance:
35
- :members: setup_training_data, setup_optimization, setup_validation_data, setup_test_data, register_artifact
36
-
37
-
38
- .. autoclass:: nemo.collections.asr.models.hybrid_asr_tts_models.ASRWithTTSModel
39
- :show-inheritance:
40
- :members: from_asr_config, from_pretrained_models, save_asr_model_to, setup_training_data
41
-
42
- .. _confidence-ensembles-api:
43
-
44
- .. autoclass:: nemo.collections.asr.models.confidence_ensemble.ConfidenceEnsembleModel
45
- :show-inheritance:
46
- :members: transcribe
47
-
48
- Modules
49
- -------
50
-
51
- .. autoclass:: nemo.collections.asr.modules.ConvASREncoder
52
- :show-inheritance:
53
- :members:
54
-
55
- .. autoclass:: nemo.collections.asr.modules.ConvASRDecoder
56
- :show-inheritance:
57
- :members:
58
-
59
- .. autoclass:: nemo.collections.asr.modules.ConvASRDecoderClassification
60
- :show-inheritance:
61
- :members:
62
-
63
- .. autoclass:: nemo.collections.asr.modules.SpeakerDecoder
64
- :show-inheritance:
65
- :members:
66
-
67
- .. _conformer-encoder-api:
68
-
69
- .. autoclass:: nemo.collections.asr.modules.ConformerEncoder
70
- :show-inheritance:
71
- :members:
72
-
73
- .. _squeezeformer-encoder-api:
74
-
75
- .. autoclass:: nemo.collections.asr.modules.SqueezeformerEncoder
76
- :show-inheritance:
77
- :members:
78
-
79
- .. _rnn-encoder-api:
80
-
81
- .. autoclass:: nemo.collections.asr.modules.RNNEncoder
82
- :show-inheritance:
83
- :members:
84
-
85
- .. _rnnt-decoder-api:
86
-
87
- .. autoclass:: nemo.collections.asr.modules.RNNTDecoder
88
- :show-inheritance:
89
- :members:
90
-
91
- .. autoclass:: nemo.collections.asr.modules.StatelessTransducerDecoder
92
- :show-inheritance:
93
- :members:
94
-
95
- .. _rnnt-joint-api:
96
-
97
- .. autoclass:: nemo.collections.asr.modules.RNNTJoint
98
- :show-inheritance:
99
- :members:
100
-
101
- .. autoclass:: nemo.collections.asr.modules.SampledRNNTJoint
102
- :show-inheritance:
103
- :members:
104
-
105
-
106
-
107
- Parts
108
- -----
109
-
110
- .. autoclass:: nemo.collections.asr.parts.submodules.jasper.JasperBlock
111
- :show-inheritance:
112
- :members:
113
-
114
-
115
- Mixins
116
- ------
117
-
118
- .. autoclass:: nemo.collections.asr.parts.mixins.mixins.ASRBPEMixin
119
- :show-inheritance:
120
- :members:
121
-
122
- .. autoclass:: nemo.collections.asr.parts.mixins.mixins.ASRModuleMixin
123
- :show-inheritance:
124
- :members:
125
-
126
- .. autoclass:: nemo.collections.asr.parts.mixins.transcription.TranscriptionMixin
127
- :show-inheritance:
128
- :members:
129
-
130
- .. autoclass:: nemo.collections.asr.parts.mixins.transcription.TranscribeConfig
131
- :show-inheritance:
132
- :members:
133
-
134
- .. autoclass:: nemo.collections.asr.parts.mixins.interctc_mixin.InterCTCMixin
135
- :show-inheritance:
136
- :members:
137
-
138
- Datasets
139
- --------
140
-
141
- Character Encoding Datasets
142
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
143
-
144
- .. autoclass:: nemo.collections.asr.data.audio_to_text.AudioToCharDataset
145
- :show-inheritance:
146
- :members:
147
-
148
- .. autoclass:: nemo.collections.asr.data.audio_to_text.TarredAudioToCharDataset
149
- :show-inheritance:
150
- :members:
151
-
152
-
153
- Text-to-Text Datasets for Hybrid ASR-TTS models
154
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
155
-
156
- .. autoclass:: nemo.collections.asr.data.text_to_text.TextToTextDataset
157
- :show-inheritance:
158
- :members:
159
-
160
- .. autoclass:: nemo.collections.asr.data.text_to_text.TextToTextIterableDataset
161
- :show-inheritance:
162
- :members:
163
-
164
-
165
- Subword Encoding Datasets
166
- ~~~~~~~~~~~~~~~~~~~~~~~~~
167
-
168
- .. autoclass:: nemo.collections.asr.data.audio_to_text.AudioToBPEDataset
169
- :show-inheritance:
170
- :members:
171
-
172
- .. autoclass:: nemo.collections.asr.data.audio_to_text.TarredAudioToBPEDataset
173
- :show-inheritance:
174
- :members:
175
-
176
- Audio Preprocessors
177
- -------------------
178
-
179
- .. autoclass:: nemo.collections.asr.modules.AudioToMelSpectrogramPreprocessor
180
- :show-inheritance:
181
- :members:
182
-
183
- .. autoclass:: nemo.collections.asr.modules.AudioToMFCCPreprocessor
184
- :show-inheritance:
185
- :members:
186
-
187
- Audio Augmentors
188
- ----------------
189
-
190
- .. autoclass:: nemo.collections.asr.modules.SpectrogramAugmentation
191
- :show-inheritance:
192
- :members:
193
-
194
- .. autoclass:: nemo.collections.asr.modules.CropOrPadSpectrogramAugmentation
195
- :show-inheritance:
196
- :members:
197
-
198
- .. autoclass:: nemo.collections.asr.parts.preprocessing.perturb.SpeedPerturbation
199
- :show-inheritance:
200
- :members:
201
-
202
- .. autoclass:: nemo.collections.asr.parts.preprocessing.perturb.TimeStretchPerturbation
203
- :show-inheritance:
204
- :members:
205
-
206
- .. autoclass:: nemo.collections.asr.parts.preprocessing.perturb.GainPerturbation
207
- :show-inheritance:
208
- :members:
209
-
210
- .. autoclass:: nemo.collections.asr.parts.preprocessing.perturb.ImpulsePerturbation
211
- :show-inheritance:
212
- :members:
213
-
214
- .. autoclass:: nemo.collections.asr.parts.preprocessing.perturb.ShiftPerturbation
215
- :show-inheritance:
216
- :members:
217
-
218
- .. autoclass:: nemo.collections.asr.parts.preprocessing.perturb.NoisePerturbation
219
- :show-inheritance:
220
- :members:
221
-
222
- .. autoclass:: nemo.collections.asr.parts.preprocessing.perturb.WhiteNoisePerturbation
223
- :show-inheritance:
224
- :members:
225
-
226
- .. autoclass:: nemo.collections.asr.parts.preprocessing.perturb.RirAndNoisePerturbation
227
- :show-inheritance:
228
- :members:
229
-
230
- .. autoclass:: nemo.collections.asr.parts.preprocessing.perturb.TranscodePerturbation
231
- :show-inheritance:
232
- :members:
233
-
234
- Miscellaneous Classes
235
- ---------------------
236
-
237
- CTC Decoding
238
- ~~~~~~~~~~~~
239
-
240
- .. autoclass:: nemo.collections.asr.parts.submodules.ctc_decoding.CTCDecoding
241
- :show-inheritance:
242
- :members:
243
-
244
- .. autoclass:: nemo.collections.asr.parts.submodules.ctc_decoding.CTCBPEDecoding
245
- :show-inheritance:
246
- :members:
247
-
248
- .. autoclass:: nemo.collections.asr.parts.submodules.ctc_greedy_decoding.GreedyCTCInfer
249
- :show-inheritance:
250
- :members:
251
-
252
- .. autoclass:: nemo.collections.asr.parts.submodules.ctc_beam_decoding.BeamCTCInfer
253
- :show-inheritance:
254
- :members:
255
-
256
- RNNT Decoding
257
- ~~~~~~~~~~~~~
258
-
259
- .. autoclass:: nemo.collections.asr.parts.submodules.rnnt_decoding.RNNTDecoding
260
- :show-inheritance:
261
- :members:
262
-
263
- .. autoclass:: nemo.collections.asr.parts.submodules.rnnt_decoding.RNNTBPEDecoding
264
- :show-inheritance:
265
- :members:
266
-
267
- .. autoclass:: nemo.collections.asr.parts.submodules.rnnt_greedy_decoding.GreedyRNNTInfer
268
- :show-inheritance:
269
- :members:
270
-
271
- .. autoclass:: nemo.collections.asr.parts.submodules.rnnt_greedy_decoding.GreedyBatchedRNNTInfer
272
- :show-inheritance:
273
- :members:
274
-
275
- .. autoclass:: nemo.collections.asr.parts.submodules.rnnt_beam_decoding.BeamRNNTInfer
276
- :show-inheritance:
277
- :members:
278
-
279
- TDT Decoding
280
- ~~~~~~~~~~~~~
281
-
282
- .. autoclass:: nemo.collections.asr.parts.submodules.rnnt_greedy_decoding.GreedyTDTInfer
283
- :show-inheritance:
284
- :members:
285
-
286
- .. autoclass:: nemo.collections.asr.parts.submodules.rnnt_greedy_decoding.GreedyBatchedTDTInfer
287
- :show-inheritance:
288
- :members:
289
-
290
- .. autoclass:: nemo.collections.asr.parts.submodules.tdt_beam_decoding.BeamTDTInfer
291
- :show-inheritance:
292
- :members:
293
-
294
- Hypotheses
295
- ~~~~~~~~~~
296
-
297
- .. autoclass:: nemo.collections.asr.parts.utils.rnnt_utils.Hypothesis
298
- :show-inheritance:
299
- :no-members:
300
-
301
- .. autoclass:: nemo.collections.asr.parts.utils.rnnt_utils.NBestHypotheses
302
- :show-inheritance:
303
- :no-members:
304
-
305
- Adapter Networks
306
- ~~~~~~~~~~~~~~~~
307
-
308
- .. autoclass:: nemo.collections.asr.parts.submodules.adapters.multi_head_attention_adapter_module.MultiHeadAttentionAdapter
309
- :show-inheritance:
310
- :members:
311
- :member-order: bysource
312
-
313
- -----
314
-
315
- .. autoclass:: nemo.collections.asr.parts.submodules.adapters.multi_head_attention_adapter_module.RelPositionMultiHeadAttentionAdapter
316
- :show-inheritance:
317
- :members:
318
- :member-order: bysource
319
-
320
- -----
321
-
322
- .. autoclass:: nemo.collections.asr.parts.submodules.adapters.multi_head_attention_adapter_module.PositionalEncodingAdapter
323
- :show-inheritance:
324
- :members:
325
- :member-order: bysource
326
-
327
- -----
328
-
329
- .. autoclass:: nemo.collections.asr.parts.submodules.adapters.multi_head_attention_adapter_module.RelPositionalEncodingAdapter
330
- :show-inheritance:
331
- :members:
332
- :member-order: bysource
333
-
334
-
335
- Adapter Strategies
336
- ~~~~~~~~~~~~~~~~~~
337
-
338
- .. autoclass:: nemo.collections.asr.parts.submodules.adapters.multi_head_attention_adapter_module.MHAResidualAddAdapterStrategy
339
- :show-inheritance:
340
- :members:
341
- :member-order: bysource
342
- :undoc-members: adapter_module_names
343
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
NeMo-2.2.0/docs/source/asr/asr_all.bib DELETED
@@ -1,1043 +0,0 @@
1
- @article{matchboxnet,
2
- title={{MatchboxNet}: 1D Time-Channel Separable Convolutional Neural Network Architecture for Speech Commands Recognition},
3
- author={Majumdar, Somshubra and Ginsburg, Boris},
4
- journal={Proc. Interspeech 2020},
5
- year={2020}
6
- }
7
-
8
- @article{marblenet,
9
- title={MarbleNet: Deep 1D Time-Channel Separable Convolutional Neural Network for Voice Activity Detection},
10
- author={Jia, Fei and Majumdar, Somshubra and Ginsburg, Boris},
11
- journal={arXiv preprint arXiv:2010.13886},
12
- year={2020}
13
- }
14
-
15
- @inproceedings{panayotov2015librispeech,
16
- title={Librispeech: an ASR corpus based on public domain audio books},
17
- author={Panayotov, Vassil and Chen, Guoguo and Povey, Daniel and Khudanpur, Sanjeev},
18
- booktitle={Acoustics, Speech and Signal Processing (ICASSP), 2015 IEEE International Conference on},
19
- pages={5206--5210},
20
- year={2015},
21
- organization={IEEE}
22
- }
23
-
24
- @article{luong17,
25
- author = {Minh{-}Thang Luong and Eugene Brevdo and Rui Zhao},
26
- title = {Neural Machine Translation (seq2seq) Tutorial},
27
- journal = {https://github.com/tensorflow/nmt},
28
- year = {2017},
29
- }
30
-
31
- @INPROCEEDINGS{LaurentSeqWiseBN,
32
- author={C. {Laurent} and G. {Pereyra} and P. {Brakel} and Y. {Zhang} and Y. {Bengio}},
33
- booktitle={2016 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
34
- title={Batch normalized recurrent neural networks},
35
- year={2016},
36
- volume={},
37
- number={},
38
- pages={2657-2661},
39
- keywords={feedforward neural nets;learning (artificial intelligence);recurrent neural nets;speech recognition;batch normalized recurrent neural networks;RNN;sequential data;long-term dependency learning;convergence rate improvement;intermediate representation normalization;feedforward neural networks;speech recognition task;language modeling;training criterion;Training;Recurrent neural networks;Convergence;Speech recognition;Computer architecture;Speech;batch normalization;RNN;LSTM;optimization},
40
- doi={10.1109/ICASSP.2016.7472159},
41
- ISSN={2379-190X},
42
- month={March},}
43
-
44
- @article{graves2005,
45
- author = {Alex Graves and Jurgen Schmidhuber},
46
- title = {Framewise phoneme classification with bidirectional LSTM and other neural network architectures},
47
- journal = {Neural Networks, vol. 18},
48
- pages={602–-610},
49
- year = {2005},
50
- }
51
-
52
- @inproceedings{graves2006,
53
- title={Connectionist temporal classification: labelling unsegmented sequence data with recurrent neural networks},
54
- author={Graves, Alex and Fern{\'a}ndez, Santiago and Gomez, Faustino and Schmidhuber, J{\"u}rgen},
55
- booktitle={Proceedings of the 23rd international conference on Machine learning},
56
- pages={369--376},
57
- year={2006},
58
- organization={ACM}
59
- }
60
-
61
- @article{li2019jasper,
62
- title={Jasper: An End-to-End Convolutional Neural Acoustic Model},
63
- author={Li, Jason and Lavrukhin, Vitaly and Ginsburg, Boris and Leary, Ryan and Kuchaiev, Oleksii and Cohen, Jonathan M and Nguyen, Huyen and Gadde, Ravi Teja},
64
- journal={arXiv preprint arXiv:1904.03288},
65
- year={2019}
66
- }
67
-
68
- @misc{ardila2019common,
69
- title={Common Voice: A Massively-Multilingual Speech Corpus},
70
- author={Rosana Ardila and Megan Branson and Kelly Davis and Michael Henretty and Michael Kohler and Josh Meyer and Reuben Morais and Lindsay Saunders and Francis M. Tyers and Gregor Weber},
71
- year={2019},
72
- eprint={1912.06670},
73
- archivePrefix={arXiv},
74
- primaryClass={cs.CL}
75
- }
76
-
77
- @article{graves2012,
78
- title={Sequence Transduction with Recurrent Neural Networks},
79
- author={Graves, Alex},
80
- journal={arXiv preprint arXiv:1211.3711},
81
- year={2012}
82
- }
83
-
84
-
85
- @article{graves2013,
86
- title={Generating sequences with recurrent neural networks},
87
- author={Graves, Alex},
88
- journal={arXiv preprint arXiv:1308.0850},
89
- year={2013}
90
- }
91
-
92
- @article{sergeev2018horovod,
93
- title={Horovod: fast and easy distributed deep learning in TensorFlow},
94
- author={Sergeev, Alexander and Del Balso, Mike},
95
- journal={arXiv preprint arXiv:1802.05799},
96
- year={2018}
97
- }
98
-
99
- @misc{NVVolta,
100
- title = {NVIDIA TESLA V100 GPU ARCHITECTURE},
101
- howpublished = {\url{http://images.nvidia.com/content/volta-architecture/pdf/volta-architecture-whitepaper.pdf}},
102
- note = {Accessed: 2018-10-09}
103
- }
104
-
105
- @article{NVTuring,
106
- title = {NVIDIA TURING GPU ARCHITECTURE},
107
- howpublished = {\url{https://www.nvidia.com/content/dam/en-zz/Solutions/design-visualization/technologies/turing-architecture/NVIDIA-Turing-Architecture-Whitepaper.pdf}},
108
- author = {NVIDIA},
109
- year = {2018},
110
- note = {Accessed: 2018-10-09}
111
- }
112
-
113
- @misc{Rygaard2015,
114
- title = {Using Synthesized Speech to Improve Speech Recognition for Low-Resource Languages},
115
- author = {Luise Valentin Rygaard},
116
- howpublished = {\url{https://parasol.tamu.edu/dreu2015/Rygaard/report.pdf}},
117
- year = {2015},
118
- }
119
-
120
- @misc{OpenSeq2Seq,
121
- title = {OpenSeq2Seq: extensible toolkit for distributed and mixed precision training of sequence-to-sequence models},
122
- author = {Kuchaiev, Oleksii and Ginsburg, Boris and Gitman, Igor and Lavrukhin,Vitaly and Case, Carl and Micikevicius, Paulius},
123
- howpublished = {\url{https://arxiv.org/abs/1805.10387}},
124
- year = {2018},
125
- }
126
-
127
- @misc{MPGuide,
128
- title = {Training with Mixed Precision},
129
- howpublished = {\url{http://docs.nvidia.com/deeplearning/sdk/mixed-precision-training/}},
130
- note = {Accessed: 2018-04-06},
131
- }
132
-
133
- @misc{Mozilla,
134
- title = {Mozilla: A Journey to less than 10\% Word Error Rate},
135
- howpublished = {\url{https://hacks.mozilla.org/2017/11/a-journey-to-10-word-error-rate/}},
136
- note = {Accessed: 2018-04-06},
137
- }
138
-
139
- @article{Waibel1989,
140
- title={A time-delay neural network architecture for isolated word recognition},
141
- author={Waibel, Alexander, and Hanazawa, Toshiyki and Hinton,Geoffrey and Shirano, Kiyohiro and Lang, Kevin },
142
- journal={IEEE Trans. on Acoustics, Speech and Signal Processing},
143
- year={1989}
144
- }
145
-
146
- @article{Lang1990,
147
- title={A time-delay neural network architecture for isolated word recognition},
148
- author={Lang, Kevin and Waibel, Alexander, and Hinton,Geoffrey },
149
- journal={Neural Networks},
150
- year={1990}
151
- }
152
-
153
- @book{Bengio1996,
154
- Author = {Bengio, Y.},
155
- Publisher = {International Thomson Computer Press},
156
- Title = {Neural Networks for Speech and Sequence Recognition},
157
- Year = {1996}
158
- }
159
-
160
- @article{Bengio1992,
161
- title={Global optimization of a neural network-hidden Markov model hybrid},
162
- author={Bengio, Y., and De Mori, R., and Flammia, G., and Kompe, R. },
163
- journal={IEEE Transactions on Neural Networks, 3(2), 252–259},
164
- year={1992}
165
- }
166
-
167
- @article{Bourlard1994,
168
- title={Connectionist speech recognition: a hybrid approach},
169
- author={Bourlard, H. A. and Morgan, N.},
170
- journal={volume 247 Springer },
171
- year={1994}
172
- }
173
-
174
- @article{srivastava14a,
175
- author = {Nitish Srivastava, and Geoffrey Hinton, and Alex Krizhevsky, and Ilya Sutskever, and Ruslan Salakhutdinov},
176
- title = {Dropout: A Simple Way to Prevent Neural Networks from Overfitting},
177
- journal = {Journal of Machine Learning Research},
178
- year = {2014},
179
- volume = {15},
180
- pages = {1929-1958},
181
- url = {http://jmlr.org/papers/v15/srivastava14a.html}
182
- }
183
-
184
-
185
- @article{Hinton2012,
186
- title={Deep Neural Networks for Acoustic Modeling in Speech Recognition},
187
- author={ Hinton,Geoffrey and Deng, Li and Yu, Dong and Dahl,George and Mohamed,Abdel-rahman and Jaitly, Navdeep and Senior, Andrew and Vanhoucke, Vincent and Nguyen, Patrick and Kingsbury, Brian and Sainath, Tara},
188
- journal={IEEE Signal Processing Magazine},
189
- year={2012}
190
- }
191
-
192
- @article{Graves2014,
193
- title={Towards End-to-End Speech Recognition with Recurrent Neural Networks},
194
- author={Graves, Alex and Jaitly, Navdeep},
195
- journal={International Conference on Machine Learning},
196
- year={2014}
197
- }
198
-
199
- @article{Chorowski2014,
200
- title={End-to-end Continuous Speech Recognition using Attention-based Recurrent NN: First Results},
201
- author={ Chorowski, Jan, and Bahdanau, Dzmitry , and Cho, Kyunghyun , and Bengio, Yoshua },
202
- journal={Neural Information Processing Systems: Workshop Deep Learning and Representation Learning Workshop },
203
- year={2014}
204
- }
205
-
206
- @article{Sak2014,
207
- title={Long short-term memory recurrent neural network architectures for large scale acoustic modeling},
208
- author={Sak, Hasim and Senior, Andrew and Beaufays, Francoise },
209
- journal={Interspeech 2014},
210
- year={2014}
211
- }
212
-
213
- @article{Ko2015,
214
- title={Audio Augmentation for Speech Recognition},
215
- author={Tom, Ko and Vijayaditya, Peddinti and Daniel, Povey
216
- and Sanjeev, Khudanpur },
217
- journal={Interspeech 2015},
218
- year={2015}
219
- }
220
-
221
- @article{Tjandra2017,
222
- title={Listening while Speaking: Speech Chain by Deep Learning},
223
- author={Andros, Tjandra and Sakriani, Sakti and Satoshi, Nakamura },
224
- journal={ASRU 2017},
225
- year={2017}
226
- }
227
-
228
- @article{Tjandra2018,
229
- title={Machine Speech Chain with One-shot Speaker Adaptation},
230
- author={Andros, Tjandra and Sakriani, Sakti and Satoshi, Nakamura },
231
- journal={Interspeech 2018},
232
- year={2018}
233
- }
234
-
235
- @article{bahdanau2014neural,
236
- title={Neural machine translation by jointly learning to align and translate},
237
- author={Bahdanau, Dzmitry and Cho, Kyunghyun and Bengio, Yoshua},
238
- journal={arXiv preprint arXiv:1409.0473},
239
- year={2014}
240
- }
241
-
242
- @article{cho2014learning,
243
- title={Learning phrase representations using RNN encoder-decoder for statistical machine translation},
244
- author={Cho, Kyunghyun and Van Merri{\"e}nboer, Bart and Gulcehre, Caglar and Bahdanau, Dzmitry and Bougares, Fethi and Schwenk, Holger and Bengio, Yoshua},
245
- journal={arXiv preprint arXiv:1406.1078},
246
- year={2014}
247
- }
248
-
249
- @article{rush2015neural,
250
- title={A neural attention model for abstractive sentence summarization},
251
- author={Rush, Alexander M and Chopra, Sumit and Weston, Jason},
252
- journal={arXiv preprint arXiv:1509.00685},
253
- year={2015}
254
- }
255
-
256
- @article{micikevicius2017mixed,
257
- title={Mixed precision training},
258
- author={Micikevicius, Paulius and Narang, Sharan and Alben, Jonah and Diamos, Gregory and Elsen, Erich and Garcia, David and Ginsburg, Boris and Houston, Michael and Kuchaev, Oleksii and Venkatesh, Ganesh and others},
259
- journal={arXiv preprint arXiv:1710.03740},
260
- year={2017}
261
- }
262
-
263
- @ARTICLE{Britz:2017,
264
- author = {{Britz}, Denny and {Goldie}, Anna and {Luong}, Thang and {Le}, Quoc},
265
- title = {Massive Exploration of Neural Machine Translation Architectures},
266
- journal = {ArXiv e-prints arXiv:1703.03906},
267
- archivePrefix = "arXiv",
268
- eprinttype = {arxiv},
269
- eprint = {1703.03906},
270
- primaryClass = "cs.CL",
271
- keywords = {Computer Science - Computation and Language},
272
- year = 2017,
273
- month = mar
274
- }
275
-
276
- @inproceedings{abadi2016tensorflow,
277
- title={TensorFlow: A System for Large-Scale Machine Learning.},
278
- author={Abadi, Mart{\'\i}n and Barham, Paul and Chen, Jianmin and Chen, Zhifeng and Davis, Andy and Dean, Jeffrey and Devin, Matthieu and Ghemawat, Sanjay and Irving, Geoffrey and Isard, Michael and others},
279
- booktitle={OSDI},
280
- volume={16},
281
- pages={265--283},
282
- year={2016}
283
- }
284
-
285
- @article{tensor2tensor,
286
- author = {Ashish Vaswani and Samy Bengio and Eugene Brevdo and Francois Chollet and Aidan N. Gomez and Stephan Gouws and Llion Jones and \L{}ukasz Kaiser and Nal Kalchbrenner and Niki Parmar and Ryan Sepassi and
287
- Noam Shazeer and Jakob Uszkoreit},
288
- title = {Tensor2Tensor for Neural Machine Translation},
289
- journal = {CoRR},
290
- volume = {abs/1803.07416},
291
- year = {2018},
292
- url = {http://arxiv.org/abs/1803.07416},
293
- }
294
-
295
- @article{gehring2017convs2s,
296
- author = {Gehring, Jonas, and Auli, Michael and Grangier, David and Yarats, Denis and Dauphin, Yann N},
297
- title = "{Convolutional Sequence to Sequence Learning}",
298
- journal = {ArXiv e-prints arXiv:1705.03122},
299
- archivePrefix = "arXiv",
300
- eprinttype = {arxiv},
301
- eprint = {1705.03122},
302
- primaryClass = "cs.CL",
303
- keywords = {Computer Science - Computation and Language},
304
- year = 2017,
305
- month = May,
306
- }
307
-
308
- @inproceedings{chan2015,
309
- title={Listen, attend and spell},
310
- author={Chan, William and Jaitly, Navdeep and Le, Quoc V and Vinyals, Oriol},
311
- booktitle={Acoustics, Speech and Signal Processing (ICASSP), 2016 IEEE International Conference on},
312
- pages={5206--5210},
313
- year={2016},
314
- organization={IEEE}
315
- }
316
-
317
- @inproceedings{xu2015show,
318
- title={Show, attend and tell: Neural image caption generation with visual attention},
319
- author={Xu, Kelvin and Ba, Jimmy and Kiros, Ryan and Cho, Kyunghyun and Courville, Aaron and Salakhudinov, Ruslan and Zemel, Rich and Bengio, Yoshua},
320
- booktitle={International Conference on Machine Learning},
321
- pages={2048--2057},
322
- year={2015}
323
- }
324
-
325
- @incollection{Sutskever2014,
326
- title = {Sequence to Sequence Learning with Neural Networks},
327
- author = {Sutskever, Ilya and Vinyals, Oriol and Le, Quoc V},
328
- booktitle = {Advances in Neural Information Processing Systems 27},
329
- editor = {Z. Ghahramani and M. Welling and C. Cortes and N. D. Lawrence and K. Q. Weinberger},
330
- pages = {3104--3112},
331
- year = {2014},
332
- publisher = {Curran Associates, Inc.},
333
- url = {http://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf}
334
- }
335
-
336
- @article{DeepSpeech2014,
337
- title = {Deep Speech: Scaling up end-to-end speech recognition},
338
- author = {Awni Y. Hannun and Carl Case and Jared Casper and Bryan Catanzaro and Greg Diamos and Erich Elsen and Ryan Prenger and Sanjeev Satheesh and Shubho Sengupta and Adam Coates and Andrew Y. Ng},
339
- journal = {CoRR},
340
- volume = {abs/1412.5567},
341
- year = {2014},
342
- url = {http://arxiv.org/abs/1412.5567},
343
- archivePrefix = {arXiv},
344
- eprint = {1412.5567},
345
- timestamp = {Mon, 13 Aug 2018 16:48:07 +0200},
346
- biburl = {https://dblp.org/rec/bib/journals/corr/HannunCCCDEPSSCN14},
347
- bibsource = {dblp computer science bibliography, https://dblp.org}
348
- }
349
-
350
- @inproceedings{DeepSpeech2,
351
- author = {Amodei, Dario and Ananthanarayanan, Sundaram and Anubhai, Rishita and Bai, Jingliang and Battenberg, Eric and Case, Carl and Casper, Jared and Catanzaro, Bryan and Cheng, Qiang and Chen, Guoliang and Chen, Jie and Chen, Jingdong and Chen, Zhijie and Chrzanowski, Mike and Coates, Adam and Diamos, Greg and Ding, Ke and Du, Niandong and Elsen, Erich and Engel, Jesse and Fang, Weiwei and Fan, Linxi and Fougner, Christopher and Gao, Liang and Gong, Caixia and Hannun, Awni and Han, Tony and Johannes, Lappi Vaino and Jiang, Bing and Ju, Cai and Jun, Billy and LeGresley, Patrick and Lin, Libby and Liu, Junjie and Liu, Yang and Li, Weigao and Li, Xiangang and Ma, Dongpeng and Narang, Sharan and Ng, Andrew and Ozair, Sherjil and Peng, Yiping and Prenger, Ryan and Qian, Sheng and Quan, Zongfeng and Raiman, Jonathan and Rao, Vinay and Satheesh, Sanjeev and Seetapun, David and Sengupta, Shubho and Srinet, Kavya and Sriram, Anuroop and Tang, Haiyuan and Tang, Liliang and Wang, Chong and Wang, Jidong and Wang, Kaifu and Wang, Yi and Wang, Zhijian and Wang, Zhiqian and Wu, Shuang and Wei, Likai and Xiao, Bo and Xie, Wen and Xie, Yan and Yogatama, Dani and Yuan, Bin and Zhan, Jun and Zhu, Zhenyao},
352
- title = {Deep Speech 2: End-to-end Speech Recognition in English and Mandarin},
353
- booktitle = {Proceedings of the 33rd International Conference on International Conference on Machine Learning - Volume 48},
354
- series = {ICML'16},
355
- year = {2016},
356
- location = {New York, NY, USA},
357
- pages = {173--182},
358
- numpages = {10},
359
- url = {http://dl.acm.org/citation.cfm?id=3045390.3045410},
360
- acmid = {3045410},
361
- publisher = {JMLR.org},
362
- }
363
-
364
- @inproceedings{prabhavalkar2017comparison,
365
- title={A comparison of sequence-to-sequence models for speech recognition},
366
- author={Prabhavalkar, Rohit and Rao, Kanishka and Sainath, Tara N and Li, Bo and Johnson, Leif and Jaitly, Navdeep},
367
- booktitle={Proc. Interspeech},
368
- pages={939--943},
369
- year={2017}
370
- }
371
-
372
- @article{chiu2017state,
373
- title={State-of-the-art speech recognition with sequence-to-sequence models},
374
- author={Chiu, Chung-Cheng and Sainath, Tara N and Wu, Yonghui and Prabhavalkar, Rohit and Nguyen, Patrick and Chen, Zhifeng and Kannan, Anjuli and Weiss, Ron J and Rao, Kanishka and Gonina, Katya and others},
375
- journal={arXiv preprint arXiv:1712.01769},
376
- year={2017}
377
- }
378
-
379
- @misc{NVMixed,
380
- title = {{NVIDA's Mixed-Precision Training - TensorFlow example}},
381
- howpublished = {\url{https://docs.nvidia.com/deeplearning/sdk/mixed-precision-training/#example_tensorflow}},
382
- author={NVIDIA},
383
- note = {Accessed: 2018-10-09},
384
- year={2018}
385
- }
386
-
387
- @article{gehring2017,
388
- title={Convolutional sequence to sequence learning},
389
- author={Gehring, Jonas and Auli, Michael and Grangier, David and Yarats, Denis and Dauphin, Yann N},
390
- journal={arXiv preprint arXiv:1705.03122},
391
- year={2017}
392
- }
393
-
394
- @article{collobert2016,
395
- title={Wav2letter: an end-to-end convnet-based speech recognition system},
396
- author={Collobert, Ronan and Puhrsch, Christian and Synnaeve, Gabriel},
397
- journal={arXiv preprint arXiv:1609.03193},
398
- year={2016}
399
- }
400
-
401
- @inproceedings{Zhang2016,
402
- author={Ying Zhang and Mohammad Pezeshki and Philémon Brakel and Saizheng Zhang and César Laurent and Yoshua Bengio and Aaron Courville},
403
- title={Towards End-to-End Speech Recognition with Deep Convolutional Neural Networks},
404
- year=2016,
405
- booktitle={Interspeech 2016},
406
- doi={10.21437/Interspeech.2016-1446},
407
- url={http://dx.doi.org/10.21437/Interspeech.2016-1446},
408
- pages={410--414}
409
- }
410
-
411
- @inproceedings{Zhang2017,
412
- title={Very deep convolutional networks for end-to-end speech recognition},
413
- author={Zhang, Yu, and Chan, William, and Jaitly, Navdeep},
414
- booktitle={Acoustics, Speech and Signal Processing (ICASSP), 2017 IEEE International Conference on},
415
- year={2017},
416
- organization={IEEE}
417
- }
418
-
419
-
420
- @article{Wang2017,
421
- title={Tacotron: Towards End-to-End Speech Synthesis},
422
- author={ Wang, Yuxuan, and Skerry-Ryan, RJ, and Stanton, Daisy and Wu, Yonghui and Weiss, Ron, and Jaitly, Navdeep and Yang, Zongheng and Xiao, Ying and Chen,Zhifeng and Bengio, Samy and Le, Quoc and Agiomyrgiannakis, Yannis and Clark,Rob and Saurous, Rif A.},
423
- journal={arXiv preprint arXiv:1703.10135},
424
- year={2017}
425
- }
426
-
427
- @article{griffin1984signal,
428
- title={Signal estimation from modified short-time Fourier transform},
429
- author={Griffin, Daniel and Lim, Jae},
430
- journal={IEEE Transactions on Acoustics, Speech, and Signal Processing},
431
- volume={32},
432
- number={2},
433
- pages={236--243},
434
- year={1984},
435
- publisher={IEEE}
436
- }
437
-
438
- @misc{ito2017lj,
439
- title={The LJ speech dataset},
440
- author={Ito, Keith and others},
441
- year={2017}
442
- }
443
-
444
- @misc{mailabs,
445
- title = {{The M-AILABS Speech Dataset}},
446
- howpublished = {\url{http://www.m-ailabs.bayern/en/the-mailabs-speech-dataset/}},
447
- author={M-AILABS},
448
- note = {Accessed: 2018-10-09},
449
- year={2018}
450
- }
451
-
452
- @article{merity2016pointer,
453
- title={Pointer sentinel mixture models},
454
- author={Merity, Stephen and Xiong, Caiming and Bradbury, James and Socher, Richard},
455
- journal={arXiv preprint arXiv:1609.07843},
456
- year={2016}
457
- }
458
-
459
- @inproceedings{socher2013recursive,
460
- title={Recursive deep models for semantic compositionality over a sentiment treebank},
461
- author={Socher, Richard and Perelygin, Alex and Wu, Jean and Chuang, Jason and Manning, Christopher D and Ng, Andrew and Potts, Christopher},
462
- booktitle={Proceedings of the 2013 conference on empirical methods in natural language processing},
463
- pages={1631--1642},
464
- year={2013}
465
- }
466
-
467
- @InProceedings{maas-EtAl:2011:ACL-HLT2011,
468
- author = {Maas, Andrew L. and Daly, Raymond E. and Pham, Peter T. and Huang, Dan and Ng, Andrew Y. and Potts, Christopher},
469
- title = {Learning Word Vectors for Sentiment Analysis},
470
- booktitle = {Proceedings of the 49th Annual Meeting of the Association for Computational Linguistics: Human Language Technologies},
471
- month = {June},
472
- year = {2011},
473
- address = {Portland, Oregon, USA},
474
- publisher = {Association for Computational Linguistics},
475
- pages = {142--150},
476
- url = {http://www.aclweb.org/anthology/P11-1015}
477
- }
478
-
479
- @inproceedings{Povey2018SemiOrthogonalLM,
480
- title={Semi-Orthogonal Low-Rank Matrix Factorization for Deep Neural Networks},
481
- author={Daniel Povey and Gaofeng Cheng and Yiming Wang and Ke Li and Hainan Xu and Mahsa Yarmohammadi and Sanjeev Khudanpur},
482
- booktitle={Interspeech},
483
- year={2018}
484
- }
485
-
486
- @article{CAPIO2017,
487
- author = {Kyu J. Han and Akshay Chandrashekaran and Jungsuk Kim and Ian R. Lane},
488
- title = {The {CAPIO} 2017 Conversational Speech Recognition System},
489
- journal = {CoRR},
490
- volume = {abs/1801.00059},
491
- year = {2018},
492
- url = {http://arxiv.org/abs/1801.00059},
493
- archivePrefix = {arXiv},
494
- eprint = {1801.00059},
495
- timestamp = {Mon, 13 Aug 2018 16:49:10 +0200},
496
- biburl = {https://dblp.org/rec/bib/journals/corr/abs-1801-00059},
497
- bibsource = {dblp computer science bibliography, https://dblp.org}
498
- }
499
-
500
- @article{WaveNet,
501
- author = {A{\"{a}}ron van den Oord and Sander Dieleman and Heiga Zen and Karen Simonyan and Oriol Vinyals and Alex Graves and Nal Kalchbrenner and Andrew W. Senior and Koray Kavukcuoglu},
502
- title = {WaveNet: {A} Generative Model for Raw Audio},
503
- journal = {CoRR},
504
- volume = {abs/1609.03499},
505
- year = {2016},
506
- url = {http://arxiv.org/abs/1609.03499},
507
- archivePrefix = {arXiv},
508
- eprint = {1609.03499},
509
- timestamp = {Mon, 13 Aug 2018 16:49:15 +0200},
510
- biburl = {https://dblp.org/rec/bib/journals/corr/OordDZSVGKSK16},
511
- bibsource = {dblp computer science bibliography, https://dblp.org}
512
- }
513
-
514
- @article{FacebookGERENGBackTranslation,
515
- author = {Rico Sennrich and Barry Haddow and Alexandra Birch},
516
- title = {Improving Neural Machine Translation Models with Monolingual Data},
517
- journal = {CoRR},
518
- volume = {abs/1511.06709},
519
- year = {2015},
520
- url = {http://arxiv.org/abs/1511.06709},
521
- archivePrefix = {arXiv},
522
- eprint = {1511.06709},
523
- timestamp = {Mon, 13 Aug 2018 16:47:05 +0200},
524
- biburl = {https://dblp.org/rec/bib/journals/corr/SennrichHB15a},
525
- bibsource = {dblp computer science bibliography, https://dblp.org}
526
- }
527
-
528
- @article{GlobalStyleTokens,
529
- author = {Yuxuan Wang and Daisy Stanton and Yu Zhang and R. J. Skerry{-}Ryan and Eric Battenberg and Joel Shor and Ying Xiao and Fei Ren and Ye Jia and Rif A. Saurous},
530
- title = {Style Tokens: Unsupervised Style Modeling, Control and Transfer in End-to-End Speech Synthesis},
531
- journal = {CoRR},
532
- volume = {abs/1803.09017},
533
- year = {2018},
534
- url = {http://arxiv.org/abs/1803.09017},
535
- archivePrefix = {arXiv},
536
- eprint = {1803.09017},
537
- timestamp = {Mon, 13 Aug 2018 16:46:53 +0200},
538
- biburl = {https://dblp.org/rec/bib/journals/corr/abs-1803-09017},
539
- bibsource = {dblp computer science bibliography, https://dblp.org}
540
- }
541
-
542
- @article{IoffeS15BatchNorm,
543
- author = {Sergey Ioffe and Christian Szegedy},
544
- title = {Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift},
545
- journal = {CoRR},
546
- volume = {abs/1502.03167},
547
- year = {2015},
548
- url = {http://arxiv.org/abs/1502.03167},
549
- archivePrefix = {arXiv},
550
- eprint = {1502.03167},
551
- timestamp = {Mon, 13 Aug 2018 16:47:06 +0200},
552
- biburl = {https://dblp.org/rec/bib/journals/corr/IoffeS15},
553
- bibsource = {dblp computer science bibliography, https://dblp.org}
554
- }
555
-
556
- @article{kingma,
557
- author = {Diederik P. Kingma and
558
- Jimmy Ba},
559
- title = {Adam: {A} Method for Stochastic Optimization},
560
- journal = {CoRR},
561
- volume = {abs/1412.6980},
562
- year = {2014},
563
- url = {http://arxiv.org/abs/1412.6980},
564
- archivePrefix = {arXiv},
565
- eprint = {1412.6980},
566
- timestamp = {Mon, 13 Aug 2018 01:00:00 +0200},
567
- biburl = {https://dblp.org/rec/bib/journals/corr/KingmaB14},
568
- bibsource = {dblp computer science bibliography, https://dblp.org}
569
- }
570
-
571
- @incollection{Salimans2016WeightNorm,
572
- title = {Weight Normalization: A Simple Reparameterization to Accelerate Training of Deep Neural Networks},
573
- author = {Salimans, Tim and Kingma, Durk P},
574
- booktitle = {Advances in Neural Information Processing Systems 29},
575
- editor = {D. D. Lee and M. Sugiyama and U. V. Luxburg and I. Guyon and R. Garnett},
576
- pages = {901--909},
577
- year = {2016},
578
- publisher = {Curran Associates, Inc.},
579
- url = {http://papers.nips.cc/paper/6114-weight-normalization-a-simple-reparameterization-to-accelerate-training-of-deep-neural-networks.pdf}
580
- }
581
-
582
- @article{wu2016google,
583
- title={Google's neural machine translation system: Bridging the gap between human and machine translation},
584
- author={Wu, Yonghui and Schuster, Mike and Chen, Zhifeng and Le, Quoc V and Norouzi, Mohammad and Macherey, Zolfgang and Krikun, Maxim and Cao, Yuan and Gao, Qin and Macherey, Klaus and others},
585
- journal={arXiv preprint arXiv:1609.08144},
586
- year={2016}
587
- }
588
-
589
- @inproceedings{opennmt,
590
- author = {Guillaume Klein and Yoon Kim and Yuntian Deng and Jean Senellart and Alexander M. Rush},
591
- title = {OpenNMT: Open-Source Toolkit for Neural Machine Translation},
592
- booktitle = {Proc. ACL},
593
- year = {2017},
594
- url = {https://doi.org/10.18653/v1/P17-4012},
595
- doi = {10.18653/v1/P17-4012}
596
- }
597
-
598
- @article{paszke2017automatic,
599
- title={Automatic differentiation in PyTorch},
600
- author={Paszke, Adam and Gross, Sam and Chintala, Soumith and Chanan, Gregory and Yang, Edward and DeVito, Zachary and Lin, Zeming and Desmaison, Alban and Antiga, Luca and Lerer, Adam},
601
- year={2017}
602
- }
603
-
604
- @article{yu2014introduction,
605
- title={An introduction to computational networks and the computational network toolkit},
606
- author={Yu, Dong and Eversole, Adam and Seltzer, Mike and Yao, Kaisheng and Huang, Zhiheng and Guenter, Brian and Kuchaiev, Oleksii and Zhang, Yu and Seide, Frank and Wang, Huaming and others},
607
- journal={Microsoft Technical Report MSR-TR-2014--112},
608
- year={2014}
609
- }
610
-
611
- @article{nvidia2017v100,
612
- title={V100 GPU architecture. The world’s most advanced data center GPU. Version WP-08608-001\_v1. 1},
613
- author={NVIDIA, Tesla},
614
- journal={NVIDIA. Aug},
615
- pages={108},
616
- year={2017}
617
- }
618
-
619
- @article{Ba2016LayerNorm,
620
- author = {Jimmy Lei Ba and Jamie Ryan Kiros and Geoffrey E Hinton},
621
- title = {Layer normalization},
622
- journal = {CoRR},
623
- volume = {abs/1607.06450},
624
- year = {2016},
625
- url = {http://arxiv.org/abs/1607.06450},
626
- archivePrefix = {arXiv},
627
- }
628
-
629
- @inproceedings{Dauphin2017GLU,
630
- author = {Dauphin, Yann N. and Fan, Angela and Auli, Michael and Grangier, David},
631
- title = {Language Modeling with Gated Convolutional Networks},
632
- booktitle = {Proceedings of the 34th International Conference on Machine Learning - Volume 70},
633
- series = {ICML'17},
634
- year = {2017},
635
- location = {Sydney, NSW, Australia},
636
- pages = {933--941},
637
- numpages = {9},
638
- url = {http://dl.acm.org/citation.cfm?id=3305381.3305478},
639
- acmid = {3305478},
640
- publisher = {JMLR.org},
641
- }
642
-
643
- @incollection{Oord2016PixelCNN,
644
- title = {Conditional Image Generation with PixelCNN Decoders},
645
- author = {van den Oord, Aaron and Kalchbrenner, Nal and Espeholt, Lasse and kavukcuoglu, koray and Vinyals, Oriol and Graves, Alex},
646
- booktitle = {Advances in Neural Information Processing Systems 29},
647
- editor = {D. D. Lee and M. Sugiyama and U. V. Luxburg and I. Guyon and R. Garnett},
648
- pages = {4790--4798},
649
- year = {2016},
650
- publisher = {Curran Associates, Inc.},
651
- url = {http://papers.nips.cc/paper/6527-conditional-image-generation-with-pixelcnn-decoders.pdf}
652
- }
653
-
654
- @article{he2015,
655
- title={Deep residual learning for image recognition},
656
- author={K. He, and X. Zhang, and S. Ren, and J. Sun},
657
- journal={arXiv preprint arXiv:1512.03385},
658
- year={2015}
659
- }
660
-
661
- @article{huang2016,
662
- title={Densely Connected Convolutional Networks},
663
- author={Gao Huang, and Zhuang Liu, and Laurens van der Maaten, and Kilian Q. Weinberger},
664
- journal={arXiv preprint arXiv:1608.06993},
665
- year={2016}
666
- }
667
-
668
- @inproceedings{heafield2011kenlm,
669
- title={KenLM: Faster and smaller language model queries},
670
- author={Heafield, Kenneth},
671
- booktitle={Proceedings of the sixth workshop on statistical machine translation},
672
- pages={187--197},
673
- year={2011},
674
- organization={Association for Computational Linguistics}
675
- }
676
-
677
- @article{dai2018transformer,
678
- title={Transformer-XL: Language Modeling with Longer-Term Dependency},
679
- author={Dai, Zihang and Yang, Zhilin and Yang, Yiming and Cohen, William W and Carbonell, Jaime and Le, Quoc V and Salakhutdinov, Ruslan},
680
- year={2018},
681
- journal = {CoRR},
682
- volume = {abs/1901.02860},
683
- url = {http://arxiv.org/abs/1901.02860},
684
- archivePrefix = {arXiv},
685
- eprint = {1901.02860},
686
- timestamp = {Fri, 01 Feb 2019 13:39:59 +0100},
687
- biburl = {https://dblp.org/rec/bib/journals/corr/abs-1901-02860},
688
- bibsource = {dblp computer science bibliography, https://dblp.org}
689
- }
690
-
691
- @inproceedings{Saon+2016,
692
- author={George Saon and Tom Sercu and Steven Rennie and Hong-Kwang J. Kuo},
693
- title={The IBM 2016 English Conversational Telephone Speech Recognition System},
694
- year=2016,
695
- booktitle={Interspeech 2016},
696
- doi={10.21437/Interspeech.2016-1460},
697
- url={http://dx.doi.org/10.21437/Interspeech.2016-1460},
698
- pages={7--11}
699
- }
700
-
701
- @INPROCEEDINGS{Sercu-2016,
702
- author={T. {Sercu} and C. {Puhrsch} and B. {Kingsbury} and Y. {LeCun}},
703
- booktitle={2016 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
704
- title={Very deep multilingual convolutional neural networks for LVCSR},
705
- year={2016},
706
- volume={},
707
- number={},
708
- pages={4955-4959},
709
- keywords={natural language processing;neural nets;speech recognition;very deep multilingual convolutional neural networks;LVCSR;CNN;large vocabulary continuous speech recognition systems;word error rate;Training;Context;Hidden Markov models;Neural networks;Computer architecture;Kernel;Training data;Convolutional Networks;Multilingual;Acoustic Modeling;Speech Recognition;Neural Networks},
710
- doi={10.1109/ICASSP.2016.7472620},
711
- ISSN={2379-190X},
712
- month={March},}
713
-
714
-
715
- @inproceedings{Sercu+2016,
716
- author={Tom Sercu and Vaibhava Goel},
717
- title={Advances in Very Deep Convolutional Neural Networks for LVCSR},
718
- year=2016,
719
- booktitle={Interspeech 2016},
720
- doi={10.21437/Interspeech.2016-1033},
721
- url={http://dx.doi.org/10.21437/Interspeech.2016-1033},
722
- pages={3429--3433}
723
- }
724
-
725
- @INPROCEEDINGS{Xiong-2018,
726
- author={W. {Xiong} and L. {Wu} and F. {Alleva} and J. {Droppo} and X. {Huang} and A. {Stolcke}},
727
- booktitle={2018 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
728
- title={The Microsoft 2017 Conversational Speech Recognition System},
729
- year={2018},
730
- volume={},
731
- number={},
732
- pages={5934-5938},
733
- keywords={convolution;feedforward neural nets;natural language processing;speaker recognition;speech processing;language model rescoring step;senone level;switchboard domains;character-based LSTM language models;NIST 2000 switchboard test set;frame level;word-level voting;acoustic model posteriors;dialog session aware LSTM language models;CNN-BLSTM acoustic model;Microsoft 2017 conversational speech recognition system;Acoustics;Error analysis;Training;Speech recognition;Switches;Computational modeling;Context modeling;Conversational speech recognition;CNN;LACE;BLSTM;LSTM-LM;system combination;human parity},
734
- doi={10.1109/ICASSP.2018.8461870},
735
- ISSN={2379-190X},
736
- month={April},}
737
-
738
- @inproceedings{zeyer2018improved,
739
- author={Albert Zeyer and Kazuki Irie and Ralf Schlüter and Hermann Ney},
740
- title={Improved Training of End-to-end Attention Models for Speech Recognition},
741
- year=2018,
742
- booktitle={Proc. Interspeech 2018},
743
- pages={7--11},
744
- doi={10.21437/Interspeech.2018-1616},
745
- url={http://dx.doi.org/10.21437/Interspeech.2018-1616}
746
- }
747
-
748
- @article{Wav2LetterV2,
749
- author = {Vitaliy Liptchinsky and
750
- Gabriel Synnaeve and
751
- Ronan Collobert},
752
- title = {Letter-Based Speech Recognition with Gated ConvNets},
753
- journal = {CoRR},
754
- volume = {abs/1712.09444},
755
- year = {2017},
756
- url = {http://arxiv.org/abs/1712.09444},
757
- archivePrefix = {arXiv},
758
- eprint = {1712.09444},
759
- timestamp = {Mon, 13 Aug 2018 16:46:33 +0200},
760
- biburl = {https://dblp.org/rec/bib/journals/corr/abs-1712-09444},
761
- bibsource = {dblp computer science bibliography, https://dblp.org}
762
- }
763
-
764
- @article{zeghidour2018,
765
- author = {Neil Zeghidour and
766
- Qiantong Xu and
767
- Vitaliy Liptchinsky and
768
- Nicolas Usunier and
769
- Gabriel Synnaeve and
770
- Ronan Collobert},
771
- title = {Fully Convolutional Speech Recognition},
772
- journal = {CoRR},
773
- volume = {abs/1812.06864},
774
- year = {2018},
775
- url = {http://arxiv.org/abs/1812.06864},
776
- archivePrefix = {arXiv},
777
- eprint = {1812.06864},
778
- timestamp = {Tue, 01 Jan 2019 15:01:25 +0100},
779
- biburl = {https://dblp.org/rec/bib/journals/corr/abs-1812-06864},
780
- bibsource = {dblp computer science bibliography, https://dblp.org}
781
- }
782
-
783
- @inproceedings{Hadian2018,
784
- author={Hossein Hadian and Hossein Sameti and Daniel Povey and Sanjeev Khudanpur},
785
- title={End-to-end Speech Recognition Using Lattice-free MMI},
786
- year=2018,
787
- booktitle={Proc. Interspeech 2018},
788
- pages={12--16},
789
- doi={10.21437/Interspeech.2018-1423},
790
- url={http://dx.doi.org/10.21437/Interspeech.2018-1423}
791
- }
792
-
793
- @inproceedings{Tang2018,
794
- author={Jian Tang and Yan Song and Lirong Dai and Ian McLoughlin},
795
- title={Acoustic Modeling with Densely Connected Residual Network for Multichannel Speech Recognition},
796
- year=2018,
797
- booktitle={Proc. Interspeech 2018},
798
- pages={1783--1787},
799
- doi={10.21437/Interspeech.2018-1089},
800
- url={http://dx.doi.org/10.21437/Interspeech.2018-1089}
801
- }
802
-
803
- @article{Kurata2017LanguageMW,
804
- title={Language modeling with highway LSTM},
805
- author={Gakuto Kurata and Bhuvana Ramabhadran and George Saon and Abhinav Sethy},
806
- journal={2017 IEEE Automatic Speech Recognition and Understanding Workshop (ASRU)},
807
- year={2017},
808
- pages={244-251}
809
- }
810
-
811
- @inproceedings{Saon2017,
812
- author={George Saon and Gakuto Kurata and Tom Sercu and Kartik Audhkhasi and Samuel Thomas and Dimitrios Dimitriadis and Xiaodong Cui and Bhuvana Ramabhadran and Michael Picheny and Lynn-Li Lim and Bergul Roomi and Phil Hall},
813
- title={English Conversational Telephone Speech Recognition by Humans and Machines},
814
- year=2017,
815
- booktitle={Proc. Interspeech 2017},
816
- pages={132--136},
817
- doi={10.21437/Interspeech.2017-405},
818
- url={http://dx.doi.org/10.21437/Interspeech.2017-405}
819
- }
820
-
821
- @inproceedings{Povey+2016,
822
- author={Daniel Povey and Vijayaditya Peddinti and Daniel Galvez and Pegah Ghahremani and Vimal Manohar and Xingyu Na and Yiming Wang and Sanjeev Khudanpur},
823
- title={Purely Sequence-Trained Neural Networks for ASR Based on Lattice-Free MMI},
824
- year=2016,
825
- booktitle={Interspeech 2016},
826
- doi={10.21437/Interspeech.2016-595},
827
- url={http://dx.doi.org/10.21437/Interspeech.2016-595},
828
- pages={2751--2755}
829
- }
830
-
831
- @article{Yang2018,
832
- author = {Xuerui Yang and
833
- Jiwei Li and
834
- Xi Zhou},
835
- title = {A novel pyramidal-FSMN architecture with lattice-free {MMI} for speech
836
- recognition},
837
- journal = {CoRR},
838
- volume = {abs/1810.11352},
839
- year = {2018},
840
- url = {http://arxiv.org/abs/1810.11352},
841
- archivePrefix = {arXiv},
842
- eprint = {1810.11352},
843
- timestamp = {Wed, 31 Oct 2018 14:24:29 +0100},
844
- biburl = {https://dblp.org/rec/bib/journals/corr/abs-1810-11352},
845
- bibsource = {dblp computer science bibliography, https://dblp.org}
846
- }
847
-
848
- @article{liptchinsky2017based,
849
- title={Letter-Based Speech Recognition with Gated ConvNets},
850
- author={Liptchinsky, Vitaliy and Synnaeve, Gabriel and Collobert, Ronan},
851
- journal={arXiv preprint arXiv:1712.09444},
852
- year={2017}
853
- }
854
-
855
- @inproceedings{Weng2018,
856
- author={Chao Weng and Jia Cui and Guangsen Wang and Jun Wang and Chengzhu Yu and Dan Su and Dong Yu},
857
- title={Improving Attention Based Sequence-to-Sequence Models for End-to-End English Conversational Speech Recognition},
858
- year=2018,
859
- booktitle={Proc. Interspeech 2018},
860
- pages={761--765},
861
- doi={10.21437/Interspeech.2018-1030},
862
- url={http://dx.doi.org/10.21437/Interspeech.2018-1030}
863
- }
864
-
865
- @INPROCEEDINGS{Battenberg2017,
866
- author={E. {Battenberg} and J. {Chen} and R. {Child} and A. {Coates} and Y. G. Y. {Li} and H. {Liu} and S. {Satheesh} and A. {Sriram} and Z. {Zhu}},
867
- booktitle={2017 IEEE Automatic Speech Recognition and Understanding Workshop (ASRU)},
868
- title={Exploring neural transducers for end-to-end speech recognition},
869
- year={2017},
870
- volume={},
871
- number={},
872
- pages={206-213},
873
- keywords={recurrent neural nets;speech recognition;Hub500 benchmark;CTC models;speech recognition pipeline;RNN-Transducer models;language model;Seq2Seq models;end-to-end speech recognition;neural transducers;Decoding;Hidden Markov models;Transducers;Task analysis;Speech;Mathematical model;Neural networks},
874
- doi={10.1109/ASRU.2017.8268937},
875
- ISSN={},
876
- month={Dec},
877
- }
878
-
879
- @inproceedings{
880
- loshchilov2018,
881
- title={Decoupled Weight Decay Regularization},
882
- author={Ilya Loshchilov and Frank Hutter},
883
- booktitle={International Conference on Learning Representations},
884
- year={2019},
885
- url={https://openreview.net/forum?id=Bkg6RiCqY7},
886
- }
887
-
888
- @article{zhang2017ndadam,
889
- author = {Zijun Zhang and Lin Ma and Zongpeng Li and Chuan Wu},
890
- title = {Normalized Direction-preserving Adam},
891
- journal = {arXiv e-prints arXiv:1709.04546},
892
- year = {2017},
893
- }
894
-
895
- @article{park2019,
896
- author = {{Park}, Daniel S. and {Chan}, William and {Zhang}, Yu and
897
- {Chiu}, Chung-Cheng and {Zoph}, Barret and {Cubuk}, Ekin D. and
898
- {Le}, Quoc V.},
899
- title = "{SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition}",
900
- journal = {arXiv e-prints},
901
- year = "2019",
902
- eid = {arXiv:1904.08779},
903
- eprint = {1904.08779},
904
- }
905
-
906
- @article{novograd2019,
907
- author = {{Ginsburg}, Boris and {Castonguay}, Patrice and {Hrinchuk}, Oleksii and
908
- {Kuchaiev}, Oleksii and {Lavrukhin}, Vitaly and {Leary}, Ryan and
909
- {Li}, Jason and {Nguyen}, Huyen and {Cohen}, Jonathan M.},
910
- title = "{Stochastic Gradient Methods with Layer-wise Adaptive Moments for Training of Deep Networks}",
911
- journal = {arXiv e-prints},
912
- year = "2019",
913
- eid = {arXiv:1905.11286},
914
- eprint = {1905.11286},
915
- }
916
-
917
- @article{kriman2019quartznet,
918
- title={Quartznet: {Deep} automatic speech recognition with 1d time-channel separable convolutions},
919
- author={Kriman, Samuel and Beliaev, Stanislav and Ginsburg, Boris and Huang, Jocelyn and Kuchaiev, Oleksii and Lavrukhin, Vitaly and Leary, Ryan and Li, Jason and Zhang, Yang},
920
- journal={arXiv preprint arXiv:1910.10261},
921
- year={2019}
922
- }
923
-
924
- @misc{itu1988g711,
925
- title={{ITU-T} {G.711} - {Pulse} code modulation ({PCM}) of voice frequencies},
926
- author={ITU-T Geneva Switzerland},
927
- year={1988},
928
- }
929
-
930
- @article{han2020contextnet,
931
- title={ContextNet: Improving convolutional neural networks for automatic speech recognition with global context},
932
- author={Han, Wei and Zhang, Zhengdong and Zhang, Yu and Yu, Jiahui and Chiu, Chung-Cheng and Qin, James and Gulati, Anmol and Pang, Ruoming and Wu, Yonghui},
933
- journal={arXiv:2005.03191},
934
- year={2020}
935
- }
936
-
937
- @inproceedings{hu2018squeeze,
938
- title={Squeeze-and-excitation networks},
939
- author={Hu, Jie and Shen, Li and Sun, Gang},
940
- booktitle={ICVPR},
941
- year={2018}
942
- }
943
-
944
- @article{koluguri2020speakernet,
945
- title={SpeakerNet: 1D Depth-wise Separable Convolutional Network for Text-Independent Speaker Recognition and Verification},
946
- author={Koluguri, Nithin Rao and Li, Jason and Lavrukhin, Vitaly and Ginsburg, Boris},
947
- journal={arXiv preprint arXiv:2010.12653},
948
- year={2020}
949
- }
950
-
951
- @article{gulati2020conformer,
952
- title={Conformer: Convolution-augmented transformer for speech recognition},
953
- author={Gulati, Anmol and Qin, James and Chiu, Chung-Cheng and Parmar, Niki and Zhang, Yu and Yu, Jiahui and Han, Wei and Wang, Shibo and Zhang, Zhengdong and Wu, Yonghui and others},
954
- journal={arXiv preprint arXiv:2005.08100},
955
- year={2020}
956
- }
957
-
958
- @article{koluguri2021titanet,
959
- title={TitaNet: Neural Model for speaker representation with 1D Depth-wise separable convolutions and global context},
960
- author={Koluguri, Nithin Rao and Park, Taejin and Ginsburg, Boris},
961
- journal={arXiv preprint arXiv:2110.04410},
962
- year={2021}
963
- }
964
-
965
- @article{Dawalatabad_2021,
966
- title={ECAPA-TDNN Embeddings for Speaker Diarization},
967
- url={http://dx.doi.org/10.21437/Interspeech.2021-941},
968
- DOI={10.21437/interspeech.2021-941},
969
- journal={Interspeech 2021},
970
- publisher={ISCA},
971
- author={Dawalatabad, Nauman and Ravanelli, Mirco and Grondin, François and Thienpondt, Jenthe and Desplanques, Brecht and Na, Hwidong},
972
- year={2021},
973
- month={Aug}
974
- }
975
-
976
- @inproceedings{he2019streaming,
977
- title={Streaming end-to-end speech recognition for mobile devices},
978
- author={He, Yanzhang and Sainath, Tara N and Prabhavalkar, Rohit and McGraw, Ian and Alvarez, Raziel and Zhao, Ding and Rybach, David and Kannan, Anjuli and Wu, Yonghui and Pang, Ruoming and others},
979
- booktitle={ICASSP 2019-2019 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
980
- pages={6381--6385},
981
- year={2019},
982
- organization={IEEE}
983
- }
984
-
985
- @misc{wav2vec2,
986
- doi = {10.48550/ARXIV.2006.11477},
987
- url = {https://arxiv.org/abs/2006.11477},
988
- author = {Baevski, Alexei and Zhou, Henry and Mohamed, Abdelrahman and Auli, Michael},
989
- title = {wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations},
990
- publisher = {arXiv},
991
- year = {2020},
992
- copyright = {arXiv.org perpetual, non-exclusive license}
993
- }
994
-
995
- @misc{w2v_bert,
996
- doi = {10.48550/ARXIV.2108.06209},
997
- url = {https://arxiv.org/abs/2108.06209},
998
- author = {Chung, Yu-An and Zhang, Yu and Han, Wei and Chiu, Chung-Cheng and Qin, James and Pang, Ruoming and Wu, Yonghui},
999
- title = {W2v-BERT: Combining Contrastive Learning and Masked Language Modeling for Self-Supervised Speech Pre-Training},
1000
- publisher = {arXiv},
1001
- year = {2021},
1002
- copyright = {arXiv.org perpetual, non-exclusive license}
1003
- }
1004
-
1005
- @misc{ssl_inter,
1006
- doi = {10.48550/ARXIV.2112.08778},
1007
- url = {https://arxiv.org/abs/2112.08778},
1008
- author = {Wang, Chengyi and Wu, Yu and Chen, Sanyuan and Liu, Shujie and Li, Jinyu and Qian, Yao and Yang, Zhenglu},
1009
- title = {Self-Supervised Learning for speech recognition with Intermediate layer supervision},
1010
- publisher = {arXiv},
1011
- year = {2021},
1012
- copyright = {arXiv.org perpetual, non-exclusive license}
1013
- }
1014
-
1015
- @misc{kim2022squeezeformer,
1016
- doi = {10.48550/ARXIV.2206.00888},
1017
- url = {https://arxiv.org/abs/2206.00888},
1018
- author = {Kim, Sehoon and Gholami, Amir and Shaw, Albert and Lee, Nicholas and Mangalam, Karttikeya and Malik, Jitendra and Mahoney, Michael W. and Keutzer, Kurt},
1019
- keywords = {Audio and Speech Processing (eess.AS), Computation and Language (cs.CL), Sound (cs.SD), FOS: Electrical engineering, electronic engineering, information engineering, FOS: Electrical engineering, electronic engineering, information engineering, FOS: Computer and information sciences, FOS: Computer and information sciences},
1020
- title = {Squeezeformer: An Efficient Transformer for Automatic Speech Recognition},
1021
- publisher = {arXiv},
1022
- year = {2022},
1023
- copyright = {arXiv.org perpetual, non-exclusive license}
1024
- }
1025
-
1026
- @misc{park2022multi,
1027
- doi = {10.48550/ARXIV.2203.15974},
1028
- url = {https://arxiv.org/abs/2203.15974},
1029
- author = {Park, Tae Jin and Koluguri, Nithin Rao and Balam, Jagadeesh and Ginsburg, Boris},
1030
- keywords = {Audio and Speech Processing (eess.AS), Computation and Language (cs.CL), FOS: Electrical engineering, electronic engineering, information engineering, FOS: Electrical engineering, electronic engineering, information engineering, FOS: Computer and information sciences, FOS: Computer and information sciences},
1031
- title = {Multi-scale Speaker Diarization with Dynamic Scale Weighting},
1032
- publisher = {arXiv},
1033
- year = {2022},
1034
- copyright = {Creative Commons Attribution 4.0 International}
1035
- }
1036
-
1037
- @inproceedings{vaswani2017aayn,
1038
- title={Attention is all you need},
1039
- author={Vaswani, Ashish and Shazeer, Noam and Parmar, Niki and Uszkoreit, Jakob and Jones, Llion and Gomez, Aidan N and Kaiser, {\L}ukasz and Polosukhin, Illia},
1040
- booktitle={Advances in Neural Information Processing Systems},
1041
- pages={6000--6010},
1042
- year={2017}
1043
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
NeMo-2.2.0/docs/source/asr/asr_language_modeling_and_customization.rst DELETED
@@ -1,663 +0,0 @@
1
- #######################################
2
- ASR Language Modeling and Customization
3
- #######################################
4
-
5
- Language models have shown to help the accuracy of ASR models. NeMo supports the following two approaches to incorporate language models into the ASR models:
6
-
7
- * :ref:`ngram_modeling`
8
- * :ref:`neural_rescoring`
9
-
10
- It is possible to use both approaches on the same ASR model.
11
-
12
-
13
- .. _ngram_modeling:
14
-
15
- ************************
16
- N-gram Language Modeling
17
- ************************
18
-
19
- In this approach, an N-gram LM is trained on text data, then it is used in fusion with beam search decoding to find the
20
- best candidates. The beam search decoders in NeMo support language models trained with KenLM library (
21
- `https://github.com/kpu/kenlm <https://github.com/kpu/kenlm>`__).
22
- The beam search decoders and KenLM library are not installed by default in NeMo. You need to install them to be able to use beam search decoding and N-gram LM.
23
- Please refer to `scripts/asr_language_modeling/ngram_lm/install_beamsearch_decoders.sh <https://github.com/NVIDIA/NeMo/blob/stable/scripts/asr_language_modeling/ngram_lm/install_beamsearch_decoders.sh>`__
24
- on how to install them. Alternatively, you can build Docker image
25
- `scripts/installers/Dockerfile.ngramtools <https://github.com/NVIDIA/NeMo/blob/stable/scripts/installers/Dockerfile.ngramtools>`__ with all the necessary dependencies.
26
-
27
- NeMo supports both character-based and BPE-based models for N-gram LMs. An N-gram LM can be used with beam search
28
- decoders on top of the ASR models to produce more accurate candidates. The beam search decoder would incorporate
29
- the scores produced by the N-gram LM into its score calculations as the following:
30
-
31
- .. code-block::
32
-
33
- final_score = acoustic_score + beam_alpha*lm_score + beam_beta*seq_length
34
-
35
- where acoustic_score is the score predicted by the acoustic encoder and lm_score is the one estimated by the LM.
36
- The parameter 'beam_alpha' determines the weight given to the N-gram language model, while 'beam_beta' is a penalty term that accounts for sequence length in the scores. A larger 'beam_alpha' places more emphasis on the language model and less on the acoustic model. Negative values for 'beam_beta' penalize longer sequences, encouraging the decoder to prefer shorter predictions. Conversely, positive values for 'beam_beta' favor longer candidates.
37
-
38
- .. _train-ngram-lm:
39
-
40
- Train N-gram LM
41
- ===============
42
-
43
- The script to train an N-gram language model with KenLM can be found at:
44
- `scripts/asr_language_modeling/ngram_lm/train_kenlm.py <https://github.com/NVIDIA/NeMo/blob/stable/scripts/asr_language_modeling/ngram_lm/train_kenlm.py>`__.
45
-
46
- This script trains an N-gram language model with the KenLM library which can then be used with the beam search decoders on top of the ASR models. This script also supports both character-level and BPE-level encodings and models which are detected automatically from the model type.
47
-
48
-
49
- You can train the N-gram model using the following:
50
-
51
- .. code-block::
52
-
53
- python train_kenlm.py nemo_model_file=<path to the .nemo file of the model> \
54
- train_paths=<list of paths to the training text or JSON manifest files> \
55
- kenlm_bin_path=<path to the bin folder of KenLM library> \
56
- kenlm_model_file=<path to store the binary KenLM model> \
57
- ngram_length=<order of N-gram model> \
58
- preserve_arpa=true
59
-
60
- The `train_paths` parameter allows for various input types, such as a list of text files, JSON manifests, or directories, to be used as the training data.
61
- If the file's extension is anything other than `.json`, it assumes that data format is plain text. For plain text format, each line should contain one
62
- sample. For the JSON manifests, the file must contain JSON-formatted samples per each line like this:
63
-
64
- .. code-block::
65
-
66
- {"audio_filepath": "/data_path/file1.wav", "text": "The transcript of the audio file."}
67
-
68
- This code extracts the `text` field from each line to create the training text file. After the N-gram model is trained, it is stored at the path specified by `kenlm_model_file`.
69
-
70
- The following is the list of the arguments for the training script:
71
-
72
- +------------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------+
73
- | **Argument** | **Type** | **Default** | **Description** |
74
- +------------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------+
75
- | nemo_model_file | str | Required | The path to `.nemo` file of the ASR model, or name of a pretrained NeMo model to extract a tokenizer. |
76
- +------------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------+
77
- | train_paths | List[str] | Required | List of training files or folders. Files can be a plain text file or ".json" manifest or ".json.gz". |
78
- +------------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------+
79
- | kenlm_model_file | str | Required | The path to store the KenLM binary model file. |
80
- +------------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------+
81
- | kenlm_bin_path | str | Required | The path to the bin folder of KenLM. It is a folder named `bin` under where KenLM is installed. |
82
- +------------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------+
83
- | ngram_length** | int | Required | Specifies order of N-gram LM. |
84
- +------------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------+
85
- | ngram_prune | List[int] | [0] | List of thresholds to prune N-grams. Example: [0,0,1]. See Pruning section on the https://kheafield.com/code/kenlm/estimation |
86
- +------------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------+
87
- | cache_path | str | ``""`` | Cache path to save tokenized files. |
88
- +------------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------+
89
- | preserve_arpa | bool | ``False`` | Whether to preserve the intermediate ARPA file after construction of the BIN file. |
90
- +------------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------+
91
- | verbose | int | 1 | Verbose level. |
92
- +------------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------+
93
-
94
- ..note::
95
- It is recommended that you use 6 as the order of the N-gram model for BPE-based models. Higher orders may require re-compiling KenLM to support them.
96
-
97
- Evaluate by Beam Search Decoding and N-gram LM
98
- ==============================================
99
-
100
- NeMo's beam search decoders are capable of using the KenLM's N-gram models to find the best candidates.
101
- The script to evaluate an ASR model with beam search decoding and N-gram models can be found at
102
- `scripts/asr_language_modeling/ngram_lm/eval_beamsearch_ngram_ctc.py <https://github.com/NVIDIA/NeMo/blob/stable/scripts/asr_language_modeling/ngram_lm/eval_beamsearch_ngram_ctc.py>`__.
103
-
104
- This script has a large number of possible argument overrides; therefore, it is recommended that you use ``python eval_beamsearch_ngram_ctc.py --help`` to see the full list of arguments.
105
-
106
- You can evaluate an ASR model using the following:
107
-
108
- .. code-block::
109
-
110
- python eval_beamsearch_ngram_ctc.py nemo_model_file=<path to the .nemo file of the model> \
111
- input_manifest=<path to the evaluation JSON manifest file \
112
- kenlm_model_file=<path to the binary KenLM model> \
113
- beam_width=[<list of the beam widths, separated with commas>] \
114
- beam_alpha=[<list of the beam alphas, separated with commas>] \
115
- beam_beta=[<list of the beam betas, separated with commas>] \
116
- preds_output_folder=<optional folder to store the predictions> \
117
- probs_cache_file=null \
118
- decoding_mode=beamsearch_ngram \
119
- decoding_strategy="<Beam library such as beam, pyctcdecode or flashlight>"
120
-
121
- It can evaluate a model in the following three modes by setting the argument ``--decoding_mode``:
122
-
123
- * greedy: Just greedy decoding is done and no beam search decoding is performed.
124
- * beamsearch: The beam search decoding is done, but without using the N-gram language model. Final results are equivalent to setting the weight of LM (beam_beta) to zero.
125
- * beamsearch_ngram: The beam search decoding is done with N-gram LM.
126
-
127
- In ``beamsearch`` mode, the evaluation is performed using beam search decoding without any language model. The performance is reported in terms of Word Error Rate (WER) and Character Error Rate (CER). Moreover, when the best candidate is selected among the candidates, it is also reported as the best WER/CER. This can serve as an indicator of the quality of the predicted candidates.
128
-
129
-
130
- The script initially loads the ASR model and predicts the outputs of the model's encoder as log probabilities. This part is computed in batches on a device specified by --device, which can be either a CPU (`--device=cpu`) or a single GPU (`--device=cuda:0`).
131
- The batch size for this part is specified by ``--acoustic_batch_size``. Using the largest feasible batch size can speed up the calculation of log probabilities. Additionally, you can use `--use_amp` to accelerate the calculation and allow for larger --acoustic_batch_size values.
132
- Currently, multi-GPU support is not available for calculating log probabilities. However, using ``--probs_cache_file`` can help. This option stores the log probabilities produced by the model’s encoder in a pickle file, allowing you to skip the first step in future runs.
133
-
134
- The following is the list of the important arguments for the evaluation script:
135
-
136
- +--------------------------------------+----------+------------------+-------------------------------------------------------------------------+
137
- | **Argument** | **Type** | **Default** | **Description** |
138
- +--------------------------------------+----------+------------------+-------------------------------------------------------------------------+
139
- | nemo_model_file | str | Required | The path of the `.nemo` file of the ASR model to extract the tokenizer. |
140
- +--------------------------------------+----------+------------------+-------------------------------------------------------------------------+
141
- | input_manifest | str | Required | Path to the training file, it can be a text file or JSON manifest. |
142
- +--------------------------------------+----------+------------------+-------------------------------------------------------------------------+
143
- | kenlm_model_file | str | Required | The path to store the KenLM binary model file. |
144
- +--------------------------------------+----------+------------------+-------------------------------------------------------------------------+
145
- | preds_output_folder | str | None | The path to an optional folder to store the predictions. |
146
- +--------------------------------------+----------+------------------+-------------------------------------------------------------------------+
147
- | probs_cache_file | str | None | The cache file for storing the outputs of the model. |
148
- +--------------------------------------+----------+------------------+-------------------------------------------------------------------------+
149
- | acoustic_batch_size | int | 16 | The batch size to calculate log probabilities. |
150
- +--------------------------------------+----------+------------------+-------------------------------------------------------------------------+
151
- | use_amp | bool | False | Whether to use AMP if available to calculate log probabilities. |
152
- +--------------------------------------+----------+------------------+-------------------------------------------------------------------------+
153
- | device | str | cuda | The device to load the model onto to calculate log probabilities. |
154
- | | | | It can `cpu`, `cuda`, `cuda:0`, `cuda:1`, ... |
155
- +--------------------------------------+----------+------------------+-------------------------------------------------------------------------+
156
- | decoding_mode | str | beamsearch_ngram | The decoding scheme to be used for evaluation. |
157
- +--------------------------------------+----------+------------------+-------------------------------------------------------------------------+
158
- | beam_width | float | Required | List of the width or list of the widths of the beam search decoding. |
159
- +--------------------------------------+----------+------------------+-------------------------------------------------------------------------+
160
- | beam_alpha | float | Required | List of the alpha parameter for the beam search decoding. |
161
- +--------------------------------------+----------+------------------+-------------------------------------------------------------------------+
162
- | beam_beta | float | Required | List of the beta parameter for the beam search decoding. |
163
- +--------------------------------------+----------+------------------+-------------------------------------------------------------------------+
164
- | beam_batch_size | int | 128 | The batch size to be used for beam search decoding. |
165
- | | | | Larger batch size can be a little faster, but uses larger memory. |
166
- +--------------------------------------+----------+------------------+-------------------------------------------------------------------------+
167
- | decoding_strategy | str | beam | String argument for type of decoding strategy for the model. |
168
- +--------------------------------------+----------+------------------+-------------------------------------------------------------------------+
169
- | decoding | Dict | BeamCTC | Subdict of beam search configs. Values found via |
170
- | | Config | InferConfig | python eval_beamsearch_ngram_ctc.py --help |
171
- +--------------------------------------+----------+------------------+-------------------------------------------------------------------------+
172
- | text_processing.do_lowercase | bool | ``False`` | Whether to make the training text all lower case. |
173
- +--------------------------------------+----------+------------------+-------------------------------------------------------------------------+
174
- | text_processing.punctuation_marks | str | ``""`` | String with punctuation marks to process. Example: ".\,?" |
175
- +--------------------------------------+----------+------------------+-------------------------------------------------------------------------+
176
- | text_processing.rm_punctuation | bool | ``False`` | Whether to remove punctuation marks from text. |
177
- +--------------------------------------+----------+------------------+-------------------------------------------------------------------------+
178
- | text_processing.separate_punctuation | bool | ``True`` | Whether to separate punctuation with the previous word by space. |
179
- +--------------------------------------+----------+------------------+-------------------------------------------------------------------------+
180
-
181
- The width of the beam search (``--beam_width``) specifies the number of top candidates or predictions the beam search decoder will consider. Larger beam widths result in more accurate but slower predictions.
182
-
183
- .. note::
184
-
185
- The ``eval_beamsearch_ngram_ctc.py`` script contains the entire subconfig used for CTC Beam Decoding.
186
- Therefore it is possible to forward arguments for various beam search libraries such as ``flashlight``
187
- and ``pyctcdecode`` via the ``decoding`` subconfig.
188
-
189
- To learn more about evaluating the ASR models with N-gram LM, refer to the tutorial here: Offline ASR Inference with Beam Search and External Language Model Rescoring
190
- `Offline ASR Inference with Beam Search and External Language Model Rescoring <https://colab.research.google.com/github/NVIDIA/NeMo/blob/stable/tutorials/asr/Offline_ASR.ipynb>`_
191
-
192
- Beam Search Engines
193
- -------------------
194
-
195
- NeMo ASR CTC supports multiple beam search engines for decoding. The default engine is beam, which is the OpenSeq2Seq decoding library.
196
-
197
- OpenSeq2Seq (``beam``)
198
- ~~~~~~~~~~~~~~~~~~~~~~
199
-
200
- CPU-based beam search engine that is quite efficient and supports char and subword models. It requires a character/subword
201
- KenLM model to be provided.
202
-
203
- The config for this decoding library is described above.
204
-
205
- Flashlight (``flashlight``)
206
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
207
-
208
- Flashlight is a C++ library for ASR decoding provided at `https://github.com/flashlight/flashlight <https://github.com/flashlight/flashlight>`_. It is a CPU- and CUDA-based beam search engine that is quite efficient and supports char and subword models. It requires an ARPA KenLM file.
209
-
210
- It supports several advanced features, such as lexicon-based decoding, lexicon-free decoding, beam pruning threshold, and more.
211
-
212
- .. code-block:: python
213
-
214
- @dataclass
215
- class FlashlightConfig:
216
- lexicon_path: Optional[str] = None
217
- boost_path: Optional[str] = None
218
- beam_size_token: int = 16
219
- beam_threshold: float = 20.0
220
- unk_weight: float = -math.inf
221
- sil_weight: float = 0.0
222
-
223
- .. code-block::
224
-
225
- # Lexicon-based decoding
226
- python eval_beamsearch_ngram_ctc.py ... \
227
- decoding_strategy="flashlight" \
228
- decoding.beam.flashlight_cfg.lexicon_path='/path/to/lexicon.lexicon' \
229
- decoding.beam.flashlight_cfg.beam_size_token = 32 \
230
- decoding.beam.flashlight_cfg.beam_threshold = 25.0
231
-
232
- # Lexicon-free decoding
233
- python eval_beamsearch_ngram_ctc.py ... \
234
- decoding_strategy="flashlight" \
235
- decoding.beam.flashlight_cfg.beam_size_token = 32 \
236
- decoding.beam.flashlight_cfg.beam_threshold = 25.0
237
-
238
- PyCTCDecode (``pyctcdecode``)
239
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
240
-
241
- PyCTCDecode is a Python library for ASR decoding provided at `https://github.com/kensho-technologies/pyctcdecode <https://github.com/kensho-technologies/pyctcdecode>`_. It is a CPU-based beam search engine that is somewhat efficient for a pure Python library, and supports char and subword models. It requires a character/subword KenLM ARPA / BINARY model to be provided.
242
-
243
-
244
- It has advanced features, such as word boosting, which can be useful for transcript customization.
245
-
246
- .. code-block:: python
247
-
248
- @dataclass
249
- class PyCTCDecodeConfig:
250
- beam_prune_logp: float = -10.0
251
- token_min_logp: float = -5.0
252
- prune_history: bool = False
253
- hotwords: Optional[List[str]] = None
254
- hotword_weight: float = 10.0
255
-
256
- .. code-block::
257
-
258
- # PyCTCDecoding
259
- python eval_beamsearch_ngram_ctc.py ... \
260
- decoding_strategy="pyctcdecode" \
261
- decoding.beam.pyctcdecode_cfg.beam_prune_logp = -10. \
262
- decoding.beam.pyctcdecode_cfg.token_min_logp = -5. \
263
- decoding.beam.pyctcdecode_cfg.hotwords=[<List of str words>] \
264
- decoding.beam.pyctcdecode_cfg.hotword_weight=10.0
265
-
266
-
267
- Hyperparameter Grid Search
268
- --------------------------
269
-
270
- Beam search decoding with N-gram LM has three main hyperparameters: `beam_width`, `beam_alpha`, and `beam_beta`.
271
- The accuracy of the model is dependent on the values of these parameters, specifically, beam_alpha and beam_beta. To perform grid search, you can specify a single value or a list of values for each of these parameters. In this case, it would perform the beam search decoding on all combinations of the three hyperparameters.
272
- For example, the following set of parameters would result in 212=4 beam search decodings:
273
-
274
- .. code-block::
275
-
276
- python eval_beamsearch_ngram_ctc.py ... \
277
- beam_width=[64,128] \
278
- beam_alpha=[1.0] \
279
- beam_beta=[1.0,0.5]
280
-
281
-
282
- Beam Search ngram Decoding for Transducer Models (RNNT and HAT)
283
- ===============================================================
284
-
285
- You can also find a similar script to evaluate an RNNT/HAT model with beam search decoding and N-gram models at:
286
- `scripts/asr_language_modeling/ngram_lm/eval_beamsearch_ngram_transducer.py <https://github.com/NVIDIA/NeMo/blob/stable/scripts/asr_language_modeling/ngram_lm/eval_beamsearch_ngram_transducer.py>`_
287
-
288
- .. code-block::
289
-
290
- python eval_beamsearch_ngram_transducer.py nemo_model_file=<path to the .nemo file of the model> \
291
- input_manifest=<path to the evaluation JSON manifest file \
292
- kenlm_model_file=<path to the binary KenLM model> \
293
- beam_width=[<list of the beam widths, separated with commas>] \
294
- beam_alpha=[<list of the beam alphas, separated with commas>] \
295
- preds_output_folder=<optional folder to store the predictions> \
296
- probs_cache_file=null \
297
- decoding_strategy=<greedy_batch or maes decoding>
298
- maes_prefix_alpha=[<list of the maes prefix alphas, separated with commas>] \
299
- maes_expansion_gamma=[<list of the maes expansion gammas, separated with commas>] \
300
- hat_subtract_ilm=<in case of HAT model: subtract internal LM or not (True/False)> \
301
- hat_ilm_weight=[<in case of HAT model: list of the HAT internal LM weights, separated with commas>] \
302
-
303
-
304
-
305
- .. _neural_rescoring:
306
-
307
- ****************
308
- Neural Rescoring
309
- ****************
310
-
311
- When using the neural rescoring approach, a neural network is used to score candidates. A candidate is the text transcript predicted by the ASR model’s decoder. The top K candidates produced by beam search decoding (with a beam width of K) are given to a neural language model for ranking. The language model assigns a score to each candidate, which is usually combined with the scores from beam search decoding to produce the final scores and rankings.
312
-
313
- Train Neural Rescorer
314
- =====================
315
-
316
- An example script to train such a language model with Transformer can be found at `examples/nlp/language_modeling/transformer_lm.py <https://github.com/NVIDIA/NeMo/blob/stable/examples/nlp/language_modeling/transformer_lm.py>`__.
317
- It trains a ``TransformerLMModel`` which can be used as a neural rescorer for an ASR system. Full documentation on language models training is available at:
318
-
319
- :doc:`../nlp/language_modeling`
320
-
321
- You can also use a pretrained language model from the Hugging Face library, such as Transformer-XL and GPT, instead of training your model.
322
- Models like BERT and RoBERTa are not supported by this script because they are trained as Masked Language Models. As a result, they are not efficient or effective for scoring sentences out of the box.
323
-
324
-
325
- Evaluation
326
- ==========
327
-
328
- Given a trained TransformerLMModel `.nemo` file or a pretrained HF model, the script available at
329
- `scripts/asr_language_modeling/neural_rescorer/eval_neural_rescorer.py <https://github.com/NVIDIA/NeMo/blob/stable/scripts/asr_language_modeling/neural_rescorer/eval_neural_rescorer.py>`__
330
- can be used to re-score beams obtained with ASR model. You need the `.tsv` file containing the candidates produced
331
- by the acoustic model and the beam search decoding to use this script. The candidates can be the result of just the beam
332
- search decoding or the result of fusion with an N-gram LM. You can generate this file by specifying `--preds_output_folder` for
333
- `scripts/asr_language_modeling/ngram_lm/eval_beamsearch_ngram_ctc.py <https://github.com/NVIDIA/NeMo/blob/stable/scripts/asr_language_modeling/ngram_lm/eval_beamsearch_ngram_ctc.py>`__.
334
-
335
- The neural rescorer would rescore the beams/candidates by using two parameters of `rescorer_alpha` and `rescorer_beta`, as follows:
336
-
337
- .. code-block::
338
-
339
- final_score = beam_search_score + rescorer_alpha*neural_rescorer_score + rescorer_beta*seq_length
340
-
341
- The parameter `rescorer_alpha` specifies the importance placed on the neural rescorer model, while `rescorer_beta` is a penalty term that accounts for sequence length in the scores. These parameters have similar effects to `beam_alpha` and `beam_beta` in the beam search decoder and N-gram language model.
342
-
343
- Use the following steps to evaluate a neural LM:
344
-
345
- #. Obtain `.tsv` file with beams and their corresponding scores. Scores can be from a regular beam search decoder or
346
- in fusion with an N-gram LM scores. For a given beam size `beam_size` and a number of examples
347
- for evaluation `num_eval_examples`, it should contain (`num_eval_examples` x `beam_size`) lines of
348
- form `beam_candidate_text \t score`. This file can be generated by `scripts/asr_language_modeling/ngram_lm/eval_beamsearch_ngram_ctc.py <https://github.com/NVIDIA/NeMo/blob/stable/scripts/asr_language_modeling/ngram_lm/eval_beamsearch_ngram_ctc.py>`__
349
-
350
- #. Rescore the candidates by `scripts/asr_language_modeling/neural_rescorer/eval_neural_rescorer.py <https://github.com/NVIDIA/NeMo/blob/stable/scripts/asr_language_modeling/neural_rescorer/eval_neural_rescorer.py>`__.
351
-
352
- .. code-block::
353
-
354
- python eval_neural_rescorer.py
355
- --lm_model=[path to .nemo file of the LM or the name of a HF pretrained model]
356
- --beams_file=[path to beams .tsv file]
357
- --beam_size=[size of the beams]
358
- --eval_manifest=[path to eval manifest .json file]
359
- --batch_size=[batch size used for inference on the LM model]
360
- --alpha=[the value for the parameter rescorer_alpha]
361
- --beta=[the value for the parameter rescorer_beta]
362
- --scores_output_file=[the optional path to store the rescored candidates]
363
-
364
- The candidates, along with their new scores, are stored at the file specified by `--scores_output_file`.
365
-
366
- The following is the list of the arguments for the evaluation script:
367
-
368
- +---------------------+--------+------------------+-------------------------------------------------------------------------+
369
- | **Argument** |**Type**| **Default** | **Description** |
370
- +---------------------+--------+------------------+-------------------------------------------------------------------------+
371
- | lm_model | str | Required | The path of the '.nemo' file of an ASR model, or the name of a |
372
- | | | | Hugging Face pretrained model like 'transfo-xl-wt103' or 'gpt2'. |
373
- +---------------------+--------+------------------+-------------------------------------------------------------------------+
374
- | eval_manifest | str | Required | Path to the evaluation manifest file (.json manifest file). |
375
- +---------------------+--------+------------------+-------------------------------------------------------------------------+
376
- | beams_file | str | Required | Path to beams file (.tsv) containing the candidates and their scores. |
377
- +---------------------+--------+------------------+-------------------------------------------------------------------------+
378
- | beam_size | int | Required | The width of the beams (number of candidates) generated by the decoder. |
379
- +---------------------+--------+------------------+-------------------------------------------------------------------------+
380
- | alpha | float | None | The value for parameter rescorer_alpha |
381
- | | | | Not passing value would enable linear search for rescorer_alpha. |
382
- +---------------------+--------+------------------+-------------------------------------------------------------------------+
383
- | beta | float | None | The value for parameter rescorer_beta |
384
- | | | | Not passing value would enable linear search for rescorer_beta. |
385
- +---------------------+--------+------------------+-------------------------------------------------------------------------+
386
- | batch_size | int | 16 | The batch size used to calculate the scores. |
387
- +---------------------+--------+------------------+-------------------------------------------------------------------------+
388
- | max_seq_length | int | 512 | Maximum sequence length (in tokens) for the input. |
389
- +---------------------+--------+------------------+-------------------------------------------------------------------------+
390
- | scores_output_file | str | None | The optional file to store the rescored beams. |
391
- +---------------------+--------+------------------+-------------------------------------------------------------------------+
392
- | use_amp | bool | ``False`` | Whether to use AMP if available calculate the scores. |
393
- +---------------------+--------+------------------+-------------------------------------------------------------------------+
394
- | device | str | cuda | The device to load LM model onto to calculate the scores |
395
- | | | | It can be 'cpu', 'cuda', 'cuda:0', 'cuda:1', ... |
396
- +---------------------+--------+------------------+-------------------------------------------------------------------------+
397
-
398
-
399
- Hyperparameter Linear Search
400
- ----------------------------
401
-
402
- The hyperparameter linear search script also supports linear search for parameters `alpha` and `beta`. If any of the two is not
403
- provided, a linear search is performed to find the best value for that parameter. When linear search is used, initially
404
- `beta` is set to zero and the best value for `alpha` is found, then `alpha` is fixed with
405
- that value and another linear search is done to find the best value for `beta`.
406
- If any of the of these two parameters is already specified, then search for that one is skipped. After each search for a
407
- parameter, the plot of WER% for different values of the parameter is also shown.
408
-
409
- It is recommended to first use the linear search for both parameters on a validation set by not providing any values for `--alpha` and `--beta`.
410
- Then check the WER curves and decide on the best values for each parameter. Finally, evaluate the best values on the test set.
411
-
412
-
413
- Word Boosting
414
- =============
415
-
416
- The Flashlight decoder supports word boosting during CTC decoding using a KenLM binary and corresponding lexicon. Word boosting only works in lexicon-decoding mode and does not function in lexicon-free mode. It allows you to bias the decoder for certain words by manually increasing or decreasing the probability of emitting specific words. This can be very helpful if you have uncommon or industry-specific terms that you want to ensure are transcribed correctly.
417
-
418
- For more information, go to `word boosting <https://docs.nvidia.com/deeplearning/riva/user-guide/docs/asr/asr-customizing.html#word-boosting>`__
419
-
420
- To use word boosting in NeMo, create a simple tab-separated text file. Each line should contain a word to be boosted, followed by a tab, and then the boosted score for that word.
421
-
422
- For example:
423
-
424
- .. code-block::
425
-
426
- nvidia 40
427
- geforce 50
428
- riva 80
429
- turing 30
430
- badword -100
431
-
432
- Positive scores boost words higher in the LM decoding step so they show up more frequently, whereas negative scores
433
- squelch words so they show up less frequently. The recommended range for the boost score is +/- 20 to 100.
434
-
435
- The boost file handles both in-vocabulary words and OOV words just fine, so you can specify both IV and OOV words with corresponding scores.
436
-
437
- You can then pass this file to your Flashlight config object during decoding:
438
-
439
- .. code-block::
440
-
441
- # Lexicon-based decoding
442
- python eval_beamsearch_ngram_ctc.py ... \
443
- decoding_strategy="flashlight" \
444
- decoding.beam.flashlight_cfg.lexicon_path='/path/to/lexicon.lexicon' \
445
- decoding.beam.flashlight_cfg.boost_path='/path/to/my_boost_file.boost' \
446
- decoding.beam.flashlight_cfg.beam_size_token = 32 \
447
- decoding.beam.flashlight_cfg.beam_threshold = 25.0
448
-
449
-
450
- Combine N-gram Language Models
451
- ==============================
452
-
453
- Before combining N-gram LMs, install the required OpenGrm NGram library using `scripts/installers/install_opengrm.sh <https://github.com/NVIDIA/NeMo/blob/stable/scripts/installers/install_opengrm.sh>`__.
454
- Alternatively, you can use Docker image `scripts/installers/Dockerfile.ngramtools <https://github.com/NVIDIA/NeMo/blob/stable/scripts/installers/Dockerfile.ngramtools>`__ with all the necessary dependencies.
455
-
456
- Alternatively, you can use the Docker image at:
457
- `scripts/asr_language_modeling/ngram_lm/ngram_merge.py <https://github.com/NVIDIA/NeMo/blob/stable/scripts/asr_language_modeling/ngram_lm/ngram_merge.py>`__, which includes all the necessary dependencies.
458
-
459
- This script interpolates two ARPA N-gram language models and creates a KenLM binary file that can be used with the beam search decoders on top of ASR models.
460
- You can specify weights (`--alpha` and `--beta`) for each of the models (`--ngram_a` and `--ngram_b`) correspondingly: `alpha` * `ngram_a` + `beta` * `ngram_b`.
461
- This script supports both character level and BPE level encodings and models which are detected automatically from the type of the model.
462
-
463
- To combine two N-gram models, you can use the following command:
464
-
465
- .. code-block::
466
-
467
- python ngram_merge.py --kenlm_bin_path <path to the bin folder of KenLM library> \
468
- --ngram_bin_path <path to the bin folder of OpenGrm Ngram library> \
469
- --arpa_a <path to the ARPA N-gram model file A> \
470
- --alpha <weight of N-gram model A> \
471
- --arpa_b <path to the ARPA N-gram model file B> \
472
- --beta <weight of N-gram model B> \
473
- --out_path <path to folder to store the output files>
474
-
475
-
476
-
477
- If you provide `--test_file` and `--nemo_model_file`, This script supports both character-level and BPE-level encodings and models, which are detected automatically based on the type of the model.
478
- Note, the result of each step during the process is cached in the temporary file in the `--out_path`, to speed up further run.
479
- You can use the `--force` flag to discard the cache and recalculate everything from scratch.
480
-
481
- .. code-block::
482
-
483
- python ngram_merge.py --kenlm_bin_path <path to the bin folder of KenLM library> \
484
- --ngram_bin_path <path to the bin folder of OpenGrm Ngram library> \
485
- --arpa_a <path to the ARPA N-gram model file A> \
486
- --alpha <weight of N-gram model A> \
487
- --arpa_b <path to the ARPA N-gram model file B> \
488
- --beta <weight of N-gram model B> \
489
- --out_path <path to folder to store the output files>
490
- --nemo_model_file <path to the .nemo file of the model> \
491
- --test_file <path to the test file> \
492
- --symbols <path to symbols (.syms) file> \
493
- --force <flag to recalculate and rewrite all cached files>
494
-
495
-
496
- The following is the list of the arguments for the opengrm script:
497
-
498
- +----------------------+--------+------------------+-----------------------------------------------------------------------------------------------------------------+
499
- | **Argument** |**Type**| **Default** | **Description** |
500
- +----------------------+--------+------------------+-----------------------------------------------------------------------------------------------------------------+
501
- | kenlm_bin_path | str | Required | The path to the bin folder of KenLM library. It is a folder named `bin` under where KenLM is installed. |
502
- +----------------------+--------+------------------+-----------------------------------------------------------------------------------------------------------------+
503
- | ngram_bin_path | str | Required | The path to the bin folder of OpenGrm Ngram. It is a folder named `bin` under where OpenGrm Ngram is installed. |
504
- +----------------------+--------+------------------+-----------------------------------------------------------------------------------------------------------------+
505
- | arpa_a | str | Required | Path to the ARPA N-gram model file A. |
506
- +----------------------+--------+------------------+-----------------------------------------------------------------------------------------------------------------+
507
- | alpha | float | Required | Weight of N-gram model A. |
508
- +----------------------+--------+------------------+-----------------------------------------------------------------------------------------------------------------+
509
- | arpa_b | int | Required | Path to the ARPA N-gram model file B. |
510
- +----------------------+--------+------------------+-----------------------------------------------------------------------------------------------------------------+
511
- | beta | float | Required | Weight of N-gram model B. |
512
- +----------------------+--------+------------------+-----------------------------------------------------------------------------------------------------------------+
513
- | out_path | str | Required | Path for writing temporary and resulting files. |
514
- +----------------------+--------+------------------+-----------------------------------------------------------------------------------------------------------------+
515
- | test_file | str | None | Path to test file to count perplexity if provided. |
516
- +----------------------+--------+------------------+-----------------------------------------------------------------------------------------------------------------+
517
- | symbols | str | None | Path to symbols (.syms) file. Could be calculated if it is not provided. |
518
- +----------------------+--------+------------------+-----------------------------------------------------------------------------------------------------------------+
519
- | nemo_model_file | str | None | The path to '.nemo' file of the ASR model, or name of a pretrained NeMo model. |
520
- +----------------------+--------+------------------+-----------------------------------------------------------------------------------------------------------------+
521
- | force | bool | ``False`` | Whether to recompile and rewrite all files. |
522
- +----------------------+--------+------------------+-----------------------------------------------------------------------------------------------------------------+
523
-
524
- .. _wfst-ctc-decoding:
525
-
526
- WFST CTC decoding
527
- =================
528
- Weighted Finite-State Transducers (WFST) are finite-state machines with input and output symbols on each transition and some weight element of a semiring. WFSTs can act as N-gram LMs in a special type of LM-forced beam search, called WFST decoding.
529
-
530
- .. note::
531
-
532
- More precisely, WFST decoding is more of a greedy N-depth search with LM.
533
- Thus, it is asymptotically worse than conventional beam search decoding algorithms, but faster.
534
-
535
- **WARNING**
536
- At the moment, NeMo supports WFST decoding only for CTC models and word-based LMs.
537
-
538
- To run WFST decoding in NeMo, one needs to provide a NeMo ASR model and either an ARPA LM or a WFST LM (advanced). An ARPA LM can be built from source text with KenLM as follows: ``<kenlm_bin_path>/lmplz -o <ngram_length> --arpa <out_arpa_path> --prune <ngram_prune>``.
539
-
540
- The script to evaluate an ASR model with WFST decoding and N-gram models can be found at
541
- `scripts/asr_language_modeling/ngram_lm/eval_wfst_decoding_ctc.py
542
- <https://github.com/NVIDIA/NeMo/blob/stable/scripts/asr_language_modeling/ngram_lm/eval_wfst_decoding_ctc.py>`__.
543
-
544
- This script has a large number of possible argument overrides, therefore it is advised to use ``python eval_wfst_decoding_ctc.py --help`` to see the full list of arguments.
545
-
546
- You may evaluate an ASR model as the following:
547
-
548
- .. code-block::
549
-
550
- python eval_wfst_decoding_ctc.py nemo_model_file=<path to the .nemo file of the model> \
551
- input_manifest=<path to the evaluation JSON manifest file> \
552
- arpa_model_file=<path to the ARPA LM model> \
553
- decoding_wfst_file=<path to the decoding WFST file> \
554
- beam_width=[<list of the beam widths, separated with commas>] \
555
- lm_weight=[<list of the LM weight multipliers, separated with commas>] \
556
- open_vocabulary_decoding=<whether to use open vocabulary mode for WFST decoding> \
557
- decoding_mode=<decoding mode, affects output. Usually "nbest"> \
558
- decoding_search_type=<WFST decoding library. Usually "riva"> \
559
- preds_output_folder=<optional folder to store the predictions> \
560
- probs_cache_file=null
561
-
562
- .. note::
563
-
564
- Since WFST decoding is LM-forced (the search goes over the WIDEST graph), only word sequences accepted by the WFST can appear in the decoding results.
565
- To circumvent this restriction, one can pass ``open_vocabulary_decoding=true`` (experimental feature).
566
-
567
-
568
- Quick start example
569
- -------------------
570
-
571
- .. code-block::
572
-
573
- wget -O - https://www.openslr.org/resources/11/3-gram.pruned.1e-7.arpa.gz | \
574
- gunzip -c | tr '[:upper:]' '[:lower:]' > 3-gram.pruned.1e-7.arpa && \
575
- python eval_wfst_decoding_ctc.py nemo_model_file="stt_en_conformer_ctc_small_ls" \
576
- input_manifest="<data_dir>/Librispeech/test_other.json" \
577
- arpa_model_file="3-gram.pruned.1e-7.arpa" \
578
- decoding_wfst_file="3-gram.pruned.1e-7.fst" \
579
- beam_width=[8] \
580
- lm_weight=[0.5,0.6,0.7,0.8,0.9]
581
-
582
- .. note::
583
-
584
- Building a decoding WFST is a long process, so it is better to provide a ``decoding_wfst_file`` path even if you don't have it.
585
- This way, the decoding WFST will be buffered to the specified file path and there will be no need to re-build it on the next run.
586
-
587
-
588
- ***************************************************
589
- Context-biasing (Word Boosting) without External LM
590
- ***************************************************
591
-
592
- NeMo toolkit supports a fast context-biasing method for CTC and Transducer (RNN-T) ASR models with CTC-based Word Spotter.
593
- The method involves decoding CTC log probabilities with a context graph built for words and phrases from the context-biasing list.
594
- The spotted context-biasing candidates (with their scores and time intervals) are compared by scores with words from the greedy CTC decoding results to improve recognition accuracy and pretend false accepts of context-biasing.
595
-
596
- A Hybrid Transducer-CTC model (a shared encoder trained together with CTC and Transducer output heads) enables the use of the CTC-WS method for the Transducer model.
597
- Context-biasing candidates obtained by CTC-WS are also filtered by the scores with greedy CTC predictions and then merged with greedy Transducer results.
598
-
599
- Scheme of the CTC-WS method:
600
-
601
- .. image:: https://github.com/NVIDIA/NeMo/releases/download/v1.22.0/asset-post-v1.22.0-ctcws_scheme_1.png
602
- :align: center
603
- :alt: CTC-WS scheme
604
- :width: 80%
605
-
606
- High-level overview of the context-biasing words replacement with CTC-WS method:
607
-
608
- .. image:: https://github.com/NVIDIA/NeMo/releases/download/v1.22.0/asset-post-v1.22.0-ctcws_scheme_2.png
609
- :align: center
610
- :alt: CTC-WS high level overview
611
- :width: 80%
612
-
613
- More details about CTC-WS context-biasing can be found in the `tutorial <https://github.com/NVIDIA/NeMo/tree/main/tutorials/asr/ASR_Context_Biasing.ipynb>`__.
614
-
615
- To use CTC-WS context-biasing, you need to create a context-biasing text file that contains words/phrases to be boosted, with its transcriptions (spellings) separated by underscore.
616
- Multiple transcriptions can be useful for abbreviations ("gpu" -> "g p u"), compound words ("nvlink" -> "nv link"),
617
- or words with common mistakes in the case of our ASR model ("nvidia" -> "n video").
618
-
619
- Example of the context-biasing file:
620
-
621
- .. code-block::
622
-
623
- nvidia_nvidia
624
- omniverse_omniverse
625
- gpu_gpu_g p u
626
- dgx_dgx_d g x_d gx
627
- nvlink_nvlink_nv link
628
- ray tracing_ray tracing
629
-
630
- The main script for CTC-WS context-biasing in NeMo is:
631
-
632
- .. code-block::
633
-
634
- {NEMO_DIR_PATH}/scripts/asr_context_biasing/eval_greedy_decoding_with_context_biasing.py
635
-
636
- Context-biasing is managed by ``apply_context_biasing`` parameter [true or false].
637
- Other important context-biasing parameters are:
638
-
639
- * ``beam_threshold`` - threshold for CTC-WS beam pruning.
640
- * ``context_score`` - per token weight for context biasing.
641
- * ``ctc_ali_token_weight`` - per token weight for CTC alignment (prevents false acceptances of context-biasing words).
642
-
643
- All the context-biasing parameters are selected according to the default values in the script.
644
- You can tune them according to your data and ASR model (list all the values in the [] separated by commas)
645
- for example: ``beam_threshold=[7.0,8.0,9.0]``, ``context_score=[3.0,4.0,5.0]``, ``ctc_ali_token_weight=[0.5,0.6,0.7]``.
646
- The script will run the recognition with all the combinations of the parameters and will select the best one based on WER value.
647
-
648
- .. code-block::
649
-
650
- # Context-biasing with the CTC-WS method for CTC ASR model
651
- python {NEMO_DIR_PATH}/scripts/asr_context_biasing/eval_greedy_decoding_with_context_biasing.py \
652
- nemo_model_file={ctc_model_name} \
653
- input_manifest={test_nemo_manifest} \
654
- preds_output_folder={exp_dir} \
655
- decoder_type="ctc" \
656
- acoustic_batch_size=64 \
657
- apply_context_biasing=true \
658
- context_file={cb_list_file_modified} \
659
- beam_threshold=[7.0] \
660
- context_score=[3.0] \
661
- ctc_ali_token_weight=[0.5]
662
-
663
- To use Transducer head of the Hybrid Transducer-CTC model, you need to set ``decoder_type=rnnt``.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
NeMo-2.2.0/docs/source/asr/configs.rst DELETED
@@ -1,1122 +0,0 @@
1
- NeMo ASR Configuration Files
2
- ============================
3
-
4
- This section describes the NeMo configuration file setup that is specific to models in the ASR collection. For general information
5
- about how to set up and run experiments that is common to all NeMo models (e.g. Experiment Manager and PyTorch Lightning trainer
6
- parameters), see the :doc:`../core/core` section.
7
-
8
- The model section of the NeMo ASR configuration files generally requires information about the dataset(s) being used, the preprocessor
9
- for audio files, parameters for any augmentation being performed, as well as the model architecture specification. The sections on
10
- this page cover each of these in more detail.
11
-
12
- Example configuration files for all of the NeMo ASR scripts can be found in the
13
- `config directory of the examples <https://github.com/NVIDIA/NeMo/tree/stable/examples/asr/conf>`_.
14
-
15
-
16
- Dataset Configuration
17
- ---------------------
18
-
19
- Training, validation, and test parameters are specified using the ``train_ds``, ``validation_ds``, and
20
- ``test_ds`` sections in the configuration file, respectively. Depending on the task, there may be arguments specifying the sample rate
21
- of the audio files, the vocabulary of the dataset (for character prediction), whether or not to shuffle the dataset, and so on. You may
22
- also decide to leave fields such as the ``manifest_filepath`` blank, to be specified via the command-line at runtime.
23
-
24
- Any initialization parameter that is accepted for the Dataset class used in the experiment can be set in the config file.
25
- Refer to the `Datasets <./api.html#Datasets>`__ section of the API for a list of Datasets and their respective parameters.
26
-
27
- An example ASR train and validation configuration should look similar to the following:
28
-
29
- .. code-block:: yaml
30
-
31
- # Specified at the beginning of the config file
32
- labels: &labels [" ", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
33
- "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "'"]
34
-
35
- model:
36
- train_ds:
37
- manifest_filepath: ???
38
- sample_rate: 16000
39
- labels: *labels # Uses the labels above
40
- batch_size: 32
41
- trim_silence: True
42
- max_duration: 16.7
43
- shuffle: True
44
- num_workers: 8
45
- pin_memory: true
46
- # tarred datasets
47
- is_tarred: false # If set to true, uses the tarred version of the Dataset
48
- tarred_audio_filepaths: null # Not used if is_tarred is false
49
- shuffle_n: 2048 # Not used if is_tarred is false
50
- # bucketing params
51
- bucketing_strategy: "synced_randomized"
52
- bucketing_batch_size: null
53
- bucketing_weights: null
54
-
55
- validation_ds:
56
- manifest_filepath: ???
57
- sample_rate: 16000
58
- labels: *labels # Uses the labels above
59
- batch_size: 32
60
- shuffle: False # No need to shuffle the validation data
61
- num_workers: 8
62
- pin_memory: true
63
-
64
- There are two ways to test/validate on more than one manifest:
65
-
66
- - Specify a list in the `manifest_filepath` field. Results will be reported for each, the first one being used for overall loss / WER (specify `val_dl_idx` if you wish to change that). In this case, all manifests will share configuration parameters.
67
- - Use the ds_item key and pass a list of config objects to it. This allows you to use differently configured datasets for validation, e.g.
68
-
69
- .. code-block:: yaml
70
-
71
- model:
72
- validation_ds:
73
- ds_item:
74
- - name: dataset1
75
- manifest_filepath: ???
76
- # Config parameters for dataset1
77
- ...
78
- - name: dataset2
79
- manifest_filepath: ???
80
- # Config parameters for dataset2
81
- ...
82
-
83
- By default, dataloaders are set up when the model is instantiated. However, dataloader setup can be deferred to
84
- model's `setup()` method by setting ``defer_setup`` in the configuration.
85
-
86
- For example, training data setup can be deferred as follows:
87
-
88
- .. code-block:: yaml
89
-
90
- model:
91
- train_ds:
92
- # Configure training data as usual
93
- ...
94
- # Defer train dataloader setup from `__init__` to `setup`
95
- defer_setup: true
96
-
97
-
98
- Preprocessor Configuration
99
- --------------------------
100
-
101
- If you are loading audio files for your experiment, you will likely want to use a preprocessor to convert from the
102
- raw audio signal to features (e.g. mel-spectrogram or MFCC). The ``preprocessor`` section of the config specifies the audio
103
- preprocessor to be used via the ``_target_`` field, as well as any initialization parameters for that preprocessor.
104
-
105
- An example of specifying a preprocessor is as follows:
106
-
107
- .. code-block:: yaml
108
-
109
- model:
110
- ...
111
- preprocessor:
112
- # _target_ is the audio preprocessor module you want to use
113
- _target_: nemo.collections.asr.modules.AudioToMelSpectrogramPreprocessor
114
- normalize: "per_feature"
115
- window_size: 0.02
116
- ...
117
- # Other parameters for the preprocessor
118
-
119
- Refer to the `Audio Preprocessors <./api.html#Audio Preprocessors>`__ API section for the preprocessor options, expected arguments,
120
- and defaults.
121
-
122
- Augmentation Configurations
123
- ---------------------------
124
-
125
- There are a few on-the-fly spectrogram augmentation options for NeMo ASR, which can be specified by the
126
- configuration file using a ``spec_augment`` section.
127
-
128
- For example, there are options for `Cutout <https://arxiv.org/abs/1708.04552>`_ and
129
- `SpecAugment <https://arxiv.org/abs/1904.08779>`_ available via the ``SpectrogramAugmentation`` module.
130
-
131
- The following example sets up both ``Cutout`` (via the ``rect_*`` parameters) and ``SpecAugment`` (via the ``freq_*``
132
- and ``time_*`` parameters).
133
-
134
- .. code-block:: yaml
135
-
136
- model:
137
- ...
138
- spec_augment:
139
- _target_: nemo.collections.asr.modules.SpectrogramAugmentation
140
- # Cutout parameters
141
- rect_masks: 5 # Number of rectangles to cut from any given spectrogram
142
- rect_freq: 50 # Max cut of size 50 along the frequency dimension
143
- rect_time: 120 # Max cut of size 120 along the time dimension
144
- # SpecAugment parameters
145
- freq_masks: 2 # Cut two frequency bands
146
- freq_width: 15 # ... of width 15 at maximum
147
- time_masks: 5 # Cut out 10 time bands
148
- time_width: 25 # ... of width 25 at maximum
149
-
150
- You can use any combination of ``Cutout``, frequency/time ``SpecAugment``, or neither of them.
151
-
152
- With NeMo ASR, you can also add augmentation pipelines that can be used to simulate various kinds of noise
153
- added to audio in the channel. Augmentors in a pipeline are applied on the audio data read in the data layer. Online
154
- augmentors can be specified in the config file using an ``augmentor`` section in ``train_ds``. The following example
155
- adds an augmentation pipeline that first adds white noise to an audio sample with a probability of 0.5 and at a level
156
- randomly picked between -50 dB and -10 dB and then passes the resultant samples through a room impulse response randomly
157
- picked from the manifest file provided for ``impulse`` augmentation in the config file.
158
-
159
- .. code-block:: yaml
160
-
161
- model:
162
- ...
163
- train_ds:
164
- ...
165
- augmentor:
166
- white_noise:
167
- prob: 0.5
168
- min_level: -50
169
- max_level: -10
170
- impulse:
171
- prob: 0.3
172
- manifest_path: /path/to/impulse_manifest.json
173
-
174
- Refer to the `Audio Augmentors <./api.html#Audio Augmentors>`__ API section for more details.
175
-
176
- Tokenizer Configurations
177
- ------------------------
178
-
179
- Some models utilize sub-word encoding via an external tokenizer instead of explicitly defining their vocabulary.
180
-
181
- For such models, a ``tokenizer`` section is added to the model config. ASR models currently support two types of
182
- custom tokenizers:
183
-
184
- - Google Sentencepiece tokenizers (tokenizer type of ``bpe`` in the config)
185
- - HuggingFace WordPiece tokenizers (tokenizer type of ``wpe`` in the config)
186
- - Aggregate tokenizers ((tokenizer type of ``agg`` in the config), see below)
187
-
188
- In order to build custom tokenizers, refer to the ``ASR_with_Subword_Tokenization`` notebook available in the
189
- ASR tutorials directory.
190
-
191
- The following example sets up a ``SentencePiece Tokenizer`` at a path specified by the user:
192
-
193
- .. code-block:: yaml
194
-
195
- model:
196
- ...
197
- tokenizer:
198
- dir: "<path to the directory that contains the custom tokenizer files>"
199
- type: "bpe" # can be "bpe" or "wpe"
200
-
201
- The Aggregate (``agg``) tokenizer feature makes it possible to combine tokenizers in order to train multilingual
202
- models. The config file would look like this:
203
-
204
- .. code-block:: yaml
205
-
206
- model:
207
- ...
208
- tokenizer:
209
- type: "agg" # aggregate tokenizer
210
- langs:
211
- en:
212
- dir: "<path to the directory that contains the tokenizer files>"
213
- type: "bpe" # can be "bpe" or "wpe"
214
- es:
215
- dir: "<path to the directory that contains the tokenizer files>"
216
- type: "bpe" # can be "bpe" or "wpe"
217
-
218
- In the above config file, each language is associated with its own pre-trained tokenizer, which gets assigned
219
- a token id range in the order the tokenizers are listed. To train a multilingual model, one needs to populate the
220
- ``lang`` field in the manifest file, allowing the routing of each sample to the correct tokenizer. At inference time,
221
- the routing is done based on the inferred token id range.
222
-
223
- For models which utilize sub-word tokenization, we share the decoder module (``ConvASRDecoder``) with character tokenization models.
224
- All parameters are shared, but for models which utilize sub-word encoding, there are minor differences when setting up the config. For
225
- such models, the tokenizer is utilized to fill in the missing information when the model is constructed automatically.
226
-
227
- For example, a decoder config corresponding to a sub-word tokenization model should look similar to the following:
228
-
229
- .. code-block:: yaml
230
-
231
- model:
232
- ...
233
- decoder:
234
- _target_: nemo.collections.asr.modules.ConvASRDecoder
235
- feat_in: *enc_final
236
- num_classes: -1 # filled with vocabulary size from tokenizer at runtime
237
- vocabulary: [] # filled with vocabulary from tokenizer at runtime
238
-
239
-
240
- On-the-fly Code Switching
241
- -------------------------
242
-
243
- Nemo supports creating code-switched synthetic utterances on-the-fly during training/validation/testing. This allows you to create ASR models which
244
- support intra-utterance code switching. If you have Nemo formatted audio data on disk (either JSON manifests or tarred audio data), you
245
- can easily mix as many of these audio sources together as desired by adding some extra parameters to your `train_ds`, `validation_ds`, and `test_ds`.
246
-
247
- Please note that this allows you to mix any kind of audio sources together to create synthetic utterances which sample from all sources. The most
248
- common use case for this is blending different languages together to create a multilingual code-switched model, but you can also blend
249
- together different audio sources from the same languages (or language families), to create noise robust data, or mix fast and slow speech from the
250
- same language.
251
-
252
- For multilingual code-switched models, we recommend using AggTokenizer for your Tokenizer if mixing different languages.
253
-
254
- The following example shows how to mix 3 different languages: English (en), German (de), and Japanese (ja) added to the `train_ds` model block, however
255
- you can add similar logic to your `validation_ds` and `test_ds` blocks for on-the-fly code-switched validation and test data too. This example mixes
256
- together 3 languages, but you can use as many as you want. However, be advised that the more languages you add, the higher your `min_duration` and `max_duration`
257
- need to be set to ensure all languages are sampled into each synthetic utterance, and setting these hyperparameters higher will use more VRAM per mini-batch during
258
- training and evaluation.
259
-
260
- .. code-block:: yaml
261
-
262
- model:
263
- train_ds:
264
- manifest_filepath: [/path/to/EN/tarred_manifest.json, /path/to/DE/tarred_manifest.json, /path/to/JA/tarred_manifest.json]
265
- tarred_audio_filepaths: ['/path/to/EN/tars/audio__OP_0..511_CL_.tar', '/path/to/DE/tars/audio__OP_0..1023_CL_.tar', '/path/to/JA/tars/audio__OP_0..2047_CL_.tar']
266
- is_code_switched: true
267
- is_tarred: true
268
- shuffle: true
269
- code_switched: # add this block for code-switching
270
- min_duration: 12 # the minimum number of seconds for each synthetic code-switched utterance
271
- max_duration: 20 # the maximum number of seconds for each synthetic code-switched utterance
272
- min_monolingual: 0.3 # the minimum percentage of utterances which will be pure monolingual (0.3 = 30%)
273
- probs: [0.25, 0.5, 0.25] # the probability to sample each language (matches order of `language` above) if not provided, assumes uniform distribution
274
- force_monochannel: true # if your source data is multi-channel, then setting this to True will force the synthetic utterances to be mono-channel
275
- sampling_scales: 0.75 # allows you to down/up sample individual languages. Can set this as an array for individual languages, or a scalar for all languages
276
- seed: 123 # add a seed for replicability in future runs (highly useful for `validation_ds` and `test_ds`)
277
-
278
-
279
- Model Architecture Configurations
280
- ---------------------------------
281
-
282
- Each configuration file should describe the model architecture being used for the experiment. Models in the NeMo ASR collection need
283
- an ``encoder`` section and a ``decoder`` section, with the ``_target_`` field specifying the module to use for each.
284
-
285
- Here is the list of the parameters in the model section which are shared among most of the ASR models:
286
-
287
- +-------------------------+------------------+---------------------------------------------------------------------------------------------------------------+---------------------------------+
288
- | **Parameter** | **Datatype** | **Description** | **Supported Values** |
289
- +=========================+==================+===============================================================================================================+=================================+
290
- | :code:`log_prediction` | bool | Whether a random sample should be printed in the output at each step, along with its predicted transcript. | |
291
- +-------------------------+------------------+---------------------------------------------------------------------------------------------------------------+---------------------------------+
292
- | :code:`ctc_reduction` | string | Specifies the reduction type of CTC loss. Defaults to ``mean_batch`` which would take the average over the | :code:`none`, |
293
- | | | batch after taking the average over the length of each sample. | :code:`mean_batch` |
294
- | | | | :code:`mean`, :code:`sum` |
295
- +-------------------------+------------------+---------------------------------------------------------------------------------------------------------------+---------------------------------+
296
-
297
- The following sections go into more detail about the specific configurations of each model architecture.
298
-
299
- For more information about the ASR models, refer to the :doc:`Models <./models>` section.
300
-
301
- Jasper and QuartzNet
302
- ~~~~~~~~~~~~~~~~~~~~
303
-
304
- The `Jasper <./models.html#Jasper>`__ and `QuartzNet <./models.html#QuartzNet>`__ models are very similar, and as such the components in their
305
- configs are very similar as well.
306
-
307
- Both architectures use the ``ConvASREncoder`` for the ``encoder``, with parameters detailed in the table below. The encoder parameters
308
- include details about the Jasper/QuartzNet ``[BxR]`` encoder architecture, including how many blocks to use (``B``), how many times
309
- to repeat each sub-block (``R``), and the convolution parameters for each block.
310
-
311
- The number of blocks ``B`` is determined by the number of list elements under ``jasper`` minus the one prologue and two epilogue blocks.
312
- The number of sub-blocks ``R`` is determined by setting the ``repeat`` parameter.
313
-
314
- To use QuartzNet (which uses more compact time-channel separable convolutions) instead of Jasper, add :code:`separable: true` to all
315
- but the last block in the architecture.
316
-
317
- Change the parameter name ``jasper``.
318
-
319
- +-------------------------+------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------+
320
- | **Parameter** | **Datatype** | **Description** | **Supported Values** |
321
- +=========================+==================+===============================================================================================================+=====================================+
322
- | :code:`feat_in` | int | The number of input features. Should be equal to :code:`features` in the preprocessor parameters. | |
323
- +-------------------------+------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------+
324
- | :code:`activation` | string | Which activation function to use in the encoder. | :code:`hardtanh`, :code:`relu`, |
325
- | | | | :code:`selu`, :code:`swish` |
326
- +-------------------------+------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------+
327
- | :code:`conv_mask` | bool | Whether to use masked convolutions in the encoder. Defaults to ``true``. | |
328
- +-------------------------+------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------+
329
- | :code:`jasper` | | A list of blocks that specifies your encoder architecture. Each entry in this list represents one block in | |
330
- | | | the architecture and contains the parameters for that block, including convolution parameters, dropout, and | |
331
- | | | the number of times the block is repeated. Refer to the `Jasper <https://arxiv.org/pdf/1904.03288.pdf>`_ and | |
332
- | | | `QuartzNet <https://arxiv.org/pdf/1910.10261.pdf>`_ papers for details about specific model configurations. | |
333
- +-------------------------+------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------+
334
-
335
- A QuartzNet 15x5 (fifteen blocks, each sub-block repeated five times) encoder configuration should look similar to the following example:
336
-
337
- .. code-block:: yaml
338
-
339
- # Specified at the beginning of the file for convenience
340
- n_mels: &n_mels 64 # Used for both the preprocessor and encoder as number of input features
341
- repeat: &repeat 5 # R=5
342
- dropout: &dropout 0.0
343
- separable: &separable true # Set to true for QN. Set to false for Jasper.
344
-
345
- model:
346
- ...
347
- encoder:
348
- _target_: nemo.collections.asr.modules.ConvASREncoder
349
- feat_in: *n_mels # Should match "features" in the preprocessor.
350
- activation: relu
351
- conv_mask: true
352
-
353
- jasper: # This field name should be "jasper" for both types of models.
354
-
355
- # Prologue block
356
- - dilation: [1]
357
- dropout: *dropout
358
- filters: 256
359
- kernel: [33]
360
- repeat: 1 # Prologue block is not repeated.
361
- residual: false
362
- separable: *separable
363
- stride: [2]
364
-
365
- # Block 1
366
- - dilation: [1]
367
- dropout: *dropout
368
- filters: 256
369
- kernel: [33]
370
- repeat: *repeat
371
- residual: true
372
- separable: *separable
373
- stride: [1]
374
-
375
- ... # Entries for blocks 2~14
376
-
377
- # Block 15
378
- - dilation: [1]
379
- dropout: *dropout
380
- filters: 512
381
- kernel: [75]
382
- repeat: *repeat
383
- residual: true
384
- separable: *separable
385
- stride: [1]
386
-
387
- # Two epilogue blocks
388
- - dilation: [2]
389
- dropout: *dropout
390
- filters: 512
391
- kernel: [87]
392
- repeat: 1 # Epilogue blocks are not repeated
393
- residual: false
394
- separable: *separable
395
- stride: [1]
396
-
397
- - dilation: [1]
398
- dropout: *dropout
399
- filters: &enc_filters 1024
400
- kernel: [1]
401
- repeat: 1 # Epilogue blocks are not repeated
402
- residual: false
403
- stride: [1]
404
-
405
- Both Jasper and QuartzNet use the ``ConvASRDecoder`` as the decoder. The decoder parameters are detailed in the following table.
406
-
407
- +-------------------------+------------------+---------------------------------------------------------------------------------------------------------------+---------------------------------+
408
- | **Parameter** | **Datatype** | **Description** | **Supported Values** |
409
- +=========================+==================+===============================================================================================================+=================================+
410
- | :code:`feat_in` | int | The number of input features to the decoder. Should be equal to the number of filters in the last block of | |
411
- | | | the encoder. | |
412
- +-------------------------+------------------+---------------------------------------------------------------------------------------------------------------+---------------------------------+
413
- | :code:`vocabulary` | list | A list of the valid output characters for your model. For example, for an English dataset, this could be a | |
414
- | | | list of all lowercase letters, space, and apostrophe. | |
415
- +-------------------------+------------------+---------------------------------------------------------------------------------------------------------------+---------------------------------+
416
- | :code:`num_classes` | int | Number of output classes, i.e. the length of :code:`vocabulary`. | |
417
- +-------------------------+------------------+---------------------------------------------------------------------------------------------------------------+---------------------------------+
418
-
419
- For example, a decoder config corresponding to the encoder above should look similar to the following:
420
-
421
- .. code-block:: yaml
422
-
423
- model:
424
- ...
425
- decoder:
426
- _target_: nemo.collections.asr.modules.ConvASRDecoder
427
- feat_in: *enc_filters
428
- vocabulary: *labels
429
- num_classes: 28 # Length of the vocabulary list
430
-
431
- Citrinet
432
- ~~~~~~~~
433
-
434
- The `Citrinet <./models.html#Citrinet>`__ and `QuartzNet <./models.html#QuartzNet>`__ models are very similar, and as such the
435
- components in their configs are very similar as well. Citrinet utilizes Squeeze and Excitation, as well as sub-word tokenization, in
436
- contrast to QuartzNet. Depending on the dataset, we utilize different tokenizers. For Librispeech, we utilize the HuggingFace WordPiece
437
- tokenizer, and for all other datasets we utilize the Google Sentencepiece tokenizer - usually the ``unigram`` tokenizer type.
438
-
439
- Both architectures use the ``ConvASREncoder`` for the ``encoder``, with parameters detailed above. The encoder parameters include
440
- details about the Citrinet-C encoder architecture, including how many filters are used per channel (``C``). The Citrinet-C
441
- configuration is a shortform notation for Citrinet-21x5xC, such that ``B = 21`` and ``R = 5`` are the default and should generally
442
- not be changed.
443
-
444
- To use Citrinet instead of QuartzNet, refer to the ``citrinet_512.yaml`` configuration found inside the ``examples/asr/conf/citrinet``
445
- directory. Citrinet is primarily comprised of the same :class:`~nemo.collections.asr.parts.submodules.jasper.JasperBlock` as ``Jasper`` or
446
- ``QuartzNet``.
447
-
448
- While the configs for Citrinet and QuartzNet are similar, we note the additional flags used for Citrinet below. Refer to the
449
- ``JasperBlock`` documentation for the meaning of these arguments.
450
-
451
- +---------------------------+------------------+-----------------------------------------------------------------------------------------------------------+-----------------------------------+
452
- | **Parameter** | **Datatype** | **Description** | **Supported Values** |
453
- +===========================+==================+===========================================================================================================+===================================+
454
- | :code:`se` | bool | Whether to apply squeeze-and-excitation mechanism or not. | :code:`true` or :code:`false` |
455
- +---------------------------+------------------+-----------------------------------------------------------------------------------------------------------+-----------------------------------+
456
- | :code:`se_context_size` | int | SE context size. -1 means global context. | :code:`-1` or :code:`+ve int` |
457
- +---------------------------+------------------+-----------------------------------------------------------------------------------------------------------+-----------------------------------+
458
- | :code:`stride_last` | bool | Stride on the final repeated block or all repeated blocks. | :code:`true` or :code:`false` |
459
- +---------------------------+------------------+-----------------------------------------------------------------------------------------------------------+-----------------------------------+
460
- | :code:`residual_mode` | str | Type of residual branch to construct. | :code:`"add"` or |
461
- | | | Can be pointwise residual addition or pointwise strided residual attention | :code:`"stride_add"` |
462
- +---------------------------+------------------+-----------------------------------------------------------------------------------------------------------+-----------------------------------+
463
-
464
- A Citrinet-512 config should look similar to the following:
465
-
466
- .. code-block:: yaml
467
-
468
- model:
469
- ...
470
- # Specify some defaults across the entire model
471
- model_defaults:
472
- repeat: 5
473
- dropout: 0.1
474
- separable: true
475
- se: true
476
- se_context_size: -1
477
- ...
478
- encoder:
479
- _target_: nemo.collections.asr.modules.ConvASREncoder
480
- feat_in: *n_mels # Should match "features" in the preprocessor.
481
- activation: relu
482
- conv_mask: true
483
-
484
- jasper: # This field name should be "jasper" for the JasperBlock (which constructs Citrinet).
485
-
486
- # Prologue block
487
- - filters: 512
488
- repeat: 1
489
- kernel: [5]
490
- stride: [1]
491
- dilation: [1]
492
- dropout: 0.0
493
- residual: false
494
- separable: ${model.model_defaults.separable}
495
- se: ${model.model_defaults.se}
496
- se_context_size: ${model.model_defaults.se_context_size}
497
-
498
- # Block 1
499
- - filters: 512
500
- repeat: ${model.model_defaults.repeat}
501
- kernel: [11]
502
- stride: [2]
503
- dilation: [1]
504
- dropout: ${model.model_defaults.dropout}
505
- residual: true
506
- separable: ${model.model_defaults.separable}
507
- se: ${model.model_defaults.se}
508
- se_context_size: ${model.model_defaults.se_context_size}
509
- stride_last: true
510
- residual_mode: "stride_add"
511
-
512
- ... # Entries for blocks 2~21
513
-
514
- # Block 22
515
- - filters: 512
516
- repeat: ${model.model_defaults.repeat}
517
- kernel: [39]
518
- stride: [1]
519
- dilation: [1]
520
- dropout: ${model.model_defaults.dropout}
521
- residual: true
522
- separable: ${model.model_defaults.separable}
523
- se: ${model.model_defaults.se}
524
- se_context_size: ${model.model_defaults.se_context_size}
525
-
526
- # Epilogue block
527
-
528
- - filters: &enc_final 640
529
- repeat: 1
530
- kernel: [41]
531
- stride: [1]
532
- dilation: [1]
533
- dropout: 0.0
534
- residual: false
535
- separable: ${model.model_defaults.separable}
536
- se: ${model.model_defaults.se}
537
- se_context_size: ${model.model_defaults.se_context_size}
538
-
539
- As mentioned above, Citrinet uses the ``ConvASRDecoder`` as the decoder layer similar to QuartzNet. Only the configuration must be
540
- changed slightly as Citrinet utilizes sub-word tokenization.
541
-
542
- .. note::
543
- The following information is relevant to any of the above models that implements its encoder as an :class:`~nemo.collections.asr.modules.conv_asr.ConvASREncoder`, and utilizes the ``SqueezeExcite`` mechanism.
544
-
545
- The ``SqueezeExcite`` block within a :class:`~nemo.collections.asr.modules.conv_asr.ConvASREncoder` network can be modified to utilize a different context window after the model has been instantiated (even after the model has been trained) so as to evaluate the model with limited context. This can be achieved using the :meth:`~nemo.collections.asr.parts.mixins.mixins.ASRModuleMixin.change_conv_asr_se_context_window`
546
-
547
- .. code-block:: python
548
-
549
- # Here, model can be any model that has a `ConvASREncoder` as its encoder, and utilized `SqueezeExcite` blocks
550
- # `context_window` : It is an integer representing the number of timeframes (each corresponding to some window stride).
551
- # `update_config` : Bool flag which determines whether the config of the model should be updated to reflect the new context window.
552
-
553
- # Here, we specify that 128 timeframes of 0.01s stride should be the context window
554
- # This is equivalent to 128 * 0.01s context window for `SqueezeExcite`
555
- model.change_conv_asr_se_context_window(context_window=128, update_config=True)
556
-
557
- Conformer-CTC
558
- ~~~~~~~~~~~~~
559
-
560
- The config files for Conformer-CTC model contain character-based encoding and sub-word encoding at
561
- ``<NeMo_git_root>/examples/asr/conf/conformer/conformer_ctc_char.yaml`` and ``<NeMo_git_root>/examples/asr/conf/conformer/conformer_ctc_bpe.yaml``
562
- respectively. Some components of the configs of `Conformer-CTC <./models.html#Conformer-CTC>`__ include the following datasets:
563
-
564
- * ``train_ds``, ``validation_ds``, and ``test_ds``
565
- * opimizer (``optim``)
566
- * augmentation (``spec_augment``)
567
- * ``decoder``
568
- * ``trainer``
569
- * ``exp_manager``
570
-
571
- These datasets are similar to other ASR models like `QuartzNet <./models.html#QuartzNet>`__. There should be a tokenizer section where you can
572
- specify the tokenizer if you want to use sub-word encoding instead of character-based encoding.
573
-
574
-
575
- The encoder section includes the details about the Conformer-CTC encoder architecture. You may find more information in the
576
- config files and also :ref:`nemo.collections.asr.modules.ConformerEncoder <conformer-encoder-api>`.
577
-
578
- Squeezeformer-CTC
579
- ~~~~~~~~~~~~~~~~~
580
-
581
- The config files for Squeezeformer-CTC model contain character-based encoding and sub-word encoding at
582
- ``<NeMo_git_root>/examples/asr/conf/squeezeformer/squeezeformer_ctc_char.yaml`` and ``<NeMo_git_root>/examples/asr/conf/squeezeformer/squeezeformer_ctc_bpe.yaml``
583
- respectively. Components of the configs of `Squeezeformer-CTC <./models.html#Squeezeformer-CTC>`__ are similar to Conformer config - `QuartzNet <./configs.html#Conformer-CTC>`__.
584
-
585
- The encoder section includes the details about the Squeezeformer-CTC encoder architecture. You may find more information in the
586
- config files and also :ref:`nemo.collections.asr.modules.SqueezeformerEncoder <squeezeformer-encoder-api>`.
587
-
588
-
589
- ContextNet
590
- ~~~~~~~~~~
591
-
592
- Please refer to the model page of `ContextNet <./models.html#ContextNet>`__ for more information on this model.
593
-
594
- Conformer-Transducer
595
- ~~~~~~~~~~~~~~~~~~~~
596
-
597
- Please refer to the model page of `Conformer-Transducer <./models.html#Conformer-Transducer>`__ for more information on this model.
598
-
599
- LSTM-Transducer and LSTM-CTC
600
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
601
-
602
- The config files for LSTM-Transducer and LSTM-CTC models can be found at ``<NeMo_git_root>/examples/asr/conf/lstm/lstm_transducer_bpe.yaml`` and ``<NeMo_git_root>/examples/asr/conf/lstm/lstm_ctc_bpe.yaml`` respectively.
603
- Most of the of the configs of are similar to other ctc or transducer models. The main difference is the encoder part.
604
- The encoder section includes the details about the RNN-based encoder architecture. You may find more information in the
605
- config files and also :ref:`nemo.collections.asr.modules.RNNEncoder <rnn-encoder-api>`.
606
-
607
-
608
- InterCTC Config
609
- ---------------
610
-
611
- All CTC-based models also support `InterCTC loss <https://arxiv.org/abs/2102.03216>`_. To use it, you need to specify
612
- 2 parameters as in example below
613
-
614
- .. code-block:: yaml
615
-
616
- model:
617
- # ...
618
- interctc:
619
- loss_weights: [0.3]
620
- apply_at_layers: [8]
621
-
622
- which can be used to reproduce the default setup from the paper (assuming the total number of layers is 18).
623
- You can also specify multiple CTC losses from different layers, e.g., to get 2 losses from layers 3 and 8 with
624
- weights 0.1 and 0.3, specify:
625
-
626
- .. code-block:: yaml
627
-
628
- model:
629
- # ...
630
- interctc:
631
- loss_weights: [0.1, 0.3]
632
- apply_at_layers: [3, 8]
633
-
634
- Note that the final-layer CTC loss weight is automatically computed to normalize
635
- all weight to 1 (0.6 in the example above).
636
-
637
-
638
- Stochastic Depth Config
639
- -----------------------
640
-
641
- `Stochastic Depth <https://arxiv.org/abs/2102.03216>`_ is a useful technique for regularizing ASR model training.
642
- Currently it's only supported for :ref:`nemo.collections.asr.modules.ConformerEncoder <conformer-encoder-api>`. To
643
- use it, specify the following parameters in the encoder config file to reproduce the default setup from the paper:
644
-
645
- .. code-block:: yaml
646
-
647
- model:
648
- # ...
649
- encoder:
650
- # ...
651
- stochastic_depth_drop_prob: 0.3
652
- stochastic_depth_mode: linear # linear or uniform
653
- stochastic_depth_start_layer: 1
654
-
655
- See :ref:`documentation of ConformerEncoder <conformer-encoder-api>` for more details. Note that stochastic depth
656
- is supported for both CTC and Transducer model variations (or any other kind of model/loss that's using
657
- conformer as encoder).
658
-
659
-
660
- Transducer Configurations
661
- -------------------------
662
-
663
- All CTC-based ASR model configs can be modified to support Transducer loss training. Below, we discuss the modifications required in the config to enable Transducer training. All modifications are made to the ``model`` config.
664
-
665
- Model Defaults
666
- ~~~~~~~~~~~~~~
667
-
668
- It is a subsection to the model config representing the default values shared across the entire model represented as ``model.model_defaults``.
669
-
670
- There are three values that are primary components of a transducer model. They are :
671
-
672
- * ``enc_hidden``: The hidden dimension of the final layer of the Encoder network.
673
- * ``pred_hidden``: The hidden dimension of the final layer of the Prediction network.
674
- * ``joint_hidden``: The hidden dimension of the intermediate layer of the Joint network.
675
-
676
- One can access these values inside the config by using OmegaConf interpolation as follows :
677
-
678
- .. code-block:: yaml
679
-
680
- model:
681
- ...
682
- model_defaults:
683
- enc_hidden: 256
684
- pred_hidden: 256
685
- joint_hidden: 256
686
- ...
687
- decoder:
688
- ...
689
- prednet:
690
- pred_hidden: ${model.model_defaults.pred_hidden}
691
-
692
- Acoustic Encoder Model
693
- ~~~~~~~~~~~~~~~~~~~~~~
694
-
695
- The transducer model is comprised of three models combined. One of these models is the Acoustic (encoder) model. We should be able to drop in any CTC Acoustic model config into this section of the transducer config.
696
-
697
- The only condition that needs to be met is that **the final layer of the acoustic model must have the hidden dimension defined in ``model_defaults.enc_hidden``**.
698
-
699
- Decoder / Prediction Model
700
- ~~~~~~~~~~~~~~~~~~~~~~~~~~
701
-
702
- The Prediction model is generally an autoregressive, causal model that consumes text tokens and returns embeddings that will be used by the Joint model. The base config for an LSTM based Prediction network can be found in the the ``decoder`` section of `ContextNet <./models.html#ContextNet>`__ or other Transducer architectures. For further information refer to the ``Intro to Transducers`` tutorial in the ASR tutorial section.
703
-
704
- **This config can be copy-pasted into any custom transducer model with no modification.**
705
-
706
- Let us discuss some of the important arguments:
707
-
708
- * ``blank_as_pad``: In ordinary transducer models, the embedding matrix does not acknowledge the ``Transducer Blank`` token (similar to CTC Blank). However, this causes the autoregressive loop to be more complicated and less efficient. Instead, this flag which is set by default, will add the ``Transducer Blank`` token to the embedding matrix - and use it as a pad value (zeros tensor). This enables more efficient inference without harming training. For further information refer to the ``Intro to Transducers`` tutorial in the ASR tutorial section.
709
-
710
- * ``prednet.pred_hidden``: The hidden dimension of the LSTM and the output dimension of the Prediction network.
711
-
712
- .. code-block:: yaml
713
-
714
- decoder:
715
- _target_: nemo.collections.asr.modules.RNNTDecoder
716
- normalization_mode: null
717
- random_state_sampling: false
718
- blank_as_pad: true
719
-
720
- prednet:
721
- pred_hidden: ${model.model_defaults.pred_hidden}
722
- pred_rnn_layers: 1
723
- t_max: null
724
- dropout: 0.0
725
-
726
- Joint Model
727
- ~~~~~~~~~~~
728
-
729
- The Joint model is a simple feed-forward Multi-Layer Perceptron network. This MLP accepts the output of the Acoustic and Prediction models and computes a joint probability distribution over the entire vocabulary space. The base config for the Joint network can be found in the the ``joint`` section of `ContextNet <./models.html#ContextNet>`__ or other Transducer architectures. For further information refer to the ``Intro to Transducers`` tutorial in the ASR tutorial section.
730
-
731
- **This config can be copy-pasted into any custom transducer model with no modification.**
732
-
733
- The Joint model config has several essential components which we discuss below :
734
-
735
- * ``log_softmax``: Due to the cost of computing softmax on such large tensors, the Numba CUDA implementation of RNNT loss will implicitly compute the log softmax when called (so its inputs should be logits). The CPU version of the loss doesn't face such memory issues so it requires log-probabilities instead. Since the behaviour is different for CPU-GPU, the ``None`` value will automatically switch behaviour dependent on whether the input tensor is on a CPU or GPU device.
736
-
737
- * ``preserve_memory``: This flag will call ``torch.cuda.empty_cache()`` at certain critical sections when computing the Joint tensor. While this operation might allow us to preserve some memory, the empty_cache() operation is tremendously slow and will slow down training by an order of magnitude or more. It is available to use but not recommended.
738
-
739
- * ``fuse_loss_wer``: This flag performs "batch splitting" and then "fused loss + metric" calculation. It will be discussed in detail in the next tutorial that will train a Transducer model.
740
-
741
- * ``fused_batch_size``: When the above flag is set to True, the model will have two distinct "batch sizes". The batch size provided in the three data loader configs (``model.*_ds.batch_size``) will now be the ``Acoustic model`` batch size, whereas the ``fused_batch_size`` will be the batch size of the ``Prediction model``, the ``Joint model``, the ``transducer loss`` module and the ``decoding`` module.
742
-
743
- * ``jointnet.joint_hidden``: The hidden intermediate dimension of the joint network.
744
-
745
- .. code-block:: yaml
746
-
747
- joint:
748
- _target_: nemo.collections.asr.modules.RNNTJoint
749
- log_softmax: null # sets it according to cpu/gpu device
750
-
751
- # fused mode
752
- fuse_loss_wer: false
753
- fused_batch_size: 16
754
-
755
- jointnet:
756
- joint_hidden: ${model.model_defaults.joint_hidden}
757
- activation: "relu"
758
- dropout: 0.0
759
-
760
- Sampled Softmax Joint Model
761
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
762
-
763
- There are some situations where a large vocabulary with a Transducer model - such as for multilingual models with a large
764
- number of languages. In this setting, we need to consider the cost of memory of training Transducer networks which does
765
- not allow large vocabulary.
766
-
767
- For such cases, one can instead utilize the ``SampledRNNTJoint`` module instead of the usual ``RNNTJoint`` module, in order
768
- to compute the loss using a sampled subset of the vocabulary rather than the full vocabulary file.
769
-
770
- It adds only one additional parameter :
771
-
772
- * ``n_samples``: Specifies the minimum number of tokens to sample from the vocabulary space,
773
- excluding the RNNT blank token. If a given value is larger than the entire vocabulary size,
774
- then the full vocabulary will be used.
775
-
776
- The only difference in config required is to replace ``nemo.collections.asr.modules.RNNTJoint`` with ``nemo.collections.asr.modules.SampledRNNTJoint``
777
-
778
- .. code-block:: yaml
779
-
780
- joint:
781
- _target_: nemo.collections.asr.modules.SampledRNNTJoint
782
- n_samples: 500
783
- ... # All other arguments from RNNTJoint can be used after this.
784
-
785
-
786
- Effect of Batch Splitting / Fused Batch step
787
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
788
-
789
- The following information below explain why memory is an issue when training Transducer models and how NeMo tackles the issue with its Fused Batch step. The material can be read for a thorough understanding, otherwise, it can be skipped. You can also follow these steps in the "ASR_with_Transducers" tutorial.
790
-
791
- **Diving deeper into the memory costs of Transducer Joint**
792
-
793
- One of the significant limitations of Transducers is the exorbitant memory cost of computing the Joint module. The Joint module is comprised of two steps.
794
-
795
- 1) Projecting the Acoustic and Transcription feature dimensions to some standard hidden dimension (specified by model.model_defaults.joint_hidden)
796
-
797
- 2) Projecting this intermediate hidden dimension to the final vocabulary space to obtain the transcription.
798
-
799
- Take the following example.
800
-
801
- BS=32 ; T (after 2x stride) = 800, U (with character encoding) = 400-450 tokens, Vocabulary size V = 28 (26 alphabet chars, space and apostrophe). Let the hidden dimension of the Joint model be 640 (Most Google Transducer papers use hidden dimension of 640).
802
-
803
- * :math:`Memory \, (Hidden, \, gb) = 32 \times 800 \times 450 \times 640 \times 4 = 29.49` gigabytes (4 bytes per float).
804
-
805
- * :math:`Memory \, (Joint, \, gb) = 32 \times 800 \times 450 \times 28 \times 4 = 1.290` gigabytes (4 bytes per float)
806
-
807
- **NOTE**: This is just for the forward pass! We need to double this memory to store gradients! This much memory is also just for the Joint model **alone**. Far more memory is required for the Prediction model as well as the large Acoustic model itself and its gradients!
808
-
809
- Even with mixed precision, that's $\sim 30$ GB of GPU RAM for just 1 part of the network + its gradients.
810
-
811
- Effect of Fused Batch Step
812
- ^^^^^^^^^^^^^^^^^^^^^^^^^^
813
-
814
- The fundamental problem is that the joint tensor grows in size when ``[T x U]`` grows in size. This growth in memory cost is due to many reasons - either by model construction (downsampling) or the choice of dataset preprocessing (character tokenization vs. sub-word tokenization).
815
-
816
- Another dimension that NeMo can control is **batch**. Due to how we batch our samples, small and large samples all get clumped together into a single batch. So even though the individual samples are not all as long as the maximum length of T and U in that batch, when a batch of such samples is constructed, it will consume a significant amount of memory for the sake of compute efficiency.
817
-
818
- So as is always the case - **trade-off compute speed for memory savings**.
819
-
820
- The fused operation goes as follows :
821
-
822
- 1) Forward the entire acoustic model in a single pass. (Use global batch size here for acoustic model - found in ``model.*_ds.batch_size``)
823
-
824
- 2) Split the Acoustic Model's logits by ``fused_batch_size`` and loop over these sub-batches.
825
-
826
- 3) Construct a sub-batch of same ``fused_batch_size`` for the Prediction model. Now the target sequence length is :math:`U_{sub-batch} < U`.
827
-
828
- 4) Feed this :math:`U_{sub-batch}` into the Joint model, along with a sub-batch from the Acoustic model (with :math:`T_{sub-batch} < T)`. Remember, we only have to slice off a part of the acoustic model here since we have the full batch of samples :math:`(B, T, D)` from the acoustic model.
829
-
830
- 5) Performing steps (3) and (4) yields :math:`T_{sub-batch}` and :math:`U_{sub-batch}`. Perform sub-batch joint step - costing an intermediate :math:`(B, T_{sub-batch}, U_{sub-batch}, V)` in memory.
831
-
832
- 6) Compute loss on sub-batch and preserve in a list to be later concatenated.
833
-
834
- 7) Compute sub-batch metrics (such as Character / Word Error Rate) using the above Joint tensor and sub-batch of ground truth labels. Preserve the scores to be averaged across the entire batch later.
835
-
836
- 8) Delete the sub-batch joint matrix :math:`(B, T_{sub-batch}, U_{sub-batch}, V)`. Only gradients from .backward() are preserved now in the computation graph.
837
-
838
- 9) Repeat steps (3) - (8) until all sub-batches are consumed.
839
-
840
- 10) Cleanup step. Compute full batch WER and log. Concatenate loss list and pass to PTL to compute the equivalent of the original (full batch) Joint step. Delete ancillary objects necessary for sub-batching.
841
-
842
- Transducer Decoding
843
- ~~~~~~~~~~~~~~~~~~~
844
-
845
- Models which have been trained with CTC can transcribe text simply by performing a regular argmax over the output of their decoder. For transducer-based models, the three networks must operate in a synchronized manner in order to transcribe the acoustic features. The base config for the Transducer decoding step can be found in the the ``decoding`` section of `ContextNet <./models.html#ContextNet>`__ or other Transducer architectures. For further information refer to the ``Intro to Transducers`` tutorial in the ASR tutorial section.
846
-
847
- **This config can be copy-pasted into any custom transducer model with no modification.**
848
-
849
- The most important component at the top level is the ``strategy``. It can take one of many values:
850
-
851
- * ``greedy``: This is sample-level greedy decoding. It is generally exceptionally slow as each sample in the batch will be decoded independently. For publications, this should be used alongside batch size of 1 for exact results.
852
-
853
- * ``greedy_batch``: This is the general default and should nearly match the ``greedy`` decoding scores (if the acoustic features are not affected by feature mixing in batch mode). Even for small batch sizes, this strategy is significantly faster than ``greedy``.
854
-
855
- * ``beam``: Runs beam search with the implicit language model of the Prediction model. It will generally be quite slow, and might need some tuning of the beam size to get better transcriptions.
856
-
857
- * ``tsd``: Time synchronous decoding. Please refer to the paper: `Alignment-Length Synchronous Decoding for RNN Transducer <https://ieeexplore.ieee.org/document/9053040>`_ for details on the algorithm implemented. Time synchronous decoding (TSD) execution time grows by the factor T * max_symmetric_expansions. For longer sequences, T is greater and can therefore take a long time for beams to obtain good results. TSD also requires more memory to execute.
858
-
859
- * ``alsd``: Alignment-length synchronous decoding. Please refer to the paper: `Alignment-Length Synchronous Decoding for RNN Transducer <https://ieeexplore.ieee.org/document/9053040>`_ for details on the algorithm implemented. Alignment-length synchronous decoding (ALSD) execution time is faster than TSD, with a growth factor of T + U_max, where U_max is the maximum target length expected during execution. Generally, T + U_max < T * max_symmetric_expansions. However, ALSD beams are non-unique. Therefore it is required to use larger beam sizes to achieve the same (or close to the same) decoding accuracy as TSD. For a given decoding accuracy, it is possible to attain faster decoding via ALSD than TSD.
860
-
861
- * ``maes``: Modified Adaptive Expansion Search Decoding. Please refer to the paper `Accelerating RNN Transducer Inference via Adaptive Expansion Search <https://ieeexplore.ieee.org/document/9250505>`_. Modified Adaptive Synchronous Decoding (mAES) execution time is adaptive w.r.t the number of expansions (for tokens) required per timestep. The number of expansions can usually be constrained to 1 or 2, and in most cases 2 is sufficient. This beam search technique can possibly obtain superior WER while sacrificing some evaluation time.
862
-
863
- .. code-block:: yaml
864
-
865
- decoding:
866
- strategy: "greedy_batch"
867
-
868
- # preserve decoding alignments
869
- preserve_alignments: false
870
-
871
- # Overrides the fused batch size after training.
872
- # Setting it to -1 will process whole batch at once when combined with `greedy_batch` decoding strategy
873
- fused_batch_size: Optional[int] = -1
874
-
875
- # greedy strategy config
876
- greedy:
877
- max_symbols: 10
878
-
879
- # beam strategy config
880
- beam:
881
- beam_size: 2
882
- score_norm: true
883
- softmax_temperature: 1.0 # scale the logits by some temperature prior to softmax
884
- tsd_max_sym_exp: 10 # for Time Synchronous Decoding, int > 0
885
- alsd_max_target_len: 5.0 # for Alignment-Length Synchronous Decoding, float > 1.0
886
- maes_num_steps: 2 # for modified Adaptive Expansion Search, int > 0
887
- maes_prefix_alpha: 1 # for modified Adaptive Expansion Search, int > 0
888
- maes_expansion_beta: 2 # for modified Adaptive Expansion Search, int >= 0
889
- maes_expansion_gamma: 2.3 # for modified Adaptive Expansion Search, float >= 0
890
-
891
- Transducer Loss
892
- ~~~~~~~~~~~~~~~
893
-
894
- This section configures the type of Transducer loss itself, along with possible sub-sections. By default, an optimized implementation of Transducer loss will be used which depends on Numba for CUDA acceleration. The base config for the Transducer loss section can be found in the the ``loss`` section of `ContextNet <./models.html#ContextNet>`__ or other Transducer architectures. For further information refer to the ``Intro to Transducers`` tutorial in the ASR tutorial section.
895
-
896
- **This config can be copy-pasted into any custom transducer model with no modification.**
897
-
898
- The loss config is based on a resolver pattern and can be used as follows:
899
-
900
- 1) ``loss_name``: ``default`` is generally a good option. Will select one of the available resolved losses and match the kwargs from a sub-configs passed via explicit ``{loss_name}_kwargs`` sub-config.
901
-
902
- 2) ``{loss_name}_kwargs``: This sub-config is passed to the resolved loss above and can be used to configure the resolved loss.
903
-
904
-
905
- .. code-block:: yaml
906
-
907
- loss:
908
- loss_name: "default"
909
- warprnnt_numba_kwargs:
910
- fastemit_lambda: 0.0
911
-
912
- FastEmit Regularization
913
- ^^^^^^^^^^^^^^^^^^^^^^^
914
-
915
- FastEmit Regularization is supported for the default Numba based WarpRNNT loss. Recently proposed regularization approach - `FastEmit: Low-latency Streaming ASR with Sequence-level Emission Regularization <https://arxiv.org/abs/2010.11148>`_ allows us near-direct control over the latency of transducer models.
916
-
917
- Refer to the above paper for results and recommendations of ``fastemit_lambda``.
918
-
919
-
920
- .. _Hybrid-ASR-TTS_model__Config:
921
-
922
- Hybrid ASR-TTS Model Configuration
923
- ----------------------------------
924
-
925
- :ref:`Hybrid ASR-TTS model <Hybrid-ASR-TTS_model>` consists of three parts:
926
-
927
- * ASR model (``EncDecCTCModelBPE``, ``EncDecRNNTBPEModel`` or ``EncDecHybridRNNTCTCBPEModel``)
928
- * TTS Mel Spectrogram Generator (currently, only :ref:`FastPitch <FastPitch_model>` model is supported)
929
- * :ref:`Enhancer model <SpectrogramEnhancer_model>` (optional)
930
-
931
- Also, the config allows to specify :ref:`text-only dataset <Hybrid-ASR-TTS_model__Text-Only-Data>`.
932
-
933
- Main parts of the config:
934
-
935
- * ASR model
936
- * ``asr_model_path``: path to the ASR model checkpoint (`.nemo`) file, loaded only once, then the config of the ASR model is stored in the ``asr_model`` field
937
- * ``asr_model_type``: needed only when training from scratch. ``rnnt_bpe`` corresponds to ``EncDecRNNTBPEModel``, ``ctc_bpe`` to ``EncDecCTCModelBPE``, ``hybrid_rnnt_ctc_bpe`` to ``EncDecHybridRNNTCTCBPEModel``
938
- * ``asr_model_fuse_bn``: fusing BatchNorm in the pretrained ASR model, can improve quality in finetuning scenario
939
- * TTS model
940
- * ``tts_model_path``: path to the pretrained TTS model checkpoint (`.nemo`) file, loaded only once, then the config of the model is stored in the ``tts_model`` field
941
- * Enhancer model
942
- * ``enhancer_model_path``: optional path to the enhancer model. Loaded only once, the config is stored in the ``enhancer_model`` field
943
- * ``train_ds``
944
- * ``text_data``: properties related to text-only data
945
- * ``manifest_filepath``: path (or paths) to :ref:`text-only dataset <Hybrid-ASR-TTS_model__Text-Only-Data>` manifests
946
- * ``speakers_filepath``: path (or paths) to the text file containing speaker ids for the multi-speaker TTS model (speakers are sampled randomly during training)
947
- * ``min_words`` and ``max_words``: parameters to filter text-only manifests by the number of words
948
- * ``tokenizer_workers``: number of workers for initial tokenization (when loading the data). ``num_CPUs / num_GPUs`` is a recommended value.
949
- * ``asr_tts_sampling_technique``, ``asr_tts_sampling_temperature``, ``asr_tts_sampling_probabilities``: sampling parameters for text-only and audio-text data (if both specified). Correspond to ``sampling_technique``, ``sampling_temperature``, and ``sampling_probabilities`` parameters of the :mod:`ConcatDataset <nemo.collections.common.data.dataset.ConcatDataset>`.
950
- * all other components are similar to conventional ASR models
951
- * ``validation_ds`` and ``test_ds`` correspond to the underlying ASR model
952
-
953
-
954
- .. code-block:: yaml
955
-
956
- model:
957
- sample_rate: 16000
958
-
959
- # asr model
960
- asr_model_path: ???
961
- asr_model: null
962
- asr_model_type: null # rnnt_bpe, ctc_bpe or hybrid_rnnt_ctc_bpe; needed only if instantiating from config, otherwise type is auto inferred
963
- asr_model_fuse_bn: false # only ConformerEncoder supported now, use false for other models
964
-
965
- # tts model
966
- tts_model_path: ???
967
- tts_model: null
968
-
969
- # enhancer model
970
- enhancer_model_path: null
971
- enhancer_model: null
972
-
973
- train_ds:
974
- text_data:
975
- manifest_filepath: ???
976
- speakers_filepath: ???
977
- min_words: 1
978
- max_words: 45 # 45 - recommended value, ~16.7 sec for LibriSpeech
979
- tokenizer_workers: 1
980
- asr_tts_sampling_technique: round-robin # random, round-robin, temperature
981
- asr_tts_sampling_temperature: null
982
- asr_tts_sampling_probabilities: null # [0.5,0.5] – ASR,TTS
983
- manifest_filepath: ???
984
- batch_size: 16 # you may increase batch_size if your memory allows
985
- # other params
986
-
987
- Finetuning with Text-Only Data
988
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
989
-
990
- To finetune existing ASR model using text-only data use ``<NeMo_git_root>/examples/asr/asr_with_tts/speech_to_text_bpe_with_text_finetune.py`` script with the corresponding config ``<NeMo_git_root>/examples/asr/conf/asr_tts/hybrid_asr_tts.yaml``.
991
-
992
- Please specify paths to all the required models (ASR, TTS, and Enhancer checkpoints), along with ``train_ds.text_data.manifest_filepath`` and ``train_ds.text_data.speakers_filepath``.
993
-
994
- .. code-block:: shell
995
-
996
- python speech_to_text_bpe_with_text_finetune.py \
997
- model.asr_model_path=<path to ASR model> \
998
- model.tts_model_path=<path to compatible TTS model> \
999
- model.enhancer_model_path=<optional path to enhancer model> \
1000
- model.asr_model_fuse_bn=<true recommended if ConformerEncoder with BatchNorm, false otherwise> \
1001
- model.train_ds.manifest_filepath=<path to manifest with audio-text pairs or null> \
1002
- model.train_ds.text_data.manifest_filepath=<path(s) to manifest with train text> \
1003
- model.train_ds.text_data.speakers_filepath=<path(s) to speakers list> \
1004
- model.train_ds.text_data.tokenizer_workers=4 \
1005
- model.validation_ds.manifest_filepath=<path to validation manifest> \
1006
- model.train_ds.batch_size=<batch_size>
1007
-
1008
- Training from Scratch
1009
- ~~~~~~~~~~~~~~~~~~~~~
1010
-
1011
- To train ASR model from scratch using text-only data use ``<NeMo_git_root>/examples/asr/asr_with_tts/speech_to_text_bpe_with_text.py`` script with conventional ASR model config, e.g. ``<NeMo_git_root>/examples/asr/conf/conformer/conformer_ctc_bpe.yaml`` or ``<NeMo_git_root>/examples/asr/conf/conformer/conformer_transducer_bpe.yaml``
1012
-
1013
- Please specify the ASR model type, paths to the TTS model, and (optional) enhancer, along with text-only data-related fields.
1014
- Use ``++`` or ``+`` markers for these options, since the options are not present in the original ASR model config.
1015
-
1016
- .. code-block:: shell
1017
-
1018
- python speech_to_text_bpe_with_text.py \
1019
- ++asr_model_type=<rnnt_bpe or ctc_bpe> \
1020
- ++tts_model_path=<path to compatible tts model> \
1021
- ++enhancer_model_path=<optional path to enhancer model> \
1022
- ++model.train_ds.text_data.manifest_filepath=<path(s) to manifests with train text> \
1023
- ++model.train_ds.text_data.speakers_filepath=<path(s) to speakers list> \
1024
- ++model.train_ds.text_data.min_words=1 \
1025
- ++model.train_ds.text_data.max_words=45 \
1026
- ++model.train_ds.text_data.tokenizer_workers=4
1027
-
1028
- Fine-tuning Configurations
1029
- --------------------------
1030
-
1031
- All ASR scripts support easy fine-tuning by partially/fully loading the pretrained weights from a checkpoint into the **currently instantiated model**. Note that the currently instantiated model should have parameters that match the pre-trained checkpoint (such that weights may load properly). In order to directly fine-tune a pre-existing checkpoint, please follow the tutorial `ASR Language Fine-tuning. <https://colab.research.google.com/github/NVIDIA/NeMo/blob/stable/tutorials/asr/ASR_CTC_Language_Finetuning.ipynb>`_
1032
-
1033
- Models can be fine-tuned in two ways:
1034
- * By updating or retaining current tokenizer alone
1035
- * By updating model architecture and tokenizer
1036
-
1037
- Fine-tuning by updating or retaining current tokenizer
1038
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1039
-
1040
- In this case, the model architecture is not updated. The model is initialized with the pre-trained weights by
1041
- two ways:
1042
-
1043
- 1) Providing a path to a NeMo model (via ``init_from_nemo_model``)
1044
- 2) Providing a name of a pretrained NeMo model (which will be downloaded via the cloud) (via ``init_from_pretrained_model``)
1045
-
1046
- Then users can use existing tokenizer or update the tokenizer with new vocabulary. This is useful when users don't want to update the model architecture
1047
- but want to update the tokenizer with new vocabulary.
1048
-
1049
- The same script can be used to finetune CTC, RNNT or Hybrid models as well.
1050
-
1051
- <NeMo_repo>/examples/asr/speech_to_text_finetune.py script supports this type of fine-tuning with the following arguments:
1052
-
1053
- .. code-block:: sh
1054
-
1055
- python examples/asr/speech_to_text_finetune.py \
1056
- --config-path=<path to dir of configs> \
1057
- --config-name=<name of config without .yaml>) \
1058
- model.train_ds.manifest_filepath="<path to manifest file>" \
1059
- model.validation_ds.manifest_filepath="<path to manifest file>" \
1060
- model.tokenizer.update_tokenizer=<True/False> \ # True to update tokenizer, False to retain existing tokenizer
1061
- model.tokenizer.dir=<path to tokenizer dir> \ # Path to tokenizer dir when update_tokenizer=True
1062
- model.tokenizer.type=<tokenizer type> \ # tokenizer type when update_tokenizer=True
1063
- trainer.devices=-1 \
1064
- trainer.accelerator='gpu' \
1065
- trainer.max_epochs=50 \
1066
- +init_from_nemo_model="<path to .nemo model file>" (or +init_from_pretrained_model="<name of pretrained checkpoint>")
1067
-
1068
-
1069
- Refer to <NeMo_repo>/examples/asr/conf/asr_finetune/speech_to_text_finetune.yaml for more details.
1070
-
1071
- Finetune ASR Models using HuggingFace Datasets
1072
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1073
- Users can utilize HuggingFace Datasets for finetuning NeMo ASR models. The following config file can be used for this purpose:
1074
- `<NeMo_repo>/examples/asr/conf/asr_finetune/speech_to_text_hf_finetune.yaml`
1075
-
1076
- As mentioned earlier, users can update the tokenizer or use an existing one based on their requirements. If users want to create a new tokenizer
1077
- from HuggingFace Datasets, they can use the following script:
1078
- `<NeMo_repo>/scripts/tokenizers/get_hf_text_data.py`
1079
-
1080
- Fine-tuning by changing model architecture and tokenizer
1081
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1082
-
1083
- If users want to update the model architecture as well they can use the following script:
1084
-
1085
- For providing pretrained model, users can provide Pre-trained weights in multiple ways -
1086
-
1087
- 1) Providing a path to a NeMo model (via ``init_from_nemo_model``)
1088
- 2) Providing a name of a pretrained NeMo model (which will be downloaded via the cloud) (via ``init_from_pretrained_model``)
1089
- 3) Providing a path to a Pytorch Lightning checkpoint file (via ``init_from_ptl_ckpt``)
1090
-
1091
- There are multiple ASR subtasks inside the ``examples/asr/`` directory, you can substitute the ``<subtask>`` tag below.
1092
-
1093
- .. code-block:: sh
1094
-
1095
- python examples/asr/<subtask>/script_to_<script_name>.py \
1096
- --config-path=<path to dir of configs> \
1097
- --config-name=<name of config without .yaml>) \
1098
- model.train_ds.manifest_filepath="<path to manifest file>" \
1099
- model.validation_ds.manifest_filepath="<path to manifest file>" \
1100
- trainer.devices=-1 \
1101
- trainer.accelerator='gpu' \
1102
- trainer.max_epochs=50 \
1103
- +init_from_nemo_model="<path to .nemo model file>" # (or +init_from_pretrained_model, +init_from_ptl_ckpt )
1104
-
1105
- To reinitialize part of the model, to make it different from the pretrained model, users can mention them through config:
1106
-
1107
- .. code-block:: yaml
1108
-
1109
- init_from_nemo_model: "<path to .nemo model file>"
1110
- asr_model:
1111
- include: ["preprocessor","encoder"]
1112
- exclude: ["decoder"]
1113
-
1114
- Fine-tuning Execution Flow Diagram
1115
- ----------------------------------
1116
-
1117
- When preparing your own training or fine-tuning scripts, please follow the execution flow diagram order for correct inference.
1118
-
1119
- Depending on the type of model, there may be extra steps that must be performed -
1120
-
1121
- * CTC Models - `Examples directory for CTC Models <https://github.com/NVIDIA/NeMo/blob/stable/examples/asr/asr_ctc/README.md>`_
1122
- * RNN Transducer Models - `Examples directory for Transducer Models <https://github.com/NVIDIA/NeMo/blob/stable/examples/asr/asr_transducer/README.md>`_
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/asrlm_results.csv DELETED
@@ -1,2 +0,0 @@
1
- Model Name,Model Base Class,Model Card
2
- asrlm_en_transformer_large_ls,TransformerLMModel,"https://ngc.nvidia.com/catalog/models/nvidia:nemo:asrlm_en_transformer_large_ls"
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_by.csv DELETED
@@ -1,4 +0,0 @@
1
- Model,Model Base Class
2
- `stt_uk_citrinet_1024_gamma_0_25 <https://huggingface.co/nvidia/stt_uk_citrinet_1024_gamma_0_25>`_,EncDecCTCModel
3
- `stt_ua_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_ua_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
4
- `stt_multilingual_fastconformer_hybrid_large_pc <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_multilingual_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
 
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_ca.csv DELETED
@@ -1,3 +0,0 @@
1
- model_name,base_model,link
2
- stt_ca_conformer_ctc_large,ConformerBaseModel,https://huggingface.co/nvidia/stt_ca_conformer_ctc_large
3
- stt_ca_conformer_transducer_large,ConformerBaseModel,https://huggingface.co/nvidia/stt_ca_conformer_transducer_large
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_canary.csv DELETED
@@ -1,2 +0,0 @@
1
- Model,Language
2
- `canary-1b <https://huggingface.co/nvidia/canary-1b>`_ ,"English, French, German, Spanish"
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_cn.csv DELETED
@@ -1,3 +0,0 @@
1
- Model,Model Base Class
2
- `stt_zh_citrinet_1024_gamma_0_25 <https://huggingface.co/nvidia/stt_zh_citrinet_1024_gamma_0_25>`_,EncDecCTCModel
3
- `stt_zh_conformer_transducer_large <https://huggingface.co/nvidia/stt_zh_conformer_transducer_large>`_,EncDecRNNTBPEModel
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_code_switching.csv DELETED
@@ -1,3 +0,0 @@
1
- Model,Language
2
- `stt_enes_conformer_ctc_large_codesw <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_enes_conformer_ctc_large_codesw>`_,"English, Spanish"
3
- `stt_enes_conformer_transducer_large_codesw <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_enes_conformer_transducer_large_codesw>`_,"English, Spanish"
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_cs.csv DELETED
@@ -1,4 +0,0 @@
1
- Model,Model Base Class
2
- `stt_ca_conformer_ctc_large <https://huggingface.co/nvidia/stt_ca_conformer_ctc_large>`_,EncDecCTCModelBPE
3
- `stt_ca_conformer_transducer_large <https://huggingface.co/nvidia/stt_ca_conformer_transducer_large>`_,EncDecRNNTBPEModel
4
- `stt_ca_quartznet15x5 <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_ca_quartznet15x5>`_,EncDecCTCModel
 
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_de.csv DELETED
@@ -1,9 +0,0 @@
1
- Model,Model Base Class
2
- `canary-1b <https://huggingface.co/nvidia/canary-1b>`_,EncDecMultiTaskModel
3
- `stt_de_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_de_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
4
- `stt_de_conformer_ctc_large <https://huggingface.co/nvidia/stt_de_conformer_ctc_large>`_,EncDecCTCModelBPE
5
- `stt_de_conformer_transducer_large <https://huggingface.co/nvidia/stt_de_conformer_transducer_large>`_,EncDecRNNTBPEModel
6
- `stt_de_quartznet15x5 <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_de_quartznet15x5>`_,EncDecCTCModel
7
- `stt_de_contextnet_1024 <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_de_contextnet_1024>`_,EncDecRNNTBPEModel
8
- `stt_multilingual_fastconformer_hybrid_large_pc <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_multilingual_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
9
- `stt_multilingual_fastconformer_hybrid_large_pc_blend_eu <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_multilingual_fastconformer_hybrid_large_pc_blend_eu>`_,EncDecHybridRNNTCTCBPEModel
 
 
 
 
 
 
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_en.csv DELETED
@@ -1,37 +0,0 @@
1
- Model,Model Base Class
2
- `parakeet-tdt-1.1b <https://huggingface.co/nvidia/parakeet-tdt-1.1b>`_, EncDecRNNTBPEModel
3
- `parakeet-tdt_ctc-1.1b <https://huggingface.co/nvidia/parakeet-tdt_ctc-1.1b>`_, ASRModel
4
- `parakeet-tdt_ctc-110m <https://huggingface.co/nvidia/parakeet-tdt_ctc-110m>`_, ASRModel
5
- `canary-1b <https://huggingface.co/nvidia/canary-1b>`_, EncDecMultiTaskModel
6
- `stt_en_conformer_ctc_large <https://huggingface.co/nvidia/stt_en_conformer_ctc_large>`_, EncDecCTCModelBPE
7
- `parakeet-ctc-0.6b <https://huggingface.co/nvidia/parakeet-ctc-0.6b>`_, EncDecCTCModelBPE
8
- `parakeet-ctc-1.1b <https://huggingface.co/nvidia/parakeet-ctc-1.1b>`_, EncDecCTCModelBPE
9
- `stt_en_conformer_transducer_xlarge <https://huggingface.co/nvidia/stt_en_conformer_transducer_xlarge>`_, EncDecRNNTBPEModel
10
- `stt_en_fastconformer_ctc_large <https://huggingface.co/nvidia/stt_en_fastconformer_ctc_large>`_, EncDecCTCModelBPE
11
- `stt_en_citrinet_256_ls <https://huggingface.co/nvidia/stt_en_citrinet_256_ls>`_, EncDecCTCModelBPE
12
- `stt_en_fastconformer_hybrid_large_streaming_multi <https://huggingface.co/nvidia/stt_en_fastconformer_hybrid_large_streaming_multi>`_, EncDecHybridRNNTCTCBPEModel
13
- `stt_en_fastconformer_ctc_xxlarge <https://huggingface.co/nvidia/stt_en_fastconformer_ctc_xxlarge>`_, EncDecCTCTBPEModel
14
- `stt_en_conformer_transducer_large <https://huggingface.co/nvidia/stt_en_conformer_transducer_large>`_, EncDecRNNTBPEModel
15
- `stt_en_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_en_fastconformer_hybrid_large_pc>`_, EncDecHybridRNNTCTCBPEModel
16
- `stt_en_citrinet_512_ls <https://huggingface.co/nvidia/stt_en_citrinet_512_ls>`_, EncDecCTCModelBPE
17
- `stt_en_conformer_ctc_small <https://huggingface.co/nvidia/stt_en_conformer_ctc_small>`_, EncDecCTCModelBPE
18
- `stt_en_citrinet_1024_gamma_0_25 <https://huggingface.co/nvidia/stt_en_citrinet_1024_gamma_0_25>`_, EncDecCTCModelBPE
19
- `stt_en_fastconformer_transducer_large <https://huggingface.co/nvidia/stt_en_fastconformer_transducer_large>`_, EncDecRNNTBPEModel
20
- `stt_en_fastconformer_transducer_xlarge <https://huggingface.co/nvidia/stt_en_fastconformer_transducer_xlarge>`_, EncDecRNNTBPEModel
21
- `stt_en_fastconformer_transducer_xxlarge <https://huggingface.co/nvidia/stt_en_fastconformer_transducer_xxlarge>`_, EncDecRNNTBPEModel
22
- `stt_en_citrinet_768_ls <https://huggingface.co/nvidia/stt_en_citrinet_768_ls>`_, EncDecCTCModelBPE
23
- `stt_en_fastconformer_ctc_xlarge <https://huggingface.co/nvidia/stt_en_fastconformer_ctc_xlarge>`_, EncDecCTCTBPEModel
24
- `stt_en_citrinet_384_ls <https://huggingface.co/nvidia/stt_en_citrinet_384_ls>`_, EncDecCTCModelBPE
25
- `stt_en_citrinet_1024_ls <https://huggingface.co/nvidia/stt_en_citrinet_1024_ls>`_, EncDecCTCModelBPE
26
- `QuartzNet15x5Base-En <https://ngc.nvidia.com/catalog/models/nvidia:nemospeechmodels>`_, EncDecCTCModel
27
- `stt_en_jasper10x5dr <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_jasper10x5dr>`_, EncDecCTCModel
28
- `stt_en_contextnet_256_mls <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_contextnet_256_mls>`_, EncDecRNNTBPEModel
29
- `stt_en_contextnet_512_mls <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_contextnet_512_mls>`_, EncDecRNNTBPEModel
30
- `stt_en_contextnet_1024_mls <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_contextnet_1024_mls>`_, EncDecRNNTBPEModel
31
- `stt_en_contextnet_256 <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_contextnet_256>`_, EncDecRNNTBPEModel
32
- `stt_en_contextnet_512 <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_contextnet_512>`_, EncDecRNNTBPEModel
33
- `stt_en_contextnet_1024 <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_contextnet_1024>`_, EncDecRNNTBPEModel
34
- `stt_enes_conformer_ctc_large <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_enes_conformer_ctc_large>`_,EncDecCTCModelBPE
35
- `stt_enes_conformer_transducer_large <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_enes_conformer_transducer_large>`_,EncDecRNNTBPEModel
36
- `stt_multilingual_fastconformer_hybrid_large_pc <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_multilingual_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
37
- `stt_multilingual_fastconformer_hybrid_large_pc_blend_eu <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_multilingual_fastconformer_hybrid_large_pc_blend_eu>`_,EncDecHybridRNNTCTCBPEModel
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_eo.csv DELETED
@@ -1,3 +0,0 @@
1
- Model,Model Base Class
2
- `stt_eo_conformer_transducer_large <https://huggingface.co/nvidia/stt_eo_conformer_transducer_large>`_,EncDecRNNTBPEModel
3
- `stt_eo_conformer_ctc_large <https://huggingface.co/nvidia/stt_eo_conformer_ctc_large>`_,EncDecCTCModelBPE
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_es.csv DELETED
@@ -1,11 +0,0 @@
1
- Model,Model Base Class
2
- `canary-1b <https://huggingface.co/nvidia/canary-1b>`_,EncDecMultiTaskModel
3
- `stt_es_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_es_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
4
- `stt_es_conformer_transducer_large <https://huggingface.co/nvidia/stt_es_conformer_transducer_large>`_,EncDecRNNTBPEModel
5
- `stt_es_conformer_ctc_large <https://huggingface.co/nvidia/stt_es_conformer_ctc_large>`_,EncDecCTCModelBPE
6
- `stt_es_quartznet15x5 <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_es_quartznet15x5>`_,EncDecCTCModel
7
- `stt_es_contextnet_1024 <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_es_contextnet_1024>`_,EncDecRNNTBPEModel
8
- `stt_enes_conformer_ctc_large <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_enes_conformer_ctc_large>`_,EncDecCTCModelBPE
9
- `stt_enes_conformer_transducer_large <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_enes_conformer_transducer_large>`_,EncDecRNNTBPEModel
10
- `stt_multilingual_fastconformer_hybrid_large_pc <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_multilingual_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
11
- `stt_multilingual_fastconformer_hybrid_large_pc_blend_eu <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_multilingual_fastconformer_hybrid_large_pc_blend_eu>`_,EncDecHybridRNNTCTCBPEModel
 
 
 
 
 
 
 
 
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_fa.csv DELETED
@@ -1,2 +0,0 @@
1
- Model,Model Base Class
2
- `stt_fa_fastconformer_hybrid_large <https://huggingface.co/nvidia/stt_fa_fastconformer_hybrid_large>`_,EncDecHybridRNNTCTCBPEModel
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_fastconformer_hybrid.csv DELETED
@@ -1,16 +0,0 @@
1
- Model,Language
2
- `stt_be_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_be_fastconformer_hybrid_large_pc>`_,Belarusian
3
- `stt_hr_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_hr_fastconformer_hybrid_large_pc>`_,Croatian
4
- `stt_nl_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_nl_fastconformer_hybrid_large_pc>`_,Dutch
5
- `stt_en_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_en_fastconformer_hybrid_large_pc>`_,English
6
- `stt_fr_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_fr_fastconformer_hybrid_large_pc>`_,French
7
- `stt_ka_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_ka_fastconformer_hybrid_large_pc>`_,Georgian
8
- `stt_de_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_de_fastconformer_hybrid_large_pc>`_,German
9
- `stt_it_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_it_fastconformer_hybrid_large_pc>`_,Italian
10
- `stt_kk_ru_fastconformer_hybrid_large <https://huggingface.co/nvidia/stt_kk_ru_fastconformer_hybrid_large>`_,"Kazakh, Russian"
11
- `stt_fa_fastconformer_hybrid_large <https://huggingface.co/nvidia/stt_fa_fastconformer_hybrid_large>`_,Persian
12
- `stt_pl_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_pl_fastconformer_hybrid_large_pc>`_,Polish
13
- `stt_ru_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_ru_fastconformer_hybrid_large_pc>`_,Russian
14
- `stt_es_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_es_fastconformer_hybrid_large_pc>`_,Spanish
15
- `stt_ua_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_ua_fastconformer_hybrid_large_pc>`_,Ukrainian
16
- `stt_uz_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_uz_fastconformer_hybrid_large_pc>`_,Uzbek
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_fr.csv DELETED
@@ -1,11 +0,0 @@
1
- Model,Model Base Class
2
- `canary-1b <https://huggingface.co/nvidia/canary-1b>`_,EncDecMultiTaskModel
3
- `stt_fr_conformer_ctc_large <https://huggingface.co/nvidia/stt_fr_conformer_ctc_large>`_,EncDecCTCModelBPE
4
- `stt_fr_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_fr_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
5
- `stt_fr_conformer_transducer_large <https://huggingface.co/nvidia/stt_fr_conformer_transducer_large>`_,EncDecRNNTBPEModel
6
- `stt_fr_quartznet15x5 <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_fr_quartznet15x5>`_,EncDecCTCModel
7
- `stt_fr_contextnet_1024 <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_fr_contextnet_1024>`_,EncDecRNNTBPEModel
8
- `stt_fr_no_hyphen_citrinet_1024_gamma_0_25 <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_fr_citrinet_1024_gamma_0_25>`_,EncDecCTCModelBPE
9
- `stt_fr_no_hyphen_conformer_ctc_large <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_fr_conformer_ctc_large>`_,EncDecCTCModelBPE
10
- `stt_multilingual_fastconformer_hybrid_large_pc <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_multilingual_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
11
- `stt_multilingual_fastconformer_hybrid_large_pc_blend_eu <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_multilingual_fastconformer_hybrid_large_pc_blend_eu>`_,EncDecHybridRNNTCTCBPEModel
 
 
 
 
 
 
 
 
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_hi.csv DELETED
@@ -1,2 +0,0 @@
1
- Model Name,Model Base Class
2
- `stt_hi_conformer_ctc_medium <https://catalog.ngc.nvidia.com/orgs/nvidia/teams/nemo/models/stt_hi_conformer_ctc_medium>`_,EncDecCTCModelBPE
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_hr.csv DELETED
@@ -1,5 +0,0 @@
1
- Model,Model Base Class
2
- `stt_hr_conformer_transducer_large <https://huggingface.co/nvidia/stt_hr_conformer_transducer_large>`_,EncDecRNNTBPEModel
3
- `stt_hr_conformer_ctc_large <https://huggingface.co/nvidia/stt_hr_conformer_ctc_large>`_,EncDecCTCModelBPE
4
- `stt_hr_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_hr_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
5
- `stt_multilingual_fastconformer_hybrid_large_pc <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_multilingual_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
 
 
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_it.csv DELETED
@@ -1,6 +0,0 @@
1
- Model,Model Base Class
2
- `stt_it_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_it_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
3
- `stt_it_conformer_ctc_large <https://huggingface.co/nvidia/stt_it_conformer_ctc_large>`_,EncDecCTCModelBPE
4
- `stt_it_conformer_transducer_large <https://huggingface.co/nvidia/stt_it_conformer_transducer_large>`_,EncDecRNNTBPEModel
5
- `stt_it_quartznet15x5 <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_it_quartznet15x5>`_,EncDecCTCModel
6
- `stt_multilingual_fastconformer_hybrid_large_pc <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_multilingual_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
 
 
 
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_jp.csv DELETED
@@ -1,2 +0,0 @@
1
- Model,Model Base Class
2
- `parakeet-tdt_ctc-0.6b-ja <https://huggingface.co/nvidia/parakeet-tdt_ctc-0.6b-ja>`_,ASRModel
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_ka.csv DELETED
@@ -1,3 +0,0 @@
1
- Model,Model Base Class
2
- `stt_ka_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_ka_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
3
- `stt_ka_fastconformer_hybrid_transducer_ctc_large_streaming_80ms_pc <https://huggingface.co/nvidia/stt_ka_fastconformer_hybrid_transducer_ctc_large_streaming_80ms_pc>`_,EncDecHybridRNNTCTCBPEModel
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_kab.csv DELETED
@@ -1,2 +0,0 @@
1
- Model,Model Base Class
2
- `stt_kab_conformer_transducer_large <https://huggingface.co/nvidia/stt_kab_conformer_transducer_large>`_,EncDecRNNTBPEModel
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_kz.csv DELETED
@@ -1,2 +0,0 @@
1
- Model,Model Base Class
2
- `stt_kk_ru_fastconformer_hybrid_large <https://huggingface.co/nvidia/stt_kk_ru_fastconformer_hybrid_large>`_,EncDecHybridRNNTCTCBPEModel
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_mr.csv DELETED
@@ -1,2 +0,0 @@
1
- Model Name,Model Base Class
2
- `stt_mr_conformer_ctc_medium <https://catalog.ngc.nvidia.com/orgs/nvidia/teams/nemo/models/stt_mr_conformer_ctc_medium>`_,EncDecCTCModelBPE
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_multilingual.csv DELETED
@@ -1,5 +0,0 @@
1
- Model,Model Base Class,Model Card
2
- stt_enes_conformer_ctc_large,EncDecCTCModelBPE,"https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_enes_conformer_ctc_large"
3
- stt_enes_conformer_transducer_large,EncDecRNNTBPEModel,"https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_enes_conformer_transducer_large"
4
- stt_multilingual_fastconformer_hybrid_large_pc,EncDecHybridRNNTCTCBPEModel,"https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_multilingual_fastconformer_hybrid_large_pc"
5
- stt_multilingual_fastconformer_hybrid_large_pc_blend_eu,EncDecHybridRNNTCTCBPEModel,"https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_multilingual_fastconformer_hybrid_large_pc_blend_eu"
 
 
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_nl.csv DELETED
@@ -1,2 +0,0 @@
1
- Model,Model Base Class
2
- `stt_nl_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_nl_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_parakeet.csv DELETED
@@ -1,7 +0,0 @@
1
- Model,Language
2
- `parakeet-ctc-0.6b <https://huggingface.co/nvidia/parakeet-ctc-0.6b>`_,English
3
- `parakeet-ctc-1.1b <https://huggingface.co/nvidia/parakeet-ctc-1.1b>`_,English
4
- `parakeet-tdt-1.1b <https://huggingface.co/nvidia/parakeet-tdt-1.1b>`_,English
5
- `parakeet-tdt_ctc-110m <https://huggingface.co/nvidia/parakeet-tdt_ctc-110m>`_,English
6
- `parakeet-tdt_ctc-1.1b <https://huggingface.co/nvidia/parakeet-tdt_ctc-1.1b>`_,English
7
- `parakeet-tdt_ctc-0.6b-ja <https://huggingface.co/nvidia/parakeet-tdt_ctc-0.6b-ja>`_,Japanese
 
 
 
 
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_pl.csv DELETED
@@ -1,4 +0,0 @@
1
- Model,Model Base Class
2
- `stt_pl_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_pl_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
3
- `stt_pl_quartznet15x5 <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_pl_quartznet15x5>`_,EncDecCTCModel
4
- `stt_multilingual_fastconformer_hybrid_large_pc <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_multilingual_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
 
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_ru.csv DELETED
@@ -1,7 +0,0 @@
1
- Model,Model Base Class
2
- `stt_ru_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_ru_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
3
- `stt_ru_conformer_transducer_large <https://huggingface.co/nvidia/stt_ru_conformer_transducer_large>`_,EncDecRNNTBPEModel
4
- `stt_kk_ru_fastconformer_hybrid_large <https://huggingface.co/nvidia/stt_kk_ru_fastconformer_hybrid_large>`_,EncDecHybridRNNTCTCBPEModel
5
- `stt_ru_conformer_ctc_large <https://huggingface.co/nvidia/stt_ru_conformer_ctc_large>`_,EncDecCTCModelBPE
6
- `stt_ru_quartznet15x5 <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_ru_quartznet15x5>`_,EncDecCTCModel
7
- `stt_multilingual_fastconformer_hybrid_large_pc <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_multilingual_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
 
 
 
 
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_rw.csv DELETED
@@ -1,3 +0,0 @@
1
- Model,Model Base Class
2
- `stt_rw_conformer_ctc_large <https://huggingface.co/nvidia/stt_rw_conformer_ctc_large>`_,EncDecCTCModelBPE
3
- `stt_rw_conformer_transducer_large <https://huggingface.co/nvidia/stt_rw_conformer_transducer_large>`_,EncDecRNNTBPEModel
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_ua.csv DELETED
@@ -1,4 +0,0 @@
1
- Model,Model Base Class
2
- `stt_uk_citrinet_1024_gamma_0_25 <https://huggingface.co/nvidia/stt_uk_citrinet_1024_gamma_0_25>`_,EncDecCTCModel
3
- `stt_ua_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_ua_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
4
- `stt_multilingual_fastconformer_hybrid_large_pc <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_multilingual_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
 
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_uz.csv DELETED
@@ -1,2 +0,0 @@
1
- Model,Model Base Class
2
- `stt_uz_fastconformer_hybrid_large_pc <https://huggingface.co/nvidia/stt_uz_fastconformer_hybrid_large_pc>`_,EncDecHybridRNNTCTCBPEModel
 
 
 
NeMo-2.2.0/docs/source/asr/data/benchmark_zh.csv DELETED
@@ -1,4 +0,0 @@
1
- Model,Model Base Class
2
- `stt_zh_citrinet_512 <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_zh_citrinet_512>`_,EncDecCTCModel
3
- `stt_zh_citrinet_1024_gamma_0_25 <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_zh_citrinet_1024_gamma_0_25>`_,EncDecCTCModel
4
- `stt_zh_conformer_transducer_large <https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_zh_conformer_transducer_large>`_,EncDecRNNTModel
 
 
 
 
 
NeMo-2.2.0/docs/source/asr/data/scores/be/conformer_be.csv DELETED
@@ -1,3 +0,0 @@
1
- Model Name,Language,MCV Test-Set v10 (be)
2
- stt_be_conformer_ctc_large,be,4.7 %
3
- stt_be_conformer_transducer_large,be,3.8 %