Skip to content

Commit cedfd58

Browse files
committed
update ddp_pipeline.py 리뷰반영
1 parent f0780f0 commit cedfd58

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

advanced_source/ddp_pipeline.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
"""
2-
분산 데이터 병렬 처리와 파이프라인 병렬화를 사용한 트랜스포머 모델 학습
2+
분산 데이터 병렬 처리와 병렬 처리 파이프라인을 사용한 트랜스포머 모델 학습
33
=======================================================================
44
55
**Author**: `Pritam Damania <https://github.com/pritamdamania87>`_
66
**번역**: `백선희 <https://github.com/spongebob03>`_
77
88
이 튜토리얼은 `분산 데이터 병렬처리(Distributed Data Parallel) <https://pytorch.org/docs/stable/generated/torch.nn.parallel.DistributedDataParallel.html>`__ 와
9-
`파이프라인 병렬화 <https://pytorch.org/docs/stable/pipeline.html>`__
9+
`병렬 처리 파이프라인 <https://pytorch.org/docs/stable/pipeline.html>`__
1010
를 사용하여 여러 GPU에 걸친 거대한 트랜스포머(transformer) 모델을 어떻게 학습시키는지 보여줍니다.
1111
이번 튜토리얼은 `NN.TRANSFORMER 와 TORCHTEXT 로 시퀀스-투-시퀀스(SEQUENCE-TO-SEQUENCE) 모델링하기 <https://tutorials.pytorch.kr/beginner/transformer_tutorial.html>`__ 의
12-
확장판이며 파이프라인 병렬화가 어떻게 트랜스포머 모델 학습에 쓰이는지 증명하기 위해 이전 튜토리얼에서의
12+
확장판이며 분산 데이터 병렬 처리와 병렬 처리 파이프라인이 어떻게 트랜스포머 모델 학습에 쓰이는지 증명하기 위해 이전 튜토리얼에서의
1313
모델 규모를 증가시켰습니다.
1414
1515
선수과목(Prerequisites):
@@ -26,8 +26,8 @@
2626
#
2727

2828
######################################################################
29-
# ``PositionalEncoding`` 모듈은 시퀀스에서 토큰의 상대적, 절대 위치에 대한
30-
# 일부 정보를 주입합니다.
29+
# ``PositionalEncoding`` 모듈은 시퀀스에서 토큰의 상대적, 절대적 위치에 대한
30+
# 몇몇 정보를 주입합니다.
3131
# 위치 인코딩은 임베딩과 같은 차원을 가지므로
3232
# 둘을 합칠 수 있습니다. 여기서, 주파수가 다른 ``sine`` 과 ``cosine`` 기능을
3333
# 사용합니다.
@@ -62,18 +62,18 @@ def forward(self, x):
6262

6363
######################################################################
6464
# 이번 튜토리얼에서는, 트랜스포머 모델을 두 개의 GPU에 걸쳐서 나누고
65-
# 파이프라인 병렬화로 학습시켜 보겠습니다. 추가로,
65+
# 병렬 처리 파이프라인으로 학습시켜 보겠습니다. 추가로,
6666
# `분산 데이터 병럴 처리 <https://pytorch.org/docs/stable/generated/torch.nn.parallel.DistributedDataParallel.html>`__
6767
# 를 사용하여 이 파이프라인의 두 복제를 훈련시킵니다. 한 프로세스는
6868
# GPUs 0, 1에 거쳐 파이프를 구동하고 다른 프로세스는 GPUs 2, 3에서 파이프를 구동합니다. 그 다음, 이 두
69-
# 프로세스는 분산 데이터 병렬처리로 두 복제본을 학습시킵니다.
69+
# 프로세스는 분산 데이터 병렬처리로 두 복제본(replica)을 학습시킵니다.
7070
# 모델은 바로 `NN.TRANSFORMER 와 TORCHTEXT 로 시퀀스-투-시퀀스(SEQUENCE-TO-SEQUENCE) 모델링하기
7171
# <https://tutorials.pytorch.kr/beginner/transformer_tutorial.html>`__ 튜토리얼과
7272
# 똑같은 모델이지만 두 단계로 나뉩니다. 대부분 파라미터(parameter)들은
7373
# `nn.TransformerEncoder <https://pytorch.org/docs/stable/generated/torch.nn.TransformerEncoder.html>`__ 계층(layer)에 포함됩니다.
7474
# `nn.TransformerEncoder <https://pytorch.org/docs/stable/generated/torch.nn.TransformerEncoder.html>`__ 는
7575
# `nn.TransformerEncoderLayer <https://pytorch.org/docs/stable/generated/torch.nn.TransformerEncoderLayer.html>`__ 의 ``nlayers`` 로 구성되어 있습니다.
76-
# 결과적으로, ``nn.TransformerEncoder`` 에 중점을 두고 있으며
76+
# 결과적으로, 이 튜토리얼에서는 ``nn.TransformerEncoder`` 에 중점을 두고 있으며
7777
# ``nn.TransformerEncoderLayer`` 의 절반은 한 GPU에 두고
7878
# 나머지 절반은 다른 GPU에 있도록 모델을 분할합니다. 이를 위해서 ``Encoder`` 와
7979
# ``Decoder`` 섹션을 분리된 모듈로 빼낸 다음, 원본 트랜스포머 모듈을
@@ -218,13 +218,13 @@ def batchify(data, bsz, rank, world_size, is_train=False):
218218
# ``get_batch()`` 함수는 트랜스포머 모델을 위한 입력과 타겟 시퀀스를
219219
# 생성합니다. 이 함수는 소스 데이터를 ``bptt`` 길이를 가진 덩어리로 세분화합니다.
220220
# 언어 모델링 과제를 위해서, 모델은
221-
# 다음 단어인 ``Target`` 이 필요합니다. 에를 들어 ``bptt`` 의 값이 2라면,
221+
# 다음 단어인 ``Target`` 이 필요합니다. 예를 들어 ``bptt`` 의 값이 2라면,
222222
# ``i`` = 0 일 때 다음의 2 개 변수(Variable)를 얻을 수 있습니다:
223223
#
224224
# .. image:: ../_static/img/transformer_input_target.png
225-
#
226-
# 청크가 차원 0을 속하며
227-
# 트랜스포머 모델의 ''S'' 차원과 일치한다는 것을 유의해야 합니다.
225+
#
226+
# 청크가 차원 0에 속하며
227+
# 트랜스포머 모델의 ``S`` 차원과 일치한다는 것을 유의해야 합니다.
228228
# 배치 차원 ``N`` 은 1 차원에 해당합니다.
229229
#
230230

@@ -244,21 +244,21 @@ def get_batch(source, i):
244244

245245

246246
######################################################################
247-
# 파이프라인 병렬화를 활용한 대형 트랜스포머 모델 학습을 증명하기 위해,
248-
# 트랜스포머 계층 규모를 적절히 확장시킵니다. We use an embedding
249-
# 4096차원의 임베딩 벡터, 4096의 은닉 사이즈, 16개의 어텐션 헤드(attention head)와 총 8 개의
247+
# 병렬 처리 파이프라인을 활용한 대형 트랜스포머 모델 학습을 증명하기 위해,
248+
# 트랜스포머 계층 규모를 적절히 확장시킵니다.
249+
# 4096차원의 임베딩 벡터, 4096의 은닉 사이즈, 16개의 어텐션 헤드(attention head)와 총 8 개의
250250
# 트랜스포머 계층 (``nn.TransformerEncoderLayer``)를 사용합니다. 이는 최대
251251
# **~1 억** 개의 파라미터를 갖는 모델을 생성합니다.
252252
#
253253
# `RPC 프레임워크 <https://pytorch.org/docs/stable/rpc.html>`__ 를 초기화해야 합니다.
254254
# Pipe는 `RRef <https://pytorch.org/docs/stable/rpc.html#rref>`__ 를 통해 RPC 프레임워크에 의존하는데
255255
# 이는 향후 호스트 파이프라인을 교차 확장할 수 있도록 하기 때문입니다.
256-
# 이때 RPC 프레임워크는 오직 하나의 하나의 worker로 초기화를 해야 하는데,
256+
# 이때 RPC 프레임워크는 오직 하나의 하나의 worker로 초기화를 해야 하는데,
257257
# 여러 GPU를 다루기 위해 프로세스 하나만 사용하고 있기 때문입니다.
258258
#
259259
# 그런 다음 파이프라인은 한 GPU에 8개의 트랜스포머와
260-
# 다른 GPU에 8개의 트랜스포머 레이어로 초기화됩니다. 한 파이프는 GPU 0, 1에 거쳐 설정되고
261-
# 다른 하나는 GPU 2, 3에 설정됩니다. 그런 다음 분산 데이터 병렬을 사용하여 두 파이프가 모두 복제됩니다.
260+
# 다른 GPU에 8개의 트랜스포머 계층으로 초기화됩니다. 한 파이프는 GPU 0, 1에 거쳐 설정되고
261+
# 다른 하나는 GPU 2, 3에 설정됩니다. 그런 다음 DistributedDataParallel을 사용하여 두 파이프가 모두 복제됩니다.
262262

263263
# In 'run_worker'
264264
ntokens = len(vocab) # the size of vocabulary

0 commit comments

Comments
 (0)