|
7 | 7 | |
8 | 8 | μ΄ νν 리μΌμ `λΆμ° λ°μ΄ν° λ³λ ¬μ²λ¦¬(Distributed Data Parallel) <https://pytorch.org/docs/stable/generated/torch.nn.parallel.DistributedDataParallel.html>`__ μ |
9 | 9 | `λ³λ ¬ μ²λ¦¬ νμ΄νλΌμΈ <https://pytorch.org/docs/stable/pipeline.html>`__ |
10 | | -λ₯Ό μ¬μ©νμ¬ μ¬λ¬ GPUμ κ±ΈμΉ κ±°λν νΈλμ€ν¬λ¨Έ(transformer) λͺ¨λΈμ μ΄λ»κ² νμ΅μν€λμ§ λ³΄μ¬μ€λλ€. |
11 | | -μ΄λ² νν 리μΌμ `NN.TRANSFORMER μ TORCHTEXT λ‘ μνμ€-ν¬-μνμ€(SEQUENCE-TO-SEQUENCE) λͺ¨λΈλ§νκΈ° <https://tutorials.pytorch.kr/beginner/transformer_tutorial.html>`__ μ |
12 | | -νμ₯νμ΄λ©° λΆμ° λ°μ΄ν° λ³λ ¬ μ²λ¦¬μ λ³λ ¬ μ²λ¦¬ νμ΄νλΌμΈμ΄ μ΄λ»κ² νΈλμ€ν¬λ¨Έ λͺ¨λΈ νμ΅μ μ°μ΄λμ§ μ¦λͺ
νκΈ° μν΄ μ΄μ νν 리μΌμμμ |
| 10 | +λ₯Ό μ¬μ©νμ¬ μ¬λ¬ GPUμ κ±ΈμΉ κ±°λν νΈλμ€ν¬λ¨Έ(Transformer) λͺ¨λΈμ μ΄λ»κ² νμ΅μν€λμ§ λ³΄μ¬μ€λλ€. |
| 11 | +μ΄λ² νν 리μΌμ `nn.Transformer μ TorchText λ‘ μνμ€-ν¬-μνμ€(Sequence-to-Sequence) λͺ¨λΈλ§νκΈ° <https://tutorials.pytorch.kr/beginner/transformer_tutorial.html>`__ μ |
| 12 | +νμ₯νμ΄λ©° λΆμ° λ°μ΄ν° λ³λ ¬ μ²λ¦¬μ λ³λ ¬ μ²λ¦¬ νμ΄νλΌμΈμ΄ μ΄λ»κ² νΈλμ€ν¬λ¨Έ λͺ¨λΈ νμ΅μ μ°μ΄λμ§ λ³΄μ¬μ£ΌκΈ° μν΄ μ΄μ νν 리μΌμμμ |
13 | 13 | λͺ¨λΈ κ·λͺ¨λ₯Ό μ¦κ°μμΌ°μ΅λλ€. |
14 | 14 |
|
15 | 15 | μ μκ³Όλͺ©(Prerequisites): |
16 | 16 |
|
17 | 17 | * `Pipeline Parallelism <https://pytorch.org/docs/stable/pipeline.html>`__ |
18 | | - * `NN.TRANSFORMER μ TORCHTEXT λ‘ μνμ€-ν¬-μνμ€(SEQUENCE-TO-SEQUENCE) λͺ¨λΈλ§νκΈ° <https://tutorials.pytorch.kr/beginner/transformer_tutorial.html>`__ |
| 18 | + * `nn.Transformer μ TorchText λ‘ μνμ€-ν¬-μνμ€(Sequence-to-Sequence) λͺ¨λΈλ§νκΈ° <https://tutorials.pytorch.kr/beginner/transformer_tutorial.html>`__ |
19 | 19 | * `λΆμ° λ°μ΄ν° λ³λ ¬ μ²λ¦¬ μμνκΈ° <https://tutorials.pytorch.kr/intermediate/ddp_tutorial.html>`__ |
20 | 20 | """ |
21 | 21 |
|
|
29 | 29 | # ``PositionalEncoding`` λͺ¨λμ μνμ€μμ ν ν°μ μλμ , μ λμ μμΉμ λν |
30 | 30 | # λͺλͺ μ 보λ₯Ό μ£Όμ
ν©λλ€. |
31 | 31 | # μμΉ μΈμ½λ©μ μλ² λ©κ³Ό κ°μ μ°¨μμ κ°μ§λ―λ‘ |
32 | | -# λμ ν©μΉ μ μμ΅λλ€. μ¬κΈ°μ, μ£Όνμκ° λ€λ₯Έ ``sine`` κ³Ό ``cosine`` κΈ°λ₯μ |
| 32 | +# λμ ν©μΉ μ μμ΅λλ€. μ¬κΈ°μ, μ£Όνμκ° λ€λ₯Έ ``sine`` κ³Ό ``cosine`` ν¨μλ₯Ό |
33 | 33 | # μ¬μ©ν©λλ€. |
34 | 34 |
|
35 | 35 | import sys |
@@ -63,11 +63,11 @@ def forward(self, x): |
63 | 63 | ###################################################################### |
64 | 64 | # μ΄λ² νν 리μΌμμλ, νΈλμ€ν¬λ¨Έ λͺ¨λΈμ λ κ°μ GPUμ κ±Έμ³μ λλκ³ |
65 | 65 | # λ³λ ¬ μ²λ¦¬ νμ΄νλΌμΈμΌλ‘ νμ΅μμΌ λ³΄κ² μ΅λλ€. μΆκ°λ‘, |
66 | | -# `λΆμ° λ°μ΄ν° λ³λ΄ μ²λ¦¬ <https://pytorch.org/docs/stable/generated/torch.nn.parallel.DistributedDataParallel.html>`__ |
| 66 | +# `λΆμ° λ°μ΄ν° λ³λ ¬ μ²λ¦¬ <https://pytorch.org/docs/stable/generated/torch.nn.parallel.DistributedDataParallel.html>`__ |
67 | 67 | # λ₯Ό μ¬μ©νμ¬ μ΄ νμ΄νλΌμΈμ λ 볡μ λ₯Ό νλ ¨μν΅λλ€. ν νλ‘μΈμ€λ |
68 | 68 | # GPUs 0, 1μ κ±°μ³ νμ΄νλ₯Ό ꡬλνκ³ λ€λ₯Έ νλ‘μΈμ€λ GPUs 2, 3μμ νμ΄νλ₯Ό ꡬλν©λλ€. κ·Έ λ€μ, μ΄ λ |
69 | 69 | # νλ‘μΈμ€λ λΆμ° λ°μ΄ν° λ³λ ¬μ²λ¦¬λ‘ λ 볡μ λ³Έ(replica)μ νμ΅μν΅λλ€. |
70 | | -# λͺ¨λΈμ λ°λ‘ `NN.TRANSFORMER μ TORCHTEXT λ‘ μνμ€-ν¬-μνμ€(SEQUENCE-TO-SEQUENCE) λͺ¨λΈλ§νκΈ° |
| 70 | +# λͺ¨λΈμ λ°λ‘ `nn.Transformer μ TorchText λ‘ μνμ€-ν¬-μνμ€(Sequence-to-Sequence) λͺ¨λΈλ§νκΈ° |
71 | 71 | # <https://tutorials.pytorch.kr/beginner/transformer_tutorial.html>`__ νν 리μΌκ³Ό |
72 | 72 | # λκ°μ λͺ¨λΈμ΄μ§λ§ λ λ¨κ³λ‘ λλ©λλ€. λλΆλΆ νλΌλ―Έν°(parameter)λ€μ |
73 | 73 | # `nn.TransformerEncoder <https://pytorch.org/docs/stable/generated/torch.nn.TransformerEncoder.html>`__ κ³μΈ΅(layer)μ ν¬ν¨λ©λλ€. |
@@ -127,7 +127,7 @@ def forward(self, inp): |
127 | 127 |
|
128 | 128 |
|
129 | 129 | ###################################################################### |
130 | | -# κ°μ λ κ°μ GPUμμ μ체 νμ΄νλΌμΈμ ꡬλνλ λ κ°μ§ νλ‘μΈμ€λ₯Ό μμν©λλ€. |
| 130 | +# κ°κ° λ κ°μ GPUμμ μ체 νμ΄νλΌμΈμ ꡬλνλ λ κ°μ νλ‘μΈμ€λ₯Ό μμν©λλ€. |
131 | 131 | # ``run_worker`` λ κ° νλ‘μΈμ€μ μ€νλ©λλ€. |
132 | 132 |
|
133 | 133 | def run_worker(rank, world_size): |
@@ -244,15 +244,15 @@ def get_batch(source, i): |
244 | 244 |
|
245 | 245 |
|
246 | 246 | ###################################################################### |
247 | | -# λ³λ ¬ μ²λ¦¬ νμ΄νλΌμΈμ νμ©ν λν νΈλμ€ν¬λ¨Έ λͺ¨λΈ νμ΅μ μ¦λͺ
νκΈ° μν΄, |
| 247 | +# λ³λ ¬ μ²λ¦¬ νμ΄νλΌμΈμ νμ©ν λν νΈλμ€ν¬λ¨Έ λͺ¨λΈ νμ΅μ 보μ΄κΈ° μν΄, |
248 | 248 | # νΈλμ€ν¬λ¨Έ κ³μΈ΅ κ·λͺ¨λ₯Ό μ μ ν νμ₯μν΅λλ€. |
249 | 249 | # 4096μ°¨μμ μλ² λ© λ²‘ν°, 4096μ μλ μ¬μ΄μ¦, 16κ°μ μ΄ν
μ
ν€λ(attention head)μ μ΄ 8 κ°μ |
250 | 250 | # νΈλμ€ν¬λ¨Έ κ³μΈ΅ (``nn.TransformerEncoderLayer``)λ₯Ό μ¬μ©ν©λλ€. μ΄λ μ΅λ |
251 | 251 | # **~1 μ΅** κ°μ νλΌλ―Έν°λ₯Ό κ°λ λͺ¨λΈμ μμ±ν©λλ€. |
252 | 252 | # |
253 | 253 | # `RPC νλ μμν¬ <https://pytorch.org/docs/stable/rpc.html>`__ λ₯Ό μ΄κΈ°νν΄μΌ ν©λλ€. |
254 | | -# Pipeλ `RRef <https://pytorch.org/docs/stable/rpc.html#rref>`__ λ₯Ό ν΅ν΄ RPC νλ μμν¬μ μμ‘΄νλλ° |
255 | | -# μ΄λ ν₯ν νΈμ€νΈ νμ΄νλΌμΈμ κ΅μ°¨ νμ₯ν μ μλλ‘ νκΈ° λλ¬Έμ
λλ€. |
| 254 | +# Pipeκ° ν₯ν νΈμ€νΈ νμ΄νλΌμΈμ κ΅μ°¨ νμ₯ν μ μλλ‘ νλ `RRef <https://pytorch.org/docs/stable/rpc.html#rref>`__ λ₯Ό ν΅ν΄ |
| 255 | +# RPC νλ μμν¬μ μμ‘΄νκΈ° λλ¬Έμ
λλ€. |
256 | 256 | # μ΄λ RPC νλ μμν¬λ μ€μ§ νλμ νλμ workerλ‘ μ΄κΈ°νλ₯Ό ν΄μΌ νλλ°, |
257 | 257 | # μ¬λ¬ GPUλ₯Ό λ€λ£¨κΈ° μν΄ νλ‘μΈμ€ νλλ§ μ¬μ©νκ³ μκΈ° λλ¬Έμ
λλ€. |
258 | 258 | # |
|
0 commit comments