컴파일러 패키지에는 AST의 Python 표현, 핵심 transformation 함수 및 컴파일러 관련 기능을 정의하는 데이터 구조가 포함되어 있습니다.
AST
TFF의 추상 구문 트리(AST)는 페더레이션 계산의 구조를 설명합니다.
빌딩 블록
building_block.ComputationBuildingBlock은 AST의 Python 표현입니다.
CompiledComputation
building_block.CompiledComputation은 외부 런타임에 위임될 계산을 나타내는 building_block.ComputationBuildingBlock입니다. 현재 TFF는 TensorFlow 계산만 지원하지만, 다른 외부 런타임에서 지원하는 Computations을 지원하도록 확장할 수 있습니다.
Computation
pb.Computation은 AST의 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_transforms
를 building 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.CompilerPipeline은 AST를 컴파일하고 컴파일된 결과를 캐시하는 데이터 구조입니다. AST를 컴파일하는 성능은 컴파일 함수의 복잡성에 따라 달라집니다. CompilerPipeline
은 같은 AST를 여러 번 컴파일해도 시스템 성능에 영향을 미치지 않도록 합니다.