Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

KO: translation for ko/beta/tutorials/distribute/training_loops.ipynb #889

Open
wants to merge 5 commits into
base: master
from

Conversation

@NoelBird
Copy link

commented Jul 31, 2019

Translation for tutorials/distribute/training_loops.ipynb

Below is a link to the original english version:

https://github.com/tensorflow/docs/blob/master/site/en/r2/tutorials/distribute/training_loops.ipynb

@tfdocsbot

This comment has been minimized.

Copy link
Collaborator

commented Jul 31, 2019

Preview and run these notebook edits with Google Colab:

Notebook diffs available on ReviewNB.com.
@tfdocsbot

This comment has been minimized.

Copy link
Collaborator

commented Jul 31, 2019

Reviewers added, please take a look.
@rickiepark, @cre8tor, @Choiuijin1125, @JKIsaacLee

When your review is finished, approve the pull request or include "LGTM" in your comment.

@googlebot googlebot added the cla: yes label Jul 31, 2019

@rickiepark
Copy link
Contributor

left a comment

Hi @NoelBird ,
Thank you for this contributing.
Your translating skill is quite great!
I'll continue to review this PR in the next time. 👍

"source": [
"<table class=\"tfo-notebook-buttons\" align=\"left\">\n",
" <td>\n",
" <a target=\"_blank\" href=\"https://www.tensorflow.org/beta/guide/distribute_strategy?hl=ko#using_tfdistributestrategy_with_custom_training_loops\"><img src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" />TensorFlow.org에서 보기</a>\n",

This comment has been minimized.

Copy link
@rickiepark

This comment has been minimized.

Copy link
@NoelBird

NoelBird Aug 28, 2019

Author

@rickiepark oh, I'm terribly sorry. It was too late to check comments.

I'll do check reviews in time on the next contribution.

and also thank you for your detailed review.

"id": "FbVhjPpzn6BM"
},
"source": [
"이 예제는 사용자 정의 훈련 루프(custom training loops)와 함께 [`tf.distribute.Strategy`](https://www.tensorflow.org/guide/distribute_strategy)를 사용 하는법을 보여드립니다. 우리는 간단한 CNN 모델을 패션 MNIST 데이터셋에 대해 훈련을 할 것 입니다. 패션 MNIST 데이터셋은 60000개의 28 x 28 크기의 훈련 이미지들과 10000개의 28 x 28 크기의 평가 이미지들을 포함하고 있습니다.\n",

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 4, 2019

Contributor

Fix some typo.
'사용 하는법을' --> '사용하는 법을'
'할 것 입니다' --> '할 것입니다'

We don't translate 'test image' or 'test set', because people would like to say '테스트 이미지' or '테스트 세트'.
Also '평가' is used for translating 'evaluate'.
I suggest '평가 이미지' --> '테스트 이미지'

"id": "FbVhjPpzn6BM"
},
"source": [
"이 예제는 사용자 정의 훈련 루프(custom training loops)와 함께 [`tf.distribute.Strategy`](https://www.tensorflow.org/guide/distribute_strategy)를 사용 하는법을 보여드립니다. 우리는 간단한 CNN 모델을 패션 MNIST 데이터셋에 대해 훈련을 할 것 입니다. 패션 MNIST 데이터셋은 60000개의 28 x 28 크기의 훈련 이미지들과 10000개의 28 x 28 크기의 평가 이미지들을 포함하고 있습니다.\n",

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 4, 2019

Contributor

Fix some typo.
'사용 하는법을' --> '사용하는 법을'
'할 것 입니다' --> '할 것입니다'

We don't translate 'test image' or 'test set', because people would like to say '테스트 이미지' or '테스트 세트'.
Also '평가' is used for translating 'evaluate'.
I suggest '평가 이미지' --> '테스트 이미지'

"id": "4AXoHhrsbdF3"
},
"source": [
"## 변수들과 그래프를 분배하는 전략 만들기"

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 4, 2019

Contributor

We translate 'distribute' as '분산하다' just like 'distributed database'.
Korean pural form is not needed in most cases.
I suggest '변수들과 그래프를 분배하는 전략 만들기' --> '변수와 그래프를 분산하는 전략 만들기'

},
"source": [
"`tf.distribute.MirroredStrategy` 전략이 어떻게 동작할까요?\n",
"* 모든 변수와 모델의 그래프는 장치(replicas, 다른 문서에서는 replica가 분산 훈련에서 장치 등에 복제된 모델을 의미하는 경우가 있으나 이 문서에서는 장치 자체를 의미합니다)들에 복제됩니다.\n",

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 4, 2019

Contributor

'모든 변수와 모델의 그래프는' can be interpreted like 'graph of all the variables and the model'.
I suggest '모든 변수와 모델의 그래프는' --> '모든 변수와 모델 그래프는'.

I suggest '장치(...)들에' --> '장치(...)에'

},
"source": [
"# 만약 장치들의 목록이 `tf.distribute.MirroredStrategy` 생성자 안에 명시되어 있지 않다면,\n",
"# 자동으로 장치들의 목록이 인식될 것 입니다.\n",

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 4, 2019

Contributor

Something auto-detected is devices, not list of devices.
I suggest '장치들의 목록이 인식될 것 입니다' --> '장치를 인식할 것입니다'

"id": "k53F5I_IiGyI"
},
"source": [
"## 입력 파이프라인 설치하기"

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 4, 2019

Contributor

'설치' is used for translating 'install'. Actually this process dosn't install anything.
I suggest '설치하기' --> '설정하기'.

"id": "0Qb6nDgxiN_n"
},
"source": [
"그래프와 변수들을 플랫폼을 몰라도 사용할 수 있는(platform-agnostic) 저장된 모델(SavedModel) 형식으로 내보냅니다. 모델을 내보내셨다면, 여러분은 모델을 불러올 때 범위(scope)를 지정해도 되고 하지 않으셔도 됩니다."

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 4, 2019

Contributor

I suggest
'변수들을' --> '변수를'
'플랫폼을 몰라도 사용할 수 있는(platform-agnostic)' --> '플랫폼과 무관한'

Please don't translate SavedModel.
I suggest '저장된 모델(SavedModel)' --> 'SavedModel'

You can just skip 'you' in most cases.
Please remove '여러분은'.

Please don't use honorific form.
I suggest '모델을 내보내셨다면' --> '모델을 내보냈다면', '않으셔도 됩니다' --> '않아도 됩니다'.

"source": [
"## 모델 만들기\n",
"\n",
"`tf.keras.Sequential`을 사용해서 모델을 생성합니다. 여러분은 Model Subclassing API로도 모델 생성을 할 수 있습니다."

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 4, 2019

Contributor

Please remove '여러분은'.

"source": [
"## 손실 함수 정의하기\n",
"\n",
"일반적으로, 1의 GPU/CPU 비율을 가지고 있는 단일 장치에서 손실은 배치(batch) 입력에서의 장치의 개수로 나누어집니다.\n",

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 4, 2019

Contributor

For better readability,
I suggest '1의 GPU/CPU 비율을 가지고 있는' --> 'GPU/CPU 비율이 1인'.

Examples means sample, not device.
'~에서의' is not good expression and '~에서의 ~의' is hard to read.
I suggest '배치(batch) 입력에서의 장치의 개수로' --> '입력 배치(batch)의 샘플 개수로'.

@rickiepark
Copy link
Contributor

left a comment

Hi @NoelBird ,
There are some mistakes. But overall translation is good.
I'll finish the review next time!
Thank you.

"\n",
"*그렇다면, `tf.distribute.Strategy`를 사용할 때, 손실은 어떻게 계산되어야 할까요?*\n",
"\n",
"* 예를들면, 4개의 GPU가 있고 배치 입력 크기가 64라고 하죠. 배치 입력은 장치(4개의 GPU)에 분배됩니다. 각 장치는 16의 입력크기를 가지게 됩니다.\n",

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 11, 2019

Contributor

We often say '입력 배치' rather than '배치 입력'.
I suggest
'배치 입력 크기가 64' --> '배치 크기가 64',
'배치 입력은 장치(..)에' --> '입력 배치 하나가 여러 개의 장치(..)에',
'16의 입력크기를 가집니다' --> '크기가 16인 입력을 받습니다'

"\n",
"* 예를들면, 4개의 GPU가 있고 배치 입력 크기가 64라고 하죠. 배치 입력은 장치(4개의 GPU)에 분배됩니다. 각 장치는 16의 입력크기를 가지게 됩니다.\n",
"\n",
"* 각 장치에 있는 모델은 각 입력을 앞쪽으로 넘겨주고(forward pass) 손실을 계산합니다. 손실을 각각의 장치당 배치크기(BATCH_SIZE_PER_REPLICA = 16)로 나누는 것 대신에, 손실은 GLOBAL_BATCH_SIZE(64)로 나누어져야 합니다.\n",

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 11, 2019

Contributor

'forward pass' means calculation from input to output.
We don't say it like '넘겨주고'.
I suggest '각 입력을 앞쪽으로 넘겨주고(forward pass)' --> '해당 입력에 대해 정방향 계산(forward pass)을 수행하고'.

'장치당 배치크기' is not false technically. But why don't you translate the original sentence as it is. :)
'손실' is used in a object and a subject. It's not good writing. And second one is not necessary.
'instead' must be translated '~아니라' in this context.
I suggest
'각각의 장치당 배치크기' --> '장치에 할당된 입력 샘플의 수',
'것 대신에, 손실은 GLOBAL_BATCH_SIZE(64)로 나누어져야 합니다' --> '것이 아니라 GLOBAL_BATCH_SIZE(64)로 나누어야 합니다'

This comment has been minimized.

Copy link
@NoelBird

NoelBird Aug 28, 2019

Author

it was difficult to translate the phrase 'forward pass'.
quite better than before.
thank you :D

and it was some difficult to read this paragraph. although I translate over and over.
thanks for your skilled translation.

"\n",
"*왜 이렇게 할까요?*\n",
"\n",
"* 위와 같이 계산하는 이유는 그래디언트들이 각 복제 모델에서 계산된 다음, 복제 모델들 간에 그래디언트 값들을 **전부 더함(summing)**으로써 동기화가 되기 때문입니다.\n",

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 11, 2019

Contributor

You translate 'replica' as '장치' in the notebook. But 'replica' is translated as '모델' in this sentence.
'더함으로써' is hard to read.
'(summing)' is not required.
I suggest '각 복제 모델에서 계산된 다음, 복제 모델들 간에 그래디언트 값들을 전부 더함(summing)으로써 동기화가 되기 때문입니다' --> '각 장치에서 계산된 다음, 모든 장치를 동기화하기 위해 이 그래디언트 값들을 전부 더하기 때문입니다'

"source": [
"from __future__ import absolute_import, division, print_function, unicode_literals\n",
"\n",
"# 텐서플로우 임포트\n",

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 11, 2019

Contributor

'텐서플로우' --> '텐서플로'

"\n",
"* 위와 같이 계산하는 이유는 그래디언트들이 각 복제 모델에서 계산된 다음, 복제 모델들 간에 그래디언트 값들을 **전부 더함(summing)**으로써 동기화가 되기 때문입니다.\n",
"\n",
"*이 것을 텐서플로우에서는 어떻게 할까요?*\n",

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 11, 2019

Contributor

I suggest not to translate 'this'.
'이 것을 텐서플로우에서는' --> '텐서플로에서는'

"source": [
"## 손실과 정확도를 따르는 지표 정의하기\n",
"\n",
"이 지표(metrics)는 평가에서의 손실과 훈련과 평가에서의 정확도를 추적합니다. `.result()`를 사용해서 누적된 통계값들을 언제나 볼 수 있습니다."

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 11, 2019

Contributor

'평가에서의 손실' --> '테스트 손실',
'훈련과 평가에서의 정확도' --> '훈련 정확도, 테스트 정확도'
'추적합니다' --> '기록합니다'

"source": [
"with strategy.scope():\n",
" # `experimental_run_v2`는 주어진 계산을 복사하고,\n",
" # 분산 입력(distributed input)을 입력값으로 계산을 실행합니다.\n",

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 11, 2019

Contributor

I suggest
'분산 입력(distributed input)을 입력값으로 계산을 실행합니다.' --> '분산된 입력으로 계산을 수행합니다.'

" num_batches += 1\n",
" train_loss = total_loss / num_batches\n",
"\n",
" # 평가 루프\n",

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 11, 2019

Contributor

'평가' --> '테스트'

" if epoch % 2 == 0:\n",
" checkpoint.save(checkpoint_prefix)\n",
"\n",
" template = (\"Epoch {}, Loss: {}, Accuracy: {}, Test Loss: {}, \"\n",

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 11, 2019

Contributor

'Epoch' --> '에포크'
'Loss' --> '손실'
'Accuracy' --> '정확도'
'Test Loss' --> '테스트 손실'

" checkpoint.save(checkpoint_prefix)\n",
"\n",
" template = (\"Epoch {}, Loss: {}, Accuracy: {}, Test Loss: {}, \"\n",
" \"Test Accuracy: {}\")\n",

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 11, 2019

Contributor

'Test Accuracy' --> '테스트 정확도'

@Choiuijin1125
Copy link
Contributor

left a comment

Thank you for your contributing :)

"source": [
"이 예제는 사용자 정의 훈련 루프(custom training loops)와 함께 [`tf.distribute.Strategy`](https://www.tensorflow.org/guide/distribute_strategy)를 사용 하는법을 보여드립니다. 우리는 간단한 CNN 모델을 패션 MNIST 데이터셋에 대해 훈련을 할 것 입니다. 패션 MNIST 데이터셋은 60000개의 28 x 28 크기의 훈련 이미지들과 10000개의 28 x 28 크기의 평가 이미지들을 포함하고 있습니다.\n",
"\n",
"이 예제는 모델을 훈련하기 위해서 사용자 정의 훈련 루프를 사용하고 있습니다. 왜냐하면 사용자 정의 훈련 루프는 유연하며 훈련을 더욱 잘 수행하도록 해주기 때문입니다. 또한, 모델과 훈련 루프를 디버깅하기도 더 쉽습니다."

This comment has been minimized.

Copy link
@Choiuijin1125

Choiuijin1125 Aug 15, 2019

Contributor

I think we can translate 'because' to '~하기 위해서' or '하도록' in this sentence.
So I suggest like this "이 예제는 유연성을 높이고, 훈련을 더 잘 제어할 수 있도록 사용자 정의 훈련 루프를 사용합니다. 또한, 사용자 훈련 루프를 사용하는 것은 모델과 훈련 루프를 디버깅하기 쉬워집니다."

"id": "MM6W__qraV55"
},
"source": [
"## 패션 MNIST 데이터셋을 다운로드"

This comment has been minimized.

Copy link
@Choiuijin1125

Choiuijin1125 Aug 15, 2019

Contributor

I think it's better to remove '을' in the title :)
So I suggest ' 패션 MNIST 데이터셋를 다운로드' → '패션 MNIST 데이터셋 다운로드'

"colab": {}
},
"source": [
"print ('Number of devices: {}'.format(strategy.num_replicas_in_sync))"

This comment has been minimized.

Copy link
@Choiuijin1125

Choiuijin1125 Aug 15, 2019

Contributor

We normally translate print functions, I suggest that you translate the comment 'Number of devices'. :)

This comment has been minimized.

Copy link
@NoelBird

NoelBird Aug 28, 2019

Author

@Choiuijin1125
as you mentioned, I translated to '장치의 수'

thanks for your reviewing :D

"for images, labels in test_dataset:\n",
" eval_step(images, labels)\n",
"\n",
"print ('Accuracy after restoring the saved model without strategy: {}'.format(\n",

This comment has been minimized.

Copy link
@Choiuijin1125

Choiuijin1125 Aug 15, 2019

Contributor

For the same reason, I suggest that you translate the print function :)

" num_batches += 1\n",
" average_train_loss = total_loss / num_batches\n",
"\n",
" template = (\"Epoch {}, Loss: {}, Accuracy: {}\")\n",

This comment has been minimized.

Copy link
@Choiuijin1125

Choiuijin1125 Aug 15, 2019

Contributor

'Epoch' --> '에포크'
'Loss' --> '손실'
'Accuracy' --> '정확도'

" train_loss = distributed_train_epoch(train_dist_dataset)\n",
"\n",
" template = (\"Epoch {}, Loss: {}, Accuracy: {}\")\n",
" print (template.format(epoch+1, train_loss, train_accuracy.result()*100))\n",

This comment has been minimized.

Copy link
@Choiuijin1125

Choiuijin1125 Aug 15, 2019

Contributor

'Epoch' --> '에포크'
'Loss' --> '손실'
'Accuracy' --> '정확도'

"source": [
"## 다음단계\n",
"\n",
"새로운 `tf.distribute.Strategy` API를 여러분의 모델에 적용해 보세요."

This comment has been minimized.

Copy link
@Choiuijin1125

Choiuijin1125 Aug 15, 2019

Contributor

"를 여러분의 모델에" → " 를 모델에"

"\n",
"손실의 스케일 조정을 하면, 여러분은 각 장치에 대한 샘플당 손실값을 손실값들을 더함으로써 계산할 수 있습니다. 그 후 global batch size를 나누어줍니다. 이 경우에는 (2 + 3) / 4 = 1.24와 (4 + 5) / 4 = 2.25입니다.\n",
"\n",
"만약 여러분이 `tf.metrics.Mean`을 사용해서 두 개의 장치에 대해 손실값을 계산한다면, 결과값이 다릅니다. 이 예제에서는, `result()`가 metric에서 호출될 때 `total`이 3.50이고 `count`가 2입니다. 결과값은 `total/count`가 1.75가 됩니다. `tf.keras.Metrics`를 이용해서 계산한 손실값이 추가적인 요인에 의해서 크기조정되며, 이 추가적인 요인은 동기화되는 장치의 개수입니다."

This comment has been minimized.

Copy link
@Choiuijin1125

Choiuijin1125 Aug 15, 2019

Contributor

"만약 여러분이" → "만약 tf.metrics.Mean을 사용하여"

},
"source": [
"### tf.function 내부에서 반복작업하기\n",
"여러분은 전체 입력 `train_dist_dataset`에 대해서 `tf.function` 내부에서 `for x in ...` 생성자를 사용함으로써 반복작업을 하거나, 위에서 사용했던 반복자를 사용함으로써 반복작업을 할 수 있습니다. 아래의 예제에서는 `tf.function` 내에서 한 훈련의 에포크를 감싸는 것을 보여 드리고, 그 후에 `tf.function` 내부의 `train_dist_dataset`을 통해서 반복작업을 하는 것을 보여드릴 겁니다."

This comment has been minimized.

Copy link
@Choiuijin1125

Choiuijin1125 Aug 15, 2019

Contributor

"여러분은(...)" → "전체 입력(...)"

"\n",
"### 반복자(iterator)를 사용하기\n",
"\n",
"만약 여러분이 주어진 스텝의 수에 따라서 반복작업을 하기를 원하면서 전체 데이터셋을 보는 것을 원치 않는다면, `iter` 호출을 사용해서 반복자를 만들 수 있습니다. 그 다음 명시적으로 `next`를 호출합니다. 반복자에 대해서. 여러분은 데이터셋에 대해 반복하는 것을 `tf.function`의 내부에서 반복자를 사용할지, 외부에서 할지 선택할 수 있습니다. `tf.function`을 사용해서 반복자를 사용하는 방법이 아래에 나와 있습니다.\n"

This comment has been minimized.

Copy link
@Choiuijin1125

Choiuijin1125 Aug 15, 2019

Contributor

In my opinion, 'call' involves the meaning of 'use' so I suggest
"iter 호출을 사용해서" → "iter를 호출하여"

And you can translate 'over' to '~를' so I suggest
"반복자에 대해서 여러분은 데이터셋에 대해 반복하는 것을 tf.function의 내부에서 반복자를 사용할지, 외부에서 할지 선택할 수 있습니다. "

" 또한, tf.funtion 내부 또는 외부에서 데이터셋을 반복하도록 설정 할 수 있습니다."

There the word 'outside' which describes tf.function in the original document. And you can translate snippet to '코드 예제'.
So I suggest
"tf.funcition을 사용해서(...) → "다음은 반복자를 사용하여 tf.function 외부에서 데이터셋을 반복하는 코드 예제입니다."

This comment has been minimized.

Copy link
@NoelBird

NoelBird Aug 28, 2019

Author

@Choiuijin1125

"iter 호출을 사용해서" → "iter를 호출하여"

I also think it is more concise expression 👍

"반복자에 대해서 여러분은 데이터셋에 대해 반복하는 것을 tf.function의 내부에서 반복자를 사용할지, 외부에서 할지 선택할 수 있습니다. "

" 또한, tf.funtion 내부 또는 외부에서 데이터셋을 반복하도록 설정 할 수 있습니다."

Applied your suggestion. I initially intended to emphasize that 'you guys can choose between inner or outer'
but, I realized your translation is more readable. thank you.

There the word 'outside' which describes tf.function in the original document. And you can translate snippet to '코드 예제'.
So I suggest
"tf.funcition을 사용해서(...) → "다음은 반복자를 사용하여 tf.function 외부에서 데이터셋을 반복하는 코드 예제입니다."

@rickiepark @Choiuijin1125

there were same reviews, and also suggestion was substantially equal.
can I use below?

다음은 반복자를 사용하여 tf.function 외부에서 데이터셋을 반복하는 코드 예제입니다.

thanks for your detailed reviewing

This comment has been minimized.

Copy link
@Choiuijin1125

Choiuijin1125 Aug 29, 2019

Contributor

@NoelBird Sure! thank you for mentioning me :)
Go for it!

@rickiepark
Copy link
Contributor

left a comment

Hi @NoelBird
Thank you so much for this work.
I'll finished to review.
Please check my comments!

"source": [
"위의 예제에서 주목해야 하는 부분\n",
"* 이 예제는 `train_dist_dataset`과 `test_dist_dataset`을 `for x in ...` 구조를 통해서 반복합니다.\n",
"* 스케일이 조정된 손실은 `distributed_train_step`의 반환값입니다. `tf.distribute.Strategy.reduce` 호출을 사용해서 장치들 간의 스케일이 조정된 손실 값이 전부 합쳐집니다(aggregated). 그리고 나서 `tf.distribute.Strategy.reduce` 호출의 반환 값들을 더함으로써 배치들 간에 값이 전부 합쳐집니다.\n",

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 15, 2019

Contributor

The subject is not clear.
I suggest '손실 값이 전부 합쳐집니다(aggregated)' --> '손실 값을 모두 합칩니다',
'반환 값들을 더함으로써 배치들 간에 값이 전부 합쳐집니다' --> '반환 값을 더하는 식으로 배치 간의 손실을 모읍니다'.

"위의 예제에서 주목해야 하는 부분\n",
"* 이 예제는 `train_dist_dataset`과 `test_dist_dataset`을 `for x in ...` 구조를 통해서 반복합니다.\n",
"* 스케일이 조정된 손실은 `distributed_train_step`의 반환값입니다. `tf.distribute.Strategy.reduce` 호출을 사용해서 장치들 간의 스케일이 조정된 손실 값이 전부 합쳐집니다(aggregated). 그리고 나서 `tf.distribute.Strategy.reduce` 호출의 반환 값들을 더함으로써 배치들 간에 값이 전부 합쳐집니다.\n",
"* `tf.keras.Metrics`는 `tf.distribute.Strategy.experimental_run_v2`에 의해서 실행되는 `train_step`과 `test_step` 내부에서 업데이트 되어야 합니다.\n",

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 15, 2019

Contributor

To make the meaning concretely,
I suggest '내부에서' --> '함수 안에서'.

"* 이 예제는 `train_dist_dataset`과 `test_dist_dataset`을 `for x in ...` 구조를 통해서 반복합니다.\n",
"* 스케일이 조정된 손실은 `distributed_train_step`의 반환값입니다. `tf.distribute.Strategy.reduce` 호출을 사용해서 장치들 간의 스케일이 조정된 손실 값이 전부 합쳐집니다(aggregated). 그리고 나서 `tf.distribute.Strategy.reduce` 호출의 반환 값들을 더함으로써 배치들 간에 값이 전부 합쳐집니다.\n",
"* `tf.keras.Metrics`는 `tf.distribute.Strategy.experimental_run_v2`에 의해서 실행되는 `train_step`과 `test_step` 내부에서 업데이트 되어야 합니다.\n",
"* `tf.distribute.Strategy.experimental_run_v2`는 그 Strategy에 들어있는 각 지역 복제 모델로부터 결과값을 반환해 줍니다. 그리고 이 결과를 사용하는 몇 가지 방법들이 있습니다. 여러분은 `tf.distribute.Strategy.reduce`를 이용하여 값들을 합칠 수 있습니다. 여러분은 `tf.distribute.Strategy.experimental_local_results`를 사용해서 결과값(지역 복제 모델 당 하나의 결과값)에 들어있는 값들의 리스트를 얻을 수도 있습니다."

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 15, 2019

Contributor

Strategy can be translated.
I suggest '그 Strategy에 들어있는' --> '전략안에 포함된'.

You don't need to use plural form and translate 'you'.
I suggest to remove '여러분은' twice and '값들을' --> '값을', '값들의' --> '값의'.

"id": "WNW2P00bkMGJ"
},
"source": [
"`tf.distribute.Strategy`를 사용해서 체크포인트가 만들어진 모델은 strategy를 사용해서 저장하거나 strategy를 사용하지 않고 불러올 수 있습니다."

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 15, 2019

Contributor

There is no 'store with a strategy'.
I suggest 'strategy를 사용해서 저장하거나 strategy를 사용하지 않고' --> '전략 사용 여부에 상관없이'

"\n",
"### 반복자(iterator)를 사용하기\n",
"\n",
"만약 여러분이 주어진 스텝의 수에 따라서 반복작업을 하기를 원하면서 전체 데이터셋을 보는 것을 원치 않는다면, `iter` 호출을 사용해서 반복자를 만들 수 있습니다. 그 다음 명시적으로 `next`를 호출합니다. 반복자에 대해서. 여러분은 데이터셋에 대해 반복하는 것을 `tf.function`의 내부에서 반복자를 사용할지, 외부에서 할지 선택할 수 있습니다. `tf.function`을 사용해서 반복자를 사용하는 방법이 아래에 나와 있습니다.\n"

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 15, 2019

Contributor

Just remove '여러분이', '여러분은', '반복자에 대해서.'

Last sentence is wrong.
I suggest 'tf.function을 사용해서 반복자를 사용하는 방법이 아래에 나와 있습니다' --> '반복자를 사용하여 tf.function 외부에서 데이터셋을 반복하는 방법이 아래에 나와 있습니다'

"### 예제들\n",
"사용자 정의 훈련루프를 포함한 분산 전략을 사용하는 몇 가지 예제가 있습니다.\n",
"\n",
"1. [Tutorial](../tutorials/distribute/training_loops.ipynb) `MirroredStrategy`를 사용해서 MNIST를 훈련하는 예제\n",

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 15, 2019

Contributor

'Tutorial MirroredStrategy를 사용해서 MNIST를 훈련하는 예제' --> 'MirroredStrategy를 사용해서 MNIST를 훈련하는 튜토리얼',

"사용자 정의 훈련루프를 포함한 분산 전략을 사용하는 몇 가지 예제가 있습니다.\n",
"\n",
"1. [Tutorial](../tutorials/distribute/training_loops.ipynb) `MirroredStrategy`를 사용해서 MNIST를 훈련하는 예제\n",
"2. [DenseNet](https://github.com/tensorflow/examples/blob/master/tensorflow_examples/models/densenet/distributed_train.py) 예제. `MirroredStrategy`를 사용하는 DenseNet 예제.\n",

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 15, 2019

Contributor

'DenseNet 예제. MirroredStrategy를 사용하는 DenseNet 예제' --> 'MirroredStrategy를 사용하는 DenseNet 예제'

"\n",
"1. [Tutorial](../tutorials/distribute/training_loops.ipynb) `MirroredStrategy`를 사용해서 MNIST를 훈련하는 예제\n",
"2. [DenseNet](https://github.com/tensorflow/examples/blob/master/tensorflow_examples/models/densenet/distributed_train.py) 예제. `MirroredStrategy`를 사용하는 DenseNet 예제.\n",
"1. [BERT](https://github.com/tensorflow/models/blob/master/official/bert/run_classifier.py) \n",

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 15, 2019

Contributor

'BERT 예제. MirroredStrategy와 TPUStrategy를 사용해서 훈련한 예제' --> 'MirroredStrategy와 TPUStrategy를 사용해서 훈련하는 BERT 예제'

"2. [DenseNet](https://github.com/tensorflow/examples/blob/master/tensorflow_examples/models/densenet/distributed_train.py) 예제. `MirroredStrategy`를 사용하는 DenseNet 예제.\n",
"1. [BERT](https://github.com/tensorflow/models/blob/master/official/bert/run_classifier.py) \n",
"예제. `MirroredStrategy`와 `TPUStrategy`를 사용해서 훈련한 예제. 이 예제는 분산 훈련 중에 어떻게 체크포인트로부터 불러오는지와 어떻게 주기적으로 체크포인트들을 생성해 내는지를 이해하기에 정말 좋습니다.\n",
"2. [NCF](https://github.com/tensorflow/models/blob/master/official/recommendation/ncf_keras_main.py) \n",

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 15, 2019

Contributor

'NCF keras_use_ctl flag를 사용해서 활성화 할 수 있는 MirroredStrategy를 이용해서 훈련되는 예제. keras_use_ctl flag가 사용될 수 있는 MirroredStrategy를 사용한 예제' --> 'keras_use_ctl flag를 사용해서 활성화 할 수 있는 MirroredStrategy를 이용해서 훈련되는 NCF 예제'

"2. [NCF](https://github.com/tensorflow/models/blob/master/official/recommendation/ncf_keras_main.py) \n",
"`keras_use_ctl` flag를 사용해서 활성화 할 수 있는 `MirroredStrategy`를 이용해서 훈련되는 예제. \n",
" `keras_use_ctl` flag가 사용될 수 있는 `MirroredStrategy`를 사용한 예제\n",
"3. [NMT](https://github.com/tensorflow/examples/blob/master/tensorflow_examples/models/nmt_with_attention/distributed_train.py) `MirroredStrategy`을 사용해서 훈련되는 예제.\n",

This comment has been minimized.

Copy link
@rickiepark

rickiepark Aug 15, 2019

Contributor

'NMT MirroredStrategy을 사용해서 훈련되는 예제' --> 'MirroredStrategy을 사용해서 훈련되는 NMT 예제'

@NoelBird

This comment has been minimized.

Copy link
Author

commented Aug 28, 2019

@rickiepark
@Choiuijin1125

thanks your big efforts 👏

and I know myself, there are lots of translations that are hard to read.

but you guys cheers me up much. so kind !! 😭

I'll do check your messages faster next time.

have a nice day :D

@rickiepark

This comment has been minimized.

Copy link
Contributor

commented Aug 29, 2019

Thank you @NoelBird ,
When you finish it, feel free to touch me and @Choiuijin1125. :)

@lamberta
Copy link
Member

left a comment

Thanks! Some things have moved around as we switch the site over to TF2-first. Can you rebase and update this file to match https://github.com/tensorflow/docs/blob/master/site/en/tutorials/distribute/custom_training.ipynb ?
(and update links, please)

@lamberta lamberta added the invalid label Sep 9, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
6 participants
You can’t perform that action at this time.