Translate torchrec_tutorial #599 - #600
Conversation
bub3690
left a comment
There was a problem hiding this comment.
๊ณ ์ํ์
จ์ต๋๋ค. ์ด๋ ค์ด ๊ธ์ด๊ตฐ์..
์คํ ์์ฃผ๋ก ์ ๊ฒํ์ต๋๋ค.
| `dlrm <https://github.com/pytorch/torchrec/tree/main/examples/dlrm>`__ | ||
| example, which includes multinode training on the criteo terabyte | ||
| dataset, using Metaโs `DLRM <https://arxiv.org/abs/1906.00091>`__. | ||
| ์์ ๋ฅผ ์ฐธ๊ณ ํ์ธ์. ์ด ์์ ๋ Metaโ์ `DLRM <https://arxiv.org/abs/1906.00091>`__ ์ ์ฌ์ฉํ์ฌ |
There was a problem hiding this comment.
์ ๊ฐ ์์ผ๋ โ๋ ๋นผ๋ ๋๊ฒ ์ต๋๋ค
| ์๊ตฌ ์ฌํญ: python >= 3.7 | ||
|
|
||
| We highly recommend CUDA when using TorchRec. If using CUDA: cuda >= 11.0 | ||
| TorchRec์ ์ฌ์ฉํ ๋๋ CUDA๋ฅผ ์ ๊ทน ์ถ์ฒํฉ๋๋ค. CUDA๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ: cuda > = 11.0 |
There was a problem hiding this comment.
์๋ณธ๊ณผ ๋ฌ๋ฆฌ> ๋ค์ ๋์ด์ฐ๊ธฐ๊ฐ ์ถ๊ฐ๋์ต๋๋ค.
| number of entity IDs per feature per example. In order to enable this | ||
| โjaggedโ representation, we use the TorchRec datastructure | ||
| |KeyedJaggedTensor|_ (KJT). | ||
| ์์ ๋ฐ ๊ธฐ๋ฅ๋ณ๋ก ์ํฐํฐ ID๊ฐ ์์์ ์์ธ ๋ค์ํ ์์ ๋ฅผ ํจ์จ์ ์ผ๋ฃ ๋ํ๋ด์ผ ํฉ๋๋ค. |
This comment was marked as abuse.
This comment was marked as abuse.
Sorry, something went wrong.
|
|
||
| Putting it all together, querying our distributed model with a KJT minibatch | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| ์ด์ ๋ฆฌ: KJT ๋ฏธ๋๋ฐฐ์น๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ์ฐ ๋ชจ๋ธ ์ฟผ๋ฆฌํ๊ธฐ |
There was a problem hiding this comment.
์ด์ ๋ฆฌ ๋ผ๋ ๋ด์ฉ์ด ์๋์?
There was a problem hiding this comment.
๋ค๋ฆ๊ฒ ์ดํดํ์ต๋๋ค.
"์ด์ ๋ฆฌํ์ฌ, KJT ๋ฏธ๋๋ฐฐ์น๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ์ฐ ๋ชจ๋ธ ์ฟผ๋ฆฌํ๊ธฐ"
: ๋์ ํ๋ฌธ์ฅ์ผ๋ก ํ๋๊ฒ ์ด๋ค๊ฐ์?
hyoyoung
left a comment
There was a problem hiding this comment.
๊ธด ๊ธ ๋ฒ์ญํ์๋๋ผ ์๊ณ ํ์ จ์ต๋๋ค
๋ช๊ฐ์ง ์์ ์ฌํญ์ ์ ์๋๋ฆฝ๋๋ค
| called |DistributedModelParallel|_, | ||
| or DMP. Like PyTorchโs DistributedDataParallel, DMP wraps a model to | ||
| enable distributed training. | ||
| ์ถ์ฒ ์์คํ ์ ๊ตฌ์ถํ ๋, ์ ํ์ด๋ ํ์ด์ง์ ๊ฐ์ ์ํฐํฐ๋ฅผ ์๋ฒ ๋๋๋ก ํํํ๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. |
There was a problem hiding this comment.
entities๋ ๋ณดํต ์กด์ฌ๋ ๋
๋ฆฝ์ฒด ๋ฑ์ผ๋ก ๋ฒ์ญ๋๋
์ฌ๊ธฐ์๋ ๊ฐ์ฒด๋ก ์์ญํด๋ ์ข์๋ฏํฉ๋๋ค
embedding์ ๋ด์ฅ๋๋ค๊ณ ํ๊ฑฐ๋, ๋ฒ์ญํ์ง ์๊ณ ์๋ฒ ๋ฉ์ผ๋ก ๋ผ๊ณ ํด๋ ์ข์๋ฏ ํฉ๋๋ค
| enable distributed training. | ||
| ์ถ์ฒ ์์คํ ์ ๊ตฌ์ถํ ๋, ์ ํ์ด๋ ํ์ด์ง์ ๊ฐ์ ์ํฐํฐ๋ฅผ ์๋ฒ ๋๋๋ก ํํํ๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. | ||
| Meta AI์ `๋ฅ๋ฌ๋ ์ถ์ฒ ๋ชจ๋ธ <https://arxiv.org/abs/1906.00091>`__ ๋๋ DLRM์ ์๋ก ๋ค ์ ์์ต๋๋ค. | ||
| ์ํฐํฐ์ ์๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ, ์๋ฒ ๋๋ ํ ์ด๋ธ์ ํฌ๊ธฐ๊ฐ ๋จ์ผ GPU์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๊ณผํ ์ ์์ต๋๋ค. |
There was a problem hiding this comment.
์๋ฒ ๋ฉ ํ ์ด๋ธ์ด ์กฐ๊ธ ๋ ์์ฐ์ค๋ฝ์ง ์์๊น์?
|
|
||
| Distributed Setup | ||
| ~~~~~~~~~~~~~~~~~ | ||
| ๋ถ์ฐ ์ ์ |
There was a problem hiding this comment.
์ ์ ์ ์ค์ ์ผ๋ก ์ํ ๊ฐ๋ฅ ํ ๋ฏ ๋ณด์ ๋๋ค. ์๋ ๋ฌธ๋จ์์๋ ๊ทธ๋ ๊ฒ ์ฌ์ฉํ์ ๊ฑฐ ๊ฐ์ต๋๋ค
| ~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| Now, weโre ready to wrap our model with |DistributedModelParallel|_ (DMP). Instantiating DMP will: | ||
| ์ด์ ๋ชจ๋ธ์ |DistributedModelParallel|_ (DMP)๋ก ๋ํํ ์ค๋น๊ฐ ๋์์ต๋๋ค. |
There was a problem hiding this comment.
๋ํ์ ๊ฐ์ธ๋๊ธฐ๋ก ์ํ ๊ฐ๋ฅํ ๋ฏ ํฉ๋๋ค
There was a problem hiding this comment.
@hyoyoung ์ฉ์ด์ง์ wrapper๋ฅผ ๋ํผ๋ก ๋ฒ์ญํ๋ค๊ณ ํ์ฌ ๋ํ์ด๋ผ๊ณ ์ฌ์ฉํ์๋๋ฐ, ์ํํ๋ ๊ฒ์ด ์ข์๊น์?
There was a problem hiding this comment.
wrapper๋ ์ฉ์ด์ง์ ๋ํผ๋ผ๊ณ ๋์ด์๊ณ , ๋ณดํต ๋ณ๊ธฐ๋ฅผ ํด์ ์ฐ๊ณคํฉ๋๋ค
์ทจํฅ์ฐจ์ ๊ฐ๊น์ด๋ฐ, ์ ๋ ๋ํผ๋ ๋ฐ๋ก ๋ฒ์ญํ๊ธฐ๊ฐ ์ด๋ ต๋ค๊ณ ์๊ฐํด์ ๋ํผ(wrapper)๋ก ์ฐ๊ธฐ๋ฅผ ๊ถ์ ํ๊ณ
wrapping์ ๊ฐ์ธ๋๊ธฐ, ํฌ์ฅํ๊ธฐ๋ก ์ํํ๊ธฐ ์ฝ๋ค๊ณ ์๊ฐํด์ ๋ฐ๊ฟ๋ฌ๋ผ๊ณ ์์ฒญ์ ํ๋ ํธ์
๋๋ค.
ํด๋น ๋ถ๋ถ ๋ค์ ์ฝ์ด๋ณด์๊ณ , ๋ํ์ด ๋ ๋ซ๋ค๋ฉด, ๋๊ธ๋ก ์๊ธฐํด์ฃผ์ ๋ค์ ๊ทธ๋๋ก ๋์ ๋ ๋ฌด๋ฐฉํฉ๋๋ค.
| embedding table(s) (i.e., the EmbeddingBagCollection). | ||
| 2. Actually shard the model. This includes allocating memory for each | ||
| embedding table on the appropriate device(s). | ||
| 1. ๋ชจ๋ธ์ ์ค๋ฉํ๋ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํฉ๋๋ค. DMP๋ ์ด์ฉ ๊ฐ๋ฅํ โshardersโ๋ฅผ ์์งํ๊ณ |
There was a problem hiding this comment.
์ฌ๊ธฐ์ ์ค๋ฉ(shard)๋ผ๊ณ ๋ณ๊ธฐํด๋ ์ข์๋ฏ ํฉ๋๋ค
| Note that the KJT batch size is | ||
| ``batch_size = len(lengths)//len(keys)``. In the above example, | ||
| batch_size is 3. | ||
| KJT ๋ฐฐ์น ํฌ๊ธฐ๋ ``batch_size = len(lengths)//len(keys)`` ์ ๋๋ค. |
There was a problem hiding this comment.
note ๋ถ๋ถ์ ์ด๋ ค์ ๋ฒ์ญํด๋ ์ข์๋ฏ ํฉ๋๋ค
KJT ๋ฐฐ์น ํฌ๊ธฐ๋ batch_size = len(lengths)//len(keys) ์ธ ๊ฒ์ ๋์ฌ๊ฒจ ๋ด์ฃผ์ธ์.
์ ๋๋ ์ด๋จ๊น์?
|
|
||
| Finally, we can query our model using our minibatch of products and | ||
| users. | ||
| ๋ง์ง๋ง์ผ๋ก ์ ํ๊ณผ ์ฌ์ฉ์์ ๋ฏธ๋๋ฐฐ์น๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ์ ์ฟผ๋ฆฌํฉ๋๋ค. |
There was a problem hiding this comment.
์ฟผ๋ฆฌ๋ ์ง์๋ก ์ํํด๋ ๋ ๋ฏํฉ๋๋ค
hyoyoung
left a comment
There was a problem hiding this comment.
๋ช๊ฐ์ง ์ถ๊ฐ ์ ์์ ๋๋ฆฝ๋๋ค
| called |DistributedModelParallel|_, | ||
| or DMP. Like PyTorchโs DistributedDataParallel, DMP wraps a model to | ||
| enable distributed training. | ||
| ์ถ์ฒ ์์คํ ์ ๊ตฌ์ถํ ๋, ์ ํ์ด๋ ํ์ด์ง์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์๋ฒ ๋ฉ์ผ๋ก ํํํ๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. |
There was a problem hiding this comment.
๊ตฌ์ถ๋ณด๋ค๋ ์กฐ๊ธ ๋ ์ฌ์ด ๋จ์ด์ธ, ๋ง๋ค ๋๋ก ๋ฐ๊พธ๋๊ฑด ์ด๋จ๊น์?
| enable distributed training. | ||
| ์ถ์ฒ ์์คํ ์ ๊ตฌ์ถํ ๋, ์ ํ์ด๋ ํ์ด์ง์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์๋ฒ ๋ฉ์ผ๋ก ํํํ๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. | ||
| Meta AI์ `๋ฅ๋ฌ๋ ์ถ์ฒ ๋ชจ๋ธ <https://arxiv.org/abs/1906.00091>`__ ๋๋ DLRM์ ์๋ก ๋ค ์ ์์ต๋๋ค. | ||
| ์ํฐํฐ์ ์๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ, ์๋ฒ ๋ฉ ํ ์ด๋ธ์ ํฌ๊ธฐ๊ฐ ๋จ์ผ GPU์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๊ณผํ ์ ์์ต๋๋ค. |
There was a problem hiding this comment.
์์๋ ๊ฐ์ฒด์ธ๋ฐ, ์ฌ๊ธฐ์๋ ์ํฐํฐ๋ก ๋์ด์์ต๋๋ค
| ์ถ์ฒ ์์คํ ์ ๊ตฌ์ถํ ๋, ์ ํ์ด๋ ํ์ด์ง์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์๋ฒ ๋ฉ์ผ๋ก ํํํ๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. | ||
| Meta AI์ `๋ฅ๋ฌ๋ ์ถ์ฒ ๋ชจ๋ธ <https://arxiv.org/abs/1906.00091>`__ ๋๋ DLRM์ ์๋ก ๋ค ์ ์์ต๋๋ค. | ||
| ์ํฐํฐ์ ์๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ, ์๋ฒ ๋ฉ ํ ์ด๋ธ์ ํฌ๊ธฐ๊ฐ ๋จ์ผ GPU์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๊ณผํ ์ ์์ต๋๋ค. | ||
| ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ๋ชจ๋ธ ๋ณ๋ ฌํ์ ์ผ์ข ์ผ๋ก, ์๋ฒ ๋ฉ ํ ์ด๋ธ์ ์ฌ๋ฌ ๋๋ฐ์ด์ค๋ก ์ค๋ฉํ๋ ๊ฒ์ ๋๋ค. |
There was a problem hiding this comment.
์๋ ์ค๋ฉ(shard) ๋ณ๊ธฐ๋ฅผ ์ฌ๊ธฐ๋ก ๋ฐ๊พธ๋๊ฒ ๋ ์ข์๊ฑฐ ๊ฐ์ต๋๋ค
| ~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| Now, weโre ready to wrap our model with |DistributedModelParallel|_ (DMP). Instantiating DMP will: | ||
| ์ด์ ๋ชจ๋ธ์ |DistributedModelParallel|_ (DMP)๋ก ๋ํํ ์ค๋น๊ฐ ๋์์ต๋๋ค. |
There was a problem hiding this comment.
wrapper๋ ์ฉ์ด์ง์ ๋ํผ๋ผ๊ณ ๋์ด์๊ณ , ๋ณดํต ๋ณ๊ธฐ๋ฅผ ํด์ ์ฐ๊ณคํฉ๋๋ค
์ทจํฅ์ฐจ์ ๊ฐ๊น์ด๋ฐ, ์ ๋ ๋ํผ๋ ๋ฐ๋ก ๋ฒ์ญํ๊ธฐ๊ฐ ์ด๋ ต๋ค๊ณ ์๊ฐํด์ ๋ํผ(wrapper)๋ก ์ฐ๊ธฐ๋ฅผ ๊ถ์ ํ๊ณ
wrapping์ ๊ฐ์ธ๋๊ธฐ, ํฌ์ฅํ๊ธฐ๋ก ์ํํ๊ธฐ ์ฝ๋ค๊ณ ์๊ฐํด์ ๋ฐ๊ฟ๋ฌ๋ผ๊ณ ์์ฒญ์ ํ๋ ํธ์
๋๋ค.
ํด๋น ๋ถ๋ถ ๋ค์ ์ฝ์ด๋ณด์๊ณ , ๋ํ์ด ๋ ๋ซ๋ค๋ฉด, ๋๊ธ๋ก ์๊ธฐํด์ฃผ์ ๋ค์ ๊ทธ๋๋ก ๋์ ๋ ๋ฌด๋ฐฉํฉ๋๋ค.
| ์คํ์ ์ ์ํ์ค๊ฐ ๊ฐ ์์ ์์ ๊ฐ์ ธ์ค๋ ๊ฐ์ ์์ ํฉ์ธ 1-D ํ ์์ ๋๋ค. | ||
|
|
||
| Letโs look at an example, recreating the product EmbeddingBag above: | ||
| ์์ EmbeddingBag๋ฅผ ๋ง๋๋ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. |
There was a problem hiding this comment.
recreating the product์ ์๋ฏธ๋ฅผ ์ด๋ ค์ฃผ๋๊ฒ ์กฐ๊ธ ๋ ๋์๊ฑฐ ๊ฐ์ต๋๋ค.
์์ ์์ ์ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์๋ฒ ๋ฉ๋ฐฑ์ ๋ง๋ค์์ผ๋๊น์
์์ EmbeddingBag์ ๋ค์ ๋ง๋ค์ด๋ณด๋, ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| number of entity IDs per feature per example. In order to enable this | ||
| โjaggedโ representation, we use the TorchRec datastructure | ||
| |KeyedJaggedTensor|_ (KJT). | ||
| ์์ ๋ฐ ๊ธฐ๋ฅ๋ณ๋ก ์ํฐํฐ ID๊ฐ ์์์ ์์ธ ๋ค์ํ ์์ ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ํ๋ด์ผ ํฉ๋๋ค. |
| bags, โproductโ and โuserโ. Assume the minibatch is made up of three | ||
| examples for three users. The first of which has two product IDs, the | ||
| second with none, and the third with one product ID. | ||
| โproductโ ์ โuserโ, 2๊ฐ์ ์๋ฒ ๋ฉ ๊ทธ๋ฃน์ ์ปฌ๋ ์ ์ ์ฐธ์กฐํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ด ๋๋ค. |
There was a problem hiding this comment.
์์์๋ embeeding bags๋ฅผ ๋๊ฒ EmbeddingBag๋ผ๊ณ ๋ฒ์ญ์ด ๋์ด์์ต๋๋ค.
์ฌ๊ธฐ์๋ ๋ง์ถ๋๊ฒ ๋ ์ข์๋ฏํฉ๋๋ค
There was a problem hiding this comment.
์๋ฌธ์์ EmbeddingBag์ผ๋ก ์ฌ์ฉํ ๋ถ๋ถ๊ณผ embedding bags๋ก ์ฌ์ฉํ ๋ถ๋ถ์ ๊ตฌ๋ถํด์ ๋ฒ์ญํ๊ณ ์ ํ์๋๋ฐ์.
์ ์ํด์ฃผ์ ๋๋ก ํต์ผํด๋ ์๋ฏธ๊ฐ ๋ฌ๋ผ์ง์ง ์์ผ๋ ํต์ผํ๊ฒ ์ต๋๋ค.
| This tutorial will cover three pieces of TorchRec: the ``nn.module`` |EmbeddingBagCollection|_, the |DistributedModelParallel|_ API, and | ||
| the datastructure |KeyedJaggedTensor|_. | ||
| ์ด ํํ ๋ฆฌ์ผ์์๋ TorchRec์ 3๊ฐ์ง ๋ถ๋ถ์ ๋ค๋ฃน๋๋ค. | ||
| ๊ทธ 3๊ฐ์ง๋ ``nn.module`` |EmbeddingBagCollection|_, |DistributedModelParallel|_ API, ๋ฐ์ดํฐ ๊ตฌ์กฐ |KeyedJaggedTensor|_ ์ ๋๋ค. |
There was a problem hiding this comment.
์๋ฌธ์ ๋ป์ ์ถฉ์คํ๊ฒ ๋ฒ์ญ์ ํด์ฃผ์
จ๋๋ฐ
'์ด ํํ ๋ฆฌ์ผ์์๋ A, B, C ์ด๋ ๊ฒ TorchRec์ ์ธ ๊ฐ์ง ๋ด์ฉ์ ๋ค๋ฃฐ ์์ ์
๋๋ค.' ์ด๋ฐ์์ผ๋ก ํํ๋๋๊ฒ ๋ ์์ฐ์ค๋ฝ์ง ์์๊น ์ ์๋๋ ค๋ด
๋๋ค.
| Query vanilla nn.EmbeddingBag with input and offsets | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| ์ ๋ ฅ๊ณผ ์คํ์ ์ด ์๋ ๋ฐ๋๋ผ nn.EmbeddingBag ์ง์ | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
There was a problem hiding this comment.
๋ฐ๋๋ผ๋ฅผ ๋ง์ด ์ฐ๊ธฐ๋ ํ์ง๋ง '๊ธฐ๋ณธ' ๋ฑ์ผ๋ก ๋ฒ์ญ๋๋ฉด ์ด๋จ๊น์?
| โjaggedโ representation, we use the TorchRec datastructure | ||
| |KeyedJaggedTensor|_ (KJT). | ||
| ์์ ๋ฐ ๊ธฐ๋ฅ๋ณ๋ก ์ํฐํฐ ID๊ฐ ์์์ ์์ธ ๋ค์ํ ์์ ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ํ๋ด์ผ ํฉ๋๋ค. | ||
| ์ด โjaggedโ ํํ์ ์ฌ์ฉํ๊ธฐ ์ํด, TorchRec ๋ฐ์ดํฐ๊ตฌ์กฐ |KeyedJaggedTensor|_ (KJT)๋ฅผ ์ฌ์ฉํฉ๋๋ค. |
There was a problem hiding this comment.
'โjaggedโ ํํ์ ์ฌ์ฉํ๊ธฐ ์ํด'๊ฐ ์ด๋ค ์๋ฏธ๋ก ๋ฒ์ญํ์
จ๋์ง ์ดํด๋ ๋๋๋ฐ ๊ฐ์ธ์ ์ธ ์๊ฒฌ์ผ๋ก๋
๋ค์ํ/์ ์ฐํ ํํ์ด ๊ฐ๋ฅํ๋๋ก? ์ด๋ฐ ์์ผ๋ก ๋ฒ์ญํ๋ ๊ฒ์ ์ด๋จ์ง ์ ์๋๋ฆฝ๋๋ค.
๋ผ์ด์ ์ค ๋์
๋ณ๊ฒฝํด์ฃผ์๋ ๋ด์ฉ์ BSD 3ํญ ๋ผ์ด์ ์ค๊ฐ ์ ์ฉ๋จ์ ๋์ํด์ฃผ์ ์ผ ํฉ๋๋ค.
๋ ์์ธํ ๋ด์ฉ์ ๊ธฐ์ฌํ๊ธฐ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
๋์ํ์๋ฉด ์๋
[ ]๋ฅผ[x]๋ก ๋ง๋ค์ด์ฃผ์ธ์.๊ด๋ จ ์ด์ ๋ฒํธ
์ด Pull Request์ ๊ด๋ จ์๋ ์ด์ ๋ฒํธ๋ฅผ ์ ์ด์ฃผ์ธ์.
์ด์ ๋๋ PR ๋ฒํธ ์์ #์ ๋ถ์ด์๋ฉด ์ ๋ชฉ์ ๋ฐ๋ก ํ์ธํ์ค ์ ์์ต๋๋ค. (์. #999 )
PR ์ข ๋ฅ
์ด PR์ ํด๋น๋๋ ์ข ๋ฅ ์์
[ ]์[x]๋ก ๋ณ๊ฒฝํด์ฃผ์ธ์.PR ์ค๋ช
์ด PR๋ก ๋ฌด์์ด ๋ฌ๋ผ์ง๋์ง ๋๋ต์ ์ผ๋ก ์๋ ค์ฃผ์ธ์.
torchrec_tutorial ํ์ด์ง๊ฐ ํ๊ตญ์ด๋ก ๋ฒ์ญ๋ฉ๋๋ค.