컴파일

컴파일러 패키지에는 AST의 Python 표현, 핵심 transformation 함수 및 컴파일러 관련 기능을 정의하는 데이터 구조가 포함되어 있습니다.

AST

TFF의 추상 구문 트리(AST)는 페더레이션 계산의 구조를 설명합니다.

빌딩 블록

building_block.ComputationBuildingBlockAST의 Python 표현입니다.

CompiledComputation

building_block.CompiledComputation외부 런타임에 위임될 계산을 나타내는 building_block.ComputationBuildingBlock입니다. 현재 TFF는 TensorFlow 계산만 지원하지만, 다른 외부 런타임에서 지원하는 Computations을 지원하도록 확장할 수 있습니다.

Computation

pb.ComputationAST의 Proto 또는 직렬화된 표현입니다.

TensorFlow 계산

TensorFlow 런타임에 위임될 Computations을 나타내는 pb.Computation입니다.

변환

변환(transformation)은 변경 모음을 적용한 후 주어진 AST의 새 AST를 구성합니다. 변환은 AST의 Python 표현을 변환하기 위해 빌딩 블록에서 작동하거나 tf.Graph를 변환하기 위해 TensorFlow 계산에서 작동할 수 있습니다.

원자 변환은 주어진 입력에 단일 변경(가능하면 두 번 이상)를 적용하는 변환입니다.

복합 변환은 일부 특성 또는 어설션을 제공하기 위해 지정된 입력에 여러 변환을 적용하는 변환입니다.

참고: 변환은 직렬 또는 병렬로 구성될 수 있습니다. 즉, AST를 통해 한 번에 여러 변환을 수행하는 복합 변환을 구성할 수 있습니다. 그러나 변환을 적용하는 순서와 이들 변환이 병렬화되는 방식은 추론하기 어렵습니다. 결과적으로, 복합 변형은 수작업으로 이루어지며 대부분은 다소 취약합니다.

tree_transformations 모듈에는 원자 building block 변환이 포함됩니다.

transformations 모듈에는 복합 building block 변환이 포함되어 있습니다.

tensorflow_computation_transformations 모듈에는 원자 TensorFlow computation 변환이 포함되어 있습니다.

compile_computation_transforms 모듈에는 원자 및 복합 Compiled Computation 변환이 포함되어 있습니다.

TODO(b/148163833): compiled_computation_transformsbuilding block 변환과 TensorFlow computation 변환으로 리팩터링합니다.

tree_to_cc_transformations 모듈에는 syntax-directed definition(SDD) 논리를 나타내는 복합 building block 변환이 포함되어 있습니다.

TODO(b/148163833): tree_to_cc_transformations 모듈의 이름을 이해하기 더 쉬운 이름(예: sdd_transformations)으로 변경합니다.

transformation_utils 모듈에는 다른 변환 모듈에서 사용하는 함수, 순회 논리 및 데이터 구조가 포함됩니다.

컴파일러

컴파일러는 실행할 수 있는 양식을 구성하는 transformations 모음입니다.

CompilerPipeline

compiler_pipeline.CompilerPipelineAST를 컴파일하고 컴파일된 결과를 캐시하는 데이터 구조입니다. AST를 컴파일하는 성능은 컴파일 함수의 복잡성에 따라 달라집니다. CompilerPipeline은 같은 AST를 여러 번 컴파일해도 시스템 성능에 영향을 미치지 않도록 합니다.