diff --git a/prototype_source/torchscript_freezing.py b/prototype_source/torchscript_freezing.py index 3ca3227f4..dcf0afaa9 100644 --- a/prototype_source/torchscript_freezing.py +++ b/prototype_source/torchscript_freezing.py @@ -1,23 +1,24 @@ """ -Model Freezing in TorchScript +TorchScript로 모델 동결하기 ============================= +번역 : `김지호 `_ -In this tutorial, we introduce the syntax for *model freezing* in TorchScript. -Freezing is the process of inlining Pytorch module parameters and attributes -values into the TorchScript internal representation. Parameter and attribute -values are treated as final values and they cannot be modified in the resulting -Frozen module. +이 튜토리얼에서는, TorchScript로 *모델 동결* 하는 문법을 소개합니다. +동결은 파이토치 모듈의 매개변수와 속성 값들을 TorchScript 내부 표현으로 인라이닝(inlining)하는 과정입니다. +매개변수와 속성 값들은 최종 값으로 처리되며 동결된 모듈에서 수정될 수 없습니다. -Basic Syntax +기본 문법 ------------ -Model freezing can be invoked using API below: + +모델 동결은 아래 API를 사용하여 호출할 수 있습니다: ``torch.jit.freeze(mod : ScriptModule, names : str[]) -> SciptModule`` -Note the input module can either be the result of scripting or tracing. -See https://tutorials.pytorch.kr/beginner/Intro_to_TorchScript_tutorial.html +입력 모듈은 스크립팅(scripting) 혹은 추적(tracing)을 사용한 결과입니다. +`TorchScript 소개 튜토리얼 `_ +을 참조하세요. -Next, we demonstrate how freezing works using an example: +다음으로, 예제를 통해 동결이 어떤 방식으로 동작하는지 확인합니다: """ import torch, time @@ -58,17 +59,15 @@ def version(self): try: print(fnet.conv1.bias) - # without exception handling, prints: + # 예외 처리가 없을 시 'conv1' 이라는 이름과 함께 다음을 출력합니다. # RuntimeError: __torch__.z.___torch_mangle_3.Net does not have a field - # with name 'conv1' except RuntimeError: print("field 'conv1' is inlined. It does not exist in 'fnet'") try: fnet.version() - # without exception handling, prints: + # 예외 처리가 없을 시 'version' 이라는 이름과 함께 다음을 출력합니다. # RuntimeError: __torch__.z.___torch_mangle_3.Net does not have a field - # with name 'version' except RuntimeError: print("method 'version' is not deleted in fnet. Only 'forward' is preserved") @@ -108,7 +107,7 @@ def version(self): print("Frozen - Inference time: {0:5.2f}".format(end-start), flush =True) ############################################################### -# On my machine, I measured the time: +# 개인 머신에서 시간을 측정한 결과입니다: # # * Scripted - Warm up time: 0.0107 # * Frozen - Warm up time: 0.0048 @@ -116,19 +115,17 @@ def version(self): # * Frozen - Inference time: 1.17 ############################################################### -# In our example, warm up time measures the first two runs. The frozen model -# is 50% faster than the scripted model. On some more complex models, we -# observed even higher speed up of warm up time. freezing achieves this speed up -# because it is doing some the work TorchScript has to do when the first couple -# runs are initiated. +# 이 예제에서, 워밍업 시간은 최초 두 번 실행할 때 측정합니다. +# 동결된 모델이 스크립트된 모델보다 50% 더 빠릅니다. +# 보다 복잡한 모델에서는 워밍업 시간이 더욱 빨라집니다. +# 최초 두 번의 실행을 초기화할 때 TorchScript가 해야 할 일의 일부를 동결이 하고 있기 때문에 속도 개선이 일어납니다. # -# Inference time measures inference execution time after the model is warmed up. -# Although we observed significant variation in execution time, the -# frozen model is often about 15% faster than the scripted model. When input is larger, -# we observe a smaller speed up because the execution is dominated by tensor operations. +# 추론 시간은 모델이 워밍업되고 난 뒤, 추론 시 실행 시간을 측정합니다. +# 실행 시간에 많은 편차가 있기는 하지만, 대개 동결된 모델이 스크립트된 모델보다 약 15% 더 빠릅니다. +# 실행 시간은 tensor 연산에 의해 지배되기 때문에 입력의 크기가 더 커지면 속도 개선 정도는 더 작아집니다. ############################################################### -# Conclusion +# 결론 # ----------- -# In this tutorial, we learned about model freezing. Freezing is a useful technique to -# optimize models for inference and it also can significantly reduce TorchScript warmup time. +# 이 튜토리얼에서는 모델 동결에 대해 배웠습니다. +# 동결은 추론 시 모델 최적화를 할 수 있는 유용한 기법이며 TorchScript 워밍업 시간을 크게 줄입니다.